[Home] [Help]
PACKAGE BODY: APPS.XLA_00540_AAD_S_000014_PKG
Source
1 PACKAGE BODY XLA_00540_AAD_S_000014_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_00540_AAD_S_000014_PKG |
10 | |
11 | DESCRIPTION |
12 | Package generated From Product Accounting Definition |
13 | Name : Lease Default |
14 | Code : OKL_DEFAULT |
15 | Owner : PRODUCT |
16 | Version : |
17 | AMB Context Code: DEFAULT |
18 | HISTORY |
19 | Generated at 06-11-2008 at 01:11:03 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_00540_AAD_S_000014_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_00540_AAD_S_000014_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_00540_AAD_S_000014_PKG.ValidateLookupMeaning');
204 --
205 END ValidateLookupMeaning;
206 --
207 --
208
209 FUNCTION GetMeaning (
210 p_flex_value_set_id IN INTEGER
211 , p_flex_value IN VARCHAR2
212 , p_source_code IN VARCHAR2
213 , p_source_type_code IN VARCHAR2
214 , p_source_application_id IN INTEGER
215 )
216 RETURN VARCHAR2
217 IS
218 BEGIN
219 --
220 RETURN NULL ;
221 --
222 EXCEPTION
223 WHEN xla_exceptions_pkg.application_exception THEN
224 RAISE;
225 WHEN OTHERS THEN
226 xla_exceptions_pkg.raise_message
227 (p_location => 'XLA_00540_AAD_S_000014_PKG.GetMeaning');
228 END GetMeaning;
229 --
230
231 ---------------------------------------
232 --
233 -- PRIVATE FUNCTION
234 -- Description_1
235 --
236 ---------------------------------------
237 FUNCTION Description_1 (
238 p_application_id IN NUMBER
239 , p_ae_header_id IN NUMBER DEFAULT NULL
240 --Contract Number
241 , p_source_1 IN VARCHAR2
242 --Contract Product Name
243 , p_source_2 IN VARCHAR2
244 )
245 RETURN VARCHAR2
246 IS
247 l_component_type VARCHAR2(80) ;
248 l_component_code VARCHAR2(30) ;
249 l_component_type_code VARCHAR2(1) ;
250 l_component_appl_id INTEGER ;
251 l_amb_context_code VARCHAR2(30) ;
252 l_ledger_language VARCHAR2(30) ;
253 l_source VARCHAR2(1996) ;
254 l_description VARCHAR2(2000) ;
255 l_log_module VARCHAR2(240) ;
256 BEGIN
257 IF g_log_enabled THEN
258 l_log_module := C_DEFAULT_MODULE||'.Description_1';
259 END IF;
260 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
261 trace
262 (p_msg => 'BEGIN of Description_1'
263 ,p_level => C_LEVEL_PROCEDURE
264 ,p_module => l_log_module);
265 END IF;
266
267 l_ledger_language := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
268 l_component_type := 'AMB_DESCRIPTION';
269 l_component_code := 'OKL_DEFAULT_CONTRACT_JRNL_DESC';
270 l_component_type_code := 'S';
271 l_component_appl_id := 540;
272 l_amb_context_code := 'DEFAULT';
273 l_source := NULL;
274 l_description := NULL;
275
276
277
278 IF
279 l_ledger_language = 'US' THEN
280 l_description := SUBSTR(CONCAT(l_description,'Contract Number:'),1,2000);
281 l_description := SUBSTR(CONCAT(l_description,' '),1,2000);
282 END IF;
283 l_source := SUBSTR(p_source_1,1,1996);
284 IF l_source IS NOT NULL THEN
285 l_description := SUBSTR(CONCAT(l_description,l_source),1,2000);
286 l_description := SUBSTR(CONCAT(l_description,' '),1,2000);
287 END IF;
288 IF
289 l_ledger_language = 'US' THEN
290 l_description := SUBSTR(CONCAT(l_description,','),1,2000);
291 l_description := SUBSTR(CONCAT(l_description,' '),1,2000);
292 END IF;
293 IF
294 l_ledger_language = 'US' THEN
295 l_description := SUBSTR(CONCAT(l_description,' Financial Product:'),1,2000);
296 l_description := SUBSTR(CONCAT(l_description,' '),1,2000);
297 END IF;
298 l_source := SUBSTR(p_source_2,1,1996);
299 IF l_source IS NOT NULL THEN
300 l_description := SUBSTR(CONCAT(l_description,l_source),1,2000);
301 l_description := SUBSTR(CONCAT(l_description,' '),1,2000);
302 END IF;
303 l_description := SUBSTR(l_description,1,1996);
304 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
305 trace
306 (p_msg => 'END of Description_1'
307 ,p_level => C_LEVEL_PROCEDURE
308 ,p_module => l_log_module);
309
310 END IF;
311 RETURN l_description;
312
313 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
314 trace
315 (p_msg => 'END of Description_1'
316 ,p_level => C_LEVEL_PROCEDURE
317 ,p_module => l_log_module);
318 END IF;
319 RETURN NULL;
320 EXCEPTION
321 WHEN VALUE_ERROR THEN
322 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
323 trace
324 (p_msg => 'ERROR: '||sqlerrm
325 ,p_level => C_LEVEL_EXCEPTION
326 ,p_module => l_log_module);
327 END IF;
328 RAISE;
329 WHEN xla_exceptions_pkg.application_exception THEN
330 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
331 trace
332 (p_msg => 'ERROR: '||sqlerrm
333 ,p_level => C_LEVEL_EXCEPTION
334 ,p_module => l_log_module);
335 END IF;
336 RAISE;
337 WHEN OTHERS THEN
338 xla_exceptions_pkg.raise_message
339 (p_location => 'XLA_00540_AAD_S_000014_PKG.Description_1');
340 END Description_1;
341
342 ---------------------------------------
343 --
344 -- PRIVATE FUNCTION
345 -- Description_2
346 --
347 ---------------------------------------
348 FUNCTION Description_2 (
349 p_application_id IN NUMBER
350 , p_ae_header_id IN NUMBER DEFAULT NULL
351 --Investor Agreement Number
352 , p_source_3 IN VARCHAR2
353 --Investor Agreement Product Name
354 , p_source_4 IN VARCHAR2
355 )
356 RETURN VARCHAR2
357 IS
358 l_component_type VARCHAR2(80) ;
359 l_component_code VARCHAR2(30) ;
360 l_component_type_code VARCHAR2(1) ;
361 l_component_appl_id INTEGER ;
362 l_amb_context_code VARCHAR2(30) ;
363 l_ledger_language VARCHAR2(30) ;
364 l_source VARCHAR2(1996) ;
365 l_description VARCHAR2(2000) ;
366 l_log_module VARCHAR2(240) ;
367 BEGIN
368 IF g_log_enabled THEN
369 l_log_module := C_DEFAULT_MODULE||'.Description_2';
370 END IF;
371 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
372 trace
373 (p_msg => 'BEGIN of Description_2'
377
374 ,p_level => C_LEVEL_PROCEDURE
375 ,p_module => l_log_module);
376 END IF;
378 l_ledger_language := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
379 l_component_type := 'AMB_DESCRIPTION';
380 l_component_code := 'OKL_DEFAULT_IA_JRNL_DESC';
381 l_component_type_code := 'S';
382 l_component_appl_id := 540;
383 l_amb_context_code := 'DEFAULT';
384 l_source := NULL;
385 l_description := NULL;
386
387
388
389 IF
390 l_ledger_language = 'US' THEN
391 l_description := SUBSTR(CONCAT(l_description,'Agreement Number:'),1,2000);
392 l_description := SUBSTR(CONCAT(l_description,' '),1,2000);
393 END IF;
394 l_source := SUBSTR(p_source_3,1,1996);
395 IF l_source IS NOT NULL THEN
396 l_description := SUBSTR(CONCAT(l_description,l_source),1,2000);
397 l_description := SUBSTR(CONCAT(l_description,' '),1,2000);
398 END IF;
399 IF
400 l_ledger_language = 'US' THEN
401 l_description := SUBSTR(CONCAT(l_description,','),1,2000);
402 l_description := SUBSTR(CONCAT(l_description,' '),1,2000);
403 END IF;
404 IF
405 l_ledger_language = 'US' THEN
406 l_description := SUBSTR(CONCAT(l_description,' Financial Product:'),1,2000);
407 l_description := SUBSTR(CONCAT(l_description,' '),1,2000);
408 END IF;
409 l_source := SUBSTR(p_source_4,1,1996);
410 IF l_source IS NOT NULL THEN
411 l_description := SUBSTR(CONCAT(l_description,l_source),1,2000);
412 l_description := SUBSTR(CONCAT(l_description,' '),1,2000);
413 END IF;
414 l_description := SUBSTR(l_description,1,1996);
415 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
416 trace
417 (p_msg => 'END of Description_2'
418 ,p_level => C_LEVEL_PROCEDURE
419 ,p_module => l_log_module);
420
421 END IF;
422 RETURN l_description;
423
424 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
425 trace
426 (p_msg => 'END of Description_2'
427 ,p_level => C_LEVEL_PROCEDURE
428 ,p_module => l_log_module);
429 END IF;
430 RETURN NULL;
431 EXCEPTION
432 WHEN VALUE_ERROR THEN
433 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
434 trace
435 (p_msg => 'ERROR: '||sqlerrm
436 ,p_level => C_LEVEL_EXCEPTION
437 ,p_module => l_log_module);
438 END IF;
439 RAISE;
440 WHEN xla_exceptions_pkg.application_exception THEN
441 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
442 trace
443 (p_msg => 'ERROR: '||sqlerrm
444 ,p_level => C_LEVEL_EXCEPTION
445 ,p_module => l_log_module);
446 END IF;
447 RAISE;
448 WHEN OTHERS THEN
449 xla_exceptions_pkg.raise_message
450 (p_location => 'XLA_00540_AAD_S_000014_PKG.Description_2');
451 END Description_2;
452
453 ---------------------------------------
454 --
455 -- PRIVATE FUNCTION
456 -- AcctDerRule_3
457 --
458 ---------------------------------------
459 FUNCTION AcctDerRule_3 (
460 p_application_id IN NUMBER
461 , p_ae_header_id IN NUMBER
462 , p_side IN VARCHAR2
463 --Distribution Account
464 , p_source_5 IN NUMBER
465 , x_transaction_coa_id OUT NOCOPY NUMBER
466 , x_accounting_coa_id OUT NOCOPY NUMBER
467 , x_value_type_code OUT NOCOPY VARCHAR2
468 )
469 RETURN NUMBER
470 IS
471 l_component_type VARCHAR2(80) ;
472 l_component_code VARCHAR2(30) ;
473 l_component_type_code VARCHAR2(1) ;
474 l_component_appl_id INTEGER ;
475 l_amb_context_code VARCHAR2(30) ;
476 l_log_module VARCHAR2(240) ;
477 l_output_value NUMBER ;
478 BEGIN
479 IF g_log_enabled THEN
480 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_3';
481 END IF;
482 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
483 trace
484 (p_msg => 'BEGIN of AcctDerRule_3'
485 ,p_level => C_LEVEL_PROCEDURE
486 ,p_module => l_log_module);
487 END IF;
488 --
489 l_component_type := 'AMB_ADR';
490 l_component_code := 'OKL_DEFAULT_ACCOUNT';
491 l_component_type_code := 'S';
492 l_component_appl_id := 540;
493 l_amb_context_code := 'DEFAULT';
494 x_transaction_coa_id := null;
495 x_accounting_coa_id := null;
496 --
497
498 --
499 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
500 trace
501 (p_msg => 'END of AcctDerRule_3'
502 ,p_level => C_LEVEL_PROCEDURE
503 ,p_module => l_log_module);
504 END IF;
505 x_value_type_code := 'S';
506 l_output_value := TO_NUMBER(TO_NUMBER(p_source_5));
507 RETURN l_output_value;
508
509 --
510 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
511 trace
512 (p_msg => 'END of AcctDerRule_3(invalid)'
513 ,p_level => C_LEVEL_PROCEDURE
514 ,p_module => l_log_module);
515 END IF;
516 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
517 x_value_type_code := null;
518 l_output_value := null;
519 xla_accounting_err_pkg.build_message
520 (p_appli_s_name => 'XLA'
521 ,p_msg_name => 'XLA_AP_INVALID_ADR'
522 ,p_token_1 => 'COMPONENT_NAME'
523 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
524 l_component_type
528 , l_amb_context_code
525 , l_component_code
526 , l_component_type_code
527 , l_component_appl_id
529 )
530 ,p_token_2 => 'OWNER'
531 ,p_value_2 => xla_lookups_pkg.get_meaning(
532 'XLA_OWNER_TYPE'
533 ,l_component_type_code
534 )
535 ,p_token_3 => 'PAD_NAME'
536 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
537 ,p_token_4 => 'PAD_OWNER'
538 ,p_value_4 => xla_lookups_pkg.get_meaning(
539 'XLA_OWNER_TYPE'
540 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
541 )
542 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
543 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
544 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
545 ,p_ae_header_id => NULL
546 );
547 RETURN l_output_value;
548 EXCEPTION
549 WHEN xla_exceptions_pkg.application_exception THEN
550 RAISE;
551 WHEN OTHERS THEN
552 xla_exceptions_pkg.raise_message
553 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctDerRule_3');
554 END AcctDerRule_3;
555 --
556
557 ---------------------------------------
558 --
559 -- PRIVATE FUNCTION
560 -- AcctLineType_4
561 --
562 ---------------------------------------
563 PROCEDURE AcctLineType_4 (
564 p_application_id IN NUMBER
565 ,p_event_id IN NUMBER
566 ,p_calculate_acctd_flag IN VARCHAR2
567 ,p_calculate_g_l_flag IN VARCHAR2
568 ,p_actual_flag IN OUT VARCHAR2
569 ,p_balance_type_code OUT VARCHAR2
570 ,p_gain_or_loss_ref OUT VARCHAR2
571
572 --Contract Number
573 , p_source_1 IN VARCHAR2
574 --Contract Product Name
575 , p_source_2 IN VARCHAR2
576 --Distribution Account
577 , p_source_5 IN NUMBER
578 --Accounting Line Type
579 , p_source_6 IN VARCHAR2
580 , p_source_6_meaning IN VARCHAR2
581 --Accounting Distribution Identifier
582 , p_source_7 IN NUMBER
583 --Distribution Type
584 , p_source_8 IN VARCHAR2
585 --Distribution Entered Amount
586 , p_source_9 IN NUMBER
587 --Transaction Currency Code
588 , p_source_10 IN VARCHAR2
589 --Transaction Currency Conversion Date
590 , p_source_11 IN DATE
591 --Transaction Currency Conversion Rate
592 , p_source_12 IN NUMBER
593 --Transaction Currency Conversion Type
594 , p_source_13 IN VARCHAR2
595 )
596 IS
597
598 l_component_type VARCHAR2(80);
599 l_component_code VARCHAR2(30);
600 l_component_type_code VARCHAR2(1);
601 l_component_appl_id INTEGER;
602 l_amb_context_code VARCHAR2(30);
603 l_entity_code VARCHAR2(30);
604 l_event_class_code VARCHAR2(30);
605 l_ae_header_id NUMBER;
606 l_event_type_code VARCHAR2(30);
607 l_line_definition_code VARCHAR2(30);
608 l_line_definition_owner_code VARCHAR2(1);
609 --
610 -- adr variables
611 l_segment VARCHAR2(30);
612 l_ccid NUMBER;
613 l_adr_transaction_coa_id NUMBER;
614 l_adr_accounting_coa_id NUMBER;
615 l_adr_flexfield_segment_code VARCHAR2(30);
616 l_adr_flex_value_set_id NUMBER;
617 l_adr_value_type_code VARCHAR2(30);
618 l_adr_value_combination_id NUMBER;
619 l_adr_value_segment_code VARCHAR2(30);
620
621 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
622 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
623 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
624 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
625
626 -- 4262811 Variables ------------------------------------------------------------------------------------------
627 l_entered_amt_idx NUMBER;
628 l_accted_amt_idx NUMBER;
629 l_acc_rev_flag VARCHAR2(1);
630 l_accrual_line_num NUMBER;
631 l_tmp_amt NUMBER;
632 l_acc_rev_natural_side_code VARCHAR2(1);
633
634 l_num_entries NUMBER;
635 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
636 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
637 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
638 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
639 l_recog_line_1 NUMBER;
640 l_recog_line_2 NUMBER;
641
642 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
643 l_bflow_applied_to_amt NUMBER; -- 5132302
644 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
645
646 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
647
648 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
652
649 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
650
651 ---------------------------------------------------------------------------------------------------------------
653
654 --
655 -- bulk performance
656 --
657 l_balance_type_code VARCHAR2(1);
658 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
659 l_log_module VARCHAR2(240);
660
661 --
662 -- Upgrade strategy
663 --
664 l_actual_upg_option VARCHAR2(1);
665 l_enc_upg_option VARCHAR2(1);
666
667 --
668 BEGIN
669 --
670 IF g_log_enabled THEN
671 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_4';
672 END IF;
673 --
674 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
675
676 trace
677 (p_msg => 'BEGIN of AcctLineType_4'
678 ,p_level => C_LEVEL_PROCEDURE
679 ,p_module => l_log_module);
680
681 END IF;
682 --
683 l_component_type := 'AMB_JLT';
684 l_component_code := 'OKL_ACCRUAL_CR';
685 l_component_type_code := 'S';
686 l_component_appl_id := 540;
687 l_amb_context_code := 'DEFAULT';
688 l_entity_code := 'TRANSACTIONS';
689 l_event_class_code := 'ACCRUAL';
690 l_event_type_code := 'ACCRUAL_ALL';
691 l_line_definition_owner_code := 'S';
692 l_line_definition_code := 'OKL_ACCRUAL';
693 --
694 l_balance_type_code := 'A';
695 l_segment := NULL;
696 l_ccid := NULL;
697 l_adr_transaction_coa_id := NULL;
698 l_adr_accounting_coa_id := NULL;
699 l_adr_flexfield_segment_code := NULL;
700 l_adr_flex_value_set_id := NULL;
701 l_adr_value_type_code := NULL;
702 l_adr_value_combination_id := NULL;
703 l_adr_value_segment_code := NULL;
704
705 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
706 l_bflow_class_code := ''; -- 4219869 Business Flow
707 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
708 l_budgetary_control_flag := 'N';
709
710 l_bflow_applied_to_amt_idx := NULL; -- 5132302
711 l_bflow_applied_to_amt := NULL; -- 5132302
712 l_entered_amt_idx := NULL; -- 4262811
713 l_accted_amt_idx := NULL; -- 4262811
714 l_acc_rev_flag := NULL; -- 4262811
715 l_accrual_line_num := NULL; -- 4262811
716 l_tmp_amt := NULL; -- 4262811
717 --
718
719 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
720 l_balance_type_code <> 'B' THEN
721 IF NVL(p_source_6,'
722 ') = 'LEASE_CREDIT'
723 THEN
724
725 --
726 XLA_AE_LINES_PKG.SetNewLine;
727
728 p_balance_type_code := l_balance_type_code;
729 -- set the flag so later we will know whether the gain loss line needs to be created
730
731 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
732 p_actual_flag :='A';
733 END IF;
734
735 --
736 -- bulk performance
737 --
738 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
739 p_header_num => 0); -- 4262811
740 --
741 -- set accounting line options
742 --
743 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
744 p_natural_side_code => 'C'
745 , p_gain_or_loss_flag => 'N'
746 , p_gl_transfer_mode_code => 'S'
747 , p_acct_entry_type_code => 'A'
748 , p_switch_side_flag => 'Y'
749 , p_merge_duplicate_code => 'N'
750 );
751 --
752 l_acc_rev_natural_side_code := 'D'; -- 4262811
753 --
754 --
755 -- set accounting line type info
756 --
757 xla_ae_lines_pkg.SetAcctLineType
758 (p_component_type => l_component_type
759 ,p_event_type_code => l_event_type_code
760 ,p_line_definition_owner_code => l_line_definition_owner_code
761 ,p_line_definition_code => l_line_definition_code
762 ,p_accounting_line_code => l_component_code
763 ,p_accounting_line_type_code => l_component_type_code
764 ,p_accounting_line_appl_id => l_component_appl_id
765 ,p_amb_context_code => l_amb_context_code
766 ,p_entity_code => l_entity_code
767 ,p_event_class_code => l_event_class_code);
768 --
769 -- set accounting class
770 --
771 xla_ae_lines_pkg.SetAcctClass(
772 p_accounting_class_code => 'LEASE_ACCRUAL'
773 , p_ae_header_id => l_ae_header_id
774 );
775
776 --
777 -- set rounding class
778 --
779 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
780 'LEASE_ACCRUAL';
781
782 --
783 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
784 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
785 --
786 -- bulk performance
787 --
788 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
789
790 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
791 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
792
793 -- 4955764
794 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
798
795 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
796
797 -- 4458381 Public Sector Enh
799 --
803 l_accted_amt_idx := NULL;
800 -- set accounting attributes for the line type
801 --
802 l_entered_amt_idx := 3;
804 l_bflow_applied_to_amt_idx := NULL; -- 5132302
805 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
806 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
807 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
808 l_rec_acct_attrs.array_char_value(2) := p_source_8;
809 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
810 l_rec_acct_attrs.array_num_value(3) := p_source_9;
811 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
812 l_rec_acct_attrs.array_char_value(4) := p_source_10;
813 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
814 l_rec_acct_attrs.array_date_value(5) := p_source_11;
815 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
816 l_rec_acct_attrs.array_num_value(6) := p_source_12;
817 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
818 l_rec_acct_attrs.array_char_value(7) := p_source_13;
819
820 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
821 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
822
823 ---------------------------------------------------------------------------------------------------------------
824 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
825 ---------------------------------------------------------------------------------------------------------------
826 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
827
828 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
829 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
830
831 IF xla_accounting_cache_pkg.GetValueChar
832 (p_source_code => 'LEDGER_CATEGORY_CODE'
833 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
834 AND l_bflow_method_code = 'PRIOR_ENTRY'
835 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
836 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
837 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
838 )
839 THEN
840 xla_ae_lines_pkg.BflowUpgEntry
841 (p_business_method_code => l_bflow_method_code
842 ,p_business_class_code => l_bflow_class_code
843 ,p_balance_type => l_balance_type_code);
844 ELSE
845 NULL;
846 -- No business flow processing for business flow method of NONE.
847 END IF;
848
849 --
850 -- call analytical criteria
851 --
852
853 --
854 -- call description
855 --
856
857 xla_ae_lines_pkg.SetLineDescription(
858 p_ae_header_id => l_ae_header_id
859 ,p_description => Description_1 (
860 p_application_id => p_application_id
861 , p_ae_header_id => l_ae_header_id
862 , p_source_1 => p_source_1
863 , p_source_2 => p_source_2
864 )
865 );
866
867
868 --
869 -- call ADRs
870 -- Bug 4922099
871 --
872 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
873 (NVL(l_actual_upg_option, 'N') = 'O') OR
874 (NVL(l_enc_upg_option, 'N') = 'O')
875 )
876 THEN
877 NULL;
878 --
879 --
880
881 l_ccid := AcctDerRule_3(
885 , x_transaction_coa_id => l_adr_transaction_coa_id
882 p_application_id => p_application_id
883 , p_ae_header_id => l_ae_header_id
884 , p_source_5 => p_source_5
886 , x_accounting_coa_id => l_adr_accounting_coa_id
887 , x_value_type_code => l_adr_value_type_code
888 , p_side => 'NA'
889 );
890
891 xla_ae_lines_pkg.set_ccid(
892 p_code_combination_id => l_ccid
893 , p_value_type_code => l_adr_value_type_code
894 , p_transaction_coa_id => l_adr_transaction_coa_id
895 , p_accounting_coa_id => l_adr_accounting_coa_id
896 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
897 , p_adr_type_code => 'S'
898 , p_component_type => l_component_type
899 , p_component_code => l_component_code
900 , p_component_type_code => l_component_type_code
901 , p_component_appl_id => l_component_appl_id
902 , p_amb_context_code => l_amb_context_code
903 , p_side => 'NA'
904 );
905
906
907 --
908 --
909 END IF;
910 --
911 -- Bug 4922099
912 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
913 (NVL(l_enc_upg_option, 'N') = 'O')
914 ) AND
915 (l_bflow_method_code = 'PRIOR_ENTRY')
916 )
917 THEN
918 IF
919 --
920 1 = 2
921 --
922 THEN
923 xla_accounting_err_pkg.build_message
924 (p_appli_s_name => 'XLA'
925 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
926 ,p_token_1 => 'LINE_NUMBER'
927 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
928 ,p_token_2 => 'LINE_TYPE_NAME'
929 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
930 l_component_type
931 ,l_component_code
932 ,l_component_type_code
933 ,l_component_appl_id
934 ,l_amb_context_code
935 ,l_entity_code
936 ,l_event_class_code
937 )
938 ,p_token_3 => 'OWNER'
939 ,p_value_3 => xla_lookups_pkg.get_meaning(
940 p_lookup_type => 'XLA_OWNER_TYPE'
941 ,p_lookup_code => l_component_type_code
942 )
943 ,p_token_4 => 'PRODUCT_NAME'
944 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
945 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
946 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
947 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
948 ,p_ae_header_id => NULL
949 );
950
951 IF (C_LEVEL_ERROR>= g_log_level) THEN
952 trace
953 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
954 ,p_level => C_LEVEL_ERROR
955 ,p_module => l_log_module);
956 END IF;
957 END IF;
958 END IF;
959 --
960 --
961 ------------------------------------------------------------------------------------------------
962 -- 4219869 Business Flow
963 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
964 -- Prior Entry. Currently, the following code is always generated.
965 ------------------------------------------------------------------------------------------------
966 XLA_AE_LINES_PKG.ValidateCurrentLine;
967
968 ------------------------------------------------------------------------------------
969 -- 4219869 Business Flow
970 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
971 ------------------------------------------------------------------------------------
972 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
973
974 ----------------------------------------------------------------------------------
975 -- 4219869 Business Flow
976 -- Update journal entry status -- Need to generate this within IF <condition>
977 ----------------------------------------------------------------------------------
978 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
979 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
980 ,p_balance_type_code => l_balance_type_code
981 );
982
983 -------------------------------------------------------------------------------------------
984 -- 4262811 - Generate the Accrual Reversal lines
985 -------------------------------------------------------------------------------------------
986 BEGIN
990 l_acc_rev_flag := 'N';
987 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
988 (g_array_event(p_event_id).array_value_num('header_index'));
989 IF l_acc_rev_flag IS NULL THEN
991 END IF;
992 EXCEPTION
993 WHEN OTHERS THEN
994 l_acc_rev_flag := 'N';
995 END;
996 --
997 IF (l_acc_rev_flag = 'Y') THEN
998
999 -- 4645092 ------------------------------------------------------------------------------
1000 -- To allow MPA report to determine if it should generate report process
1001 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
1002 ------------------------------------------------------------------------------------------
1003
1004 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
1005 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
1006
1007 --
1008 -- Update the line information that should be overwritten
1009 --
1010 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
1011 p_header_num => 1);
1012 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
1013
1014 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
1015
1016 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
1017 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
1018 END IF;
1019
1020 --
1021 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
1022 --
1023 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
1024 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
1025 ELSE
1026 ---------------------------------------------------------------------------------------------------
1027 -- 4262811a Switch Sign
1028 ---------------------------------------------------------------------------------------------------
1029 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
1030 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1031 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1032 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1033 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1034 -- 5132302
1035 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
1036 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1037
1038 END IF;
1039
1040 -- 4955764
1041 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1042 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
1043
1044
1045 XLA_AE_LINES_PKG.ValidateCurrentLine;
1046 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1047
1048 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1049 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
1050 ,p_balance_type_code => l_balance_type_code);
1051
1052 END IF;
1053
1054 -----------------------------------------------------------------------------------------
1055 -- 4262811 Multiperiod Accounting
1056 -----------------------------------------------------------------------------------------
1057 -- No MPA option is assigned.
1058
1059
1060 END IF;
1061 END IF;
1062 --
1063
1064 --
1065 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1066 trace
1067 (p_msg => 'END of AcctLineType_4'
1068 ,p_level => C_LEVEL_PROCEDURE
1069 ,p_module => l_log_module);
1070 END IF;
1071 --
1072 EXCEPTION
1073 WHEN xla_exceptions_pkg.application_exception THEN
1074 RAISE;
1075 WHEN OTHERS THEN
1076 xla_exceptions_pkg.raise_message
1077 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_4');
1078 END AcctLineType_4;
1079 --
1080
1081 ---------------------------------------
1082 --
1083 -- PRIVATE FUNCTION
1084 -- AcctLineType_5
1085 --
1086 ---------------------------------------
1087 PROCEDURE AcctLineType_5 (
1088 p_application_id IN NUMBER
1089 ,p_event_id IN NUMBER
1090 ,p_calculate_acctd_flag IN VARCHAR2
1091 ,p_calculate_g_l_flag IN VARCHAR2
1092 ,p_actual_flag IN OUT VARCHAR2
1093 ,p_balance_type_code OUT VARCHAR2
1094 ,p_gain_or_loss_ref OUT VARCHAR2
1095
1096 --Contract Number
1097 , p_source_1 IN VARCHAR2
1098 --Contract Product Name
1099 , p_source_2 IN VARCHAR2
1100 --Distribution Account
1101 , p_source_5 IN NUMBER
1102 --Accounting Line Type
1103 , p_source_6 IN VARCHAR2
1104 , p_source_6_meaning IN VARCHAR2
1105 --Accounting Distribution Identifier
1106 , p_source_7 IN NUMBER
1107 --Distribution Type
1108 , p_source_8 IN VARCHAR2
1109 --Distribution Entered Amount
1110 , p_source_9 IN NUMBER
1111 --Transaction Currency Code
1112 , p_source_10 IN VARCHAR2
1113 --Transaction Currency Conversion Date
1114 , p_source_11 IN DATE
1115 --Transaction Currency Conversion Rate
1116 , p_source_12 IN NUMBER
1117 --Transaction Currency Conversion Type
1118 , p_source_13 IN VARCHAR2
1119 )
1120 IS
1121
1125 l_component_appl_id INTEGER;
1122 l_component_type VARCHAR2(80);
1123 l_component_code VARCHAR2(30);
1124 l_component_type_code VARCHAR2(1);
1126 l_amb_context_code VARCHAR2(30);
1127 l_entity_code VARCHAR2(30);
1128 l_event_class_code VARCHAR2(30);
1129 l_ae_header_id NUMBER;
1130 l_event_type_code VARCHAR2(30);
1131 l_line_definition_code VARCHAR2(30);
1132 l_line_definition_owner_code VARCHAR2(1);
1133 --
1134 -- adr variables
1135 l_segment VARCHAR2(30);
1136 l_ccid NUMBER;
1137 l_adr_transaction_coa_id NUMBER;
1138 l_adr_accounting_coa_id NUMBER;
1139 l_adr_flexfield_segment_code VARCHAR2(30);
1140 l_adr_flex_value_set_id NUMBER;
1141 l_adr_value_type_code VARCHAR2(30);
1142 l_adr_value_combination_id NUMBER;
1143 l_adr_value_segment_code VARCHAR2(30);
1144
1145 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
1146 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
1147 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
1148 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
1149
1150 -- 4262811 Variables ------------------------------------------------------------------------------------------
1151 l_entered_amt_idx NUMBER;
1152 l_accted_amt_idx NUMBER;
1153 l_acc_rev_flag VARCHAR2(1);
1154 l_accrual_line_num NUMBER;
1155 l_tmp_amt NUMBER;
1156 l_acc_rev_natural_side_code VARCHAR2(1);
1157
1158 l_num_entries NUMBER;
1159 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
1160 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
1161 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
1162 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
1163 l_recog_line_1 NUMBER;
1164 l_recog_line_2 NUMBER;
1165
1166 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
1167 l_bflow_applied_to_amt NUMBER; -- 5132302
1168 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
1169
1170 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
1171
1172 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
1173 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
1174
1175 ---------------------------------------------------------------------------------------------------------------
1176
1177
1178 --
1179 -- bulk performance
1180 --
1181 l_balance_type_code VARCHAR2(1);
1185 --
1182 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
1183 l_log_module VARCHAR2(240);
1184
1186 -- Upgrade strategy
1187 --
1188 l_actual_upg_option VARCHAR2(1);
1189 l_enc_upg_option VARCHAR2(1);
1190
1191 --
1192 BEGIN
1193 --
1194 IF g_log_enabled THEN
1195 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_5';
1196 END IF;
1197 --
1198 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1199
1200 trace
1201 (p_msg => 'BEGIN of AcctLineType_5'
1202 ,p_level => C_LEVEL_PROCEDURE
1203 ,p_module => l_log_module);
1204
1205 END IF;
1206 --
1207 l_component_type := 'AMB_JLT';
1208 l_component_code := 'OKL_ACCRUAL_DR';
1209 l_component_type_code := 'S';
1210 l_component_appl_id := 540;
1211 l_amb_context_code := 'DEFAULT';
1212 l_entity_code := 'TRANSACTIONS';
1213 l_event_class_code := 'ACCRUAL';
1214 l_event_type_code := 'ACCRUAL_ALL';
1215 l_line_definition_owner_code := 'S';
1216 l_line_definition_code := 'OKL_ACCRUAL';
1217 --
1218 l_balance_type_code := 'A';
1219 l_segment := NULL;
1220 l_ccid := NULL;
1221 l_adr_transaction_coa_id := NULL;
1222 l_adr_accounting_coa_id := NULL;
1223 l_adr_flexfield_segment_code := NULL;
1224 l_adr_flex_value_set_id := NULL;
1225 l_adr_value_type_code := NULL;
1226 l_adr_value_combination_id := NULL;
1227 l_adr_value_segment_code := NULL;
1228
1229 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
1230 l_bflow_class_code := ''; -- 4219869 Business Flow
1231 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
1232 l_budgetary_control_flag := 'N';
1233
1234 l_bflow_applied_to_amt_idx := NULL; -- 5132302
1235 l_bflow_applied_to_amt := NULL; -- 5132302
1236 l_entered_amt_idx := NULL; -- 4262811
1237 l_accted_amt_idx := NULL; -- 4262811
1238 l_acc_rev_flag := NULL; -- 4262811
1239 l_accrual_line_num := NULL; -- 4262811
1240 l_tmp_amt := NULL; -- 4262811
1241 --
1242
1243 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
1244 l_balance_type_code <> 'B' THEN
1245 IF NVL(p_source_6,'
1246 ') = 'LEASE_DEBIT'
1247 THEN
1248
1249 --
1250 XLA_AE_LINES_PKG.SetNewLine;
1251
1252 p_balance_type_code := l_balance_type_code;
1253 -- set the flag so later we will know whether the gain loss line needs to be created
1254
1255 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
1256 p_actual_flag :='A';
1257 END IF;
1258
1259 --
1260 -- bulk performance
1261 --
1262 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
1263 p_header_num => 0); -- 4262811
1264 --
1265 -- set accounting line options
1266 --
1267 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
1268 p_natural_side_code => 'D'
1269 , p_gain_or_loss_flag => 'N'
1270 , p_gl_transfer_mode_code => 'S'
1271 , p_acct_entry_type_code => 'A'
1272 , p_switch_side_flag => 'Y'
1273 , p_merge_duplicate_code => 'N'
1274 );
1275 --
1276 l_acc_rev_natural_side_code := 'C'; -- 4262811
1277 --
1278 --
1279 -- set accounting line type info
1280 --
1281 xla_ae_lines_pkg.SetAcctLineType
1282 (p_component_type => l_component_type
1283 ,p_event_type_code => l_event_type_code
1284 ,p_line_definition_owner_code => l_line_definition_owner_code
1285 ,p_line_definition_code => l_line_definition_code
1286 ,p_accounting_line_code => l_component_code
1287 ,p_accounting_line_type_code => l_component_type_code
1288 ,p_accounting_line_appl_id => l_component_appl_id
1289 ,p_amb_context_code => l_amb_context_code
1290 ,p_entity_code => l_entity_code
1291 ,p_event_class_code => l_event_class_code);
1292 --
1293 -- set accounting class
1294 --
1295 xla_ae_lines_pkg.SetAcctClass(
1296 p_accounting_class_code => 'LEASE_ACCRUAL'
1297 , p_ae_header_id => l_ae_header_id
1298 );
1299
1300 --
1301 -- set rounding class
1302 --
1303 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
1304 'LEASE_ACCRUAL';
1305
1306 --
1307 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
1308 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
1309 --
1310 -- bulk performance
1311 --
1312 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
1313
1314 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
1315 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
1316
1317 -- 4955764
1318 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1319 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
1320
1321 -- 4458381 Public Sector Enh
1322
1323 --
1324 -- set accounting attributes for the line type
1325 --
1326 l_entered_amt_idx := 3;
1327 l_accted_amt_idx := NULL;
1328 l_bflow_applied_to_amt_idx := NULL; -- 5132302
1332 l_rec_acct_attrs.array_char_value(2) := p_source_8;
1329 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
1330 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
1331 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
1333 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
1334 l_rec_acct_attrs.array_num_value(3) := p_source_9;
1335 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
1336 l_rec_acct_attrs.array_char_value(4) := p_source_10;
1337 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
1338 l_rec_acct_attrs.array_date_value(5) := p_source_11;
1339 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
1340 l_rec_acct_attrs.array_num_value(6) := p_source_12;
1341 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
1342 l_rec_acct_attrs.array_char_value(7) := p_source_13;
1343
1344 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
1345 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
1346
1347 ---------------------------------------------------------------------------------------------------------------
1348 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
1349 ---------------------------------------------------------------------------------------------------------------
1350 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
1351
1352 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1353 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1354
1355 IF xla_accounting_cache_pkg.GetValueChar
1356 (p_source_code => 'LEDGER_CATEGORY_CODE'
1357 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
1358 AND l_bflow_method_code = 'PRIOR_ENTRY'
1359 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
1360 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
1361 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
1362 )
1363 THEN
1364 xla_ae_lines_pkg.BflowUpgEntry
1365 (p_business_method_code => l_bflow_method_code
1366 ,p_business_class_code => l_bflow_class_code
1367 ,p_balance_type => l_balance_type_code);
1368 ELSE
1369 NULL;
1370 -- No business flow processing for business flow method of NONE.
1371 END IF;
1372
1373 --
1374 -- call analytical criteria
1375 --
1376
1377 --
1378 -- call description
1379 --
1380
1381 xla_ae_lines_pkg.SetLineDescription(
1382 p_ae_header_id => l_ae_header_id
1383 ,p_description => Description_1 (
1384 p_application_id => p_application_id
1385 , p_ae_header_id => l_ae_header_id
1386 , p_source_1 => p_source_1
1387 , p_source_2 => p_source_2
1388 )
1389 );
1390
1391
1392 --
1393 -- call ADRs
1394 -- Bug 4922099
1395 --
1396 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1397 (NVL(l_actual_upg_option, 'N') = 'O') OR
1398 (NVL(l_enc_upg_option, 'N') = 'O')
1399 )
1400 THEN
1401 NULL;
1402 --
1403 --
1404
1405 l_ccid := AcctDerRule_3(
1406 p_application_id => p_application_id
1407 , p_ae_header_id => l_ae_header_id
1408 , p_source_5 => p_source_5
1409 , x_transaction_coa_id => l_adr_transaction_coa_id
1410 , x_accounting_coa_id => l_adr_accounting_coa_id
1411 , x_value_type_code => l_adr_value_type_code
1412 , p_side => 'NA'
1413 );
1414
1415 xla_ae_lines_pkg.set_ccid(
1416 p_code_combination_id => l_ccid
1417 , p_value_type_code => l_adr_value_type_code
1418 , p_transaction_coa_id => l_adr_transaction_coa_id
1419 , p_accounting_coa_id => l_adr_accounting_coa_id
1420 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
1421 , p_adr_type_code => 'S'
1422 , p_component_type => l_component_type
1423 , p_component_code => l_component_code
1424 , p_component_type_code => l_component_type_code
1425 , p_component_appl_id => l_component_appl_id
1426 , p_amb_context_code => l_amb_context_code
1427 , p_side => 'NA'
1428 );
1429
1430
1431 --
1432 --
1433 END IF;
1434 --
1435 -- Bug 4922099
1436 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
1437 (NVL(l_enc_upg_option, 'N') = 'O')
1438 ) AND
1439 (l_bflow_method_code = 'PRIOR_ENTRY')
1440 )
1441 THEN
1442 IF
1443 --
1444 1 = 2
1445 --
1446 THEN
1447 xla_accounting_err_pkg.build_message
1448 (p_appli_s_name => 'XLA'
1449 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1450 ,p_token_1 => 'LINE_NUMBER'
1451 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
1452 ,p_token_2 => 'LINE_TYPE_NAME'
1453 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
1454 l_component_type
1455 ,l_component_code
1456 ,l_component_type_code
1460 ,l_event_class_code
1457 ,l_component_appl_id
1458 ,l_amb_context_code
1459 ,l_entity_code
1461 )
1462 ,p_token_3 => 'OWNER'
1463 ,p_value_3 => xla_lookups_pkg.get_meaning(
1464 p_lookup_type => 'XLA_OWNER_TYPE'
1465 ,p_lookup_code => l_component_type_code
1466 )
1467 ,p_token_4 => 'PRODUCT_NAME'
1468 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
1469 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
1470 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
1471 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
1472 ,p_ae_header_id => NULL
1473 );
1474
1475 IF (C_LEVEL_ERROR>= g_log_level) THEN
1476 trace
1477 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1478 ,p_level => C_LEVEL_ERROR
1479 ,p_module => l_log_module);
1480 END IF;
1481 END IF;
1482 END IF;
1483 --
1484 --
1485 ------------------------------------------------------------------------------------------------
1486 -- 4219869 Business Flow
1487 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
1488 -- Prior Entry. Currently, the following code is always generated.
1489 ------------------------------------------------------------------------------------------------
1490 XLA_AE_LINES_PKG.ValidateCurrentLine;
1491
1492 ------------------------------------------------------------------------------------
1493 -- 4219869 Business Flow
1494 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
1495 ------------------------------------------------------------------------------------
1496 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1497
1498 ----------------------------------------------------------------------------------
1499 -- 4219869 Business Flow
1500 -- Update journal entry status -- Need to generate this within IF <condition>
1501 ----------------------------------------------------------------------------------
1502 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1503 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
1504 ,p_balance_type_code => l_balance_type_code
1505 );
1506
1507 -------------------------------------------------------------------------------------------
1508 -- 4262811 - Generate the Accrual Reversal lines
1509 -------------------------------------------------------------------------------------------
1510 BEGIN
1511 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
1512 (g_array_event(p_event_id).array_value_num('header_index'));
1513 IF l_acc_rev_flag IS NULL THEN
1514 l_acc_rev_flag := 'N';
1515 END IF;
1516 EXCEPTION
1517 WHEN OTHERS THEN
1518 l_acc_rev_flag := 'N';
1519 END;
1520 --
1521 IF (l_acc_rev_flag = 'Y') THEN
1522
1523 -- 4645092 ------------------------------------------------------------------------------
1524 -- To allow MPA report to determine if it should generate report process
1525 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
1526 ------------------------------------------------------------------------------------------
1527
1528 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
1529 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
1530
1531 --
1532 -- Update the line information that should be overwritten
1533 --
1534 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
1535 p_header_num => 1);
1536 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
1537
1538 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
1539
1540 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
1541 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
1542 END IF;
1543
1544 --
1545 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
1546 --
1547 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
1548 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
1549 ELSE
1550 ---------------------------------------------------------------------------------------------------
1551 -- 4262811a Switch Sign
1552 ---------------------------------------------------------------------------------------------------
1553 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
1554 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1555 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1559 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
1556 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1557 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1558 -- 5132302
1560 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1561
1562 END IF;
1563
1564 -- 4955764
1565 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1566 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
1567
1568
1569 XLA_AE_LINES_PKG.ValidateCurrentLine;
1570 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1571
1572 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1573 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
1574 ,p_balance_type_code => l_balance_type_code);
1575
1576 END IF;
1577
1578 -----------------------------------------------------------------------------------------
1579 -- 4262811 Multiperiod Accounting
1580 -----------------------------------------------------------------------------------------
1581 -- No MPA option is assigned.
1582
1583
1584 END IF;
1585 END IF;
1586 --
1587
1588 --
1589 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1590 trace
1591 (p_msg => 'END of AcctLineType_5'
1592 ,p_level => C_LEVEL_PROCEDURE
1593 ,p_module => l_log_module);
1594 END IF;
1595 --
1596 EXCEPTION
1597 WHEN xla_exceptions_pkg.application_exception THEN
1598 RAISE;
1599 WHEN OTHERS THEN
1600 xla_exceptions_pkg.raise_message
1601 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_5');
1602 END AcctLineType_5;
1603 --
1604
1605 ---------------------------------------
1606 --
1607 -- PRIVATE FUNCTION
1608 -- AcctLineType_6
1609 --
1610 ---------------------------------------
1611 PROCEDURE AcctLineType_6 (
1612 p_application_id IN NUMBER
1613 ,p_event_id IN NUMBER
1614 ,p_calculate_acctd_flag IN VARCHAR2
1615 ,p_calculate_g_l_flag IN VARCHAR2
1616 ,p_actual_flag IN OUT VARCHAR2
1617 ,p_balance_type_code OUT VARCHAR2
1618 ,p_gain_or_loss_ref OUT VARCHAR2
1619
1620 --Contract Number
1621 , p_source_1 IN VARCHAR2
1622 --Contract Product Name
1623 , p_source_2 IN VARCHAR2
1624 --Distribution Account
1625 , p_source_5 IN NUMBER
1626 --Accounting Line Type
1627 , p_source_6 IN VARCHAR2
1628 , p_source_6_meaning IN VARCHAR2
1629 --Accounting Distribution Identifier
1630 , p_source_7 IN NUMBER
1631 --Distribution Type
1632 , p_source_8 IN VARCHAR2
1633 --Distribution Entered Amount
1634 , p_source_9 IN NUMBER
1635 --Transaction Currency Code
1636 , p_source_10 IN VARCHAR2
1637 --Transaction Currency Conversion Date
1638 , p_source_11 IN DATE
1639 --Transaction Currency Conversion Rate
1640 , p_source_12 IN NUMBER
1641 --Transaction Currency Conversion Type
1642 , p_source_13 IN VARCHAR2
1643 )
1644 IS
1645
1646 l_component_type VARCHAR2(80);
1647 l_component_code VARCHAR2(30);
1648 l_component_type_code VARCHAR2(1);
1649 l_component_appl_id INTEGER;
1650 l_amb_context_code VARCHAR2(30);
1651 l_entity_code VARCHAR2(30);
1652 l_event_class_code VARCHAR2(30);
1653 l_ae_header_id NUMBER;
1654 l_event_type_code VARCHAR2(30);
1655 l_line_definition_code VARCHAR2(30);
1656 l_line_definition_owner_code VARCHAR2(1);
1657 --
1658 -- adr variables
1659 l_segment VARCHAR2(30);
1660 l_ccid NUMBER;
1661 l_adr_transaction_coa_id NUMBER;
1662 l_adr_accounting_coa_id NUMBER;
1663 l_adr_flexfield_segment_code VARCHAR2(30);
1664 l_adr_flex_value_set_id NUMBER;
1665 l_adr_value_type_code VARCHAR2(30);
1666 l_adr_value_combination_id NUMBER;
1667 l_adr_value_segment_code VARCHAR2(30);
1668
1669 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
1670 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
1671 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
1672 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
1673
1674 -- 4262811 Variables ------------------------------------------------------------------------------------------
1675 l_entered_amt_idx NUMBER;
1676 l_accted_amt_idx NUMBER;
1677 l_acc_rev_flag VARCHAR2(1);
1678 l_accrual_line_num NUMBER;
1679 l_tmp_amt NUMBER;
1680 l_acc_rev_natural_side_code VARCHAR2(1);
1681
1682 l_num_entries NUMBER;
1683 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
1684 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
1685 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
1686 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
1687 l_recog_line_1 NUMBER;
1688 l_recog_line_2 NUMBER;
1689
1690 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
1691 l_bflow_applied_to_amt NUMBER; -- 5132302
1692 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
1693
1694 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
1695
1699 ---------------------------------------------------------------------------------------------------------------
1696 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
1697 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
1698
1700
1701
1702 --
1703 -- bulk performance
1704 --
1705 l_balance_type_code VARCHAR2(1);
1706 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
1707 l_log_module VARCHAR2(240);
1708
1709 --
1710 -- Upgrade strategy
1711 --
1712 l_actual_upg_option VARCHAR2(1);
1713 l_enc_upg_option VARCHAR2(1);
1714
1715 --
1716 BEGIN
1717 --
1718 IF g_log_enabled THEN
1719 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_6';
1720 END IF;
1721 --
1722 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1723
1724 trace
1725 (p_msg => 'BEGIN of AcctLineType_6'
1726 ,p_level => C_LEVEL_PROCEDURE
1727 ,p_module => l_log_module);
1728
1729 END IF;
1730 --
1731 l_component_type := 'AMB_JLT';
1732 l_component_code := 'OKL_ASSET_DISPOSITION_CR';
1733 l_component_type_code := 'S';
1734 l_component_appl_id := 540;
1735 l_amb_context_code := 'DEFAULT';
1736 l_entity_code := 'CONTRACTS';
1737 l_event_class_code := 'ASSET_DISPOSITION';
1738 l_event_type_code := 'ASSET_DISPOSITION_ALL';
1739 l_line_definition_owner_code := 'S';
1740 l_line_definition_code := 'OKL_ASSET_DISPOSION';
1741 --
1742 l_balance_type_code := 'A';
1743 l_segment := NULL;
1744 l_ccid := NULL;
1745 l_adr_transaction_coa_id := NULL;
1746 l_adr_accounting_coa_id := NULL;
1747 l_adr_flexfield_segment_code := NULL;
1748 l_adr_flex_value_set_id := NULL;
1749 l_adr_value_type_code := NULL;
1750 l_adr_value_combination_id := NULL;
1751 l_adr_value_segment_code := NULL;
1752
1753 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
1754 l_bflow_class_code := ''; -- 4219869 Business Flow
1755 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
1756 l_budgetary_control_flag := 'N';
1757
1758 l_bflow_applied_to_amt_idx := NULL; -- 5132302
1759 l_bflow_applied_to_amt := NULL; -- 5132302
1760 l_entered_amt_idx := NULL; -- 4262811
1761 l_accted_amt_idx := NULL; -- 4262811
1762 l_acc_rev_flag := NULL; -- 4262811
1763 l_accrual_line_num := NULL; -- 4262811
1764 l_tmp_amt := NULL; -- 4262811
1765 --
1766
1767 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
1768 l_balance_type_code <> 'B' THEN
1769 IF NVL(p_source_6,'
1770 ') = 'LEASE_CREDIT'
1771 THEN
1772
1773 --
1774 XLA_AE_LINES_PKG.SetNewLine;
1775
1776 p_balance_type_code := l_balance_type_code;
1777 -- set the flag so later we will know whether the gain loss line needs to be created
1778
1779 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
1780 p_actual_flag :='A';
1781 END IF;
1782
1783 --
1784 -- bulk performance
1785 --
1786 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
1787 p_header_num => 0); -- 4262811
1788 --
1789 -- set accounting line options
1790 --
1791 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
1792 p_natural_side_code => 'C'
1793 , p_gain_or_loss_flag => 'N'
1794 , p_gl_transfer_mode_code => 'S'
1795 , p_acct_entry_type_code => 'A'
1796 , p_switch_side_flag => 'Y'
1797 , p_merge_duplicate_code => 'N'
1798 );
1799 --
1800 l_acc_rev_natural_side_code := 'D'; -- 4262811
1801 --
1802 --
1803 -- set accounting line type info
1804 --
1805 xla_ae_lines_pkg.SetAcctLineType
1806 (p_component_type => l_component_type
1807 ,p_event_type_code => l_event_type_code
1808 ,p_line_definition_owner_code => l_line_definition_owner_code
1809 ,p_line_definition_code => l_line_definition_code
1810 ,p_accounting_line_code => l_component_code
1811 ,p_accounting_line_type_code => l_component_type_code
1812 ,p_accounting_line_appl_id => l_component_appl_id
1813 ,p_amb_context_code => l_amb_context_code
1814 ,p_entity_code => l_entity_code
1815 ,p_event_class_code => l_event_class_code);
1816 --
1817 -- set accounting class
1818 --
1819 xla_ae_lines_pkg.SetAcctClass(
1820 p_accounting_class_code => 'ASSET_DISPOSITION'
1821 , p_ae_header_id => l_ae_header_id
1822 );
1823
1824 --
1825 -- set rounding class
1826 --
1827 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
1828 'ASSET_DISPOSITION';
1829
1830 --
1831 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
1832 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
1833 --
1834 -- bulk performance
1835 --
1836 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
1837
1838 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
1839 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
1840
1841 -- 4955764
1845 -- 4458381 Public Sector Enh
1842 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1843 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
1844
1846
1847 --
1848 -- set accounting attributes for the line type
1849 --
1850 l_entered_amt_idx := 3;
1851 l_accted_amt_idx := NULL;
1852 l_bflow_applied_to_amt_idx := NULL; -- 5132302
1853 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
1854 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
1855 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
1856 l_rec_acct_attrs.array_char_value(2) := p_source_8;
1857 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
1858 l_rec_acct_attrs.array_num_value(3) := p_source_9;
1859 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
1860 l_rec_acct_attrs.array_char_value(4) := p_source_10;
1861 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
1862 l_rec_acct_attrs.array_date_value(5) := p_source_11;
1863 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
1864 l_rec_acct_attrs.array_num_value(6) := p_source_12;
1865 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
1866 l_rec_acct_attrs.array_char_value(7) := p_source_13;
1867
1868 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
1869 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
1870
1871 ---------------------------------------------------------------------------------------------------------------
1872 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
1873 ---------------------------------------------------------------------------------------------------------------
1874 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
1875
1876 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1877 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1878
1879 IF xla_accounting_cache_pkg.GetValueChar
1880 (p_source_code => 'LEDGER_CATEGORY_CODE'
1881 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
1882 AND l_bflow_method_code = 'PRIOR_ENTRY'
1883 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
1884 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
1885 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
1886 )
1887 THEN
1888 xla_ae_lines_pkg.BflowUpgEntry
1889 (p_business_method_code => l_bflow_method_code
1890 ,p_business_class_code => l_bflow_class_code
1891 ,p_balance_type => l_balance_type_code);
1892 ELSE
1893 NULL;
1894 -- No business flow processing for business flow method of NONE.
1895 END IF;
1896
1897 --
1898 -- call analytical criteria
1899 --
1900
1901 --
1902 -- call description
1903 --
1904
1905 xla_ae_lines_pkg.SetLineDescription(
1906 p_ae_header_id => l_ae_header_id
1907 ,p_description => Description_1 (
1908 p_application_id => p_application_id
1909 , p_ae_header_id => l_ae_header_id
1910 , p_source_1 => p_source_1
1911 , p_source_2 => p_source_2
1912 )
1913 );
1914
1915
1916 --
1917 -- call ADRs
1918 -- Bug 4922099
1919 --
1920 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1921 (NVL(l_actual_upg_option, 'N') = 'O') OR
1922 (NVL(l_enc_upg_option, 'N') = 'O')
1923 )
1924 THEN
1925 NULL;
1926 --
1927 --
1928
1929 l_ccid := AcctDerRule_3(
1930 p_application_id => p_application_id
1931 , p_ae_header_id => l_ae_header_id
1932 , p_source_5 => p_source_5
1933 , x_transaction_coa_id => l_adr_transaction_coa_id
1934 , x_accounting_coa_id => l_adr_accounting_coa_id
1935 , x_value_type_code => l_adr_value_type_code
1936 , p_side => 'NA'
1937 );
1938
1939 xla_ae_lines_pkg.set_ccid(
1940 p_code_combination_id => l_ccid
1941 , p_value_type_code => l_adr_value_type_code
1942 , p_transaction_coa_id => l_adr_transaction_coa_id
1943 , p_accounting_coa_id => l_adr_accounting_coa_id
1944 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
1945 , p_adr_type_code => 'S'
1946 , p_component_type => l_component_type
1947 , p_component_code => l_component_code
1948 , p_component_type_code => l_component_type_code
1949 , p_component_appl_id => l_component_appl_id
1950 , p_amb_context_code => l_amb_context_code
1951 , p_side => 'NA'
1952 );
1953
1954
1955 --
1956 --
1957 END IF;
1958 --
1959 -- Bug 4922099
1960 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
1961 (NVL(l_enc_upg_option, 'N') = 'O')
1962 ) AND
1963 (l_bflow_method_code = 'PRIOR_ENTRY')
1964 )
1965 THEN
1966 IF
1967 --
1968 1 = 2
1969 --
1970 THEN
1971 xla_accounting_err_pkg.build_message
1972 (p_appli_s_name => 'XLA'
1973 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1974 ,p_token_1 => 'LINE_NUMBER'
1975 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
1979 ,l_component_code
1976 ,p_token_2 => 'LINE_TYPE_NAME'
1977 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
1978 l_component_type
1980 ,l_component_type_code
1981 ,l_component_appl_id
1982 ,l_amb_context_code
1983 ,l_entity_code
1984 ,l_event_class_code
1985 )
1986 ,p_token_3 => 'OWNER'
1987 ,p_value_3 => xla_lookups_pkg.get_meaning(
1988 p_lookup_type => 'XLA_OWNER_TYPE'
1989 ,p_lookup_code => l_component_type_code
1990 )
1991 ,p_token_4 => 'PRODUCT_NAME'
1992 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
1993 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
1994 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
1995 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
1996 ,p_ae_header_id => NULL
1997 );
1998
1999 IF (C_LEVEL_ERROR>= g_log_level) THEN
2000 trace
2001 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2002 ,p_level => C_LEVEL_ERROR
2003 ,p_module => l_log_module);
2004 END IF;
2005 END IF;
2006 END IF;
2007 --
2008 --
2009 ------------------------------------------------------------------------------------------------
2010 -- 4219869 Business Flow
2011 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
2012 -- Prior Entry. Currently, the following code is always generated.
2013 ------------------------------------------------------------------------------------------------
2014 XLA_AE_LINES_PKG.ValidateCurrentLine;
2015
2016 ------------------------------------------------------------------------------------
2017 -- 4219869 Business Flow
2018 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
2019 ------------------------------------------------------------------------------------
2023 -- 4219869 Business Flow
2020 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2021
2022 ----------------------------------------------------------------------------------
2024 -- Update journal entry status -- Need to generate this within IF <condition>
2025 ----------------------------------------------------------------------------------
2026 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2027 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
2028 ,p_balance_type_code => l_balance_type_code
2029 );
2030
2031 -------------------------------------------------------------------------------------------
2032 -- 4262811 - Generate the Accrual Reversal lines
2033 -------------------------------------------------------------------------------------------
2034 BEGIN
2035 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
2036 (g_array_event(p_event_id).array_value_num('header_index'));
2037 IF l_acc_rev_flag IS NULL THEN
2038 l_acc_rev_flag := 'N';
2039 END IF;
2040 EXCEPTION
2041 WHEN OTHERS THEN
2042 l_acc_rev_flag := 'N';
2043 END;
2044 --
2045 IF (l_acc_rev_flag = 'Y') THEN
2046
2047 -- 4645092 ------------------------------------------------------------------------------
2048 -- To allow MPA report to determine if it should generate report process
2049 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
2050 ------------------------------------------------------------------------------------------
2051
2052 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
2053 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
2054
2055 --
2056 -- Update the line information that should be overwritten
2057 --
2058 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
2059 p_header_num => 1);
2060 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
2061
2062 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
2063
2064 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
2065 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
2066 END IF;
2067
2068 --
2069 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
2070 --
2071 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
2072 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
2073 ELSE
2074 ---------------------------------------------------------------------------------------------------
2075 -- 4262811a Switch Sign
2076 ---------------------------------------------------------------------------------------------------
2077 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
2078 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2079 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2080 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2081 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2082 -- 5132302
2083 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
2084 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2085
2086 END IF;
2087
2088 -- 4955764
2089 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2090 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
2091
2092
2093 XLA_AE_LINES_PKG.ValidateCurrentLine;
2094 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2095
2096 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2097 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
2098 ,p_balance_type_code => l_balance_type_code);
2099
2100 END IF;
2101
2102 -----------------------------------------------------------------------------------------
2103 -- 4262811 Multiperiod Accounting
2104 -----------------------------------------------------------------------------------------
2105 -- No MPA option is assigned.
2106
2107
2108 END IF;
2109 END IF;
2110 --
2111
2112 --
2113 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2114 trace
2115 (p_msg => 'END of AcctLineType_6'
2116 ,p_level => C_LEVEL_PROCEDURE
2117 ,p_module => l_log_module);
2118 END IF;
2119 --
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_00540_AAD_S_000014_PKG.AcctLineType_6');
2126 END AcctLineType_6;
2127 --
2128
2129 ---------------------------------------
2130 --
2131 -- PRIVATE FUNCTION
2132 -- AcctLineType_7
2133 --
2134 ---------------------------------------
2135 PROCEDURE AcctLineType_7 (
2136 p_application_id IN NUMBER
2137 ,p_event_id IN NUMBER
2138 ,p_calculate_acctd_flag IN VARCHAR2
2139 ,p_calculate_g_l_flag IN VARCHAR2
2140 ,p_actual_flag IN OUT VARCHAR2
2141 ,p_balance_type_code OUT VARCHAR2
2142 ,p_gain_or_loss_ref OUT VARCHAR2
2143
2144 --Contract Number
2145 , p_source_1 IN VARCHAR2
2146 --Contract Product Name
2150 --Accounting Line Type
2147 , p_source_2 IN VARCHAR2
2148 --Distribution Account
2149 , p_source_5 IN NUMBER
2151 , p_source_6 IN VARCHAR2
2152 , p_source_6_meaning IN VARCHAR2
2153 --Accounting Distribution Identifier
2154 , p_source_7 IN NUMBER
2155 --Distribution Type
2156 , p_source_8 IN VARCHAR2
2157 --Distribution Entered Amount
2158 , p_source_9 IN NUMBER
2159 --Transaction Currency Code
2160 , p_source_10 IN VARCHAR2
2161 --Transaction Currency Conversion Date
2162 , p_source_11 IN DATE
2163 --Transaction Currency Conversion Rate
2164 , p_source_12 IN NUMBER
2165 --Transaction Currency Conversion Type
2166 , p_source_13 IN VARCHAR2
2167 )
2168 IS
2169
2170 l_component_type VARCHAR2(80);
2171 l_component_code VARCHAR2(30);
2172 l_component_type_code VARCHAR2(1);
2173 l_component_appl_id INTEGER;
2174 l_amb_context_code VARCHAR2(30);
2175 l_entity_code VARCHAR2(30);
2176 l_event_class_code VARCHAR2(30);
2177 l_ae_header_id NUMBER;
2178 l_event_type_code VARCHAR2(30);
2179 l_line_definition_code VARCHAR2(30);
2180 l_line_definition_owner_code VARCHAR2(1);
2181 --
2182 -- adr variables
2183 l_segment VARCHAR2(30);
2184 l_ccid NUMBER;
2185 l_adr_transaction_coa_id NUMBER;
2186 l_adr_accounting_coa_id NUMBER;
2187 l_adr_flexfield_segment_code VARCHAR2(30);
2188 l_adr_flex_value_set_id NUMBER;
2189 l_adr_value_type_code VARCHAR2(30);
2190 l_adr_value_combination_id NUMBER;
2191 l_adr_value_segment_code VARCHAR2(30);
2192
2193 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
2194 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
2195 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
2196 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
2197
2198 -- 4262811 Variables ------------------------------------------------------------------------------------------
2199 l_entered_amt_idx NUMBER;
2200 l_accted_amt_idx NUMBER;
2201 l_acc_rev_flag VARCHAR2(1);
2202 l_accrual_line_num NUMBER;
2203 l_tmp_amt NUMBER;
2204 l_acc_rev_natural_side_code VARCHAR2(1);
2205
2206 l_num_entries NUMBER;
2207 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
2208 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
2209 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
2210 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
2211 l_recog_line_1 NUMBER;
2212 l_recog_line_2 NUMBER;
2213
2214 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
2215 l_bflow_applied_to_amt NUMBER; -- 5132302
2216 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
2217
2218 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
2219
2220 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
2221 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
2222
2223 ---------------------------------------------------------------------------------------------------------------
2224
2225
2226 --
2227 -- bulk performance
2228 --
2229 l_balance_type_code VARCHAR2(1);
2230 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
2231 l_log_module VARCHAR2(240);
2232
2233 --
2234 -- Upgrade strategy
2235 --
2236 l_actual_upg_option VARCHAR2(1);
2237 l_enc_upg_option VARCHAR2(1);
2238
2239 --
2240 BEGIN
2241 --
2242 IF g_log_enabled THEN
2243 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_7';
2244 END IF;
2245 --
2246 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2247
2248 trace
2249 (p_msg => 'BEGIN of AcctLineType_7'
2250 ,p_level => C_LEVEL_PROCEDURE
2251 ,p_module => l_log_module);
2252
2253 END IF;
2254 --
2255 l_component_type := 'AMB_JLT';
2256 l_component_code := 'OKL_ASSET_DISPOSITION_DR';
2257 l_component_type_code := 'S';
2258 l_component_appl_id := 540;
2259 l_amb_context_code := 'DEFAULT';
2260 l_entity_code := 'CONTRACTS';
2261 l_event_class_code := 'ASSET_DISPOSITION';
2262 l_event_type_code := 'ASSET_DISPOSITION_ALL';
2263 l_line_definition_owner_code := 'S';
2264 l_line_definition_code := 'OKL_ASSET_DISPOSION';
2265 --
2266 l_balance_type_code := 'A';
2267 l_segment := NULL;
2268 l_ccid := NULL;
2269 l_adr_transaction_coa_id := NULL;
2270 l_adr_accounting_coa_id := NULL;
2271 l_adr_flexfield_segment_code := NULL;
2272 l_adr_flex_value_set_id := NULL;
2273 l_adr_value_type_code := NULL;
2274 l_adr_value_combination_id := NULL;
2275 l_adr_value_segment_code := NULL;
2276
2277 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
2278 l_bflow_class_code := ''; -- 4219869 Business Flow
2279 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
2280 l_budgetary_control_flag := 'N';
2281
2282 l_bflow_applied_to_amt_idx := NULL; -- 5132302
2283 l_bflow_applied_to_amt := NULL; -- 5132302
2284 l_entered_amt_idx := NULL; -- 4262811
2285 l_accted_amt_idx := NULL; -- 4262811
2286 l_acc_rev_flag := NULL; -- 4262811
2290
2287 l_accrual_line_num := NULL; -- 4262811
2288 l_tmp_amt := NULL; -- 4262811
2289 --
2291 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
2292 l_balance_type_code <> 'B' THEN
2293 IF NVL(p_source_6,'
2294 ') = 'LEASE_DEBIT'
2295 THEN
2296
2297 --
2298 XLA_AE_LINES_PKG.SetNewLine;
2299
2300 p_balance_type_code := l_balance_type_code;
2301 -- set the flag so later we will know whether the gain loss line needs to be created
2302
2303 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
2304 p_actual_flag :='A';
2305 END IF;
2306
2307 --
2308 -- bulk performance
2309 --
2310 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
2311 p_header_num => 0); -- 4262811
2312 --
2313 -- set accounting line options
2314 --
2315 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
2316 p_natural_side_code => 'D'
2317 , p_gain_or_loss_flag => 'N'
2318 , p_gl_transfer_mode_code => 'S'
2319 , p_acct_entry_type_code => 'A'
2320 , p_switch_side_flag => 'Y'
2321 , p_merge_duplicate_code => 'N'
2322 );
2323 --
2324 l_acc_rev_natural_side_code := 'C'; -- 4262811
2325 --
2326 --
2327 -- set accounting line type info
2328 --
2329 xla_ae_lines_pkg.SetAcctLineType
2330 (p_component_type => l_component_type
2331 ,p_event_type_code => l_event_type_code
2332 ,p_line_definition_owner_code => l_line_definition_owner_code
2333 ,p_line_definition_code => l_line_definition_code
2334 ,p_accounting_line_code => l_component_code
2335 ,p_accounting_line_type_code => l_component_type_code
2336 ,p_accounting_line_appl_id => l_component_appl_id
2337 ,p_amb_context_code => l_amb_context_code
2338 ,p_entity_code => l_entity_code
2339 ,p_event_class_code => l_event_class_code);
2340 --
2341 -- set accounting class
2342 --
2343 xla_ae_lines_pkg.SetAcctClass(
2344 p_accounting_class_code => 'ASSET_DISPOSITION'
2345 , p_ae_header_id => l_ae_header_id
2346 );
2347
2348 --
2349 -- set rounding class
2350 --
2351 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2352 'ASSET_DISPOSITION';
2353
2354 --
2355 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2356 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2357 --
2358 -- bulk performance
2359 --
2360 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2361
2362 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2363 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2364
2365 -- 4955764
2366 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2367 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2368
2369 -- 4458381 Public Sector Enh
2370
2371 --
2372 -- set accounting attributes for the line type
2373 --
2374 l_entered_amt_idx := 3;
2375 l_accted_amt_idx := NULL;
2376 l_bflow_applied_to_amt_idx := NULL; -- 5132302
2377 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
2378 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
2379 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
2380 l_rec_acct_attrs.array_char_value(2) := p_source_8;
2381 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
2382 l_rec_acct_attrs.array_num_value(3) := p_source_9;
2383 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
2384 l_rec_acct_attrs.array_char_value(4) := p_source_10;
2385 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
2386 l_rec_acct_attrs.array_date_value(5) := p_source_11;
2387 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
2388 l_rec_acct_attrs.array_num_value(6) := p_source_12;
2389 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
2390 l_rec_acct_attrs.array_char_value(7) := p_source_13;
2391
2392 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2393 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2394
2395 ---------------------------------------------------------------------------------------------------------------
2396 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
2397 ---------------------------------------------------------------------------------------------------------------
2398 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
2399
2400 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2401 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2402
2403 IF xla_accounting_cache_pkg.GetValueChar
2404 (p_source_code => 'LEDGER_CATEGORY_CODE'
2405 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
2406 AND l_bflow_method_code = 'PRIOR_ENTRY'
2407 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
2408 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
2409 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
2410 )
2411 THEN
2415 ,p_balance_type => l_balance_type_code);
2412 xla_ae_lines_pkg.BflowUpgEntry
2413 (p_business_method_code => l_bflow_method_code
2414 ,p_business_class_code => l_bflow_class_code
2416 ELSE
2417 NULL;
2418 -- No business flow processing for business flow method of NONE.
2419 END IF;
2420
2421 --
2422 -- call analytical criteria
2423 --
2424
2425 --
2426 -- call description
2427 --
2428
2429 xla_ae_lines_pkg.SetLineDescription(
2430 p_ae_header_id => l_ae_header_id
2431 ,p_description => Description_1 (
2432 p_application_id => p_application_id
2433 , p_ae_header_id => l_ae_header_id
2434 , p_source_1 => p_source_1
2435 , p_source_2 => p_source_2
2436 )
2437 );
2438
2439
2440 --
2441 -- call ADRs
2442 -- Bug 4922099
2443 --
2444 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2445 (NVL(l_actual_upg_option, 'N') = 'O') OR
2446 (NVL(l_enc_upg_option, 'N') = 'O')
2447 )
2448 THEN
2449 NULL;
2450 --
2451 --
2452
2453 l_ccid := AcctDerRule_3(
2454 p_application_id => p_application_id
2455 , p_ae_header_id => l_ae_header_id
2456 , p_source_5 => p_source_5
2457 , x_transaction_coa_id => l_adr_transaction_coa_id
2458 , x_accounting_coa_id => l_adr_accounting_coa_id
2459 , x_value_type_code => l_adr_value_type_code
2460 , p_side => 'NA'
2461 );
2462
2463 xla_ae_lines_pkg.set_ccid(
2464 p_code_combination_id => l_ccid
2465 , p_value_type_code => l_adr_value_type_code
2466 , p_transaction_coa_id => l_adr_transaction_coa_id
2467 , p_accounting_coa_id => l_adr_accounting_coa_id
2468 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
2469 , p_adr_type_code => 'S'
2470 , p_component_type => l_component_type
2471 , p_component_code => l_component_code
2472 , p_component_type_code => l_component_type_code
2473 , p_component_appl_id => l_component_appl_id
2474 , p_amb_context_code => l_amb_context_code
2475 , p_side => 'NA'
2476 );
2477
2478
2479 --
2480 --
2481 END IF;
2482 --
2483 -- Bug 4922099
2484 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
2485 (NVL(l_enc_upg_option, 'N') = 'O')
2486 ) AND
2487 (l_bflow_method_code = 'PRIOR_ENTRY')
2488 )
2489 THEN
2490 IF
2491 --
2492 1 = 2
2493 --
2494 THEN
2495 xla_accounting_err_pkg.build_message
2496 (p_appli_s_name => 'XLA'
2497 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2498 ,p_token_1 => 'LINE_NUMBER'
2499 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
2500 ,p_token_2 => 'LINE_TYPE_NAME'
2501 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
2502 l_component_type
2503 ,l_component_code
2504 ,l_component_type_code
2505 ,l_component_appl_id
2506 ,l_amb_context_code
2507 ,l_entity_code
2508 ,l_event_class_code
2509 )
2510 ,p_token_3 => 'OWNER'
2511 ,p_value_3 => xla_lookups_pkg.get_meaning(
2512 p_lookup_type => 'XLA_OWNER_TYPE'
2513 ,p_lookup_code => l_component_type_code
2514 )
2515 ,p_token_4 => 'PRODUCT_NAME'
2516 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
2517 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2518 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2519 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2520 ,p_ae_header_id => NULL
2521 );
2522
2523 IF (C_LEVEL_ERROR>= g_log_level) THEN
2524 trace
2525 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2526 ,p_level => C_LEVEL_ERROR
2527 ,p_module => l_log_module);
2528 END IF;
2529 END IF;
2530 END IF;
2531 --
2532 --
2533 ------------------------------------------------------------------------------------------------
2534 -- 4219869 Business Flow
2535 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
2536 -- Prior Entry. Currently, the following code is always generated.
2540 ------------------------------------------------------------------------------------
2537 ------------------------------------------------------------------------------------------------
2538 XLA_AE_LINES_PKG.ValidateCurrentLine;
2539
2541 -- 4219869 Business Flow
2542 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
2543 ------------------------------------------------------------------------------------
2544 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2545
2546 ----------------------------------------------------------------------------------
2547 -- 4219869 Business Flow
2548 -- Update journal entry status -- Need to generate this within IF <condition>
2549 ----------------------------------------------------------------------------------
2550 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2551 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
2552 ,p_balance_type_code => l_balance_type_code
2553 );
2554
2555 -------------------------------------------------------------------------------------------
2556 -- 4262811 - Generate the Accrual Reversal lines
2557 -------------------------------------------------------------------------------------------
2558 BEGIN
2559 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
2560 (g_array_event(p_event_id).array_value_num('header_index'));
2561 IF l_acc_rev_flag IS NULL THEN
2562 l_acc_rev_flag := 'N';
2563 END IF;
2564 EXCEPTION
2565 WHEN OTHERS THEN
2566 l_acc_rev_flag := 'N';
2567 END;
2568 --
2569 IF (l_acc_rev_flag = 'Y') THEN
2570
2571 -- 4645092 ------------------------------------------------------------------------------
2572 -- To allow MPA report to determine if it should generate report process
2573 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
2574 ------------------------------------------------------------------------------------------
2575
2576 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
2577 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
2578
2579 --
2580 -- Update the line information that should be overwritten
2581 --
2582 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
2583 p_header_num => 1);
2584 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
2585
2586 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
2587
2588 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
2589 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
2590 END IF;
2591
2592 --
2593 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
2594 --
2595 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
2596 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
2597 ELSE
2598 ---------------------------------------------------------------------------------------------------
2599 -- 4262811a Switch Sign
2600 ---------------------------------------------------------------------------------------------------
2601 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
2602 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2603 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2604 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2605 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2606 -- 5132302
2607 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
2608 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2609
2610 END IF;
2611
2612 -- 4955764
2613 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2614 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
2615
2616
2617 XLA_AE_LINES_PKG.ValidateCurrentLine;
2618 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2619
2620 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2621 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
2622 ,p_balance_type_code => l_balance_type_code);
2623
2624 END IF;
2625
2626 -----------------------------------------------------------------------------------------
2627 -- 4262811 Multiperiod Accounting
2628 -----------------------------------------------------------------------------------------
2629 -- No MPA option is assigned.
2630
2631
2632 END IF;
2633 END IF;
2634 --
2635
2636 --
2637 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2638 trace
2639 (p_msg => 'END of AcctLineType_7'
2640 ,p_level => C_LEVEL_PROCEDURE
2641 ,p_module => l_log_module);
2642 END IF;
2643 --
2644 EXCEPTION
2645 WHEN xla_exceptions_pkg.application_exception THEN
2646 RAISE;
2647 WHEN OTHERS THEN
2648 xla_exceptions_pkg.raise_message
2649 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_7');
2650 END AcctLineType_7;
2651 --
2652
2653 ---------------------------------------
2654 --
2655 -- PRIVATE FUNCTION
2656 -- AcctLineType_8
2657 --
2658 ---------------------------------------
2659 PROCEDURE AcctLineType_8 (
2663 ,p_calculate_g_l_flag IN VARCHAR2
2660 p_application_id IN NUMBER
2661 ,p_event_id IN NUMBER
2662 ,p_calculate_acctd_flag IN VARCHAR2
2664 ,p_actual_flag IN OUT VARCHAR2
2665 ,p_balance_type_code OUT VARCHAR2
2666 ,p_gain_or_loss_ref OUT VARCHAR2
2667
2668 --Contract Number
2669 , p_source_1 IN VARCHAR2
2670 --Contract Product Name
2671 , p_source_2 IN VARCHAR2
2672 --Distribution Account
2673 , p_source_5 IN NUMBER
2674 --Accounting Line Type
2675 , p_source_6 IN VARCHAR2
2676 , p_source_6_meaning IN VARCHAR2
2677 --Accounting Distribution Identifier
2678 , p_source_7 IN NUMBER
2679 --Distribution Type
2680 , p_source_8 IN VARCHAR2
2681 --Distribution Entered Amount
2682 , p_source_9 IN NUMBER
2683 --Transaction Currency Code
2684 , p_source_10 IN VARCHAR2
2685 --Transaction Currency Conversion Date
2686 , p_source_11 IN DATE
2687 --Transaction Currency Conversion Rate
2688 , p_source_12 IN NUMBER
2689 --Transaction Currency Conversion Type
2690 , p_source_13 IN VARCHAR2
2691 )
2692 IS
2693
2694 l_component_type VARCHAR2(80);
2695 l_component_code VARCHAR2(30);
2696 l_component_type_code VARCHAR2(1);
2697 l_component_appl_id INTEGER;
2698 l_amb_context_code VARCHAR2(30);
2699 l_entity_code VARCHAR2(30);
2700 l_event_class_code VARCHAR2(30);
2701 l_ae_header_id NUMBER;
2702 l_event_type_code VARCHAR2(30);
2703 l_line_definition_code VARCHAR2(30);
2704 l_line_definition_owner_code VARCHAR2(1);
2705 --
2706 -- adr variables
2707 l_segment VARCHAR2(30);
2708 l_ccid NUMBER;
2709 l_adr_transaction_coa_id NUMBER;
2710 l_adr_accounting_coa_id NUMBER;
2711 l_adr_flexfield_segment_code VARCHAR2(30);
2712 l_adr_flex_value_set_id NUMBER;
2713 l_adr_value_type_code VARCHAR2(30);
2714 l_adr_value_combination_id NUMBER;
2715 l_adr_value_segment_code VARCHAR2(30);
2716
2717 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
2718 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
2719 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
2720 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
2721
2722 -- 4262811 Variables ------------------------------------------------------------------------------------------
2723 l_entered_amt_idx NUMBER;
2724 l_accted_amt_idx NUMBER;
2725 l_acc_rev_flag VARCHAR2(1);
2726 l_accrual_line_num NUMBER;
2727 l_tmp_amt NUMBER;
2728 l_acc_rev_natural_side_code VARCHAR2(1);
2729
2730 l_num_entries NUMBER;
2731 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
2732 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
2733 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
2734 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
2735 l_recog_line_1 NUMBER;
2736 l_recog_line_2 NUMBER;
2737
2738 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
2739 l_bflow_applied_to_amt NUMBER; -- 5132302
2740 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
2741
2742 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
2743
2744 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
2745 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
2746
2747 ---------------------------------------------------------------------------------------------------------------
2748
2749
2750 --
2751 -- bulk performance
2752 --
2753 l_balance_type_code VARCHAR2(1);
2754 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
2755 l_log_module VARCHAR2(240);
2756
2757 --
2758 -- Upgrade strategy
2759 --
2760 l_actual_upg_option VARCHAR2(1);
2761 l_enc_upg_option VARCHAR2(1);
2762
2763 --
2764 BEGIN
2765 --
2766 IF g_log_enabled THEN
2767 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_8';
2768 END IF;
2769 --
2770 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2771
2772 trace
2773 (p_msg => 'BEGIN of AcctLineType_8'
2774 ,p_level => C_LEVEL_PROCEDURE
2775 ,p_module => l_log_module);
2776
2777 END IF;
2778 --
2779 l_component_type := 'AMB_JLT';
2780 l_component_code := 'OKL_BOOKING_CR';
2781 l_component_type_code := 'S';
2782 l_component_appl_id := 540;
2783 l_amb_context_code := 'DEFAULT';
2784 l_entity_code := 'CONTRACTS';
2785 l_event_class_code := 'BOOKING';
2786 l_event_type_code := 'BOOKING_ALL';
2787 l_line_definition_owner_code := 'S';
2788 l_line_definition_code := 'OKL_BOOKING';
2789 --
2790 l_balance_type_code := 'A';
2791 l_segment := NULL;
2792 l_ccid := NULL;
2793 l_adr_transaction_coa_id := NULL;
2794 l_adr_accounting_coa_id := NULL;
2795 l_adr_flexfield_segment_code := NULL;
2796 l_adr_flex_value_set_id := NULL;
2797 l_adr_value_type_code := NULL;
2798 l_adr_value_combination_id := NULL;
2799 l_adr_value_segment_code := NULL;
2800
2801 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
2802 l_bflow_class_code := ''; -- 4219869 Business Flow
2806 l_bflow_applied_to_amt_idx := NULL; -- 5132302
2803 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
2804 l_budgetary_control_flag := 'N';
2805
2807 l_bflow_applied_to_amt := NULL; -- 5132302
2808 l_entered_amt_idx := NULL; -- 4262811
2809 l_accted_amt_idx := NULL; -- 4262811
2810 l_acc_rev_flag := NULL; -- 4262811
2811 l_accrual_line_num := NULL; -- 4262811
2812 l_tmp_amt := NULL; -- 4262811
2813 --
2814
2815 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
2816 l_balance_type_code <> 'B' THEN
2817 IF NVL(p_source_6,'
2818 ') = 'LEASE_CREDIT'
2819 THEN
2820
2821 --
2822 XLA_AE_LINES_PKG.SetNewLine;
2823
2824 p_balance_type_code := l_balance_type_code;
2825 -- set the flag so later we will know whether the gain loss line needs to be created
2826
2827 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
2828 p_actual_flag :='A';
2829 END IF;
2830
2831 --
2832 -- bulk performance
2833 --
2834 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
2835 p_header_num => 0); -- 4262811
2836 --
2837 -- set accounting line options
2838 --
2839 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
2840 p_natural_side_code => 'C'
2841 , p_gain_or_loss_flag => 'N'
2842 , p_gl_transfer_mode_code => 'S'
2843 , p_acct_entry_type_code => 'A'
2844 , p_switch_side_flag => 'Y'
2845 , p_merge_duplicate_code => 'N'
2846 );
2847 --
2848 l_acc_rev_natural_side_code := 'D'; -- 4262811
2849 --
2850 --
2851 -- set accounting line type info
2852 --
2853 xla_ae_lines_pkg.SetAcctLineType
2854 (p_component_type => l_component_type
2855 ,p_event_type_code => l_event_type_code
2856 ,p_line_definition_owner_code => l_line_definition_owner_code
2857 ,p_line_definition_code => l_line_definition_code
2858 ,p_accounting_line_code => l_component_code
2859 ,p_accounting_line_type_code => l_component_type_code
2860 ,p_accounting_line_appl_id => l_component_appl_id
2861 ,p_amb_context_code => l_amb_context_code
2862 ,p_entity_code => l_entity_code
2863 ,p_event_class_code => l_event_class_code);
2864 --
2865 -- set accounting class
2866 --
2867 xla_ae_lines_pkg.SetAcctClass(
2868 p_accounting_class_code => 'BOOKING'
2869 , p_ae_header_id => l_ae_header_id
2870 );
2871
2872 --
2873 -- set rounding class
2874 --
2875 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2876 'BOOKING';
2877
2878 --
2879 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2880 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2881 --
2882 -- bulk performance
2883 --
2884 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2885
2886 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2887 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2888
2889 -- 4955764
2890 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2891 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2892
2893 -- 4458381 Public Sector Enh
2894
2895 --
2896 -- set accounting attributes for the line type
2897 --
2898 l_entered_amt_idx := 3;
2899 l_accted_amt_idx := NULL;
2900 l_bflow_applied_to_amt_idx := NULL; -- 5132302
2901 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
2902 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
2903 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
2904 l_rec_acct_attrs.array_char_value(2) := p_source_8;
2905 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
2906 l_rec_acct_attrs.array_num_value(3) := p_source_9;
2907 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
2908 l_rec_acct_attrs.array_char_value(4) := p_source_10;
2909 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
2910 l_rec_acct_attrs.array_date_value(5) := p_source_11;
2911 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
2912 l_rec_acct_attrs.array_num_value(6) := p_source_12;
2913 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
2914 l_rec_acct_attrs.array_char_value(7) := p_source_13;
2915
2916 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2917 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2918
2919 ---------------------------------------------------------------------------------------------------------------
2920 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
2921 ---------------------------------------------------------------------------------------------------------------
2922 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
2923
2924 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2925 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2926
2927 IF xla_accounting_cache_pkg.GetValueChar
2931 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
2928 (p_source_code => 'LEDGER_CATEGORY_CODE'
2929 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
2930 AND l_bflow_method_code = 'PRIOR_ENTRY'
2932 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
2933 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
2934 )
2935 THEN
2936 xla_ae_lines_pkg.BflowUpgEntry
2937 (p_business_method_code => l_bflow_method_code
2938 ,p_business_class_code => l_bflow_class_code
2939 ,p_balance_type => l_balance_type_code);
2940 ELSE
2941 NULL;
2942 -- No business flow processing for business flow method of NONE.
2943 END IF;
2944
2945 --
2946 -- call analytical criteria
2947 --
2948
2949 --
2950 -- call description
2951 --
2952
2953 xla_ae_lines_pkg.SetLineDescription(
2954 p_ae_header_id => l_ae_header_id
2955 ,p_description => Description_1 (
2956 p_application_id => p_application_id
2957 , p_ae_header_id => l_ae_header_id
2958 , p_source_1 => p_source_1
2959 , p_source_2 => p_source_2
2960 )
2961 );
2962
2963
2964 --
2965 -- call ADRs
2966 -- Bug 4922099
2967 --
2968 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2969 (NVL(l_actual_upg_option, 'N') = 'O') OR
2970 (NVL(l_enc_upg_option, 'N') = 'O')
2971 )
2972 THEN
2973 NULL;
2974 --
2975 --
2976
2977 l_ccid := AcctDerRule_3(
2978 p_application_id => p_application_id
2979 , p_ae_header_id => l_ae_header_id
2980 , p_source_5 => p_source_5
2981 , x_transaction_coa_id => l_adr_transaction_coa_id
2982 , x_accounting_coa_id => l_adr_accounting_coa_id
2983 , x_value_type_code => l_adr_value_type_code
2984 , p_side => 'NA'
2985 );
2986
2987 xla_ae_lines_pkg.set_ccid(
2988 p_code_combination_id => l_ccid
2989 , p_value_type_code => l_adr_value_type_code
2990 , p_transaction_coa_id => l_adr_transaction_coa_id
2991 , p_accounting_coa_id => l_adr_accounting_coa_id
2992 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
2993 , p_adr_type_code => 'S'
2994 , p_component_type => l_component_type
2995 , p_component_code => l_component_code
2996 , p_component_type_code => l_component_type_code
2997 , p_component_appl_id => l_component_appl_id
2998 , p_amb_context_code => l_amb_context_code
2999 , p_side => 'NA'
3000 );
3001
3002
3003 --
3004 --
3005 END IF;
3006 --
3007 -- Bug 4922099
3008 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
3009 (NVL(l_enc_upg_option, 'N') = 'O')
3010 ) AND
3011 (l_bflow_method_code = 'PRIOR_ENTRY')
3012 )
3013 THEN
3014 IF
3015 --
3016 1 = 2
3017 --
3018 THEN
3019 xla_accounting_err_pkg.build_message
3020 (p_appli_s_name => 'XLA'
3021 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3022 ,p_token_1 => 'LINE_NUMBER'
3023 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
3024 ,p_token_2 => 'LINE_TYPE_NAME'
3025 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
3026 l_component_type
3027 ,l_component_code
3028 ,l_component_type_code
3029 ,l_component_appl_id
3030 ,l_amb_context_code
3031 ,l_entity_code
3032 ,l_event_class_code
3033 )
3034 ,p_token_3 => 'OWNER'
3035 ,p_value_3 => xla_lookups_pkg.get_meaning(
3036 p_lookup_type => 'XLA_OWNER_TYPE'
3037 ,p_lookup_code => l_component_type_code
3038 )
3039 ,p_token_4 => 'PRODUCT_NAME'
3040 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
3041 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3042 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
3043 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3044 ,p_ae_header_id => NULL
3045 );
3046
3047 IF (C_LEVEL_ERROR>= g_log_level) THEN
3048 trace
3049 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3050 ,p_level => C_LEVEL_ERROR
3051 ,p_module => l_log_module);
3055 --
3052 END IF;
3053 END IF;
3054 END IF;
3056 --
3057 ------------------------------------------------------------------------------------------------
3058 -- 4219869 Business Flow
3059 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
3060 -- Prior Entry. Currently, the following code is always generated.
3061 ------------------------------------------------------------------------------------------------
3062 XLA_AE_LINES_PKG.ValidateCurrentLine;
3063
3064 ------------------------------------------------------------------------------------
3065 -- 4219869 Business Flow
3066 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
3067 ------------------------------------------------------------------------------------
3068 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3069
3070 ----------------------------------------------------------------------------------
3071 -- 4219869 Business Flow
3072 -- Update journal entry status -- Need to generate this within IF <condition>
3073 ----------------------------------------------------------------------------------
3074 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3075 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
3076 ,p_balance_type_code => l_balance_type_code
3077 );
3078
3079 -------------------------------------------------------------------------------------------
3080 -- 4262811 - Generate the Accrual Reversal lines
3081 -------------------------------------------------------------------------------------------
3082 BEGIN
3083 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3084 (g_array_event(p_event_id).array_value_num('header_index'));
3085 IF l_acc_rev_flag IS NULL THEN
3086 l_acc_rev_flag := 'N';
3087 END IF;
3088 EXCEPTION
3089 WHEN OTHERS THEN
3090 l_acc_rev_flag := 'N';
3091 END;
3092 --
3093 IF (l_acc_rev_flag = 'Y') THEN
3094
3095 -- 4645092 ------------------------------------------------------------------------------
3096 -- To allow MPA report to determine if it should generate report process
3097 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3098 ------------------------------------------------------------------------------------------
3099
3100 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3101 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3102
3103 --
3104 -- Update the line information that should be overwritten
3105 --
3106 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3107 p_header_num => 1);
3108 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
3109
3110 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3111
3112 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
3113 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3114 END IF;
3115
3116 --
3117 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3118 --
3119 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3120 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
3121 ELSE
3122 ---------------------------------------------------------------------------------------------------
3123 -- 4262811a Switch Sign
3124 ---------------------------------------------------------------------------------------------------
3125 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
3126 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3127 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3128 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3129 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3130 -- 5132302
3131 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3132 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3133
3134 END IF;
3135
3136 -- 4955764
3137 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3138 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3139
3140
3141 XLA_AE_LINES_PKG.ValidateCurrentLine;
3142 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3143
3144 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3145 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3146 ,p_balance_type_code => l_balance_type_code);
3147
3148 END IF;
3149
3150 -----------------------------------------------------------------------------------------
3151 -- 4262811 Multiperiod Accounting
3152 -----------------------------------------------------------------------------------------
3153 -- No MPA option is assigned.
3154
3155
3156 END IF;
3157 END IF;
3158 --
3159
3160 --
3161 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3162 trace
3163 (p_msg => 'END of AcctLineType_8'
3164 ,p_level => C_LEVEL_PROCEDURE
3165 ,p_module => l_log_module);
3166 END IF;
3167 --
3168 EXCEPTION
3169 WHEN xla_exceptions_pkg.application_exception THEN
3170 RAISE;
3174 END AcctLineType_8;
3171 WHEN OTHERS THEN
3172 xla_exceptions_pkg.raise_message
3173 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_8');
3175 --
3176
3177 ---------------------------------------
3178 --
3179 -- PRIVATE FUNCTION
3180 -- AcctLineType_9
3181 --
3182 ---------------------------------------
3183 PROCEDURE AcctLineType_9 (
3184 p_application_id IN NUMBER
3185 ,p_event_id IN NUMBER
3186 ,p_calculate_acctd_flag IN VARCHAR2
3187 ,p_calculate_g_l_flag IN VARCHAR2
3188 ,p_actual_flag IN OUT VARCHAR2
3189 ,p_balance_type_code OUT VARCHAR2
3190 ,p_gain_or_loss_ref OUT VARCHAR2
3191
3192 --Contract Number
3193 , p_source_1 IN VARCHAR2
3194 --Contract Product Name
3195 , p_source_2 IN VARCHAR2
3196 --Distribution Account
3197 , p_source_5 IN NUMBER
3198 --Accounting Line Type
3199 , p_source_6 IN VARCHAR2
3200 , p_source_6_meaning IN VARCHAR2
3201 --Accounting Distribution Identifier
3202 , p_source_7 IN NUMBER
3203 --Distribution Type
3204 , p_source_8 IN VARCHAR2
3205 --Distribution Entered Amount
3206 , p_source_9 IN NUMBER
3207 --Transaction Currency Code
3208 , p_source_10 IN VARCHAR2
3209 --Transaction Currency Conversion Date
3210 , p_source_11 IN DATE
3211 --Transaction Currency Conversion Rate
3212 , p_source_12 IN NUMBER
3213 --Transaction Currency Conversion Type
3214 , p_source_13 IN VARCHAR2
3215 )
3216 IS
3217
3218 l_component_type VARCHAR2(80);
3219 l_component_code VARCHAR2(30);
3220 l_component_type_code VARCHAR2(1);
3221 l_component_appl_id INTEGER;
3222 l_amb_context_code VARCHAR2(30);
3223 l_entity_code VARCHAR2(30);
3224 l_event_class_code VARCHAR2(30);
3225 l_ae_header_id NUMBER;
3226 l_event_type_code VARCHAR2(30);
3227 l_line_definition_code VARCHAR2(30);
3228 l_line_definition_owner_code VARCHAR2(1);
3229 --
3230 -- adr variables
3231 l_segment VARCHAR2(30);
3232 l_ccid NUMBER;
3233 l_adr_transaction_coa_id NUMBER;
3234 l_adr_accounting_coa_id NUMBER;
3235 l_adr_flexfield_segment_code VARCHAR2(30);
3236 l_adr_flex_value_set_id NUMBER;
3237 l_adr_value_type_code VARCHAR2(30);
3238 l_adr_value_combination_id NUMBER;
3239 l_adr_value_segment_code VARCHAR2(30);
3240
3241 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
3242 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
3243 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
3244 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
3245
3246 -- 4262811 Variables ------------------------------------------------------------------------------------------
3247 l_entered_amt_idx NUMBER;
3248 l_accted_amt_idx NUMBER;
3249 l_acc_rev_flag VARCHAR2(1);
3250 l_accrual_line_num NUMBER;
3251 l_tmp_amt NUMBER;
3252 l_acc_rev_natural_side_code VARCHAR2(1);
3253
3254 l_num_entries NUMBER;
3255 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
3256 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
3257 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
3258 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
3259 l_recog_line_1 NUMBER;
3260 l_recog_line_2 NUMBER;
3261
3262 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
3263 l_bflow_applied_to_amt NUMBER; -- 5132302
3264 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
3265
3266 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3267
3268 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
3269 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
3270
3271 ---------------------------------------------------------------------------------------------------------------
3272
3273
3274 --
3275 -- bulk performance
3276 --
3277 l_balance_type_code VARCHAR2(1);
3278 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
3279 l_log_module VARCHAR2(240);
3280
3281 --
3282 -- Upgrade strategy
3283 --
3284 l_actual_upg_option VARCHAR2(1);
3285 l_enc_upg_option VARCHAR2(1);
3286
3287 --
3288 BEGIN
3289 --
3290 IF g_log_enabled THEN
3291 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_9';
3292 END IF;
3293 --
3294 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3295
3296 trace
3297 (p_msg => 'BEGIN of AcctLineType_9'
3298 ,p_level => C_LEVEL_PROCEDURE
3299 ,p_module => l_log_module);
3300
3301 END IF;
3302 --
3303 l_component_type := 'AMB_JLT';
3304 l_component_code := 'OKL_BOOKING_DR';
3305 l_component_type_code := 'S';
3306 l_component_appl_id := 540;
3307 l_amb_context_code := 'DEFAULT';
3308 l_entity_code := 'CONTRACTS';
3309 l_event_class_code := 'BOOKING';
3310 l_event_type_code := 'BOOKING_ALL';
3311 l_line_definition_owner_code := 'S';
3312 l_line_definition_code := 'OKL_BOOKING';
3313 --
3314 l_balance_type_code := 'A';
3315 l_segment := NULL;
3316 l_ccid := NULL;
3317 l_adr_transaction_coa_id := NULL;
3321 l_adr_value_type_code := NULL;
3318 l_adr_accounting_coa_id := NULL;
3319 l_adr_flexfield_segment_code := NULL;
3320 l_adr_flex_value_set_id := NULL;
3322 l_adr_value_combination_id := NULL;
3323 l_adr_value_segment_code := NULL;
3324
3325 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
3326 l_bflow_class_code := ''; -- 4219869 Business Flow
3327 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
3328 l_budgetary_control_flag := 'N';
3329
3330 l_bflow_applied_to_amt_idx := NULL; -- 5132302
3331 l_bflow_applied_to_amt := NULL; -- 5132302
3332 l_entered_amt_idx := NULL; -- 4262811
3333 l_accted_amt_idx := NULL; -- 4262811
3334 l_acc_rev_flag := NULL; -- 4262811
3335 l_accrual_line_num := NULL; -- 4262811
3336 l_tmp_amt := NULL; -- 4262811
3337 --
3338
3339 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3340 l_balance_type_code <> 'B' THEN
3341 IF NVL(p_source_6,'
3342 ') = 'LEASE_DEBIT'
3343 THEN
3344
3345 --
3346 XLA_AE_LINES_PKG.SetNewLine;
3347
3348 p_balance_type_code := l_balance_type_code;
3349 -- set the flag so later we will know whether the gain loss line needs to be created
3350
3351 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3352 p_actual_flag :='A';
3353 END IF;
3354
3355 --
3356 -- bulk performance
3357 --
3358 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3359 p_header_num => 0); -- 4262811
3360 --
3361 -- set accounting line options
3362 --
3363 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3364 p_natural_side_code => 'D'
3365 , p_gain_or_loss_flag => 'N'
3366 , p_gl_transfer_mode_code => 'S'
3367 , p_acct_entry_type_code => 'A'
3368 , p_switch_side_flag => 'Y'
3369 , p_merge_duplicate_code => 'N'
3370 );
3371 --
3372 l_acc_rev_natural_side_code := 'C'; -- 4262811
3373 --
3374 --
3375 -- set accounting line type info
3376 --
3377 xla_ae_lines_pkg.SetAcctLineType
3378 (p_component_type => l_component_type
3379 ,p_event_type_code => l_event_type_code
3380 ,p_line_definition_owner_code => l_line_definition_owner_code
3381 ,p_line_definition_code => l_line_definition_code
3382 ,p_accounting_line_code => l_component_code
3383 ,p_accounting_line_type_code => l_component_type_code
3384 ,p_accounting_line_appl_id => l_component_appl_id
3385 ,p_amb_context_code => l_amb_context_code
3386 ,p_entity_code => l_entity_code
3387 ,p_event_class_code => l_event_class_code);
3388 --
3389 -- set accounting class
3390 --
3391 xla_ae_lines_pkg.SetAcctClass(
3392 p_accounting_class_code => 'BOOKING'
3393 , p_ae_header_id => l_ae_header_id
3394 );
3395
3396 --
3397 -- set rounding class
3398 --
3399 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3400 'BOOKING';
3401
3402 --
3403 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3404 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3405 --
3406 -- bulk performance
3407 --
3408 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3409
3410 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3411 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3412
3413 -- 4955764
3414 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3415 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3416
3417 -- 4458381 Public Sector Enh
3418
3419 --
3420 -- set accounting attributes for the line type
3421 --
3422 l_entered_amt_idx := 3;
3423 l_accted_amt_idx := NULL;
3424 l_bflow_applied_to_amt_idx := NULL; -- 5132302
3425 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
3426 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
3427 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
3428 l_rec_acct_attrs.array_char_value(2) := p_source_8;
3429 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
3430 l_rec_acct_attrs.array_num_value(3) := p_source_9;
3431 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
3432 l_rec_acct_attrs.array_char_value(4) := p_source_10;
3433 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
3434 l_rec_acct_attrs.array_date_value(5) := p_source_11;
3435 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
3436 l_rec_acct_attrs.array_num_value(6) := p_source_12;
3437 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
3438 l_rec_acct_attrs.array_char_value(7) := p_source_13;
3439
3440 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3441 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3442
3443 ---------------------------------------------------------------------------------------------------------------
3444 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3445 ---------------------------------------------------------------------------------------------------------------
3449 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3446 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3447
3448 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3450
3451 IF xla_accounting_cache_pkg.GetValueChar
3452 (p_source_code => 'LEDGER_CATEGORY_CODE'
3453 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3454 AND l_bflow_method_code = 'PRIOR_ENTRY'
3455 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3456 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3457 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3458 )
3459 THEN
3460 xla_ae_lines_pkg.BflowUpgEntry
3461 (p_business_method_code => l_bflow_method_code
3462 ,p_business_class_code => l_bflow_class_code
3463 ,p_balance_type => l_balance_type_code);
3464 ELSE
3465 NULL;
3466 -- No business flow processing for business flow method of NONE.
3467 END IF;
3468
3469 --
3470 -- call analytical criteria
3471 --
3472
3473 --
3474 -- call description
3475 --
3476
3477 xla_ae_lines_pkg.SetLineDescription(
3478 p_ae_header_id => l_ae_header_id
3479 ,p_description => Description_1 (
3480 p_application_id => p_application_id
3481 , p_ae_header_id => l_ae_header_id
3482 , p_source_1 => p_source_1
3483 , p_source_2 => p_source_2
3484 )
3485 );
3486
3487
3488 --
3489 -- call ADRs
3490 -- Bug 4922099
3491 --
3492 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3493 (NVL(l_actual_upg_option, 'N') = 'O') OR
3494 (NVL(l_enc_upg_option, 'N') = 'O')
3495 )
3496 THEN
3497 NULL;
3498 --
3499 --
3500
3501 l_ccid := AcctDerRule_3(
3502 p_application_id => p_application_id
3503 , p_ae_header_id => l_ae_header_id
3504 , p_source_5 => p_source_5
3505 , x_transaction_coa_id => l_adr_transaction_coa_id
3506 , x_accounting_coa_id => l_adr_accounting_coa_id
3507 , x_value_type_code => l_adr_value_type_code
3508 , p_side => 'NA'
3509 );
3510
3511 xla_ae_lines_pkg.set_ccid(
3512 p_code_combination_id => l_ccid
3513 , p_value_type_code => l_adr_value_type_code
3514 , p_transaction_coa_id => l_adr_transaction_coa_id
3515 , p_accounting_coa_id => l_adr_accounting_coa_id
3516 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
3517 , p_adr_type_code => 'S'
3518 , p_component_type => l_component_type
3519 , p_component_code => l_component_code
3520 , p_component_type_code => l_component_type_code
3521 , p_component_appl_id => l_component_appl_id
3522 , p_amb_context_code => l_amb_context_code
3523 , p_side => 'NA'
3524 );
3525
3526
3527 --
3528 --
3529 END IF;
3530 --
3531 -- Bug 4922099
3532 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
3533 (NVL(l_enc_upg_option, 'N') = 'O')
3534 ) AND
3535 (l_bflow_method_code = 'PRIOR_ENTRY')
3536 )
3537 THEN
3538 IF
3539 --
3540 1 = 2
3541 --
3542 THEN
3543 xla_accounting_err_pkg.build_message
3544 (p_appli_s_name => 'XLA'
3545 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3546 ,p_token_1 => 'LINE_NUMBER'
3547 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
3548 ,p_token_2 => 'LINE_TYPE_NAME'
3549 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
3550 l_component_type
3551 ,l_component_code
3552 ,l_component_type_code
3553 ,l_component_appl_id
3554 ,l_amb_context_code
3555 ,l_entity_code
3556 ,l_event_class_code
3557 )
3558 ,p_token_3 => 'OWNER'
3559 ,p_value_3 => xla_lookups_pkg.get_meaning(
3560 p_lookup_type => 'XLA_OWNER_TYPE'
3561 ,p_lookup_code => l_component_type_code
3562 )
3563 ,p_token_4 => 'PRODUCT_NAME'
3564 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
3565 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3566 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
3567 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3571 IF (C_LEVEL_ERROR>= g_log_level) THEN
3568 ,p_ae_header_id => NULL
3569 );
3570
3572 trace
3573 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3574 ,p_level => C_LEVEL_ERROR
3575 ,p_module => l_log_module);
3576 END IF;
3577 END IF;
3578 END IF;
3579 --
3580 --
3581 ------------------------------------------------------------------------------------------------
3582 -- 4219869 Business Flow
3583 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
3584 -- Prior Entry. Currently, the following code is always generated.
3585 ------------------------------------------------------------------------------------------------
3586 XLA_AE_LINES_PKG.ValidateCurrentLine;
3587
3588 ------------------------------------------------------------------------------------
3589 -- 4219869 Business Flow
3590 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
3591 ------------------------------------------------------------------------------------
3592 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3593
3594 ----------------------------------------------------------------------------------
3595 -- 4219869 Business Flow
3596 -- Update journal entry status -- Need to generate this within IF <condition>
3597 ----------------------------------------------------------------------------------
3598 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3599 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
3600 ,p_balance_type_code => l_balance_type_code
3601 );
3602
3603 -------------------------------------------------------------------------------------------
3604 -- 4262811 - Generate the Accrual Reversal lines
3605 -------------------------------------------------------------------------------------------
3606 BEGIN
3607 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3608 (g_array_event(p_event_id).array_value_num('header_index'));
3609 IF l_acc_rev_flag IS NULL THEN
3610 l_acc_rev_flag := 'N';
3611 END IF;
3612 EXCEPTION
3613 WHEN OTHERS THEN
3614 l_acc_rev_flag := 'N';
3615 END;
3616 --
3617 IF (l_acc_rev_flag = 'Y') THEN
3618
3619 -- 4645092 ------------------------------------------------------------------------------
3620 -- To allow MPA report to determine if it should generate report process
3621 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3622 ------------------------------------------------------------------------------------------
3623
3624 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3625 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3626
3627 --
3628 -- Update the line information that should be overwritten
3629 --
3630 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3631 p_header_num => 1);
3632 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
3633
3634 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3635
3636 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
3637 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3638 END IF;
3639
3640 --
3641 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3642 --
3643 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3644 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
3645 ELSE
3646 ---------------------------------------------------------------------------------------------------
3647 -- 4262811a Switch Sign
3648 ---------------------------------------------------------------------------------------------------
3649 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
3650 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3651 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3652 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3653 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3654 -- 5132302
3655 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3656 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3657
3658 END IF;
3659
3660 -- 4955764
3661 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3662 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3663
3664
3665 XLA_AE_LINES_PKG.ValidateCurrentLine;
3666 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3667
3668 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3669 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3670 ,p_balance_type_code => l_balance_type_code);
3671
3672 END IF;
3673
3674 -----------------------------------------------------------------------------------------
3675 -- 4262811 Multiperiod Accounting
3676 -----------------------------------------------------------------------------------------
3677 -- No MPA option is assigned.
3678
3679
3680 END IF;
3681 END IF;
3685 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3682 --
3683
3684 --
3686 trace
3687 (p_msg => 'END of AcctLineType_9'
3688 ,p_level => C_LEVEL_PROCEDURE
3689 ,p_module => l_log_module);
3690 END IF;
3691 --
3692 EXCEPTION
3693 WHEN xla_exceptions_pkg.application_exception THEN
3694 RAISE;
3695 WHEN OTHERS THEN
3696 xla_exceptions_pkg.raise_message
3697 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_9');
3698 END AcctLineType_9;
3699 --
3700
3701 ---------------------------------------
3702 --
3703 -- PRIVATE FUNCTION
3704 -- AcctLineType_10
3705 --
3706 ---------------------------------------
3707 PROCEDURE AcctLineType_10 (
3708 p_application_id IN NUMBER
3709 ,p_event_id IN NUMBER
3710 ,p_calculate_acctd_flag IN VARCHAR2
3711 ,p_calculate_g_l_flag IN VARCHAR2
3712 ,p_actual_flag IN OUT VARCHAR2
3713 ,p_balance_type_code OUT VARCHAR2
3714 ,p_gain_or_loss_ref OUT VARCHAR2
3715
3716 --Contract Number
3717 , p_source_1 IN VARCHAR2
3718 --Contract Product Name
3719 , p_source_2 IN VARCHAR2
3720 --Distribution Account
3721 , p_source_5 IN NUMBER
3722 --Accounting Line Type
3723 , p_source_6 IN VARCHAR2
3724 , p_source_6_meaning IN VARCHAR2
3725 --Accounting Distribution Identifier
3726 , p_source_7 IN NUMBER
3727 --Distribution Type
3728 , p_source_8 IN VARCHAR2
3729 --Distribution Entered Amount
3730 , p_source_9 IN NUMBER
3731 --Transaction Currency Code
3732 , p_source_10 IN VARCHAR2
3733 --Transaction Currency Conversion Date
3734 , p_source_11 IN DATE
3735 --Transaction Currency Conversion Rate
3736 , p_source_12 IN NUMBER
3737 --Transaction Currency Conversion Type
3738 , p_source_13 IN VARCHAR2
3739 )
3740 IS
3741
3742 l_component_type VARCHAR2(80);
3743 l_component_code VARCHAR2(30);
3744 l_component_type_code VARCHAR2(1);
3745 l_component_appl_id INTEGER;
3746 l_amb_context_code VARCHAR2(30);
3747 l_entity_code VARCHAR2(30);
3748 l_event_class_code VARCHAR2(30);
3749 l_ae_header_id NUMBER;
3750 l_event_type_code VARCHAR2(30);
3751 l_line_definition_code VARCHAR2(30);
3752 l_line_definition_owner_code VARCHAR2(1);
3753 --
3754 -- adr variables
3755 l_segment VARCHAR2(30);
3756 l_ccid NUMBER;
3757 l_adr_transaction_coa_id NUMBER;
3758 l_adr_accounting_coa_id NUMBER;
3759 l_adr_flexfield_segment_code VARCHAR2(30);
3760 l_adr_flex_value_set_id NUMBER;
3761 l_adr_value_type_code VARCHAR2(30);
3762 l_adr_value_combination_id NUMBER;
3763 l_adr_value_segment_code VARCHAR2(30);
3764
3765 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
3766 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
3767 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
3768 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
3769
3770 -- 4262811 Variables ------------------------------------------------------------------------------------------
3771 l_entered_amt_idx NUMBER;
3772 l_accted_amt_idx NUMBER;
3773 l_acc_rev_flag VARCHAR2(1);
3774 l_accrual_line_num NUMBER;
3775 l_tmp_amt NUMBER;
3776 l_acc_rev_natural_side_code VARCHAR2(1);
3777
3778 l_num_entries NUMBER;
3779 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
3780 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
3781 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
3782 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
3783 l_recog_line_1 NUMBER;
3784 l_recog_line_2 NUMBER;
3785
3786 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
3787 l_bflow_applied_to_amt NUMBER; -- 5132302
3788 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
3789
3790 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3791
3792 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
3793 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
3794
3795 ---------------------------------------------------------------------------------------------------------------
3796
3797
3798 --
3799 -- bulk performance
3800 --
3801 l_balance_type_code VARCHAR2(1);
3802 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
3803 l_log_module VARCHAR2(240);
3804
3805 --
3806 -- Upgrade strategy
3807 --
3808 l_actual_upg_option VARCHAR2(1);
3809 l_enc_upg_option VARCHAR2(1);
3810
3811 --
3812 BEGIN
3813 --
3814 IF g_log_enabled THEN
3815 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_10';
3816 END IF;
3817 --
3818 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3819
3820 trace
3821 (p_msg => 'BEGIN of AcctLineType_10'
3822 ,p_level => C_LEVEL_PROCEDURE
3823 ,p_module => l_log_module);
3824
3825 END IF;
3826 --
3827 l_component_type := 'AMB_JLT';
3828 l_component_code := 'OKL_EVERGREEN_CR';
3829 l_component_type_code := 'S';
3830 l_component_appl_id := 540;
3831 l_amb_context_code := 'DEFAULT';
3832 l_entity_code := 'CONTRACTS';
3836 l_line_definition_code := 'OKL_EVERGREEN';
3833 l_event_class_code := 'EVERGREEN';
3834 l_event_type_code := 'EVERGREEN_ALL';
3835 l_line_definition_owner_code := 'S';
3837 --
3838 l_balance_type_code := 'A';
3839 l_segment := NULL;
3840 l_ccid := NULL;
3841 l_adr_transaction_coa_id := NULL;
3842 l_adr_accounting_coa_id := NULL;
3843 l_adr_flexfield_segment_code := NULL;
3844 l_adr_flex_value_set_id := NULL;
3845 l_adr_value_type_code := NULL;
3846 l_adr_value_combination_id := NULL;
3847 l_adr_value_segment_code := NULL;
3848
3849 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
3850 l_bflow_class_code := ''; -- 4219869 Business Flow
3851 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
3852 l_budgetary_control_flag := 'N';
3853
3854 l_bflow_applied_to_amt_idx := NULL; -- 5132302
3855 l_bflow_applied_to_amt := NULL; -- 5132302
3856 l_entered_amt_idx := NULL; -- 4262811
3857 l_accted_amt_idx := NULL; -- 4262811
3858 l_acc_rev_flag := NULL; -- 4262811
3859 l_accrual_line_num := NULL; -- 4262811
3860 l_tmp_amt := NULL; -- 4262811
3861 --
3862
3863 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3864 l_balance_type_code <> 'B' THEN
3865 IF NVL(p_source_6,'
3866 ') = 'LEASE_CREDIT'
3867 THEN
3868
3869 --
3870 XLA_AE_LINES_PKG.SetNewLine;
3871
3872 p_balance_type_code := l_balance_type_code;
3873 -- set the flag so later we will know whether the gain loss line needs to be created
3874
3875 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3876 p_actual_flag :='A';
3877 END IF;
3878
3879 --
3880 -- bulk performance
3881 --
3882 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3883 p_header_num => 0); -- 4262811
3884 --
3885 -- set accounting line options
3886 --
3887 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3888 p_natural_side_code => 'C'
3889 , p_gain_or_loss_flag => 'N'
3890 , p_gl_transfer_mode_code => 'S'
3891 , p_acct_entry_type_code => 'A'
3892 , p_switch_side_flag => 'Y'
3893 , p_merge_duplicate_code => 'N'
3894 );
3895 --
3896 l_acc_rev_natural_side_code := 'D'; -- 4262811
3897 --
3898 --
3899 -- set accounting line type info
3900 --
3901 xla_ae_lines_pkg.SetAcctLineType
3902 (p_component_type => l_component_type
3903 ,p_event_type_code => l_event_type_code
3904 ,p_line_definition_owner_code => l_line_definition_owner_code
3905 ,p_line_definition_code => l_line_definition_code
3906 ,p_accounting_line_code => l_component_code
3907 ,p_accounting_line_type_code => l_component_type_code
3908 ,p_accounting_line_appl_id => l_component_appl_id
3909 ,p_amb_context_code => l_amb_context_code
3910 ,p_entity_code => l_entity_code
3911 ,p_event_class_code => l_event_class_code);
3912 --
3913 -- set accounting class
3914 --
3915 xla_ae_lines_pkg.SetAcctClass(
3916 p_accounting_class_code => 'EVERGREEN'
3917 , p_ae_header_id => l_ae_header_id
3918 );
3919
3920 --
3921 -- set rounding class
3922 --
3923 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3924 'EVERGREEN';
3925
3926 --
3927 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3928 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3929 --
3930 -- bulk performance
3931 --
3932 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3933
3934 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3935 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3936
3937 -- 4955764
3938 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3939 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3940
3941 -- 4458381 Public Sector Enh
3942
3943 --
3944 -- set accounting attributes for the line type
3945 --
3946 l_entered_amt_idx := 3;
3947 l_accted_amt_idx := NULL;
3948 l_bflow_applied_to_amt_idx := NULL; -- 5132302
3949 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
3950 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
3951 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
3952 l_rec_acct_attrs.array_char_value(2) := p_source_8;
3953 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
3954 l_rec_acct_attrs.array_num_value(3) := p_source_9;
3955 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
3956 l_rec_acct_attrs.array_char_value(4) := p_source_10;
3957 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
3958 l_rec_acct_attrs.array_date_value(5) := p_source_11;
3959 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
3960 l_rec_acct_attrs.array_num_value(6) := p_source_12;
3961 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
3962 l_rec_acct_attrs.array_char_value(7) := p_source_13;
3963
3964 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3968 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3965 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3966
3967 ---------------------------------------------------------------------------------------------------------------
3969 ---------------------------------------------------------------------------------------------------------------
3970 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3971
3972 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3973 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3974
3975 IF xla_accounting_cache_pkg.GetValueChar
3976 (p_source_code => 'LEDGER_CATEGORY_CODE'
3977 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3978 AND l_bflow_method_code = 'PRIOR_ENTRY'
3979 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3980 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3981 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3982 )
3983 THEN
3984 xla_ae_lines_pkg.BflowUpgEntry
3985 (p_business_method_code => l_bflow_method_code
3986 ,p_business_class_code => l_bflow_class_code
3987 ,p_balance_type => l_balance_type_code);
3988 ELSE
3989 NULL;
3990 -- No business flow processing for business flow method of NONE.
3991 END IF;
3992
3993 --
3994 -- call analytical criteria
3995 --
3996
3997 --
3998 -- call description
3999 --
4000
4001 xla_ae_lines_pkg.SetLineDescription(
4002 p_ae_header_id => l_ae_header_id
4003 ,p_description => Description_1 (
4004 p_application_id => p_application_id
4005 , p_ae_header_id => l_ae_header_id
4006 , p_source_1 => p_source_1
4007 , p_source_2 => p_source_2
4008 )
4009 );
4010
4011
4012 --
4013 -- call ADRs
4014 -- Bug 4922099
4015 --
4016 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4017 (NVL(l_actual_upg_option, 'N') = 'O') OR
4018 (NVL(l_enc_upg_option, 'N') = 'O')
4019 )
4020 THEN
4021 NULL;
4022 --
4023 --
4024
4025 l_ccid := AcctDerRule_3(
4026 p_application_id => p_application_id
4027 , p_ae_header_id => l_ae_header_id
4028 , p_source_5 => p_source_5
4029 , x_transaction_coa_id => l_adr_transaction_coa_id
4030 , x_accounting_coa_id => l_adr_accounting_coa_id
4031 , x_value_type_code => l_adr_value_type_code
4032 , p_side => 'NA'
4033 );
4034
4035 xla_ae_lines_pkg.set_ccid(
4036 p_code_combination_id => l_ccid
4037 , p_value_type_code => l_adr_value_type_code
4038 , p_transaction_coa_id => l_adr_transaction_coa_id
4039 , p_accounting_coa_id => l_adr_accounting_coa_id
4040 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
4041 , p_adr_type_code => 'S'
4042 , p_component_type => l_component_type
4043 , p_component_code => l_component_code
4044 , p_component_type_code => l_component_type_code
4045 , p_component_appl_id => l_component_appl_id
4046 , p_amb_context_code => l_amb_context_code
4047 , p_side => 'NA'
4048 );
4049
4050
4051 --
4052 --
4053 END IF;
4054 --
4055 -- Bug 4922099
4056 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4057 (NVL(l_enc_upg_option, 'N') = 'O')
4058 ) AND
4059 (l_bflow_method_code = 'PRIOR_ENTRY')
4060 )
4061 THEN
4062 IF
4063 --
4064 1 = 2
4065 --
4066 THEN
4067 xla_accounting_err_pkg.build_message
4068 (p_appli_s_name => 'XLA'
4069 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4070 ,p_token_1 => 'LINE_NUMBER'
4071 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
4072 ,p_token_2 => 'LINE_TYPE_NAME'
4073 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
4074 l_component_type
4075 ,l_component_code
4076 ,l_component_type_code
4077 ,l_component_appl_id
4078 ,l_amb_context_code
4079 ,l_entity_code
4080 ,l_event_class_code
4081 )
4082 ,p_token_3 => 'OWNER'
4083 ,p_value_3 => xla_lookups_pkg.get_meaning(
4084 p_lookup_type => 'XLA_OWNER_TYPE'
4085 ,p_lookup_code => l_component_type_code
4086 )
4087 ,p_token_4 => 'PRODUCT_NAME'
4091 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4088 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4089 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4090 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4092 ,p_ae_header_id => NULL
4093 );
4094
4095 IF (C_LEVEL_ERROR>= g_log_level) THEN
4096 trace
4097 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4098 ,p_level => C_LEVEL_ERROR
4099 ,p_module => l_log_module);
4100 END IF;
4101 END IF;
4102 END IF;
4103 --
4104 --
4105 ------------------------------------------------------------------------------------------------
4106 -- 4219869 Business Flow
4107 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4108 -- Prior Entry. Currently, the following code is always generated.
4109 ------------------------------------------------------------------------------------------------
4110 XLA_AE_LINES_PKG.ValidateCurrentLine;
4111
4112 ------------------------------------------------------------------------------------
4113 -- 4219869 Business Flow
4114 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4115 ------------------------------------------------------------------------------------
4116 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4117
4118 ----------------------------------------------------------------------------------
4119 -- 4219869 Business Flow
4120 -- Update journal entry status -- Need to generate this within IF <condition>
4121 ----------------------------------------------------------------------------------
4122 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4123 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4124 ,p_balance_type_code => l_balance_type_code
4125 );
4126
4127 -------------------------------------------------------------------------------------------
4128 -- 4262811 - Generate the Accrual Reversal lines
4129 -------------------------------------------------------------------------------------------
4130 BEGIN
4131 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4132 (g_array_event(p_event_id).array_value_num('header_index'));
4133 IF l_acc_rev_flag IS NULL THEN
4134 l_acc_rev_flag := 'N';
4135 END IF;
4136 EXCEPTION
4137 WHEN OTHERS THEN
4138 l_acc_rev_flag := 'N';
4139 END;
4140 --
4141 IF (l_acc_rev_flag = 'Y') THEN
4142
4143 -- 4645092 ------------------------------------------------------------------------------
4144 -- To allow MPA report to determine if it should generate report process
4145 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4146 ------------------------------------------------------------------------------------------
4147
4148 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4149 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4150
4151 --
4152 -- Update the line information that should be overwritten
4153 --
4154 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4155 p_header_num => 1);
4156 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
4157
4158 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4159
4160 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
4161 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4162 END IF;
4163
4164 --
4165 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4166 --
4167 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4168 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
4169 ELSE
4170 ---------------------------------------------------------------------------------------------------
4171 -- 4262811a Switch Sign
4172 ---------------------------------------------------------------------------------------------------
4173 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
4174 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4175 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4176 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4177 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4178 -- 5132302
4179 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4180 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4181
4182 END IF;
4183
4184 -- 4955764
4185 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4186 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4187
4188
4189 XLA_AE_LINES_PKG.ValidateCurrentLine;
4190 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4191
4192 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4196 END IF;
4193 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4194 ,p_balance_type_code => l_balance_type_code);
4195
4197
4198 -----------------------------------------------------------------------------------------
4199 -- 4262811 Multiperiod Accounting
4200 -----------------------------------------------------------------------------------------
4201 -- No MPA option is assigned.
4202
4203
4204 END IF;
4205 END IF;
4206 --
4207
4208 --
4209 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4210 trace
4211 (p_msg => 'END of AcctLineType_10'
4212 ,p_level => C_LEVEL_PROCEDURE
4213 ,p_module => l_log_module);
4214 END IF;
4215 --
4216 EXCEPTION
4217 WHEN xla_exceptions_pkg.application_exception THEN
4218 RAISE;
4219 WHEN OTHERS THEN
4220 xla_exceptions_pkg.raise_message
4221 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_10');
4222 END AcctLineType_10;
4223 --
4224
4225 ---------------------------------------
4226 --
4227 -- PRIVATE FUNCTION
4228 -- AcctLineType_11
4229 --
4230 ---------------------------------------
4231 PROCEDURE AcctLineType_11 (
4232 p_application_id IN NUMBER
4233 ,p_event_id IN NUMBER
4234 ,p_calculate_acctd_flag IN VARCHAR2
4235 ,p_calculate_g_l_flag IN VARCHAR2
4236 ,p_actual_flag IN OUT VARCHAR2
4237 ,p_balance_type_code OUT VARCHAR2
4238 ,p_gain_or_loss_ref OUT VARCHAR2
4239
4240 --Contract Number
4241 , p_source_1 IN VARCHAR2
4242 --Contract Product Name
4243 , p_source_2 IN VARCHAR2
4244 --Distribution Account
4245 , p_source_5 IN NUMBER
4246 --Accounting Line Type
4247 , p_source_6 IN VARCHAR2
4248 , p_source_6_meaning IN VARCHAR2
4249 --Accounting Distribution Identifier
4250 , p_source_7 IN NUMBER
4251 --Distribution Type
4252 , p_source_8 IN VARCHAR2
4253 --Distribution Entered Amount
4254 , p_source_9 IN NUMBER
4255 --Transaction Currency Code
4256 , p_source_10 IN VARCHAR2
4257 --Transaction Currency Conversion Date
4258 , p_source_11 IN DATE
4259 --Transaction Currency Conversion Rate
4260 , p_source_12 IN NUMBER
4261 --Transaction Currency Conversion Type
4262 , p_source_13 IN VARCHAR2
4263 )
4264 IS
4265
4266 l_component_type VARCHAR2(80);
4267 l_component_code VARCHAR2(30);
4268 l_component_type_code VARCHAR2(1);
4269 l_component_appl_id INTEGER;
4270 l_amb_context_code VARCHAR2(30);
4271 l_entity_code VARCHAR2(30);
4272 l_event_class_code VARCHAR2(30);
4273 l_ae_header_id NUMBER;
4274 l_event_type_code VARCHAR2(30);
4275 l_line_definition_code VARCHAR2(30);
4276 l_line_definition_owner_code VARCHAR2(1);
4277 --
4278 -- adr variables
4279 l_segment VARCHAR2(30);
4280 l_ccid NUMBER;
4281 l_adr_transaction_coa_id NUMBER;
4282 l_adr_accounting_coa_id NUMBER;
4283 l_adr_flexfield_segment_code VARCHAR2(30);
4284 l_adr_flex_value_set_id NUMBER;
4285 l_adr_value_type_code VARCHAR2(30);
4286 l_adr_value_combination_id NUMBER;
4287 l_adr_value_segment_code VARCHAR2(30);
4288
4289 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
4290 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
4291 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
4292 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
4293
4294 -- 4262811 Variables ------------------------------------------------------------------------------------------
4295 l_entered_amt_idx NUMBER;
4296 l_accted_amt_idx NUMBER;
4297 l_acc_rev_flag VARCHAR2(1);
4298 l_accrual_line_num NUMBER;
4299 l_tmp_amt NUMBER;
4300 l_acc_rev_natural_side_code VARCHAR2(1);
4301
4302 l_num_entries NUMBER;
4303 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
4304 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
4305 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
4306 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
4307 l_recog_line_1 NUMBER;
4308 l_recog_line_2 NUMBER;
4309
4310 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
4311 l_bflow_applied_to_amt NUMBER; -- 5132302
4312 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
4313
4314 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4315
4316 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
4317 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
4318
4319 ---------------------------------------------------------------------------------------------------------------
4320
4321
4322 --
4323 -- bulk performance
4324 --
4325 l_balance_type_code VARCHAR2(1);
4326 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
4327 l_log_module VARCHAR2(240);
4328
4329 --
4330 -- Upgrade strategy
4331 --
4332 l_actual_upg_option VARCHAR2(1);
4333 l_enc_upg_option VARCHAR2(1);
4334
4335 --
4336 BEGIN
4337 --
4338 IF g_log_enabled THEN
4339 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_11';
4340 END IF;
4341 --
4342 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4343
4347 ,p_module => l_log_module);
4344 trace
4345 (p_msg => 'BEGIN of AcctLineType_11'
4346 ,p_level => C_LEVEL_PROCEDURE
4348
4349 END IF;
4350 --
4351 l_component_type := 'AMB_JLT';
4352 l_component_code := 'OKL_EVERGREEN_DR';
4353 l_component_type_code := 'S';
4354 l_component_appl_id := 540;
4355 l_amb_context_code := 'DEFAULT';
4356 l_entity_code := 'CONTRACTS';
4357 l_event_class_code := 'EVERGREEN';
4358 l_event_type_code := 'EVERGREEN_ALL';
4359 l_line_definition_owner_code := 'S';
4360 l_line_definition_code := 'OKL_EVERGREEN';
4361 --
4362 l_balance_type_code := 'A';
4363 l_segment := NULL;
4364 l_ccid := NULL;
4365 l_adr_transaction_coa_id := NULL;
4366 l_adr_accounting_coa_id := NULL;
4367 l_adr_flexfield_segment_code := NULL;
4368 l_adr_flex_value_set_id := NULL;
4369 l_adr_value_type_code := NULL;
4370 l_adr_value_combination_id := NULL;
4371 l_adr_value_segment_code := NULL;
4372
4373 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
4374 l_bflow_class_code := ''; -- 4219869 Business Flow
4375 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
4376 l_budgetary_control_flag := 'N';
4377
4378 l_bflow_applied_to_amt_idx := NULL; -- 5132302
4379 l_bflow_applied_to_amt := NULL; -- 5132302
4380 l_entered_amt_idx := NULL; -- 4262811
4381 l_accted_amt_idx := NULL; -- 4262811
4382 l_acc_rev_flag := NULL; -- 4262811
4383 l_accrual_line_num := NULL; -- 4262811
4384 l_tmp_amt := NULL; -- 4262811
4385 --
4386
4387 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4388 l_balance_type_code <> 'B' THEN
4389 IF NVL(p_source_6,'
4390 ') = 'LEASE_DEBIT'
4391 THEN
4392
4393 --
4394 XLA_AE_LINES_PKG.SetNewLine;
4395
4396 p_balance_type_code := l_balance_type_code;
4397 -- set the flag so later we will know whether the gain loss line needs to be created
4398
4399 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4400 p_actual_flag :='A';
4401 END IF;
4402
4403 --
4404 -- bulk performance
4405 --
4406 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4407 p_header_num => 0); -- 4262811
4408 --
4409 -- set accounting line options
4410 --
4411 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4412 p_natural_side_code => 'D'
4413 , p_gain_or_loss_flag => 'N'
4414 , p_gl_transfer_mode_code => 'S'
4415 , p_acct_entry_type_code => 'A'
4416 , p_switch_side_flag => 'Y'
4417 , p_merge_duplicate_code => 'N'
4418 );
4419 --
4420 l_acc_rev_natural_side_code := 'C'; -- 4262811
4421 --
4422 --
4423 -- set accounting line type info
4424 --
4425 xla_ae_lines_pkg.SetAcctLineType
4426 (p_component_type => l_component_type
4427 ,p_event_type_code => l_event_type_code
4428 ,p_line_definition_owner_code => l_line_definition_owner_code
4429 ,p_line_definition_code => l_line_definition_code
4430 ,p_accounting_line_code => l_component_code
4431 ,p_accounting_line_type_code => l_component_type_code
4432 ,p_accounting_line_appl_id => l_component_appl_id
4433 ,p_amb_context_code => l_amb_context_code
4434 ,p_entity_code => l_entity_code
4435 ,p_event_class_code => l_event_class_code);
4436 --
4437 -- set accounting class
4438 --
4439 xla_ae_lines_pkg.SetAcctClass(
4440 p_accounting_class_code => 'EVERGREEN'
4441 , p_ae_header_id => l_ae_header_id
4442 );
4443
4444 --
4445 -- set rounding class
4446 --
4447 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4448 'EVERGREEN';
4449
4450 --
4451 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4452 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4453 --
4454 -- bulk performance
4455 --
4456 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4457
4458 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4459 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4460
4461 -- 4955764
4462 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4463 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4464
4465 -- 4458381 Public Sector Enh
4466
4467 --
4468 -- set accounting attributes for the line type
4469 --
4470 l_entered_amt_idx := 3;
4471 l_accted_amt_idx := NULL;
4472 l_bflow_applied_to_amt_idx := NULL; -- 5132302
4473 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
4474 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
4475 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
4476 l_rec_acct_attrs.array_char_value(2) := p_source_8;
4477 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
4478 l_rec_acct_attrs.array_num_value(3) := p_source_9;
4479 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
4480 l_rec_acct_attrs.array_char_value(4) := p_source_10;
4484 l_rec_acct_attrs.array_num_value(6) := p_source_12;
4481 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
4482 l_rec_acct_attrs.array_date_value(5) := p_source_11;
4483 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
4485 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
4486 l_rec_acct_attrs.array_char_value(7) := p_source_13;
4487
4488 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4489 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4490
4491 ---------------------------------------------------------------------------------------------------------------
4492 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4493 ---------------------------------------------------------------------------------------------------------------
4494 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4495
4496 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4497 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4498
4499 IF xla_accounting_cache_pkg.GetValueChar
4500 (p_source_code => 'LEDGER_CATEGORY_CODE'
4501 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4502 AND l_bflow_method_code = 'PRIOR_ENTRY'
4503 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4504 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4505 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4506 )
4507 THEN
4508 xla_ae_lines_pkg.BflowUpgEntry
4509 (p_business_method_code => l_bflow_method_code
4510 ,p_business_class_code => l_bflow_class_code
4511 ,p_balance_type => l_balance_type_code);
4512 ELSE
4513 NULL;
4514 -- No business flow processing for business flow method of NONE.
4515 END IF;
4516
4517 --
4518 -- call analytical criteria
4519 --
4520
4521 --
4522 -- call description
4523 --
4524
4525 xla_ae_lines_pkg.SetLineDescription(
4526 p_ae_header_id => l_ae_header_id
4527 ,p_description => Description_1 (
4528 p_application_id => p_application_id
4529 , p_ae_header_id => l_ae_header_id
4530 , p_source_1 => p_source_1
4531 , p_source_2 => p_source_2
4532 )
4533 );
4534
4535
4536 --
4537 -- call ADRs
4538 -- Bug 4922099
4539 --
4540 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4541 (NVL(l_actual_upg_option, 'N') = 'O') OR
4542 (NVL(l_enc_upg_option, 'N') = 'O')
4543 )
4544 THEN
4545 NULL;
4546 --
4547 --
4548
4549 l_ccid := AcctDerRule_3(
4550 p_application_id => p_application_id
4551 , p_ae_header_id => l_ae_header_id
4552 , p_source_5 => p_source_5
4553 , x_transaction_coa_id => l_adr_transaction_coa_id
4554 , x_accounting_coa_id => l_adr_accounting_coa_id
4555 , x_value_type_code => l_adr_value_type_code
4556 , p_side => 'NA'
4557 );
4558
4559 xla_ae_lines_pkg.set_ccid(
4560 p_code_combination_id => l_ccid
4561 , p_value_type_code => l_adr_value_type_code
4562 , p_transaction_coa_id => l_adr_transaction_coa_id
4563 , p_accounting_coa_id => l_adr_accounting_coa_id
4564 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
4565 , p_adr_type_code => 'S'
4566 , p_component_type => l_component_type
4567 , p_component_code => l_component_code
4568 , p_component_type_code => l_component_type_code
4569 , p_component_appl_id => l_component_appl_id
4570 , p_amb_context_code => l_amb_context_code
4571 , p_side => 'NA'
4572 );
4573
4574
4575 --
4576 --
4577 END IF;
4578 --
4579 -- Bug 4922099
4580 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4581 (NVL(l_enc_upg_option, 'N') = 'O')
4582 ) AND
4583 (l_bflow_method_code = 'PRIOR_ENTRY')
4584 )
4585 THEN
4586 IF
4587 --
4588 1 = 2
4589 --
4590 THEN
4591 xla_accounting_err_pkg.build_message
4592 (p_appli_s_name => 'XLA'
4593 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4594 ,p_token_1 => 'LINE_NUMBER'
4595 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
4596 ,p_token_2 => 'LINE_TYPE_NAME'
4597 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
4598 l_component_type
4599 ,l_component_code
4600 ,l_component_type_code
4601 ,l_component_appl_id
4602 ,l_amb_context_code
4603 ,l_entity_code
4604 ,l_event_class_code
4605 )
4606 ,p_token_3 => 'OWNER'
4610 )
4607 ,p_value_3 => xla_lookups_pkg.get_meaning(
4608 p_lookup_type => 'XLA_OWNER_TYPE'
4609 ,p_lookup_code => l_component_type_code
4611 ,p_token_4 => 'PRODUCT_NAME'
4612 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4613 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4614 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4615 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4616 ,p_ae_header_id => NULL
4617 );
4618
4619 IF (C_LEVEL_ERROR>= g_log_level) THEN
4620 trace
4621 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4622 ,p_level => C_LEVEL_ERROR
4623 ,p_module => l_log_module);
4624 END IF;
4625 END IF;
4626 END IF;
4627 --
4628 --
4629 ------------------------------------------------------------------------------------------------
4630 -- 4219869 Business Flow
4631 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4632 -- Prior Entry. Currently, the following code is always generated.
4633 ------------------------------------------------------------------------------------------------
4634 XLA_AE_LINES_PKG.ValidateCurrentLine;
4635
4636 ------------------------------------------------------------------------------------
4637 -- 4219869 Business Flow
4638 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4639 ------------------------------------------------------------------------------------
4640 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4641
4642 ----------------------------------------------------------------------------------
4643 -- 4219869 Business Flow
4644 -- Update journal entry status -- Need to generate this within IF <condition>
4645 ----------------------------------------------------------------------------------
4646 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4647 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4648 ,p_balance_type_code => l_balance_type_code
4649 );
4650
4651 -------------------------------------------------------------------------------------------
4652 -- 4262811 - Generate the Accrual Reversal lines
4653 -------------------------------------------------------------------------------------------
4654 BEGIN
4655 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4656 (g_array_event(p_event_id).array_value_num('header_index'));
4657 IF l_acc_rev_flag IS NULL THEN
4658 l_acc_rev_flag := 'N';
4659 END IF;
4660 EXCEPTION
4661 WHEN OTHERS THEN
4662 l_acc_rev_flag := 'N';
4663 END;
4664 --
4665 IF (l_acc_rev_flag = 'Y') THEN
4666
4667 -- 4645092 ------------------------------------------------------------------------------
4668 -- To allow MPA report to determine if it should generate report process
4669 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4670 ------------------------------------------------------------------------------------------
4671
4672 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4673 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4674
4675 --
4676 -- Update the line information that should be overwritten
4677 --
4678 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4679 p_header_num => 1);
4680 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
4681
4682 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4683
4684 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
4685 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4686 END IF;
4687
4688 --
4689 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4690 --
4691 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4692 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
4693 ELSE
4694 ---------------------------------------------------------------------------------------------------
4695 -- 4262811a Switch Sign
4696 ---------------------------------------------------------------------------------------------------
4697 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
4698 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4699 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4700 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4701 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4702 -- 5132302
4703 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4704 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4705
4706 END IF;
4707
4708 -- 4955764
4712
4709 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4710 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4711
4713 XLA_AE_LINES_PKG.ValidateCurrentLine;
4714 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4715
4716 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4717 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4718 ,p_balance_type_code => l_balance_type_code);
4719
4720 END IF;
4721
4722 -----------------------------------------------------------------------------------------
4723 -- 4262811 Multiperiod Accounting
4724 -----------------------------------------------------------------------------------------
4725 -- No MPA option is assigned.
4726
4727
4728 END IF;
4729 END IF;
4730 --
4731
4732 --
4733 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4734 trace
4735 (p_msg => 'END of AcctLineType_11'
4736 ,p_level => C_LEVEL_PROCEDURE
4737 ,p_module => l_log_module);
4738 END IF;
4739 --
4740 EXCEPTION
4741 WHEN xla_exceptions_pkg.application_exception THEN
4742 RAISE;
4743 WHEN OTHERS THEN
4744 xla_exceptions_pkg.raise_message
4745 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_11');
4746 END AcctLineType_11;
4747 --
4748
4749 ---------------------------------------
4750 --
4751 -- PRIVATE FUNCTION
4752 -- AcctLineType_12
4753 --
4754 ---------------------------------------
4755 PROCEDURE AcctLineType_12 (
4756 p_application_id IN NUMBER
4757 ,p_event_id IN NUMBER
4758 ,p_calculate_acctd_flag IN VARCHAR2
4759 ,p_calculate_g_l_flag IN VARCHAR2
4760 ,p_actual_flag IN OUT VARCHAR2
4761 ,p_balance_type_code OUT VARCHAR2
4762 ,p_gain_or_loss_ref OUT VARCHAR2
4763
4764 --Contract Number
4765 , p_source_1 IN VARCHAR2
4766 --Contract Product Name
4767 , p_source_2 IN VARCHAR2
4768 --Distribution Account
4769 , p_source_5 IN NUMBER
4770 --Accounting Line Type
4771 , p_source_6 IN VARCHAR2
4772 , p_source_6_meaning IN VARCHAR2
4773 --Accounting Distribution Identifier
4774 , p_source_7 IN NUMBER
4775 --Distribution Type
4776 , p_source_8 IN VARCHAR2
4777 --Distribution Entered Amount
4778 , p_source_9 IN NUMBER
4779 --Transaction Currency Code
4780 , p_source_10 IN VARCHAR2
4781 --Transaction Currency Conversion Date
4782 , p_source_11 IN DATE
4783 --Transaction Currency Conversion Rate
4784 , p_source_12 IN NUMBER
4785 --Transaction Currency Conversion Type
4786 , p_source_13 IN VARCHAR2
4787 )
4788 IS
4789
4790 l_component_type VARCHAR2(80);
4791 l_component_code VARCHAR2(30);
4792 l_component_type_code VARCHAR2(1);
4793 l_component_appl_id INTEGER;
4794 l_amb_context_code VARCHAR2(30);
4795 l_entity_code VARCHAR2(30);
4796 l_event_class_code VARCHAR2(30);
4797 l_ae_header_id NUMBER;
4798 l_event_type_code VARCHAR2(30);
4799 l_line_definition_code VARCHAR2(30);
4800 l_line_definition_owner_code VARCHAR2(1);
4801 --
4802 -- adr variables
4803 l_segment VARCHAR2(30);
4804 l_ccid NUMBER;
4805 l_adr_transaction_coa_id NUMBER;
4806 l_adr_accounting_coa_id NUMBER;
4807 l_adr_flexfield_segment_code VARCHAR2(30);
4808 l_adr_flex_value_set_id NUMBER;
4809 l_adr_value_type_code VARCHAR2(30);
4810 l_adr_value_combination_id NUMBER;
4811 l_adr_value_segment_code VARCHAR2(30);
4812
4813 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
4814 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
4815 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
4816 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
4817
4818 -- 4262811 Variables ------------------------------------------------------------------------------------------
4819 l_entered_amt_idx NUMBER;
4820 l_accted_amt_idx NUMBER;
4821 l_acc_rev_flag VARCHAR2(1);
4822 l_accrual_line_num NUMBER;
4823 l_tmp_amt NUMBER;
4824 l_acc_rev_natural_side_code VARCHAR2(1);
4825
4826 l_num_entries NUMBER;
4827 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
4828 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
4829 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
4830 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
4831 l_recog_line_1 NUMBER;
4832 l_recog_line_2 NUMBER;
4833
4834 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
4835 l_bflow_applied_to_amt NUMBER; -- 5132302
4836 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
4837
4838 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4839
4840 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
4841 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
4842
4843 ---------------------------------------------------------------------------------------------------------------
4844
4845
4846 --
4847 -- bulk performance
4848 --
4849 l_balance_type_code VARCHAR2(1);
4850 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
4851 l_log_module VARCHAR2(240);
4852
4856 l_actual_upg_option VARCHAR2(1);
4853 --
4854 -- Upgrade strategy
4855 --
4857 l_enc_upg_option VARCHAR2(1);
4858
4859 --
4860 BEGIN
4861 --
4862 IF g_log_enabled THEN
4863 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_12';
4864 END IF;
4865 --
4866 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4867
4868 trace
4869 (p_msg => 'BEGIN of AcctLineType_12'
4870 ,p_level => C_LEVEL_PROCEDURE
4871 ,p_module => l_log_module);
4872
4873 END IF;
4874 --
4875 l_component_type := 'AMB_JLT';
4876 l_component_code := 'OKL_GENERAL_LOSS_PROVISION_CR';
4877 l_component_type_code := 'S';
4878 l_component_appl_id := 540;
4879 l_amb_context_code := 'DEFAULT';
4880 l_entity_code := 'TRANSACTIONS';
4881 l_event_class_code := 'GENERAL_LOSS_PROVISION';
4882 l_event_type_code := 'GENERAL_LOSS_PROVISION_ALL';
4883 l_line_definition_owner_code := 'S';
4884 l_line_definition_code := 'OKL_GENERAL_LOSS_PROVISION';
4885 --
4886 l_balance_type_code := 'A';
4887 l_segment := NULL;
4888 l_ccid := NULL;
4889 l_adr_transaction_coa_id := NULL;
4890 l_adr_accounting_coa_id := NULL;
4891 l_adr_flexfield_segment_code := NULL;
4892 l_adr_flex_value_set_id := NULL;
4893 l_adr_value_type_code := NULL;
4894 l_adr_value_combination_id := NULL;
4895 l_adr_value_segment_code := NULL;
4896
4897 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
4898 l_bflow_class_code := ''; -- 4219869 Business Flow
4899 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
4900 l_budgetary_control_flag := 'N';
4901
4902 l_bflow_applied_to_amt_idx := NULL; -- 5132302
4903 l_bflow_applied_to_amt := NULL; -- 5132302
4904 l_entered_amt_idx := NULL; -- 4262811
4905 l_accted_amt_idx := NULL; -- 4262811
4906 l_acc_rev_flag := NULL; -- 4262811
4907 l_accrual_line_num := NULL; -- 4262811
4908 l_tmp_amt := NULL; -- 4262811
4909 --
4910
4911 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4912 l_balance_type_code <> 'B' THEN
4913 IF NVL(p_source_6,'
4914 ') = 'LEASE_CREDIT'
4915 THEN
4916
4917 --
4918 XLA_AE_LINES_PKG.SetNewLine;
4919
4920 p_balance_type_code := l_balance_type_code;
4921 -- set the flag so later we will know whether the gain loss line needs to be created
4922
4923 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4924 p_actual_flag :='A';
4925 END IF;
4926
4927 --
4928 -- bulk performance
4929 --
4930 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4931 p_header_num => 0); -- 4262811
4932 --
4933 -- set accounting line options
4934 --
4935 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4936 p_natural_side_code => 'C'
4937 , p_gain_or_loss_flag => 'N'
4938 , p_gl_transfer_mode_code => 'S'
4939 , p_acct_entry_type_code => 'A'
4940 , p_switch_side_flag => 'Y'
4941 , p_merge_duplicate_code => 'N'
4942 );
4943 --
4944 l_acc_rev_natural_side_code := 'D'; -- 4262811
4945 --
4946 --
4947 -- set accounting line type info
4948 --
4949 xla_ae_lines_pkg.SetAcctLineType
4950 (p_component_type => l_component_type
4951 ,p_event_type_code => l_event_type_code
4952 ,p_line_definition_owner_code => l_line_definition_owner_code
4953 ,p_line_definition_code => l_line_definition_code
4954 ,p_accounting_line_code => l_component_code
4955 ,p_accounting_line_type_code => l_component_type_code
4956 ,p_accounting_line_appl_id => l_component_appl_id
4957 ,p_amb_context_code => l_amb_context_code
4958 ,p_entity_code => l_entity_code
4959 ,p_event_class_code => l_event_class_code);
4960 --
4961 -- set accounting class
4962 --
4963 xla_ae_lines_pkg.SetAcctClass(
4964 p_accounting_class_code => 'GENERAL_LOSS_PROVISION'
4965 , p_ae_header_id => l_ae_header_id
4966 );
4967
4968 --
4969 -- set rounding class
4970 --
4971 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4972 'GENERAL_LOSS_PROVISION';
4973
4974 --
4975 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4976 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4977 --
4978 -- bulk performance
4979 --
4980 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4981
4982 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4983 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4984
4985 -- 4955764
4986 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4987 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4988
4989 -- 4458381 Public Sector Enh
4990
4991 --
4992 -- set accounting attributes for the line type
4993 --
4994 l_entered_amt_idx := 3;
4995 l_accted_amt_idx := NULL;
4996 l_bflow_applied_to_amt_idx := NULL; -- 5132302
5000 l_rec_acct_attrs.array_char_value(2) := p_source_8;
4997 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
4998 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
4999 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
5001 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
5002 l_rec_acct_attrs.array_num_value(3) := p_source_9;
5003 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
5004 l_rec_acct_attrs.array_char_value(4) := p_source_10;
5005 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
5006 l_rec_acct_attrs.array_date_value(5) := p_source_11;
5007 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
5008 l_rec_acct_attrs.array_num_value(6) := p_source_12;
5009 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
5010 l_rec_acct_attrs.array_char_value(7) := p_source_13;
5011
5012 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5013 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5014
5015 ---------------------------------------------------------------------------------------------------------------
5016 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5017 ---------------------------------------------------------------------------------------------------------------
5018 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5019
5020 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5021 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5022
5023 IF xla_accounting_cache_pkg.GetValueChar
5024 (p_source_code => 'LEDGER_CATEGORY_CODE'
5025 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5026 AND l_bflow_method_code = 'PRIOR_ENTRY'
5027 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5028 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5029 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5030 )
5031 THEN
5032 xla_ae_lines_pkg.BflowUpgEntry
5033 (p_business_method_code => l_bflow_method_code
5034 ,p_business_class_code => l_bflow_class_code
5035 ,p_balance_type => l_balance_type_code);
5036 ELSE
5037 NULL;
5038 -- No business flow processing for business flow method of NONE.
5039 END IF;
5040
5041 --
5042 -- call analytical criteria
5043 --
5044
5045 --
5046 -- call description
5047 --
5048
5049 xla_ae_lines_pkg.SetLineDescription(
5050 p_ae_header_id => l_ae_header_id
5051 ,p_description => Description_1 (
5052 p_application_id => p_application_id
5053 , p_ae_header_id => l_ae_header_id
5054 , p_source_1 => p_source_1
5055 , p_source_2 => p_source_2
5056 )
5057 );
5058
5059
5060 --
5061 -- call ADRs
5062 -- Bug 4922099
5063 --
5064 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5065 (NVL(l_actual_upg_option, 'N') = 'O') OR
5066 (NVL(l_enc_upg_option, 'N') = 'O')
5067 )
5068 THEN
5069 NULL;
5070 --
5071 --
5072
5073 l_ccid := AcctDerRule_3(
5074 p_application_id => p_application_id
5075 , p_ae_header_id => l_ae_header_id
5076 , p_source_5 => p_source_5
5077 , x_transaction_coa_id => l_adr_transaction_coa_id
5078 , x_accounting_coa_id => l_adr_accounting_coa_id
5079 , x_value_type_code => l_adr_value_type_code
5080 , p_side => 'NA'
5081 );
5082
5083 xla_ae_lines_pkg.set_ccid(
5084 p_code_combination_id => l_ccid
5085 , p_value_type_code => l_adr_value_type_code
5086 , p_transaction_coa_id => l_adr_transaction_coa_id
5087 , p_accounting_coa_id => l_adr_accounting_coa_id
5088 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
5089 , p_adr_type_code => 'S'
5090 , p_component_type => l_component_type
5091 , p_component_code => l_component_code
5092 , p_component_type_code => l_component_type_code
5093 , p_component_appl_id => l_component_appl_id
5094 , p_amb_context_code => l_amb_context_code
5095 , p_side => 'NA'
5096 );
5097
5098
5099 --
5100 --
5101 END IF;
5102 --
5103 -- Bug 4922099
5104 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5105 (NVL(l_enc_upg_option, 'N') = 'O')
5106 ) AND
5107 (l_bflow_method_code = 'PRIOR_ENTRY')
5108 )
5109 THEN
5110 IF
5111 --
5112 1 = 2
5113 --
5114 THEN
5115 xla_accounting_err_pkg.build_message
5116 (p_appli_s_name => 'XLA'
5117 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5118 ,p_token_1 => 'LINE_NUMBER'
5119 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
5120 ,p_token_2 => 'LINE_TYPE_NAME'
5121 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
5122 l_component_type
5123 ,l_component_code
5124 ,l_component_type_code
5128 ,l_event_class_code
5125 ,l_component_appl_id
5126 ,l_amb_context_code
5127 ,l_entity_code
5129 )
5130 ,p_token_3 => 'OWNER'
5131 ,p_value_3 => xla_lookups_pkg.get_meaning(
5132 p_lookup_type => 'XLA_OWNER_TYPE'
5133 ,p_lookup_code => l_component_type_code
5134 )
5135 ,p_token_4 => 'PRODUCT_NAME'
5136 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5137 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5138 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5139 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5140 ,p_ae_header_id => NULL
5141 );
5142
5143 IF (C_LEVEL_ERROR>= g_log_level) THEN
5144 trace
5145 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5146 ,p_level => C_LEVEL_ERROR
5147 ,p_module => l_log_module);
5148 END IF;
5149 END IF;
5150 END IF;
5151 --
5152 --
5153 ------------------------------------------------------------------------------------------------
5154 -- 4219869 Business Flow
5155 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5156 -- Prior Entry. Currently, the following code is always generated.
5157 ------------------------------------------------------------------------------------------------
5158 XLA_AE_LINES_PKG.ValidateCurrentLine;
5159
5160 ------------------------------------------------------------------------------------
5161 -- 4219869 Business Flow
5162 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5163 ------------------------------------------------------------------------------------
5164 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5165
5166 ----------------------------------------------------------------------------------
5167 -- 4219869 Business Flow
5168 -- Update journal entry status -- Need to generate this within IF <condition>
5169 ----------------------------------------------------------------------------------
5170 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5171 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5172 ,p_balance_type_code => l_balance_type_code
5173 );
5174
5175 -------------------------------------------------------------------------------------------
5176 -- 4262811 - Generate the Accrual Reversal lines
5177 -------------------------------------------------------------------------------------------
5178 BEGIN
5179 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5180 (g_array_event(p_event_id).array_value_num('header_index'));
5181 IF l_acc_rev_flag IS NULL THEN
5182 l_acc_rev_flag := 'N';
5183 END IF;
5184 EXCEPTION
5185 WHEN OTHERS THEN
5186 l_acc_rev_flag := 'N';
5187 END;
5188 --
5189 IF (l_acc_rev_flag = 'Y') THEN
5190
5191 -- 4645092 ------------------------------------------------------------------------------
5192 -- To allow MPA report to determine if it should generate report process
5193 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5194 ------------------------------------------------------------------------------------------
5195
5196 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5197 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5198
5199 --
5200 -- Update the line information that should be overwritten
5201 --
5202 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5203 p_header_num => 1);
5204 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
5205
5206 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5207
5208 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
5209 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5210 END IF;
5211
5212 --
5213 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5214 --
5215 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5216 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
5217 ELSE
5218 ---------------------------------------------------------------------------------------------------
5219 -- 4262811a Switch Sign
5220 ---------------------------------------------------------------------------------------------------
5221 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
5222 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5223 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5227 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5224 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5225 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5226 -- 5132302
5228 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5229
5230 END IF;
5231
5232 -- 4955764
5233 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5234 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5235
5236
5237 XLA_AE_LINES_PKG.ValidateCurrentLine;
5238 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5239
5240 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5241 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5242 ,p_balance_type_code => l_balance_type_code);
5243
5244 END IF;
5245
5246 -----------------------------------------------------------------------------------------
5247 -- 4262811 Multiperiod Accounting
5248 -----------------------------------------------------------------------------------------
5249 -- No MPA option is assigned.
5250
5251
5252 END IF;
5253 END IF;
5254 --
5255
5256 --
5257 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5258 trace
5259 (p_msg => 'END of AcctLineType_12'
5260 ,p_level => C_LEVEL_PROCEDURE
5261 ,p_module => l_log_module);
5262 END IF;
5263 --
5264 EXCEPTION
5265 WHEN xla_exceptions_pkg.application_exception THEN
5266 RAISE;
5267 WHEN OTHERS THEN
5268 xla_exceptions_pkg.raise_message
5269 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_12');
5270 END AcctLineType_12;
5271 --
5272
5273 ---------------------------------------
5274 --
5275 -- PRIVATE FUNCTION
5276 -- AcctLineType_13
5277 --
5278 ---------------------------------------
5279 PROCEDURE AcctLineType_13 (
5280 p_application_id IN NUMBER
5281 ,p_event_id IN NUMBER
5282 ,p_calculate_acctd_flag IN VARCHAR2
5283 ,p_calculate_g_l_flag IN VARCHAR2
5284 ,p_actual_flag IN OUT VARCHAR2
5285 ,p_balance_type_code OUT VARCHAR2
5286 ,p_gain_or_loss_ref OUT VARCHAR2
5287
5288 --Contract Number
5289 , p_source_1 IN VARCHAR2
5290 --Contract Product Name
5291 , p_source_2 IN VARCHAR2
5292 --Distribution Account
5293 , p_source_5 IN NUMBER
5294 --Accounting Line Type
5295 , p_source_6 IN VARCHAR2
5296 , p_source_6_meaning IN VARCHAR2
5297 --Accounting Distribution Identifier
5298 , p_source_7 IN NUMBER
5299 --Distribution Type
5300 , p_source_8 IN VARCHAR2
5301 --Distribution Entered Amount
5302 , p_source_9 IN NUMBER
5303 --Transaction Currency Code
5304 , p_source_10 IN VARCHAR2
5305 --Transaction Currency Conversion Date
5306 , p_source_11 IN DATE
5307 --Transaction Currency Conversion Rate
5308 , p_source_12 IN NUMBER
5309 --Transaction Currency Conversion Type
5310 , p_source_13 IN VARCHAR2
5311 )
5312 IS
5313
5314 l_component_type VARCHAR2(80);
5315 l_component_code VARCHAR2(30);
5316 l_component_type_code VARCHAR2(1);
5317 l_component_appl_id INTEGER;
5318 l_amb_context_code VARCHAR2(30);
5319 l_entity_code VARCHAR2(30);
5320 l_event_class_code VARCHAR2(30);
5321 l_ae_header_id NUMBER;
5322 l_event_type_code VARCHAR2(30);
5323 l_line_definition_code VARCHAR2(30);
5324 l_line_definition_owner_code VARCHAR2(1);
5325 --
5326 -- adr variables
5327 l_segment VARCHAR2(30);
5328 l_ccid NUMBER;
5329 l_adr_transaction_coa_id NUMBER;
5330 l_adr_accounting_coa_id NUMBER;
5331 l_adr_flexfield_segment_code VARCHAR2(30);
5332 l_adr_flex_value_set_id NUMBER;
5333 l_adr_value_type_code VARCHAR2(30);
5334 l_adr_value_combination_id NUMBER;
5335 l_adr_value_segment_code VARCHAR2(30);
5336
5337 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
5338 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
5339 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
5340 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
5341
5342 -- 4262811 Variables ------------------------------------------------------------------------------------------
5343 l_entered_amt_idx NUMBER;
5344 l_accted_amt_idx NUMBER;
5345 l_acc_rev_flag VARCHAR2(1);
5346 l_accrual_line_num NUMBER;
5347 l_tmp_amt NUMBER;
5348 l_acc_rev_natural_side_code VARCHAR2(1);
5349
5350 l_num_entries NUMBER;
5351 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
5352 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
5353 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
5354 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
5355 l_recog_line_1 NUMBER;
5356 l_recog_line_2 NUMBER;
5357
5358 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
5359 l_bflow_applied_to_amt NUMBER; -- 5132302
5360 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
5361
5362 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5363
5367 ---------------------------------------------------------------------------------------------------------------
5364 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
5365 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
5366
5368
5369
5370 --
5371 -- bulk performance
5372 --
5373 l_balance_type_code VARCHAR2(1);
5374 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
5375 l_log_module VARCHAR2(240);
5376
5377 --
5378 -- Upgrade strategy
5379 --
5380 l_actual_upg_option VARCHAR2(1);
5381 l_enc_upg_option VARCHAR2(1);
5382
5383 --
5384 BEGIN
5385 --
5386 IF g_log_enabled THEN
5387 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_13';
5388 END IF;
5389 --
5390 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5391
5392 trace
5393 (p_msg => 'BEGIN of AcctLineType_13'
5394 ,p_level => C_LEVEL_PROCEDURE
5395 ,p_module => l_log_module);
5396
5397 END IF;
5398 --
5399 l_component_type := 'AMB_JLT';
5400 l_component_code := 'OKL_GENERAL_LOSS_PROVISION_DR';
5401 l_component_type_code := 'S';
5402 l_component_appl_id := 540;
5403 l_amb_context_code := 'DEFAULT';
5404 l_entity_code := 'TRANSACTIONS';
5405 l_event_class_code := 'GENERAL_LOSS_PROVISION';
5406 l_event_type_code := 'GENERAL_LOSS_PROVISION_ALL';
5407 l_line_definition_owner_code := 'S';
5408 l_line_definition_code := 'OKL_GENERAL_LOSS_PROVISION';
5409 --
5410 l_balance_type_code := 'A';
5411 l_segment := NULL;
5412 l_ccid := NULL;
5413 l_adr_transaction_coa_id := NULL;
5414 l_adr_accounting_coa_id := NULL;
5415 l_adr_flexfield_segment_code := NULL;
5416 l_adr_flex_value_set_id := NULL;
5417 l_adr_value_type_code := NULL;
5418 l_adr_value_combination_id := NULL;
5419 l_adr_value_segment_code := NULL;
5420
5421 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
5422 l_bflow_class_code := ''; -- 4219869 Business Flow
5423 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
5424 l_budgetary_control_flag := 'N';
5425
5426 l_bflow_applied_to_amt_idx := NULL; -- 5132302
5427 l_bflow_applied_to_amt := NULL; -- 5132302
5428 l_entered_amt_idx := NULL; -- 4262811
5429 l_accted_amt_idx := NULL; -- 4262811
5430 l_acc_rev_flag := NULL; -- 4262811
5431 l_accrual_line_num := NULL; -- 4262811
5432 l_tmp_amt := NULL; -- 4262811
5433 --
5434
5435 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5436 l_balance_type_code <> 'B' THEN
5437 IF NVL(p_source_6,'
5438 ') = 'LEASE_DEBIT'
5439 THEN
5440
5441 --
5442 XLA_AE_LINES_PKG.SetNewLine;
5443
5444 p_balance_type_code := l_balance_type_code;
5445 -- set the flag so later we will know whether the gain loss line needs to be created
5446
5447 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5448 p_actual_flag :='A';
5449 END IF;
5450
5451 --
5452 -- bulk performance
5453 --
5454 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5455 p_header_num => 0); -- 4262811
5456 --
5457 -- set accounting line options
5458 --
5459 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5460 p_natural_side_code => 'D'
5461 , p_gain_or_loss_flag => 'N'
5462 , p_gl_transfer_mode_code => 'S'
5463 , p_acct_entry_type_code => 'A'
5464 , p_switch_side_flag => 'Y'
5465 , p_merge_duplicate_code => 'N'
5466 );
5467 --
5468 l_acc_rev_natural_side_code := 'C'; -- 4262811
5469 --
5470 --
5471 -- set accounting line type info
5472 --
5473 xla_ae_lines_pkg.SetAcctLineType
5474 (p_component_type => l_component_type
5475 ,p_event_type_code => l_event_type_code
5476 ,p_line_definition_owner_code => l_line_definition_owner_code
5477 ,p_line_definition_code => l_line_definition_code
5478 ,p_accounting_line_code => l_component_code
5479 ,p_accounting_line_type_code => l_component_type_code
5480 ,p_accounting_line_appl_id => l_component_appl_id
5481 ,p_amb_context_code => l_amb_context_code
5482 ,p_entity_code => l_entity_code
5483 ,p_event_class_code => l_event_class_code);
5484 --
5485 -- set accounting class
5486 --
5487 xla_ae_lines_pkg.SetAcctClass(
5488 p_accounting_class_code => 'GENERAL_LOSS_PROVISION'
5489 , p_ae_header_id => l_ae_header_id
5490 );
5491
5492 --
5493 -- set rounding class
5494 --
5495 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5496 'GENERAL_LOSS_PROVISION';
5497
5498 --
5499 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5500 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5501 --
5502 -- bulk performance
5503 --
5504 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5505
5506 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5507 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5508
5509 -- 4955764
5513 -- 4458381 Public Sector Enh
5510 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5511 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5512
5514
5515 --
5516 -- set accounting attributes for the line type
5517 --
5518 l_entered_amt_idx := 3;
5519 l_accted_amt_idx := NULL;
5520 l_bflow_applied_to_amt_idx := NULL; -- 5132302
5521 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
5522 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
5523 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
5524 l_rec_acct_attrs.array_char_value(2) := p_source_8;
5525 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
5526 l_rec_acct_attrs.array_num_value(3) := p_source_9;
5527 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
5528 l_rec_acct_attrs.array_char_value(4) := p_source_10;
5529 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
5530 l_rec_acct_attrs.array_date_value(5) := p_source_11;
5531 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
5532 l_rec_acct_attrs.array_num_value(6) := p_source_12;
5533 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
5534 l_rec_acct_attrs.array_char_value(7) := p_source_13;
5535
5536 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5537 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5538
5539 ---------------------------------------------------------------------------------------------------------------
5540 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5541 ---------------------------------------------------------------------------------------------------------------
5542 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5543
5544 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5545 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5546
5547 IF xla_accounting_cache_pkg.GetValueChar
5548 (p_source_code => 'LEDGER_CATEGORY_CODE'
5549 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5550 AND l_bflow_method_code = 'PRIOR_ENTRY'
5551 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5552 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5553 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5554 )
5555 THEN
5556 xla_ae_lines_pkg.BflowUpgEntry
5557 (p_business_method_code => l_bflow_method_code
5558 ,p_business_class_code => l_bflow_class_code
5559 ,p_balance_type => l_balance_type_code);
5560 ELSE
5561 NULL;
5562 -- No business flow processing for business flow method of NONE.
5563 END IF;
5564
5565 --
5566 -- call analytical criteria
5567 --
5568
5569 --
5570 -- call description
5571 --
5572
5573 xla_ae_lines_pkg.SetLineDescription(
5574 p_ae_header_id => l_ae_header_id
5575 ,p_description => Description_1 (
5576 p_application_id => p_application_id
5577 , p_ae_header_id => l_ae_header_id
5578 , p_source_1 => p_source_1
5579 , p_source_2 => p_source_2
5580 )
5581 );
5582
5583
5584 --
5585 -- call ADRs
5586 -- Bug 4922099
5587 --
5588 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5589 (NVL(l_actual_upg_option, 'N') = 'O') OR
5590 (NVL(l_enc_upg_option, 'N') = 'O')
5591 )
5592 THEN
5593 NULL;
5594 --
5595 --
5596
5597 l_ccid := AcctDerRule_3(
5598 p_application_id => p_application_id
5599 , p_ae_header_id => l_ae_header_id
5600 , p_source_5 => p_source_5
5601 , x_transaction_coa_id => l_adr_transaction_coa_id
5602 , x_accounting_coa_id => l_adr_accounting_coa_id
5603 , x_value_type_code => l_adr_value_type_code
5604 , p_side => 'NA'
5605 );
5606
5607 xla_ae_lines_pkg.set_ccid(
5608 p_code_combination_id => l_ccid
5609 , p_value_type_code => l_adr_value_type_code
5610 , p_transaction_coa_id => l_adr_transaction_coa_id
5611 , p_accounting_coa_id => l_adr_accounting_coa_id
5612 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
5613 , p_adr_type_code => 'S'
5614 , p_component_type => l_component_type
5615 , p_component_code => l_component_code
5616 , p_component_type_code => l_component_type_code
5617 , p_component_appl_id => l_component_appl_id
5618 , p_amb_context_code => l_amb_context_code
5619 , p_side => 'NA'
5620 );
5621
5622
5623 --
5624 --
5625 END IF;
5626 --
5627 -- Bug 4922099
5628 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5629 (NVL(l_enc_upg_option, 'N') = 'O')
5630 ) AND
5631 (l_bflow_method_code = 'PRIOR_ENTRY')
5632 )
5633 THEN
5634 IF
5635 --
5636 1 = 2
5637 --
5638 THEN
5639 xla_accounting_err_pkg.build_message
5640 (p_appli_s_name => 'XLA'
5641 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5642 ,p_token_1 => 'LINE_NUMBER'
5643 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
5647 ,l_component_code
5644 ,p_token_2 => 'LINE_TYPE_NAME'
5645 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
5646 l_component_type
5648 ,l_component_type_code
5649 ,l_component_appl_id
5650 ,l_amb_context_code
5651 ,l_entity_code
5652 ,l_event_class_code
5653 )
5654 ,p_token_3 => 'OWNER'
5655 ,p_value_3 => xla_lookups_pkg.get_meaning(
5656 p_lookup_type => 'XLA_OWNER_TYPE'
5657 ,p_lookup_code => l_component_type_code
5658 )
5659 ,p_token_4 => 'PRODUCT_NAME'
5660 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5661 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5662 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5663 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5664 ,p_ae_header_id => NULL
5665 );
5666
5667 IF (C_LEVEL_ERROR>= g_log_level) THEN
5668 trace
5669 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5670 ,p_level => C_LEVEL_ERROR
5671 ,p_module => l_log_module);
5672 END IF;
5673 END IF;
5674 END IF;
5675 --
5676 --
5677 ------------------------------------------------------------------------------------------------
5678 -- 4219869 Business Flow
5679 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5680 -- Prior Entry. Currently, the following code is always generated.
5681 ------------------------------------------------------------------------------------------------
5682 XLA_AE_LINES_PKG.ValidateCurrentLine;
5683
5684 ------------------------------------------------------------------------------------
5685 -- 4219869 Business Flow
5686 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5687 ------------------------------------------------------------------------------------
5688 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5689
5690 ----------------------------------------------------------------------------------
5691 -- 4219869 Business Flow
5692 -- Update journal entry status -- Need to generate this within IF <condition>
5693 ----------------------------------------------------------------------------------
5694 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5695 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5696 ,p_balance_type_code => l_balance_type_code
5697 );
5698
5699 -------------------------------------------------------------------------------------------
5700 -- 4262811 - Generate the Accrual Reversal lines
5701 -------------------------------------------------------------------------------------------
5702 BEGIN
5703 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5704 (g_array_event(p_event_id).array_value_num('header_index'));
5705 IF l_acc_rev_flag IS NULL THEN
5706 l_acc_rev_flag := 'N';
5707 END IF;
5708 EXCEPTION
5709 WHEN OTHERS THEN
5710 l_acc_rev_flag := 'N';
5711 END;
5712 --
5713 IF (l_acc_rev_flag = 'Y') THEN
5714
5715 -- 4645092 ------------------------------------------------------------------------------
5716 -- To allow MPA report to determine if it should generate report process
5717 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5718 ------------------------------------------------------------------------------------------
5719
5720 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5721 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5722
5723 --
5724 -- Update the line information that should be overwritten
5725 --
5726 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5727 p_header_num => 1);
5728 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
5729
5730 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5731
5732 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
5733 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5734 END IF;
5735
5736 --
5737 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5738 --
5739 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5740 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
5741 ELSE
5742 ---------------------------------------------------------------------------------------------------
5746 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5743 -- 4262811a Switch Sign
5744 ---------------------------------------------------------------------------------------------------
5745 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
5747 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5748 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5749 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5750 -- 5132302
5751 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5752 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5753
5754 END IF;
5755
5756 -- 4955764
5757 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5758 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5759
5760
5761 XLA_AE_LINES_PKG.ValidateCurrentLine;
5762 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5763
5764 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5765 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5766 ,p_balance_type_code => l_balance_type_code);
5767
5768 END IF;
5769
5770 -----------------------------------------------------------------------------------------
5771 -- 4262811 Multiperiod Accounting
5772 -----------------------------------------------------------------------------------------
5773 -- No MPA option is assigned.
5774
5775
5776 END IF;
5777 END IF;
5778 --
5779
5780 --
5781 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5782 trace
5783 (p_msg => 'END of AcctLineType_13'
5784 ,p_level => C_LEVEL_PROCEDURE
5785 ,p_module => l_log_module);
5786 END IF;
5787 --
5788 EXCEPTION
5789 WHEN xla_exceptions_pkg.application_exception THEN
5790 RAISE;
5791 WHEN OTHERS THEN
5792 xla_exceptions_pkg.raise_message
5793 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_13');
5794 END AcctLineType_13;
5795 --
5796
5797 ---------------------------------------
5798 --
5799 -- PRIVATE FUNCTION
5800 -- AcctLineType_14
5801 --
5802 ---------------------------------------
5803 PROCEDURE AcctLineType_14 (
5804 p_application_id IN NUMBER
5805 ,p_event_id IN NUMBER
5806 ,p_calculate_acctd_flag IN VARCHAR2
5807 ,p_calculate_g_l_flag IN VARCHAR2
5808 ,p_actual_flag IN OUT VARCHAR2
5809 ,p_balance_type_code OUT VARCHAR2
5810 ,p_gain_or_loss_ref OUT VARCHAR2
5811
5812 --Investor Agreement Number
5813 , p_source_3 IN VARCHAR2
5814 --Investor Agreement Product Name
5815 , p_source_4 IN VARCHAR2
5816 --Distribution Account
5817 , p_source_5 IN NUMBER
5818 --Accounting Line Type
5819 , p_source_6 IN VARCHAR2
5820 , p_source_6_meaning IN VARCHAR2
5821 --Accounting Distribution Identifier
5822 , p_source_7 IN NUMBER
5823 --Distribution Type
5824 , p_source_8 IN VARCHAR2
5825 --Distribution Entered Amount
5826 , p_source_9 IN NUMBER
5827 --Transaction Currency Code
5828 , p_source_10 IN VARCHAR2
5829 --Transaction Currency Conversion Date
5830 , p_source_11 IN DATE
5831 --Transaction Currency Conversion Rate
5832 , p_source_12 IN NUMBER
5833 --Transaction Currency Conversion Type
5834 , p_source_13 IN VARCHAR2
5835 )
5836 IS
5837
5838 l_component_type VARCHAR2(80);
5839 l_component_code VARCHAR2(30);
5840 l_component_type_code VARCHAR2(1);
5841 l_component_appl_id INTEGER;
5842 l_amb_context_code VARCHAR2(30);
5843 l_entity_code VARCHAR2(30);
5844 l_event_class_code VARCHAR2(30);
5845 l_ae_header_id NUMBER;
5846 l_event_type_code VARCHAR2(30);
5847 l_line_definition_code VARCHAR2(30);
5848 l_line_definition_owner_code VARCHAR2(1);
5849 --
5850 -- adr variables
5851 l_segment VARCHAR2(30);
5852 l_ccid NUMBER;
5853 l_adr_transaction_coa_id NUMBER;
5854 l_adr_accounting_coa_id NUMBER;
5855 l_adr_flexfield_segment_code VARCHAR2(30);
5856 l_adr_flex_value_set_id NUMBER;
5857 l_adr_value_type_code VARCHAR2(30);
5858 l_adr_value_combination_id NUMBER;
5859 l_adr_value_segment_code VARCHAR2(30);
5860
5861 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
5862 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
5863 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
5864 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
5865
5866 -- 4262811 Variables ------------------------------------------------------------------------------------------
5867 l_entered_amt_idx NUMBER;
5868 l_accted_amt_idx NUMBER;
5869 l_acc_rev_flag VARCHAR2(1);
5870 l_accrual_line_num NUMBER;
5871 l_tmp_amt NUMBER;
5872 l_acc_rev_natural_side_code VARCHAR2(1);
5873
5874 l_num_entries NUMBER;
5875 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
5876 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
5877 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
5878 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
5879 l_recog_line_1 NUMBER;
5883 l_bflow_applied_to_amt NUMBER; -- 5132302
5880 l_recog_line_2 NUMBER;
5881
5882 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
5884 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
5885
5886 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5887
5888 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
5889 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
5890
5891 ---------------------------------------------------------------------------------------------------------------
5892
5893
5894 --
5895 -- bulk performance
5896 --
5897 l_balance_type_code VARCHAR2(1);
5898 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
5899 l_log_module VARCHAR2(240);
5900
5901 --
5902 -- Upgrade strategy
5903 --
5904 l_actual_upg_option VARCHAR2(1);
5905 l_enc_upg_option VARCHAR2(1);
5906
5907 --
5908 BEGIN
5909 --
5910 IF g_log_enabled THEN
5911 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_14';
5912 END IF;
5913 --
5914 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5915
5916 trace
5917 (p_msg => 'BEGIN of AcctLineType_14'
5918 ,p_level => C_LEVEL_PROCEDURE
5919 ,p_module => l_log_module);
5920
5921 END IF;
5922 --
5923 l_component_type := 'AMB_JLT';
5924 l_component_code := 'OKL_INVESTOR_CR';
5925 l_component_type_code := 'S';
5926 l_component_appl_id := 540;
5927 l_amb_context_code := 'DEFAULT';
5928 l_entity_code := 'INVESTOR_AGREEMENTS';
5929 l_event_class_code := 'INVESTOR';
5930 l_event_type_code := 'INVESTOR_ALL';
5931 l_line_definition_owner_code := 'S';
5932 l_line_definition_code := 'OKL_INVESTOR';
5933 --
5934 l_balance_type_code := 'A';
5935 l_segment := NULL;
5936 l_ccid := NULL;
5937 l_adr_transaction_coa_id := NULL;
5938 l_adr_accounting_coa_id := NULL;
5939 l_adr_flexfield_segment_code := NULL;
5940 l_adr_flex_value_set_id := NULL;
5941 l_adr_value_type_code := NULL;
5942 l_adr_value_combination_id := NULL;
5943 l_adr_value_segment_code := NULL;
5944
5945 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
5946 l_bflow_class_code := ''; -- 4219869 Business Flow
5947 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
5948 l_budgetary_control_flag := 'N';
5949
5950 l_bflow_applied_to_amt_idx := NULL; -- 5132302
5951 l_bflow_applied_to_amt := NULL; -- 5132302
5952 l_entered_amt_idx := NULL; -- 4262811
5953 l_accted_amt_idx := NULL; -- 4262811
5954 l_acc_rev_flag := NULL; -- 4262811
5955 l_accrual_line_num := NULL; -- 4262811
5956 l_tmp_amt := NULL; -- 4262811
5957 --
5958
5959 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5960 l_balance_type_code <> 'B' THEN
5961 IF NVL(p_source_6,'
5962 ') = 'LEASE_CREDIT'
5963 THEN
5964
5965 --
5966 XLA_AE_LINES_PKG.SetNewLine;
5967
5968 p_balance_type_code := l_balance_type_code;
5969 -- set the flag so later we will know whether the gain loss line needs to be created
5970
5971 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5972 p_actual_flag :='A';
5973 END IF;
5974
5975 --
5976 -- bulk performance
5977 --
5978 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5979 p_header_num => 0); -- 4262811
5980 --
5981 -- set accounting line options
5982 --
5983 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5984 p_natural_side_code => 'C'
5985 , p_gain_or_loss_flag => 'N'
5986 , p_gl_transfer_mode_code => 'S'
5987 , p_acct_entry_type_code => 'A'
5988 , p_switch_side_flag => 'Y'
5989 , p_merge_duplicate_code => 'N'
5990 );
5991 --
5992 l_acc_rev_natural_side_code := 'D'; -- 4262811
5993 --
5994 --
5995 -- set accounting line type info
5996 --
5997 xla_ae_lines_pkg.SetAcctLineType
5998 (p_component_type => l_component_type
5999 ,p_event_type_code => l_event_type_code
6000 ,p_line_definition_owner_code => l_line_definition_owner_code
6001 ,p_line_definition_code => l_line_definition_code
6002 ,p_accounting_line_code => l_component_code
6003 ,p_accounting_line_type_code => l_component_type_code
6004 ,p_accounting_line_appl_id => l_component_appl_id
6005 ,p_amb_context_code => l_amb_context_code
6006 ,p_entity_code => l_entity_code
6007 ,p_event_class_code => l_event_class_code);
6008 --
6009 -- set accounting class
6010 --
6011 xla_ae_lines_pkg.SetAcctClass(
6012 p_accounting_class_code => 'INVESTOR'
6013 , p_ae_header_id => l_ae_header_id
6014 );
6015
6016 --
6017 -- set rounding class
6018 --
6019 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6020 'INVESTOR';
6021
6022 --
6023 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6024 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6028 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6025 --
6026 -- bulk performance
6027 --
6029
6030 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6031 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6032
6033 -- 4955764
6034 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6035 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6036
6037 -- 4458381 Public Sector Enh
6038
6039 --
6040 -- set accounting attributes for the line type
6041 --
6042 l_entered_amt_idx := 3;
6043 l_accted_amt_idx := NULL;
6044 l_bflow_applied_to_amt_idx := NULL; -- 5132302
6045 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
6046 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
6047 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
6048 l_rec_acct_attrs.array_char_value(2) := p_source_8;
6049 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
6050 l_rec_acct_attrs.array_num_value(3) := p_source_9;
6051 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
6052 l_rec_acct_attrs.array_char_value(4) := p_source_10;
6053 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
6054 l_rec_acct_attrs.array_date_value(5) := p_source_11;
6055 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
6056 l_rec_acct_attrs.array_num_value(6) := p_source_12;
6057 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
6058 l_rec_acct_attrs.array_char_value(7) := p_source_13;
6059
6060 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6061 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6062
6063 ---------------------------------------------------------------------------------------------------------------
6064 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6065 ---------------------------------------------------------------------------------------------------------------
6066 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6067
6068 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6069 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6070
6071 IF xla_accounting_cache_pkg.GetValueChar
6072 (p_source_code => 'LEDGER_CATEGORY_CODE'
6073 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6074 AND l_bflow_method_code = 'PRIOR_ENTRY'
6075 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6076 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6077 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6078 )
6079 THEN
6080 xla_ae_lines_pkg.BflowUpgEntry
6081 (p_business_method_code => l_bflow_method_code
6082 ,p_business_class_code => l_bflow_class_code
6083 ,p_balance_type => l_balance_type_code);
6084 ELSE
6085 NULL;
6086 -- No business flow processing for business flow method of NONE.
6087 END IF;
6088
6089 --
6090 -- call analytical criteria
6091 --
6092
6093 --
6094 -- call description
6095 --
6096
6097 xla_ae_lines_pkg.SetLineDescription(
6098 p_ae_header_id => l_ae_header_id
6099 ,p_description => Description_2 (
6100 p_application_id => p_application_id
6101 , p_ae_header_id => l_ae_header_id
6102 , p_source_3 => p_source_3
6103 , p_source_4 => p_source_4
6104 )
6105 );
6106
6107
6108 --
6109 -- call ADRs
6110 -- Bug 4922099
6111 --
6112 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6113 (NVL(l_actual_upg_option, 'N') = 'O') OR
6114 (NVL(l_enc_upg_option, 'N') = 'O')
6115 )
6116 THEN
6117 NULL;
6118 --
6119 --
6120
6121 l_ccid := AcctDerRule_3(
6122 p_application_id => p_application_id
6123 , p_ae_header_id => l_ae_header_id
6124 , p_source_5 => p_source_5
6125 , x_transaction_coa_id => l_adr_transaction_coa_id
6126 , x_accounting_coa_id => l_adr_accounting_coa_id
6127 , x_value_type_code => l_adr_value_type_code
6128 , p_side => 'NA'
6129 );
6130
6131 xla_ae_lines_pkg.set_ccid(
6132 p_code_combination_id => l_ccid
6133 , p_value_type_code => l_adr_value_type_code
6134 , p_transaction_coa_id => l_adr_transaction_coa_id
6135 , p_accounting_coa_id => l_adr_accounting_coa_id
6136 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
6137 , p_adr_type_code => 'S'
6138 , p_component_type => l_component_type
6139 , p_component_code => l_component_code
6140 , p_component_type_code => l_component_type_code
6141 , p_component_appl_id => l_component_appl_id
6142 , p_amb_context_code => l_amb_context_code
6143 , p_side => 'NA'
6144 );
6145
6146
6147 --
6148 --
6149 END IF;
6150 --
6151 -- Bug 4922099
6152 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6153 (NVL(l_enc_upg_option, 'N') = 'O')
6154 ) AND
6155 (l_bflow_method_code = 'PRIOR_ENTRY')
6156 )
6157 THEN
6158 IF
6159 --
6160 1 = 2
6161 --
6162 THEN
6166 ,p_token_1 => 'LINE_NUMBER'
6163 xla_accounting_err_pkg.build_message
6164 (p_appli_s_name => 'XLA'
6165 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6167 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
6168 ,p_token_2 => 'LINE_TYPE_NAME'
6169 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
6170 l_component_type
6171 ,l_component_code
6172 ,l_component_type_code
6173 ,l_component_appl_id
6174 ,l_amb_context_code
6175 ,l_entity_code
6176 ,l_event_class_code
6177 )
6178 ,p_token_3 => 'OWNER'
6179 ,p_value_3 => xla_lookups_pkg.get_meaning(
6180 p_lookup_type => 'XLA_OWNER_TYPE'
6181 ,p_lookup_code => l_component_type_code
6182 )
6183 ,p_token_4 => 'PRODUCT_NAME'
6184 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6185 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6186 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6187 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6188 ,p_ae_header_id => NULL
6189 );
6190
6191 IF (C_LEVEL_ERROR>= g_log_level) THEN
6192 trace
6193 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6194 ,p_level => C_LEVEL_ERROR
6195 ,p_module => l_log_module);
6196 END IF;
6197 END IF;
6198 END IF;
6199 --
6200 --
6201 ------------------------------------------------------------------------------------------------
6202 -- 4219869 Business Flow
6203 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6204 -- Prior Entry. Currently, the following code is always generated.
6205 ------------------------------------------------------------------------------------------------
6206 XLA_AE_LINES_PKG.ValidateCurrentLine;
6207
6208 ------------------------------------------------------------------------------------
6209 -- 4219869 Business Flow
6210 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6211 ------------------------------------------------------------------------------------
6212 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6213
6214 ----------------------------------------------------------------------------------
6215 -- 4219869 Business Flow
6216 -- Update journal entry status -- Need to generate this within IF <condition>
6217 ----------------------------------------------------------------------------------
6218 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6219 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6220 ,p_balance_type_code => l_balance_type_code
6221 );
6222
6223 -------------------------------------------------------------------------------------------
6224 -- 4262811 - Generate the Accrual Reversal lines
6225 -------------------------------------------------------------------------------------------
6226 BEGIN
6227 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6228 (g_array_event(p_event_id).array_value_num('header_index'));
6229 IF l_acc_rev_flag IS NULL THEN
6230 l_acc_rev_flag := 'N';
6231 END IF;
6232 EXCEPTION
6233 WHEN OTHERS THEN
6234 l_acc_rev_flag := 'N';
6235 END;
6236 --
6237 IF (l_acc_rev_flag = 'Y') THEN
6238
6239 -- 4645092 ------------------------------------------------------------------------------
6240 -- To allow MPA report to determine if it should generate report process
6241 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6242 ------------------------------------------------------------------------------------------
6243
6244 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6245 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6246
6247 --
6248 -- Update the line information that should be overwritten
6249 --
6250 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6251 p_header_num => 1);
6252 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
6253
6254 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6255
6256 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
6257 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6258 END IF;
6259
6260 --
6264 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
6261 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6262 --
6263 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6265 ELSE
6266 ---------------------------------------------------------------------------------------------------
6267 -- 4262811a Switch Sign
6268 ---------------------------------------------------------------------------------------------------
6269 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
6270 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6271 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6272 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6273 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6274 -- 5132302
6275 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6276 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6277
6278 END IF;
6279
6280 -- 4955764
6281 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6282 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6283
6284
6285 XLA_AE_LINES_PKG.ValidateCurrentLine;
6286 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6287
6288 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6289 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6290 ,p_balance_type_code => l_balance_type_code);
6291
6292 END IF;
6293
6294 -----------------------------------------------------------------------------------------
6295 -- 4262811 Multiperiod Accounting
6296 -----------------------------------------------------------------------------------------
6297 -- No MPA option is assigned.
6298
6299
6300 END IF;
6301 END IF;
6302 --
6303
6304 --
6305 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6306 trace
6307 (p_msg => 'END of AcctLineType_14'
6308 ,p_level => C_LEVEL_PROCEDURE
6309 ,p_module => l_log_module);
6310 END IF;
6311 --
6312 EXCEPTION
6313 WHEN xla_exceptions_pkg.application_exception THEN
6314 RAISE;
6315 WHEN OTHERS THEN
6316 xla_exceptions_pkg.raise_message
6317 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_14');
6318 END AcctLineType_14;
6319 --
6320
6321 ---------------------------------------
6322 --
6323 -- PRIVATE FUNCTION
6324 -- AcctLineType_15
6325 --
6326 ---------------------------------------
6327 PROCEDURE AcctLineType_15 (
6328 p_application_id IN NUMBER
6329 ,p_event_id IN NUMBER
6330 ,p_calculate_acctd_flag IN VARCHAR2
6331 ,p_calculate_g_l_flag IN VARCHAR2
6332 ,p_actual_flag IN OUT VARCHAR2
6333 ,p_balance_type_code OUT VARCHAR2
6334 ,p_gain_or_loss_ref OUT VARCHAR2
6335
6336 --Investor Agreement Number
6337 , p_source_3 IN VARCHAR2
6338 --Investor Agreement Product Name
6339 , p_source_4 IN VARCHAR2
6340 --Distribution Account
6341 , p_source_5 IN NUMBER
6342 --Accounting Line Type
6343 , p_source_6 IN VARCHAR2
6344 , p_source_6_meaning IN VARCHAR2
6345 --Accounting Distribution Identifier
6346 , p_source_7 IN NUMBER
6347 --Distribution Type
6348 , p_source_8 IN VARCHAR2
6349 --Distribution Entered Amount
6350 , p_source_9 IN NUMBER
6351 --Transaction Currency Code
6352 , p_source_10 IN VARCHAR2
6353 --Transaction Currency Conversion Date
6354 , p_source_11 IN DATE
6355 --Transaction Currency Conversion Rate
6356 , p_source_12 IN NUMBER
6357 --Transaction Currency Conversion Type
6358 , p_source_13 IN VARCHAR2
6359 )
6360 IS
6361
6362 l_component_type VARCHAR2(80);
6363 l_component_code VARCHAR2(30);
6364 l_component_type_code VARCHAR2(1);
6365 l_component_appl_id INTEGER;
6366 l_amb_context_code VARCHAR2(30);
6367 l_entity_code VARCHAR2(30);
6368 l_event_class_code VARCHAR2(30);
6369 l_ae_header_id NUMBER;
6370 l_event_type_code VARCHAR2(30);
6371 l_line_definition_code VARCHAR2(30);
6372 l_line_definition_owner_code VARCHAR2(1);
6373 --
6374 -- adr variables
6375 l_segment VARCHAR2(30);
6376 l_ccid NUMBER;
6377 l_adr_transaction_coa_id NUMBER;
6378 l_adr_accounting_coa_id NUMBER;
6379 l_adr_flexfield_segment_code VARCHAR2(30);
6380 l_adr_flex_value_set_id NUMBER;
6381 l_adr_value_type_code VARCHAR2(30);
6382 l_adr_value_combination_id NUMBER;
6383 l_adr_value_segment_code VARCHAR2(30);
6384
6385 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
6386 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
6387 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
6388 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
6389
6390 -- 4262811 Variables ------------------------------------------------------------------------------------------
6391 l_entered_amt_idx NUMBER;
6392 l_accted_amt_idx NUMBER;
6393 l_acc_rev_flag VARCHAR2(1);
6394 l_accrual_line_num NUMBER;
6398 l_num_entries NUMBER;
6395 l_tmp_amt NUMBER;
6396 l_acc_rev_natural_side_code VARCHAR2(1);
6397
6399 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
6400 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
6401 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
6402 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
6403 l_recog_line_1 NUMBER;
6404 l_recog_line_2 NUMBER;
6405
6406 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
6407 l_bflow_applied_to_amt NUMBER; -- 5132302
6408 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
6409
6410 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6411
6412 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
6413 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
6414
6415 ---------------------------------------------------------------------------------------------------------------
6416
6417
6418 --
6419 -- bulk performance
6420 --
6421 l_balance_type_code VARCHAR2(1);
6422 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
6423 l_log_module VARCHAR2(240);
6424
6425 --
6426 -- Upgrade strategy
6427 --
6428 l_actual_upg_option VARCHAR2(1);
6429 l_enc_upg_option VARCHAR2(1);
6430
6431 --
6432 BEGIN
6433 --
6434 IF g_log_enabled THEN
6435 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_15';
6436 END IF;
6437 --
6438 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6439
6440 trace
6441 (p_msg => 'BEGIN of AcctLineType_15'
6442 ,p_level => C_LEVEL_PROCEDURE
6443 ,p_module => l_log_module);
6444
6445 END IF;
6446 --
6447 l_component_type := 'AMB_JLT';
6448 l_component_code := 'OKL_INVESTOR_DR';
6449 l_component_type_code := 'S';
6450 l_component_appl_id := 540;
6451 l_amb_context_code := 'DEFAULT';
6452 l_entity_code := 'INVESTOR_AGREEMENTS';
6453 l_event_class_code := 'INVESTOR';
6454 l_event_type_code := 'INVESTOR_ALL';
6455 l_line_definition_owner_code := 'S';
6456 l_line_definition_code := 'OKL_INVESTOR';
6457 --
6458 l_balance_type_code := 'A';
6459 l_segment := NULL;
6460 l_ccid := NULL;
6461 l_adr_transaction_coa_id := NULL;
6462 l_adr_accounting_coa_id := NULL;
6463 l_adr_flexfield_segment_code := NULL;
6464 l_adr_flex_value_set_id := NULL;
6465 l_adr_value_type_code := NULL;
6466 l_adr_value_combination_id := NULL;
6467 l_adr_value_segment_code := NULL;
6468
6469 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
6470 l_bflow_class_code := ''; -- 4219869 Business Flow
6471 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
6472 l_budgetary_control_flag := 'N';
6473
6474 l_bflow_applied_to_amt_idx := NULL; -- 5132302
6475 l_bflow_applied_to_amt := NULL; -- 5132302
6476 l_entered_amt_idx := NULL; -- 4262811
6477 l_accted_amt_idx := NULL; -- 4262811
6478 l_acc_rev_flag := NULL; -- 4262811
6479 l_accrual_line_num := NULL; -- 4262811
6480 l_tmp_amt := NULL; -- 4262811
6481 --
6482
6483 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6484 l_balance_type_code <> 'B' THEN
6485 IF NVL(p_source_6,'
6486 ') = 'LEASE_DEBIT'
6487 THEN
6488
6489 --
6490 XLA_AE_LINES_PKG.SetNewLine;
6491
6492 p_balance_type_code := l_balance_type_code;
6493 -- set the flag so later we will know whether the gain loss line needs to be created
6494
6495 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6496 p_actual_flag :='A';
6497 END IF;
6498
6499 --
6500 -- bulk performance
6501 --
6502 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6503 p_header_num => 0); -- 4262811
6504 --
6505 -- set accounting line options
6506 --
6507 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6508 p_natural_side_code => 'D'
6509 , p_gain_or_loss_flag => 'N'
6510 , p_gl_transfer_mode_code => 'S'
6511 , p_acct_entry_type_code => 'A'
6512 , p_switch_side_flag => 'Y'
6513 , p_merge_duplicate_code => 'N'
6514 );
6515 --
6516 l_acc_rev_natural_side_code := 'C'; -- 4262811
6517 --
6518 --
6519 -- set accounting line type info
6520 --
6521 xla_ae_lines_pkg.SetAcctLineType
6522 (p_component_type => l_component_type
6523 ,p_event_type_code => l_event_type_code
6524 ,p_line_definition_owner_code => l_line_definition_owner_code
6525 ,p_line_definition_code => l_line_definition_code
6526 ,p_accounting_line_code => l_component_code
6527 ,p_accounting_line_type_code => l_component_type_code
6528 ,p_accounting_line_appl_id => l_component_appl_id
6529 ,p_amb_context_code => l_amb_context_code
6530 ,p_entity_code => l_entity_code
6531 ,p_event_class_code => l_event_class_code);
6532 --
6533 -- set accounting class
6534 --
6535 xla_ae_lines_pkg.SetAcctClass(
6536 p_accounting_class_code => 'INVESTOR'
6537 , p_ae_header_id => l_ae_header_id
6541 -- set rounding class
6538 );
6539
6540 --
6542 --
6543 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6544 'INVESTOR';
6545
6546 --
6547 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6548 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6549 --
6550 -- bulk performance
6551 --
6552 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6553
6554 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6555 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6556
6557 -- 4955764
6558 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6559 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6560
6561 -- 4458381 Public Sector Enh
6562
6563 --
6564 -- set accounting attributes for the line type
6565 --
6566 l_entered_amt_idx := 3;
6567 l_accted_amt_idx := NULL;
6568 l_bflow_applied_to_amt_idx := NULL; -- 5132302
6569 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
6570 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
6571 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
6572 l_rec_acct_attrs.array_char_value(2) := p_source_8;
6573 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
6574 l_rec_acct_attrs.array_num_value(3) := p_source_9;
6575 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
6576 l_rec_acct_attrs.array_char_value(4) := p_source_10;
6577 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
6578 l_rec_acct_attrs.array_date_value(5) := p_source_11;
6579 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
6580 l_rec_acct_attrs.array_num_value(6) := p_source_12;
6581 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
6582 l_rec_acct_attrs.array_char_value(7) := p_source_13;
6583
6584 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6585 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6586
6587 ---------------------------------------------------------------------------------------------------------------
6588 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6589 ---------------------------------------------------------------------------------------------------------------
6590 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6591
6592 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6593 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6594
6595 IF xla_accounting_cache_pkg.GetValueChar
6596 (p_source_code => 'LEDGER_CATEGORY_CODE'
6597 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6598 AND l_bflow_method_code = 'PRIOR_ENTRY'
6599 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6600 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6601 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6602 )
6603 THEN
6604 xla_ae_lines_pkg.BflowUpgEntry
6605 (p_business_method_code => l_bflow_method_code
6606 ,p_business_class_code => l_bflow_class_code
6607 ,p_balance_type => l_balance_type_code);
6608 ELSE
6609 NULL;
6610 -- No business flow processing for business flow method of NONE.
6611 END IF;
6612
6613 --
6614 -- call analytical criteria
6615 --
6616
6617 --
6618 -- call description
6619 --
6620
6621 xla_ae_lines_pkg.SetLineDescription(
6622 p_ae_header_id => l_ae_header_id
6623 ,p_description => Description_2 (
6624 p_application_id => p_application_id
6625 , p_ae_header_id => l_ae_header_id
6626 , p_source_3 => p_source_3
6627 , p_source_4 => p_source_4
6628 )
6629 );
6630
6631
6632 --
6633 -- call ADRs
6634 -- Bug 4922099
6635 --
6636 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6637 (NVL(l_actual_upg_option, 'N') = 'O') OR
6638 (NVL(l_enc_upg_option, 'N') = 'O')
6639 )
6640 THEN
6641 NULL;
6642 --
6643 --
6644
6645 l_ccid := AcctDerRule_3(
6646 p_application_id => p_application_id
6647 , p_ae_header_id => l_ae_header_id
6648 , p_source_5 => p_source_5
6649 , x_transaction_coa_id => l_adr_transaction_coa_id
6650 , x_accounting_coa_id => l_adr_accounting_coa_id
6651 , x_value_type_code => l_adr_value_type_code
6652 , p_side => 'NA'
6653 );
6654
6655 xla_ae_lines_pkg.set_ccid(
6656 p_code_combination_id => l_ccid
6657 , p_value_type_code => l_adr_value_type_code
6658 , p_transaction_coa_id => l_adr_transaction_coa_id
6659 , p_accounting_coa_id => l_adr_accounting_coa_id
6660 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
6661 , p_adr_type_code => 'S'
6662 , p_component_type => l_component_type
6663 , p_component_code => l_component_code
6664 , p_component_type_code => l_component_type_code
6665 , p_component_appl_id => l_component_appl_id
6666 , p_amb_context_code => l_amb_context_code
6667 , p_side => 'NA'
6668 );
6672 --
6669
6670
6671 --
6673 END IF;
6674 --
6675 -- Bug 4922099
6676 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6677 (NVL(l_enc_upg_option, 'N') = 'O')
6678 ) AND
6679 (l_bflow_method_code = 'PRIOR_ENTRY')
6680 )
6681 THEN
6682 IF
6683 --
6684 1 = 2
6685 --
6686 THEN
6687 xla_accounting_err_pkg.build_message
6688 (p_appli_s_name => 'XLA'
6689 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6690 ,p_token_1 => 'LINE_NUMBER'
6691 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
6692 ,p_token_2 => 'LINE_TYPE_NAME'
6693 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
6694 l_component_type
6695 ,l_component_code
6696 ,l_component_type_code
6697 ,l_component_appl_id
6698 ,l_amb_context_code
6699 ,l_entity_code
6700 ,l_event_class_code
6701 )
6702 ,p_token_3 => 'OWNER'
6703 ,p_value_3 => xla_lookups_pkg.get_meaning(
6704 p_lookup_type => 'XLA_OWNER_TYPE'
6705 ,p_lookup_code => l_component_type_code
6706 )
6707 ,p_token_4 => 'PRODUCT_NAME'
6708 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6709 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6710 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6711 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6712 ,p_ae_header_id => NULL
6713 );
6714
6715 IF (C_LEVEL_ERROR>= g_log_level) THEN
6716 trace
6717 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6718 ,p_level => C_LEVEL_ERROR
6719 ,p_module => l_log_module);
6720 END IF;
6721 END IF;
6722 END IF;
6723 --
6724 --
6725 ------------------------------------------------------------------------------------------------
6726 -- 4219869 Business Flow
6727 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6728 -- Prior Entry. Currently, the following code is always generated.
6729 ------------------------------------------------------------------------------------------------
6730 XLA_AE_LINES_PKG.ValidateCurrentLine;
6731
6732 ------------------------------------------------------------------------------------
6733 -- 4219869 Business Flow
6734 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6735 ------------------------------------------------------------------------------------
6736 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6737
6738 ----------------------------------------------------------------------------------
6739 -- 4219869 Business Flow
6740 -- Update journal entry status -- Need to generate this within IF <condition>
6741 ----------------------------------------------------------------------------------
6742 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6743 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6744 ,p_balance_type_code => l_balance_type_code
6745 );
6746
6747 -------------------------------------------------------------------------------------------
6748 -- 4262811 - Generate the Accrual Reversal lines
6749 -------------------------------------------------------------------------------------------
6750 BEGIN
6751 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6752 (g_array_event(p_event_id).array_value_num('header_index'));
6753 IF l_acc_rev_flag IS NULL THEN
6754 l_acc_rev_flag := 'N';
6755 END IF;
6756 EXCEPTION
6757 WHEN OTHERS THEN
6758 l_acc_rev_flag := 'N';
6759 END;
6760 --
6761 IF (l_acc_rev_flag = 'Y') THEN
6762
6763 -- 4645092 ------------------------------------------------------------------------------
6764 -- To allow MPA report to determine if it should generate report process
6765 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6766 ------------------------------------------------------------------------------------------
6767
6768 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6769 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6770
6771 --
6772 -- Update the line information that should be overwritten
6773 --
6774 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6775 p_header_num => 1);
6779
6776 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
6777
6778 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6780 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
6781 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6782 END IF;
6783
6784 --
6785 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6786 --
6787 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6788 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
6789 ELSE
6790 ---------------------------------------------------------------------------------------------------
6791 -- 4262811a Switch Sign
6792 ---------------------------------------------------------------------------------------------------
6793 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
6794 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6795 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6796 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6797 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6798 -- 5132302
6799 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6800 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6801
6802 END IF;
6803
6804 -- 4955764
6805 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6806 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6807
6808
6809 XLA_AE_LINES_PKG.ValidateCurrentLine;
6810 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6811
6812 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6813 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6814 ,p_balance_type_code => l_balance_type_code);
6815
6816 END IF;
6817
6818 -----------------------------------------------------------------------------------------
6819 -- 4262811 Multiperiod Accounting
6820 -----------------------------------------------------------------------------------------
6821 -- No MPA option is assigned.
6822
6823
6824 END IF;
6825 END IF;
6826 --
6827
6828 --
6829 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6830 trace
6831 (p_msg => 'END of AcctLineType_15'
6832 ,p_level => C_LEVEL_PROCEDURE
6833 ,p_module => l_log_module);
6834 END IF;
6835 --
6836 EXCEPTION
6837 WHEN xla_exceptions_pkg.application_exception THEN
6838 RAISE;
6839 WHEN OTHERS THEN
6840 xla_exceptions_pkg.raise_message
6841 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_15');
6842 END AcctLineType_15;
6843 --
6844
6845 ---------------------------------------
6846 --
6847 -- PRIVATE FUNCTION
6848 -- AcctLineType_16
6849 --
6850 ---------------------------------------
6851 PROCEDURE AcctLineType_16 (
6852 p_application_id IN NUMBER
6853 ,p_event_id IN NUMBER
6854 ,p_calculate_acctd_flag IN VARCHAR2
6855 ,p_calculate_g_l_flag IN VARCHAR2
6856 ,p_actual_flag IN OUT VARCHAR2
6857 ,p_balance_type_code OUT VARCHAR2
6858 ,p_gain_or_loss_ref OUT VARCHAR2
6859
6860 --Contract Number
6861 , p_source_1 IN VARCHAR2
6862 --Contract Product Name
6863 , p_source_2 IN VARCHAR2
6864 --Distribution Account
6865 , p_source_5 IN NUMBER
6866 --Accounting Line Type
6867 , p_source_6 IN VARCHAR2
6868 , p_source_6_meaning IN VARCHAR2
6869 --Accounting Distribution Identifier
6870 , p_source_7 IN NUMBER
6871 --Distribution Type
6872 , p_source_8 IN VARCHAR2
6873 --Distribution Entered Amount
6874 , p_source_9 IN NUMBER
6875 --Transaction Currency Code
6876 , p_source_10 IN VARCHAR2
6877 --Transaction Currency Conversion Date
6878 , p_source_11 IN DATE
6879 --Transaction Currency Conversion Rate
6880 , p_source_12 IN NUMBER
6881 --Transaction Currency Conversion Type
6882 , p_source_13 IN VARCHAR2
6883 )
6884 IS
6885
6886 l_component_type VARCHAR2(80);
6887 l_component_code VARCHAR2(30);
6888 l_component_type_code VARCHAR2(1);
6889 l_component_appl_id INTEGER;
6890 l_amb_context_code VARCHAR2(30);
6891 l_entity_code VARCHAR2(30);
6892 l_event_class_code VARCHAR2(30);
6893 l_ae_header_id NUMBER;
6894 l_event_type_code VARCHAR2(30);
6895 l_line_definition_code VARCHAR2(30);
6896 l_line_definition_owner_code VARCHAR2(1);
6897 --
6898 -- adr variables
6899 l_segment VARCHAR2(30);
6900 l_ccid NUMBER;
6901 l_adr_transaction_coa_id NUMBER;
6902 l_adr_accounting_coa_id NUMBER;
6903 l_adr_flexfield_segment_code VARCHAR2(30);
6904 l_adr_flex_value_set_id NUMBER;
6905 l_adr_value_type_code VARCHAR2(30);
6906 l_adr_value_combination_id NUMBER;
6907 l_adr_value_segment_code VARCHAR2(30);
6908
6909 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
6910 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
6914 -- 4262811 Variables ------------------------------------------------------------------------------------------
6911 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
6912 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
6913
6915 l_entered_amt_idx NUMBER;
6916 l_accted_amt_idx NUMBER;
6917 l_acc_rev_flag VARCHAR2(1);
6918 l_accrual_line_num NUMBER;
6919 l_tmp_amt NUMBER;
6920 l_acc_rev_natural_side_code VARCHAR2(1);
6921
6922 l_num_entries NUMBER;
6923 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
6924 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
6925 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
6926 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
6927 l_recog_line_1 NUMBER;
6928 l_recog_line_2 NUMBER;
6929
6930 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
6931 l_bflow_applied_to_amt NUMBER; -- 5132302
6932 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
6933
6934 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6935
6936 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
6937 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
6938
6939 ---------------------------------------------------------------------------------------------------------------
6940
6941
6942 --
6943 -- bulk performance
6944 --
6945 l_balance_type_code VARCHAR2(1);
6946 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
6947 l_log_module VARCHAR2(240);
6948
6949 --
6950 -- Upgrade strategy
6951 --
6952 l_actual_upg_option VARCHAR2(1);
6953 l_enc_upg_option VARCHAR2(1);
6954
6955 --
6956 BEGIN
6957 --
6958 IF g_log_enabled THEN
6959 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_16';
6960 END IF;
6961 --
6962 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6963
6964 trace
6965 (p_msg => 'BEGIN of AcctLineType_16'
6966 ,p_level => C_LEVEL_PROCEDURE
6967 ,p_module => l_log_module);
6968
6969 END IF;
6970 --
6971 l_component_type := 'AMB_JLT';
6972 l_component_code := 'OKL_PRINCIPAL_ADJUSTMENT_CR';
6973 l_component_type_code := 'S';
6974 l_component_appl_id := 540;
6975 l_amb_context_code := 'DEFAULT';
6976 l_entity_code := 'TRANSACTIONS';
6977 l_event_class_code := 'PRINCIPAL_ADJUSTMENT';
6978 l_event_type_code := 'PRINCIPAL_ADJUSTMENT_ALL';
6979 l_line_definition_owner_code := 'S';
6980 l_line_definition_code := 'OKL_PRINCIPAL_ADJUSTMENT';
6981 --
6982 l_balance_type_code := 'A';
6983 l_segment := NULL;
6984 l_ccid := NULL;
6985 l_adr_transaction_coa_id := NULL;
6986 l_adr_accounting_coa_id := NULL;
6987 l_adr_flexfield_segment_code := NULL;
6988 l_adr_flex_value_set_id := NULL;
6989 l_adr_value_type_code := NULL;
6990 l_adr_value_combination_id := NULL;
6991 l_adr_value_segment_code := NULL;
6992
6993 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
6994 l_bflow_class_code := ''; -- 4219869 Business Flow
6995 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
6996 l_budgetary_control_flag := 'N';
6997
6998 l_bflow_applied_to_amt_idx := NULL; -- 5132302
6999 l_bflow_applied_to_amt := NULL; -- 5132302
7000 l_entered_amt_idx := NULL; -- 4262811
7001 l_accted_amt_idx := NULL; -- 4262811
7002 l_acc_rev_flag := NULL; -- 4262811
7003 l_accrual_line_num := NULL; -- 4262811
7004 l_tmp_amt := NULL; -- 4262811
7005 --
7006
7007 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7008 l_balance_type_code <> 'B' THEN
7009 IF NVL(p_source_6,'
7010 ') = 'LEASE_CREDIT'
7011 THEN
7012
7013 --
7014 XLA_AE_LINES_PKG.SetNewLine;
7015
7016 p_balance_type_code := l_balance_type_code;
7017 -- set the flag so later we will know whether the gain loss line needs to be created
7018
7019 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7020 p_actual_flag :='A';
7021 END IF;
7022
7023 --
7024 -- bulk performance
7025 --
7026 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7027 p_header_num => 0); -- 4262811
7028 --
7029 -- set accounting line options
7030 --
7031 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7032 p_natural_side_code => 'C'
7033 , p_gain_or_loss_flag => 'N'
7034 , p_gl_transfer_mode_code => 'S'
7035 , p_acct_entry_type_code => 'A'
7036 , p_switch_side_flag => 'Y'
7037 , p_merge_duplicate_code => 'N'
7038 );
7039 --
7040 l_acc_rev_natural_side_code := 'D'; -- 4262811
7041 --
7042 --
7043 -- set accounting line type info
7044 --
7045 xla_ae_lines_pkg.SetAcctLineType
7046 (p_component_type => l_component_type
7047 ,p_event_type_code => l_event_type_code
7048 ,p_line_definition_owner_code => l_line_definition_owner_code
7049 ,p_line_definition_code => l_line_definition_code
7050 ,p_accounting_line_code => l_component_code
7054 ,p_entity_code => l_entity_code
7051 ,p_accounting_line_type_code => l_component_type_code
7052 ,p_accounting_line_appl_id => l_component_appl_id
7053 ,p_amb_context_code => l_amb_context_code
7055 ,p_event_class_code => l_event_class_code);
7056 --
7057 -- set accounting class
7058 --
7059 xla_ae_lines_pkg.SetAcctClass(
7060 p_accounting_class_code => 'PRINCIPAL_ADJUSTMENT'
7061 , p_ae_header_id => l_ae_header_id
7062 );
7063
7064 --
7065 -- set rounding class
7066 --
7067 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7068 'PRINCIPAL_ADJUSTMENT';
7069
7070 --
7071 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7072 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7073 --
7074 -- bulk performance
7075 --
7076 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7077
7078 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7079 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7080
7081 -- 4955764
7082 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7083 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7084
7085 -- 4458381 Public Sector Enh
7086
7087 --
7088 -- set accounting attributes for the line type
7089 --
7090 l_entered_amt_idx := 3;
7091 l_accted_amt_idx := NULL;
7092 l_bflow_applied_to_amt_idx := NULL; -- 5132302
7093 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
7094 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
7095 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
7096 l_rec_acct_attrs.array_char_value(2) := p_source_8;
7097 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
7098 l_rec_acct_attrs.array_num_value(3) := p_source_9;
7099 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
7100 l_rec_acct_attrs.array_char_value(4) := p_source_10;
7101 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
7102 l_rec_acct_attrs.array_date_value(5) := p_source_11;
7103 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
7104 l_rec_acct_attrs.array_num_value(6) := p_source_12;
7105 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
7106 l_rec_acct_attrs.array_char_value(7) := p_source_13;
7107
7108 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7109 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7110
7111 ---------------------------------------------------------------------------------------------------------------
7112 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7113 ---------------------------------------------------------------------------------------------------------------
7114 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7115
7116 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7117 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7118
7119 IF xla_accounting_cache_pkg.GetValueChar
7120 (p_source_code => 'LEDGER_CATEGORY_CODE'
7121 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7122 AND l_bflow_method_code = 'PRIOR_ENTRY'
7123 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7124 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7125 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7126 )
7127 THEN
7128 xla_ae_lines_pkg.BflowUpgEntry
7129 (p_business_method_code => l_bflow_method_code
7130 ,p_business_class_code => l_bflow_class_code
7131 ,p_balance_type => l_balance_type_code);
7132 ELSE
7133 NULL;
7134 -- No business flow processing for business flow method of NONE.
7135 END IF;
7136
7137 --
7138 -- call analytical criteria
7139 --
7140
7141 --
7142 -- call description
7143 --
7144
7145 xla_ae_lines_pkg.SetLineDescription(
7146 p_ae_header_id => l_ae_header_id
7147 ,p_description => Description_1 (
7148 p_application_id => p_application_id
7149 , p_ae_header_id => l_ae_header_id
7150 , p_source_1 => p_source_1
7151 , p_source_2 => p_source_2
7152 )
7153 );
7154
7155
7156 --
7157 -- call ADRs
7158 -- Bug 4922099
7159 --
7160 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7161 (NVL(l_actual_upg_option, 'N') = 'O') OR
7162 (NVL(l_enc_upg_option, 'N') = 'O')
7163 )
7164 THEN
7165 NULL;
7166 --
7167 --
7168
7169 l_ccid := AcctDerRule_3(
7170 p_application_id => p_application_id
7171 , p_ae_header_id => l_ae_header_id
7172 , p_source_5 => p_source_5
7173 , x_transaction_coa_id => l_adr_transaction_coa_id
7174 , x_accounting_coa_id => l_adr_accounting_coa_id
7175 , x_value_type_code => l_adr_value_type_code
7176 , p_side => 'NA'
7177 );
7178
7179 xla_ae_lines_pkg.set_ccid(
7180 p_code_combination_id => l_ccid
7181 , p_value_type_code => l_adr_value_type_code
7185 , p_adr_type_code => 'S'
7182 , p_transaction_coa_id => l_adr_transaction_coa_id
7183 , p_accounting_coa_id => l_adr_accounting_coa_id
7184 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
7186 , p_component_type => l_component_type
7187 , p_component_code => l_component_code
7188 , p_component_type_code => l_component_type_code
7189 , p_component_appl_id => l_component_appl_id
7190 , p_amb_context_code => l_amb_context_code
7191 , p_side => 'NA'
7192 );
7193
7194
7195 --
7196 --
7197 END IF;
7198 --
7199 -- Bug 4922099
7200 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7201 (NVL(l_enc_upg_option, 'N') = 'O')
7202 ) AND
7203 (l_bflow_method_code = 'PRIOR_ENTRY')
7204 )
7205 THEN
7206 IF
7207 --
7208 1 = 2
7209 --
7210 THEN
7211 xla_accounting_err_pkg.build_message
7212 (p_appli_s_name => 'XLA'
7213 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7214 ,p_token_1 => 'LINE_NUMBER'
7215 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
7216 ,p_token_2 => 'LINE_TYPE_NAME'
7217 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
7218 l_component_type
7219 ,l_component_code
7220 ,l_component_type_code
7221 ,l_component_appl_id
7222 ,l_amb_context_code
7223 ,l_entity_code
7224 ,l_event_class_code
7225 )
7226 ,p_token_3 => 'OWNER'
7227 ,p_value_3 => xla_lookups_pkg.get_meaning(
7228 p_lookup_type => 'XLA_OWNER_TYPE'
7229 ,p_lookup_code => l_component_type_code
7230 )
7231 ,p_token_4 => 'PRODUCT_NAME'
7232 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7233 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7234 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7235 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7236 ,p_ae_header_id => NULL
7237 );
7238
7239 IF (C_LEVEL_ERROR>= g_log_level) THEN
7240 trace
7241 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7242 ,p_level => C_LEVEL_ERROR
7243 ,p_module => l_log_module);
7244 END IF;
7245 END IF;
7246 END IF;
7247 --
7248 --
7249 ------------------------------------------------------------------------------------------------
7250 -- 4219869 Business Flow
7251 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7252 -- Prior Entry. Currently, the following code is always generated.
7253 ------------------------------------------------------------------------------------------------
7254 XLA_AE_LINES_PKG.ValidateCurrentLine;
7255
7256 ------------------------------------------------------------------------------------
7257 -- 4219869 Business Flow
7258 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7259 ------------------------------------------------------------------------------------
7260 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7261
7262 ----------------------------------------------------------------------------------
7263 -- 4219869 Business Flow
7264 -- Update journal entry status -- Need to generate this within IF <condition>
7265 ----------------------------------------------------------------------------------
7266 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7267 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7268 ,p_balance_type_code => l_balance_type_code
7269 );
7270
7271 -------------------------------------------------------------------------------------------
7272 -- 4262811 - Generate the Accrual Reversal lines
7273 -------------------------------------------------------------------------------------------
7274 BEGIN
7275 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7276 (g_array_event(p_event_id).array_value_num('header_index'));
7277 IF l_acc_rev_flag IS NULL THEN
7278 l_acc_rev_flag := 'N';
7279 END IF;
7280 EXCEPTION
7281 WHEN OTHERS THEN
7282 l_acc_rev_flag := 'N';
7283 END;
7284 --
7285 IF (l_acc_rev_flag = 'Y') THEN
7286
7287 -- 4645092 ------------------------------------------------------------------------------
7288 -- To allow MPA report to determine if it should generate report process
7292 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7289 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7290 ------------------------------------------------------------------------------------------
7291
7293 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7294
7295 --
7296 -- Update the line information that should be overwritten
7297 --
7298 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7299 p_header_num => 1);
7300 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
7301
7302 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7303
7304 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
7305 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7306 END IF;
7307
7308 --
7309 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7310 --
7311 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7312 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
7313 ELSE
7314 ---------------------------------------------------------------------------------------------------
7315 -- 4262811a Switch Sign
7316 ---------------------------------------------------------------------------------------------------
7317 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
7318 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7319 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7320 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7321 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7322 -- 5132302
7323 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7324 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7325
7326 END IF;
7327
7328 -- 4955764
7329 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7330 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7331
7332
7333 XLA_AE_LINES_PKG.ValidateCurrentLine;
7334 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7335
7336 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7337 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7338 ,p_balance_type_code => l_balance_type_code);
7339
7340 END IF;
7341
7342 -----------------------------------------------------------------------------------------
7343 -- 4262811 Multiperiod Accounting
7344 -----------------------------------------------------------------------------------------
7345 -- No MPA option is assigned.
7346
7347
7348 END IF;
7349 END IF;
7350 --
7351
7352 --
7353 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7354 trace
7355 (p_msg => 'END of AcctLineType_16'
7356 ,p_level => C_LEVEL_PROCEDURE
7357 ,p_module => l_log_module);
7358 END IF;
7359 --
7360 EXCEPTION
7361 WHEN xla_exceptions_pkg.application_exception THEN
7362 RAISE;
7363 WHEN OTHERS THEN
7364 xla_exceptions_pkg.raise_message
7365 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_16');
7366 END AcctLineType_16;
7367 --
7368
7369 ---------------------------------------
7370 --
7371 -- PRIVATE FUNCTION
7372 -- AcctLineType_17
7373 --
7374 ---------------------------------------
7375 PROCEDURE AcctLineType_17 (
7376 p_application_id IN NUMBER
7377 ,p_event_id IN NUMBER
7378 ,p_calculate_acctd_flag IN VARCHAR2
7379 ,p_calculate_g_l_flag IN VARCHAR2
7380 ,p_actual_flag IN OUT VARCHAR2
7381 ,p_balance_type_code OUT VARCHAR2
7382 ,p_gain_or_loss_ref OUT VARCHAR2
7383
7384 --Contract Number
7385 , p_source_1 IN VARCHAR2
7386 --Contract Product Name
7387 , p_source_2 IN VARCHAR2
7388 --Distribution Account
7389 , p_source_5 IN NUMBER
7390 --Accounting Line Type
7391 , p_source_6 IN VARCHAR2
7392 , p_source_6_meaning IN VARCHAR2
7393 --Accounting Distribution Identifier
7394 , p_source_7 IN NUMBER
7395 --Distribution Type
7396 , p_source_8 IN VARCHAR2
7397 --Distribution Entered Amount
7398 , p_source_9 IN NUMBER
7399 --Transaction Currency Code
7400 , p_source_10 IN VARCHAR2
7401 --Transaction Currency Conversion Date
7402 , p_source_11 IN DATE
7403 --Transaction Currency Conversion Rate
7404 , p_source_12 IN NUMBER
7405 --Transaction Currency Conversion Type
7406 , p_source_13 IN VARCHAR2
7407 )
7408 IS
7409
7410 l_component_type VARCHAR2(80);
7411 l_component_code VARCHAR2(30);
7412 l_component_type_code VARCHAR2(1);
7413 l_component_appl_id INTEGER;
7414 l_amb_context_code VARCHAR2(30);
7415 l_entity_code VARCHAR2(30);
7416 l_event_class_code VARCHAR2(30);
7417 l_ae_header_id NUMBER;
7418 l_event_type_code VARCHAR2(30);
7419 l_line_definition_code VARCHAR2(30);
7420 l_line_definition_owner_code VARCHAR2(1);
7421 --
7422 -- adr variables
7423 l_segment VARCHAR2(30);
7427 l_adr_flexfield_segment_code VARCHAR2(30);
7424 l_ccid NUMBER;
7425 l_adr_transaction_coa_id NUMBER;
7426 l_adr_accounting_coa_id NUMBER;
7428 l_adr_flex_value_set_id NUMBER;
7429 l_adr_value_type_code VARCHAR2(30);
7430 l_adr_value_combination_id NUMBER;
7431 l_adr_value_segment_code VARCHAR2(30);
7432
7433 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
7434 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
7435 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
7436 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
7437
7438 -- 4262811 Variables ------------------------------------------------------------------------------------------
7439 l_entered_amt_idx NUMBER;
7440 l_accted_amt_idx NUMBER;
7441 l_acc_rev_flag VARCHAR2(1);
7442 l_accrual_line_num NUMBER;
7443 l_tmp_amt NUMBER;
7444 l_acc_rev_natural_side_code VARCHAR2(1);
7445
7446 l_num_entries NUMBER;
7447 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
7448 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
7449 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
7450 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
7451 l_recog_line_1 NUMBER;
7452 l_recog_line_2 NUMBER;
7453
7454 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
7455 l_bflow_applied_to_amt NUMBER; -- 5132302
7456 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
7457
7458 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7459
7460 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
7461 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
7462
7463 ---------------------------------------------------------------------------------------------------------------
7464
7465
7466 --
7467 -- bulk performance
7468 --
7469 l_balance_type_code VARCHAR2(1);
7470 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
7471 l_log_module VARCHAR2(240);
7472
7473 --
7474 -- Upgrade strategy
7475 --
7476 l_actual_upg_option VARCHAR2(1);
7477 l_enc_upg_option VARCHAR2(1);
7478
7479 --
7480 BEGIN
7481 --
7482 IF g_log_enabled THEN
7483 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_17';
7484 END IF;
7485 --
7486 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7487
7488 trace
7489 (p_msg => 'BEGIN of AcctLineType_17'
7490 ,p_level => C_LEVEL_PROCEDURE
7491 ,p_module => l_log_module);
7492
7493 END IF;
7494 --
7495 l_component_type := 'AMB_JLT';
7496 l_component_code := 'OKL_PRINCIPAL_ADJUSTMENT_DR';
7497 l_component_type_code := 'S';
7498 l_component_appl_id := 540;
7499 l_amb_context_code := 'DEFAULT';
7500 l_entity_code := 'TRANSACTIONS';
7501 l_event_class_code := 'PRINCIPAL_ADJUSTMENT';
7502 l_event_type_code := 'PRINCIPAL_ADJUSTMENT_ALL';
7503 l_line_definition_owner_code := 'S';
7504 l_line_definition_code := 'OKL_PRINCIPAL_ADJUSTMENT';
7505 --
7506 l_balance_type_code := 'A';
7507 l_segment := NULL;
7508 l_ccid := NULL;
7509 l_adr_transaction_coa_id := NULL;
7510 l_adr_accounting_coa_id := NULL;
7511 l_adr_flexfield_segment_code := NULL;
7512 l_adr_flex_value_set_id := NULL;
7513 l_adr_value_type_code := NULL;
7514 l_adr_value_combination_id := NULL;
7515 l_adr_value_segment_code := NULL;
7516
7517 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
7518 l_bflow_class_code := ''; -- 4219869 Business Flow
7519 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
7520 l_budgetary_control_flag := 'N';
7521
7522 l_bflow_applied_to_amt_idx := NULL; -- 5132302
7523 l_bflow_applied_to_amt := NULL; -- 5132302
7524 l_entered_amt_idx := NULL; -- 4262811
7525 l_accted_amt_idx := NULL; -- 4262811
7526 l_acc_rev_flag := NULL; -- 4262811
7527 l_accrual_line_num := NULL; -- 4262811
7528 l_tmp_amt := NULL; -- 4262811
7529 --
7530
7531 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7532 l_balance_type_code <> 'B' THEN
7533 IF NVL(p_source_6,'
7534 ') = 'LEASE_DEBIT'
7535 THEN
7536
7537 --
7538 XLA_AE_LINES_PKG.SetNewLine;
7539
7540 p_balance_type_code := l_balance_type_code;
7541 -- set the flag so later we will know whether the gain loss line needs to be created
7542
7543 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7544 p_actual_flag :='A';
7545 END IF;
7546
7547 --
7548 -- bulk performance
7549 --
7550 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7551 p_header_num => 0); -- 4262811
7552 --
7553 -- set accounting line options
7554 --
7555 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7556 p_natural_side_code => 'D'
7557 , p_gain_or_loss_flag => 'N'
7558 , p_gl_transfer_mode_code => 'S'
7559 , p_acct_entry_type_code => 'A'
7560 , p_switch_side_flag => 'Y'
7561 , p_merge_duplicate_code => 'N'
7562 );
7563 --
7567 -- set accounting line type info
7564 l_acc_rev_natural_side_code := 'C'; -- 4262811
7565 --
7566 --
7568 --
7569 xla_ae_lines_pkg.SetAcctLineType
7570 (p_component_type => l_component_type
7571 ,p_event_type_code => l_event_type_code
7572 ,p_line_definition_owner_code => l_line_definition_owner_code
7573 ,p_line_definition_code => l_line_definition_code
7574 ,p_accounting_line_code => l_component_code
7575 ,p_accounting_line_type_code => l_component_type_code
7576 ,p_accounting_line_appl_id => l_component_appl_id
7577 ,p_amb_context_code => l_amb_context_code
7578 ,p_entity_code => l_entity_code
7579 ,p_event_class_code => l_event_class_code);
7580 --
7581 -- set accounting class
7582 --
7583 xla_ae_lines_pkg.SetAcctClass(
7584 p_accounting_class_code => 'PRINCIPAL_ADJUSTMENT'
7585 , p_ae_header_id => l_ae_header_id
7586 );
7587
7588 --
7589 -- set rounding class
7590 --
7591 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7592 'PRINCIPAL_ADJUSTMENT';
7593
7594 --
7595 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7596 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7597 --
7598 -- bulk performance
7599 --
7600 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7601
7602 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7603 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7604
7605 -- 4955764
7606 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7607 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7608
7609 -- 4458381 Public Sector Enh
7610
7611 --
7612 -- set accounting attributes for the line type
7613 --
7614 l_entered_amt_idx := 3;
7615 l_accted_amt_idx := NULL;
7616 l_bflow_applied_to_amt_idx := NULL; -- 5132302
7617 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
7618 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
7619 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
7620 l_rec_acct_attrs.array_char_value(2) := p_source_8;
7621 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
7622 l_rec_acct_attrs.array_num_value(3) := p_source_9;
7623 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
7624 l_rec_acct_attrs.array_char_value(4) := p_source_10;
7625 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
7626 l_rec_acct_attrs.array_date_value(5) := p_source_11;
7627 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
7628 l_rec_acct_attrs.array_num_value(6) := p_source_12;
7629 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
7630 l_rec_acct_attrs.array_char_value(7) := p_source_13;
7631
7632 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7633 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7634
7635 ---------------------------------------------------------------------------------------------------------------
7636 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7637 ---------------------------------------------------------------------------------------------------------------
7638 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7639
7640 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7641 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7642
7643 IF xla_accounting_cache_pkg.GetValueChar
7644 (p_source_code => 'LEDGER_CATEGORY_CODE'
7645 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7646 AND l_bflow_method_code = 'PRIOR_ENTRY'
7647 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7648 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7649 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7650 )
7651 THEN
7652 xla_ae_lines_pkg.BflowUpgEntry
7653 (p_business_method_code => l_bflow_method_code
7654 ,p_business_class_code => l_bflow_class_code
7655 ,p_balance_type => l_balance_type_code);
7656 ELSE
7657 NULL;
7658 -- No business flow processing for business flow method of NONE.
7659 END IF;
7660
7661 --
7662 -- call analytical criteria
7663 --
7664
7665 --
7666 -- call description
7667 --
7668
7669 xla_ae_lines_pkg.SetLineDescription(
7670 p_ae_header_id => l_ae_header_id
7671 ,p_description => Description_1 (
7672 p_application_id => p_application_id
7673 , p_ae_header_id => l_ae_header_id
7674 , p_source_1 => p_source_1
7675 , p_source_2 => p_source_2
7676 )
7677 );
7678
7679
7680 --
7681 -- call ADRs
7682 -- Bug 4922099
7683 --
7684 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7685 (NVL(l_actual_upg_option, 'N') = 'O') OR
7686 (NVL(l_enc_upg_option, 'N') = 'O')
7687 )
7688 THEN
7689 NULL;
7690 --
7691 --
7692
7693 l_ccid := AcctDerRule_3(
7694 p_application_id => p_application_id
7695 , p_ae_header_id => l_ae_header_id
7699 , x_value_type_code => l_adr_value_type_code
7696 , p_source_5 => p_source_5
7697 , x_transaction_coa_id => l_adr_transaction_coa_id
7698 , x_accounting_coa_id => l_adr_accounting_coa_id
7700 , p_side => 'NA'
7701 );
7702
7703 xla_ae_lines_pkg.set_ccid(
7704 p_code_combination_id => l_ccid
7705 , p_value_type_code => l_adr_value_type_code
7706 , p_transaction_coa_id => l_adr_transaction_coa_id
7707 , p_accounting_coa_id => l_adr_accounting_coa_id
7708 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
7709 , p_adr_type_code => 'S'
7710 , p_component_type => l_component_type
7711 , p_component_code => l_component_code
7712 , p_component_type_code => l_component_type_code
7713 , p_component_appl_id => l_component_appl_id
7714 , p_amb_context_code => l_amb_context_code
7715 , p_side => 'NA'
7716 );
7717
7718
7719 --
7720 --
7721 END IF;
7722 --
7723 -- Bug 4922099
7724 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7725 (NVL(l_enc_upg_option, 'N') = 'O')
7726 ) AND
7727 (l_bflow_method_code = 'PRIOR_ENTRY')
7728 )
7729 THEN
7730 IF
7731 --
7732 1 = 2
7733 --
7734 THEN
7735 xla_accounting_err_pkg.build_message
7736 (p_appli_s_name => 'XLA'
7737 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7738 ,p_token_1 => 'LINE_NUMBER'
7739 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
7740 ,p_token_2 => 'LINE_TYPE_NAME'
7741 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
7742 l_component_type
7743 ,l_component_code
7744 ,l_component_type_code
7745 ,l_component_appl_id
7746 ,l_amb_context_code
7747 ,l_entity_code
7748 ,l_event_class_code
7749 )
7750 ,p_token_3 => 'OWNER'
7751 ,p_value_3 => xla_lookups_pkg.get_meaning(
7752 p_lookup_type => 'XLA_OWNER_TYPE'
7753 ,p_lookup_code => l_component_type_code
7754 )
7755 ,p_token_4 => 'PRODUCT_NAME'
7756 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7757 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7758 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7759 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7760 ,p_ae_header_id => NULL
7761 );
7762
7763 IF (C_LEVEL_ERROR>= g_log_level) THEN
7764 trace
7765 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7766 ,p_level => C_LEVEL_ERROR
7767 ,p_module => l_log_module);
7768 END IF;
7769 END IF;
7770 END IF;
7771 --
7772 --
7773 ------------------------------------------------------------------------------------------------
7774 -- 4219869 Business Flow
7775 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7776 -- Prior Entry. Currently, the following code is always generated.
7777 ------------------------------------------------------------------------------------------------
7778 XLA_AE_LINES_PKG.ValidateCurrentLine;
7779
7780 ------------------------------------------------------------------------------------
7781 -- 4219869 Business Flow
7782 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7783 ------------------------------------------------------------------------------------
7784 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7785
7786 ----------------------------------------------------------------------------------
7787 -- 4219869 Business Flow
7788 -- Update journal entry status -- Need to generate this within IF <condition>
7789 ----------------------------------------------------------------------------------
7790 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7791 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7792 ,p_balance_type_code => l_balance_type_code
7793 );
7794
7795 -------------------------------------------------------------------------------------------
7796 -- 4262811 - Generate the Accrual Reversal lines
7797 -------------------------------------------------------------------------------------------
7798 BEGIN
7799 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7800 (g_array_event(p_event_id).array_value_num('header_index'));
7804 EXCEPTION
7801 IF l_acc_rev_flag IS NULL THEN
7802 l_acc_rev_flag := 'N';
7803 END IF;
7805 WHEN OTHERS THEN
7806 l_acc_rev_flag := 'N';
7807 END;
7808 --
7809 IF (l_acc_rev_flag = 'Y') THEN
7810
7811 -- 4645092 ------------------------------------------------------------------------------
7812 -- To allow MPA report to determine if it should generate report process
7813 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7814 ------------------------------------------------------------------------------------------
7815
7816 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7817 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7818
7819 --
7820 -- Update the line information that should be overwritten
7821 --
7822 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7823 p_header_num => 1);
7824 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
7825
7826 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7827
7828 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
7829 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7830 END IF;
7831
7832 --
7833 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7834 --
7835 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7836 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
7837 ELSE
7838 ---------------------------------------------------------------------------------------------------
7839 -- 4262811a Switch Sign
7840 ---------------------------------------------------------------------------------------------------
7841 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
7842 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7843 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7844 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7845 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7846 -- 5132302
7847 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7848 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7849
7850 END IF;
7851
7852 -- 4955764
7853 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7854 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7855
7856
7857 XLA_AE_LINES_PKG.ValidateCurrentLine;
7858 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7859
7860 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7861 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7862 ,p_balance_type_code => l_balance_type_code);
7863
7864 END IF;
7865
7866 -----------------------------------------------------------------------------------------
7867 -- 4262811 Multiperiod Accounting
7868 -----------------------------------------------------------------------------------------
7869 -- No MPA option is assigned.
7870
7871
7872 END IF;
7873 END IF;
7874 --
7875
7876 --
7877 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7878 trace
7879 (p_msg => 'END of AcctLineType_17'
7880 ,p_level => C_LEVEL_PROCEDURE
7881 ,p_module => l_log_module);
7882 END IF;
7883 --
7884 EXCEPTION
7885 WHEN xla_exceptions_pkg.application_exception THEN
7886 RAISE;
7887 WHEN OTHERS THEN
7888 xla_exceptions_pkg.raise_message
7889 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_17');
7890 END AcctLineType_17;
7891 --
7892
7893 ---------------------------------------
7894 --
7895 -- PRIVATE FUNCTION
7896 -- AcctLineType_18
7897 --
7898 ---------------------------------------
7899 PROCEDURE AcctLineType_18 (
7900 p_application_id IN NUMBER
7901 ,p_event_id IN NUMBER
7902 ,p_calculate_acctd_flag IN VARCHAR2
7903 ,p_calculate_g_l_flag IN VARCHAR2
7904 ,p_actual_flag IN OUT VARCHAR2
7905 ,p_balance_type_code OUT VARCHAR2
7906 ,p_gain_or_loss_ref OUT VARCHAR2
7907
7908 --Contract Number
7909 , p_source_1 IN VARCHAR2
7910 --Contract Product Name
7911 , p_source_2 IN VARCHAR2
7912 --Distribution Account
7913 , p_source_5 IN NUMBER
7914 --Accounting Line Type
7915 , p_source_6 IN VARCHAR2
7916 , p_source_6_meaning IN VARCHAR2
7917 --Accounting Distribution Identifier
7918 , p_source_7 IN NUMBER
7919 --Distribution Type
7920 , p_source_8 IN VARCHAR2
7921 --Distribution Entered Amount
7922 , p_source_9 IN NUMBER
7923 --Transaction Currency Code
7924 , p_source_10 IN VARCHAR2
7925 --Transaction Currency Conversion Date
7926 , p_source_11 IN DATE
7927 --Transaction Currency Conversion Rate
7928 , p_source_12 IN NUMBER
7929 --Transaction Currency Conversion Type
7930 , p_source_13 IN VARCHAR2
7931 )
7932 IS
7933
7934 l_component_type VARCHAR2(80);
7935 l_component_code VARCHAR2(30);
7936 l_component_type_code VARCHAR2(1);
7940 l_event_class_code VARCHAR2(30);
7937 l_component_appl_id INTEGER;
7938 l_amb_context_code VARCHAR2(30);
7939 l_entity_code VARCHAR2(30);
7941 l_ae_header_id NUMBER;
7942 l_event_type_code VARCHAR2(30);
7943 l_line_definition_code VARCHAR2(30);
7944 l_line_definition_owner_code VARCHAR2(1);
7945 --
7946 -- adr variables
7947 l_segment VARCHAR2(30);
7948 l_ccid NUMBER;
7949 l_adr_transaction_coa_id NUMBER;
7950 l_adr_accounting_coa_id NUMBER;
7951 l_adr_flexfield_segment_code VARCHAR2(30);
7952 l_adr_flex_value_set_id NUMBER;
7953 l_adr_value_type_code VARCHAR2(30);
7954 l_adr_value_combination_id NUMBER;
7955 l_adr_value_segment_code VARCHAR2(30);
7956
7957 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
7958 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
7959 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
7960 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
7961
7962 -- 4262811 Variables ------------------------------------------------------------------------------------------
7963 l_entered_amt_idx NUMBER;
7964 l_accted_amt_idx NUMBER;
7965 l_acc_rev_flag VARCHAR2(1);
7966 l_accrual_line_num NUMBER;
7967 l_tmp_amt NUMBER;
7968 l_acc_rev_natural_side_code VARCHAR2(1);
7969
7970 l_num_entries NUMBER;
7971 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
7972 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
7973 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
7974 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
7975 l_recog_line_1 NUMBER;
7976 l_recog_line_2 NUMBER;
7977
7978 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
7979 l_bflow_applied_to_amt NUMBER; -- 5132302
7980 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
7981
7982 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7983
7984 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
7985 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
7986
7987 ---------------------------------------------------------------------------------------------------------------
7988
7989
7990 --
7991 -- bulk performance
7992 --
7993 l_balance_type_code VARCHAR2(1);
7994 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
7995 l_log_module VARCHAR2(240);
7996
7997 --
7998 -- Upgrade strategy
7999 --
8000 l_actual_upg_option VARCHAR2(1);
8001 l_enc_upg_option VARCHAR2(1);
8002
8003 --
8004 BEGIN
8005 --
8006 IF g_log_enabled THEN
8007 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_18';
8008 END IF;
8009 --
8010 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8011
8012 trace
8013 (p_msg => 'BEGIN of AcctLineType_18'
8014 ,p_level => C_LEVEL_PROCEDURE
8015 ,p_module => l_log_module);
8016
8017 END IF;
8018 --
8019 l_component_type := 'AMB_JLT';
8020 l_component_code := 'OKL_REBOOK_CR';
8021 l_component_type_code := 'S';
8022 l_component_appl_id := 540;
8023 l_amb_context_code := 'DEFAULT';
8024 l_entity_code := 'CONTRACTS';
8025 l_event_class_code := 'REBOOK';
8026 l_event_type_code := 'REBOOK_ALL';
8027 l_line_definition_owner_code := 'S';
8028 l_line_definition_code := 'OKL_REBOOK';
8029 --
8030 l_balance_type_code := 'A';
8031 l_segment := NULL;
8032 l_ccid := NULL;
8033 l_adr_transaction_coa_id := NULL;
8034 l_adr_accounting_coa_id := NULL;
8035 l_adr_flexfield_segment_code := NULL;
8036 l_adr_flex_value_set_id := NULL;
8037 l_adr_value_type_code := NULL;
8038 l_adr_value_combination_id := NULL;
8039 l_adr_value_segment_code := NULL;
8040
8041 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
8042 l_bflow_class_code := ''; -- 4219869 Business Flow
8043 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
8044 l_budgetary_control_flag := 'N';
8045
8046 l_bflow_applied_to_amt_idx := NULL; -- 5132302
8047 l_bflow_applied_to_amt := NULL; -- 5132302
8048 l_entered_amt_idx := NULL; -- 4262811
8049 l_accted_amt_idx := NULL; -- 4262811
8050 l_acc_rev_flag := NULL; -- 4262811
8051 l_accrual_line_num := NULL; -- 4262811
8052 l_tmp_amt := NULL; -- 4262811
8053 --
8054
8055 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8056 l_balance_type_code <> 'B' THEN
8057 IF NVL(p_source_6,'
8058 ') = 'LEASE_CREDIT'
8059 THEN
8060
8061 --
8062 XLA_AE_LINES_PKG.SetNewLine;
8063
8064 p_balance_type_code := l_balance_type_code;
8065 -- set the flag so later we will know whether the gain loss line needs to be created
8066
8067 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8068 p_actual_flag :='A';
8069 END IF;
8070
8071 --
8072 -- bulk performance
8073 --
8074 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8075 p_header_num => 0); -- 4262811
8076 --
8077 -- set accounting line options
8078 --
8082 , p_gl_transfer_mode_code => 'S'
8079 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8080 p_natural_side_code => 'C'
8081 , p_gain_or_loss_flag => 'N'
8083 , p_acct_entry_type_code => 'A'
8084 , p_switch_side_flag => 'Y'
8085 , p_merge_duplicate_code => 'N'
8086 );
8087 --
8088 l_acc_rev_natural_side_code := 'D'; -- 4262811
8089 --
8090 --
8091 -- set accounting line type info
8092 --
8093 xla_ae_lines_pkg.SetAcctLineType
8094 (p_component_type => l_component_type
8095 ,p_event_type_code => l_event_type_code
8096 ,p_line_definition_owner_code => l_line_definition_owner_code
8097 ,p_line_definition_code => l_line_definition_code
8098 ,p_accounting_line_code => l_component_code
8099 ,p_accounting_line_type_code => l_component_type_code
8100 ,p_accounting_line_appl_id => l_component_appl_id
8101 ,p_amb_context_code => l_amb_context_code
8102 ,p_entity_code => l_entity_code
8103 ,p_event_class_code => l_event_class_code);
8104 --
8105 -- set accounting class
8106 --
8107 xla_ae_lines_pkg.SetAcctClass(
8108 p_accounting_class_code => 'REBOOK'
8109 , p_ae_header_id => l_ae_header_id
8110 );
8111
8112 --
8113 -- set rounding class
8114 --
8115 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
8116 'REBOOK';
8117
8118 --
8119 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
8120 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
8121 --
8122 -- bulk performance
8123 --
8124 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
8125
8126 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
8127 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
8128
8129 -- 4955764
8130 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8131 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
8132
8133 -- 4458381 Public Sector Enh
8134
8135 --
8136 -- set accounting attributes for the line type
8137 --
8138 l_entered_amt_idx := 3;
8139 l_accted_amt_idx := NULL;
8140 l_bflow_applied_to_amt_idx := NULL; -- 5132302
8141 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
8142 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
8143 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
8144 l_rec_acct_attrs.array_char_value(2) := p_source_8;
8145 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
8146 l_rec_acct_attrs.array_num_value(3) := p_source_9;
8147 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
8148 l_rec_acct_attrs.array_char_value(4) := p_source_10;
8149 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
8150 l_rec_acct_attrs.array_date_value(5) := p_source_11;
8151 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
8152 l_rec_acct_attrs.array_num_value(6) := p_source_12;
8153 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
8154 l_rec_acct_attrs.array_char_value(7) := p_source_13;
8155
8156 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8157 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8158
8159 ---------------------------------------------------------------------------------------------------------------
8160 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8161 ---------------------------------------------------------------------------------------------------------------
8162 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8163
8164 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8165 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8166
8167 IF xla_accounting_cache_pkg.GetValueChar
8168 (p_source_code => 'LEDGER_CATEGORY_CODE'
8169 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8170 AND l_bflow_method_code = 'PRIOR_ENTRY'
8171 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8172 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8173 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8174 )
8175 THEN
8176 xla_ae_lines_pkg.BflowUpgEntry
8177 (p_business_method_code => l_bflow_method_code
8178 ,p_business_class_code => l_bflow_class_code
8179 ,p_balance_type => l_balance_type_code);
8180 ELSE
8181 NULL;
8182 -- No business flow processing for business flow method of NONE.
8183 END IF;
8184
8185 --
8186 -- call analytical criteria
8187 --
8188
8189 --
8190 -- call description
8191 --
8192
8193 xla_ae_lines_pkg.SetLineDescription(
8194 p_ae_header_id => l_ae_header_id
8195 ,p_description => Description_1 (
8196 p_application_id => p_application_id
8197 , p_ae_header_id => l_ae_header_id
8198 , p_source_1 => p_source_1
8199 , p_source_2 => p_source_2
8200 )
8201 );
8202
8203
8204 --
8205 -- call ADRs
8206 -- Bug 4922099
8207 --
8208 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8212 THEN
8209 (NVL(l_actual_upg_option, 'N') = 'O') OR
8210 (NVL(l_enc_upg_option, 'N') = 'O')
8211 )
8213 NULL;
8214 --
8215 --
8216
8217 l_ccid := AcctDerRule_3(
8218 p_application_id => p_application_id
8219 , p_ae_header_id => l_ae_header_id
8220 , p_source_5 => p_source_5
8221 , x_transaction_coa_id => l_adr_transaction_coa_id
8222 , x_accounting_coa_id => l_adr_accounting_coa_id
8223 , x_value_type_code => l_adr_value_type_code
8224 , p_side => 'NA'
8225 );
8226
8227 xla_ae_lines_pkg.set_ccid(
8228 p_code_combination_id => l_ccid
8229 , p_value_type_code => l_adr_value_type_code
8230 , p_transaction_coa_id => l_adr_transaction_coa_id
8231 , p_accounting_coa_id => l_adr_accounting_coa_id
8232 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
8233 , p_adr_type_code => 'S'
8234 , p_component_type => l_component_type
8235 , p_component_code => l_component_code
8236 , p_component_type_code => l_component_type_code
8237 , p_component_appl_id => l_component_appl_id
8238 , p_amb_context_code => l_amb_context_code
8239 , p_side => 'NA'
8240 );
8241
8242
8243 --
8244 --
8245 END IF;
8246 --
8247 -- Bug 4922099
8248 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8249 (NVL(l_enc_upg_option, 'N') = 'O')
8250 ) AND
8251 (l_bflow_method_code = 'PRIOR_ENTRY')
8252 )
8253 THEN
8254 IF
8255 --
8256 1 = 2
8257 --
8258 THEN
8259 xla_accounting_err_pkg.build_message
8260 (p_appli_s_name => 'XLA'
8261 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8262 ,p_token_1 => 'LINE_NUMBER'
8263 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
8264 ,p_token_2 => 'LINE_TYPE_NAME'
8265 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
8266 l_component_type
8267 ,l_component_code
8268 ,l_component_type_code
8269 ,l_component_appl_id
8270 ,l_amb_context_code
8271 ,l_entity_code
8272 ,l_event_class_code
8273 )
8274 ,p_token_3 => 'OWNER'
8275 ,p_value_3 => xla_lookups_pkg.get_meaning(
8276 p_lookup_type => 'XLA_OWNER_TYPE'
8277 ,p_lookup_code => l_component_type_code
8278 )
8279 ,p_token_4 => 'PRODUCT_NAME'
8280 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8281 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8282 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8283 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8284 ,p_ae_header_id => NULL
8285 );
8286
8287 IF (C_LEVEL_ERROR>= g_log_level) THEN
8288 trace
8289 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8290 ,p_level => C_LEVEL_ERROR
8291 ,p_module => l_log_module);
8292 END IF;
8293 END IF;
8294 END IF;
8295 --
8296 --
8297 ------------------------------------------------------------------------------------------------
8298 -- 4219869 Business Flow
8299 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8300 -- Prior Entry. Currently, the following code is always generated.
8301 ------------------------------------------------------------------------------------------------
8302 XLA_AE_LINES_PKG.ValidateCurrentLine;
8303
8304 ------------------------------------------------------------------------------------
8305 -- 4219869 Business Flow
8306 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8307 ------------------------------------------------------------------------------------
8308 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8309
8310 ----------------------------------------------------------------------------------
8311 -- 4219869 Business Flow
8312 -- Update journal entry status -- Need to generate this within IF <condition>
8313 ----------------------------------------------------------------------------------
8314 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8315 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8316 ,p_balance_type_code => l_balance_type_code
8317 );
8318
8322 BEGIN
8319 -------------------------------------------------------------------------------------------
8320 -- 4262811 - Generate the Accrual Reversal lines
8321 -------------------------------------------------------------------------------------------
8323 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8324 (g_array_event(p_event_id).array_value_num('header_index'));
8325 IF l_acc_rev_flag IS NULL THEN
8326 l_acc_rev_flag := 'N';
8327 END IF;
8328 EXCEPTION
8329 WHEN OTHERS THEN
8330 l_acc_rev_flag := 'N';
8331 END;
8332 --
8333 IF (l_acc_rev_flag = 'Y') THEN
8334
8335 -- 4645092 ------------------------------------------------------------------------------
8336 -- To allow MPA report to determine if it should generate report process
8337 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8338 ------------------------------------------------------------------------------------------
8339
8340 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8341 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8342
8343 --
8344 -- Update the line information that should be overwritten
8345 --
8346 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8347 p_header_num => 1);
8348 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
8349
8350 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8351
8352 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
8353 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8354 END IF;
8355
8356 --
8357 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8358 --
8359 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8360 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
8361 ELSE
8362 ---------------------------------------------------------------------------------------------------
8363 -- 4262811a Switch Sign
8364 ---------------------------------------------------------------------------------------------------
8365 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
8366 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8367 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8368 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8369 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8370 -- 5132302
8371 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8372 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8373
8374 END IF;
8375
8376 -- 4955764
8377 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8378 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8379
8380
8381 XLA_AE_LINES_PKG.ValidateCurrentLine;
8382 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8383
8384 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8385 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8386 ,p_balance_type_code => l_balance_type_code);
8387
8388 END IF;
8389
8390 -----------------------------------------------------------------------------------------
8391 -- 4262811 Multiperiod Accounting
8392 -----------------------------------------------------------------------------------------
8393 -- No MPA option is assigned.
8394
8395
8396 END IF;
8397 END IF;
8398 --
8399
8400 --
8401 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8402 trace
8403 (p_msg => 'END of AcctLineType_18'
8404 ,p_level => C_LEVEL_PROCEDURE
8405 ,p_module => l_log_module);
8406 END IF;
8407 --
8408 EXCEPTION
8409 WHEN xla_exceptions_pkg.application_exception THEN
8410 RAISE;
8411 WHEN OTHERS THEN
8412 xla_exceptions_pkg.raise_message
8413 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_18');
8414 END AcctLineType_18;
8415 --
8416
8417 ---------------------------------------
8418 --
8419 -- PRIVATE FUNCTION
8420 -- AcctLineType_19
8421 --
8422 ---------------------------------------
8423 PROCEDURE AcctLineType_19 (
8424 p_application_id IN NUMBER
8425 ,p_event_id IN NUMBER
8426 ,p_calculate_acctd_flag IN VARCHAR2
8427 ,p_calculate_g_l_flag IN VARCHAR2
8428 ,p_actual_flag IN OUT VARCHAR2
8429 ,p_balance_type_code OUT VARCHAR2
8430 ,p_gain_or_loss_ref OUT VARCHAR2
8431
8432 --Contract Number
8433 , p_source_1 IN VARCHAR2
8434 --Contract Product Name
8435 , p_source_2 IN VARCHAR2
8436 --Distribution Account
8437 , p_source_5 IN NUMBER
8438 --Accounting Line Type
8439 , p_source_6 IN VARCHAR2
8440 , p_source_6_meaning IN VARCHAR2
8441 --Accounting Distribution Identifier
8442 , p_source_7 IN NUMBER
8443 --Distribution Type
8444 , p_source_8 IN VARCHAR2
8445 --Distribution Entered Amount
8446 , p_source_9 IN NUMBER
8447 --Transaction Currency Code
8448 , p_source_10 IN VARCHAR2
8452 , p_source_12 IN NUMBER
8449 --Transaction Currency Conversion Date
8450 , p_source_11 IN DATE
8451 --Transaction Currency Conversion Rate
8453 --Transaction Currency Conversion Type
8454 , p_source_13 IN VARCHAR2
8455 )
8456 IS
8457
8458 l_component_type VARCHAR2(80);
8459 l_component_code VARCHAR2(30);
8460 l_component_type_code VARCHAR2(1);
8461 l_component_appl_id INTEGER;
8462 l_amb_context_code VARCHAR2(30);
8463 l_entity_code VARCHAR2(30);
8464 l_event_class_code VARCHAR2(30);
8465 l_ae_header_id NUMBER;
8466 l_event_type_code VARCHAR2(30);
8467 l_line_definition_code VARCHAR2(30);
8468 l_line_definition_owner_code VARCHAR2(1);
8469 --
8470 -- adr variables
8471 l_segment VARCHAR2(30);
8472 l_ccid NUMBER;
8473 l_adr_transaction_coa_id NUMBER;
8474 l_adr_accounting_coa_id NUMBER;
8475 l_adr_flexfield_segment_code VARCHAR2(30);
8476 l_adr_flex_value_set_id NUMBER;
8477 l_adr_value_type_code VARCHAR2(30);
8478 l_adr_value_combination_id NUMBER;
8479 l_adr_value_segment_code VARCHAR2(30);
8480
8481 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
8482 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
8483 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
8484 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
8485
8486 -- 4262811 Variables ------------------------------------------------------------------------------------------
8487 l_entered_amt_idx NUMBER;
8488 l_accted_amt_idx NUMBER;
8489 l_acc_rev_flag VARCHAR2(1);
8490 l_accrual_line_num NUMBER;
8491 l_tmp_amt NUMBER;
8492 l_acc_rev_natural_side_code VARCHAR2(1);
8493
8494 l_num_entries NUMBER;
8495 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
8496 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
8497 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
8498 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
8499 l_recog_line_1 NUMBER;
8500 l_recog_line_2 NUMBER;
8501
8502 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
8503 l_bflow_applied_to_amt NUMBER; -- 5132302
8504 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
8505
8506 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8507
8508 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
8509 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
8510
8511 ---------------------------------------------------------------------------------------------------------------
8512
8513
8514 --
8515 -- bulk performance
8516 --
8517 l_balance_type_code VARCHAR2(1);
8518 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
8519 l_log_module VARCHAR2(240);
8520
8521 --
8522 -- Upgrade strategy
8523 --
8524 l_actual_upg_option VARCHAR2(1);
8525 l_enc_upg_option VARCHAR2(1);
8526
8527 --
8528 BEGIN
8529 --
8530 IF g_log_enabled THEN
8531 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_19';
8532 END IF;
8533 --
8534 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8535
8536 trace
8537 (p_msg => 'BEGIN of AcctLineType_19'
8538 ,p_level => C_LEVEL_PROCEDURE
8539 ,p_module => l_log_module);
8540
8541 END IF;
8542 --
8543 l_component_type := 'AMB_JLT';
8544 l_component_code := 'OKL_REBOOK_DR';
8545 l_component_type_code := 'S';
8546 l_component_appl_id := 540;
8547 l_amb_context_code := 'DEFAULT';
8548 l_entity_code := 'CONTRACTS';
8549 l_event_class_code := 'REBOOK';
8550 l_event_type_code := 'REBOOK_ALL';
8551 l_line_definition_owner_code := 'S';
8552 l_line_definition_code := 'OKL_REBOOK';
8553 --
8554 l_balance_type_code := 'A';
8555 l_segment := NULL;
8556 l_ccid := NULL;
8557 l_adr_transaction_coa_id := NULL;
8558 l_adr_accounting_coa_id := NULL;
8559 l_adr_flexfield_segment_code := NULL;
8560 l_adr_flex_value_set_id := NULL;
8561 l_adr_value_type_code := NULL;
8562 l_adr_value_combination_id := NULL;
8563 l_adr_value_segment_code := NULL;
8564
8565 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
8566 l_bflow_class_code := ''; -- 4219869 Business Flow
8567 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
8568 l_budgetary_control_flag := 'N';
8569
8570 l_bflow_applied_to_amt_idx := NULL; -- 5132302
8571 l_bflow_applied_to_amt := NULL; -- 5132302
8572 l_entered_amt_idx := NULL; -- 4262811
8573 l_accted_amt_idx := NULL; -- 4262811
8574 l_acc_rev_flag := NULL; -- 4262811
8575 l_accrual_line_num := NULL; -- 4262811
8576 l_tmp_amt := NULL; -- 4262811
8577 --
8578
8579 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8580 l_balance_type_code <> 'B' THEN
8581 IF NVL(p_source_6,'
8582 ') = 'LEASE_DEBIT'
8583 THEN
8584
8585 --
8586 XLA_AE_LINES_PKG.SetNewLine;
8587
8588 p_balance_type_code := l_balance_type_code;
8589 -- set the flag so later we will know whether the gain loss line needs to be created
8593 END IF;
8590
8591 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8592 p_actual_flag :='A';
8594
8595 --
8596 -- bulk performance
8597 --
8598 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8599 p_header_num => 0); -- 4262811
8600 --
8601 -- set accounting line options
8602 --
8603 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8604 p_natural_side_code => 'D'
8605 , p_gain_or_loss_flag => 'N'
8606 , p_gl_transfer_mode_code => 'S'
8607 , p_acct_entry_type_code => 'A'
8608 , p_switch_side_flag => 'Y'
8609 , p_merge_duplicate_code => 'N'
8610 );
8611 --
8612 l_acc_rev_natural_side_code := 'C'; -- 4262811
8613 --
8614 --
8615 -- set accounting line type info
8616 --
8617 xla_ae_lines_pkg.SetAcctLineType
8618 (p_component_type => l_component_type
8619 ,p_event_type_code => l_event_type_code
8620 ,p_line_definition_owner_code => l_line_definition_owner_code
8621 ,p_line_definition_code => l_line_definition_code
8622 ,p_accounting_line_code => l_component_code
8623 ,p_accounting_line_type_code => l_component_type_code
8624 ,p_accounting_line_appl_id => l_component_appl_id
8625 ,p_amb_context_code => l_amb_context_code
8626 ,p_entity_code => l_entity_code
8627 ,p_event_class_code => l_event_class_code);
8628 --
8629 -- set accounting class
8630 --
8631 xla_ae_lines_pkg.SetAcctClass(
8632 p_accounting_class_code => 'REBOOK'
8633 , p_ae_header_id => l_ae_header_id
8634 );
8635
8636 --
8637 -- set rounding class
8638 --
8639 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
8640 'REBOOK';
8641
8642 --
8643 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
8644 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
8645 --
8646 -- bulk performance
8647 --
8648 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
8649
8650 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
8651 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
8652
8653 -- 4955764
8654 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8655 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
8656
8657 -- 4458381 Public Sector Enh
8658
8659 --
8660 -- set accounting attributes for the line type
8661 --
8662 l_entered_amt_idx := 3;
8663 l_accted_amt_idx := NULL;
8664 l_bflow_applied_to_amt_idx := NULL; -- 5132302
8665 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
8666 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
8667 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
8668 l_rec_acct_attrs.array_char_value(2) := p_source_8;
8669 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
8670 l_rec_acct_attrs.array_num_value(3) := p_source_9;
8671 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
8672 l_rec_acct_attrs.array_char_value(4) := p_source_10;
8673 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
8674 l_rec_acct_attrs.array_date_value(5) := p_source_11;
8675 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
8676 l_rec_acct_attrs.array_num_value(6) := p_source_12;
8677 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
8678 l_rec_acct_attrs.array_char_value(7) := p_source_13;
8679
8680 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8681 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8682
8683 ---------------------------------------------------------------------------------------------------------------
8684 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8685 ---------------------------------------------------------------------------------------------------------------
8686 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8687
8688 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8689 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8690
8691 IF xla_accounting_cache_pkg.GetValueChar
8692 (p_source_code => 'LEDGER_CATEGORY_CODE'
8693 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8694 AND l_bflow_method_code = 'PRIOR_ENTRY'
8695 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8696 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8697 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8698 )
8699 THEN
8700 xla_ae_lines_pkg.BflowUpgEntry
8701 (p_business_method_code => l_bflow_method_code
8702 ,p_business_class_code => l_bflow_class_code
8703 ,p_balance_type => l_balance_type_code);
8704 ELSE
8705 NULL;
8706 -- No business flow processing for business flow method of NONE.
8707 END IF;
8708
8709 --
8710 -- call analytical criteria
8711 --
8712
8713 --
8714 -- call description
8715 --
8716
8717 xla_ae_lines_pkg.SetLineDescription(
8721 , p_ae_header_id => l_ae_header_id
8718 p_ae_header_id => l_ae_header_id
8719 ,p_description => Description_1 (
8720 p_application_id => p_application_id
8722 , p_source_1 => p_source_1
8723 , p_source_2 => p_source_2
8724 )
8725 );
8726
8727
8728 --
8729 -- call ADRs
8730 -- Bug 4922099
8731 --
8732 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8733 (NVL(l_actual_upg_option, 'N') = 'O') OR
8734 (NVL(l_enc_upg_option, 'N') = 'O')
8735 )
8736 THEN
8737 NULL;
8738 --
8739 --
8740
8741 l_ccid := AcctDerRule_3(
8742 p_application_id => p_application_id
8743 , p_ae_header_id => l_ae_header_id
8744 , p_source_5 => p_source_5
8745 , x_transaction_coa_id => l_adr_transaction_coa_id
8746 , x_accounting_coa_id => l_adr_accounting_coa_id
8747 , x_value_type_code => l_adr_value_type_code
8748 , p_side => 'NA'
8749 );
8750
8751 xla_ae_lines_pkg.set_ccid(
8752 p_code_combination_id => l_ccid
8753 , p_value_type_code => l_adr_value_type_code
8754 , p_transaction_coa_id => l_adr_transaction_coa_id
8755 , p_accounting_coa_id => l_adr_accounting_coa_id
8756 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
8757 , p_adr_type_code => 'S'
8758 , p_component_type => l_component_type
8759 , p_component_code => l_component_code
8760 , p_component_type_code => l_component_type_code
8761 , p_component_appl_id => l_component_appl_id
8762 , p_amb_context_code => l_amb_context_code
8763 , p_side => 'NA'
8764 );
8765
8766
8767 --
8768 --
8769 END IF;
8770 --
8771 -- Bug 4922099
8772 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8773 (NVL(l_enc_upg_option, 'N') = 'O')
8774 ) AND
8775 (l_bflow_method_code = 'PRIOR_ENTRY')
8776 )
8777 THEN
8778 IF
8779 --
8780 1 = 2
8781 --
8782 THEN
8783 xla_accounting_err_pkg.build_message
8784 (p_appli_s_name => 'XLA'
8785 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8786 ,p_token_1 => 'LINE_NUMBER'
8787 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
8788 ,p_token_2 => 'LINE_TYPE_NAME'
8789 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
8790 l_component_type
8791 ,l_component_code
8792 ,l_component_type_code
8793 ,l_component_appl_id
8794 ,l_amb_context_code
8795 ,l_entity_code
8796 ,l_event_class_code
8797 )
8798 ,p_token_3 => 'OWNER'
8799 ,p_value_3 => xla_lookups_pkg.get_meaning(
8800 p_lookup_type => 'XLA_OWNER_TYPE'
8801 ,p_lookup_code => l_component_type_code
8802 )
8803 ,p_token_4 => 'PRODUCT_NAME'
8804 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8805 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8806 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8807 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8808 ,p_ae_header_id => NULL
8809 );
8810
8811 IF (C_LEVEL_ERROR>= g_log_level) THEN
8812 trace
8813 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8814 ,p_level => C_LEVEL_ERROR
8815 ,p_module => l_log_module);
8816 END IF;
8817 END IF;
8818 END IF;
8819 --
8820 --
8821 ------------------------------------------------------------------------------------------------
8822 -- 4219869 Business Flow
8823 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8824 -- Prior Entry. Currently, the following code is always generated.
8825 ------------------------------------------------------------------------------------------------
8826 XLA_AE_LINES_PKG.ValidateCurrentLine;
8827
8828 ------------------------------------------------------------------------------------
8829 -- 4219869 Business Flow
8830 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8831 ------------------------------------------------------------------------------------
8832 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8833
8834 ----------------------------------------------------------------------------------
8835 -- 4219869 Business Flow
8839 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8836 -- Update journal entry status -- Need to generate this within IF <condition>
8837 ----------------------------------------------------------------------------------
8838 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8840 ,p_balance_type_code => l_balance_type_code
8841 );
8842
8843 -------------------------------------------------------------------------------------------
8844 -- 4262811 - Generate the Accrual Reversal lines
8845 -------------------------------------------------------------------------------------------
8846 BEGIN
8847 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8848 (g_array_event(p_event_id).array_value_num('header_index'));
8849 IF l_acc_rev_flag IS NULL THEN
8850 l_acc_rev_flag := 'N';
8851 END IF;
8852 EXCEPTION
8853 WHEN OTHERS THEN
8854 l_acc_rev_flag := 'N';
8855 END;
8856 --
8857 IF (l_acc_rev_flag = 'Y') THEN
8858
8859 -- 4645092 ------------------------------------------------------------------------------
8860 -- To allow MPA report to determine if it should generate report process
8861 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8862 ------------------------------------------------------------------------------------------
8863
8864 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8865 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8866
8867 --
8868 -- Update the line information that should be overwritten
8869 --
8870 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8871 p_header_num => 1);
8872 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
8873
8874 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8875
8876 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
8877 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8878 END IF;
8879
8880 --
8881 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8882 --
8883 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8884 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
8885 ELSE
8886 ---------------------------------------------------------------------------------------------------
8887 -- 4262811a Switch Sign
8888 ---------------------------------------------------------------------------------------------------
8889 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
8890 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8891 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8892 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8893 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8894 -- 5132302
8895 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8896 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8897
8898 END IF;
8899
8900 -- 4955764
8901 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8902 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8903
8904
8905 XLA_AE_LINES_PKG.ValidateCurrentLine;
8906 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8907
8908 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8909 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8910 ,p_balance_type_code => l_balance_type_code);
8911
8912 END IF;
8913
8914 -----------------------------------------------------------------------------------------
8915 -- 4262811 Multiperiod Accounting
8916 -----------------------------------------------------------------------------------------
8917 -- No MPA option is assigned.
8918
8919
8920 END IF;
8921 END IF;
8922 --
8923
8924 --
8925 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8926 trace
8927 (p_msg => 'END of AcctLineType_19'
8928 ,p_level => C_LEVEL_PROCEDURE
8929 ,p_module => l_log_module);
8930 END IF;
8931 --
8932 EXCEPTION
8933 WHEN xla_exceptions_pkg.application_exception THEN
8934 RAISE;
8935 WHEN OTHERS THEN
8936 xla_exceptions_pkg.raise_message
8937 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_19');
8938 END AcctLineType_19;
8939 --
8940
8941 ---------------------------------------
8942 --
8943 -- PRIVATE FUNCTION
8944 -- AcctLineType_20
8945 --
8946 ---------------------------------------
8947 PROCEDURE AcctLineType_20 (
8948 p_application_id IN NUMBER
8949 ,p_event_id IN NUMBER
8950 ,p_calculate_acctd_flag IN VARCHAR2
8951 ,p_calculate_g_l_flag IN VARCHAR2
8952 ,p_actual_flag IN OUT VARCHAR2
8953 ,p_balance_type_code OUT VARCHAR2
8954 ,p_gain_or_loss_ref OUT VARCHAR2
8955
8956 --Contract Number
8957 , p_source_1 IN VARCHAR2
8958 --Contract Product Name
8959 , p_source_2 IN VARCHAR2
8960 --Distribution Account
8961 , p_source_5 IN NUMBER
8962 --Accounting Line Type
8963 , p_source_6 IN VARCHAR2
8967 --Distribution Type
8964 , p_source_6_meaning IN VARCHAR2
8965 --Accounting Distribution Identifier
8966 , p_source_7 IN NUMBER
8968 , p_source_8 IN VARCHAR2
8969 --Distribution Entered Amount
8970 , p_source_9 IN NUMBER
8971 --Transaction Currency Code
8972 , p_source_10 IN VARCHAR2
8973 --Transaction Currency Conversion Date
8974 , p_source_11 IN DATE
8975 --Transaction Currency Conversion Rate
8976 , p_source_12 IN NUMBER
8977 --Transaction Currency Conversion Type
8978 , p_source_13 IN VARCHAR2
8979 )
8980 IS
8981
8982 l_component_type VARCHAR2(80);
8983 l_component_code VARCHAR2(30);
8984 l_component_type_code VARCHAR2(1);
8985 l_component_appl_id INTEGER;
8986 l_amb_context_code VARCHAR2(30);
8987 l_entity_code VARCHAR2(30);
8988 l_event_class_code VARCHAR2(30);
8989 l_ae_header_id NUMBER;
8990 l_event_type_code VARCHAR2(30);
8991 l_line_definition_code VARCHAR2(30);
8992 l_line_definition_owner_code VARCHAR2(1);
8993 --
8994 -- adr variables
8995 l_segment VARCHAR2(30);
8996 l_ccid NUMBER;
8997 l_adr_transaction_coa_id NUMBER;
8998 l_adr_accounting_coa_id NUMBER;
8999 l_adr_flexfield_segment_code VARCHAR2(30);
9000 l_adr_flex_value_set_id NUMBER;
9001 l_adr_value_type_code VARCHAR2(30);
9002 l_adr_value_combination_id NUMBER;
9003 l_adr_value_segment_code VARCHAR2(30);
9004
9005 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
9006 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
9007 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
9008 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
9009
9010 -- 4262811 Variables ------------------------------------------------------------------------------------------
9011 l_entered_amt_idx NUMBER;
9012 l_accted_amt_idx NUMBER;
9013 l_acc_rev_flag VARCHAR2(1);
9014 l_accrual_line_num NUMBER;
9015 l_tmp_amt NUMBER;
9016 l_acc_rev_natural_side_code VARCHAR2(1);
9017
9018 l_num_entries NUMBER;
9019 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
9020 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
9021 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
9022 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
9023 l_recog_line_1 NUMBER;
9024 l_recog_line_2 NUMBER;
9025
9026 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
9027 l_bflow_applied_to_amt NUMBER; -- 5132302
9028 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
9029
9030 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9031
9032 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
9033 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
9034
9035 ---------------------------------------------------------------------------------------------------------------
9036
9037
9038 --
9039 -- bulk performance
9040 --
9041 l_balance_type_code VARCHAR2(1);
9042 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
9043 l_log_module VARCHAR2(240);
9044
9045 --
9046 -- Upgrade strategy
9047 --
9048 l_actual_upg_option VARCHAR2(1);
9049 l_enc_upg_option VARCHAR2(1);
9050
9051 --
9052 BEGIN
9053 --
9054 IF g_log_enabled THEN
9055 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_20';
9056 END IF;
9057 --
9058 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9059
9060 trace
9061 (p_msg => 'BEGIN of AcctLineType_20'
9062 ,p_level => C_LEVEL_PROCEDURE
9063 ,p_module => l_log_module);
9064
9065 END IF;
9066 --
9067 l_component_type := 'AMB_JLT';
9068 l_component_code := 'OKL_RECEIPT_APPLICATION_CR';
9069 l_component_type_code := 'S';
9070 l_component_appl_id := 540;
9071 l_amb_context_code := 'DEFAULT';
9072 l_entity_code := 'TRANSACTIONS';
9073 l_event_class_code := 'RECEIPT_APPLICATION';
9074 l_event_type_code := 'RECEIPT_APPLICATION_ALL';
9075 l_line_definition_owner_code := 'S';
9076 l_line_definition_code := 'OKL_RECEIPT_APPLICATION';
9077 --
9078 l_balance_type_code := 'A';
9079 l_segment := NULL;
9080 l_ccid := NULL;
9081 l_adr_transaction_coa_id := NULL;
9082 l_adr_accounting_coa_id := NULL;
9083 l_adr_flexfield_segment_code := NULL;
9084 l_adr_flex_value_set_id := NULL;
9085 l_adr_value_type_code := NULL;
9086 l_adr_value_combination_id := NULL;
9087 l_adr_value_segment_code := NULL;
9088
9089 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
9090 l_bflow_class_code := ''; -- 4219869 Business Flow
9091 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
9092 l_budgetary_control_flag := 'N';
9093
9094 l_bflow_applied_to_amt_idx := NULL; -- 5132302
9095 l_bflow_applied_to_amt := NULL; -- 5132302
9096 l_entered_amt_idx := NULL; -- 4262811
9097 l_accted_amt_idx := NULL; -- 4262811
9098 l_acc_rev_flag := NULL; -- 4262811
9099 l_accrual_line_num := NULL; -- 4262811
9100 l_tmp_amt := NULL; -- 4262811
9101 --
9102
9106 ') = 'LEASE_CREDIT'
9103 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9104 l_balance_type_code <> 'B' THEN
9105 IF NVL(p_source_6,'
9107 THEN
9108
9109 --
9110 XLA_AE_LINES_PKG.SetNewLine;
9111
9112 p_balance_type_code := l_balance_type_code;
9113 -- set the flag so later we will know whether the gain loss line needs to be created
9114
9115 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9116 p_actual_flag :='A';
9117 END IF;
9118
9119 --
9120 -- bulk performance
9121 --
9122 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9123 p_header_num => 0); -- 4262811
9124 --
9125 -- set accounting line options
9126 --
9127 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9128 p_natural_side_code => 'C'
9129 , p_gain_or_loss_flag => 'N'
9130 , p_gl_transfer_mode_code => 'S'
9131 , p_acct_entry_type_code => 'A'
9132 , p_switch_side_flag => 'Y'
9133 , p_merge_duplicate_code => 'N'
9134 );
9135 --
9136 l_acc_rev_natural_side_code := 'D'; -- 4262811
9137 --
9138 --
9139 -- set accounting line type info
9140 --
9141 xla_ae_lines_pkg.SetAcctLineType
9142 (p_component_type => l_component_type
9143 ,p_event_type_code => l_event_type_code
9144 ,p_line_definition_owner_code => l_line_definition_owner_code
9145 ,p_line_definition_code => l_line_definition_code
9146 ,p_accounting_line_code => l_component_code
9147 ,p_accounting_line_type_code => l_component_type_code
9148 ,p_accounting_line_appl_id => l_component_appl_id
9149 ,p_amb_context_code => l_amb_context_code
9150 ,p_entity_code => l_entity_code
9151 ,p_event_class_code => l_event_class_code);
9152 --
9153 -- set accounting class
9154 --
9155 xla_ae_lines_pkg.SetAcctClass(
9156 p_accounting_class_code => 'RECEIPT_APPLICATION'
9157 , p_ae_header_id => l_ae_header_id
9158 );
9159
9160 --
9161 -- set rounding class
9162 --
9163 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9164 'RECEIPT_APPLICATION';
9165
9166 --
9167 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9168 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9169 --
9170 -- bulk performance
9171 --
9172 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9173
9174 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9175 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9176
9177 -- 4955764
9178 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9179 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9180
9181 -- 4458381 Public Sector Enh
9182
9183 --
9184 -- set accounting attributes for the line type
9185 --
9186 l_entered_amt_idx := 3;
9187 l_accted_amt_idx := NULL;
9188 l_bflow_applied_to_amt_idx := NULL; -- 5132302
9189 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
9190 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
9191 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
9192 l_rec_acct_attrs.array_char_value(2) := p_source_8;
9193 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
9194 l_rec_acct_attrs.array_num_value(3) := p_source_9;
9195 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
9196 l_rec_acct_attrs.array_char_value(4) := p_source_10;
9197 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
9198 l_rec_acct_attrs.array_date_value(5) := p_source_11;
9199 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
9200 l_rec_acct_attrs.array_num_value(6) := p_source_12;
9201 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
9202 l_rec_acct_attrs.array_char_value(7) := p_source_13;
9203
9204 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9205 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9206
9207 ---------------------------------------------------------------------------------------------------------------
9208 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9209 ---------------------------------------------------------------------------------------------------------------
9210 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9211
9212 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9213 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9214
9215 IF xla_accounting_cache_pkg.GetValueChar
9216 (p_source_code => 'LEDGER_CATEGORY_CODE'
9217 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9218 AND l_bflow_method_code = 'PRIOR_ENTRY'
9219 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9220 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9221 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9222 )
9223 THEN
9224 xla_ae_lines_pkg.BflowUpgEntry
9225 (p_business_method_code => l_bflow_method_code
9229 NULL;
9226 ,p_business_class_code => l_bflow_class_code
9227 ,p_balance_type => l_balance_type_code);
9228 ELSE
9230 -- No business flow processing for business flow method of NONE.
9231 END IF;
9232
9233 --
9234 -- call analytical criteria
9235 --
9236
9237 --
9238 -- call description
9239 --
9240
9241 xla_ae_lines_pkg.SetLineDescription(
9242 p_ae_header_id => l_ae_header_id
9243 ,p_description => Description_1 (
9244 p_application_id => p_application_id
9245 , p_ae_header_id => l_ae_header_id
9246 , p_source_1 => p_source_1
9247 , p_source_2 => p_source_2
9248 )
9249 );
9250
9251
9252 --
9253 -- call ADRs
9254 -- Bug 4922099
9255 --
9256 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9257 (NVL(l_actual_upg_option, 'N') = 'O') OR
9258 (NVL(l_enc_upg_option, 'N') = 'O')
9259 )
9260 THEN
9261 NULL;
9262 --
9263 --
9264
9265 l_ccid := AcctDerRule_3(
9266 p_application_id => p_application_id
9267 , p_ae_header_id => l_ae_header_id
9268 , p_source_5 => p_source_5
9269 , x_transaction_coa_id => l_adr_transaction_coa_id
9270 , x_accounting_coa_id => l_adr_accounting_coa_id
9271 , x_value_type_code => l_adr_value_type_code
9272 , p_side => 'NA'
9273 );
9274
9275 xla_ae_lines_pkg.set_ccid(
9276 p_code_combination_id => l_ccid
9277 , p_value_type_code => l_adr_value_type_code
9278 , p_transaction_coa_id => l_adr_transaction_coa_id
9279 , p_accounting_coa_id => l_adr_accounting_coa_id
9280 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
9281 , p_adr_type_code => 'S'
9282 , p_component_type => l_component_type
9283 , p_component_code => l_component_code
9284 , p_component_type_code => l_component_type_code
9285 , p_component_appl_id => l_component_appl_id
9286 , p_amb_context_code => l_amb_context_code
9287 , p_side => 'NA'
9288 );
9289
9290
9291 --
9292 --
9293 END IF;
9294 --
9295 -- Bug 4922099
9296 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9297 (NVL(l_enc_upg_option, 'N') = 'O')
9298 ) AND
9299 (l_bflow_method_code = 'PRIOR_ENTRY')
9300 )
9301 THEN
9302 IF
9303 --
9304 1 = 2
9305 --
9306 THEN
9307 xla_accounting_err_pkg.build_message
9308 (p_appli_s_name => 'XLA'
9309 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9310 ,p_token_1 => 'LINE_NUMBER'
9311 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
9312 ,p_token_2 => 'LINE_TYPE_NAME'
9313 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
9314 l_component_type
9315 ,l_component_code
9316 ,l_component_type_code
9317 ,l_component_appl_id
9318 ,l_amb_context_code
9319 ,l_entity_code
9320 ,l_event_class_code
9321 )
9322 ,p_token_3 => 'OWNER'
9323 ,p_value_3 => xla_lookups_pkg.get_meaning(
9324 p_lookup_type => 'XLA_OWNER_TYPE'
9325 ,p_lookup_code => l_component_type_code
9326 )
9327 ,p_token_4 => 'PRODUCT_NAME'
9328 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9329 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9330 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9331 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9332 ,p_ae_header_id => NULL
9333 );
9334
9335 IF (C_LEVEL_ERROR>= g_log_level) THEN
9336 trace
9337 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9338 ,p_level => C_LEVEL_ERROR
9339 ,p_module => l_log_module);
9340 END IF;
9341 END IF;
9342 END IF;
9343 --
9344 --
9345 ------------------------------------------------------------------------------------------------
9346 -- 4219869 Business Flow
9347 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9348 -- Prior Entry. Currently, the following code is always generated.
9349 ------------------------------------------------------------------------------------------------
9350 XLA_AE_LINES_PKG.ValidateCurrentLine;
9351
9355 ------------------------------------------------------------------------------------
9352 ------------------------------------------------------------------------------------
9353 -- 4219869 Business Flow
9354 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9356 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9357
9358 ----------------------------------------------------------------------------------
9359 -- 4219869 Business Flow
9360 -- Update journal entry status -- Need to generate this within IF <condition>
9361 ----------------------------------------------------------------------------------
9362 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9363 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9364 ,p_balance_type_code => l_balance_type_code
9365 );
9366
9367 -------------------------------------------------------------------------------------------
9368 -- 4262811 - Generate the Accrual Reversal lines
9369 -------------------------------------------------------------------------------------------
9370 BEGIN
9371 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9372 (g_array_event(p_event_id).array_value_num('header_index'));
9373 IF l_acc_rev_flag IS NULL THEN
9374 l_acc_rev_flag := 'N';
9375 END IF;
9376 EXCEPTION
9377 WHEN OTHERS THEN
9378 l_acc_rev_flag := 'N';
9379 END;
9380 --
9381 IF (l_acc_rev_flag = 'Y') THEN
9382
9383 -- 4645092 ------------------------------------------------------------------------------
9384 -- To allow MPA report to determine if it should generate report process
9385 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9386 ------------------------------------------------------------------------------------------
9387
9388 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9389 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9390
9391 --
9392 -- Update the line information that should be overwritten
9393 --
9394 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9395 p_header_num => 1);
9396 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
9397
9398 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9399
9400 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
9401 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9402 END IF;
9403
9404 --
9405 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9406 --
9407 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9408 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
9409 ELSE
9410 ---------------------------------------------------------------------------------------------------
9411 -- 4262811a Switch Sign
9412 ---------------------------------------------------------------------------------------------------
9413 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
9414 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9415 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9416 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9417 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9418 -- 5132302
9419 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9420 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9421
9422 END IF;
9423
9424 -- 4955764
9425 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9426 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9427
9428
9429 XLA_AE_LINES_PKG.ValidateCurrentLine;
9430 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9431
9432 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9433 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9434 ,p_balance_type_code => l_balance_type_code);
9435
9436 END IF;
9437
9438 -----------------------------------------------------------------------------------------
9439 -- 4262811 Multiperiod Accounting
9440 -----------------------------------------------------------------------------------------
9441 -- No MPA option is assigned.
9442
9443
9444 END IF;
9445 END IF;
9446 --
9447
9448 --
9449 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9450 trace
9451 (p_msg => 'END of AcctLineType_20'
9452 ,p_level => C_LEVEL_PROCEDURE
9453 ,p_module => l_log_module);
9454 END IF;
9455 --
9456 EXCEPTION
9457 WHEN xla_exceptions_pkg.application_exception THEN
9458 RAISE;
9459 WHEN OTHERS THEN
9460 xla_exceptions_pkg.raise_message
9461 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_20');
9462 END AcctLineType_20;
9463 --
9464
9465 ---------------------------------------
9466 --
9467 -- PRIVATE FUNCTION
9468 -- AcctLineType_21
9469 --
9470 ---------------------------------------
9471 PROCEDURE AcctLineType_21 (
9472 p_application_id IN NUMBER
9473 ,p_event_id IN NUMBER
9474 ,p_calculate_acctd_flag IN VARCHAR2
9478 ,p_gain_or_loss_ref OUT VARCHAR2
9475 ,p_calculate_g_l_flag IN VARCHAR2
9476 ,p_actual_flag IN OUT VARCHAR2
9477 ,p_balance_type_code OUT VARCHAR2
9479
9480 --Contract Number
9481 , p_source_1 IN VARCHAR2
9482 --Contract Product Name
9483 , p_source_2 IN VARCHAR2
9484 --Distribution Account
9485 , p_source_5 IN NUMBER
9486 --Accounting Line Type
9487 , p_source_6 IN VARCHAR2
9488 , p_source_6_meaning IN VARCHAR2
9489 --Accounting Distribution Identifier
9490 , p_source_7 IN NUMBER
9491 --Distribution Type
9492 , p_source_8 IN VARCHAR2
9493 --Distribution Entered Amount
9494 , p_source_9 IN NUMBER
9495 --Transaction Currency Code
9496 , p_source_10 IN VARCHAR2
9497 --Transaction Currency Conversion Date
9498 , p_source_11 IN DATE
9499 --Transaction Currency Conversion Rate
9500 , p_source_12 IN NUMBER
9501 --Transaction Currency Conversion Type
9502 , p_source_13 IN VARCHAR2
9503 )
9504 IS
9505
9506 l_component_type VARCHAR2(80);
9507 l_component_code VARCHAR2(30);
9508 l_component_type_code VARCHAR2(1);
9509 l_component_appl_id INTEGER;
9510 l_amb_context_code VARCHAR2(30);
9511 l_entity_code VARCHAR2(30);
9512 l_event_class_code VARCHAR2(30);
9513 l_ae_header_id NUMBER;
9514 l_event_type_code VARCHAR2(30);
9515 l_line_definition_code VARCHAR2(30);
9516 l_line_definition_owner_code VARCHAR2(1);
9517 --
9518 -- adr variables
9519 l_segment VARCHAR2(30);
9520 l_ccid NUMBER;
9521 l_adr_transaction_coa_id NUMBER;
9522 l_adr_accounting_coa_id NUMBER;
9523 l_adr_flexfield_segment_code VARCHAR2(30);
9524 l_adr_flex_value_set_id NUMBER;
9525 l_adr_value_type_code VARCHAR2(30);
9526 l_adr_value_combination_id NUMBER;
9527 l_adr_value_segment_code VARCHAR2(30);
9528
9529 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
9530 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
9531 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
9532 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
9533
9534 -- 4262811 Variables ------------------------------------------------------------------------------------------
9535 l_entered_amt_idx NUMBER;
9536 l_accted_amt_idx NUMBER;
9537 l_acc_rev_flag VARCHAR2(1);
9538 l_accrual_line_num NUMBER;
9539 l_tmp_amt NUMBER;
9540 l_acc_rev_natural_side_code VARCHAR2(1);
9541
9542 l_num_entries NUMBER;
9543 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
9544 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
9545 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
9546 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
9547 l_recog_line_1 NUMBER;
9548 l_recog_line_2 NUMBER;
9549
9550 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
9551 l_bflow_applied_to_amt NUMBER; -- 5132302
9552 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
9553
9554 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9555
9556 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
9557 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
9558
9559 ---------------------------------------------------------------------------------------------------------------
9560
9561
9562 --
9563 -- bulk performance
9564 --
9565 l_balance_type_code VARCHAR2(1);
9566 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
9567 l_log_module VARCHAR2(240);
9568
9569 --
9570 -- Upgrade strategy
9571 --
9572 l_actual_upg_option VARCHAR2(1);
9573 l_enc_upg_option VARCHAR2(1);
9574
9575 --
9576 BEGIN
9577 --
9578 IF g_log_enabled THEN
9579 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_21';
9580 END IF;
9581 --
9582 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9583
9584 trace
9585 (p_msg => 'BEGIN of AcctLineType_21'
9586 ,p_level => C_LEVEL_PROCEDURE
9587 ,p_module => l_log_module);
9588
9589 END IF;
9590 --
9591 l_component_type := 'AMB_JLT';
9592 l_component_code := 'OKL_RECEIPT_APPLICATION_DR';
9593 l_component_type_code := 'S';
9594 l_component_appl_id := 540;
9595 l_amb_context_code := 'DEFAULT';
9596 l_entity_code := 'TRANSACTIONS';
9597 l_event_class_code := 'RECEIPT_APPLICATION';
9598 l_event_type_code := 'RECEIPT_APPLICATION_ALL';
9599 l_line_definition_owner_code := 'S';
9600 l_line_definition_code := 'OKL_RECEIPT_APPLICATION';
9601 --
9602 l_balance_type_code := 'A';
9603 l_segment := NULL;
9604 l_ccid := NULL;
9605 l_adr_transaction_coa_id := NULL;
9606 l_adr_accounting_coa_id := NULL;
9607 l_adr_flexfield_segment_code := NULL;
9608 l_adr_flex_value_set_id := NULL;
9609 l_adr_value_type_code := NULL;
9610 l_adr_value_combination_id := NULL;
9611 l_adr_value_segment_code := NULL;
9612
9613 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
9614 l_bflow_class_code := ''; -- 4219869 Business Flow
9615 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
9616 l_budgetary_control_flag := 'N';
9617
9621 l_accted_amt_idx := NULL; -- 4262811
9618 l_bflow_applied_to_amt_idx := NULL; -- 5132302
9619 l_bflow_applied_to_amt := NULL; -- 5132302
9620 l_entered_amt_idx := NULL; -- 4262811
9622 l_acc_rev_flag := NULL; -- 4262811
9623 l_accrual_line_num := NULL; -- 4262811
9624 l_tmp_amt := NULL; -- 4262811
9625 --
9626
9627 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9628 l_balance_type_code <> 'B' THEN
9629 IF NVL(p_source_6,'
9630 ') = 'LEASE_DEBIT'
9631 THEN
9632
9633 --
9634 XLA_AE_LINES_PKG.SetNewLine;
9635
9636 p_balance_type_code := l_balance_type_code;
9637 -- set the flag so later we will know whether the gain loss line needs to be created
9638
9639 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9640 p_actual_flag :='A';
9641 END IF;
9642
9643 --
9644 -- bulk performance
9645 --
9646 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9647 p_header_num => 0); -- 4262811
9648 --
9649 -- set accounting line options
9650 --
9651 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9652 p_natural_side_code => 'D'
9653 , p_gain_or_loss_flag => 'N'
9654 , p_gl_transfer_mode_code => 'S'
9655 , p_acct_entry_type_code => 'A'
9656 , p_switch_side_flag => 'Y'
9657 , p_merge_duplicate_code => 'N'
9658 );
9659 --
9660 l_acc_rev_natural_side_code := 'C'; -- 4262811
9661 --
9662 --
9663 -- set accounting line type info
9664 --
9665 xla_ae_lines_pkg.SetAcctLineType
9666 (p_component_type => l_component_type
9667 ,p_event_type_code => l_event_type_code
9668 ,p_line_definition_owner_code => l_line_definition_owner_code
9669 ,p_line_definition_code => l_line_definition_code
9670 ,p_accounting_line_code => l_component_code
9671 ,p_accounting_line_type_code => l_component_type_code
9672 ,p_accounting_line_appl_id => l_component_appl_id
9673 ,p_amb_context_code => l_amb_context_code
9674 ,p_entity_code => l_entity_code
9675 ,p_event_class_code => l_event_class_code);
9676 --
9677 -- set accounting class
9678 --
9679 xla_ae_lines_pkg.SetAcctClass(
9680 p_accounting_class_code => 'RECEIPT_APPLICATION'
9681 , p_ae_header_id => l_ae_header_id
9682 );
9683
9684 --
9685 -- set rounding class
9686 --
9687 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9688 'RECEIPT_APPLICATION';
9689
9690 --
9691 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9692 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9693 --
9694 -- bulk performance
9695 --
9696 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9697
9698 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9699 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9700
9701 -- 4955764
9702 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9703 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9704
9705 -- 4458381 Public Sector Enh
9706
9707 --
9708 -- set accounting attributes for the line type
9709 --
9710 l_entered_amt_idx := 3;
9711 l_accted_amt_idx := NULL;
9712 l_bflow_applied_to_amt_idx := NULL; -- 5132302
9713 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
9714 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
9715 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
9716 l_rec_acct_attrs.array_char_value(2) := p_source_8;
9717 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
9718 l_rec_acct_attrs.array_num_value(3) := p_source_9;
9719 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
9720 l_rec_acct_attrs.array_char_value(4) := p_source_10;
9721 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
9722 l_rec_acct_attrs.array_date_value(5) := p_source_11;
9723 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
9724 l_rec_acct_attrs.array_num_value(6) := p_source_12;
9725 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
9726 l_rec_acct_attrs.array_char_value(7) := p_source_13;
9727
9728 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9729 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9730
9731 ---------------------------------------------------------------------------------------------------------------
9732 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9733 ---------------------------------------------------------------------------------------------------------------
9734 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9735
9736 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9737 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9738
9739 IF xla_accounting_cache_pkg.GetValueChar
9740 (p_source_code => 'LEDGER_CATEGORY_CODE'
9744 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9741 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9742 AND l_bflow_method_code = 'PRIOR_ENTRY'
9743 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9745 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9746 )
9747 THEN
9748 xla_ae_lines_pkg.BflowUpgEntry
9749 (p_business_method_code => l_bflow_method_code
9750 ,p_business_class_code => l_bflow_class_code
9751 ,p_balance_type => l_balance_type_code);
9752 ELSE
9753 NULL;
9754 -- No business flow processing for business flow method of NONE.
9755 END IF;
9756
9757 --
9758 -- call analytical criteria
9759 --
9760
9761 --
9762 -- call description
9763 --
9764
9765 xla_ae_lines_pkg.SetLineDescription(
9766 p_ae_header_id => l_ae_header_id
9767 ,p_description => Description_1 (
9768 p_application_id => p_application_id
9769 , p_ae_header_id => l_ae_header_id
9770 , p_source_1 => p_source_1
9771 , p_source_2 => p_source_2
9772 )
9773 );
9774
9775
9776 --
9777 -- call ADRs
9778 -- Bug 4922099
9779 --
9780 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9781 (NVL(l_actual_upg_option, 'N') = 'O') OR
9782 (NVL(l_enc_upg_option, 'N') = 'O')
9783 )
9784 THEN
9785 NULL;
9786 --
9787 --
9788
9789 l_ccid := AcctDerRule_3(
9790 p_application_id => p_application_id
9791 , p_ae_header_id => l_ae_header_id
9792 , p_source_5 => p_source_5
9793 , x_transaction_coa_id => l_adr_transaction_coa_id
9794 , x_accounting_coa_id => l_adr_accounting_coa_id
9795 , x_value_type_code => l_adr_value_type_code
9796 , p_side => 'NA'
9797 );
9798
9799 xla_ae_lines_pkg.set_ccid(
9800 p_code_combination_id => l_ccid
9801 , p_value_type_code => l_adr_value_type_code
9802 , p_transaction_coa_id => l_adr_transaction_coa_id
9803 , p_accounting_coa_id => l_adr_accounting_coa_id
9804 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
9805 , p_adr_type_code => 'S'
9806 , p_component_type => l_component_type
9807 , p_component_code => l_component_code
9808 , p_component_type_code => l_component_type_code
9809 , p_component_appl_id => l_component_appl_id
9810 , p_amb_context_code => l_amb_context_code
9811 , p_side => 'NA'
9812 );
9813
9814
9815 --
9816 --
9817 END IF;
9818 --
9819 -- Bug 4922099
9820 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9821 (NVL(l_enc_upg_option, 'N') = 'O')
9822 ) AND
9823 (l_bflow_method_code = 'PRIOR_ENTRY')
9824 )
9825 THEN
9826 IF
9827 --
9828 1 = 2
9829 --
9830 THEN
9831 xla_accounting_err_pkg.build_message
9832 (p_appli_s_name => 'XLA'
9833 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9834 ,p_token_1 => 'LINE_NUMBER'
9835 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
9836 ,p_token_2 => 'LINE_TYPE_NAME'
9837 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
9838 l_component_type
9839 ,l_component_code
9840 ,l_component_type_code
9841 ,l_component_appl_id
9842 ,l_amb_context_code
9843 ,l_entity_code
9844 ,l_event_class_code
9845 )
9846 ,p_token_3 => 'OWNER'
9847 ,p_value_3 => xla_lookups_pkg.get_meaning(
9848 p_lookup_type => 'XLA_OWNER_TYPE'
9849 ,p_lookup_code => l_component_type_code
9850 )
9851 ,p_token_4 => 'PRODUCT_NAME'
9852 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9853 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9854 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9855 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9856 ,p_ae_header_id => NULL
9857 );
9858
9859 IF (C_LEVEL_ERROR>= g_log_level) THEN
9860 trace
9861 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9862 ,p_level => C_LEVEL_ERROR
9863 ,p_module => l_log_module);
9864 END IF;
9865 END IF;
9866 END IF;
9870 -- 4219869 Business Flow
9867 --
9868 --
9869 ------------------------------------------------------------------------------------------------
9871 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9872 -- Prior Entry. Currently, the following code is always generated.
9873 ------------------------------------------------------------------------------------------------
9874 XLA_AE_LINES_PKG.ValidateCurrentLine;
9875
9876 ------------------------------------------------------------------------------------
9877 -- 4219869 Business Flow
9878 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9879 ------------------------------------------------------------------------------------
9880 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9881
9882 ----------------------------------------------------------------------------------
9883 -- 4219869 Business Flow
9884 -- Update journal entry status -- Need to generate this within IF <condition>
9885 ----------------------------------------------------------------------------------
9886 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9887 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9888 ,p_balance_type_code => l_balance_type_code
9889 );
9890
9891 -------------------------------------------------------------------------------------------
9892 -- 4262811 - Generate the Accrual Reversal lines
9893 -------------------------------------------------------------------------------------------
9894 BEGIN
9895 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9896 (g_array_event(p_event_id).array_value_num('header_index'));
9897 IF l_acc_rev_flag IS NULL THEN
9898 l_acc_rev_flag := 'N';
9899 END IF;
9900 EXCEPTION
9901 WHEN OTHERS THEN
9902 l_acc_rev_flag := 'N';
9903 END;
9904 --
9905 IF (l_acc_rev_flag = 'Y') THEN
9906
9907 -- 4645092 ------------------------------------------------------------------------------
9908 -- To allow MPA report to determine if it should generate report process
9909 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9910 ------------------------------------------------------------------------------------------
9911
9912 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9913 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9914
9915 --
9916 -- Update the line information that should be overwritten
9917 --
9918 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9919 p_header_num => 1);
9920 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
9921
9922 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9923
9924 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
9925 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9926 END IF;
9927
9928 --
9929 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9930 --
9931 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9932 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
9933 ELSE
9934 ---------------------------------------------------------------------------------------------------
9935 -- 4262811a Switch Sign
9936 ---------------------------------------------------------------------------------------------------
9937 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
9938 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9939 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9940 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9941 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9942 -- 5132302
9943 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9944 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9945
9946 END IF;
9947
9948 -- 4955764
9949 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9950 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9951
9952
9953 XLA_AE_LINES_PKG.ValidateCurrentLine;
9954 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9955
9956 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9957 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9958 ,p_balance_type_code => l_balance_type_code);
9959
9960 END IF;
9961
9962 -----------------------------------------------------------------------------------------
9963 -- 4262811 Multiperiod Accounting
9964 -----------------------------------------------------------------------------------------
9965 -- No MPA option is assigned.
9966
9967
9968 END IF;
9969 END IF;
9970 --
9971
9972 --
9973 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9974 trace
9975 (p_msg => 'END of AcctLineType_21'
9976 ,p_level => C_LEVEL_PROCEDURE
9977 ,p_module => l_log_module);
9978 END IF;
9979 --
9980 EXCEPTION
9981 WHEN xla_exceptions_pkg.application_exception THEN
9982 RAISE;
9983 WHEN OTHERS THEN
9984 xla_exceptions_pkg.raise_message
9988
9985 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_21');
9986 END AcctLineType_21;
9987 --
9989 ---------------------------------------
9990 --
9991 -- PRIVATE FUNCTION
9992 -- AcctLineType_22
9993 --
9994 ---------------------------------------
9995 PROCEDURE AcctLineType_22 (
9996 p_application_id IN NUMBER
9997 ,p_event_id IN NUMBER
9998 ,p_calculate_acctd_flag IN VARCHAR2
9999 ,p_calculate_g_l_flag IN VARCHAR2
10000 ,p_actual_flag IN OUT VARCHAR2
10001 ,p_balance_type_code OUT VARCHAR2
10002 ,p_gain_or_loss_ref OUT VARCHAR2
10003
10004 --Contract Number
10005 , p_source_1 IN VARCHAR2
10006 --Contract Product Name
10007 , p_source_2 IN VARCHAR2
10008 --Distribution Account
10009 , p_source_5 IN NUMBER
10010 --Accounting Line Type
10011 , p_source_6 IN VARCHAR2
10012 , p_source_6_meaning IN VARCHAR2
10013 --Accounting Distribution Identifier
10014 , p_source_7 IN NUMBER
10015 --Distribution Type
10016 , p_source_8 IN VARCHAR2
10017 --Distribution Entered Amount
10018 , p_source_9 IN NUMBER
10019 --Transaction Currency Code
10020 , p_source_10 IN VARCHAR2
10021 --Transaction Currency Conversion Date
10022 , p_source_11 IN DATE
10023 --Transaction Currency Conversion Rate
10024 , p_source_12 IN NUMBER
10025 --Transaction Currency Conversion Type
10026 , p_source_13 IN VARCHAR2
10027 )
10028 IS
10029
10030 l_component_type VARCHAR2(80);
10031 l_component_code VARCHAR2(30);
10032 l_component_type_code VARCHAR2(1);
10033 l_component_appl_id INTEGER;
10034 l_amb_context_code VARCHAR2(30);
10035 l_entity_code VARCHAR2(30);
10036 l_event_class_code VARCHAR2(30);
10037 l_ae_header_id NUMBER;
10038 l_event_type_code VARCHAR2(30);
10039 l_line_definition_code VARCHAR2(30);
10040 l_line_definition_owner_code VARCHAR2(1);
10041 --
10042 -- adr variables
10043 l_segment VARCHAR2(30);
10044 l_ccid NUMBER;
10045 l_adr_transaction_coa_id NUMBER;
10046 l_adr_accounting_coa_id NUMBER;
10047 l_adr_flexfield_segment_code VARCHAR2(30);
10048 l_adr_flex_value_set_id NUMBER;
10049 l_adr_value_type_code VARCHAR2(30);
10050 l_adr_value_combination_id NUMBER;
10051 l_adr_value_segment_code VARCHAR2(30);
10052
10053 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
10054 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
10055 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
10056 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
10057
10058 -- 4262811 Variables ------------------------------------------------------------------------------------------
10059 l_entered_amt_idx NUMBER;
10060 l_accted_amt_idx NUMBER;
10061 l_acc_rev_flag VARCHAR2(1);
10062 l_accrual_line_num NUMBER;
10063 l_tmp_amt NUMBER;
10064 l_acc_rev_natural_side_code VARCHAR2(1);
10065
10066 l_num_entries NUMBER;
10067 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
10068 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
10069 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
10070 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
10071 l_recog_line_1 NUMBER;
10072 l_recog_line_2 NUMBER;
10073
10074 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
10075 l_bflow_applied_to_amt NUMBER; -- 5132302
10076 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
10077
10078 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
10079
10080 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
10081 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
10082
10083 ---------------------------------------------------------------------------------------------------------------
10084
10085
10086 --
10087 -- bulk performance
10088 --
10089 l_balance_type_code VARCHAR2(1);
10090 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
10091 l_log_module VARCHAR2(240);
10092
10093 --
10094 -- Upgrade strategy
10095 --
10096 l_actual_upg_option VARCHAR2(1);
10097 l_enc_upg_option VARCHAR2(1);
10098
10099 --
10100 BEGIN
10101 --
10102 IF g_log_enabled THEN
10103 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_22';
10104 END IF;
10105 --
10106 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10107
10108 trace
10109 (p_msg => 'BEGIN of AcctLineType_22'
10110 ,p_level => C_LEVEL_PROCEDURE
10111 ,p_module => l_log_module);
10112
10113 END IF;
10114 --
10115 l_component_type := 'AMB_JLT';
10116 l_component_code := 'OKL_RELEASE_CR';
10117 l_component_type_code := 'S';
10118 l_component_appl_id := 540;
10119 l_amb_context_code := 'DEFAULT';
10120 l_entity_code := 'CONTRACTS';
10121 l_event_class_code := 'RE_LEASE';
10122 l_event_type_code := 'RE_LEASE_ALL';
10123 l_line_definition_owner_code := 'S';
10124 l_line_definition_code := 'OKL_RELEASE';
10125 --
10126 l_balance_type_code := 'A';
10127 l_segment := NULL;
10128 l_ccid := NULL;
10132 l_adr_flex_value_set_id := NULL;
10129 l_adr_transaction_coa_id := NULL;
10130 l_adr_accounting_coa_id := NULL;
10131 l_adr_flexfield_segment_code := NULL;
10133 l_adr_value_type_code := NULL;
10134 l_adr_value_combination_id := NULL;
10135 l_adr_value_segment_code := NULL;
10136
10137 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
10138 l_bflow_class_code := ''; -- 4219869 Business Flow
10139 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
10140 l_budgetary_control_flag := 'N';
10141
10142 l_bflow_applied_to_amt_idx := NULL; -- 5132302
10143 l_bflow_applied_to_amt := NULL; -- 5132302
10144 l_entered_amt_idx := NULL; -- 4262811
10145 l_accted_amt_idx := NULL; -- 4262811
10146 l_acc_rev_flag := NULL; -- 4262811
10147 l_accrual_line_num := NULL; -- 4262811
10148 l_tmp_amt := NULL; -- 4262811
10149 --
10150
10151 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10152 l_balance_type_code <> 'B' THEN
10153 IF NVL(p_source_6,'
10154 ') = 'LEASE_CREDIT'
10155 THEN
10156
10157 --
10158 XLA_AE_LINES_PKG.SetNewLine;
10159
10160 p_balance_type_code := l_balance_type_code;
10161 -- set the flag so later we will know whether the gain loss line needs to be created
10162
10163 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
10164 p_actual_flag :='A';
10165 END IF;
10166
10167 --
10168 -- bulk performance
10169 --
10170 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
10171 p_header_num => 0); -- 4262811
10172 --
10173 -- set accounting line options
10174 --
10175 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
10176 p_natural_side_code => 'C'
10177 , p_gain_or_loss_flag => 'N'
10178 , p_gl_transfer_mode_code => 'S'
10179 , p_acct_entry_type_code => 'A'
10180 , p_switch_side_flag => 'Y'
10181 , p_merge_duplicate_code => 'N'
10182 );
10183 --
10184 l_acc_rev_natural_side_code := 'D'; -- 4262811
10185 --
10186 --
10187 -- set accounting line type info
10188 --
10189 xla_ae_lines_pkg.SetAcctLineType
10190 (p_component_type => l_component_type
10191 ,p_event_type_code => l_event_type_code
10192 ,p_line_definition_owner_code => l_line_definition_owner_code
10193 ,p_line_definition_code => l_line_definition_code
10194 ,p_accounting_line_code => l_component_code
10195 ,p_accounting_line_type_code => l_component_type_code
10196 ,p_accounting_line_appl_id => l_component_appl_id
10197 ,p_amb_context_code => l_amb_context_code
10198 ,p_entity_code => l_entity_code
10199 ,p_event_class_code => l_event_class_code);
10200 --
10201 -- set accounting class
10202 --
10203 xla_ae_lines_pkg.SetAcctClass(
10204 p_accounting_class_code => 'RELEASE'
10205 , p_ae_header_id => l_ae_header_id
10206 );
10207
10208 --
10209 -- set rounding class
10210 --
10211 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
10212 'RELEASE';
10213
10214 --
10215 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
10216 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
10217 --
10218 -- bulk performance
10219 --
10220 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
10221
10222 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
10223 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10224
10225 -- 4955764
10226 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10227 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
10228
10229 -- 4458381 Public Sector Enh
10230
10231 --
10232 -- set accounting attributes for the line type
10233 --
10234 l_entered_amt_idx := 3;
10235 l_accted_amt_idx := NULL;
10236 l_bflow_applied_to_amt_idx := NULL; -- 5132302
10237 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
10238 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
10239 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
10240 l_rec_acct_attrs.array_char_value(2) := p_source_8;
10241 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
10242 l_rec_acct_attrs.array_num_value(3) := p_source_9;
10243 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
10244 l_rec_acct_attrs.array_char_value(4) := p_source_10;
10245 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
10246 l_rec_acct_attrs.array_date_value(5) := p_source_11;
10247 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
10248 l_rec_acct_attrs.array_num_value(6) := p_source_12;
10249 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
10250 l_rec_acct_attrs.array_char_value(7) := p_source_13;
10251
10252 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10253 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10254
10255 ---------------------------------------------------------------------------------------------------------------
10259
10256 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10257 ---------------------------------------------------------------------------------------------------------------
10258 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10260 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10261 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10262
10263 IF xla_accounting_cache_pkg.GetValueChar
10264 (p_source_code => 'LEDGER_CATEGORY_CODE'
10265 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10266 AND l_bflow_method_code = 'PRIOR_ENTRY'
10267 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10268 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10269 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10270 )
10271 THEN
10272 xla_ae_lines_pkg.BflowUpgEntry
10273 (p_business_method_code => l_bflow_method_code
10274 ,p_business_class_code => l_bflow_class_code
10275 ,p_balance_type => l_balance_type_code);
10276 ELSE
10277 NULL;
10278 -- No business flow processing for business flow method of NONE.
10279 END IF;
10280
10281 --
10282 -- call analytical criteria
10283 --
10284
10285 --
10286 -- call description
10287 --
10288
10289 xla_ae_lines_pkg.SetLineDescription(
10290 p_ae_header_id => l_ae_header_id
10291 ,p_description => Description_1 (
10292 p_application_id => p_application_id
10293 , p_ae_header_id => l_ae_header_id
10294 , p_source_1 => p_source_1
10295 , p_source_2 => p_source_2
10296 )
10297 );
10298
10299
10300 --
10301 -- call ADRs
10302 -- Bug 4922099
10303 --
10304 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10305 (NVL(l_actual_upg_option, 'N') = 'O') OR
10306 (NVL(l_enc_upg_option, 'N') = 'O')
10307 )
10308 THEN
10309 NULL;
10310 --
10311 --
10312
10313 l_ccid := AcctDerRule_3(
10314 p_application_id => p_application_id
10315 , p_ae_header_id => l_ae_header_id
10316 , p_source_5 => p_source_5
10317 , x_transaction_coa_id => l_adr_transaction_coa_id
10318 , x_accounting_coa_id => l_adr_accounting_coa_id
10319 , x_value_type_code => l_adr_value_type_code
10320 , p_side => 'NA'
10321 );
10322
10323 xla_ae_lines_pkg.set_ccid(
10324 p_code_combination_id => l_ccid
10325 , p_value_type_code => l_adr_value_type_code
10326 , p_transaction_coa_id => l_adr_transaction_coa_id
10327 , p_accounting_coa_id => l_adr_accounting_coa_id
10328 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
10329 , p_adr_type_code => 'S'
10330 , p_component_type => l_component_type
10331 , p_component_code => l_component_code
10332 , p_component_type_code => l_component_type_code
10333 , p_component_appl_id => l_component_appl_id
10334 , p_amb_context_code => l_amb_context_code
10335 , p_side => 'NA'
10336 );
10337
10338
10339 --
10340 --
10341 END IF;
10342 --
10343 -- Bug 4922099
10344 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10345 (NVL(l_enc_upg_option, 'N') = 'O')
10346 ) AND
10347 (l_bflow_method_code = 'PRIOR_ENTRY')
10348 )
10349 THEN
10350 IF
10351 --
10352 1 = 2
10353 --
10354 THEN
10355 xla_accounting_err_pkg.build_message
10356 (p_appli_s_name => 'XLA'
10357 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10358 ,p_token_1 => 'LINE_NUMBER'
10359 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
10360 ,p_token_2 => 'LINE_TYPE_NAME'
10361 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
10362 l_component_type
10363 ,l_component_code
10364 ,l_component_type_code
10365 ,l_component_appl_id
10366 ,l_amb_context_code
10367 ,l_entity_code
10368 ,l_event_class_code
10369 )
10370 ,p_token_3 => 'OWNER'
10371 ,p_value_3 => xla_lookups_pkg.get_meaning(
10372 p_lookup_type => 'XLA_OWNER_TYPE'
10373 ,p_lookup_code => l_component_type_code
10374 )
10375 ,p_token_4 => 'PRODUCT_NAME'
10376 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10380 ,p_ae_header_id => NULL
10377 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10378 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10379 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10381 );
10382
10383 IF (C_LEVEL_ERROR>= g_log_level) THEN
10384 trace
10385 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10386 ,p_level => C_LEVEL_ERROR
10387 ,p_module => l_log_module);
10388 END IF;
10389 END IF;
10390 END IF;
10391 --
10392 --
10393 ------------------------------------------------------------------------------------------------
10394 -- 4219869 Business Flow
10395 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10396 -- Prior Entry. Currently, the following code is always generated.
10397 ------------------------------------------------------------------------------------------------
10398 XLA_AE_LINES_PKG.ValidateCurrentLine;
10399
10400 ------------------------------------------------------------------------------------
10401 -- 4219869 Business Flow
10402 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10403 ------------------------------------------------------------------------------------
10404 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10405
10406 ----------------------------------------------------------------------------------
10407 -- 4219869 Business Flow
10408 -- Update journal entry status -- Need to generate this within IF <condition>
10409 ----------------------------------------------------------------------------------
10410 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10411 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10412 ,p_balance_type_code => l_balance_type_code
10413 );
10414
10415 -------------------------------------------------------------------------------------------
10416 -- 4262811 - Generate the Accrual Reversal lines
10417 -------------------------------------------------------------------------------------------
10418 BEGIN
10419 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10420 (g_array_event(p_event_id).array_value_num('header_index'));
10421 IF l_acc_rev_flag IS NULL THEN
10422 l_acc_rev_flag := 'N';
10423 END IF;
10424 EXCEPTION
10425 WHEN OTHERS THEN
10426 l_acc_rev_flag := 'N';
10427 END;
10428 --
10429 IF (l_acc_rev_flag = 'Y') THEN
10430
10431 -- 4645092 ------------------------------------------------------------------------------
10432 -- To allow MPA report to determine if it should generate report process
10433 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10434 ------------------------------------------------------------------------------------------
10435
10436 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10437 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10438
10439 --
10440 -- Update the line information that should be overwritten
10441 --
10442 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10443 p_header_num => 1);
10444 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
10445
10446 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10447
10448 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
10449 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10450 END IF;
10451
10452 --
10453 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10454 --
10455 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10456 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
10457 ELSE
10458 ---------------------------------------------------------------------------------------------------
10459 -- 4262811a Switch Sign
10460 ---------------------------------------------------------------------------------------------------
10461 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
10462 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10463 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10464 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10465 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10466 -- 5132302
10467 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10468 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10469
10470 END IF;
10471
10472 -- 4955764
10473 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10474 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10475
10476
10477 XLA_AE_LINES_PKG.ValidateCurrentLine;
10478 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10479
10480 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10481 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10485
10482 ,p_balance_type_code => l_balance_type_code);
10483
10484 END IF;
10486 -----------------------------------------------------------------------------------------
10487 -- 4262811 Multiperiod Accounting
10488 -----------------------------------------------------------------------------------------
10489 -- No MPA option is assigned.
10490
10491
10492 END IF;
10493 END IF;
10494 --
10495
10496 --
10497 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10498 trace
10499 (p_msg => 'END of AcctLineType_22'
10500 ,p_level => C_LEVEL_PROCEDURE
10501 ,p_module => l_log_module);
10502 END IF;
10503 --
10504 EXCEPTION
10505 WHEN xla_exceptions_pkg.application_exception THEN
10506 RAISE;
10507 WHEN OTHERS THEN
10508 xla_exceptions_pkg.raise_message
10509 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_22');
10510 END AcctLineType_22;
10511 --
10512
10513 ---------------------------------------
10514 --
10515 -- PRIVATE FUNCTION
10516 -- AcctLineType_23
10517 --
10518 ---------------------------------------
10519 PROCEDURE AcctLineType_23 (
10520 p_application_id IN NUMBER
10521 ,p_event_id IN NUMBER
10522 ,p_calculate_acctd_flag IN VARCHAR2
10523 ,p_calculate_g_l_flag IN VARCHAR2
10524 ,p_actual_flag IN OUT VARCHAR2
10525 ,p_balance_type_code OUT VARCHAR2
10526 ,p_gain_or_loss_ref OUT VARCHAR2
10527
10528 --Contract Number
10529 , p_source_1 IN VARCHAR2
10530 --Contract Product Name
10531 , p_source_2 IN VARCHAR2
10532 --Distribution Account
10533 , p_source_5 IN NUMBER
10534 --Accounting Line Type
10535 , p_source_6 IN VARCHAR2
10536 , p_source_6_meaning IN VARCHAR2
10537 --Accounting Distribution Identifier
10538 , p_source_7 IN NUMBER
10539 --Distribution Type
10540 , p_source_8 IN VARCHAR2
10541 --Distribution Entered Amount
10542 , p_source_9 IN NUMBER
10543 --Transaction Currency Code
10544 , p_source_10 IN VARCHAR2
10545 --Transaction Currency Conversion Date
10546 , p_source_11 IN DATE
10547 --Transaction Currency Conversion Rate
10548 , p_source_12 IN NUMBER
10549 --Transaction Currency Conversion Type
10550 , p_source_13 IN VARCHAR2
10551 )
10552 IS
10553
10554 l_component_type VARCHAR2(80);
10555 l_component_code VARCHAR2(30);
10556 l_component_type_code VARCHAR2(1);
10557 l_component_appl_id INTEGER;
10558 l_amb_context_code VARCHAR2(30);
10559 l_entity_code VARCHAR2(30);
10560 l_event_class_code VARCHAR2(30);
10561 l_ae_header_id NUMBER;
10562 l_event_type_code VARCHAR2(30);
10563 l_line_definition_code VARCHAR2(30);
10564 l_line_definition_owner_code VARCHAR2(1);
10565 --
10566 -- adr variables
10567 l_segment VARCHAR2(30);
10568 l_ccid NUMBER;
10569 l_adr_transaction_coa_id NUMBER;
10570 l_adr_accounting_coa_id NUMBER;
10571 l_adr_flexfield_segment_code VARCHAR2(30);
10572 l_adr_flex_value_set_id NUMBER;
10573 l_adr_value_type_code VARCHAR2(30);
10574 l_adr_value_combination_id NUMBER;
10575 l_adr_value_segment_code VARCHAR2(30);
10576
10577 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
10578 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
10579 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
10580 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
10581
10582 -- 4262811 Variables ------------------------------------------------------------------------------------------
10583 l_entered_amt_idx NUMBER;
10584 l_accted_amt_idx NUMBER;
10585 l_acc_rev_flag VARCHAR2(1);
10586 l_accrual_line_num NUMBER;
10587 l_tmp_amt NUMBER;
10588 l_acc_rev_natural_side_code VARCHAR2(1);
10589
10590 l_num_entries NUMBER;
10591 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
10592 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
10593 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
10594 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
10595 l_recog_line_1 NUMBER;
10596 l_recog_line_2 NUMBER;
10597
10598 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
10599 l_bflow_applied_to_amt NUMBER; -- 5132302
10600 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
10601
10602 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
10603
10604 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
10605 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
10606
10607 ---------------------------------------------------------------------------------------------------------------
10608
10609
10610 --
10611 -- bulk performance
10612 --
10613 l_balance_type_code VARCHAR2(1);
10614 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
10615 l_log_module VARCHAR2(240);
10616
10617 --
10618 -- Upgrade strategy
10619 --
10620 l_actual_upg_option VARCHAR2(1);
10621 l_enc_upg_option VARCHAR2(1);
10622
10623 --
10624 BEGIN
10625 --
10626 IF g_log_enabled THEN
10627 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_23';
10628 END IF;
10629 --
10633 (p_msg => 'BEGIN of AcctLineType_23'
10630 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10631
10632 trace
10634 ,p_level => C_LEVEL_PROCEDURE
10635 ,p_module => l_log_module);
10636
10637 END IF;
10638 --
10639 l_component_type := 'AMB_JLT';
10640 l_component_code := 'OKL_RELEASE_DR';
10641 l_component_type_code := 'S';
10642 l_component_appl_id := 540;
10643 l_amb_context_code := 'DEFAULT';
10644 l_entity_code := 'CONTRACTS';
10645 l_event_class_code := 'RE_LEASE';
10646 l_event_type_code := 'RE_LEASE_ALL';
10647 l_line_definition_owner_code := 'S';
10648 l_line_definition_code := 'OKL_RELEASE';
10649 --
10650 l_balance_type_code := 'A';
10651 l_segment := NULL;
10652 l_ccid := NULL;
10653 l_adr_transaction_coa_id := NULL;
10654 l_adr_accounting_coa_id := NULL;
10655 l_adr_flexfield_segment_code := NULL;
10656 l_adr_flex_value_set_id := NULL;
10657 l_adr_value_type_code := NULL;
10658 l_adr_value_combination_id := NULL;
10659 l_adr_value_segment_code := NULL;
10660
10661 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
10662 l_bflow_class_code := ''; -- 4219869 Business Flow
10663 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
10664 l_budgetary_control_flag := 'N';
10665
10666 l_bflow_applied_to_amt_idx := NULL; -- 5132302
10667 l_bflow_applied_to_amt := NULL; -- 5132302
10668 l_entered_amt_idx := NULL; -- 4262811
10669 l_accted_amt_idx := NULL; -- 4262811
10670 l_acc_rev_flag := NULL; -- 4262811
10671 l_accrual_line_num := NULL; -- 4262811
10672 l_tmp_amt := NULL; -- 4262811
10673 --
10674
10675 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10676 l_balance_type_code <> 'B' THEN
10677 IF NVL(p_source_6,'
10678 ') = 'LEASE_DEBIT'
10679 THEN
10680
10681 --
10682 XLA_AE_LINES_PKG.SetNewLine;
10683
10684 p_balance_type_code := l_balance_type_code;
10685 -- set the flag so later we will know whether the gain loss line needs to be created
10686
10687 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
10688 p_actual_flag :='A';
10689 END IF;
10690
10691 --
10692 -- bulk performance
10693 --
10694 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
10695 p_header_num => 0); -- 4262811
10696 --
10697 -- set accounting line options
10698 --
10699 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
10700 p_natural_side_code => 'D'
10701 , p_gain_or_loss_flag => 'N'
10702 , p_gl_transfer_mode_code => 'S'
10703 , p_acct_entry_type_code => 'A'
10704 , p_switch_side_flag => 'Y'
10705 , p_merge_duplicate_code => 'N'
10706 );
10707 --
10708 l_acc_rev_natural_side_code := 'C'; -- 4262811
10709 --
10710 --
10711 -- set accounting line type info
10712 --
10713 xla_ae_lines_pkg.SetAcctLineType
10714 (p_component_type => l_component_type
10715 ,p_event_type_code => l_event_type_code
10716 ,p_line_definition_owner_code => l_line_definition_owner_code
10717 ,p_line_definition_code => l_line_definition_code
10718 ,p_accounting_line_code => l_component_code
10719 ,p_accounting_line_type_code => l_component_type_code
10720 ,p_accounting_line_appl_id => l_component_appl_id
10721 ,p_amb_context_code => l_amb_context_code
10722 ,p_entity_code => l_entity_code
10723 ,p_event_class_code => l_event_class_code);
10724 --
10725 -- set accounting class
10726 --
10727 xla_ae_lines_pkg.SetAcctClass(
10728 p_accounting_class_code => 'RELEASE'
10729 , p_ae_header_id => l_ae_header_id
10730 );
10731
10732 --
10733 -- set rounding class
10734 --
10735 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
10736 'RELEASE';
10737
10738 --
10739 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
10740 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
10741 --
10742 -- bulk performance
10743 --
10744 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
10745
10746 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
10747 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10748
10749 -- 4955764
10750 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10751 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
10752
10753 -- 4458381 Public Sector Enh
10754
10755 --
10756 -- set accounting attributes for the line type
10757 --
10758 l_entered_amt_idx := 3;
10759 l_accted_amt_idx := NULL;
10760 l_bflow_applied_to_amt_idx := NULL; -- 5132302
10761 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
10762 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
10763 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
10764 l_rec_acct_attrs.array_char_value(2) := p_source_8;
10765 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
10769 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
10766 l_rec_acct_attrs.array_num_value(3) := p_source_9;
10767 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
10768 l_rec_acct_attrs.array_char_value(4) := p_source_10;
10770 l_rec_acct_attrs.array_date_value(5) := p_source_11;
10771 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
10772 l_rec_acct_attrs.array_num_value(6) := p_source_12;
10773 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
10774 l_rec_acct_attrs.array_char_value(7) := p_source_13;
10775
10776 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10777 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10778
10779 ---------------------------------------------------------------------------------------------------------------
10780 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10781 ---------------------------------------------------------------------------------------------------------------
10782 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10783
10784 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10785 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10786
10787 IF xla_accounting_cache_pkg.GetValueChar
10788 (p_source_code => 'LEDGER_CATEGORY_CODE'
10789 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10790 AND l_bflow_method_code = 'PRIOR_ENTRY'
10791 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10792 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10793 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10794 )
10795 THEN
10796 xla_ae_lines_pkg.BflowUpgEntry
10797 (p_business_method_code => l_bflow_method_code
10798 ,p_business_class_code => l_bflow_class_code
10799 ,p_balance_type => l_balance_type_code);
10800 ELSE
10801 NULL;
10802 -- No business flow processing for business flow method of NONE.
10803 END IF;
10804
10805 --
10806 -- call analytical criteria
10807 --
10808
10809 --
10810 -- call description
10811 --
10812
10813 xla_ae_lines_pkg.SetLineDescription(
10814 p_ae_header_id => l_ae_header_id
10815 ,p_description => Description_1 (
10816 p_application_id => p_application_id
10817 , p_ae_header_id => l_ae_header_id
10818 , p_source_1 => p_source_1
10819 , p_source_2 => p_source_2
10820 )
10821 );
10822
10823
10824 --
10825 -- call ADRs
10826 -- Bug 4922099
10827 --
10828 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10829 (NVL(l_actual_upg_option, 'N') = 'O') OR
10830 (NVL(l_enc_upg_option, 'N') = 'O')
10831 )
10832 THEN
10833 NULL;
10834 --
10835 --
10836
10837 l_ccid := AcctDerRule_3(
10838 p_application_id => p_application_id
10839 , p_ae_header_id => l_ae_header_id
10840 , p_source_5 => p_source_5
10841 , x_transaction_coa_id => l_adr_transaction_coa_id
10842 , x_accounting_coa_id => l_adr_accounting_coa_id
10843 , x_value_type_code => l_adr_value_type_code
10844 , p_side => 'NA'
10845 );
10846
10847 xla_ae_lines_pkg.set_ccid(
10848 p_code_combination_id => l_ccid
10849 , p_value_type_code => l_adr_value_type_code
10850 , p_transaction_coa_id => l_adr_transaction_coa_id
10851 , p_accounting_coa_id => l_adr_accounting_coa_id
10852 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
10853 , p_adr_type_code => 'S'
10854 , p_component_type => l_component_type
10855 , p_component_code => l_component_code
10856 , p_component_type_code => l_component_type_code
10857 , p_component_appl_id => l_component_appl_id
10858 , p_amb_context_code => l_amb_context_code
10859 , p_side => 'NA'
10860 );
10861
10862
10863 --
10864 --
10865 END IF;
10866 --
10867 -- Bug 4922099
10868 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10869 (NVL(l_enc_upg_option, 'N') = 'O')
10870 ) AND
10871 (l_bflow_method_code = 'PRIOR_ENTRY')
10872 )
10873 THEN
10874 IF
10875 --
10876 1 = 2
10877 --
10878 THEN
10879 xla_accounting_err_pkg.build_message
10880 (p_appli_s_name => 'XLA'
10881 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10882 ,p_token_1 => 'LINE_NUMBER'
10883 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
10884 ,p_token_2 => 'LINE_TYPE_NAME'
10885 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
10886 l_component_type
10887 ,l_component_code
10888 ,l_component_type_code
10889 ,l_component_appl_id
10890 ,l_amb_context_code
10894 ,p_token_3 => 'OWNER'
10891 ,l_entity_code
10892 ,l_event_class_code
10893 )
10895 ,p_value_3 => xla_lookups_pkg.get_meaning(
10896 p_lookup_type => 'XLA_OWNER_TYPE'
10897 ,p_lookup_code => l_component_type_code
10898 )
10899 ,p_token_4 => 'PRODUCT_NAME'
10900 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10901 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10902 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10903 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10904 ,p_ae_header_id => NULL
10905 );
10906
10907 IF (C_LEVEL_ERROR>= g_log_level) THEN
10908 trace
10909 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10910 ,p_level => C_LEVEL_ERROR
10911 ,p_module => l_log_module);
10912 END IF;
10913 END IF;
10914 END IF;
10915 --
10916 --
10917 ------------------------------------------------------------------------------------------------
10918 -- 4219869 Business Flow
10919 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10920 -- Prior Entry. Currently, the following code is always generated.
10921 ------------------------------------------------------------------------------------------------
10922 XLA_AE_LINES_PKG.ValidateCurrentLine;
10923
10924 ------------------------------------------------------------------------------------
10925 -- 4219869 Business Flow
10926 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10927 ------------------------------------------------------------------------------------
10928 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10929
10930 ----------------------------------------------------------------------------------
10931 -- 4219869 Business Flow
10932 -- Update journal entry status -- Need to generate this within IF <condition>
10933 ----------------------------------------------------------------------------------
10934 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10935 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10936 ,p_balance_type_code => l_balance_type_code
10937 );
10938
10939 -------------------------------------------------------------------------------------------
10940 -- 4262811 - Generate the Accrual Reversal lines
10941 -------------------------------------------------------------------------------------------
10942 BEGIN
10943 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10944 (g_array_event(p_event_id).array_value_num('header_index'));
10945 IF l_acc_rev_flag IS NULL THEN
10946 l_acc_rev_flag := 'N';
10947 END IF;
10948 EXCEPTION
10949 WHEN OTHERS THEN
10950 l_acc_rev_flag := 'N';
10951 END;
10952 --
10953 IF (l_acc_rev_flag = 'Y') THEN
10954
10955 -- 4645092 ------------------------------------------------------------------------------
10956 -- To allow MPA report to determine if it should generate report process
10957 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10958 ------------------------------------------------------------------------------------------
10959
10960 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10961 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10962
10963 --
10964 -- Update the line information that should be overwritten
10965 --
10966 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10967 p_header_num => 1);
10968 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
10969
10970 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10971
10972 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
10973 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10974 END IF;
10975
10976 --
10977 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10978 --
10979 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10980 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
10981 ELSE
10982 ---------------------------------------------------------------------------------------------------
10983 -- 4262811a Switch Sign
10984 ---------------------------------------------------------------------------------------------------
10985 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
10986 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10987 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10988 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10992 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10989 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10990 -- 5132302
10991 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10993
10994 END IF;
10995
10996 -- 4955764
10997 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10998 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10999
11000
11001 XLA_AE_LINES_PKG.ValidateCurrentLine;
11002 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11003
11004 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11005 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
11006 ,p_balance_type_code => l_balance_type_code);
11007
11008 END IF;
11009
11010 -----------------------------------------------------------------------------------------
11011 -- 4262811 Multiperiod Accounting
11012 -----------------------------------------------------------------------------------------
11013 -- No MPA option is assigned.
11014
11015
11016 END IF;
11017 END IF;
11018 --
11019
11020 --
11021 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11022 trace
11023 (p_msg => 'END of AcctLineType_23'
11024 ,p_level => C_LEVEL_PROCEDURE
11025 ,p_module => l_log_module);
11026 END IF;
11027 --
11028 EXCEPTION
11029 WHEN xla_exceptions_pkg.application_exception THEN
11030 RAISE;
11031 WHEN OTHERS THEN
11032 xla_exceptions_pkg.raise_message
11033 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_23');
11034 END AcctLineType_23;
11035 --
11036
11037 ---------------------------------------
11038 --
11039 -- PRIVATE FUNCTION
11040 -- AcctLineType_24
11041 --
11042 ---------------------------------------
11043 PROCEDURE AcctLineType_24 (
11044 p_application_id IN NUMBER
11045 ,p_event_id IN NUMBER
11046 ,p_calculate_acctd_flag IN VARCHAR2
11047 ,p_calculate_g_l_flag IN VARCHAR2
11048 ,p_actual_flag IN OUT VARCHAR2
11049 ,p_balance_type_code OUT VARCHAR2
11050 ,p_gain_or_loss_ref OUT VARCHAR2
11051
11052 --Contract Number
11053 , p_source_1 IN VARCHAR2
11054 --Contract Product Name
11055 , p_source_2 IN VARCHAR2
11056 --Distribution Account
11057 , p_source_5 IN NUMBER
11058 --Accounting Line Type
11059 , p_source_6 IN VARCHAR2
11060 , p_source_6_meaning IN VARCHAR2
11061 --Accounting Distribution Identifier
11062 , p_source_7 IN NUMBER
11063 --Distribution Type
11064 , p_source_8 IN VARCHAR2
11065 --Distribution Entered Amount
11066 , p_source_9 IN NUMBER
11067 --Transaction Currency Code
11068 , p_source_10 IN VARCHAR2
11069 --Transaction Currency Conversion Date
11070 , p_source_11 IN DATE
11071 --Transaction Currency Conversion Rate
11072 , p_source_12 IN NUMBER
11073 --Transaction Currency Conversion Type
11074 , p_source_13 IN VARCHAR2
11075 )
11076 IS
11077
11078 l_component_type VARCHAR2(80);
11079 l_component_code VARCHAR2(30);
11080 l_component_type_code VARCHAR2(1);
11081 l_component_appl_id INTEGER;
11082 l_amb_context_code VARCHAR2(30);
11083 l_entity_code VARCHAR2(30);
11084 l_event_class_code VARCHAR2(30);
11085 l_ae_header_id NUMBER;
11086 l_event_type_code VARCHAR2(30);
11087 l_line_definition_code VARCHAR2(30);
11088 l_line_definition_owner_code VARCHAR2(1);
11089 --
11090 -- adr variables
11091 l_segment VARCHAR2(30);
11092 l_ccid NUMBER;
11093 l_adr_transaction_coa_id NUMBER;
11094 l_adr_accounting_coa_id NUMBER;
11095 l_adr_flexfield_segment_code VARCHAR2(30);
11096 l_adr_flex_value_set_id NUMBER;
11097 l_adr_value_type_code VARCHAR2(30);
11098 l_adr_value_combination_id NUMBER;
11099 l_adr_value_segment_code VARCHAR2(30);
11100
11101 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
11102 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
11103 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
11104 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
11105
11106 -- 4262811 Variables ------------------------------------------------------------------------------------------
11107 l_entered_amt_idx NUMBER;
11108 l_accted_amt_idx NUMBER;
11109 l_acc_rev_flag VARCHAR2(1);
11110 l_accrual_line_num NUMBER;
11111 l_tmp_amt NUMBER;
11112 l_acc_rev_natural_side_code VARCHAR2(1);
11113
11114 l_num_entries NUMBER;
11115 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
11116 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
11117 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
11118 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
11119 l_recog_line_1 NUMBER;
11120 l_recog_line_2 NUMBER;
11121
11122 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
11123 l_bflow_applied_to_amt NUMBER; -- 5132302
11124 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
11125
11126 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11127
11131 ---------------------------------------------------------------------------------------------------------------
11128 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
11129 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
11130
11132
11133
11134 --
11135 -- bulk performance
11136 --
11137 l_balance_type_code VARCHAR2(1);
11138 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
11139 l_log_module VARCHAR2(240);
11140
11141 --
11142 -- Upgrade strategy
11143 --
11144 l_actual_upg_option VARCHAR2(1);
11145 l_enc_upg_option VARCHAR2(1);
11146
11147 --
11148 BEGIN
11149 --
11150 IF g_log_enabled THEN
11151 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_24';
11152 END IF;
11153 --
11154 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11155
11156 trace
11157 (p_msg => 'BEGIN of AcctLineType_24'
11158 ,p_level => C_LEVEL_PROCEDURE
11159 ,p_module => l_log_module);
11160
11161 END IF;
11162 --
11163 l_component_type := 'AMB_JLT';
11164 l_component_code := 'OKL_SPECIFIC_LOSS_PROVISION_CR';
11165 l_component_type_code := 'S';
11166 l_component_appl_id := 540;
11167 l_amb_context_code := 'DEFAULT';
11168 l_entity_code := 'TRANSACTIONS';
11169 l_event_class_code := 'SPECIFIC_LOSS_PROVISION';
11170 l_event_type_code := 'SPECIFIC_LOSS_PROVISION_ALL';
11171 l_line_definition_owner_code := 'S';
11172 l_line_definition_code := 'OKL_SPECIFIC_LOSS_PROVISION';
11173 --
11174 l_balance_type_code := 'A';
11175 l_segment := NULL;
11176 l_ccid := NULL;
11177 l_adr_transaction_coa_id := NULL;
11178 l_adr_accounting_coa_id := NULL;
11179 l_adr_flexfield_segment_code := NULL;
11180 l_adr_flex_value_set_id := NULL;
11181 l_adr_value_type_code := NULL;
11182 l_adr_value_combination_id := NULL;
11183 l_adr_value_segment_code := NULL;
11184
11185 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
11186 l_bflow_class_code := ''; -- 4219869 Business Flow
11187 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
11188 l_budgetary_control_flag := 'N';
11189
11190 l_bflow_applied_to_amt_idx := NULL; -- 5132302
11191 l_bflow_applied_to_amt := NULL; -- 5132302
11192 l_entered_amt_idx := NULL; -- 4262811
11193 l_accted_amt_idx := NULL; -- 4262811
11194 l_acc_rev_flag := NULL; -- 4262811
11195 l_accrual_line_num := NULL; -- 4262811
11196 l_tmp_amt := NULL; -- 4262811
11197 --
11198
11199 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11200 l_balance_type_code <> 'B' THEN
11201 IF NVL(p_source_6,'
11202 ') = 'LEASE_CREDIT'
11203 THEN
11204
11205 --
11206 XLA_AE_LINES_PKG.SetNewLine;
11207
11208 p_balance_type_code := l_balance_type_code;
11209 -- set the flag so later we will know whether the gain loss line needs to be created
11210
11211 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11212 p_actual_flag :='A';
11213 END IF;
11214
11215 --
11216 -- bulk performance
11217 --
11218 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11219 p_header_num => 0); -- 4262811
11220 --
11221 -- set accounting line options
11222 --
11223 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11224 p_natural_side_code => 'C'
11225 , p_gain_or_loss_flag => 'N'
11226 , p_gl_transfer_mode_code => 'S'
11227 , p_acct_entry_type_code => 'A'
11228 , p_switch_side_flag => 'Y'
11229 , p_merge_duplicate_code => 'N'
11230 );
11231 --
11232 l_acc_rev_natural_side_code := 'D'; -- 4262811
11233 --
11234 --
11235 -- set accounting line type info
11236 --
11237 xla_ae_lines_pkg.SetAcctLineType
11238 (p_component_type => l_component_type
11239 ,p_event_type_code => l_event_type_code
11240 ,p_line_definition_owner_code => l_line_definition_owner_code
11241 ,p_line_definition_code => l_line_definition_code
11242 ,p_accounting_line_code => l_component_code
11243 ,p_accounting_line_type_code => l_component_type_code
11244 ,p_accounting_line_appl_id => l_component_appl_id
11245 ,p_amb_context_code => l_amb_context_code
11246 ,p_entity_code => l_entity_code
11247 ,p_event_class_code => l_event_class_code);
11248 --
11249 -- set accounting class
11250 --
11251 xla_ae_lines_pkg.SetAcctClass(
11252 p_accounting_class_code => 'SPECIFIC_LOSS_PROVISION'
11253 , p_ae_header_id => l_ae_header_id
11254 );
11255
11256 --
11257 -- set rounding class
11258 --
11259 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11260 'SPECIFIC_LOSS_PROVISION';
11261
11262 --
11263 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11264 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11265 --
11266 -- bulk performance
11267 --
11268 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11269
11273 -- 4955764
11270 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11271 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11272
11274 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11275 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11276
11277 -- 4458381 Public Sector Enh
11278
11279 --
11280 -- set accounting attributes for the line type
11281 --
11282 l_entered_amt_idx := 3;
11283 l_accted_amt_idx := NULL;
11284 l_bflow_applied_to_amt_idx := NULL; -- 5132302
11285 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
11286 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
11287 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
11288 l_rec_acct_attrs.array_char_value(2) := p_source_8;
11289 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
11290 l_rec_acct_attrs.array_num_value(3) := p_source_9;
11291 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
11292 l_rec_acct_attrs.array_char_value(4) := p_source_10;
11293 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
11294 l_rec_acct_attrs.array_date_value(5) := p_source_11;
11295 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
11296 l_rec_acct_attrs.array_num_value(6) := p_source_12;
11297 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
11298 l_rec_acct_attrs.array_char_value(7) := p_source_13;
11299
11300 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
11301 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
11302
11303 ---------------------------------------------------------------------------------------------------------------
11304 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
11305 ---------------------------------------------------------------------------------------------------------------
11306 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
11307
11308 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11309 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11310
11311 IF xla_accounting_cache_pkg.GetValueChar
11312 (p_source_code => 'LEDGER_CATEGORY_CODE'
11313 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
11314 AND l_bflow_method_code = 'PRIOR_ENTRY'
11315 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
11316 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
11317 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11318 )
11319 THEN
11320 xla_ae_lines_pkg.BflowUpgEntry
11321 (p_business_method_code => l_bflow_method_code
11322 ,p_business_class_code => l_bflow_class_code
11323 ,p_balance_type => l_balance_type_code);
11324 ELSE
11325 NULL;
11326 -- No business flow processing for business flow method of NONE.
11327 END IF;
11328
11329 --
11330 -- call analytical criteria
11331 --
11332
11333 --
11334 -- call description
11335 --
11336
11337 xla_ae_lines_pkg.SetLineDescription(
11338 p_ae_header_id => l_ae_header_id
11339 ,p_description => Description_1 (
11340 p_application_id => p_application_id
11341 , p_ae_header_id => l_ae_header_id
11342 , p_source_1 => p_source_1
11343 , p_source_2 => p_source_2
11344 )
11345 );
11346
11347
11348 --
11349 -- call ADRs
11350 -- Bug 4922099
11351 --
11352 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11353 (NVL(l_actual_upg_option, 'N') = 'O') OR
11354 (NVL(l_enc_upg_option, 'N') = 'O')
11355 )
11356 THEN
11357 NULL;
11358 --
11359 --
11360
11361 l_ccid := AcctDerRule_3(
11362 p_application_id => p_application_id
11363 , p_ae_header_id => l_ae_header_id
11364 , p_source_5 => p_source_5
11365 , x_transaction_coa_id => l_adr_transaction_coa_id
11366 , x_accounting_coa_id => l_adr_accounting_coa_id
11367 , x_value_type_code => l_adr_value_type_code
11368 , p_side => 'NA'
11369 );
11370
11371 xla_ae_lines_pkg.set_ccid(
11372 p_code_combination_id => l_ccid
11373 , p_value_type_code => l_adr_value_type_code
11374 , p_transaction_coa_id => l_adr_transaction_coa_id
11375 , p_accounting_coa_id => l_adr_accounting_coa_id
11376 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
11377 , p_adr_type_code => 'S'
11378 , p_component_type => l_component_type
11379 , p_component_code => l_component_code
11380 , p_component_type_code => l_component_type_code
11381 , p_component_appl_id => l_component_appl_id
11382 , p_amb_context_code => l_amb_context_code
11383 , p_side => 'NA'
11384 );
11385
11386
11387 --
11388 --
11389 END IF;
11390 --
11391 -- Bug 4922099
11392 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
11393 (NVL(l_enc_upg_option, 'N') = 'O')
11394 ) AND
11395 (l_bflow_method_code = 'PRIOR_ENTRY')
11396 )
11397 THEN
11398 IF
11399 --
11400 1 = 2
11401 --
11402 THEN
11403 xla_accounting_err_pkg.build_message
11407 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
11404 (p_appli_s_name => 'XLA'
11405 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11406 ,p_token_1 => 'LINE_NUMBER'
11408 ,p_token_2 => 'LINE_TYPE_NAME'
11409 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
11410 l_component_type
11411 ,l_component_code
11412 ,l_component_type_code
11413 ,l_component_appl_id
11414 ,l_amb_context_code
11415 ,l_entity_code
11416 ,l_event_class_code
11417 )
11418 ,p_token_3 => 'OWNER'
11419 ,p_value_3 => xla_lookups_pkg.get_meaning(
11420 p_lookup_type => 'XLA_OWNER_TYPE'
11421 ,p_lookup_code => l_component_type_code
11422 )
11423 ,p_token_4 => 'PRODUCT_NAME'
11424 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
11425 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
11426 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
11427 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
11428 ,p_ae_header_id => NULL
11429 );
11430
11431 IF (C_LEVEL_ERROR>= g_log_level) THEN
11432 trace
11433 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11434 ,p_level => C_LEVEL_ERROR
11435 ,p_module => l_log_module);
11436 END IF;
11437 END IF;
11438 END IF;
11439 --
11440 --
11441 ------------------------------------------------------------------------------------------------
11442 -- 4219869 Business Flow
11443 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
11444 -- Prior Entry. Currently, the following code is always generated.
11445 ------------------------------------------------------------------------------------------------
11446 XLA_AE_LINES_PKG.ValidateCurrentLine;
11447
11448 ------------------------------------------------------------------------------------
11449 -- 4219869 Business Flow
11450 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
11451 ------------------------------------------------------------------------------------
11452 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11453
11454 ----------------------------------------------------------------------------------
11455 -- 4219869 Business Flow
11456 -- Update journal entry status -- Need to generate this within IF <condition>
11457 ----------------------------------------------------------------------------------
11458 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11459 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
11460 ,p_balance_type_code => l_balance_type_code
11461 );
11462
11463 -------------------------------------------------------------------------------------------
11464 -- 4262811 - Generate the Accrual Reversal lines
11465 -------------------------------------------------------------------------------------------
11466 BEGIN
11467 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
11468 (g_array_event(p_event_id).array_value_num('header_index'));
11469 IF l_acc_rev_flag IS NULL THEN
11470 l_acc_rev_flag := 'N';
11471 END IF;
11472 EXCEPTION
11473 WHEN OTHERS THEN
11474 l_acc_rev_flag := 'N';
11475 END;
11476 --
11477 IF (l_acc_rev_flag = 'Y') THEN
11478
11479 -- 4645092 ------------------------------------------------------------------------------
11480 -- To allow MPA report to determine if it should generate report process
11481 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
11482 ------------------------------------------------------------------------------------------
11483
11484 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
11485 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
11486
11487 --
11488 -- Update the line information that should be overwritten
11489 --
11490 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
11491 p_header_num => 1);
11492 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
11493
11494 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
11495
11496 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
11497 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
11498 END IF;
11499
11500 --
11504 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
11501 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
11502 --
11503 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
11505 ELSE
11506 ---------------------------------------------------------------------------------------------------
11507 -- 4262811a Switch Sign
11508 ---------------------------------------------------------------------------------------------------
11509 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
11510 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11511 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11512 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11513 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11514 -- 5132302
11515 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
11516 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11517
11518 END IF;
11519
11520 -- 4955764
11521 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11522 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
11523
11524
11525 XLA_AE_LINES_PKG.ValidateCurrentLine;
11526 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11527
11528 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11529 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
11530 ,p_balance_type_code => l_balance_type_code);
11531
11532 END IF;
11533
11534 -----------------------------------------------------------------------------------------
11535 -- 4262811 Multiperiod Accounting
11536 -----------------------------------------------------------------------------------------
11537 -- No MPA option is assigned.
11538
11539
11540 END IF;
11541 END IF;
11542 --
11543
11544 --
11545 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11546 trace
11547 (p_msg => 'END of AcctLineType_24'
11548 ,p_level => C_LEVEL_PROCEDURE
11549 ,p_module => l_log_module);
11550 END IF;
11551 --
11552 EXCEPTION
11553 WHEN xla_exceptions_pkg.application_exception THEN
11554 RAISE;
11555 WHEN OTHERS THEN
11556 xla_exceptions_pkg.raise_message
11557 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_24');
11558 END AcctLineType_24;
11559 --
11560
11561 ---------------------------------------
11562 --
11563 -- PRIVATE FUNCTION
11564 -- AcctLineType_25
11565 --
11566 ---------------------------------------
11567 PROCEDURE AcctLineType_25 (
11568 p_application_id IN NUMBER
11569 ,p_event_id IN NUMBER
11570 ,p_calculate_acctd_flag IN VARCHAR2
11571 ,p_calculate_g_l_flag IN VARCHAR2
11572 ,p_actual_flag IN OUT VARCHAR2
11573 ,p_balance_type_code OUT VARCHAR2
11574 ,p_gain_or_loss_ref OUT VARCHAR2
11575
11576 --Contract Number
11577 , p_source_1 IN VARCHAR2
11578 --Contract Product Name
11579 , p_source_2 IN VARCHAR2
11580 --Distribution Account
11581 , p_source_5 IN NUMBER
11582 --Accounting Line Type
11583 , p_source_6 IN VARCHAR2
11584 , p_source_6_meaning IN VARCHAR2
11585 --Accounting Distribution Identifier
11586 , p_source_7 IN NUMBER
11587 --Distribution Type
11588 , p_source_8 IN VARCHAR2
11589 --Distribution Entered Amount
11590 , p_source_9 IN NUMBER
11591 --Transaction Currency Code
11592 , p_source_10 IN VARCHAR2
11593 --Transaction Currency Conversion Date
11594 , p_source_11 IN DATE
11595 --Transaction Currency Conversion Rate
11596 , p_source_12 IN NUMBER
11597 --Transaction Currency Conversion Type
11598 , p_source_13 IN VARCHAR2
11599 )
11600 IS
11601
11602 l_component_type VARCHAR2(80);
11603 l_component_code VARCHAR2(30);
11604 l_component_type_code VARCHAR2(1);
11605 l_component_appl_id INTEGER;
11606 l_amb_context_code VARCHAR2(30);
11607 l_entity_code VARCHAR2(30);
11608 l_event_class_code VARCHAR2(30);
11609 l_ae_header_id NUMBER;
11610 l_event_type_code VARCHAR2(30);
11611 l_line_definition_code VARCHAR2(30);
11612 l_line_definition_owner_code VARCHAR2(1);
11613 --
11614 -- adr variables
11615 l_segment VARCHAR2(30);
11616 l_ccid NUMBER;
11617 l_adr_transaction_coa_id NUMBER;
11618 l_adr_accounting_coa_id NUMBER;
11619 l_adr_flexfield_segment_code VARCHAR2(30);
11620 l_adr_flex_value_set_id NUMBER;
11621 l_adr_value_type_code VARCHAR2(30);
11622 l_adr_value_combination_id NUMBER;
11623 l_adr_value_segment_code VARCHAR2(30);
11624
11625 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
11626 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
11627 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
11628 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
11629
11630 -- 4262811 Variables ------------------------------------------------------------------------------------------
11631 l_entered_amt_idx NUMBER;
11632 l_accted_amt_idx NUMBER;
11636 l_acc_rev_natural_side_code VARCHAR2(1);
11633 l_acc_rev_flag VARCHAR2(1);
11634 l_accrual_line_num NUMBER;
11635 l_tmp_amt NUMBER;
11637
11638 l_num_entries NUMBER;
11639 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
11640 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
11641 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
11642 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
11643 l_recog_line_1 NUMBER;
11644 l_recog_line_2 NUMBER;
11645
11646 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
11647 l_bflow_applied_to_amt NUMBER; -- 5132302
11648 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
11649
11650 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11651
11652 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
11653 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
11654
11655 ---------------------------------------------------------------------------------------------------------------
11656
11657
11658 --
11659 -- bulk performance
11660 --
11661 l_balance_type_code VARCHAR2(1);
11662 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
11663 l_log_module VARCHAR2(240);
11664
11665 --
11666 -- Upgrade strategy
11667 --
11668 l_actual_upg_option VARCHAR2(1);
11669 l_enc_upg_option VARCHAR2(1);
11670
11671 --
11672 BEGIN
11673 --
11674 IF g_log_enabled THEN
11675 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_25';
11676 END IF;
11677 --
11678 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11679
11680 trace
11681 (p_msg => 'BEGIN of AcctLineType_25'
11682 ,p_level => C_LEVEL_PROCEDURE
11683 ,p_module => l_log_module);
11684
11685 END IF;
11686 --
11687 l_component_type := 'AMB_JLT';
11688 l_component_code := 'OKL_SPECIFIC_LOSS_PROVISION_DR';
11689 l_component_type_code := 'S';
11690 l_component_appl_id := 540;
11691 l_amb_context_code := 'DEFAULT';
11692 l_entity_code := 'TRANSACTIONS';
11693 l_event_class_code := 'SPECIFIC_LOSS_PROVISION';
11694 l_event_type_code := 'SPECIFIC_LOSS_PROVISION_ALL';
11695 l_line_definition_owner_code := 'S';
11696 l_line_definition_code := 'OKL_SPECIFIC_LOSS_PROVISION';
11697 --
11698 l_balance_type_code := 'A';
11699 l_segment := NULL;
11700 l_ccid := NULL;
11701 l_adr_transaction_coa_id := NULL;
11702 l_adr_accounting_coa_id := NULL;
11703 l_adr_flexfield_segment_code := NULL;
11704 l_adr_flex_value_set_id := NULL;
11705 l_adr_value_type_code := NULL;
11706 l_adr_value_combination_id := NULL;
11707 l_adr_value_segment_code := NULL;
11708
11709 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
11710 l_bflow_class_code := ''; -- 4219869 Business Flow
11711 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
11712 l_budgetary_control_flag := 'N';
11713
11714 l_bflow_applied_to_amt_idx := NULL; -- 5132302
11715 l_bflow_applied_to_amt := NULL; -- 5132302
11716 l_entered_amt_idx := NULL; -- 4262811
11717 l_accted_amt_idx := NULL; -- 4262811
11718 l_acc_rev_flag := NULL; -- 4262811
11719 l_accrual_line_num := NULL; -- 4262811
11720 l_tmp_amt := NULL; -- 4262811
11721 --
11722
11723 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11724 l_balance_type_code <> 'B' THEN
11725 IF NVL(p_source_6,'
11726 ') = 'LEASE_DEBIT'
11727 THEN
11728
11729 --
11730 XLA_AE_LINES_PKG.SetNewLine;
11731
11732 p_balance_type_code := l_balance_type_code;
11733 -- set the flag so later we will know whether the gain loss line needs to be created
11734
11735 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11736 p_actual_flag :='A';
11737 END IF;
11738
11739 --
11740 -- bulk performance
11741 --
11742 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11743 p_header_num => 0); -- 4262811
11744 --
11745 -- set accounting line options
11746 --
11747 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11748 p_natural_side_code => 'D'
11749 , p_gain_or_loss_flag => 'N'
11750 , p_gl_transfer_mode_code => 'S'
11751 , p_acct_entry_type_code => 'A'
11752 , p_switch_side_flag => 'Y'
11753 , p_merge_duplicate_code => 'N'
11754 );
11755 --
11756 l_acc_rev_natural_side_code := 'C'; -- 4262811
11757 --
11758 --
11759 -- set accounting line type info
11760 --
11761 xla_ae_lines_pkg.SetAcctLineType
11762 (p_component_type => l_component_type
11763 ,p_event_type_code => l_event_type_code
11764 ,p_line_definition_owner_code => l_line_definition_owner_code
11765 ,p_line_definition_code => l_line_definition_code
11766 ,p_accounting_line_code => l_component_code
11767 ,p_accounting_line_type_code => l_component_type_code
11768 ,p_accounting_line_appl_id => l_component_appl_id
11769 ,p_amb_context_code => l_amb_context_code
11770 ,p_entity_code => l_entity_code
11774 --
11771 ,p_event_class_code => l_event_class_code);
11772 --
11773 -- set accounting class
11775 xla_ae_lines_pkg.SetAcctClass(
11776 p_accounting_class_code => 'SPECIFIC_LOSS_PROVISION'
11777 , p_ae_header_id => l_ae_header_id
11778 );
11779
11780 --
11781 -- set rounding class
11782 --
11783 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11784 'SPECIFIC_LOSS_PROVISION';
11785
11786 --
11787 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11788 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11789 --
11790 -- bulk performance
11791 --
11792 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11793
11794 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11795 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11796
11797 -- 4955764
11798 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11799 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11800
11801 -- 4458381 Public Sector Enh
11802
11803 --
11804 -- set accounting attributes for the line type
11805 --
11806 l_entered_amt_idx := 3;
11807 l_accted_amt_idx := NULL;
11808 l_bflow_applied_to_amt_idx := NULL; -- 5132302
11809 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
11810 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
11811 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
11812 l_rec_acct_attrs.array_char_value(2) := p_source_8;
11813 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
11814 l_rec_acct_attrs.array_num_value(3) := p_source_9;
11815 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
11816 l_rec_acct_attrs.array_char_value(4) := p_source_10;
11817 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
11818 l_rec_acct_attrs.array_date_value(5) := p_source_11;
11819 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
11820 l_rec_acct_attrs.array_num_value(6) := p_source_12;
11821 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
11822 l_rec_acct_attrs.array_char_value(7) := p_source_13;
11823
11824 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
11825 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
11826
11827 ---------------------------------------------------------------------------------------------------------------
11828 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
11829 ---------------------------------------------------------------------------------------------------------------
11830 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
11831
11832 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11833 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11834
11835 IF xla_accounting_cache_pkg.GetValueChar
11836 (p_source_code => 'LEDGER_CATEGORY_CODE'
11837 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
11838 AND l_bflow_method_code = 'PRIOR_ENTRY'
11839 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
11840 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
11841 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11842 )
11843 THEN
11844 xla_ae_lines_pkg.BflowUpgEntry
11845 (p_business_method_code => l_bflow_method_code
11846 ,p_business_class_code => l_bflow_class_code
11847 ,p_balance_type => l_balance_type_code);
11848 ELSE
11849 NULL;
11850 -- No business flow processing for business flow method of NONE.
11851 END IF;
11852
11853 --
11854 -- call analytical criteria
11855 --
11856
11857 --
11858 -- call description
11859 --
11860
11861 xla_ae_lines_pkg.SetLineDescription(
11862 p_ae_header_id => l_ae_header_id
11863 ,p_description => Description_1 (
11864 p_application_id => p_application_id
11865 , p_ae_header_id => l_ae_header_id
11866 , p_source_1 => p_source_1
11867 , p_source_2 => p_source_2
11868 )
11869 );
11870
11871
11872 --
11873 -- call ADRs
11874 -- Bug 4922099
11875 --
11876 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11877 (NVL(l_actual_upg_option, 'N') = 'O') OR
11878 (NVL(l_enc_upg_option, 'N') = 'O')
11879 )
11880 THEN
11881 NULL;
11882 --
11883 --
11884
11885 l_ccid := AcctDerRule_3(
11886 p_application_id => p_application_id
11887 , p_ae_header_id => l_ae_header_id
11888 , p_source_5 => p_source_5
11889 , x_transaction_coa_id => l_adr_transaction_coa_id
11890 , x_accounting_coa_id => l_adr_accounting_coa_id
11891 , x_value_type_code => l_adr_value_type_code
11892 , p_side => 'NA'
11893 );
11894
11895 xla_ae_lines_pkg.set_ccid(
11896 p_code_combination_id => l_ccid
11897 , p_value_type_code => l_adr_value_type_code
11898 , p_transaction_coa_id => l_adr_transaction_coa_id
11899 , p_accounting_coa_id => l_adr_accounting_coa_id
11903 , p_component_code => l_component_code
11900 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
11901 , p_adr_type_code => 'S'
11902 , p_component_type => l_component_type
11904 , p_component_type_code => l_component_type_code
11905 , p_component_appl_id => l_component_appl_id
11906 , p_amb_context_code => l_amb_context_code
11907 , p_side => 'NA'
11908 );
11909
11910
11911 --
11912 --
11913 END IF;
11914 --
11915 -- Bug 4922099
11916 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
11917 (NVL(l_enc_upg_option, 'N') = 'O')
11918 ) AND
11919 (l_bflow_method_code = 'PRIOR_ENTRY')
11920 )
11921 THEN
11922 IF
11923 --
11924 1 = 2
11925 --
11926 THEN
11927 xla_accounting_err_pkg.build_message
11928 (p_appli_s_name => 'XLA'
11929 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11930 ,p_token_1 => 'LINE_NUMBER'
11931 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
11932 ,p_token_2 => 'LINE_TYPE_NAME'
11933 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
11934 l_component_type
11935 ,l_component_code
11936 ,l_component_type_code
11937 ,l_component_appl_id
11938 ,l_amb_context_code
11939 ,l_entity_code
11940 ,l_event_class_code
11941 )
11942 ,p_token_3 => 'OWNER'
11943 ,p_value_3 => xla_lookups_pkg.get_meaning(
11944 p_lookup_type => 'XLA_OWNER_TYPE'
11945 ,p_lookup_code => l_component_type_code
11946 )
11947 ,p_token_4 => 'PRODUCT_NAME'
11948 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
11949 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
11950 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
11951 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
11952 ,p_ae_header_id => NULL
11953 );
11954
11955 IF (C_LEVEL_ERROR>= g_log_level) THEN
11956 trace
11957 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11958 ,p_level => C_LEVEL_ERROR
11959 ,p_module => l_log_module);
11960 END IF;
11961 END IF;
11962 END IF;
11963 --
11964 --
11965 ------------------------------------------------------------------------------------------------
11966 -- 4219869 Business Flow
11967 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
11968 -- Prior Entry. Currently, the following code is always generated.
11969 ------------------------------------------------------------------------------------------------
11970 XLA_AE_LINES_PKG.ValidateCurrentLine;
11971
11972 ------------------------------------------------------------------------------------
11973 -- 4219869 Business Flow
11974 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
11975 ------------------------------------------------------------------------------------
11976 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11977
11978 ----------------------------------------------------------------------------------
11979 -- 4219869 Business Flow
11980 -- Update journal entry status -- Need to generate this within IF <condition>
11981 ----------------------------------------------------------------------------------
11982 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11983 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
11984 ,p_balance_type_code => l_balance_type_code
11985 );
11986
11987 -------------------------------------------------------------------------------------------
11988 -- 4262811 - Generate the Accrual Reversal lines
11989 -------------------------------------------------------------------------------------------
11990 BEGIN
11991 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
11992 (g_array_event(p_event_id).array_value_num('header_index'));
11993 IF l_acc_rev_flag IS NULL THEN
11994 l_acc_rev_flag := 'N';
11995 END IF;
11996 EXCEPTION
11997 WHEN OTHERS THEN
11998 l_acc_rev_flag := 'N';
11999 END;
12000 --
12001 IF (l_acc_rev_flag = 'Y') THEN
12002
12003 -- 4645092 ------------------------------------------------------------------------------
12004 -- To allow MPA report to determine if it should generate report process
12005 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12009 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12006 ------------------------------------------------------------------------------------------
12007
12008 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12010
12011 --
12012 -- Update the line information that should be overwritten
12013 --
12014 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12015 p_header_num => 1);
12016 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
12017
12018 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12019
12020 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
12021 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12022 END IF;
12023
12024 --
12025 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12026 --
12027 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12028 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
12029 ELSE
12030 ---------------------------------------------------------------------------------------------------
12031 -- 4262811a Switch Sign
12032 ---------------------------------------------------------------------------------------------------
12033 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
12034 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12035 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12036 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12037 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12038 -- 5132302
12039 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
12040 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12041
12042 END IF;
12043
12044 -- 4955764
12045 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12046 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
12047
12048
12049 XLA_AE_LINES_PKG.ValidateCurrentLine;
12050 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12051
12052 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12053 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
12054 ,p_balance_type_code => l_balance_type_code);
12055
12056 END IF;
12057
12058 -----------------------------------------------------------------------------------------
12059 -- 4262811 Multiperiod Accounting
12060 -----------------------------------------------------------------------------------------
12061 -- No MPA option is assigned.
12062
12063
12064 END IF;
12065 END IF;
12066 --
12067
12068 --
12069 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12070 trace
12071 (p_msg => 'END of AcctLineType_25'
12072 ,p_level => C_LEVEL_PROCEDURE
12073 ,p_module => l_log_module);
12074 END IF;
12075 --
12076 EXCEPTION
12077 WHEN xla_exceptions_pkg.application_exception THEN
12078 RAISE;
12079 WHEN OTHERS THEN
12080 xla_exceptions_pkg.raise_message
12081 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_25');
12082 END AcctLineType_25;
12083 --
12084
12085 ---------------------------------------
12086 --
12087 -- PRIVATE FUNCTION
12088 -- AcctLineType_26
12089 --
12090 ---------------------------------------
12091 PROCEDURE AcctLineType_26 (
12092 p_application_id IN NUMBER
12093 ,p_event_id IN NUMBER
12094 ,p_calculate_acctd_flag IN VARCHAR2
12095 ,p_calculate_g_l_flag IN VARCHAR2
12096 ,p_actual_flag IN OUT VARCHAR2
12097 ,p_balance_type_code OUT VARCHAR2
12098 ,p_gain_or_loss_ref OUT VARCHAR2
12099
12100 --Contract Number
12101 , p_source_1 IN VARCHAR2
12102 --Contract Product Name
12103 , p_source_2 IN VARCHAR2
12104 --Distribution Account
12105 , p_source_5 IN NUMBER
12106 --Accounting Line Type
12107 , p_source_6 IN VARCHAR2
12108 , p_source_6_meaning IN VARCHAR2
12109 --Accounting Distribution Identifier
12110 , p_source_7 IN NUMBER
12111 --Distribution Type
12112 , p_source_8 IN VARCHAR2
12113 --Distribution Entered Amount
12114 , p_source_9 IN NUMBER
12115 --Transaction Currency Code
12116 , p_source_10 IN VARCHAR2
12117 --Transaction Currency Conversion Date
12118 , p_source_11 IN DATE
12119 --Transaction Currency Conversion Rate
12120 , p_source_12 IN NUMBER
12121 --Transaction Currency Conversion Type
12122 , p_source_13 IN VARCHAR2
12123 )
12124 IS
12125
12126 l_component_type VARCHAR2(80);
12127 l_component_code VARCHAR2(30);
12128 l_component_type_code VARCHAR2(1);
12129 l_component_appl_id INTEGER;
12130 l_amb_context_code VARCHAR2(30);
12131 l_entity_code VARCHAR2(30);
12132 l_event_class_code VARCHAR2(30);
12133 l_ae_header_id NUMBER;
12134 l_event_type_code VARCHAR2(30);
12135 l_line_definition_code VARCHAR2(30);
12136 l_line_definition_owner_code VARCHAR2(1);
12137 --
12138 -- adr variables
12142 l_adr_accounting_coa_id NUMBER;
12139 l_segment VARCHAR2(30);
12140 l_ccid NUMBER;
12141 l_adr_transaction_coa_id NUMBER;
12143 l_adr_flexfield_segment_code VARCHAR2(30);
12144 l_adr_flex_value_set_id NUMBER;
12145 l_adr_value_type_code VARCHAR2(30);
12146 l_adr_value_combination_id NUMBER;
12147 l_adr_value_segment_code VARCHAR2(30);
12148
12149 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
12150 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
12151 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
12152 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
12153
12154 -- 4262811 Variables ------------------------------------------------------------------------------------------
12155 l_entered_amt_idx NUMBER;
12156 l_accted_amt_idx NUMBER;
12157 l_acc_rev_flag VARCHAR2(1);
12158 l_accrual_line_num NUMBER;
12159 l_tmp_amt NUMBER;
12160 l_acc_rev_natural_side_code VARCHAR2(1);
12161
12162 l_num_entries NUMBER;
12163 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
12164 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
12165 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
12166 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
12167 l_recog_line_1 NUMBER;
12168 l_recog_line_2 NUMBER;
12169
12170 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
12171 l_bflow_applied_to_amt NUMBER; -- 5132302
12172 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
12173
12174 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
12175
12176 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
12177 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
12178
12179 ---------------------------------------------------------------------------------------------------------------
12180
12181
12182 --
12183 -- bulk performance
12184 --
12185 l_balance_type_code VARCHAR2(1);
12186 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
12187 l_log_module VARCHAR2(240);
12188
12189 --
12190 -- Upgrade strategy
12191 --
12192 l_actual_upg_option VARCHAR2(1);
12193 l_enc_upg_option VARCHAR2(1);
12194
12195 --
12196 BEGIN
12197 --
12198 IF g_log_enabled THEN
12199 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_26';
12200 END IF;
12201 --
12202 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12203
12204 trace
12205 (p_msg => 'BEGIN of AcctLineType_26'
12206 ,p_level => C_LEVEL_PROCEDURE
12207 ,p_module => l_log_module);
12208
12209 END IF;
12210 --
12211 l_component_type := 'AMB_JLT';
12212 l_component_code := 'OKL_SPLIT_ASSET_CR';
12213 l_component_type_code := 'S';
12214 l_component_appl_id := 540;
12215 l_amb_context_code := 'DEFAULT';
12216 l_entity_code := 'CONTRACTS';
12217 l_event_class_code := 'SPLIT_ASSET';
12218 l_event_type_code := 'SPLIT_ASSET_ALL';
12219 l_line_definition_owner_code := 'S';
12220 l_line_definition_code := 'OKL_SPLIT_ASSET';
12221 --
12222 l_balance_type_code := 'A';
12223 l_segment := NULL;
12224 l_ccid := NULL;
12225 l_adr_transaction_coa_id := NULL;
12226 l_adr_accounting_coa_id := NULL;
12227 l_adr_flexfield_segment_code := NULL;
12228 l_adr_flex_value_set_id := NULL;
12229 l_adr_value_type_code := NULL;
12230 l_adr_value_combination_id := NULL;
12231 l_adr_value_segment_code := NULL;
12232
12233 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
12234 l_bflow_class_code := ''; -- 4219869 Business Flow
12235 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
12236 l_budgetary_control_flag := 'N';
12237
12238 l_bflow_applied_to_amt_idx := NULL; -- 5132302
12239 l_bflow_applied_to_amt := NULL; -- 5132302
12240 l_entered_amt_idx := NULL; -- 4262811
12241 l_accted_amt_idx := NULL; -- 4262811
12242 l_acc_rev_flag := NULL; -- 4262811
12243 l_accrual_line_num := NULL; -- 4262811
12244 l_tmp_amt := NULL; -- 4262811
12245 --
12246
12247 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
12248 l_balance_type_code <> 'B' THEN
12249 IF NVL(p_source_6,'
12250 ') = 'LEASE_CREDIT'
12251 THEN
12252
12253 --
12254 XLA_AE_LINES_PKG.SetNewLine;
12255
12256 p_balance_type_code := l_balance_type_code;
12257 -- set the flag so later we will know whether the gain loss line needs to be created
12258
12259 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
12260 p_actual_flag :='A';
12261 END IF;
12262
12263 --
12264 -- bulk performance
12265 --
12266 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
12267 p_header_num => 0); -- 4262811
12268 --
12269 -- set accounting line options
12270 --
12271 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
12272 p_natural_side_code => 'C'
12273 , p_gain_or_loss_flag => 'N'
12274 , p_gl_transfer_mode_code => 'S'
12275 , p_acct_entry_type_code => 'A'
12276 , p_switch_side_flag => 'Y'
12280 l_acc_rev_natural_side_code := 'D'; -- 4262811
12277 , p_merge_duplicate_code => 'N'
12278 );
12279 --
12281 --
12282 --
12283 -- set accounting line type info
12284 --
12285 xla_ae_lines_pkg.SetAcctLineType
12286 (p_component_type => l_component_type
12287 ,p_event_type_code => l_event_type_code
12288 ,p_line_definition_owner_code => l_line_definition_owner_code
12289 ,p_line_definition_code => l_line_definition_code
12290 ,p_accounting_line_code => l_component_code
12291 ,p_accounting_line_type_code => l_component_type_code
12292 ,p_accounting_line_appl_id => l_component_appl_id
12293 ,p_amb_context_code => l_amb_context_code
12294 ,p_entity_code => l_entity_code
12295 ,p_event_class_code => l_event_class_code);
12296 --
12297 -- set accounting class
12298 --
12299 xla_ae_lines_pkg.SetAcctClass(
12300 p_accounting_class_code => 'SPLIT_ASSET'
12301 , p_ae_header_id => l_ae_header_id
12302 );
12303
12304 --
12305 -- set rounding class
12306 --
12307 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
12308 'SPLIT_ASSET';
12309
12310 --
12311 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
12312 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
12313 --
12314 -- bulk performance
12315 --
12316 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
12317
12318 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
12319 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
12320
12321 -- 4955764
12322 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12323 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
12324
12325 -- 4458381 Public Sector Enh
12326
12327 --
12328 -- set accounting attributes for the line type
12329 --
12330 l_entered_amt_idx := 3;
12331 l_accted_amt_idx := NULL;
12332 l_bflow_applied_to_amt_idx := NULL; -- 5132302
12333 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
12334 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
12335 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
12336 l_rec_acct_attrs.array_char_value(2) := p_source_8;
12337 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
12338 l_rec_acct_attrs.array_num_value(3) := p_source_9;
12339 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
12340 l_rec_acct_attrs.array_char_value(4) := p_source_10;
12341 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
12342 l_rec_acct_attrs.array_date_value(5) := p_source_11;
12343 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
12344 l_rec_acct_attrs.array_num_value(6) := p_source_12;
12345 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
12346 l_rec_acct_attrs.array_char_value(7) := p_source_13;
12347
12348 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12349 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12350
12351 ---------------------------------------------------------------------------------------------------------------
12352 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12353 ---------------------------------------------------------------------------------------------------------------
12354 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12355
12356 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12357 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12358
12359 IF xla_accounting_cache_pkg.GetValueChar
12360 (p_source_code => 'LEDGER_CATEGORY_CODE'
12361 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12362 AND l_bflow_method_code = 'PRIOR_ENTRY'
12363 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12364 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12365 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12366 )
12367 THEN
12368 xla_ae_lines_pkg.BflowUpgEntry
12369 (p_business_method_code => l_bflow_method_code
12370 ,p_business_class_code => l_bflow_class_code
12371 ,p_balance_type => l_balance_type_code);
12372 ELSE
12373 NULL;
12374 -- No business flow processing for business flow method of NONE.
12375 END IF;
12376
12377 --
12378 -- call analytical criteria
12379 --
12380
12381 --
12382 -- call description
12383 --
12384
12385 xla_ae_lines_pkg.SetLineDescription(
12386 p_ae_header_id => l_ae_header_id
12387 ,p_description => Description_1 (
12388 p_application_id => p_application_id
12389 , p_ae_header_id => l_ae_header_id
12390 , p_source_1 => p_source_1
12391 , p_source_2 => p_source_2
12392 )
12393 );
12394
12395
12396 --
12397 -- call ADRs
12398 -- Bug 4922099
12399 --
12400 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12401 (NVL(l_actual_upg_option, 'N') = 'O') OR
12402 (NVL(l_enc_upg_option, 'N') = 'O')
12403 )
12404 THEN
12405 NULL;
12406 --
12407 --
12411 , p_ae_header_id => l_ae_header_id
12408
12409 l_ccid := AcctDerRule_3(
12410 p_application_id => p_application_id
12412 , p_source_5 => p_source_5
12413 , x_transaction_coa_id => l_adr_transaction_coa_id
12414 , x_accounting_coa_id => l_adr_accounting_coa_id
12415 , x_value_type_code => l_adr_value_type_code
12416 , p_side => 'NA'
12417 );
12418
12419 xla_ae_lines_pkg.set_ccid(
12420 p_code_combination_id => l_ccid
12421 , p_value_type_code => l_adr_value_type_code
12422 , p_transaction_coa_id => l_adr_transaction_coa_id
12423 , p_accounting_coa_id => l_adr_accounting_coa_id
12424 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
12425 , p_adr_type_code => 'S'
12426 , p_component_type => l_component_type
12427 , p_component_code => l_component_code
12428 , p_component_type_code => l_component_type_code
12429 , p_component_appl_id => l_component_appl_id
12430 , p_amb_context_code => l_amb_context_code
12431 , p_side => 'NA'
12432 );
12433
12434
12435 --
12436 --
12437 END IF;
12438 --
12439 -- Bug 4922099
12440 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
12441 (NVL(l_enc_upg_option, 'N') = 'O')
12442 ) AND
12443 (l_bflow_method_code = 'PRIOR_ENTRY')
12444 )
12445 THEN
12446 IF
12447 --
12448 1 = 2
12449 --
12450 THEN
12451 xla_accounting_err_pkg.build_message
12452 (p_appli_s_name => 'XLA'
12453 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12454 ,p_token_1 => 'LINE_NUMBER'
12455 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
12456 ,p_token_2 => 'LINE_TYPE_NAME'
12457 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
12458 l_component_type
12459 ,l_component_code
12460 ,l_component_type_code
12461 ,l_component_appl_id
12462 ,l_amb_context_code
12463 ,l_entity_code
12464 ,l_event_class_code
12465 )
12466 ,p_token_3 => 'OWNER'
12467 ,p_value_3 => xla_lookups_pkg.get_meaning(
12468 p_lookup_type => 'XLA_OWNER_TYPE'
12469 ,p_lookup_code => l_component_type_code
12470 )
12471 ,p_token_4 => 'PRODUCT_NAME'
12472 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
12473 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
12474 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
12475 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
12476 ,p_ae_header_id => NULL
12477 );
12478
12479 IF (C_LEVEL_ERROR>= g_log_level) THEN
12480 trace
12481 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12482 ,p_level => C_LEVEL_ERROR
12483 ,p_module => l_log_module);
12484 END IF;
12485 END IF;
12486 END IF;
12487 --
12488 --
12489 ------------------------------------------------------------------------------------------------
12490 -- 4219869 Business Flow
12491 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
12492 -- Prior Entry. Currently, the following code is always generated.
12493 ------------------------------------------------------------------------------------------------
12494 XLA_AE_LINES_PKG.ValidateCurrentLine;
12495
12496 ------------------------------------------------------------------------------------
12497 -- 4219869 Business Flow
12498 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
12499 ------------------------------------------------------------------------------------
12500 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12501
12502 ----------------------------------------------------------------------------------
12503 -- 4219869 Business Flow
12504 -- Update journal entry status -- Need to generate this within IF <condition>
12505 ----------------------------------------------------------------------------------
12506 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12507 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
12508 ,p_balance_type_code => l_balance_type_code
12509 );
12510
12511 -------------------------------------------------------------------------------------------
12512 -- 4262811 - Generate the Accrual Reversal lines
12516 (g_array_event(p_event_id).array_value_num('header_index'));
12513 -------------------------------------------------------------------------------------------
12514 BEGIN
12515 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
12517 IF l_acc_rev_flag IS NULL THEN
12518 l_acc_rev_flag := 'N';
12519 END IF;
12520 EXCEPTION
12521 WHEN OTHERS THEN
12522 l_acc_rev_flag := 'N';
12523 END;
12524 --
12525 IF (l_acc_rev_flag = 'Y') THEN
12526
12527 -- 4645092 ------------------------------------------------------------------------------
12528 -- To allow MPA report to determine if it should generate report process
12529 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12530 ------------------------------------------------------------------------------------------
12531
12532 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12533 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12534
12535 --
12536 -- Update the line information that should be overwritten
12537 --
12538 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12539 p_header_num => 1);
12540 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
12541
12542 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12543
12544 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
12545 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12546 END IF;
12547
12548 --
12549 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12550 --
12551 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12552 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
12553 ELSE
12554 ---------------------------------------------------------------------------------------------------
12555 -- 4262811a Switch Sign
12556 ---------------------------------------------------------------------------------------------------
12557 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
12558 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12559 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12560 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12561 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12562 -- 5132302
12563 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
12564 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12565
12566 END IF;
12567
12568 -- 4955764
12569 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12570 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
12571
12572
12573 XLA_AE_LINES_PKG.ValidateCurrentLine;
12574 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12575
12576 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12577 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
12578 ,p_balance_type_code => l_balance_type_code);
12579
12580 END IF;
12581
12582 -----------------------------------------------------------------------------------------
12583 -- 4262811 Multiperiod Accounting
12584 -----------------------------------------------------------------------------------------
12585 -- No MPA option is assigned.
12586
12587
12588 END IF;
12589 END IF;
12590 --
12591
12592 --
12593 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12594 trace
12595 (p_msg => 'END of AcctLineType_26'
12596 ,p_level => C_LEVEL_PROCEDURE
12597 ,p_module => l_log_module);
12598 END IF;
12599 --
12600 EXCEPTION
12601 WHEN xla_exceptions_pkg.application_exception THEN
12602 RAISE;
12603 WHEN OTHERS THEN
12604 xla_exceptions_pkg.raise_message
12605 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_26');
12606 END AcctLineType_26;
12607 --
12608
12609 ---------------------------------------
12610 --
12611 -- PRIVATE FUNCTION
12612 -- AcctLineType_27
12613 --
12614 ---------------------------------------
12615 PROCEDURE AcctLineType_27 (
12616 p_application_id IN NUMBER
12617 ,p_event_id IN NUMBER
12618 ,p_calculate_acctd_flag IN VARCHAR2
12619 ,p_calculate_g_l_flag IN VARCHAR2
12620 ,p_actual_flag IN OUT VARCHAR2
12621 ,p_balance_type_code OUT VARCHAR2
12622 ,p_gain_or_loss_ref OUT VARCHAR2
12623
12624 --Contract Number
12625 , p_source_1 IN VARCHAR2
12626 --Contract Product Name
12627 , p_source_2 IN VARCHAR2
12628 --Distribution Account
12629 , p_source_5 IN NUMBER
12630 --Accounting Line Type
12631 , p_source_6 IN VARCHAR2
12632 , p_source_6_meaning IN VARCHAR2
12633 --Accounting Distribution Identifier
12634 , p_source_7 IN NUMBER
12635 --Distribution Type
12636 , p_source_8 IN VARCHAR2
12637 --Distribution Entered Amount
12638 , p_source_9 IN NUMBER
12639 --Transaction Currency Code
12640 , p_source_10 IN VARCHAR2
12641 --Transaction Currency Conversion Date
12645 --Transaction Currency Conversion Type
12642 , p_source_11 IN DATE
12643 --Transaction Currency Conversion Rate
12644 , p_source_12 IN NUMBER
12646 , p_source_13 IN VARCHAR2
12647 )
12648 IS
12649
12650 l_component_type VARCHAR2(80);
12651 l_component_code VARCHAR2(30);
12652 l_component_type_code VARCHAR2(1);
12653 l_component_appl_id INTEGER;
12654 l_amb_context_code VARCHAR2(30);
12655 l_entity_code VARCHAR2(30);
12656 l_event_class_code VARCHAR2(30);
12657 l_ae_header_id NUMBER;
12658 l_event_type_code VARCHAR2(30);
12659 l_line_definition_code VARCHAR2(30);
12660 l_line_definition_owner_code VARCHAR2(1);
12661 --
12662 -- adr variables
12663 l_segment VARCHAR2(30);
12664 l_ccid NUMBER;
12665 l_adr_transaction_coa_id NUMBER;
12666 l_adr_accounting_coa_id NUMBER;
12667 l_adr_flexfield_segment_code VARCHAR2(30);
12668 l_adr_flex_value_set_id NUMBER;
12669 l_adr_value_type_code VARCHAR2(30);
12670 l_adr_value_combination_id NUMBER;
12671 l_adr_value_segment_code VARCHAR2(30);
12672
12673 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
12674 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
12675 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
12676 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
12677
12678 -- 4262811 Variables ------------------------------------------------------------------------------------------
12679 l_entered_amt_idx NUMBER;
12680 l_accted_amt_idx NUMBER;
12681 l_acc_rev_flag VARCHAR2(1);
12682 l_accrual_line_num NUMBER;
12683 l_tmp_amt NUMBER;
12684 l_acc_rev_natural_side_code VARCHAR2(1);
12685
12686 l_num_entries NUMBER;
12687 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
12688 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
12689 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
12690 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
12691 l_recog_line_1 NUMBER;
12692 l_recog_line_2 NUMBER;
12693
12694 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
12695 l_bflow_applied_to_amt NUMBER; -- 5132302
12696 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
12697
12698 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
12699
12700 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
12701 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
12702
12703 ---------------------------------------------------------------------------------------------------------------
12704
12705
12706 --
12707 -- bulk performance
12708 --
12709 l_balance_type_code VARCHAR2(1);
12710 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
12711 l_log_module VARCHAR2(240);
12712
12713 --
12714 -- Upgrade strategy
12715 --
12716 l_actual_upg_option VARCHAR2(1);
12717 l_enc_upg_option VARCHAR2(1);
12718
12719 --
12720 BEGIN
12721 --
12722 IF g_log_enabled THEN
12723 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_27';
12724 END IF;
12725 --
12726 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12727
12728 trace
12729 (p_msg => 'BEGIN of AcctLineType_27'
12730 ,p_level => C_LEVEL_PROCEDURE
12731 ,p_module => l_log_module);
12732
12733 END IF;
12734 --
12735 l_component_type := 'AMB_JLT';
12736 l_component_code := 'OKL_SPLIT_ASSET_DR';
12737 l_component_type_code := 'S';
12738 l_component_appl_id := 540;
12739 l_amb_context_code := 'DEFAULT';
12740 l_entity_code := 'CONTRACTS';
12741 l_event_class_code := 'SPLIT_ASSET';
12742 l_event_type_code := 'SPLIT_ASSET_ALL';
12743 l_line_definition_owner_code := 'S';
12744 l_line_definition_code := 'OKL_SPLIT_ASSET';
12745 --
12746 l_balance_type_code := 'A';
12747 l_segment := NULL;
12748 l_ccid := NULL;
12749 l_adr_transaction_coa_id := NULL;
12750 l_adr_accounting_coa_id := NULL;
12751 l_adr_flexfield_segment_code := NULL;
12752 l_adr_flex_value_set_id := NULL;
12753 l_adr_value_type_code := NULL;
12754 l_adr_value_combination_id := NULL;
12755 l_adr_value_segment_code := NULL;
12756
12757 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
12758 l_bflow_class_code := ''; -- 4219869 Business Flow
12759 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
12760 l_budgetary_control_flag := 'N';
12761
12762 l_bflow_applied_to_amt_idx := NULL; -- 5132302
12763 l_bflow_applied_to_amt := NULL; -- 5132302
12764 l_entered_amt_idx := NULL; -- 4262811
12765 l_accted_amt_idx := NULL; -- 4262811
12766 l_acc_rev_flag := NULL; -- 4262811
12767 l_accrual_line_num := NULL; -- 4262811
12768 l_tmp_amt := NULL; -- 4262811
12769 --
12770
12771 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
12772 l_balance_type_code <> 'B' THEN
12773 IF NVL(p_source_6,'
12774 ') = 'LEASE_DEBIT'
12775 THEN
12776
12777 --
12778 XLA_AE_LINES_PKG.SetNewLine;
12779
12780 p_balance_type_code := l_balance_type_code;
12784 p_actual_flag :='A';
12781 -- set the flag so later we will know whether the gain loss line needs to be created
12782
12783 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
12785 END IF;
12786
12787 --
12788 -- bulk performance
12789 --
12790 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
12791 p_header_num => 0); -- 4262811
12792 --
12793 -- set accounting line options
12794 --
12795 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
12796 p_natural_side_code => 'D'
12797 , p_gain_or_loss_flag => 'N'
12798 , p_gl_transfer_mode_code => 'S'
12799 , p_acct_entry_type_code => 'A'
12800 , p_switch_side_flag => 'Y'
12801 , p_merge_duplicate_code => 'N'
12802 );
12803 --
12804 l_acc_rev_natural_side_code := 'C'; -- 4262811
12805 --
12806 --
12807 -- set accounting line type info
12808 --
12809 xla_ae_lines_pkg.SetAcctLineType
12810 (p_component_type => l_component_type
12811 ,p_event_type_code => l_event_type_code
12812 ,p_line_definition_owner_code => l_line_definition_owner_code
12813 ,p_line_definition_code => l_line_definition_code
12814 ,p_accounting_line_code => l_component_code
12815 ,p_accounting_line_type_code => l_component_type_code
12816 ,p_accounting_line_appl_id => l_component_appl_id
12817 ,p_amb_context_code => l_amb_context_code
12818 ,p_entity_code => l_entity_code
12819 ,p_event_class_code => l_event_class_code);
12820 --
12821 -- set accounting class
12822 --
12823 xla_ae_lines_pkg.SetAcctClass(
12824 p_accounting_class_code => 'SPLIT_ASSET'
12825 , p_ae_header_id => l_ae_header_id
12826 );
12827
12828 --
12829 -- set rounding class
12830 --
12831 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
12832 'SPLIT_ASSET';
12833
12834 --
12835 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
12836 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
12837 --
12838 -- bulk performance
12839 --
12840 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
12841
12842 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
12843 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
12844
12845 -- 4955764
12846 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12847 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
12848
12849 -- 4458381 Public Sector Enh
12850
12851 --
12852 -- set accounting attributes for the line type
12853 --
12854 l_entered_amt_idx := 3;
12855 l_accted_amt_idx := NULL;
12856 l_bflow_applied_to_amt_idx := NULL; -- 5132302
12857 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
12858 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
12859 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
12860 l_rec_acct_attrs.array_char_value(2) := p_source_8;
12861 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
12862 l_rec_acct_attrs.array_num_value(3) := p_source_9;
12863 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
12864 l_rec_acct_attrs.array_char_value(4) := p_source_10;
12865 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
12866 l_rec_acct_attrs.array_date_value(5) := p_source_11;
12867 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
12868 l_rec_acct_attrs.array_num_value(6) := p_source_12;
12869 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
12870 l_rec_acct_attrs.array_char_value(7) := p_source_13;
12871
12872 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12873 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12874
12875 ---------------------------------------------------------------------------------------------------------------
12876 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12877 ---------------------------------------------------------------------------------------------------------------
12878 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12879
12880 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12881 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12882
12883 IF xla_accounting_cache_pkg.GetValueChar
12884 (p_source_code => 'LEDGER_CATEGORY_CODE'
12885 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12886 AND l_bflow_method_code = 'PRIOR_ENTRY'
12887 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12888 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12889 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12890 )
12891 THEN
12892 xla_ae_lines_pkg.BflowUpgEntry
12893 (p_business_method_code => l_bflow_method_code
12894 ,p_business_class_code => l_bflow_class_code
12895 ,p_balance_type => l_balance_type_code);
12896 ELSE
12897 NULL;
12898 -- No business flow processing for business flow method of NONE.
12899 END IF;
12900
12901 --
12905 --
12902 -- call analytical criteria
12903 --
12904
12906 -- call description
12907 --
12908
12909 xla_ae_lines_pkg.SetLineDescription(
12910 p_ae_header_id => l_ae_header_id
12911 ,p_description => Description_1 (
12912 p_application_id => p_application_id
12913 , p_ae_header_id => l_ae_header_id
12914 , p_source_1 => p_source_1
12915 , p_source_2 => p_source_2
12916 )
12917 );
12918
12919
12920 --
12921 -- call ADRs
12922 -- Bug 4922099
12923 --
12924 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12925 (NVL(l_actual_upg_option, 'N') = 'O') OR
12926 (NVL(l_enc_upg_option, 'N') = 'O')
12927 )
12928 THEN
12929 NULL;
12930 --
12931 --
12932
12933 l_ccid := AcctDerRule_3(
12934 p_application_id => p_application_id
12935 , p_ae_header_id => l_ae_header_id
12936 , p_source_5 => p_source_5
12937 , x_transaction_coa_id => l_adr_transaction_coa_id
12938 , x_accounting_coa_id => l_adr_accounting_coa_id
12939 , x_value_type_code => l_adr_value_type_code
12940 , p_side => 'NA'
12941 );
12942
12943 xla_ae_lines_pkg.set_ccid(
12944 p_code_combination_id => l_ccid
12945 , p_value_type_code => l_adr_value_type_code
12946 , p_transaction_coa_id => l_adr_transaction_coa_id
12947 , p_accounting_coa_id => l_adr_accounting_coa_id
12948 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
12949 , p_adr_type_code => 'S'
12950 , p_component_type => l_component_type
12951 , p_component_code => l_component_code
12952 , p_component_type_code => l_component_type_code
12953 , p_component_appl_id => l_component_appl_id
12954 , p_amb_context_code => l_amb_context_code
12955 , p_side => 'NA'
12956 );
12957
12958
12959 --
12960 --
12961 END IF;
12962 --
12963 -- Bug 4922099
12964 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
12965 (NVL(l_enc_upg_option, 'N') = 'O')
12966 ) AND
12967 (l_bflow_method_code = 'PRIOR_ENTRY')
12968 )
12969 THEN
12970 IF
12971 --
12972 1 = 2
12973 --
12974 THEN
12975 xla_accounting_err_pkg.build_message
12976 (p_appli_s_name => 'XLA'
12977 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12978 ,p_token_1 => 'LINE_NUMBER'
12979 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
12980 ,p_token_2 => 'LINE_TYPE_NAME'
12981 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
12982 l_component_type
12983 ,l_component_code
12984 ,l_component_type_code
12985 ,l_component_appl_id
12986 ,l_amb_context_code
12987 ,l_entity_code
12988 ,l_event_class_code
12989 )
12990 ,p_token_3 => 'OWNER'
12991 ,p_value_3 => xla_lookups_pkg.get_meaning(
12992 p_lookup_type => 'XLA_OWNER_TYPE'
12993 ,p_lookup_code => l_component_type_code
12994 )
12995 ,p_token_4 => 'PRODUCT_NAME'
12996 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
12997 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
12998 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
12999 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13000 ,p_ae_header_id => NULL
13001 );
13002
13003 IF (C_LEVEL_ERROR>= g_log_level) THEN
13004 trace
13005 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13006 ,p_level => C_LEVEL_ERROR
13007 ,p_module => l_log_module);
13008 END IF;
13009 END IF;
13010 END IF;
13011 --
13012 --
13013 ------------------------------------------------------------------------------------------------
13014 -- 4219869 Business Flow
13015 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
13016 -- Prior Entry. Currently, the following code is always generated.
13017 ------------------------------------------------------------------------------------------------
13018 XLA_AE_LINES_PKG.ValidateCurrentLine;
13019
13020 ------------------------------------------------------------------------------------
13021 -- 4219869 Business Flow
13025
13022 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
13023 ------------------------------------------------------------------------------------
13024 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13026 ----------------------------------------------------------------------------------
13027 -- 4219869 Business Flow
13028 -- Update journal entry status -- Need to generate this within IF <condition>
13029 ----------------------------------------------------------------------------------
13030 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13031 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
13032 ,p_balance_type_code => l_balance_type_code
13033 );
13034
13035 -------------------------------------------------------------------------------------------
13036 -- 4262811 - Generate the Accrual Reversal lines
13037 -------------------------------------------------------------------------------------------
13038 BEGIN
13039 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
13040 (g_array_event(p_event_id).array_value_num('header_index'));
13041 IF l_acc_rev_flag IS NULL THEN
13042 l_acc_rev_flag := 'N';
13043 END IF;
13044 EXCEPTION
13045 WHEN OTHERS THEN
13046 l_acc_rev_flag := 'N';
13047 END;
13048 --
13049 IF (l_acc_rev_flag = 'Y') THEN
13050
13051 -- 4645092 ------------------------------------------------------------------------------
13052 -- To allow MPA report to determine if it should generate report process
13053 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
13054 ------------------------------------------------------------------------------------------
13055
13056 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
13057 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
13058
13059 --
13060 -- Update the line information that should be overwritten
13061 --
13062 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
13063 p_header_num => 1);
13064 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
13065
13066 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
13067
13068 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
13069 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
13070 END IF;
13071
13072 --
13073 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
13074 --
13075 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
13076 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
13077 ELSE
13078 ---------------------------------------------------------------------------------------------------
13079 -- 4262811a Switch Sign
13080 ---------------------------------------------------------------------------------------------------
13081 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
13082 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13083 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13084 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13085 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13086 -- 5132302
13087 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13088 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13089
13090 END IF;
13091
13092 -- 4955764
13093 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13094 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13095
13096
13097 XLA_AE_LINES_PKG.ValidateCurrentLine;
13098 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13099
13100 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13101 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13102 ,p_balance_type_code => l_balance_type_code);
13103
13104 END IF;
13105
13106 -----------------------------------------------------------------------------------------
13107 -- 4262811 Multiperiod Accounting
13108 -----------------------------------------------------------------------------------------
13109 -- No MPA option is assigned.
13110
13111
13112 END IF;
13113 END IF;
13114 --
13115
13116 --
13117 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13118 trace
13119 (p_msg => 'END of AcctLineType_27'
13120 ,p_level => C_LEVEL_PROCEDURE
13121 ,p_module => l_log_module);
13122 END IF;
13123 --
13124 EXCEPTION
13125 WHEN xla_exceptions_pkg.application_exception THEN
13126 RAISE;
13127 WHEN OTHERS THEN
13128 xla_exceptions_pkg.raise_message
13129 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_27');
13130 END AcctLineType_27;
13131 --
13132
13133 ---------------------------------------
13134 --
13135 -- PRIVATE FUNCTION
13136 -- AcctLineType_28
13137 --
13138 ---------------------------------------
13139 PROCEDURE AcctLineType_28 (
13140 p_application_id IN NUMBER
13141 ,p_event_id IN NUMBER
13142 ,p_calculate_acctd_flag IN VARCHAR2
13143 ,p_calculate_g_l_flag IN VARCHAR2
13147
13144 ,p_actual_flag IN OUT VARCHAR2
13145 ,p_balance_type_code OUT VARCHAR2
13146 ,p_gain_or_loss_ref OUT VARCHAR2
13148 --Contract Number
13149 , p_source_1 IN VARCHAR2
13150 --Contract Product Name
13151 , p_source_2 IN VARCHAR2
13152 --Distribution Account
13153 , p_source_5 IN NUMBER
13154 --Accounting Line Type
13155 , p_source_6 IN VARCHAR2
13156 , p_source_6_meaning IN VARCHAR2
13157 --Accounting Distribution Identifier
13158 , p_source_7 IN NUMBER
13159 --Distribution Type
13160 , p_source_8 IN VARCHAR2
13161 --Distribution Entered Amount
13162 , p_source_9 IN NUMBER
13163 --Transaction Currency Code
13164 , p_source_10 IN VARCHAR2
13165 --Transaction Currency Conversion Date
13166 , p_source_11 IN DATE
13167 --Transaction Currency Conversion Rate
13168 , p_source_12 IN NUMBER
13169 --Transaction Currency Conversion Type
13170 , p_source_13 IN VARCHAR2
13171 )
13172 IS
13173
13174 l_component_type VARCHAR2(80);
13175 l_component_code VARCHAR2(30);
13176 l_component_type_code VARCHAR2(1);
13177 l_component_appl_id INTEGER;
13178 l_amb_context_code VARCHAR2(30);
13179 l_entity_code VARCHAR2(30);
13180 l_event_class_code VARCHAR2(30);
13181 l_ae_header_id NUMBER;
13182 l_event_type_code VARCHAR2(30);
13183 l_line_definition_code VARCHAR2(30);
13184 l_line_definition_owner_code VARCHAR2(1);
13185 --
13186 -- adr variables
13187 l_segment VARCHAR2(30);
13188 l_ccid NUMBER;
13189 l_adr_transaction_coa_id NUMBER;
13190 l_adr_accounting_coa_id NUMBER;
13191 l_adr_flexfield_segment_code VARCHAR2(30);
13192 l_adr_flex_value_set_id NUMBER;
13193 l_adr_value_type_code VARCHAR2(30);
13194 l_adr_value_combination_id NUMBER;
13195 l_adr_value_segment_code VARCHAR2(30);
13196
13197 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
13198 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
13199 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
13200 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
13201
13202 -- 4262811 Variables ------------------------------------------------------------------------------------------
13203 l_entered_amt_idx NUMBER;
13204 l_accted_amt_idx NUMBER;
13205 l_acc_rev_flag VARCHAR2(1);
13206 l_accrual_line_num NUMBER;
13207 l_tmp_amt NUMBER;
13208 l_acc_rev_natural_side_code VARCHAR2(1);
13209
13210 l_num_entries NUMBER;
13211 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
13212 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
13213 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
13214 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
13215 l_recog_line_1 NUMBER;
13216 l_recog_line_2 NUMBER;
13217
13218 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
13219 l_bflow_applied_to_amt NUMBER; -- 5132302
13220 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
13221
13222 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13223
13224 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
13225 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
13226
13227 ---------------------------------------------------------------------------------------------------------------
13228
13229
13230 --
13231 -- bulk performance
13232 --
13233 l_balance_type_code VARCHAR2(1);
13234 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
13235 l_log_module VARCHAR2(240);
13236
13237 --
13238 -- Upgrade strategy
13239 --
13240 l_actual_upg_option VARCHAR2(1);
13241 l_enc_upg_option VARCHAR2(1);
13242
13243 --
13244 BEGIN
13245 --
13246 IF g_log_enabled THEN
13247 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_28';
13248 END IF;
13249 --
13250 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13251
13252 trace
13253 (p_msg => 'BEGIN of AcctLineType_28'
13254 ,p_level => C_LEVEL_PROCEDURE
13255 ,p_module => l_log_module);
13256
13257 END IF;
13258 --
13259 l_component_type := 'AMB_JLT';
13260 l_component_code := 'OKL_TERMINATION_CR';
13261 l_component_type_code := 'S';
13262 l_component_appl_id := 540;
13263 l_amb_context_code := 'DEFAULT';
13264 l_entity_code := 'CONTRACTS';
13265 l_event_class_code := 'TERMINATION';
13266 l_event_type_code := 'TERMINATION_ALL';
13267 l_line_definition_owner_code := 'S';
13268 l_line_definition_code := 'OKL_TERMINATION';
13269 --
13270 l_balance_type_code := 'A';
13271 l_segment := NULL;
13272 l_ccid := NULL;
13273 l_adr_transaction_coa_id := NULL;
13274 l_adr_accounting_coa_id := NULL;
13275 l_adr_flexfield_segment_code := NULL;
13276 l_adr_flex_value_set_id := NULL;
13277 l_adr_value_type_code := NULL;
13278 l_adr_value_combination_id := NULL;
13279 l_adr_value_segment_code := NULL;
13280
13281 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
13282 l_bflow_class_code := ''; -- 4219869 Business Flow
13283 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
13287 l_bflow_applied_to_amt := NULL; -- 5132302
13284 l_budgetary_control_flag := 'N';
13285
13286 l_bflow_applied_to_amt_idx := NULL; -- 5132302
13288 l_entered_amt_idx := NULL; -- 4262811
13289 l_accted_amt_idx := NULL; -- 4262811
13290 l_acc_rev_flag := NULL; -- 4262811
13291 l_accrual_line_num := NULL; -- 4262811
13292 l_tmp_amt := NULL; -- 4262811
13293 --
13294
13295 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13296 l_balance_type_code <> 'B' THEN
13297 IF NVL(p_source_6,'
13298 ') = 'LEASE_CREDIT'
13299 THEN
13300
13301 --
13302 XLA_AE_LINES_PKG.SetNewLine;
13303
13304 p_balance_type_code := l_balance_type_code;
13305 -- set the flag so later we will know whether the gain loss line needs to be created
13306
13307 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13308 p_actual_flag :='A';
13309 END IF;
13310
13311 --
13312 -- bulk performance
13313 --
13314 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13315 p_header_num => 0); -- 4262811
13316 --
13317 -- set accounting line options
13318 --
13319 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13320 p_natural_side_code => 'C'
13321 , p_gain_or_loss_flag => 'N'
13322 , p_gl_transfer_mode_code => 'S'
13323 , p_acct_entry_type_code => 'A'
13324 , p_switch_side_flag => 'Y'
13325 , p_merge_duplicate_code => 'N'
13326 );
13327 --
13328 l_acc_rev_natural_side_code := 'D'; -- 4262811
13329 --
13330 --
13331 -- set accounting line type info
13332 --
13333 xla_ae_lines_pkg.SetAcctLineType
13334 (p_component_type => l_component_type
13335 ,p_event_type_code => l_event_type_code
13336 ,p_line_definition_owner_code => l_line_definition_owner_code
13337 ,p_line_definition_code => l_line_definition_code
13338 ,p_accounting_line_code => l_component_code
13339 ,p_accounting_line_type_code => l_component_type_code
13340 ,p_accounting_line_appl_id => l_component_appl_id
13341 ,p_amb_context_code => l_amb_context_code
13342 ,p_entity_code => l_entity_code
13343 ,p_event_class_code => l_event_class_code);
13344 --
13345 -- set accounting class
13346 --
13347 xla_ae_lines_pkg.SetAcctClass(
13348 p_accounting_class_code => 'TERMINATION'
13349 , p_ae_header_id => l_ae_header_id
13350 );
13351
13352 --
13353 -- set rounding class
13354 --
13355 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13356 'TERMINATION';
13357
13358 --
13359 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13360 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13361 --
13362 -- bulk performance
13363 --
13364 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13365
13366 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13367 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13368
13369 -- 4955764
13370 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13371 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13372
13373 -- 4458381 Public Sector Enh
13374
13375 --
13376 -- set accounting attributes for the line type
13377 --
13378 l_entered_amt_idx := 3;
13379 l_accted_amt_idx := NULL;
13380 l_bflow_applied_to_amt_idx := NULL; -- 5132302
13381 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
13382 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
13383 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
13384 l_rec_acct_attrs.array_char_value(2) := p_source_8;
13385 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
13386 l_rec_acct_attrs.array_num_value(3) := p_source_9;
13387 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
13388 l_rec_acct_attrs.array_char_value(4) := p_source_10;
13389 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
13390 l_rec_acct_attrs.array_date_value(5) := p_source_11;
13391 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
13392 l_rec_acct_attrs.array_num_value(6) := p_source_12;
13393 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
13394 l_rec_acct_attrs.array_char_value(7) := p_source_13;
13395
13396 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13397 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13398
13399 ---------------------------------------------------------------------------------------------------------------
13400 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13401 ---------------------------------------------------------------------------------------------------------------
13402 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13403
13404 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13405 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13406
13407 IF xla_accounting_cache_pkg.GetValueChar
13411 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13408 (p_source_code => 'LEDGER_CATEGORY_CODE'
13409 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13410 AND l_bflow_method_code = 'PRIOR_ENTRY'
13412 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13413 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13414 )
13415 THEN
13416 xla_ae_lines_pkg.BflowUpgEntry
13417 (p_business_method_code => l_bflow_method_code
13418 ,p_business_class_code => l_bflow_class_code
13419 ,p_balance_type => l_balance_type_code);
13420 ELSE
13421 NULL;
13422 -- No business flow processing for business flow method of NONE.
13423 END IF;
13424
13425 --
13426 -- call analytical criteria
13427 --
13428
13429 --
13430 -- call description
13431 --
13432
13433 xla_ae_lines_pkg.SetLineDescription(
13434 p_ae_header_id => l_ae_header_id
13435 ,p_description => Description_1 (
13436 p_application_id => p_application_id
13437 , p_ae_header_id => l_ae_header_id
13438 , p_source_1 => p_source_1
13439 , p_source_2 => p_source_2
13440 )
13441 );
13442
13443
13444 --
13445 -- call ADRs
13446 -- Bug 4922099
13447 --
13448 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13449 (NVL(l_actual_upg_option, 'N') = 'O') OR
13450 (NVL(l_enc_upg_option, 'N') = 'O')
13451 )
13452 THEN
13453 NULL;
13454 --
13455 --
13456
13457 l_ccid := AcctDerRule_3(
13458 p_application_id => p_application_id
13459 , p_ae_header_id => l_ae_header_id
13460 , p_source_5 => p_source_5
13461 , x_transaction_coa_id => l_adr_transaction_coa_id
13462 , x_accounting_coa_id => l_adr_accounting_coa_id
13463 , x_value_type_code => l_adr_value_type_code
13464 , p_side => 'NA'
13465 );
13466
13467 xla_ae_lines_pkg.set_ccid(
13468 p_code_combination_id => l_ccid
13469 , p_value_type_code => l_adr_value_type_code
13470 , p_transaction_coa_id => l_adr_transaction_coa_id
13471 , p_accounting_coa_id => l_adr_accounting_coa_id
13472 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
13473 , p_adr_type_code => 'S'
13474 , p_component_type => l_component_type
13475 , p_component_code => l_component_code
13476 , p_component_type_code => l_component_type_code
13477 , p_component_appl_id => l_component_appl_id
13478 , p_amb_context_code => l_amb_context_code
13479 , p_side => 'NA'
13480 );
13481
13482
13483 --
13484 --
13485 END IF;
13486 --
13487 -- Bug 4922099
13488 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
13489 (NVL(l_enc_upg_option, 'N') = 'O')
13490 ) AND
13491 (l_bflow_method_code = 'PRIOR_ENTRY')
13492 )
13493 THEN
13494 IF
13495 --
13496 1 = 2
13497 --
13498 THEN
13499 xla_accounting_err_pkg.build_message
13500 (p_appli_s_name => 'XLA'
13501 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13502 ,p_token_1 => 'LINE_NUMBER'
13503 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
13504 ,p_token_2 => 'LINE_TYPE_NAME'
13505 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
13506 l_component_type
13507 ,l_component_code
13508 ,l_component_type_code
13509 ,l_component_appl_id
13510 ,l_amb_context_code
13511 ,l_entity_code
13512 ,l_event_class_code
13513 )
13514 ,p_token_3 => 'OWNER'
13515 ,p_value_3 => xla_lookups_pkg.get_meaning(
13516 p_lookup_type => 'XLA_OWNER_TYPE'
13517 ,p_lookup_code => l_component_type_code
13518 )
13519 ,p_token_4 => 'PRODUCT_NAME'
13520 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13521 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13522 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13523 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13524 ,p_ae_header_id => NULL
13525 );
13526
13527 IF (C_LEVEL_ERROR>= g_log_level) THEN
13528 trace
13529 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13533 END IF;
13530 ,p_level => C_LEVEL_ERROR
13531 ,p_module => l_log_module);
13532 END IF;
13534 END IF;
13535 --
13536 --
13537 ------------------------------------------------------------------------------------------------
13538 -- 4219869 Business Flow
13539 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
13540 -- Prior Entry. Currently, the following code is always generated.
13541 ------------------------------------------------------------------------------------------------
13542 XLA_AE_LINES_PKG.ValidateCurrentLine;
13543
13544 ------------------------------------------------------------------------------------
13545 -- 4219869 Business Flow
13546 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
13547 ------------------------------------------------------------------------------------
13548 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13549
13550 ----------------------------------------------------------------------------------
13551 -- 4219869 Business Flow
13552 -- Update journal entry status -- Need to generate this within IF <condition>
13553 ----------------------------------------------------------------------------------
13554 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13555 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
13556 ,p_balance_type_code => l_balance_type_code
13557 );
13558
13559 -------------------------------------------------------------------------------------------
13560 -- 4262811 - Generate the Accrual Reversal lines
13561 -------------------------------------------------------------------------------------------
13562 BEGIN
13563 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
13564 (g_array_event(p_event_id).array_value_num('header_index'));
13565 IF l_acc_rev_flag IS NULL THEN
13566 l_acc_rev_flag := 'N';
13567 END IF;
13568 EXCEPTION
13569 WHEN OTHERS THEN
13570 l_acc_rev_flag := 'N';
13571 END;
13572 --
13573 IF (l_acc_rev_flag = 'Y') THEN
13574
13575 -- 4645092 ------------------------------------------------------------------------------
13576 -- To allow MPA report to determine if it should generate report process
13577 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
13578 ------------------------------------------------------------------------------------------
13579
13580 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
13581 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
13582
13583 --
13584 -- Update the line information that should be overwritten
13585 --
13586 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
13587 p_header_num => 1);
13588 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
13589
13590 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
13591
13592 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
13593 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
13594 END IF;
13595
13596 --
13597 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
13598 --
13599 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
13600 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
13601 ELSE
13602 ---------------------------------------------------------------------------------------------------
13603 -- 4262811a Switch Sign
13604 ---------------------------------------------------------------------------------------------------
13605 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
13606 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13607 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13608 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13609 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13610 -- 5132302
13611 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13612 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13613
13614 END IF;
13615
13616 -- 4955764
13617 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13618 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13619
13620
13621 XLA_AE_LINES_PKG.ValidateCurrentLine;
13622 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13623
13624 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13625 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13626 ,p_balance_type_code => l_balance_type_code);
13627
13628 END IF;
13629
13630 -----------------------------------------------------------------------------------------
13631 -- 4262811 Multiperiod Accounting
13632 -----------------------------------------------------------------------------------------
13633 -- No MPA option is assigned.
13634
13635
13636 END IF;
13637 END IF;
13638 --
13639
13640 --
13641 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13642 trace
13643 (p_msg => 'END of AcctLineType_28'
13647 --
13644 ,p_level => C_LEVEL_PROCEDURE
13645 ,p_module => l_log_module);
13646 END IF;
13648 EXCEPTION
13649 WHEN xla_exceptions_pkg.application_exception THEN
13650 RAISE;
13651 WHEN OTHERS THEN
13652 xla_exceptions_pkg.raise_message
13653 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_28');
13654 END AcctLineType_28;
13655 --
13656
13657 ---------------------------------------
13658 --
13659 -- PRIVATE FUNCTION
13660 -- AcctLineType_29
13661 --
13662 ---------------------------------------
13663 PROCEDURE AcctLineType_29 (
13664 p_application_id IN NUMBER
13665 ,p_event_id IN NUMBER
13666 ,p_calculate_acctd_flag IN VARCHAR2
13667 ,p_calculate_g_l_flag IN VARCHAR2
13668 ,p_actual_flag IN OUT VARCHAR2
13669 ,p_balance_type_code OUT VARCHAR2
13670 ,p_gain_or_loss_ref OUT VARCHAR2
13671
13672 --Contract Number
13673 , p_source_1 IN VARCHAR2
13674 --Contract Product Name
13675 , p_source_2 IN VARCHAR2
13676 --Distribution Account
13677 , p_source_5 IN NUMBER
13678 --Accounting Line Type
13679 , p_source_6 IN VARCHAR2
13680 , p_source_6_meaning IN VARCHAR2
13681 --Accounting Distribution Identifier
13682 , p_source_7 IN NUMBER
13683 --Distribution Type
13684 , p_source_8 IN VARCHAR2
13685 --Distribution Entered Amount
13686 , p_source_9 IN NUMBER
13687 --Transaction Currency Code
13688 , p_source_10 IN VARCHAR2
13689 --Transaction Currency Conversion Date
13690 , p_source_11 IN DATE
13691 --Transaction Currency Conversion Rate
13692 , p_source_12 IN NUMBER
13693 --Transaction Currency Conversion Type
13694 , p_source_13 IN VARCHAR2
13695 )
13696 IS
13697
13698 l_component_type VARCHAR2(80);
13699 l_component_code VARCHAR2(30);
13700 l_component_type_code VARCHAR2(1);
13701 l_component_appl_id INTEGER;
13702 l_amb_context_code VARCHAR2(30);
13703 l_entity_code VARCHAR2(30);
13704 l_event_class_code VARCHAR2(30);
13705 l_ae_header_id NUMBER;
13706 l_event_type_code VARCHAR2(30);
13707 l_line_definition_code VARCHAR2(30);
13708 l_line_definition_owner_code VARCHAR2(1);
13709 --
13710 -- adr variables
13711 l_segment VARCHAR2(30);
13712 l_ccid NUMBER;
13713 l_adr_transaction_coa_id NUMBER;
13714 l_adr_accounting_coa_id NUMBER;
13715 l_adr_flexfield_segment_code VARCHAR2(30);
13716 l_adr_flex_value_set_id NUMBER;
13717 l_adr_value_type_code VARCHAR2(30);
13718 l_adr_value_combination_id NUMBER;
13719 l_adr_value_segment_code VARCHAR2(30);
13720
13721 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
13722 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
13723 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
13724 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
13725
13726 -- 4262811 Variables ------------------------------------------------------------------------------------------
13727 l_entered_amt_idx NUMBER;
13728 l_accted_amt_idx NUMBER;
13729 l_acc_rev_flag VARCHAR2(1);
13730 l_accrual_line_num NUMBER;
13731 l_tmp_amt NUMBER;
13732 l_acc_rev_natural_side_code VARCHAR2(1);
13733
13734 l_num_entries NUMBER;
13735 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
13736 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
13737 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
13738 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
13739 l_recog_line_1 NUMBER;
13740 l_recog_line_2 NUMBER;
13741
13742 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
13743 l_bflow_applied_to_amt NUMBER; -- 5132302
13744 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
13745
13746 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13747
13748 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
13749 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
13750
13751 ---------------------------------------------------------------------------------------------------------------
13752
13753
13754 --
13755 -- bulk performance
13756 --
13757 l_balance_type_code VARCHAR2(1);
13758 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
13759 l_log_module VARCHAR2(240);
13760
13761 --
13762 -- Upgrade strategy
13763 --
13764 l_actual_upg_option VARCHAR2(1);
13765 l_enc_upg_option VARCHAR2(1);
13766
13767 --
13768 BEGIN
13769 --
13770 IF g_log_enabled THEN
13771 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_29';
13772 END IF;
13773 --
13774 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13775
13776 trace
13777 (p_msg => 'BEGIN of AcctLineType_29'
13778 ,p_level => C_LEVEL_PROCEDURE
13779 ,p_module => l_log_module);
13780
13781 END IF;
13782 --
13783 l_component_type := 'AMB_JLT';
13784 l_component_code := 'OKL_TERMINATION_DR';
13785 l_component_type_code := 'S';
13786 l_component_appl_id := 540;
13787 l_amb_context_code := 'DEFAULT';
13788 l_entity_code := 'CONTRACTS';
13789 l_event_class_code := 'TERMINATION';
13793 --
13790 l_event_type_code := 'TERMINATION_ALL';
13791 l_line_definition_owner_code := 'S';
13792 l_line_definition_code := 'OKL_TERMINATION';
13794 l_balance_type_code := 'A';
13795 l_segment := NULL;
13796 l_ccid := NULL;
13797 l_adr_transaction_coa_id := NULL;
13798 l_adr_accounting_coa_id := NULL;
13799 l_adr_flexfield_segment_code := NULL;
13800 l_adr_flex_value_set_id := NULL;
13801 l_adr_value_type_code := NULL;
13802 l_adr_value_combination_id := NULL;
13803 l_adr_value_segment_code := NULL;
13804
13805 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
13806 l_bflow_class_code := ''; -- 4219869 Business Flow
13807 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
13808 l_budgetary_control_flag := 'N';
13809
13810 l_bflow_applied_to_amt_idx := NULL; -- 5132302
13811 l_bflow_applied_to_amt := NULL; -- 5132302
13812 l_entered_amt_idx := NULL; -- 4262811
13813 l_accted_amt_idx := NULL; -- 4262811
13814 l_acc_rev_flag := NULL; -- 4262811
13815 l_accrual_line_num := NULL; -- 4262811
13816 l_tmp_amt := NULL; -- 4262811
13817 --
13818
13819 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13820 l_balance_type_code <> 'B' THEN
13821 IF NVL(p_source_6,'
13822 ') = 'LEASE_DEBIT'
13823 THEN
13824
13825 --
13826 XLA_AE_LINES_PKG.SetNewLine;
13827
13828 p_balance_type_code := l_balance_type_code;
13829 -- set the flag so later we will know whether the gain loss line needs to be created
13830
13831 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13832 p_actual_flag :='A';
13833 END IF;
13834
13835 --
13836 -- bulk performance
13837 --
13838 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13839 p_header_num => 0); -- 4262811
13840 --
13841 -- set accounting line options
13842 --
13843 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13844 p_natural_side_code => 'D'
13845 , p_gain_or_loss_flag => 'N'
13846 , p_gl_transfer_mode_code => 'S'
13847 , p_acct_entry_type_code => 'A'
13848 , p_switch_side_flag => 'Y'
13849 , p_merge_duplicate_code => 'N'
13850 );
13851 --
13852 l_acc_rev_natural_side_code := 'C'; -- 4262811
13853 --
13854 --
13855 -- set accounting line type info
13856 --
13857 xla_ae_lines_pkg.SetAcctLineType
13858 (p_component_type => l_component_type
13859 ,p_event_type_code => l_event_type_code
13860 ,p_line_definition_owner_code => l_line_definition_owner_code
13861 ,p_line_definition_code => l_line_definition_code
13862 ,p_accounting_line_code => l_component_code
13863 ,p_accounting_line_type_code => l_component_type_code
13864 ,p_accounting_line_appl_id => l_component_appl_id
13865 ,p_amb_context_code => l_amb_context_code
13866 ,p_entity_code => l_entity_code
13867 ,p_event_class_code => l_event_class_code);
13868 --
13869 -- set accounting class
13870 --
13871 xla_ae_lines_pkg.SetAcctClass(
13872 p_accounting_class_code => 'TERMINATION'
13873 , p_ae_header_id => l_ae_header_id
13874 );
13875
13876 --
13877 -- set rounding class
13878 --
13879 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13880 'TERMINATION';
13881
13882 --
13883 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13884 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13885 --
13886 -- bulk performance
13887 --
13888 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13889
13890 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13891 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13892
13893 -- 4955764
13894 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13895 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13896
13897 -- 4458381 Public Sector Enh
13898
13899 --
13900 -- set accounting attributes for the line type
13901 --
13902 l_entered_amt_idx := 3;
13903 l_accted_amt_idx := NULL;
13904 l_bflow_applied_to_amt_idx := NULL; -- 5132302
13905 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
13906 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
13907 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
13908 l_rec_acct_attrs.array_char_value(2) := p_source_8;
13909 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
13910 l_rec_acct_attrs.array_num_value(3) := p_source_9;
13911 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
13912 l_rec_acct_attrs.array_char_value(4) := p_source_10;
13913 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
13914 l_rec_acct_attrs.array_date_value(5) := p_source_11;
13915 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
13916 l_rec_acct_attrs.array_num_value(6) := p_source_12;
13917 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
13918 l_rec_acct_attrs.array_char_value(7) := p_source_13;
13919
13923 ---------------------------------------------------------------------------------------------------------------
13920 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13921 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13922
13924 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13925 ---------------------------------------------------------------------------------------------------------------
13926 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13927
13928 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13929 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13930
13931 IF xla_accounting_cache_pkg.GetValueChar
13932 (p_source_code => 'LEDGER_CATEGORY_CODE'
13933 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13934 AND l_bflow_method_code = 'PRIOR_ENTRY'
13935 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13936 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13937 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13938 )
13939 THEN
13940 xla_ae_lines_pkg.BflowUpgEntry
13941 (p_business_method_code => l_bflow_method_code
13942 ,p_business_class_code => l_bflow_class_code
13943 ,p_balance_type => l_balance_type_code);
13944 ELSE
13945 NULL;
13946 -- No business flow processing for business flow method of NONE.
13947 END IF;
13948
13949 --
13950 -- call analytical criteria
13951 --
13952
13953 --
13954 -- call description
13955 --
13956
13957 xla_ae_lines_pkg.SetLineDescription(
13958 p_ae_header_id => l_ae_header_id
13959 ,p_description => Description_1 (
13960 p_application_id => p_application_id
13961 , p_ae_header_id => l_ae_header_id
13962 , p_source_1 => p_source_1
13963 , p_source_2 => p_source_2
13964 )
13965 );
13966
13967
13968 --
13969 -- call ADRs
13970 -- Bug 4922099
13971 --
13972 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13973 (NVL(l_actual_upg_option, 'N') = 'O') OR
13974 (NVL(l_enc_upg_option, 'N') = 'O')
13975 )
13976 THEN
13977 NULL;
13978 --
13979 --
13980
13981 l_ccid := AcctDerRule_3(
13982 p_application_id => p_application_id
13983 , p_ae_header_id => l_ae_header_id
13984 , p_source_5 => p_source_5
13985 , x_transaction_coa_id => l_adr_transaction_coa_id
13986 , x_accounting_coa_id => l_adr_accounting_coa_id
13987 , x_value_type_code => l_adr_value_type_code
13988 , p_side => 'NA'
13989 );
13990
13991 xla_ae_lines_pkg.set_ccid(
13992 p_code_combination_id => l_ccid
13993 , p_value_type_code => l_adr_value_type_code
13994 , p_transaction_coa_id => l_adr_transaction_coa_id
13995 , p_accounting_coa_id => l_adr_accounting_coa_id
13996 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
13997 , p_adr_type_code => 'S'
13998 , p_component_type => l_component_type
13999 , p_component_code => l_component_code
14000 , p_component_type_code => l_component_type_code
14001 , p_component_appl_id => l_component_appl_id
14002 , p_amb_context_code => l_amb_context_code
14003 , p_side => 'NA'
14004 );
14005
14006
14007 --
14008 --
14009 END IF;
14010 --
14011 -- Bug 4922099
14012 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
14013 (NVL(l_enc_upg_option, 'N') = 'O')
14014 ) AND
14015 (l_bflow_method_code = 'PRIOR_ENTRY')
14016 )
14017 THEN
14018 IF
14019 --
14020 1 = 2
14021 --
14022 THEN
14023 xla_accounting_err_pkg.build_message
14024 (p_appli_s_name => 'XLA'
14025 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14026 ,p_token_1 => 'LINE_NUMBER'
14027 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
14028 ,p_token_2 => 'LINE_TYPE_NAME'
14029 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
14030 l_component_type
14031 ,l_component_code
14032 ,l_component_type_code
14033 ,l_component_appl_id
14034 ,l_amb_context_code
14035 ,l_entity_code
14036 ,l_event_class_code
14037 )
14038 ,p_token_3 => 'OWNER'
14039 ,p_value_3 => xla_lookups_pkg.get_meaning(
14040 p_lookup_type => 'XLA_OWNER_TYPE'
14041 ,p_lookup_code => l_component_type_code
14045 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14042 )
14043 ,p_token_4 => 'PRODUCT_NAME'
14044 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
14046 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14047 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14048 ,p_ae_header_id => NULL
14049 );
14050
14051 IF (C_LEVEL_ERROR>= g_log_level) THEN
14052 trace
14053 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14054 ,p_level => C_LEVEL_ERROR
14055 ,p_module => l_log_module);
14056 END IF;
14057 END IF;
14058 END IF;
14059 --
14060 --
14061 ------------------------------------------------------------------------------------------------
14062 -- 4219869 Business Flow
14063 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14064 -- Prior Entry. Currently, the following code is always generated.
14065 ------------------------------------------------------------------------------------------------
14066 XLA_AE_LINES_PKG.ValidateCurrentLine;
14067
14068 ------------------------------------------------------------------------------------
14069 -- 4219869 Business Flow
14070 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14071 ------------------------------------------------------------------------------------
14072 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14073
14074 ----------------------------------------------------------------------------------
14075 -- 4219869 Business Flow
14076 -- Update journal entry status -- Need to generate this within IF <condition>
14077 ----------------------------------------------------------------------------------
14078 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14079 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14080 ,p_balance_type_code => l_balance_type_code
14081 );
14082
14083 -------------------------------------------------------------------------------------------
14084 -- 4262811 - Generate the Accrual Reversal lines
14085 -------------------------------------------------------------------------------------------
14086 BEGIN
14087 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14088 (g_array_event(p_event_id).array_value_num('header_index'));
14089 IF l_acc_rev_flag IS NULL THEN
14090 l_acc_rev_flag := 'N';
14091 END IF;
14092 EXCEPTION
14093 WHEN OTHERS THEN
14094 l_acc_rev_flag := 'N';
14095 END;
14096 --
14097 IF (l_acc_rev_flag = 'Y') THEN
14098
14099 -- 4645092 ------------------------------------------------------------------------------
14100 -- To allow MPA report to determine if it should generate report process
14101 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14102 ------------------------------------------------------------------------------------------
14103
14104 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14105 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14106
14107 --
14108 -- Update the line information that should be overwritten
14109 --
14110 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14111 p_header_num => 1);
14112 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
14113
14114 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14115
14116 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
14117 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14118 END IF;
14119
14120 --
14121 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14122 --
14123 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14124 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
14125 ELSE
14126 ---------------------------------------------------------------------------------------------------
14127 -- 4262811a Switch Sign
14128 ---------------------------------------------------------------------------------------------------
14129 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
14130 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14131 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14132 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14133 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14134 -- 5132302
14135 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14136 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14137
14138 END IF;
14139
14140 -- 4955764
14141 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14142 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14143
14144
14148 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14145 XLA_AE_LINES_PKG.ValidateCurrentLine;
14146 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14147
14149 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14150 ,p_balance_type_code => l_balance_type_code);
14151
14152 END IF;
14153
14154 -----------------------------------------------------------------------------------------
14155 -- 4262811 Multiperiod Accounting
14156 -----------------------------------------------------------------------------------------
14157 -- No MPA option is assigned.
14158
14159
14160 END IF;
14161 END IF;
14162 --
14163
14164 --
14165 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14166 trace
14167 (p_msg => 'END of AcctLineType_29'
14168 ,p_level => C_LEVEL_PROCEDURE
14169 ,p_module => l_log_module);
14170 END IF;
14171 --
14172 EXCEPTION
14173 WHEN xla_exceptions_pkg.application_exception THEN
14174 RAISE;
14175 WHEN OTHERS THEN
14176 xla_exceptions_pkg.raise_message
14177 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_29');
14178 END AcctLineType_29;
14179 --
14180
14181 ---------------------------------------
14182 --
14183 -- PRIVATE FUNCTION
14184 -- AcctLineType_30
14185 --
14186 ---------------------------------------
14187 PROCEDURE AcctLineType_30 (
14188 p_application_id IN NUMBER
14189 ,p_event_id IN NUMBER
14190 ,p_calculate_acctd_flag IN VARCHAR2
14191 ,p_calculate_g_l_flag IN VARCHAR2
14192 ,p_actual_flag IN OUT VARCHAR2
14193 ,p_balance_type_code OUT VARCHAR2
14194 ,p_gain_or_loss_ref OUT VARCHAR2
14195
14196 --Contract Number
14197 , p_source_1 IN VARCHAR2
14198 --Contract Product Name
14199 , p_source_2 IN VARCHAR2
14200 --Distribution Account
14201 , p_source_5 IN NUMBER
14202 --Accounting Line Type
14203 , p_source_6 IN VARCHAR2
14204 , p_source_6_meaning IN VARCHAR2
14205 --Accounting Distribution Identifier
14206 , p_source_7 IN NUMBER
14207 --Distribution Type
14208 , p_source_8 IN VARCHAR2
14209 --Distribution Entered Amount
14210 , p_source_9 IN NUMBER
14211 --Transaction Currency Code
14212 , p_source_10 IN VARCHAR2
14213 --Transaction Currency Conversion Date
14214 , p_source_11 IN DATE
14215 --Transaction Currency Conversion Rate
14216 , p_source_12 IN NUMBER
14217 --Transaction Currency Conversion Type
14218 , p_source_13 IN VARCHAR2
14219 )
14220 IS
14221
14222 l_component_type VARCHAR2(80);
14223 l_component_code VARCHAR2(30);
14224 l_component_type_code VARCHAR2(1);
14225 l_component_appl_id INTEGER;
14226 l_amb_context_code VARCHAR2(30);
14227 l_entity_code VARCHAR2(30);
14228 l_event_class_code VARCHAR2(30);
14229 l_ae_header_id NUMBER;
14230 l_event_type_code VARCHAR2(30);
14231 l_line_definition_code VARCHAR2(30);
14232 l_line_definition_owner_code VARCHAR2(1);
14233 --
14234 -- adr variables
14235 l_segment VARCHAR2(30);
14236 l_ccid NUMBER;
14237 l_adr_transaction_coa_id NUMBER;
14238 l_adr_accounting_coa_id NUMBER;
14239 l_adr_flexfield_segment_code VARCHAR2(30);
14240 l_adr_flex_value_set_id NUMBER;
14241 l_adr_value_type_code VARCHAR2(30);
14242 l_adr_value_combination_id NUMBER;
14243 l_adr_value_segment_code VARCHAR2(30);
14244
14245 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
14246 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
14247 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
14248 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
14249
14250 -- 4262811 Variables ------------------------------------------------------------------------------------------
14251 l_entered_amt_idx NUMBER;
14252 l_accted_amt_idx NUMBER;
14253 l_acc_rev_flag VARCHAR2(1);
14254 l_accrual_line_num NUMBER;
14255 l_tmp_amt NUMBER;
14256 l_acc_rev_natural_side_code VARCHAR2(1);
14257
14258 l_num_entries NUMBER;
14259 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
14260 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
14261 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
14262 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
14263 l_recog_line_1 NUMBER;
14264 l_recog_line_2 NUMBER;
14265
14266 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
14267 l_bflow_applied_to_amt NUMBER; -- 5132302
14268 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
14269
14270 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14271
14272 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
14273 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
14274
14275 ---------------------------------------------------------------------------------------------------------------
14276
14277
14278 --
14279 -- bulk performance
14280 --
14281 l_balance_type_code VARCHAR2(1);
14282 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
14283 l_log_module VARCHAR2(240);
14284
14285 --
14286 -- Upgrade strategy
14287 --
14288 l_actual_upg_option VARCHAR2(1);
14292 BEGIN
14289 l_enc_upg_option VARCHAR2(1);
14290
14291 --
14293 --
14294 IF g_log_enabled THEN
14295 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_30';
14296 END IF;
14297 --
14298 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14299
14300 trace
14301 (p_msg => 'BEGIN of AcctLineType_30'
14302 ,p_level => C_LEVEL_PROCEDURE
14303 ,p_module => l_log_module);
14304
14305 END IF;
14306 --
14307 l_component_type := 'AMB_JLT';
14308 l_component_code := 'OKL_UPFRONT_TAX_CR';
14309 l_component_type_code := 'S';
14310 l_component_appl_id := 540;
14311 l_amb_context_code := 'DEFAULT';
14312 l_entity_code := 'CONTRACTS';
14313 l_event_class_code := 'UPFRONT_TAX';
14314 l_event_type_code := 'UPFRONT_TAX_ALL';
14315 l_line_definition_owner_code := 'S';
14316 l_line_definition_code := 'OKL_UPFRONT_TAX';
14317 --
14318 l_balance_type_code := 'A';
14319 l_segment := NULL;
14320 l_ccid := NULL;
14321 l_adr_transaction_coa_id := NULL;
14322 l_adr_accounting_coa_id := NULL;
14323 l_adr_flexfield_segment_code := NULL;
14324 l_adr_flex_value_set_id := NULL;
14325 l_adr_value_type_code := NULL;
14326 l_adr_value_combination_id := NULL;
14327 l_adr_value_segment_code := NULL;
14328
14329 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
14330 l_bflow_class_code := ''; -- 4219869 Business Flow
14331 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
14332 l_budgetary_control_flag := 'N';
14333
14334 l_bflow_applied_to_amt_idx := NULL; -- 5132302
14335 l_bflow_applied_to_amt := NULL; -- 5132302
14336 l_entered_amt_idx := NULL; -- 4262811
14337 l_accted_amt_idx := NULL; -- 4262811
14338 l_acc_rev_flag := NULL; -- 4262811
14339 l_accrual_line_num := NULL; -- 4262811
14340 l_tmp_amt := NULL; -- 4262811
14341 --
14342
14343 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
14344 l_balance_type_code <> 'B' THEN
14345 IF NVL(p_source_6,'
14346 ') = 'LEASE_CREDIT'
14347 THEN
14348
14349 --
14350 XLA_AE_LINES_PKG.SetNewLine;
14351
14352 p_balance_type_code := l_balance_type_code;
14353 -- set the flag so later we will know whether the gain loss line needs to be created
14354
14355 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
14356 p_actual_flag :='A';
14357 END IF;
14358
14359 --
14360 -- bulk performance
14361 --
14362 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
14363 p_header_num => 0); -- 4262811
14364 --
14365 -- set accounting line options
14366 --
14367 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
14368 p_natural_side_code => 'C'
14369 , p_gain_or_loss_flag => 'N'
14370 , p_gl_transfer_mode_code => 'S'
14371 , p_acct_entry_type_code => 'A'
14372 , p_switch_side_flag => 'Y'
14373 , p_merge_duplicate_code => 'N'
14374 );
14375 --
14376 l_acc_rev_natural_side_code := 'D'; -- 4262811
14377 --
14378 --
14379 -- set accounting line type info
14380 --
14381 xla_ae_lines_pkg.SetAcctLineType
14382 (p_component_type => l_component_type
14383 ,p_event_type_code => l_event_type_code
14384 ,p_line_definition_owner_code => l_line_definition_owner_code
14385 ,p_line_definition_code => l_line_definition_code
14386 ,p_accounting_line_code => l_component_code
14387 ,p_accounting_line_type_code => l_component_type_code
14388 ,p_accounting_line_appl_id => l_component_appl_id
14389 ,p_amb_context_code => l_amb_context_code
14390 ,p_entity_code => l_entity_code
14391 ,p_event_class_code => l_event_class_code);
14392 --
14393 -- set accounting class
14394 --
14395 xla_ae_lines_pkg.SetAcctClass(
14396 p_accounting_class_code => 'UPFRONT_TAX'
14397 , p_ae_header_id => l_ae_header_id
14398 );
14399
14400 --
14401 -- set rounding class
14402 --
14403 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
14404 'UPFRONT_TAX';
14405
14406 --
14407 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
14408 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
14409 --
14410 -- bulk performance
14411 --
14412 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
14413
14414 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
14415 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
14416
14417 -- 4955764
14418 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14419 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
14420
14421 -- 4458381 Public Sector Enh
14422
14423 --
14424 -- set accounting attributes for the line type
14425 --
14426 l_entered_amt_idx := 3;
14427 l_accted_amt_idx := NULL;
14428 l_bflow_applied_to_amt_idx := NULL; -- 5132302
14429 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
14433 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
14430 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
14431 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
14432 l_rec_acct_attrs.array_char_value(2) := p_source_8;
14434 l_rec_acct_attrs.array_num_value(3) := p_source_9;
14435 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
14436 l_rec_acct_attrs.array_char_value(4) := p_source_10;
14437 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
14438 l_rec_acct_attrs.array_date_value(5) := p_source_11;
14439 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
14440 l_rec_acct_attrs.array_num_value(6) := p_source_12;
14441 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
14442 l_rec_acct_attrs.array_char_value(7) := p_source_13;
14443
14444 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
14445 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
14446
14447 ---------------------------------------------------------------------------------------------------------------
14448 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
14449 ---------------------------------------------------------------------------------------------------------------
14450 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
14451
14452 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14453 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14454
14455 IF xla_accounting_cache_pkg.GetValueChar
14456 (p_source_code => 'LEDGER_CATEGORY_CODE'
14457 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
14458 AND l_bflow_method_code = 'PRIOR_ENTRY'
14459 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
14460 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
14461 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
14462 )
14463 THEN
14464 xla_ae_lines_pkg.BflowUpgEntry
14465 (p_business_method_code => l_bflow_method_code
14466 ,p_business_class_code => l_bflow_class_code
14467 ,p_balance_type => l_balance_type_code);
14468 ELSE
14469 NULL;
14470 -- No business flow processing for business flow method of NONE.
14471 END IF;
14472
14473 --
14474 -- call analytical criteria
14475 --
14476
14477 --
14478 -- call description
14479 --
14480
14481 xla_ae_lines_pkg.SetLineDescription(
14482 p_ae_header_id => l_ae_header_id
14483 ,p_description => Description_1 (
14484 p_application_id => p_application_id
14485 , p_ae_header_id => l_ae_header_id
14486 , p_source_1 => p_source_1
14487 , p_source_2 => p_source_2
14488 )
14489 );
14490
14491
14492 --
14493 -- call ADRs
14494 -- Bug 4922099
14495 --
14496 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14497 (NVL(l_actual_upg_option, 'N') = 'O') OR
14498 (NVL(l_enc_upg_option, 'N') = 'O')
14499 )
14500 THEN
14501 NULL;
14502 --
14503 --
14504
14505 l_ccid := AcctDerRule_3(
14506 p_application_id => p_application_id
14507 , p_ae_header_id => l_ae_header_id
14508 , p_source_5 => p_source_5
14509 , x_transaction_coa_id => l_adr_transaction_coa_id
14510 , x_accounting_coa_id => l_adr_accounting_coa_id
14511 , x_value_type_code => l_adr_value_type_code
14512 , p_side => 'NA'
14513 );
14514
14515 xla_ae_lines_pkg.set_ccid(
14516 p_code_combination_id => l_ccid
14517 , p_value_type_code => l_adr_value_type_code
14518 , p_transaction_coa_id => l_adr_transaction_coa_id
14519 , p_accounting_coa_id => l_adr_accounting_coa_id
14520 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
14521 , p_adr_type_code => 'S'
14522 , p_component_type => l_component_type
14523 , p_component_code => l_component_code
14524 , p_component_type_code => l_component_type_code
14525 , p_component_appl_id => l_component_appl_id
14526 , p_amb_context_code => l_amb_context_code
14527 , p_side => 'NA'
14528 );
14529
14530
14531 --
14532 --
14533 END IF;
14534 --
14535 -- Bug 4922099
14536 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
14537 (NVL(l_enc_upg_option, 'N') = 'O')
14538 ) AND
14539 (l_bflow_method_code = 'PRIOR_ENTRY')
14540 )
14541 THEN
14542 IF
14543 --
14544 1 = 2
14545 --
14546 THEN
14547 xla_accounting_err_pkg.build_message
14548 (p_appli_s_name => 'XLA'
14549 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14550 ,p_token_1 => 'LINE_NUMBER'
14551 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
14552 ,p_token_2 => 'LINE_TYPE_NAME'
14553 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
14554 l_component_type
14555 ,l_component_code
14559 ,l_entity_code
14556 ,l_component_type_code
14557 ,l_component_appl_id
14558 ,l_amb_context_code
14560 ,l_event_class_code
14561 )
14562 ,p_token_3 => 'OWNER'
14563 ,p_value_3 => xla_lookups_pkg.get_meaning(
14564 p_lookup_type => 'XLA_OWNER_TYPE'
14565 ,p_lookup_code => l_component_type_code
14566 )
14567 ,p_token_4 => 'PRODUCT_NAME'
14568 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
14569 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14570 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14571 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14572 ,p_ae_header_id => NULL
14573 );
14574
14575 IF (C_LEVEL_ERROR>= g_log_level) THEN
14576 trace
14577 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14578 ,p_level => C_LEVEL_ERROR
14579 ,p_module => l_log_module);
14580 END IF;
14581 END IF;
14582 END IF;
14583 --
14584 --
14585 ------------------------------------------------------------------------------------------------
14586 -- 4219869 Business Flow
14587 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14588 -- Prior Entry. Currently, the following code is always generated.
14589 ------------------------------------------------------------------------------------------------
14590 XLA_AE_LINES_PKG.ValidateCurrentLine;
14591
14592 ------------------------------------------------------------------------------------
14593 -- 4219869 Business Flow
14594 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14595 ------------------------------------------------------------------------------------
14596 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14597
14598 ----------------------------------------------------------------------------------
14599 -- 4219869 Business Flow
14600 -- Update journal entry status -- Need to generate this within IF <condition>
14601 ----------------------------------------------------------------------------------
14602 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14603 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14604 ,p_balance_type_code => l_balance_type_code
14605 );
14606
14607 -------------------------------------------------------------------------------------------
14608 -- 4262811 - Generate the Accrual Reversal lines
14609 -------------------------------------------------------------------------------------------
14610 BEGIN
14611 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14612 (g_array_event(p_event_id).array_value_num('header_index'));
14613 IF l_acc_rev_flag IS NULL THEN
14614 l_acc_rev_flag := 'N';
14615 END IF;
14616 EXCEPTION
14617 WHEN OTHERS THEN
14618 l_acc_rev_flag := 'N';
14619 END;
14620 --
14621 IF (l_acc_rev_flag = 'Y') THEN
14622
14623 -- 4645092 ------------------------------------------------------------------------------
14624 -- To allow MPA report to determine if it should generate report process
14625 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14626 ------------------------------------------------------------------------------------------
14627
14628 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14629 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14630
14631 --
14632 -- Update the line information that should be overwritten
14633 --
14634 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14635 p_header_num => 1);
14636 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
14637
14638 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14639
14640 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
14641 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14642 END IF;
14643
14644 --
14645 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14646 --
14647 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14648 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
14649 ELSE
14650 ---------------------------------------------------------------------------------------------------
14651 -- 4262811a Switch Sign
14652 ---------------------------------------------------------------------------------------------------
14653 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
14657 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14654 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14655 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14656 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14658 -- 5132302
14659 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14660 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14661
14662 END IF;
14663
14664 -- 4955764
14665 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14666 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14667
14668
14669 XLA_AE_LINES_PKG.ValidateCurrentLine;
14670 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14671
14672 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14673 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14674 ,p_balance_type_code => l_balance_type_code);
14675
14676 END IF;
14677
14678 -----------------------------------------------------------------------------------------
14679 -- 4262811 Multiperiod Accounting
14680 -----------------------------------------------------------------------------------------
14681 -- No MPA option is assigned.
14682
14683
14684 END IF;
14685 END IF;
14686 --
14687
14688 --
14689 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14690 trace
14691 (p_msg => 'END of AcctLineType_30'
14692 ,p_level => C_LEVEL_PROCEDURE
14693 ,p_module => l_log_module);
14694 END IF;
14695 --
14696 EXCEPTION
14697 WHEN xla_exceptions_pkg.application_exception THEN
14698 RAISE;
14699 WHEN OTHERS THEN
14700 xla_exceptions_pkg.raise_message
14701 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_30');
14702 END AcctLineType_30;
14703 --
14704
14705 ---------------------------------------
14706 --
14707 -- PRIVATE FUNCTION
14708 -- AcctLineType_31
14709 --
14710 ---------------------------------------
14711 PROCEDURE AcctLineType_31 (
14712 p_application_id IN NUMBER
14713 ,p_event_id IN NUMBER
14714 ,p_calculate_acctd_flag IN VARCHAR2
14715 ,p_calculate_g_l_flag IN VARCHAR2
14716 ,p_actual_flag IN OUT VARCHAR2
14717 ,p_balance_type_code OUT VARCHAR2
14718 ,p_gain_or_loss_ref OUT VARCHAR2
14719
14720 --Contract Number
14721 , p_source_1 IN VARCHAR2
14722 --Contract Product Name
14723 , p_source_2 IN VARCHAR2
14724 --Distribution Account
14725 , p_source_5 IN NUMBER
14726 --Accounting Line Type
14727 , p_source_6 IN VARCHAR2
14728 , p_source_6_meaning IN VARCHAR2
14729 --Accounting Distribution Identifier
14730 , p_source_7 IN NUMBER
14731 --Distribution Type
14732 , p_source_8 IN VARCHAR2
14733 --Distribution Entered Amount
14734 , p_source_9 IN NUMBER
14735 --Transaction Currency Code
14736 , p_source_10 IN VARCHAR2
14737 --Transaction Currency Conversion Date
14738 , p_source_11 IN DATE
14739 --Transaction Currency Conversion Rate
14740 , p_source_12 IN NUMBER
14741 --Transaction Currency Conversion Type
14742 , p_source_13 IN VARCHAR2
14743 )
14744 IS
14745
14746 l_component_type VARCHAR2(80);
14747 l_component_code VARCHAR2(30);
14748 l_component_type_code VARCHAR2(1);
14749 l_component_appl_id INTEGER;
14750 l_amb_context_code VARCHAR2(30);
14751 l_entity_code VARCHAR2(30);
14752 l_event_class_code VARCHAR2(30);
14753 l_ae_header_id NUMBER;
14754 l_event_type_code VARCHAR2(30);
14755 l_line_definition_code VARCHAR2(30);
14756 l_line_definition_owner_code VARCHAR2(1);
14757 --
14758 -- adr variables
14759 l_segment VARCHAR2(30);
14760 l_ccid NUMBER;
14761 l_adr_transaction_coa_id NUMBER;
14762 l_adr_accounting_coa_id NUMBER;
14763 l_adr_flexfield_segment_code VARCHAR2(30);
14764 l_adr_flex_value_set_id NUMBER;
14765 l_adr_value_type_code VARCHAR2(30);
14766 l_adr_value_combination_id NUMBER;
14767 l_adr_value_segment_code VARCHAR2(30);
14768
14769 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
14770 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
14771 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
14772 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
14773
14774 -- 4262811 Variables ------------------------------------------------------------------------------------------
14775 l_entered_amt_idx NUMBER;
14776 l_accted_amt_idx NUMBER;
14777 l_acc_rev_flag VARCHAR2(1);
14778 l_accrual_line_num NUMBER;
14779 l_tmp_amt NUMBER;
14780 l_acc_rev_natural_side_code VARCHAR2(1);
14781
14782 l_num_entries NUMBER;
14783 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
14784 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
14785 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
14786 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
14787 l_recog_line_1 NUMBER;
14788 l_recog_line_2 NUMBER;
14789
14790 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
14794 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14791 l_bflow_applied_to_amt NUMBER; -- 5132302
14792 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
14793
14795
14796 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
14797 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
14798
14799 ---------------------------------------------------------------------------------------------------------------
14800
14801
14802 --
14803 -- bulk performance
14804 --
14805 l_balance_type_code VARCHAR2(1);
14806 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
14807 l_log_module VARCHAR2(240);
14808
14809 --
14810 -- Upgrade strategy
14811 --
14812 l_actual_upg_option VARCHAR2(1);
14813 l_enc_upg_option VARCHAR2(1);
14814
14815 --
14816 BEGIN
14817 --
14818 IF g_log_enabled THEN
14819 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_31';
14820 END IF;
14821 --
14822 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14823
14824 trace
14825 (p_msg => 'BEGIN of AcctLineType_31'
14826 ,p_level => C_LEVEL_PROCEDURE
14827 ,p_module => l_log_module);
14828
14829 END IF;
14830 --
14831 l_component_type := 'AMB_JLT';
14832 l_component_code := 'OKL_UPFRONT_TAX_DR';
14833 l_component_type_code := 'S';
14834 l_component_appl_id := 540;
14835 l_amb_context_code := 'DEFAULT';
14836 l_entity_code := 'CONTRACTS';
14837 l_event_class_code := 'UPFRONT_TAX';
14838 l_event_type_code := 'UPFRONT_TAX_ALL';
14839 l_line_definition_owner_code := 'S';
14840 l_line_definition_code := 'OKL_UPFRONT_TAX';
14841 --
14842 l_balance_type_code := 'A';
14843 l_segment := NULL;
14844 l_ccid := NULL;
14845 l_adr_transaction_coa_id := NULL;
14846 l_adr_accounting_coa_id := NULL;
14847 l_adr_flexfield_segment_code := NULL;
14848 l_adr_flex_value_set_id := NULL;
14849 l_adr_value_type_code := NULL;
14850 l_adr_value_combination_id := NULL;
14851 l_adr_value_segment_code := NULL;
14852
14853 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
14854 l_bflow_class_code := ''; -- 4219869 Business Flow
14855 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
14856 l_budgetary_control_flag := 'N';
14857
14858 l_bflow_applied_to_amt_idx := NULL; -- 5132302
14859 l_bflow_applied_to_amt := NULL; -- 5132302
14860 l_entered_amt_idx := NULL; -- 4262811
14861 l_accted_amt_idx := NULL; -- 4262811
14862 l_acc_rev_flag := NULL; -- 4262811
14863 l_accrual_line_num := NULL; -- 4262811
14864 l_tmp_amt := NULL; -- 4262811
14865 --
14866
14867 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
14868 l_balance_type_code <> 'B' THEN
14869 IF NVL(p_source_6,'
14870 ') = 'LEASE_DEBIT'
14871 THEN
14872
14873 --
14874 XLA_AE_LINES_PKG.SetNewLine;
14875
14876 p_balance_type_code := l_balance_type_code;
14877 -- set the flag so later we will know whether the gain loss line needs to be created
14878
14879 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
14880 p_actual_flag :='A';
14881 END IF;
14882
14883 --
14884 -- bulk performance
14885 --
14886 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
14887 p_header_num => 0); -- 4262811
14888 --
14889 -- set accounting line options
14890 --
14891 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
14892 p_natural_side_code => 'D'
14893 , p_gain_or_loss_flag => 'N'
14894 , p_gl_transfer_mode_code => 'S'
14895 , p_acct_entry_type_code => 'A'
14896 , p_switch_side_flag => 'Y'
14897 , p_merge_duplicate_code => 'N'
14898 );
14899 --
14900 l_acc_rev_natural_side_code := 'C'; -- 4262811
14901 --
14902 --
14903 -- set accounting line type info
14904 --
14905 xla_ae_lines_pkg.SetAcctLineType
14906 (p_component_type => l_component_type
14907 ,p_event_type_code => l_event_type_code
14908 ,p_line_definition_owner_code => l_line_definition_owner_code
14909 ,p_line_definition_code => l_line_definition_code
14910 ,p_accounting_line_code => l_component_code
14911 ,p_accounting_line_type_code => l_component_type_code
14912 ,p_accounting_line_appl_id => l_component_appl_id
14913 ,p_amb_context_code => l_amb_context_code
14914 ,p_entity_code => l_entity_code
14915 ,p_event_class_code => l_event_class_code);
14916 --
14917 -- set accounting class
14918 --
14919 xla_ae_lines_pkg.SetAcctClass(
14920 p_accounting_class_code => 'UPFRONT_TAX'
14921 , p_ae_header_id => l_ae_header_id
14922 );
14923
14924 --
14925 -- set rounding class
14926 --
14927 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
14928 'UPFRONT_TAX';
14929
14930 --
14931 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
14932 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
14933 --
14937
14934 -- bulk performance
14935 --
14936 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
14938 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
14939 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
14940
14941 -- 4955764
14942 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14943 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
14944
14945 -- 4458381 Public Sector Enh
14946
14947 --
14948 -- set accounting attributes for the line type
14949 --
14950 l_entered_amt_idx := 3;
14951 l_accted_amt_idx := NULL;
14952 l_bflow_applied_to_amt_idx := NULL; -- 5132302
14953 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
14954 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_7);
14955 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
14956 l_rec_acct_attrs.array_char_value(2) := p_source_8;
14957 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
14958 l_rec_acct_attrs.array_num_value(3) := p_source_9;
14959 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
14960 l_rec_acct_attrs.array_char_value(4) := p_source_10;
14961 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
14962 l_rec_acct_attrs.array_date_value(5) := p_source_11;
14963 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
14964 l_rec_acct_attrs.array_num_value(6) := p_source_12;
14965 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
14966 l_rec_acct_attrs.array_char_value(7) := p_source_13;
14967
14968 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
14969 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
14970
14971 ---------------------------------------------------------------------------------------------------------------
14972 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
14973 ---------------------------------------------------------------------------------------------------------------
14974 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
14975
14976 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14977 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14978
14979 IF xla_accounting_cache_pkg.GetValueChar
14980 (p_source_code => 'LEDGER_CATEGORY_CODE'
14981 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
14982 AND l_bflow_method_code = 'PRIOR_ENTRY'
14983 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
14984 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
14985 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
14986 )
14987 THEN
14988 xla_ae_lines_pkg.BflowUpgEntry
14989 (p_business_method_code => l_bflow_method_code
14990 ,p_business_class_code => l_bflow_class_code
14991 ,p_balance_type => l_balance_type_code);
14992 ELSE
14993 NULL;
14994 -- No business flow processing for business flow method of NONE.
14995 END IF;
14996
14997 --
14998 -- call analytical criteria
14999 --
15000
15001 --
15002 -- call description
15003 --
15004
15005 xla_ae_lines_pkg.SetLineDescription(
15006 p_ae_header_id => l_ae_header_id
15007 ,p_description => Description_1 (
15008 p_application_id => p_application_id
15009 , p_ae_header_id => l_ae_header_id
15010 , p_source_1 => p_source_1
15011 , p_source_2 => p_source_2
15012 )
15013 );
15014
15015
15016 --
15017 -- call ADRs
15018 -- Bug 4922099
15019 --
15020 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15021 (NVL(l_actual_upg_option, 'N') = 'O') OR
15022 (NVL(l_enc_upg_option, 'N') = 'O')
15023 )
15024 THEN
15025 NULL;
15026 --
15027 --
15028
15029 l_ccid := AcctDerRule_3(
15030 p_application_id => p_application_id
15031 , p_ae_header_id => l_ae_header_id
15032 , p_source_5 => p_source_5
15033 , x_transaction_coa_id => l_adr_transaction_coa_id
15034 , x_accounting_coa_id => l_adr_accounting_coa_id
15035 , x_value_type_code => l_adr_value_type_code
15036 , p_side => 'NA'
15037 );
15038
15039 xla_ae_lines_pkg.set_ccid(
15040 p_code_combination_id => l_ccid
15041 , p_value_type_code => l_adr_value_type_code
15042 , p_transaction_coa_id => l_adr_transaction_coa_id
15043 , p_accounting_coa_id => l_adr_accounting_coa_id
15044 , p_adr_code => 'OKL_DEFAULT_ACCOUNT'
15045 , p_adr_type_code => 'S'
15046 , p_component_type => l_component_type
15047 , p_component_code => l_component_code
15048 , p_component_type_code => l_component_type_code
15049 , p_component_appl_id => l_component_appl_id
15050 , p_amb_context_code => l_amb_context_code
15051 , p_side => 'NA'
15052 );
15053
15054
15055 --
15056 --
15057 END IF;
15058 --
15059 -- Bug 4922099
15060 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
15061 (NVL(l_enc_upg_option, 'N') = 'O')
15062 ) AND
15063 (l_bflow_method_code = 'PRIOR_ENTRY')
15064 )
15065 THEN
15066 IF
15070 THEN
15067 --
15068 1 = 2
15069 --
15071 xla_accounting_err_pkg.build_message
15072 (p_appli_s_name => 'XLA'
15073 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15074 ,p_token_1 => 'LINE_NUMBER'
15075 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
15076 ,p_token_2 => 'LINE_TYPE_NAME'
15077 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
15078 l_component_type
15079 ,l_component_code
15080 ,l_component_type_code
15081 ,l_component_appl_id
15082 ,l_amb_context_code
15083 ,l_entity_code
15084 ,l_event_class_code
15085 )
15086 ,p_token_3 => 'OWNER'
15087 ,p_value_3 => xla_lookups_pkg.get_meaning(
15088 p_lookup_type => 'XLA_OWNER_TYPE'
15089 ,p_lookup_code => l_component_type_code
15090 )
15091 ,p_token_4 => 'PRODUCT_NAME'
15092 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15093 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15094 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15095 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15096 ,p_ae_header_id => NULL
15097 );
15098
15099 IF (C_LEVEL_ERROR>= g_log_level) THEN
15100 trace
15101 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15102 ,p_level => C_LEVEL_ERROR
15103 ,p_module => l_log_module);
15104 END IF;
15105 END IF;
15106 END IF;
15107 --
15108 --
15109 ------------------------------------------------------------------------------------------------
15110 -- 4219869 Business Flow
15111 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
15112 -- Prior Entry. Currently, the following code is always generated.
15113 ------------------------------------------------------------------------------------------------
15114 XLA_AE_LINES_PKG.ValidateCurrentLine;
15115
15116 ------------------------------------------------------------------------------------
15117 -- 4219869 Business Flow
15118 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
15119 ------------------------------------------------------------------------------------
15120 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15121
15122 ----------------------------------------------------------------------------------
15123 -- 4219869 Business Flow
15124 -- Update journal entry status -- Need to generate this within IF <condition>
15125 ----------------------------------------------------------------------------------
15126 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15127 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
15128 ,p_balance_type_code => l_balance_type_code
15129 );
15130
15131 -------------------------------------------------------------------------------------------
15132 -- 4262811 - Generate the Accrual Reversal lines
15133 -------------------------------------------------------------------------------------------
15134 BEGIN
15135 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
15136 (g_array_event(p_event_id).array_value_num('header_index'));
15137 IF l_acc_rev_flag IS NULL THEN
15138 l_acc_rev_flag := 'N';
15139 END IF;
15140 EXCEPTION
15141 WHEN OTHERS THEN
15142 l_acc_rev_flag := 'N';
15143 END;
15144 --
15145 IF (l_acc_rev_flag = 'Y') THEN
15146
15147 -- 4645092 ------------------------------------------------------------------------------
15148 -- To allow MPA report to determine if it should generate report process
15149 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
15150 ------------------------------------------------------------------------------------------
15151
15152 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
15153 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
15154
15155 --
15156 -- Update the line information that should be overwritten
15157 --
15158 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
15159 p_header_num => 1);
15160 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
15161
15162 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
15163
15164 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
15168 --
15165 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
15166 END IF;
15167
15169 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
15170 --
15171 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
15172 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
15173 ELSE
15174 ---------------------------------------------------------------------------------------------------
15175 -- 4262811a Switch Sign
15176 ---------------------------------------------------------------------------------------------------
15177 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
15178 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15179 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15180 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15181 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15182 -- 5132302
15183 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
15184 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15185
15186 END IF;
15187
15188 -- 4955764
15189 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15190 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
15191
15192
15193 XLA_AE_LINES_PKG.ValidateCurrentLine;
15194 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15195
15196 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15197 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
15198 ,p_balance_type_code => l_balance_type_code);
15199
15200 END IF;
15201
15202 -----------------------------------------------------------------------------------------
15203 -- 4262811 Multiperiod Accounting
15204 -----------------------------------------------------------------------------------------
15205 -- No MPA option is assigned.
15206
15207
15208 END IF;
15209 END IF;
15210 --
15211
15212 --
15213 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15214 trace
15215 (p_msg => 'END of AcctLineType_31'
15216 ,p_level => C_LEVEL_PROCEDURE
15217 ,p_module => l_log_module);
15218 END IF;
15219 --
15220 EXCEPTION
15221 WHEN xla_exceptions_pkg.application_exception THEN
15222 RAISE;
15223 WHEN OTHERS THEN
15224 xla_exceptions_pkg.raise_message
15225 (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_31');
15226 END AcctLineType_31;
15227 --
15228
15229 ---------------------------------------
15230 --
15231 -- PRIVATE PROCEDURE
15232 -- insert_sources_32
15233 --
15234 ----------------------------------------
15235 --
15236 PROCEDURE insert_sources_32(
15237 p_target_ledger_id IN NUMBER
15238 , p_language IN VARCHAR2
15239 , p_sla_ledger_id IN NUMBER
15240 , p_pad_start_date IN DATE
15241 , p_pad_end_date IN DATE
15242 )
15243 IS
15244
15245 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'ACCRUAL_ALL';
15246 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'ACCRUAL';
15247 p_apps_owner VARCHAR2(30);
15248 l_log_module VARCHAR2(240);
15249 BEGIN
15250 IF g_log_enabled THEN
15251 l_log_module := C_DEFAULT_MODULE||'.insert_sources_32';
15252 END IF;
15253 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15254
15255 trace
15256 (p_msg => 'BEGIN of insert_sources_32'
15257 ,p_level => C_LEVEL_PROCEDURE
15258 ,p_module => l_log_module);
15259
15260 END IF;
15261
15262 -- select APPS owner
15263 SELECT oracle_username
15264 INTO p_apps_owner
15265 FROM fnd_oracle_userid
15266 WHERE read_only_flag = 'U'
15267 ;
15268
15269 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
15270 trace
15271 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
15272 ' - p_language = '||p_language||
15273 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
15274 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
15275 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
15276 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
15277 ,p_level => C_LEVEL_STATEMENT
15278 ,p_module => l_log_module);
15279 END IF;
15280
15281
15282 --
15283 INSERT INTO xla_diag_sources --hdr2
15284 (
15285 event_id
15286 , ledger_id
15287 , sla_ledger_id
15288 , description_language
15289 , object_name
15290 , object_type_code
15291 , line_number
15292 , source_application_id
15293 , source_type_code
15294 , source_code
15295 , source_value
15296 , source_meaning
15297 , created_by
15298 , creation_date
15299 , last_update_date
15300 , last_updated_by
15301 , last_update_login
15302 , program_update_date
15303 , program_application_id
15304 , program_id
15305 , request_id
15306 )
15310 , p_sla_ledger_id
15307 SELECT
15308 event_id
15309 , p_target_ledger_id
15311 , p_language
15312 , object_name
15313 , object_type_code
15314 , line_number
15315 , source_application_id
15316 , source_type_code
15317 , source_code
15318 , SUBSTR(source_value ,1,1996)
15319 , SUBSTR(source_meaning ,1,200)
15320 , xla_environment_pkg.g_Usr_Id
15321 , TRUNC(SYSDATE)
15322 , TRUNC(SYSDATE)
15323 , xla_environment_pkg.g_Usr_Id
15324 , xla_environment_pkg.g_Login_Id
15325 , TRUNC(SYSDATE)
15326 , xla_environment_pkg.g_Prog_Appl_Id
15327 , xla_environment_pkg.g_Prog_Id
15328 , xla_environment_pkg.g_Req_Id
15329 FROM (
15330 SELECT xet.event_id event_id
15331 , 0 line_number
15332 , CASE r
15333 WHEN 1 THEN 'OKL_CMN_EXTRACT_HDR_V'
15334 WHEN 2 THEN 'OKL_CMN_EXTRACT_HDR_V'
15335 WHEN 3 THEN 'OKL_CMN_EXTRACT_HDR_V'
15336 WHEN 4 THEN 'OKL_CMN_EXTRACT_HDR_V'
15337 WHEN 5 THEN 'OKL_CMN_EXTRACT_HDR_V'
15338 WHEN 6 THEN 'OKL_CMN_EXTRACT_HDR_V'
15339 WHEN 7 THEN 'OKL_SHR_EXTRACT_HDR_V'
15340 WHEN 8 THEN 'OKL_CMN_EXTRACT_HDR_V'
15341 WHEN 9 THEN 'OKL_CMN_EXTRACT_HDR_V'
15342
15343 ELSE null
15344 END object_name
15345 , CASE r
15346 WHEN 1 THEN 'HEADER'
15347 WHEN 2 THEN 'HEADER'
15348 WHEN 3 THEN 'HEADER'
15349 WHEN 4 THEN 'HEADER'
15350 WHEN 5 THEN 'HEADER'
15351 WHEN 6 THEN 'HEADER'
15352 WHEN 7 THEN 'HEADER'
15353 WHEN 8 THEN 'HEADER'
15354 WHEN 9 THEN 'HEADER'
15355
15356 ELSE null
15357 END object_type_code
15358 , CASE r
15359 WHEN 1 THEN '540'
15360 WHEN 2 THEN '540'
15361 WHEN 3 THEN '540'
15362 WHEN 4 THEN '540'
15363 WHEN 5 THEN '540'
15364 WHEN 6 THEN '540'
15365 WHEN 7 THEN '540'
15366 WHEN 8 THEN '540'
15367 WHEN 9 THEN '540'
15368
15369 ELSE null
15370 END source_application_id
15371 , 'S' source_type_code
15372 , CASE r
15373 WHEN 1 THEN 'TEH_CONTRACT_NUMBER'
15374 WHEN 2 THEN 'TCN_CONTRACT_PRODUCT_NAME'
15375 WHEN 3 THEN 'TCN_CURRENCY_CODE'
15376 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE'
15377 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE'
15378 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE'
15379 WHEN 7 THEN 'TCN_ACCRUAL_REVERSAL_DATE'
15380 WHEN 8 THEN 'GL_DATE'
15381 WHEN 9 THEN 'TCN_ACCOUNTING_REVERSAL_FLAG'
15382
15383 ELSE null
15384 END source_code
15385 , CASE r
15386 WHEN 1 THEN TO_CHAR(h1.TEH_CONTRACT_NUMBER)
15387 WHEN 2 THEN TO_CHAR(h1.TCN_CONTRACT_PRODUCT_NAME)
15388 WHEN 3 THEN TO_CHAR(h1.TCN_CURRENCY_CODE)
15389 WHEN 4 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_DATE)
15390 WHEN 5 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_RATE)
15391 WHEN 6 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_TYPE)
15392 WHEN 7 THEN TO_CHAR(h3.TCN_ACCRUAL_REVERSAL_DATE)
15393 WHEN 8 THEN TO_CHAR(h1.GL_DATE)
15394 WHEN 9 THEN TO_CHAR(h1.TCN_ACCOUNTING_REVERSAL_FLAG)
15395
15396 ELSE null
15397 END source_value
15398 , null source_meaning
15399 FROM xla_events_gt xet
15400 , OKL_CMN_EXTRACT_HDR_V h1
15401 , OKL_SHR_EXTRACT_HDR_V h3
15402 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
15403 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
15404 AND xet.event_class_code = C_EVENT_CLASS_CODE
15405 AND h1.event_id = xet.event_id
15406 AND h3.tcn_id (+) = h1.tcn_id
15407 )
15408 ;
15409 --
15410 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
15411
15412 trace
15413 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
15414 ,p_level => C_LEVEL_STATEMENT
15415 ,p_module => l_log_module);
15416
15417 END IF;
15418 --
15419
15420
15421
15422 --
15423 INSERT INTO xla_diag_sources --line2
15424 (
15425 event_id
15426 , ledger_id
15427 , sla_ledger_id
15428 , description_language
15429 , object_name
15430 , object_type_code
15431 , line_number
15432 , source_application_id
15433 , source_type_code
15434 , source_code
15435 , source_value
15436 , source_meaning
15437 , created_by
15438 , creation_date
15439 , last_update_date
15440 , last_updated_by
15441 , last_update_login
15442 , program_update_date
15443 , program_application_id
15444 , program_id
15445 , request_id
15446 )
15447 SELECT event_id
15448 , p_target_ledger_id
15449 , p_sla_ledger_id
15450 , p_language
15451 , object_name
15452 , object_type_code
15453 , line_number
15457 , SUBSTR(source_value,1,1996)
15454 , source_application_id
15455 , source_type_code
15456 , source_code
15458 , SUBSTR(source_meaning ,1,200)
15459 , xla_environment_pkg.g_Usr_Id
15460 , TRUNC(SYSDATE)
15461 , TRUNC(SYSDATE)
15462 , xla_environment_pkg.g_Usr_Id
15463 , xla_environment_pkg.g_Login_Id
15464 , TRUNC(SYSDATE)
15465 , xla_environment_pkg.g_Prog_Appl_Id
15466 , xla_environment_pkg.g_Prog_Id
15467 , xla_environment_pkg.g_Req_Id
15468 FROM (
15469 SELECT xet.event_id event_id
15470 , l2.line_number line_number
15471 , CASE r
15472 WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V'
15473 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V'
15474 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V'
15475 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V'
15476 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V'
15477
15478 ELSE null
15479 END object_name
15480 , CASE r
15481 WHEN 1 THEN 'LINE'
15482 WHEN 2 THEN 'LINE'
15483 WHEN 3 THEN 'LINE'
15484 WHEN 4 THEN 'LINE'
15485 WHEN 5 THEN 'LINE'
15486
15487 ELSE null
15488 END object_type_code
15489 , CASE r
15490 WHEN 1 THEN '540'
15491 WHEN 2 THEN '540'
15492 WHEN 3 THEN '540'
15493 WHEN 4 THEN '540'
15494 WHEN 5 THEN '540'
15495
15496 ELSE null
15497 END source_application_id
15498 , 'S' source_type_code
15499 , CASE r
15500 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID'
15501 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE'
15502 WHEN 3 THEN 'DIST_ID'
15503 WHEN 4 THEN 'DIST_TYPE'
15504 WHEN 5 THEN 'DIST_ENTERED_AMOUNT'
15505
15506 ELSE null
15507 END source_code
15508 , CASE r
15509 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
15510 WHEN 2 THEN TO_CHAR(l2.DIST_AE_LINE_TYPE_CODE)
15511 WHEN 3 THEN TO_CHAR(l2.DIST_ID)
15512 WHEN 4 THEN TO_CHAR(l2.DIST_TYPE)
15513 WHEN 5 THEN TO_CHAR(l2.DIST_ENTERED_AMOUNT)
15514
15515 ELSE null
15516 END source_value
15517 , CASE r
15518 WHEN 2 THEN fvl6.meaning
15519
15520 ELSE null
15521 END source_meaning
15522 FROM xla_events_gt xet
15523 , OKL_CMN_EXTRACT_LINE_V l2
15524 , fnd_lookup_values fvl6
15525 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
15526 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
15527 AND xet.event_class_code = C_EVENT_CLASS_CODE
15528 AND l2.event_id = xet.event_id
15529 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
15530 AND fvl6.lookup_code(+) = l2.DIST_AE_LINE_TYPE_CODE
15531 AND fvl6.view_application_id(+) = 0
15532 AND fvl6.language(+) = USERENV('LANG')
15533
15534 )
15535 ;
15536 --
15537 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
15538
15539 trace
15540 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
15541 ,p_level => C_LEVEL_STATEMENT
15542 ,p_module => l_log_module);
15543
15544 END IF;
15545
15546
15547 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15548 trace
15549 (p_msg => 'END of insert_sources_32'
15550 ,p_level => C_LEVEL_PROCEDURE
15551 ,p_module => l_log_module);
15552 END IF;
15553 EXCEPTION
15554 WHEN xla_exceptions_pkg.application_exception THEN
15555 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
15556 trace
15557 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
15558 ,p_level => C_LEVEL_EXCEPTION
15559 ,p_module => l_log_module);
15560 END IF;
15561 RAISE;
15562 WHEN OTHERS THEN
15563 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
15564 trace
15565 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
15566 ,p_level => C_LEVEL_EXCEPTION
15567 ,p_module => l_log_module);
15568 END IF;
15569 xla_exceptions_pkg.raise_message
15570 (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_32');
15571 END insert_sources_32;
15572 --
15573
15574 ---------------------------------------
15575 --
15576 -- PRIVATE FUNCTION
15577 -- EventClass_32
15578 --
15579 ----------------------------------------
15580 --
15581 FUNCTION EventClass_32
15582 (p_application_id IN NUMBER
15583 ,p_base_ledger_id IN NUMBER
15584 ,p_target_ledger_id IN NUMBER
15585 ,p_language IN VARCHAR2
15586 ,p_currency_code IN VARCHAR2
15587 ,p_sla_ledger_id IN NUMBER
15588 ,p_pad_start_date IN DATE
15589 ,p_pad_end_date IN DATE
15590 ,p_primary_ledger_id IN NUMBER)
15591 RETURN BOOLEAN IS
15592 --
15593 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'ACCRUAL_ALL';
15594 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'ACCRUAL';
15595
15599 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
15596 l_calculate_acctd_flag VARCHAR2(1) :='Y';
15597 l_calculate_g_l_flag VARCHAR2(1) :='Y';
15598 --
15600 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
15601 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
15602 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
15603 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
15604 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
15605 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
15606 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
15607 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
15608 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
15609 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
15610 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
15611 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
15612 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
15613 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
15614 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
15615 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
15616 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
15617 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
15618 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
15619 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
15620 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
15621 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
15622 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
15623
15624 l_event_id NUMBER;
15625 l_previous_event_id NUMBER;
15626 l_first_event_id NUMBER;
15627 l_last_event_id NUMBER;
15628
15629 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
15630 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
15631 --
15632 --
15633 l_result BOOLEAN := TRUE;
15634 l_rows NUMBER := 1000;
15635 l_event_type_name VARCHAR2(80) := 'All';
15636 l_event_class_name VARCHAR2(80) := 'Accrual';
15637 l_description VARCHAR2(4000);
15638 l_transaction_reversal NUMBER;
15639 l_ae_header_id NUMBER;
15640 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
15641 l_log_module VARCHAR2(240);
15642 --
15643 l_acct_reversal_source VARCHAR2(30);
15644 l_trx_reversal_source VARCHAR2(30);
15645
15646 l_continue_with_lines BOOLEAN := TRUE;
15647 --
15648 l_acc_rev_gl_date_source DATE; -- 4262811
15649 --
15650 type t_array_event_id is table of number index by binary_integer;
15651
15652 l_rec_array_event t_rec_array_event;
15653 l_null_rec_array_event t_rec_array_event;
15654 l_array_ae_header_id xla_number_array_type;
15655 l_actual_flag VARCHAR2(1) := NULL;
15656 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
15657 l_balance_type_code VARCHAR2(1) :=NULL;
15658 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
15659
15660 --
15661 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
15662 --
15663
15664 TYPE t_array_source_1 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TEH_CONTRACT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
15665 TYPE t_array_source_2 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CONTRACT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
15666 TYPE t_array_source_10 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
15667 TYPE t_array_source_11 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
15668 TYPE t_array_source_12 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
15669 TYPE t_array_source_13 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
15670 TYPE t_array_source_14 IS TABLE OF OKL_SHR_EXTRACT_HDR_V.TCN_ACCRUAL_REVERSAL_DATE%TYPE INDEX BY BINARY_INTEGER;
15671 TYPE t_array_source_15 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
15672 TYPE t_array_source_16 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
15673
15674 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
15675 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
15676 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
15677 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
15678 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
15679
15680 l_array_source_1 t_array_source_1;
15681 l_array_source_2 t_array_source_2;
15682 l_array_source_10 t_array_source_10;
15683 l_array_source_11 t_array_source_11;
15684 l_array_source_12 t_array_source_12;
15685 l_array_source_13 t_array_source_13;
15686 l_array_source_14 t_array_source_14;
15687 l_array_source_15 t_array_source_15;
15688 l_array_source_16 t_array_source_16;
15689
15690 l_array_source_5 t_array_source_5;
15691 l_array_source_6 t_array_source_6;
15692 l_array_source_6_meaning t_array_lookup_meaning;
15693 l_array_source_7 t_array_source_7;
15694 l_array_source_8 t_array_source_8;
15698 CURSOR header_cur
15695 l_array_source_9 t_array_source_9;
15696
15697 --
15699 IS
15700 SELECT /*+ leading(xet) cardinality(xet,1) */
15701 -- Event Class Code: ACCRUAL
15702 xet.entity_id
15703 ,xet.legal_entity_id
15704 ,xet.entity_code
15705 ,xet.transaction_number
15706 ,xet.event_id
15707 ,xet.event_class_code
15708 ,xet.event_type_code
15709 ,xet.event_number
15710 ,xet.event_date
15711 ,xet.transaction_date
15712 ,xet.reference_num_1
15713 ,xet.reference_num_2
15714 ,xet.reference_num_3
15715 ,xet.reference_num_4
15716 ,xet.reference_char_1
15717 ,xet.reference_char_2
15718 ,xet.reference_char_3
15719 ,xet.reference_char_4
15720 ,xet.reference_date_1
15721 ,xet.reference_date_2
15722 ,xet.reference_date_3
15723 ,xet.reference_date_4
15724 ,xet.event_created_by
15725 ,xet.budgetary_control_flag
15726 , h1.TEH_CONTRACT_NUMBER source_1
15727 , h1.TCN_CONTRACT_PRODUCT_NAME source_2
15728 , h1.TCN_CURRENCY_CODE source_10
15729 , h1.TCN_CURR_CONVERSION_DATE source_11
15730 , h1.TCN_CURR_CONVERSION_RATE source_12
15731 , h1.TCN_CURR_CONVERSION_TYPE source_13
15732 , h3.TCN_ACCRUAL_REVERSAL_DATE source_14
15733 , h1.GL_DATE source_15
15734 , h1.TCN_ACCOUNTING_REVERSAL_FLAG source_16
15735 FROM xla_events_gt xet
15736 , OKL_CMN_EXTRACT_HDR_V h1
15737 , OKL_SHR_EXTRACT_HDR_V h3
15738 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
15739 and xet.event_class_code = C_EVENT_CLASS_CODE
15740 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
15741 AND h3.TCN_ID (+) = h1.TCN_ID
15742 ORDER BY event_id
15743 ;
15744
15745
15746 --
15747 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
15748 IS
15749 SELECT /*+ leading(xet) cardinality(xet,1) */
15750 -- Event Class Code: ACCRUAL
15751 xet.entity_id
15752 ,xet.legal_entity_id
15753 ,xet.entity_code
15754 ,xet.transaction_number
15755 ,xet.event_id
15756 ,xet.event_class_code
15757 ,xet.event_type_code
15758 ,xet.event_number
15759 ,xet.event_date
15760 ,xet.transaction_date
15761 ,xet.reference_num_1
15762 ,xet.reference_num_2
15763 ,xet.reference_num_3
15764 ,xet.reference_num_4
15765 ,xet.reference_char_1
15766 ,xet.reference_char_2
15767 ,xet.reference_char_3
15768 ,xet.reference_char_4
15769 ,xet.reference_date_1
15770 ,xet.reference_date_2
15771 ,xet.reference_date_3
15772 ,xet.reference_date_4
15773 ,xet.event_created_by
15774 ,xet.budgetary_control_flag
15775 , l2.LINE_NUMBER
15776 , l2.DIST_CODE_COMBINATION_ID source_5
15777 , l2.DIST_AE_LINE_TYPE_CODE source_6
15778 , fvl6.meaning source_6_meaning
15779 , l2.DIST_ID source_7
15780 , l2.DIST_TYPE source_8
15781 , l2.DIST_ENTERED_AMOUNT source_9
15782 FROM xla_events_gt xet
15783 , OKL_CMN_EXTRACT_LINE_V l2
15784 , fnd_lookup_values fvl6
15785 WHERE xet.event_id between x_first_event_id and x_last_event_id
15786 and xet.event_date between p_pad_start_date and p_pad_end_date
15787 and xet.event_class_code = C_EVENT_CLASS_CODE
15788 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
15789 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
15790 AND fvl6.lookup_code(+) = l2.DIST_AE_LINE_TYPE_CODE
15791 AND fvl6.view_application_id(+) = 0
15792 AND fvl6.language(+) = USERENV('LANG')
15793 ;
15794
15795 --
15796 BEGIN
15797 IF g_log_enabled THEN
15798 l_log_module := C_DEFAULT_MODULE||'.EventClass_32';
15799 END IF;
15800 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15801 trace
15802 (p_msg => 'BEGIN of EventClass_32'
15803 ,p_level => C_LEVEL_PROCEDURE
15804 ,p_module => l_log_module);
15805 END IF;
15806
15807 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
15808 trace
15809 (p_msg => 'p_application_id = '||p_application_id||
15810 ' - p_base_ledger_id = '||p_base_ledger_id||
15811 ' - p_target_ledger_id = '||p_target_ledger_id||
15812 ' - p_language = '||p_language||
15813 ' - p_currency_code = '||p_currency_code||
15814 ' - p_sla_ledger_id = '||p_sla_ledger_id
15815 ,p_level => C_LEVEL_STATEMENT
15816 ,p_module => l_log_module);
15817 END IF;
15818 --
15819 -- initialze arrays
15820 --
15821 g_array_event.DELETE;
15822 l_rec_array_event := l_null_rec_array_event;
15823 --
15824 --------------------------------------
15825 -- 4262811 Initialze MPA Line Number
15826 --------------------------------------
15827 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
15828
15829 --
15830
15831 --
15832 OPEN header_cur;
15833 --
15834 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
15835 trace
15836 (p_msg => 'SQL - FETCH header_cur'
15837 ,p_level => C_LEVEL_STATEMENT
15838 ,p_module => l_log_module);
15839 END IF;
15840 --
15841 LOOP
15842 FETCH header_cur BULK COLLECT INTO
15843 l_array_entity_id
15844 , l_array_legal_entity_id
15845 , l_array_entity_code
15846 , l_array_transaction_num
15847 , l_array_event_id
15848 , l_array_class_code
15849 , l_array_event_type
15850 , l_array_event_number
15851 , l_array_event_date
15852 , l_array_transaction_date
15853 , l_array_reference_num_1
15854 , l_array_reference_num_2
15855 , l_array_reference_num_3
15856 , l_array_reference_num_4
15860 , l_array_reference_char_4
15857 , l_array_reference_char_1
15858 , l_array_reference_char_2
15859 , l_array_reference_char_3
15861 , l_array_reference_date_1
15862 , l_array_reference_date_2
15863 , l_array_reference_date_3
15864 , l_array_reference_date_4
15865 , l_array_event_created_by
15866 , l_array_budgetary_control_flag
15867 , l_array_source_1
15868 , l_array_source_2
15869 , l_array_source_10
15870 , l_array_source_11
15871 , l_array_source_12
15872 , l_array_source_13
15873 , l_array_source_14
15874 , l_array_source_15
15875 , l_array_source_16
15876 LIMIT l_rows;
15877 --
15878 IF (C_LEVEL_EVENT >= g_log_level) THEN
15879 trace
15880 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
15881 ,p_level => C_LEVEL_EVENT
15882 ,p_module => l_log_module);
15883 END IF;
15884 --
15885 EXIT WHEN l_array_entity_id.COUNT = 0;
15886
15887 -- initialize arrays
15888 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
15889 XLA_AE_LINES_PKG.g_rec_lines := NULL;
15890
15891 --
15892 -- Bug 4458708
15893 --
15894 XLA_AE_LINES_PKG.g_LineNumber := 0;
15895
15896
15897 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
15898 g_last_hdr_idx := l_array_event_id.LAST;
15899 --
15900 -- loop for the headers. Each iteration is for each header extract row
15901 -- fetched in header cursor
15902 --
15903 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
15904
15905 --
15906 -- set event info as cache for other routines to refer event attributes
15907 --
15908 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
15909 (p_application_id => p_application_id
15910 ,p_primary_ledger_id => p_primary_ledger_id
15911 ,p_base_ledger_id => p_base_ledger_id
15912 ,p_target_ledger_id => p_target_ledger_id
15913 ,p_entity_id => l_array_entity_id(hdr_idx)
15914 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
15915 ,p_entity_code => l_array_entity_code(hdr_idx)
15916 ,p_transaction_num => l_array_transaction_num(hdr_idx)
15917 ,p_event_id => l_array_event_id(hdr_idx)
15918 ,p_event_class_code => l_array_class_code(hdr_idx)
15919 ,p_event_type_code => l_array_event_type(hdr_idx)
15920 ,p_event_number => l_array_event_number(hdr_idx)
15921 ,p_event_date => l_array_event_date(hdr_idx)
15922 ,p_transaction_date => l_array_transaction_date(hdr_idx)
15923 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
15924 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
15925 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
15926 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
15927 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
15928 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
15929 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
15930 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
15931 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
15932 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
15933 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
15934 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
15935 ,p_event_created_by => l_array_event_created_by(hdr_idx)
15936 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
15937
15938 --
15939 -- set the status of entry to C_VALID (0)
15940 --
15941 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
15942
15943 --
15944 -- initialize a row for ae header
15945 --
15946 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
15947
15948 l_event_id := l_array_event_id(hdr_idx);
15949
15950 --
15951 -- storing the hdr_idx for event. May be used by line cursor.
15952 --
15953 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
15954
15955 --
15956 -- store sources from header extract. This can be improved to
15957 -- store only those sources from header extract that may be used in lines
15958 --
15959
15960 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
15961 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
15962 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
15963 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
15964 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
15965 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
15966 g_array_event(l_event_id).array_value_date('source_14') := l_array_source_14(hdr_idx);
15967 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
15968 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
15969
15970 --
15971 -- initilaize the status of ae headers for diffrent balance types
15972 -- the status is initialised to C_NOT_CREATED (2)
15973 --
15974 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
15975 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
15976 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
15977
15978 --
15979 -- call api to validate and store accounting attributes for header
15980 --
15981
15982 ------------------------------------------------------------
15983 -- Accrual Reversal : to get date for Standard Source (NONE)
15987 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
15984 ------------------------------------------------------------
15985 l_acc_rev_gl_date_source := g_array_event(l_event_id).array_value_date('source_14');
15986
15988 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
15989 l_rec_acct_attrs.array_acct_attr_code(2) := 'TRX_ACCT_REVERSAL_OPTION';
15990 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_16');
15991
15992
15993 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
15994
15995 XLA_AE_HEADER_PKG.SetJeCategoryName;
15996
15997 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
15998 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
15999 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
16000 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
16001 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
16002
16003
16004 --
16005 xla_ae_header_pkg.SetHdrDescription(
16006 p_description => Description_1 (
16007 p_application_id => p_application_id
16008 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
16009 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
16010 )
16011 );
16012 --
16013
16014 -- No header level analytical criteria
16015
16016 --
16017 --accounting attribute enhancement, bug 3612931
16018 --
16019 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_16'), 1,30);
16020
16021 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
16022 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
16023
16024 xla_accounting_err_pkg.build_message
16025 (p_appli_s_name => 'XLA'
16026 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
16027 ,p_token_1 => 'ACCT_ATTR_NAME'
16028 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
16029 ,p_token_2 => 'PRODUCT_NAME'
16030 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
16031 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
16032 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
16033 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
16034
16035 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
16036 --
16037 -- following sets the accounting attributes needed to reverse
16038 -- accounting for a distributeion
16039 --
16040 xla_ae_lines_pkg.SetTrxReversalAttrs
16041 (p_event_id => l_event_id
16042 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
16043 ,p_trx_reversal_source => l_trx_reversal_source);
16044
16045 END IF;
16046
16047
16048 ----------------------------------------------------------------
16049 -- 4262811 - update the header statuses to invalid in need be
16050 ----------------------------------------------------------------
16051 --
16052 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
16053
16054
16055 --
16056 -- Generate the accrual reversal headers
16057 --
16058 IF NVL(l_trx_reversal_source, 'N') = 'N' THEN
16059
16060 IF l_acc_rev_gl_date_source IS NOT NULL THEN
16061
16062 -- indicate that the accrual entry has a reversal entry
16063 XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag(hdr_idx) := 'Y';
16064
16065 --
16066 -- initialize a row for ae header
16067 --
16068 g_last_hdr_idx := g_last_hdr_idx + 1;
16069 XLA_AE_HEADER_PKG.CopyHeaderInfo (p_parent_hdr_idx => hdr_idx,
16070 p_hdr_idx => g_last_hdr_idx) ;
16071 XLA_AE_HEADER_PKG.g_rec_header_new.array_header_num (g_last_hdr_idx) := 1;
16072 XLA_AE_HEADER_PKG.g_rec_header_new.array_parent_header_id(g_last_hdr_idx) :=
16073 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx);
16074
16075 --
16076 -- record the index for the reversal entry, it will be used by the journal
16077 -- line creation
16078 --
16079 g_array_event(l_event_id).array_value_num('acc_rev_header_index') := g_last_hdr_idx;
16080
16081 --
16082 -- Populate the GL Date and override the GL date defined in the
16083 -- SetHdrAcctAttrs if necessary
16084 --
16085
16086 ---------------------- NONE - Standard Source ----------------------
16087 IF l_acc_rev_gl_date_source < XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx) THEN
16088 xla_accounting_err_pkg.build_message
16089 (p_appli_s_name => 'XLA'
16090 ,p_msg_name => 'XLA_MA_INVALID_GL_DATE'
16091 ,p_token_1 => 'ACCRUAL_REVERSAL_DATE'
16092 ,p_value_1 => l_acc_rev_gl_date_source
16093 ,p_token_2 => 'ACCRUAL_GL_DATE' -- 4262811
16094 ,p_value_2 => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
16095 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
16096 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
16097 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
16098 );
16099 END IF;
16100 XLA_AE_HEADER_PKG.g_rec_header_new.array_acc_rev_gl_date_option(g_last_hdr_idx) := 'NONE';
16104 --
16101 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_last_hdr_idx) := trunc(l_acc_rev_gl_date_source);
16102
16103
16105 -- Update the header status
16106 --
16107 XLA_AE_JOURNAL_ENTRY_PKG.updateJournalEntryStatus (p_hdr_idx => g_last_hdr_idx);
16108
16109 END IF;
16110
16111 END IF;
16112
16113
16114 ----------------------------------------------------------------
16115
16116 --
16117 -- this ends the header loop iteration for one bulk fetch
16118 --
16119 END LOOP;
16120
16121 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
16122 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
16123
16124 --
16125 -- insert dummy rows into lines gt table that were created due to
16126 -- transaction reversals
16127 --
16128 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
16129 l_result := XLA_AE_LINES_PKG.InsertLines;
16130 END IF;
16131
16132 --
16133 -- reset the temp_line_num for each set of events fetched from header
16134 -- cursor rather than doing it for each new event in line cursor
16135 -- Bug 3939231
16136 --
16137 xla_ae_lines_pkg.g_temp_line_num := 0;
16138
16139
16140
16141 --
16142 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
16143 --
16144 --
16145 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
16146
16147 trace
16148 (p_msg => 'SQL - FETCH line_cur'
16149 ,p_level => C_LEVEL_STATEMENT
16150 ,p_module => l_log_module);
16151
16152 END IF;
16153 --
16154 --
16155 LOOP
16156 --
16157 FETCH line_cur BULK COLLECT INTO
16158 l_array_entity_id
16159 , l_array_legal_entity_id
16160 , l_array_entity_code
16161 , l_array_transaction_num
16162 , l_array_event_id
16163 , l_array_class_code
16164 , l_array_event_type
16165 , l_array_event_number
16166 , l_array_event_date
16167 , l_array_transaction_date
16168 , l_array_reference_num_1
16169 , l_array_reference_num_2
16170 , l_array_reference_num_3
16171 , l_array_reference_num_4
16172 , l_array_reference_char_1
16173 , l_array_reference_char_2
16174 , l_array_reference_char_3
16175 , l_array_reference_char_4
16176 , l_array_reference_date_1
16177 , l_array_reference_date_2
16178 , l_array_reference_date_3
16179 , l_array_reference_date_4
16180 , l_array_event_created_by
16181 , l_array_budgetary_control_flag
16182 , l_array_extract_line_num
16183 , l_array_source_5
16184 , l_array_source_6
16185 , l_array_source_6_meaning
16186 , l_array_source_7
16187 , l_array_source_8
16188 , l_array_source_9
16189 LIMIT l_rows;
16190
16191 --
16192 IF (C_LEVEL_EVENT >= g_log_level) THEN
16193 trace
16194 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
16195 ,p_level => C_LEVEL_EVENT
16196 ,p_module => l_log_module);
16197 END IF;
16198 --
16199 EXIT WHEN l_array_entity_id.count = 0;
16200
16201 XLA_AE_LINES_PKG.g_rec_lines := null;
16202
16203 --
16204 -- Bug 4458708
16205 --
16206 XLA_AE_LINES_PKG.g_LineNumber := 0;
16207 --
16208 --
16209
16210 FOR Idx IN 1..l_array_event_id.count LOOP
16211 --
16212 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
16213 --
16214 l_event_id := l_array_event_id(idx); -- 5648433
16215
16216 --
16217 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
16218 --
16219
16220 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
16221 (g_array_event(l_event_id).array_value_num('header_index'))
16222 ,'N'
16223 ) <> 'Y'
16224 THEN
16225 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
16226 trace
16227 (p_msg => 'Trancaction revesal option is not Y '
16228 ,p_level => C_LEVEL_STATEMENT
16229 ,p_module => l_log_module);
16230 END IF;
16231
16232 --
16233 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
16234 --
16235 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
16236 --
16237 -- set event info as cache for other routines to refer event attributes
16238 --
16239
16240 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
16241 l_previous_event_id := l_event_id;
16242
16243 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
16244 (p_application_id => p_application_id
16245 ,p_primary_ledger_id => p_primary_ledger_id
16246 ,p_base_ledger_id => p_base_ledger_id
16247 ,p_target_ledger_id => p_target_ledger_id
16248 ,p_entity_id => l_array_entity_id(Idx)
16249 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
16250 ,p_entity_code => l_array_entity_code(Idx)
16251 ,p_transaction_num => l_array_transaction_num(Idx)
16252 ,p_event_id => l_array_event_id(Idx)
16253 ,p_event_class_code => l_array_class_code(Idx)
16254 ,p_event_type_code => l_array_event_type(Idx)
16255 ,p_event_number => l_array_event_number(Idx)
16256 ,p_event_date => l_array_event_date(Idx)
16257 ,p_transaction_date => l_array_transaction_date(Idx)
16258 ,p_reference_num_1 => l_array_reference_num_1(Idx)
16259 ,p_reference_num_2 => l_array_reference_num_2(Idx)
16263 ,p_reference_char_2 => l_array_reference_char_2(Idx)
16260 ,p_reference_num_3 => l_array_reference_num_3(Idx)
16261 ,p_reference_num_4 => l_array_reference_num_4(Idx)
16262 ,p_reference_char_1 => l_array_reference_char_1(Idx)
16264 ,p_reference_char_3 => l_array_reference_char_3(Idx)
16265 ,p_reference_char_4 => l_array_reference_char_4(Idx)
16266 ,p_reference_date_1 => l_array_reference_date_1(Idx)
16267 ,p_reference_date_2 => l_array_reference_date_2(Idx)
16268 ,p_reference_date_3 => l_array_reference_date_3(Idx)
16269 ,p_reference_date_4 => l_array_reference_date_4(Idx)
16270 ,p_event_created_by => l_array_event_created_by(Idx)
16271 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
16272 --
16273 END IF;
16274
16275
16276
16277 --
16278 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
16279
16280 l_acct_reversal_source := SUBSTR(NULL, 1,30);
16281
16282 IF l_continue_with_lines THEN
16283 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
16284 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
16285
16286 xla_accounting_err_pkg.build_message
16287 (p_appli_s_name => 'XLA'
16288 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
16289 ,p_token_1 => 'LINE_NUMBER'
16290 ,p_value_1 => l_array_extract_line_num(Idx)
16291 ,p_token_2 => 'PRODUCT_NAME'
16292 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
16293 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
16294 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
16295 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
16296
16297 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
16298 --
16299 -- following sets the accounting attributes needed to reverse
16300 -- accounting for a distributeion
16301 --
16302
16303 --
16304 -- 5217187
16305 --
16306 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
16307 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
16308 g_array_event(l_event_id).array_value_num('header_index'));
16309 --
16310 --
16311
16312 -- No reversal code generated
16313
16314 xla_ae_lines_pkg.SetAcctReversalAttrs
16315 (p_event_id => l_event_id
16316 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
16317 ,p_calculate_acctd_flag => l_calculate_acctd_flag
16318 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
16319 END IF;
16320
16321 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
16322 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
16323
16324 --
16325 AcctLineType_4 (
16326 p_application_id => p_application_id
16327 ,p_event_id => l_event_id
16328 ,p_calculate_acctd_flag => l_calculate_acctd_flag
16329 ,p_calculate_g_l_flag => l_calculate_g_l_flag
16330 ,p_actual_flag => l_actual_flag
16331 ,p_balance_type_code => l_balance_type_code
16332 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
16333
16334 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
16335 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
16336 , p_source_5 => l_array_source_5(Idx)
16337 , p_source_6 => l_array_source_6(Idx)
16338 , p_source_6_meaning => l_array_source_6_meaning(Idx)
16339 , p_source_7 => l_array_source_7(Idx)
16340 , p_source_8 => l_array_source_8(Idx)
16341 , p_source_9 => l_array_source_9(Idx)
16342 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
16343 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
16344 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
16345 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
16346 );
16347 If(l_balance_type_code = 'A') THEN
16348 l_actual_gain_loss_ref := l_gain_or_loss_ref;
16349 END IF;
16350
16351 --
16352
16353
16354 --
16355 AcctLineType_5 (
16356 p_application_id => p_application_id
16357 ,p_event_id => l_event_id
16358 ,p_calculate_acctd_flag => l_calculate_acctd_flag
16359 ,p_calculate_g_l_flag => l_calculate_g_l_flag
16360 ,p_actual_flag => l_actual_flag
16361 ,p_balance_type_code => l_balance_type_code
16362 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
16363
16364 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
16365 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
16366 , p_source_5 => l_array_source_5(Idx)
16367 , p_source_6 => l_array_source_6(Idx)
16368 , p_source_6_meaning => l_array_source_6_meaning(Idx)
16369 , p_source_7 => l_array_source_7(Idx)
16370 , p_source_8 => l_array_source_8(Idx)
16371 , p_source_9 => l_array_source_9(Idx)
16372 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
16373 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
16374 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
16375 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
16376 );
16377 If(l_balance_type_code = 'A') THEN
16378 l_actual_gain_loss_ref := l_gain_or_loss_ref;
16379 END IF;
16380
16381 --
16382
16383 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
16384 -- or secondary ledger that has different currency with primary
16385 -- or alc that is calculated by sla
16389 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
16386 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
16387 (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'))
16388
16390 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
16391 AND (l_actual_flag = 'A')) THEN
16392 XLA_AE_LINES_PKG.CreateGainOrLossLines(
16393 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
16394 ,p_application_id => p_application_id
16395 ,p_amb_context_code => 'DEFAULT'
16396 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
16397 ,p_event_class_code => C_EVENT_CLASS_CODE
16398 ,p_event_type_code => C_EVENT_TYPE_CODE
16399
16400 ,p_gain_ccid => -1
16401 ,p_loss_ccid => -1
16402
16403 ,p_actual_flag => l_actual_flag
16404 ,p_enc_flag => null
16405 ,p_actual_g_l_ref => l_actual_gain_loss_ref
16406 ,p_enc_g_l_ref => null
16407 );
16408 END IF;
16409 END IF;
16410 END IF;
16411
16412 ELSE
16413 --
16414 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
16415 --
16416 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
16417 trace
16418 (p_msg => 'Trancaction revesal option is Y'
16419 ,p_level => C_LEVEL_STATEMENT
16420 ,p_module => l_log_module);
16421 END IF;
16422 END IF;
16423
16424 END LOOP;
16425 l_result := XLA_AE_LINES_PKG.InsertLines ;
16426 end loop;
16427 close line_cur;
16428
16429
16430 --
16431 -- insert headers into xla_ae_headers_gt table
16432 --
16433 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
16434
16435 -- insert into errors table here.
16436
16437 END LOOP;
16438
16439 --
16440 -- 4865292
16441 --
16442 -- Compare g_hdr_extract_count with event count in
16443 -- CreateHeadersAndLines.
16444 --
16445 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
16446
16447 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
16448 trace (p_msg => '# rows extracted from header extract objects '
16449 || ' (running total): '
16450 || g_hdr_extract_count
16451 ,p_level => C_LEVEL_STATEMENT
16452 ,p_module => l_log_module);
16453 END IF;
16454
16455 CLOSE header_cur;
16456 --
16457
16458 --
16459 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16460 trace
16461 (p_msg => 'END of EventClass_32'
16462 ,p_level => C_LEVEL_PROCEDURE
16463 ,p_module => l_log_module);
16464 END IF;
16465 --
16466 RETURN l_result;
16467 EXCEPTION
16468 WHEN xla_exceptions_pkg.application_exception THEN
16469
16470 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
16471
16472
16473 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
16474
16475 RAISE;
16476 WHEN OTHERS THEN
16477 xla_exceptions_pkg.raise_message
16478 (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_32');
16479 END EventClass_32;
16480 --
16481
16482 ---------------------------------------
16483 --
16484 -- PRIVATE PROCEDURE
16485 -- insert_sources_33
16486 --
16487 ----------------------------------------
16488 --
16489 PROCEDURE insert_sources_33(
16490 p_target_ledger_id IN NUMBER
16491 , p_language IN VARCHAR2
16492 , p_sla_ledger_id IN NUMBER
16493 , p_pad_start_date IN DATE
16494 , p_pad_end_date IN DATE
16495 )
16496 IS
16497
16498 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'ASSET_DISPOSITION_ALL';
16499 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'ASSET_DISPOSITION';
16500 p_apps_owner VARCHAR2(30);
16501 l_log_module VARCHAR2(240);
16502 BEGIN
16503 IF g_log_enabled THEN
16504 l_log_module := C_DEFAULT_MODULE||'.insert_sources_33';
16505 END IF;
16506 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16507
16508 trace
16509 (p_msg => 'BEGIN of insert_sources_33'
16510 ,p_level => C_LEVEL_PROCEDURE
16511 ,p_module => l_log_module);
16512
16513 END IF;
16514
16515 -- select APPS owner
16516 SELECT oracle_username
16517 INTO p_apps_owner
16518 FROM fnd_oracle_userid
16519 WHERE read_only_flag = 'U'
16520 ;
16521
16522 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
16523 trace
16524 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
16525 ' - p_language = '||p_language||
16526 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
16527 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
16528 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
16529 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
16530 ,p_level => C_LEVEL_STATEMENT
16531 ,p_module => l_log_module);
16532 END IF;
16533
16534
16535 --
16536 INSERT INTO xla_diag_sources --hdr2
16537 (
16538 event_id
16539 , ledger_id
16540 , sla_ledger_id
16541 , description_language
16542 , object_name
16543 , object_type_code
16544 , line_number
16548 , source_value
16545 , source_application_id
16546 , source_type_code
16547 , source_code
16549 , source_meaning
16550 , created_by
16551 , creation_date
16552 , last_update_date
16553 , last_updated_by
16554 , last_update_login
16555 , program_update_date
16556 , program_application_id
16557 , program_id
16558 , request_id
16559 )
16560 SELECT
16561 event_id
16562 , p_target_ledger_id
16563 , p_sla_ledger_id
16564 , p_language
16565 , object_name
16566 , object_type_code
16567 , line_number
16568 , source_application_id
16569 , source_type_code
16570 , source_code
16571 , SUBSTR(source_value ,1,1996)
16572 , SUBSTR(source_meaning ,1,200)
16573 , xla_environment_pkg.g_Usr_Id
16574 , TRUNC(SYSDATE)
16575 , TRUNC(SYSDATE)
16576 , xla_environment_pkg.g_Usr_Id
16577 , xla_environment_pkg.g_Login_Id
16578 , TRUNC(SYSDATE)
16579 , xla_environment_pkg.g_Prog_Appl_Id
16580 , xla_environment_pkg.g_Prog_Id
16581 , xla_environment_pkg.g_Req_Id
16582 FROM (
16583 SELECT xet.event_id event_id
16584 , 0 line_number
16585 , CASE r
16586 WHEN 1 THEN 'OKL_CMN_EXTRACT_HDR_V'
16587 WHEN 2 THEN 'OKL_CMN_EXTRACT_HDR_V'
16588 WHEN 3 THEN 'OKL_CMN_EXTRACT_HDR_V'
16589 WHEN 4 THEN 'OKL_CMN_EXTRACT_HDR_V'
16590 WHEN 5 THEN 'OKL_CMN_EXTRACT_HDR_V'
16591 WHEN 6 THEN 'OKL_CMN_EXTRACT_HDR_V'
16592 WHEN 7 THEN 'OKL_CMN_EXTRACT_HDR_V'
16593 WHEN 8 THEN 'OKL_CMN_EXTRACT_HDR_V'
16594
16595 ELSE null
16596 END object_name
16597 , CASE r
16598 WHEN 1 THEN 'HEADER'
16599 WHEN 2 THEN 'HEADER'
16600 WHEN 3 THEN 'HEADER'
16601 WHEN 4 THEN 'HEADER'
16602 WHEN 5 THEN 'HEADER'
16603 WHEN 6 THEN 'HEADER'
16604 WHEN 7 THEN 'HEADER'
16605 WHEN 8 THEN 'HEADER'
16606
16607 ELSE null
16608 END object_type_code
16609 , CASE r
16610 WHEN 1 THEN '540'
16611 WHEN 2 THEN '540'
16612 WHEN 3 THEN '540'
16613 WHEN 4 THEN '540'
16614 WHEN 5 THEN '540'
16615 WHEN 6 THEN '540'
16616 WHEN 7 THEN '540'
16617 WHEN 8 THEN '540'
16618
16619 ELSE null
16620 END source_application_id
16621 , 'S' source_type_code
16622 , CASE r
16623 WHEN 1 THEN 'TEH_CONTRACT_NUMBER'
16624 WHEN 2 THEN 'TCN_CONTRACT_PRODUCT_NAME'
16625 WHEN 3 THEN 'TCN_CURRENCY_CODE'
16626 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE'
16627 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE'
16628 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE'
16629 WHEN 7 THEN 'GL_DATE'
16630 WHEN 8 THEN 'TCN_ACCOUNTING_REVERSAL_FLAG'
16631
16632 ELSE null
16633 END source_code
16634 , CASE r
16635 WHEN 1 THEN TO_CHAR(h1.TEH_CONTRACT_NUMBER)
16636 WHEN 2 THEN TO_CHAR(h1.TCN_CONTRACT_PRODUCT_NAME)
16637 WHEN 3 THEN TO_CHAR(h1.TCN_CURRENCY_CODE)
16638 WHEN 4 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_DATE)
16639 WHEN 5 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_RATE)
16640 WHEN 6 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_TYPE)
16641 WHEN 7 THEN TO_CHAR(h1.GL_DATE)
16642 WHEN 8 THEN TO_CHAR(h1.TCN_ACCOUNTING_REVERSAL_FLAG)
16643
16644 ELSE null
16645 END source_value
16646 , null source_meaning
16647 FROM xla_events_gt xet
16648 , OKL_CMN_EXTRACT_HDR_V h1
16649 ,(select rownum r from all_objects where rownum <= 8 and owner = p_apps_owner)
16650 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
16651 AND xet.event_class_code = C_EVENT_CLASS_CODE
16652 AND h1.event_id = xet.event_id
16653
16654 )
16655 ;
16656 --
16657 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
16658
16659 trace
16660 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
16661 ,p_level => C_LEVEL_STATEMENT
16662 ,p_module => l_log_module);
16663
16664 END IF;
16665 --
16666
16667
16668
16669 --
16670 INSERT INTO xla_diag_sources --line2
16671 (
16672 event_id
16673 , ledger_id
16674 , sla_ledger_id
16675 , description_language
16676 , object_name
16677 , object_type_code
16678 , line_number
16679 , source_application_id
16680 , source_type_code
16681 , source_code
16682 , source_value
16683 , source_meaning
16684 , created_by
16685 , creation_date
16686 , last_update_date
16687 , last_updated_by
16688 , last_update_login
16689 , program_update_date
16690 , program_application_id
16691 , program_id
16692 , request_id
16693 )
16694 SELECT event_id
16695 , p_target_ledger_id
16699 , object_type_code
16696 , p_sla_ledger_id
16697 , p_language
16698 , object_name
16700 , line_number
16701 , source_application_id
16702 , source_type_code
16703 , source_code
16704 , SUBSTR(source_value,1,1996)
16705 , SUBSTR(source_meaning ,1,200)
16706 , xla_environment_pkg.g_Usr_Id
16707 , TRUNC(SYSDATE)
16708 , TRUNC(SYSDATE)
16709 , xla_environment_pkg.g_Usr_Id
16710 , xla_environment_pkg.g_Login_Id
16711 , TRUNC(SYSDATE)
16712 , xla_environment_pkg.g_Prog_Appl_Id
16713 , xla_environment_pkg.g_Prog_Id
16714 , xla_environment_pkg.g_Req_Id
16715 FROM (
16716 SELECT xet.event_id event_id
16717 , l2.line_number line_number
16718 , CASE r
16719 WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V'
16720 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V'
16721 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V'
16722 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V'
16723 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V'
16724
16725 ELSE null
16726 END object_name
16727 , CASE r
16728 WHEN 1 THEN 'LINE'
16729 WHEN 2 THEN 'LINE'
16730 WHEN 3 THEN 'LINE'
16731 WHEN 4 THEN 'LINE'
16732 WHEN 5 THEN 'LINE'
16733
16734 ELSE null
16735 END object_type_code
16736 , CASE r
16737 WHEN 1 THEN '540'
16738 WHEN 2 THEN '540'
16739 WHEN 3 THEN '540'
16740 WHEN 4 THEN '540'
16741 WHEN 5 THEN '540'
16742
16743 ELSE null
16744 END source_application_id
16745 , 'S' source_type_code
16746 , CASE r
16747 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID'
16748 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE'
16749 WHEN 3 THEN 'DIST_ID'
16750 WHEN 4 THEN 'DIST_TYPE'
16751 WHEN 5 THEN 'DIST_ENTERED_AMOUNT'
16752
16753 ELSE null
16754 END source_code
16755 , CASE r
16756 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
16757 WHEN 2 THEN TO_CHAR(l2.DIST_AE_LINE_TYPE_CODE)
16758 WHEN 3 THEN TO_CHAR(l2.DIST_ID)
16759 WHEN 4 THEN TO_CHAR(l2.DIST_TYPE)
16760 WHEN 5 THEN TO_CHAR(l2.DIST_ENTERED_AMOUNT)
16761
16762 ELSE null
16763 END source_value
16764 , CASE r
16765 WHEN 2 THEN fvl6.meaning
16766
16767 ELSE null
16768 END source_meaning
16769 FROM xla_events_gt xet
16770 , OKL_CMN_EXTRACT_LINE_V l2
16771 , fnd_lookup_values fvl6
16772 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
16773 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
16774 AND xet.event_class_code = C_EVENT_CLASS_CODE
16775 AND l2.event_id = xet.event_id
16776 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
16777 AND fvl6.lookup_code(+) = l2.DIST_AE_LINE_TYPE_CODE
16778 AND fvl6.view_application_id(+) = 0
16779 AND fvl6.language(+) = USERENV('LANG')
16780
16781 )
16782 ;
16783 --
16784 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
16785
16786 trace
16787 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
16788 ,p_level => C_LEVEL_STATEMENT
16789 ,p_module => l_log_module);
16790
16791 END IF;
16792
16793
16794 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16795 trace
16796 (p_msg => 'END of insert_sources_33'
16797 ,p_level => C_LEVEL_PROCEDURE
16798 ,p_module => l_log_module);
16799 END IF;
16800 EXCEPTION
16801 WHEN xla_exceptions_pkg.application_exception THEN
16802 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
16803 trace
16804 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
16805 ,p_level => C_LEVEL_EXCEPTION
16806 ,p_module => l_log_module);
16807 END IF;
16808 RAISE;
16809 WHEN OTHERS THEN
16810 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
16811 trace
16812 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
16813 ,p_level => C_LEVEL_EXCEPTION
16814 ,p_module => l_log_module);
16815 END IF;
16816 xla_exceptions_pkg.raise_message
16817 (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_33');
16818 END insert_sources_33;
16819 --
16820
16821 ---------------------------------------
16822 --
16823 -- PRIVATE FUNCTION
16824 -- EventClass_33
16825 --
16826 ----------------------------------------
16827 --
16828 FUNCTION EventClass_33
16829 (p_application_id IN NUMBER
16830 ,p_base_ledger_id IN NUMBER
16831 ,p_target_ledger_id IN NUMBER
16832 ,p_language IN VARCHAR2
16833 ,p_currency_code IN VARCHAR2
16834 ,p_sla_ledger_id IN NUMBER
16835 ,p_pad_start_date IN DATE
16836 ,p_pad_end_date IN DATE
16837 ,p_primary_ledger_id IN NUMBER)
16838 RETURN BOOLEAN IS
16839 --
16843 l_calculate_acctd_flag VARCHAR2(1) :='Y';
16840 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'ASSET_DISPOSITION_ALL';
16841 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'ASSET_DISPOSITION';
16842
16844 l_calculate_g_l_flag VARCHAR2(1) :='Y';
16845 --
16846 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
16847 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
16848 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
16849 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
16850 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
16851 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
16852 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
16853 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
16854 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
16855 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
16856 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
16857 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
16858 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
16859 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
16860 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
16861 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
16862 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
16863 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
16864 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
16865 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
16866 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
16867 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
16868 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
16869 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
16870
16871 l_event_id NUMBER;
16872 l_previous_event_id NUMBER;
16873 l_first_event_id NUMBER;
16874 l_last_event_id NUMBER;
16875
16876 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
16877 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
16878 --
16879 --
16880 l_result BOOLEAN := TRUE;
16881 l_rows NUMBER := 1000;
16882 l_event_type_name VARCHAR2(80) := 'All';
16883 l_event_class_name VARCHAR2(80) := 'Asset Disposition';
16884 l_description VARCHAR2(4000);
16885 l_transaction_reversal NUMBER;
16886 l_ae_header_id NUMBER;
16887 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
16888 l_log_module VARCHAR2(240);
16889 --
16890 l_acct_reversal_source VARCHAR2(30);
16891 l_trx_reversal_source VARCHAR2(30);
16892
16893 l_continue_with_lines BOOLEAN := TRUE;
16894 --
16895 l_acc_rev_gl_date_source DATE; -- 4262811
16896 --
16897 type t_array_event_id is table of number index by binary_integer;
16898
16899 l_rec_array_event t_rec_array_event;
16900 l_null_rec_array_event t_rec_array_event;
16901 l_array_ae_header_id xla_number_array_type;
16902 l_actual_flag VARCHAR2(1) := NULL;
16903 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
16904 l_balance_type_code VARCHAR2(1) :=NULL;
16905 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
16906
16907 --
16908 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
16909 --
16910
16911 TYPE t_array_source_1 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TEH_CONTRACT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
16912 TYPE t_array_source_2 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CONTRACT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
16913 TYPE t_array_source_10 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
16914 TYPE t_array_source_11 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
16915 TYPE t_array_source_12 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
16916 TYPE t_array_source_13 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
16917 TYPE t_array_source_15 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
16918 TYPE t_array_source_16 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
16919
16920 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
16921 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
16922 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
16923 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
16924 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
16925
16926 l_array_source_1 t_array_source_1;
16927 l_array_source_2 t_array_source_2;
16928 l_array_source_10 t_array_source_10;
16929 l_array_source_11 t_array_source_11;
16930 l_array_source_12 t_array_source_12;
16931 l_array_source_13 t_array_source_13;
16932 l_array_source_15 t_array_source_15;
16933 l_array_source_16 t_array_source_16;
16934
16935 l_array_source_5 t_array_source_5;
16936 l_array_source_6 t_array_source_6;
16937 l_array_source_6_meaning t_array_lookup_meaning;
16938 l_array_source_7 t_array_source_7;
16939 l_array_source_8 t_array_source_8;
16943 CURSOR header_cur
16940 l_array_source_9 t_array_source_9;
16941
16942 --
16944 IS
16945 SELECT /*+ leading(xet) cardinality(xet,1) */
16946 -- Event Class Code: ASSET_DISPOSITION
16947 xet.entity_id
16948 ,xet.legal_entity_id
16949 ,xet.entity_code
16950 ,xet.transaction_number
16951 ,xet.event_id
16952 ,xet.event_class_code
16953 ,xet.event_type_code
16954 ,xet.event_number
16955 ,xet.event_date
16956 ,xet.transaction_date
16957 ,xet.reference_num_1
16958 ,xet.reference_num_2
16959 ,xet.reference_num_3
16960 ,xet.reference_num_4
16961 ,xet.reference_char_1
16962 ,xet.reference_char_2
16963 ,xet.reference_char_3
16964 ,xet.reference_char_4
16965 ,xet.reference_date_1
16966 ,xet.reference_date_2
16967 ,xet.reference_date_3
16968 ,xet.reference_date_4
16969 ,xet.event_created_by
16970 ,xet.budgetary_control_flag
16971 , h1.TEH_CONTRACT_NUMBER source_1
16972 , h1.TCN_CONTRACT_PRODUCT_NAME source_2
16973 , h1.TCN_CURRENCY_CODE source_10
16974 , h1.TCN_CURR_CONVERSION_DATE source_11
16975 , h1.TCN_CURR_CONVERSION_RATE source_12
16976 , h1.TCN_CURR_CONVERSION_TYPE source_13
16977 , h1.GL_DATE source_15
16978 , h1.TCN_ACCOUNTING_REVERSAL_FLAG source_16
16979 FROM xla_events_gt xet
16980 , OKL_CMN_EXTRACT_HDR_V h1
16981 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
16982 and xet.event_class_code = C_EVENT_CLASS_CODE
16983 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
16984
16985 ORDER BY event_id
16986 ;
16987
16988
16989 --
16990 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
16991 IS
16992 SELECT /*+ leading(xet) cardinality(xet,1) */
16993 -- Event Class Code: ASSET_DISPOSITION
16994 xet.entity_id
16995 ,xet.legal_entity_id
16996 ,xet.entity_code
16997 ,xet.transaction_number
16998 ,xet.event_id
16999 ,xet.event_class_code
17000 ,xet.event_type_code
17001 ,xet.event_number
17002 ,xet.event_date
17003 ,xet.transaction_date
17004 ,xet.reference_num_1
17005 ,xet.reference_num_2
17006 ,xet.reference_num_3
17007 ,xet.reference_num_4
17008 ,xet.reference_char_1
17009 ,xet.reference_char_2
17010 ,xet.reference_char_3
17011 ,xet.reference_char_4
17012 ,xet.reference_date_1
17013 ,xet.reference_date_2
17014 ,xet.reference_date_3
17015 ,xet.reference_date_4
17016 ,xet.event_created_by
17017 ,xet.budgetary_control_flag
17018 , l2.LINE_NUMBER
17019 , l2.DIST_CODE_COMBINATION_ID source_5
17020 , l2.DIST_AE_LINE_TYPE_CODE source_6
17021 , fvl6.meaning source_6_meaning
17022 , l2.DIST_ID source_7
17023 , l2.DIST_TYPE source_8
17024 , l2.DIST_ENTERED_AMOUNT source_9
17025 FROM xla_events_gt xet
17026 , OKL_CMN_EXTRACT_LINE_V l2
17027 , fnd_lookup_values fvl6
17028 WHERE xet.event_id between x_first_event_id and x_last_event_id
17029 and xet.event_date between p_pad_start_date and p_pad_end_date
17030 and xet.event_class_code = C_EVENT_CLASS_CODE
17031 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
17032 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
17033 AND fvl6.lookup_code(+) = l2.DIST_AE_LINE_TYPE_CODE
17034 AND fvl6.view_application_id(+) = 0
17035 AND fvl6.language(+) = USERENV('LANG')
17036 ;
17037
17038 --
17039 BEGIN
17040 IF g_log_enabled THEN
17041 l_log_module := C_DEFAULT_MODULE||'.EventClass_33';
17042 END IF;
17043 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17044 trace
17045 (p_msg => 'BEGIN of EventClass_33'
17046 ,p_level => C_LEVEL_PROCEDURE
17047 ,p_module => l_log_module);
17048 END IF;
17049
17050 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
17051 trace
17052 (p_msg => 'p_application_id = '||p_application_id||
17053 ' - p_base_ledger_id = '||p_base_ledger_id||
17054 ' - p_target_ledger_id = '||p_target_ledger_id||
17055 ' - p_language = '||p_language||
17056 ' - p_currency_code = '||p_currency_code||
17057 ' - p_sla_ledger_id = '||p_sla_ledger_id
17058 ,p_level => C_LEVEL_STATEMENT
17059 ,p_module => l_log_module);
17060 END IF;
17061 --
17062 -- initialze arrays
17063 --
17064 g_array_event.DELETE;
17065 l_rec_array_event := l_null_rec_array_event;
17066 --
17067 --------------------------------------
17068 -- 4262811 Initialze MPA Line Number
17069 --------------------------------------
17070 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
17071
17072 --
17073
17074 --
17075 OPEN header_cur;
17076 --
17077 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
17078 trace
17079 (p_msg => 'SQL - FETCH header_cur'
17080 ,p_level => C_LEVEL_STATEMENT
17081 ,p_module => l_log_module);
17082 END IF;
17083 --
17084 LOOP
17085 FETCH header_cur BULK COLLECT INTO
17086 l_array_entity_id
17087 , l_array_legal_entity_id
17088 , l_array_entity_code
17089 , l_array_transaction_num
17090 , l_array_event_id
17091 , l_array_class_code
17092 , l_array_event_type
17093 , l_array_event_number
17094 , l_array_event_date
17095 , l_array_transaction_date
17096 , l_array_reference_num_1
17097 , l_array_reference_num_2
17098 , l_array_reference_num_3
17099 , l_array_reference_num_4
17100 , l_array_reference_char_1
17101 , l_array_reference_char_2
17102 , l_array_reference_char_3
17106 , l_array_reference_date_3
17103 , l_array_reference_char_4
17104 , l_array_reference_date_1
17105 , l_array_reference_date_2
17107 , l_array_reference_date_4
17108 , l_array_event_created_by
17109 , l_array_budgetary_control_flag
17110 , l_array_source_1
17111 , l_array_source_2
17112 , l_array_source_10
17113 , l_array_source_11
17114 , l_array_source_12
17115 , l_array_source_13
17116 , l_array_source_15
17117 , l_array_source_16
17118 LIMIT l_rows;
17119 --
17120 IF (C_LEVEL_EVENT >= g_log_level) THEN
17121 trace
17122 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
17123 ,p_level => C_LEVEL_EVENT
17124 ,p_module => l_log_module);
17125 END IF;
17126 --
17127 EXIT WHEN l_array_entity_id.COUNT = 0;
17128
17129 -- initialize arrays
17130 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
17131 XLA_AE_LINES_PKG.g_rec_lines := NULL;
17132
17133 --
17134 -- Bug 4458708
17135 --
17136 XLA_AE_LINES_PKG.g_LineNumber := 0;
17137
17138
17139 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
17140 g_last_hdr_idx := l_array_event_id.LAST;
17141 --
17142 -- loop for the headers. Each iteration is for each header extract row
17143 -- fetched in header cursor
17144 --
17145 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
17146
17147 --
17148 -- set event info as cache for other routines to refer event attributes
17149 --
17150 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
17151 (p_application_id => p_application_id
17152 ,p_primary_ledger_id => p_primary_ledger_id
17153 ,p_base_ledger_id => p_base_ledger_id
17154 ,p_target_ledger_id => p_target_ledger_id
17155 ,p_entity_id => l_array_entity_id(hdr_idx)
17156 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
17157 ,p_entity_code => l_array_entity_code(hdr_idx)
17158 ,p_transaction_num => l_array_transaction_num(hdr_idx)
17159 ,p_event_id => l_array_event_id(hdr_idx)
17160 ,p_event_class_code => l_array_class_code(hdr_idx)
17161 ,p_event_type_code => l_array_event_type(hdr_idx)
17162 ,p_event_number => l_array_event_number(hdr_idx)
17163 ,p_event_date => l_array_event_date(hdr_idx)
17164 ,p_transaction_date => l_array_transaction_date(hdr_idx)
17165 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
17166 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
17167 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
17168 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
17169 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
17170 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
17171 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
17172 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
17173 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
17174 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
17175 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
17176 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
17177 ,p_event_created_by => l_array_event_created_by(hdr_idx)
17178 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
17179
17180 --
17181 -- set the status of entry to C_VALID (0)
17182 --
17183 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
17184
17185 --
17186 -- initialize a row for ae header
17187 --
17188 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
17189
17190 l_event_id := l_array_event_id(hdr_idx);
17191
17192 --
17193 -- storing the hdr_idx for event. May be used by line cursor.
17194 --
17195 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
17196
17197 --
17198 -- store sources from header extract. This can be improved to
17199 -- store only those sources from header extract that may be used in lines
17200 --
17201
17202 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
17203 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
17204 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
17205 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
17206 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
17207 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
17208 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
17209 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
17210
17211 --
17212 -- initilaize the status of ae headers for diffrent balance types
17213 -- the status is initialised to C_NOT_CREATED (2)
17214 --
17215 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
17216 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
17217 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
17218
17219 --
17220 -- call api to validate and store accounting attributes for header
17221 --
17222
17223 ------------------------------------------------------------
17224 -- Accrual Reversal : to get date for Standard Source (NONE)
17225 ------------------------------------------------------------
17226 l_acc_rev_gl_date_source := NULL;
17227
17228 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
17232
17229 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
17230 l_rec_acct_attrs.array_acct_attr_code(2) := 'TRX_ACCT_REVERSAL_OPTION';
17231 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_16');
17233
17234 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
17235
17236 XLA_AE_HEADER_PKG.SetJeCategoryName;
17237
17238 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
17239 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
17240 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
17241 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
17242 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
17243
17244
17245 --
17246 xla_ae_header_pkg.SetHdrDescription(
17247 p_description => Description_1 (
17248 p_application_id => p_application_id
17249 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
17250 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
17251 )
17252 );
17253 --
17254
17255 -- No header level analytical criteria
17256
17257 --
17258 --accounting attribute enhancement, bug 3612931
17259 --
17260 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_16'), 1,30);
17261
17262 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
17263 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
17264
17265 xla_accounting_err_pkg.build_message
17266 (p_appli_s_name => 'XLA'
17267 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
17268 ,p_token_1 => 'ACCT_ATTR_NAME'
17269 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
17270 ,p_token_2 => 'PRODUCT_NAME'
17271 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
17272 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
17273 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
17274 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
17275
17276 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
17277 --
17278 -- following sets the accounting attributes needed to reverse
17279 -- accounting for a distributeion
17280 --
17281 xla_ae_lines_pkg.SetTrxReversalAttrs
17282 (p_event_id => l_event_id
17283 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
17284 ,p_trx_reversal_source => l_trx_reversal_source);
17285
17286 END IF;
17287
17288
17289 ----------------------------------------------------------------
17290 -- 4262811 - update the header statuses to invalid in need be
17291 ----------------------------------------------------------------
17292 --
17293 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
17294
17295
17296 -----------------------------------------------
17297 -- No accrual reversal for the event class/type
17298 -----------------------------------------------
17299 ----------------------------------------------------------------
17300
17301 --
17302 -- this ends the header loop iteration for one bulk fetch
17303 --
17304 END LOOP;
17305
17306 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
17307 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
17308
17309 --
17310 -- insert dummy rows into lines gt table that were created due to
17311 -- transaction reversals
17312 --
17313 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
17314 l_result := XLA_AE_LINES_PKG.InsertLines;
17315 END IF;
17316
17317 --
17318 -- reset the temp_line_num for each set of events fetched from header
17319 -- cursor rather than doing it for each new event in line cursor
17320 -- Bug 3939231
17321 --
17322 xla_ae_lines_pkg.g_temp_line_num := 0;
17323
17324
17325
17326 --
17327 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
17328 --
17329 --
17330 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
17331
17332 trace
17333 (p_msg => 'SQL - FETCH line_cur'
17334 ,p_level => C_LEVEL_STATEMENT
17335 ,p_module => l_log_module);
17336
17337 END IF;
17338 --
17339 --
17340 LOOP
17341 --
17342 FETCH line_cur BULK COLLECT INTO
17343 l_array_entity_id
17344 , l_array_legal_entity_id
17345 , l_array_entity_code
17346 , l_array_transaction_num
17347 , l_array_event_id
17348 , l_array_class_code
17349 , l_array_event_type
17350 , l_array_event_number
17351 , l_array_event_date
17352 , l_array_transaction_date
17353 , l_array_reference_num_1
17354 , l_array_reference_num_2
17355 , l_array_reference_num_3
17356 , l_array_reference_num_4
17357 , l_array_reference_char_1
17358 , l_array_reference_char_2
17359 , l_array_reference_char_3
17360 , l_array_reference_char_4
17361 , l_array_reference_date_1
17362 , l_array_reference_date_2
17363 , l_array_reference_date_3
17364 , l_array_reference_date_4
17365 , l_array_event_created_by
17366 , l_array_budgetary_control_flag
17367 , l_array_extract_line_num
17368 , l_array_source_5
17369 , l_array_source_6
17370 , l_array_source_6_meaning
17371 , l_array_source_7
17372 , l_array_source_8
17376 --
17373 , l_array_source_9
17374 LIMIT l_rows;
17375
17377 IF (C_LEVEL_EVENT >= g_log_level) THEN
17378 trace
17379 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
17380 ,p_level => C_LEVEL_EVENT
17381 ,p_module => l_log_module);
17382 END IF;
17383 --
17384 EXIT WHEN l_array_entity_id.count = 0;
17385
17386 XLA_AE_LINES_PKG.g_rec_lines := null;
17387
17388 --
17389 -- Bug 4458708
17390 --
17391 XLA_AE_LINES_PKG.g_LineNumber := 0;
17392 --
17393 --
17394
17395 FOR Idx IN 1..l_array_event_id.count LOOP
17396 --
17397 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
17398 --
17399 l_event_id := l_array_event_id(idx); -- 5648433
17400
17401 --
17402 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
17403 --
17404
17405 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
17406 (g_array_event(l_event_id).array_value_num('header_index'))
17407 ,'N'
17408 ) <> 'Y'
17409 THEN
17410 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
17411 trace
17412 (p_msg => 'Trancaction revesal option is not Y '
17413 ,p_level => C_LEVEL_STATEMENT
17414 ,p_module => l_log_module);
17415 END IF;
17416
17417 --
17418 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
17419 --
17420 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
17421 --
17422 -- set event info as cache for other routines to refer event attributes
17423 --
17424
17425 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
17426 l_previous_event_id := l_event_id;
17427
17428 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
17429 (p_application_id => p_application_id
17430 ,p_primary_ledger_id => p_primary_ledger_id
17431 ,p_base_ledger_id => p_base_ledger_id
17432 ,p_target_ledger_id => p_target_ledger_id
17433 ,p_entity_id => l_array_entity_id(Idx)
17434 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
17435 ,p_entity_code => l_array_entity_code(Idx)
17436 ,p_transaction_num => l_array_transaction_num(Idx)
17437 ,p_event_id => l_array_event_id(Idx)
17438 ,p_event_class_code => l_array_class_code(Idx)
17439 ,p_event_type_code => l_array_event_type(Idx)
17440 ,p_event_number => l_array_event_number(Idx)
17441 ,p_event_date => l_array_event_date(Idx)
17442 ,p_transaction_date => l_array_transaction_date(Idx)
17443 ,p_reference_num_1 => l_array_reference_num_1(Idx)
17444 ,p_reference_num_2 => l_array_reference_num_2(Idx)
17445 ,p_reference_num_3 => l_array_reference_num_3(Idx)
17446 ,p_reference_num_4 => l_array_reference_num_4(Idx)
17447 ,p_reference_char_1 => l_array_reference_char_1(Idx)
17448 ,p_reference_char_2 => l_array_reference_char_2(Idx)
17449 ,p_reference_char_3 => l_array_reference_char_3(Idx)
17450 ,p_reference_char_4 => l_array_reference_char_4(Idx)
17451 ,p_reference_date_1 => l_array_reference_date_1(Idx)
17452 ,p_reference_date_2 => l_array_reference_date_2(Idx)
17453 ,p_reference_date_3 => l_array_reference_date_3(Idx)
17454 ,p_reference_date_4 => l_array_reference_date_4(Idx)
17455 ,p_event_created_by => l_array_event_created_by(Idx)
17456 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
17457 --
17458 END IF;
17459
17460
17461
17462 --
17463 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
17464
17465 l_acct_reversal_source := SUBSTR(NULL, 1,30);
17466
17467 IF l_continue_with_lines THEN
17468 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
17469 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
17470
17471 xla_accounting_err_pkg.build_message
17472 (p_appli_s_name => 'XLA'
17473 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
17474 ,p_token_1 => 'LINE_NUMBER'
17475 ,p_value_1 => l_array_extract_line_num(Idx)
17476 ,p_token_2 => 'PRODUCT_NAME'
17477 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
17478 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
17479 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
17480 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
17481
17482 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
17483 --
17484 -- following sets the accounting attributes needed to reverse
17485 -- accounting for a distributeion
17486 --
17487
17488 --
17489 -- 5217187
17490 --
17491 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
17492 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
17493 g_array_event(l_event_id).array_value_num('header_index'));
17494 --
17495 --
17496
17497 -- No reversal code generated
17498
17499 xla_ae_lines_pkg.SetAcctReversalAttrs
17500 (p_event_id => l_event_id
17501 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
17502 ,p_calculate_acctd_flag => l_calculate_acctd_flag
17503 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
17507 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
17504 END IF;
17505
17506 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
17508
17509 --
17510 AcctLineType_6 (
17511 p_application_id => p_application_id
17512 ,p_event_id => l_event_id
17513 ,p_calculate_acctd_flag => l_calculate_acctd_flag
17514 ,p_calculate_g_l_flag => l_calculate_g_l_flag
17515 ,p_actual_flag => l_actual_flag
17516 ,p_balance_type_code => l_balance_type_code
17517 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
17518
17519 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
17520 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
17521 , p_source_5 => l_array_source_5(Idx)
17522 , p_source_6 => l_array_source_6(Idx)
17523 , p_source_6_meaning => l_array_source_6_meaning(Idx)
17524 , p_source_7 => l_array_source_7(Idx)
17525 , p_source_8 => l_array_source_8(Idx)
17526 , p_source_9 => l_array_source_9(Idx)
17527 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
17528 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
17529 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
17530 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
17531 );
17532 If(l_balance_type_code = 'A') THEN
17533 l_actual_gain_loss_ref := l_gain_or_loss_ref;
17534 END IF;
17535
17536 --
17537
17538
17539 --
17540 AcctLineType_7 (
17541 p_application_id => p_application_id
17542 ,p_event_id => l_event_id
17543 ,p_calculate_acctd_flag => l_calculate_acctd_flag
17544 ,p_calculate_g_l_flag => l_calculate_g_l_flag
17545 ,p_actual_flag => l_actual_flag
17546 ,p_balance_type_code => l_balance_type_code
17547 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
17548
17549 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
17550 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
17551 , p_source_5 => l_array_source_5(Idx)
17552 , p_source_6 => l_array_source_6(Idx)
17553 , p_source_6_meaning => l_array_source_6_meaning(Idx)
17554 , p_source_7 => l_array_source_7(Idx)
17555 , p_source_8 => l_array_source_8(Idx)
17556 , p_source_9 => l_array_source_9(Idx)
17557 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
17558 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
17559 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
17560 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
17561 );
17562 If(l_balance_type_code = 'A') THEN
17563 l_actual_gain_loss_ref := l_gain_or_loss_ref;
17564 END IF;
17565
17566 --
17567
17568 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
17569 -- or secondary ledger that has different currency with primary
17570 -- or alc that is calculated by sla
17571 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
17572 (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'))
17573
17574 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
17575 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
17576 AND (l_actual_flag = 'A')) THEN
17577 XLA_AE_LINES_PKG.CreateGainOrLossLines(
17578 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
17579 ,p_application_id => p_application_id
17580 ,p_amb_context_code => 'DEFAULT'
17581 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
17582 ,p_event_class_code => C_EVENT_CLASS_CODE
17583 ,p_event_type_code => C_EVENT_TYPE_CODE
17584
17585 ,p_gain_ccid => -1
17586 ,p_loss_ccid => -1
17587
17588 ,p_actual_flag => l_actual_flag
17589 ,p_enc_flag => null
17590 ,p_actual_g_l_ref => l_actual_gain_loss_ref
17591 ,p_enc_g_l_ref => null
17592 );
17593 END IF;
17594 END IF;
17595 END IF;
17596
17597 ELSE
17598 --
17599 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
17600 --
17601 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
17602 trace
17603 (p_msg => 'Trancaction revesal option is Y'
17604 ,p_level => C_LEVEL_STATEMENT
17605 ,p_module => l_log_module);
17606 END IF;
17607 END IF;
17608
17609 END LOOP;
17610 l_result := XLA_AE_LINES_PKG.InsertLines ;
17611 end loop;
17612 close line_cur;
17613
17614
17615 --
17616 -- insert headers into xla_ae_headers_gt table
17617 --
17618 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
17619
17620 -- insert into errors table here.
17621
17622 END LOOP;
17623
17624 --
17625 -- 4865292
17626 --
17627 -- Compare g_hdr_extract_count with event count in
17628 -- CreateHeadersAndLines.
17629 --
17630 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
17631
17632 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
17633 trace (p_msg => '# rows extracted from header extract objects '
17634 || ' (running total): '
17635 || g_hdr_extract_count
17636 ,p_level => C_LEVEL_STATEMENT
17637 ,p_module => l_log_module);
17638 END IF;
17639
17640 CLOSE header_cur;
17641 --
17642
17643 --
17644 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17645 trace
17646 (p_msg => 'END of EventClass_33'
17647 ,p_level => C_LEVEL_PROCEDURE
17651 RETURN l_result;
17648 ,p_module => l_log_module);
17649 END IF;
17650 --
17652 EXCEPTION
17653 WHEN xla_exceptions_pkg.application_exception THEN
17654
17655 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
17656
17657
17658 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
17659
17660 RAISE;
17661 WHEN OTHERS THEN
17662 xla_exceptions_pkg.raise_message
17663 (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_33');
17664 END EventClass_33;
17665 --
17666
17667 ---------------------------------------
17668 --
17669 -- PRIVATE PROCEDURE
17670 -- insert_sources_34
17671 --
17672 ----------------------------------------
17673 --
17674 PROCEDURE insert_sources_34(
17675 p_target_ledger_id IN NUMBER
17676 , p_language IN VARCHAR2
17677 , p_sla_ledger_id IN NUMBER
17678 , p_pad_start_date IN DATE
17679 , p_pad_end_date IN DATE
17680 )
17681 IS
17682
17683 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'BOOKING_ALL';
17684 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'BOOKING';
17685 p_apps_owner VARCHAR2(30);
17686 l_log_module VARCHAR2(240);
17687 BEGIN
17688 IF g_log_enabled THEN
17689 l_log_module := C_DEFAULT_MODULE||'.insert_sources_34';
17690 END IF;
17691 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17692
17693 trace
17694 (p_msg => 'BEGIN of insert_sources_34'
17695 ,p_level => C_LEVEL_PROCEDURE
17696 ,p_module => l_log_module);
17697
17698 END IF;
17699
17700 -- select APPS owner
17701 SELECT oracle_username
17702 INTO p_apps_owner
17703 FROM fnd_oracle_userid
17704 WHERE read_only_flag = 'U'
17705 ;
17706
17707 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
17708 trace
17709 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
17710 ' - p_language = '||p_language||
17711 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
17712 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
17713 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
17714 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
17715 ,p_level => C_LEVEL_STATEMENT
17716 ,p_module => l_log_module);
17717 END IF;
17718
17719
17720 --
17721 INSERT INTO xla_diag_sources --hdr2
17722 (
17723 event_id
17724 , ledger_id
17725 , sla_ledger_id
17726 , description_language
17727 , object_name
17728 , object_type_code
17729 , line_number
17730 , source_application_id
17731 , source_type_code
17732 , source_code
17733 , source_value
17734 , source_meaning
17735 , created_by
17736 , creation_date
17737 , last_update_date
17738 , last_updated_by
17739 , last_update_login
17740 , program_update_date
17741 , program_application_id
17742 , program_id
17743 , request_id
17744 )
17745 SELECT
17746 event_id
17747 , p_target_ledger_id
17748 , p_sla_ledger_id
17749 , p_language
17750 , object_name
17751 , object_type_code
17752 , line_number
17753 , source_application_id
17754 , source_type_code
17755 , source_code
17756 , SUBSTR(source_value ,1,1996)
17757 , SUBSTR(source_meaning ,1,200)
17758 , xla_environment_pkg.g_Usr_Id
17759 , TRUNC(SYSDATE)
17760 , TRUNC(SYSDATE)
17761 , xla_environment_pkg.g_Usr_Id
17762 , xla_environment_pkg.g_Login_Id
17763 , TRUNC(SYSDATE)
17764 , xla_environment_pkg.g_Prog_Appl_Id
17765 , xla_environment_pkg.g_Prog_Id
17766 , xla_environment_pkg.g_Req_Id
17767 FROM (
17768 SELECT xet.event_id event_id
17769 , 0 line_number
17770 , CASE r
17771 WHEN 1 THEN 'OKL_CMN_EXTRACT_HDR_V'
17772 WHEN 2 THEN 'OKL_CMN_EXTRACT_HDR_V'
17773 WHEN 3 THEN 'OKL_CMN_EXTRACT_HDR_V'
17774 WHEN 4 THEN 'OKL_CMN_EXTRACT_HDR_V'
17775 WHEN 5 THEN 'OKL_CMN_EXTRACT_HDR_V'
17776 WHEN 6 THEN 'OKL_CMN_EXTRACT_HDR_V'
17777 WHEN 7 THEN 'OKL_CMN_EXTRACT_HDR_V'
17778 WHEN 8 THEN 'OKL_CMN_EXTRACT_HDR_V'
17779
17780 ELSE null
17781 END object_name
17782 , CASE r
17783 WHEN 1 THEN 'HEADER'
17784 WHEN 2 THEN 'HEADER'
17785 WHEN 3 THEN 'HEADER'
17786 WHEN 4 THEN 'HEADER'
17787 WHEN 5 THEN 'HEADER'
17788 WHEN 6 THEN 'HEADER'
17789 WHEN 7 THEN 'HEADER'
17790 WHEN 8 THEN 'HEADER'
17791
17792 ELSE null
17793 END object_type_code
17794 , CASE r
17795 WHEN 1 THEN '540'
17796 WHEN 2 THEN '540'
17797 WHEN 3 THEN '540'
17798 WHEN 4 THEN '540'
17799 WHEN 5 THEN '540'
17800 WHEN 6 THEN '540'
17801 WHEN 7 THEN '540'
17802 WHEN 8 THEN '540'
17803
17804 ELSE null
17805 END source_application_id
17809 WHEN 2 THEN 'TCN_CONTRACT_PRODUCT_NAME'
17806 , 'S' source_type_code
17807 , CASE r
17808 WHEN 1 THEN 'TEH_CONTRACT_NUMBER'
17810 WHEN 3 THEN 'TCN_CURRENCY_CODE'
17811 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE'
17812 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE'
17813 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE'
17814 WHEN 7 THEN 'GL_DATE'
17815 WHEN 8 THEN 'TCN_ACCOUNTING_REVERSAL_FLAG'
17816
17817 ELSE null
17818 END source_code
17819 , CASE r
17820 WHEN 1 THEN TO_CHAR(h1.TEH_CONTRACT_NUMBER)
17821 WHEN 2 THEN TO_CHAR(h1.TCN_CONTRACT_PRODUCT_NAME)
17822 WHEN 3 THEN TO_CHAR(h1.TCN_CURRENCY_CODE)
17823 WHEN 4 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_DATE)
17824 WHEN 5 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_RATE)
17825 WHEN 6 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_TYPE)
17826 WHEN 7 THEN TO_CHAR(h1.GL_DATE)
17827 WHEN 8 THEN TO_CHAR(h1.TCN_ACCOUNTING_REVERSAL_FLAG)
17828
17829 ELSE null
17830 END source_value
17831 , null source_meaning
17832 FROM xla_events_gt xet
17833 , OKL_CMN_EXTRACT_HDR_V h1
17834 ,(select rownum r from all_objects where rownum <= 8 and owner = p_apps_owner)
17835 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
17836 AND xet.event_class_code = C_EVENT_CLASS_CODE
17837 AND h1.event_id = xet.event_id
17838
17839 )
17840 ;
17841 --
17842 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
17843
17844 trace
17845 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
17846 ,p_level => C_LEVEL_STATEMENT
17847 ,p_module => l_log_module);
17848
17849 END IF;
17850 --
17851
17852
17853
17854 --
17855 INSERT INTO xla_diag_sources --line2
17856 (
17857 event_id
17858 , ledger_id
17859 , sla_ledger_id
17860 , description_language
17861 , object_name
17862 , object_type_code
17863 , line_number
17864 , source_application_id
17865 , source_type_code
17866 , source_code
17867 , source_value
17868 , source_meaning
17869 , created_by
17870 , creation_date
17871 , last_update_date
17872 , last_updated_by
17873 , last_update_login
17874 , program_update_date
17875 , program_application_id
17876 , program_id
17877 , request_id
17878 )
17879 SELECT event_id
17880 , p_target_ledger_id
17881 , p_sla_ledger_id
17882 , p_language
17883 , object_name
17884 , object_type_code
17885 , line_number
17886 , source_application_id
17887 , source_type_code
17888 , source_code
17889 , SUBSTR(source_value,1,1996)
17890 , SUBSTR(source_meaning ,1,200)
17891 , xla_environment_pkg.g_Usr_Id
17892 , TRUNC(SYSDATE)
17893 , TRUNC(SYSDATE)
17894 , xla_environment_pkg.g_Usr_Id
17895 , xla_environment_pkg.g_Login_Id
17896 , TRUNC(SYSDATE)
17897 , xla_environment_pkg.g_Prog_Appl_Id
17898 , xla_environment_pkg.g_Prog_Id
17899 , xla_environment_pkg.g_Req_Id
17900 FROM (
17901 SELECT xet.event_id event_id
17902 , l2.line_number line_number
17903 , CASE r
17904 WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V'
17905 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V'
17906 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V'
17907 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V'
17908 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V'
17909
17910 ELSE null
17911 END object_name
17912 , CASE r
17913 WHEN 1 THEN 'LINE'
17914 WHEN 2 THEN 'LINE'
17915 WHEN 3 THEN 'LINE'
17916 WHEN 4 THEN 'LINE'
17917 WHEN 5 THEN 'LINE'
17918
17919 ELSE null
17920 END object_type_code
17921 , CASE r
17922 WHEN 1 THEN '540'
17923 WHEN 2 THEN '540'
17924 WHEN 3 THEN '540'
17925 WHEN 4 THEN '540'
17926 WHEN 5 THEN '540'
17927
17928 ELSE null
17929 END source_application_id
17930 , 'S' source_type_code
17931 , CASE r
17932 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID'
17933 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE'
17934 WHEN 3 THEN 'DIST_ID'
17935 WHEN 4 THEN 'DIST_TYPE'
17936 WHEN 5 THEN 'DIST_ENTERED_AMOUNT'
17937
17938 ELSE null
17939 END source_code
17940 , CASE r
17941 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
17942 WHEN 2 THEN TO_CHAR(l2.DIST_AE_LINE_TYPE_CODE)
17943 WHEN 3 THEN TO_CHAR(l2.DIST_ID)
17944 WHEN 4 THEN TO_CHAR(l2.DIST_TYPE)
17945 WHEN 5 THEN TO_CHAR(l2.DIST_ENTERED_AMOUNT)
17946
17947 ELSE null
17948 END source_value
17949 , CASE r
17950 WHEN 2 THEN fvl6.meaning
17954 FROM xla_events_gt xet
17951
17952 ELSE null
17953 END source_meaning
17955 , OKL_CMN_EXTRACT_LINE_V l2
17956 , fnd_lookup_values fvl6
17957 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
17958 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
17959 AND xet.event_class_code = C_EVENT_CLASS_CODE
17960 AND l2.event_id = xet.event_id
17961 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
17962 AND fvl6.lookup_code(+) = l2.DIST_AE_LINE_TYPE_CODE
17963 AND fvl6.view_application_id(+) = 0
17964 AND fvl6.language(+) = USERENV('LANG')
17965
17966 )
17967 ;
17968 --
17969 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
17970
17971 trace
17972 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
17973 ,p_level => C_LEVEL_STATEMENT
17974 ,p_module => l_log_module);
17975
17976 END IF;
17977
17978
17979 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17980 trace
17981 (p_msg => 'END of insert_sources_34'
17982 ,p_level => C_LEVEL_PROCEDURE
17983 ,p_module => l_log_module);
17984 END IF;
17985 EXCEPTION
17986 WHEN xla_exceptions_pkg.application_exception THEN
17987 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
17988 trace
17989 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
17990 ,p_level => C_LEVEL_EXCEPTION
17991 ,p_module => l_log_module);
17992 END IF;
17993 RAISE;
17994 WHEN OTHERS THEN
17995 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
17996 trace
17997 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
17998 ,p_level => C_LEVEL_EXCEPTION
17999 ,p_module => l_log_module);
18000 END IF;
18001 xla_exceptions_pkg.raise_message
18002 (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_34');
18003 END insert_sources_34;
18004 --
18005
18006 ---------------------------------------
18007 --
18008 -- PRIVATE FUNCTION
18009 -- EventClass_34
18010 --
18011 ----------------------------------------
18012 --
18013 FUNCTION EventClass_34
18014 (p_application_id IN NUMBER
18015 ,p_base_ledger_id IN NUMBER
18016 ,p_target_ledger_id IN NUMBER
18017 ,p_language IN VARCHAR2
18018 ,p_currency_code IN VARCHAR2
18019 ,p_sla_ledger_id IN NUMBER
18020 ,p_pad_start_date IN DATE
18021 ,p_pad_end_date IN DATE
18022 ,p_primary_ledger_id IN NUMBER)
18023 RETURN BOOLEAN IS
18024 --
18025 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'BOOKING_ALL';
18026 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'BOOKING';
18027
18028 l_calculate_acctd_flag VARCHAR2(1) :='Y';
18029 l_calculate_g_l_flag VARCHAR2(1) :='Y';
18030 --
18031 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
18032 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
18033 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
18034 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
18035 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
18036 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
18037 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
18038 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
18039 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
18040 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
18041 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
18042 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
18043 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
18044 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
18045 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
18046 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
18047 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
18048 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
18049 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
18050 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
18051 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
18052 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
18053 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
18054 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
18055
18056 l_event_id NUMBER;
18057 l_previous_event_id NUMBER;
18058 l_first_event_id NUMBER;
18059 l_last_event_id NUMBER;
18060
18061 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
18062 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
18063 --
18064 --
18065 l_result BOOLEAN := TRUE;
18066 l_rows NUMBER := 1000;
18067 l_event_type_name VARCHAR2(80) := 'All';
18068 l_event_class_name VARCHAR2(80) := 'Booking';
18069 l_description VARCHAR2(4000);
18070 l_transaction_reversal NUMBER;
18071 l_ae_header_id NUMBER;
18072 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
18073 l_log_module VARCHAR2(240);
18074 --
18078 l_continue_with_lines BOOLEAN := TRUE;
18075 l_acct_reversal_source VARCHAR2(30);
18076 l_trx_reversal_source VARCHAR2(30);
18077
18079 --
18080 l_acc_rev_gl_date_source DATE; -- 4262811
18081 --
18082 type t_array_event_id is table of number index by binary_integer;
18083
18084 l_rec_array_event t_rec_array_event;
18085 l_null_rec_array_event t_rec_array_event;
18086 l_array_ae_header_id xla_number_array_type;
18087 l_actual_flag VARCHAR2(1) := NULL;
18088 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
18089 l_balance_type_code VARCHAR2(1) :=NULL;
18090 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
18091
18092 --
18093 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
18094 --
18095
18096 TYPE t_array_source_1 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TEH_CONTRACT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
18097 TYPE t_array_source_2 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CONTRACT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
18098 TYPE t_array_source_10 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
18099 TYPE t_array_source_11 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
18100 TYPE t_array_source_12 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
18101 TYPE t_array_source_13 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
18102 TYPE t_array_source_15 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
18103 TYPE t_array_source_16 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
18104
18105 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
18106 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
18107 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
18108 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
18109 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
18110
18111 l_array_source_1 t_array_source_1;
18112 l_array_source_2 t_array_source_2;
18113 l_array_source_10 t_array_source_10;
18114 l_array_source_11 t_array_source_11;
18115 l_array_source_12 t_array_source_12;
18116 l_array_source_13 t_array_source_13;
18117 l_array_source_15 t_array_source_15;
18118 l_array_source_16 t_array_source_16;
18119
18120 l_array_source_5 t_array_source_5;
18121 l_array_source_6 t_array_source_6;
18122 l_array_source_6_meaning t_array_lookup_meaning;
18123 l_array_source_7 t_array_source_7;
18124 l_array_source_8 t_array_source_8;
18125 l_array_source_9 t_array_source_9;
18126
18127 --
18128 CURSOR header_cur
18129 IS
18130 SELECT /*+ leading(xet) cardinality(xet,1) */
18131 -- Event Class Code: BOOKING
18132 xet.entity_id
18133 ,xet.legal_entity_id
18134 ,xet.entity_code
18135 ,xet.transaction_number
18136 ,xet.event_id
18137 ,xet.event_class_code
18138 ,xet.event_type_code
18139 ,xet.event_number
18140 ,xet.event_date
18141 ,xet.transaction_date
18142 ,xet.reference_num_1
18143 ,xet.reference_num_2
18144 ,xet.reference_num_3
18145 ,xet.reference_num_4
18146 ,xet.reference_char_1
18147 ,xet.reference_char_2
18148 ,xet.reference_char_3
18149 ,xet.reference_char_4
18150 ,xet.reference_date_1
18151 ,xet.reference_date_2
18152 ,xet.reference_date_3
18153 ,xet.reference_date_4
18154 ,xet.event_created_by
18155 ,xet.budgetary_control_flag
18156 , h1.TEH_CONTRACT_NUMBER source_1
18157 , h1.TCN_CONTRACT_PRODUCT_NAME source_2
18158 , h1.TCN_CURRENCY_CODE source_10
18159 , h1.TCN_CURR_CONVERSION_DATE source_11
18160 , h1.TCN_CURR_CONVERSION_RATE source_12
18161 , h1.TCN_CURR_CONVERSION_TYPE source_13
18162 , h1.GL_DATE source_15
18163 , h1.TCN_ACCOUNTING_REVERSAL_FLAG source_16
18164 FROM xla_events_gt xet
18165 , OKL_CMN_EXTRACT_HDR_V h1
18166 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
18167 and xet.event_class_code = C_EVENT_CLASS_CODE
18168 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
18169
18170 ORDER BY event_id
18171 ;
18172
18173
18174 --
18175 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
18176 IS
18177 SELECT /*+ leading(xet) cardinality(xet,1) */
18178 -- Event Class Code: BOOKING
18179 xet.entity_id
18180 ,xet.legal_entity_id
18181 ,xet.entity_code
18182 ,xet.transaction_number
18183 ,xet.event_id
18184 ,xet.event_class_code
18185 ,xet.event_type_code
18186 ,xet.event_number
18187 ,xet.event_date
18188 ,xet.transaction_date
18189 ,xet.reference_num_1
18190 ,xet.reference_num_2
18191 ,xet.reference_num_3
18192 ,xet.reference_num_4
18193 ,xet.reference_char_1
18194 ,xet.reference_char_2
18195 ,xet.reference_char_3
18196 ,xet.reference_char_4
18197 ,xet.reference_date_1
18198 ,xet.reference_date_2
18199 ,xet.reference_date_3
18200 ,xet.reference_date_4
18201 ,xet.event_created_by
18202 ,xet.budgetary_control_flag
18203 , l2.LINE_NUMBER
18204 , l2.DIST_CODE_COMBINATION_ID source_5
18205 , l2.DIST_AE_LINE_TYPE_CODE source_6
18206 , fvl6.meaning source_6_meaning
18207 , l2.DIST_ID source_7
18208 , l2.DIST_TYPE source_8
18209 , l2.DIST_ENTERED_AMOUNT source_9
18210 FROM xla_events_gt xet
18214 and xet.event_date between p_pad_start_date and p_pad_end_date
18211 , OKL_CMN_EXTRACT_LINE_V l2
18212 , fnd_lookup_values fvl6
18213 WHERE xet.event_id between x_first_event_id and x_last_event_id
18215 and xet.event_class_code = C_EVENT_CLASS_CODE
18216 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
18217 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
18218 AND fvl6.lookup_code(+) = l2.DIST_AE_LINE_TYPE_CODE
18219 AND fvl6.view_application_id(+) = 0
18220 AND fvl6.language(+) = USERENV('LANG')
18221 ;
18222
18223 --
18224 BEGIN
18225 IF g_log_enabled THEN
18226 l_log_module := C_DEFAULT_MODULE||'.EventClass_34';
18227 END IF;
18228 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18229 trace
18230 (p_msg => 'BEGIN of EventClass_34'
18231 ,p_level => C_LEVEL_PROCEDURE
18232 ,p_module => l_log_module);
18233 END IF;
18234
18235 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
18236 trace
18237 (p_msg => 'p_application_id = '||p_application_id||
18238 ' - p_base_ledger_id = '||p_base_ledger_id||
18239 ' - p_target_ledger_id = '||p_target_ledger_id||
18240 ' - p_language = '||p_language||
18241 ' - p_currency_code = '||p_currency_code||
18242 ' - p_sla_ledger_id = '||p_sla_ledger_id
18243 ,p_level => C_LEVEL_STATEMENT
18244 ,p_module => l_log_module);
18245 END IF;
18246 --
18247 -- initialze arrays
18248 --
18249 g_array_event.DELETE;
18250 l_rec_array_event := l_null_rec_array_event;
18251 --
18252 --------------------------------------
18253 -- 4262811 Initialze MPA Line Number
18254 --------------------------------------
18255 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
18256
18257 --
18258
18259 --
18260 OPEN header_cur;
18261 --
18262 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
18263 trace
18264 (p_msg => 'SQL - FETCH header_cur'
18265 ,p_level => C_LEVEL_STATEMENT
18266 ,p_module => l_log_module);
18267 END IF;
18268 --
18269 LOOP
18270 FETCH header_cur BULK COLLECT INTO
18271 l_array_entity_id
18272 , l_array_legal_entity_id
18273 , l_array_entity_code
18274 , l_array_transaction_num
18275 , l_array_event_id
18276 , l_array_class_code
18277 , l_array_event_type
18278 , l_array_event_number
18279 , l_array_event_date
18280 , l_array_transaction_date
18281 , l_array_reference_num_1
18282 , l_array_reference_num_2
18283 , l_array_reference_num_3
18284 , l_array_reference_num_4
18285 , l_array_reference_char_1
18286 , l_array_reference_char_2
18287 , l_array_reference_char_3
18288 , l_array_reference_char_4
18289 , l_array_reference_date_1
18290 , l_array_reference_date_2
18291 , l_array_reference_date_3
18292 , l_array_reference_date_4
18293 , l_array_event_created_by
18294 , l_array_budgetary_control_flag
18295 , l_array_source_1
18296 , l_array_source_2
18297 , l_array_source_10
18298 , l_array_source_11
18299 , l_array_source_12
18300 , l_array_source_13
18301 , l_array_source_15
18302 , l_array_source_16
18303 LIMIT l_rows;
18304 --
18305 IF (C_LEVEL_EVENT >= g_log_level) THEN
18306 trace
18307 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
18308 ,p_level => C_LEVEL_EVENT
18309 ,p_module => l_log_module);
18310 END IF;
18311 --
18312 EXIT WHEN l_array_entity_id.COUNT = 0;
18313
18314 -- initialize arrays
18315 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
18316 XLA_AE_LINES_PKG.g_rec_lines := NULL;
18317
18318 --
18319 -- Bug 4458708
18320 --
18321 XLA_AE_LINES_PKG.g_LineNumber := 0;
18322
18323
18324 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
18325 g_last_hdr_idx := l_array_event_id.LAST;
18326 --
18327 -- loop for the headers. Each iteration is for each header extract row
18328 -- fetched in header cursor
18329 --
18330 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
18331
18332 --
18333 -- set event info as cache for other routines to refer event attributes
18334 --
18335 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
18336 (p_application_id => p_application_id
18337 ,p_primary_ledger_id => p_primary_ledger_id
18338 ,p_base_ledger_id => p_base_ledger_id
18339 ,p_target_ledger_id => p_target_ledger_id
18340 ,p_entity_id => l_array_entity_id(hdr_idx)
18341 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
18342 ,p_entity_code => l_array_entity_code(hdr_idx)
18343 ,p_transaction_num => l_array_transaction_num(hdr_idx)
18344 ,p_event_id => l_array_event_id(hdr_idx)
18345 ,p_event_class_code => l_array_class_code(hdr_idx)
18346 ,p_event_type_code => l_array_event_type(hdr_idx)
18347 ,p_event_number => l_array_event_number(hdr_idx)
18348 ,p_event_date => l_array_event_date(hdr_idx)
18349 ,p_transaction_date => l_array_transaction_date(hdr_idx)
18350 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
18351 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
18352 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
18353 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
18354 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
18355 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
18359 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
18356 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
18357 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
18358 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
18360 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
18361 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
18362 ,p_event_created_by => l_array_event_created_by(hdr_idx)
18363 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
18364
18365 --
18366 -- set the status of entry to C_VALID (0)
18367 --
18368 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
18369
18370 --
18371 -- initialize a row for ae header
18372 --
18373 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
18374
18375 l_event_id := l_array_event_id(hdr_idx);
18376
18377 --
18378 -- storing the hdr_idx for event. May be used by line cursor.
18379 --
18380 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
18381
18382 --
18383 -- store sources from header extract. This can be improved to
18384 -- store only those sources from header extract that may be used in lines
18385 --
18386
18387 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
18388 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
18389 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
18390 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
18391 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
18392 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
18393 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
18394 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
18395
18396 --
18397 -- initilaize the status of ae headers for diffrent balance types
18398 -- the status is initialised to C_NOT_CREATED (2)
18399 --
18400 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
18401 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
18402 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
18403
18404 --
18405 -- call api to validate and store accounting attributes for header
18406 --
18407
18408 ------------------------------------------------------------
18409 -- Accrual Reversal : to get date for Standard Source (NONE)
18410 ------------------------------------------------------------
18411 l_acc_rev_gl_date_source := NULL;
18412
18413 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
18414 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
18415 l_rec_acct_attrs.array_acct_attr_code(2) := 'TRX_ACCT_REVERSAL_OPTION';
18416 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_16');
18417
18418
18419 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
18420
18421 XLA_AE_HEADER_PKG.SetJeCategoryName;
18422
18423 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
18424 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
18425 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
18426 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
18427 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
18428
18429
18430 --
18431 xla_ae_header_pkg.SetHdrDescription(
18432 p_description => Description_1 (
18433 p_application_id => p_application_id
18434 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
18435 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
18436 )
18437 );
18438 --
18439
18440 -- No header level analytical criteria
18441
18442 --
18443 --accounting attribute enhancement, bug 3612931
18444 --
18445 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_16'), 1,30);
18446
18447 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
18448 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
18449
18450 xla_accounting_err_pkg.build_message
18451 (p_appli_s_name => 'XLA'
18452 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
18453 ,p_token_1 => 'ACCT_ATTR_NAME'
18454 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
18455 ,p_token_2 => 'PRODUCT_NAME'
18456 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
18457 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
18458 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
18459 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
18460
18461 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
18462 --
18463 -- following sets the accounting attributes needed to reverse
18464 -- accounting for a distributeion
18465 --
18466 xla_ae_lines_pkg.SetTrxReversalAttrs
18467 (p_event_id => l_event_id
18468 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
18469 ,p_trx_reversal_source => l_trx_reversal_source);
18470
18471 END IF;
18472
18473
18474 ----------------------------------------------------------------
18475 -- 4262811 - update the header statuses to invalid in need be
18479
18476 ----------------------------------------------------------------
18477 --
18478 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
18480
18481 -----------------------------------------------
18482 -- No accrual reversal for the event class/type
18483 -----------------------------------------------
18484 ----------------------------------------------------------------
18485
18486 --
18487 -- this ends the header loop iteration for one bulk fetch
18488 --
18489 END LOOP;
18490
18491 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
18492 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
18493
18494 --
18495 -- insert dummy rows into lines gt table that were created due to
18496 -- transaction reversals
18497 --
18498 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
18499 l_result := XLA_AE_LINES_PKG.InsertLines;
18500 END IF;
18501
18502 --
18503 -- reset the temp_line_num for each set of events fetched from header
18504 -- cursor rather than doing it for each new event in line cursor
18505 -- Bug 3939231
18506 --
18507 xla_ae_lines_pkg.g_temp_line_num := 0;
18508
18509
18510
18511 --
18512 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
18513 --
18514 --
18515 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
18516
18517 trace
18518 (p_msg => 'SQL - FETCH line_cur'
18519 ,p_level => C_LEVEL_STATEMENT
18520 ,p_module => l_log_module);
18521
18522 END IF;
18523 --
18524 --
18525 LOOP
18526 --
18527 FETCH line_cur BULK COLLECT INTO
18528 l_array_entity_id
18529 , l_array_legal_entity_id
18530 , l_array_entity_code
18531 , l_array_transaction_num
18532 , l_array_event_id
18533 , l_array_class_code
18534 , l_array_event_type
18535 , l_array_event_number
18536 , l_array_event_date
18537 , l_array_transaction_date
18538 , l_array_reference_num_1
18539 , l_array_reference_num_2
18540 , l_array_reference_num_3
18541 , l_array_reference_num_4
18542 , l_array_reference_char_1
18543 , l_array_reference_char_2
18544 , l_array_reference_char_3
18545 , l_array_reference_char_4
18546 , l_array_reference_date_1
18547 , l_array_reference_date_2
18548 , l_array_reference_date_3
18549 , l_array_reference_date_4
18550 , l_array_event_created_by
18551 , l_array_budgetary_control_flag
18552 , l_array_extract_line_num
18553 , l_array_source_5
18554 , l_array_source_6
18555 , l_array_source_6_meaning
18556 , l_array_source_7
18557 , l_array_source_8
18558 , l_array_source_9
18559 LIMIT l_rows;
18560
18561 --
18562 IF (C_LEVEL_EVENT >= g_log_level) THEN
18563 trace
18564 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
18565 ,p_level => C_LEVEL_EVENT
18566 ,p_module => l_log_module);
18567 END IF;
18568 --
18569 EXIT WHEN l_array_entity_id.count = 0;
18570
18571 XLA_AE_LINES_PKG.g_rec_lines := null;
18572
18573 --
18574 -- Bug 4458708
18575 --
18576 XLA_AE_LINES_PKG.g_LineNumber := 0;
18577 --
18578 --
18579
18580 FOR Idx IN 1..l_array_event_id.count LOOP
18581 --
18582 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
18583 --
18584 l_event_id := l_array_event_id(idx); -- 5648433
18585
18586 --
18587 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
18588 --
18589
18590 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
18591 (g_array_event(l_event_id).array_value_num('header_index'))
18592 ,'N'
18593 ) <> 'Y'
18594 THEN
18595 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
18596 trace
18597 (p_msg => 'Trancaction revesal option is not Y '
18598 ,p_level => C_LEVEL_STATEMENT
18599 ,p_module => l_log_module);
18600 END IF;
18601
18602 --
18603 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
18604 --
18605 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
18606 --
18607 -- set event info as cache for other routines to refer event attributes
18608 --
18609
18610 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
18611 l_previous_event_id := l_event_id;
18612
18613 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
18614 (p_application_id => p_application_id
18615 ,p_primary_ledger_id => p_primary_ledger_id
18616 ,p_base_ledger_id => p_base_ledger_id
18617 ,p_target_ledger_id => p_target_ledger_id
18618 ,p_entity_id => l_array_entity_id(Idx)
18619 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
18620 ,p_entity_code => l_array_entity_code(Idx)
18621 ,p_transaction_num => l_array_transaction_num(Idx)
18622 ,p_event_id => l_array_event_id(Idx)
18623 ,p_event_class_code => l_array_class_code(Idx)
18624 ,p_event_type_code => l_array_event_type(Idx)
18625 ,p_event_number => l_array_event_number(Idx)
18626 ,p_event_date => l_array_event_date(Idx)
18627 ,p_transaction_date => l_array_transaction_date(Idx)
18628 ,p_reference_num_1 => l_array_reference_num_1(Idx)
18629 ,p_reference_num_2 => l_array_reference_num_2(Idx)
18633 ,p_reference_char_2 => l_array_reference_char_2(Idx)
18630 ,p_reference_num_3 => l_array_reference_num_3(Idx)
18631 ,p_reference_num_4 => l_array_reference_num_4(Idx)
18632 ,p_reference_char_1 => l_array_reference_char_1(Idx)
18634 ,p_reference_char_3 => l_array_reference_char_3(Idx)
18635 ,p_reference_char_4 => l_array_reference_char_4(Idx)
18636 ,p_reference_date_1 => l_array_reference_date_1(Idx)
18637 ,p_reference_date_2 => l_array_reference_date_2(Idx)
18638 ,p_reference_date_3 => l_array_reference_date_3(Idx)
18639 ,p_reference_date_4 => l_array_reference_date_4(Idx)
18640 ,p_event_created_by => l_array_event_created_by(Idx)
18641 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
18642 --
18643 END IF;
18644
18645
18646
18647 --
18648 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
18649
18650 l_acct_reversal_source := SUBSTR(NULL, 1,30);
18651
18652 IF l_continue_with_lines THEN
18653 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
18654 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
18655
18656 xla_accounting_err_pkg.build_message
18657 (p_appli_s_name => 'XLA'
18658 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
18659 ,p_token_1 => 'LINE_NUMBER'
18660 ,p_value_1 => l_array_extract_line_num(Idx)
18661 ,p_token_2 => 'PRODUCT_NAME'
18662 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
18663 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
18664 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
18665 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
18666
18667 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
18668 --
18669 -- following sets the accounting attributes needed to reverse
18670 -- accounting for a distributeion
18671 --
18672
18673 --
18674 -- 5217187
18675 --
18676 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
18677 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
18678 g_array_event(l_event_id).array_value_num('header_index'));
18679 --
18680 --
18681
18682 -- No reversal code generated
18683
18684 xla_ae_lines_pkg.SetAcctReversalAttrs
18685 (p_event_id => l_event_id
18686 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
18687 ,p_calculate_acctd_flag => l_calculate_acctd_flag
18688 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
18689 END IF;
18690
18691 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
18692 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
18693
18694 --
18695 AcctLineType_8 (
18696 p_application_id => p_application_id
18697 ,p_event_id => l_event_id
18698 ,p_calculate_acctd_flag => l_calculate_acctd_flag
18699 ,p_calculate_g_l_flag => l_calculate_g_l_flag
18700 ,p_actual_flag => l_actual_flag
18701 ,p_balance_type_code => l_balance_type_code
18702 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
18703
18704 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
18705 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
18706 , p_source_5 => l_array_source_5(Idx)
18707 , p_source_6 => l_array_source_6(Idx)
18708 , p_source_6_meaning => l_array_source_6_meaning(Idx)
18709 , p_source_7 => l_array_source_7(Idx)
18710 , p_source_8 => l_array_source_8(Idx)
18711 , p_source_9 => l_array_source_9(Idx)
18712 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
18713 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
18714 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
18715 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
18716 );
18717 If(l_balance_type_code = 'A') THEN
18718 l_actual_gain_loss_ref := l_gain_or_loss_ref;
18719 END IF;
18720
18721 --
18722
18723
18724 --
18725 AcctLineType_9 (
18726 p_application_id => p_application_id
18727 ,p_event_id => l_event_id
18728 ,p_calculate_acctd_flag => l_calculate_acctd_flag
18729 ,p_calculate_g_l_flag => l_calculate_g_l_flag
18730 ,p_actual_flag => l_actual_flag
18731 ,p_balance_type_code => l_balance_type_code
18732 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
18733
18734 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
18735 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
18736 , p_source_5 => l_array_source_5(Idx)
18737 , p_source_6 => l_array_source_6(Idx)
18738 , p_source_6_meaning => l_array_source_6_meaning(Idx)
18739 , p_source_7 => l_array_source_7(Idx)
18740 , p_source_8 => l_array_source_8(Idx)
18741 , p_source_9 => l_array_source_9(Idx)
18742 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
18743 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
18744 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
18745 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
18746 );
18747 If(l_balance_type_code = 'A') THEN
18748 l_actual_gain_loss_ref := l_gain_or_loss_ref;
18749 END IF;
18750
18751 --
18752
18753 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
18754 -- or secondary ledger that has different currency with primary
18755 -- or alc that is calculated by sla
18759 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
18756 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
18757 (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'))
18758
18760 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
18761 AND (l_actual_flag = 'A')) THEN
18762 XLA_AE_LINES_PKG.CreateGainOrLossLines(
18763 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
18764 ,p_application_id => p_application_id
18765 ,p_amb_context_code => 'DEFAULT'
18766 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
18767 ,p_event_class_code => C_EVENT_CLASS_CODE
18768 ,p_event_type_code => C_EVENT_TYPE_CODE
18769
18770 ,p_gain_ccid => -1
18771 ,p_loss_ccid => -1
18772
18773 ,p_actual_flag => l_actual_flag
18774 ,p_enc_flag => null
18775 ,p_actual_g_l_ref => l_actual_gain_loss_ref
18776 ,p_enc_g_l_ref => null
18777 );
18778 END IF;
18779 END IF;
18780 END IF;
18781
18782 ELSE
18783 --
18784 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
18785 --
18786 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
18787 trace
18788 (p_msg => 'Trancaction revesal option is Y'
18789 ,p_level => C_LEVEL_STATEMENT
18790 ,p_module => l_log_module);
18791 END IF;
18792 END IF;
18793
18794 END LOOP;
18795 l_result := XLA_AE_LINES_PKG.InsertLines ;
18796 end loop;
18797 close line_cur;
18798
18799
18800 --
18801 -- insert headers into xla_ae_headers_gt table
18802 --
18803 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
18804
18805 -- insert into errors table here.
18806
18807 END LOOP;
18808
18809 --
18810 -- 4865292
18811 --
18812 -- Compare g_hdr_extract_count with event count in
18813 -- CreateHeadersAndLines.
18814 --
18815 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
18816
18817 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
18818 trace (p_msg => '# rows extracted from header extract objects '
18819 || ' (running total): '
18820 || g_hdr_extract_count
18821 ,p_level => C_LEVEL_STATEMENT
18822 ,p_module => l_log_module);
18823 END IF;
18824
18825 CLOSE header_cur;
18826 --
18827
18828 --
18829 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18830 trace
18831 (p_msg => 'END of EventClass_34'
18832 ,p_level => C_LEVEL_PROCEDURE
18833 ,p_module => l_log_module);
18834 END IF;
18835 --
18836 RETURN l_result;
18837 EXCEPTION
18838 WHEN xla_exceptions_pkg.application_exception THEN
18839
18840 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
18841
18842
18843 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
18844
18845 RAISE;
18846 WHEN OTHERS THEN
18847 xla_exceptions_pkg.raise_message
18848 (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_34');
18849 END EventClass_34;
18850 --
18851
18852 ---------------------------------------
18853 --
18854 -- PRIVATE PROCEDURE
18855 -- insert_sources_35
18856 --
18857 ----------------------------------------
18858 --
18859 PROCEDURE insert_sources_35(
18860 p_target_ledger_id IN NUMBER
18861 , p_language IN VARCHAR2
18862 , p_sla_ledger_id IN NUMBER
18863 , p_pad_start_date IN DATE
18864 , p_pad_end_date IN DATE
18865 )
18866 IS
18867
18868 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'EVERGREEN_ALL';
18869 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'EVERGREEN';
18870 p_apps_owner VARCHAR2(30);
18871 l_log_module VARCHAR2(240);
18872 BEGIN
18873 IF g_log_enabled THEN
18874 l_log_module := C_DEFAULT_MODULE||'.insert_sources_35';
18875 END IF;
18876 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18877
18878 trace
18879 (p_msg => 'BEGIN of insert_sources_35'
18880 ,p_level => C_LEVEL_PROCEDURE
18881 ,p_module => l_log_module);
18882
18883 END IF;
18884
18885 -- select APPS owner
18886 SELECT oracle_username
18887 INTO p_apps_owner
18888 FROM fnd_oracle_userid
18889 WHERE read_only_flag = 'U'
18890 ;
18891
18892 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
18893 trace
18894 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
18895 ' - p_language = '||p_language||
18896 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
18897 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
18898 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
18899 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
18900 ,p_level => C_LEVEL_STATEMENT
18901 ,p_module => l_log_module);
18902 END IF;
18903
18904
18905 --
18906 INSERT INTO xla_diag_sources --hdr2
18907 (
18908 event_id
18909 , ledger_id
18910 , sla_ledger_id
18911 , description_language
18912 , object_name
18913 , object_type_code
18914 , line_number
18918 , source_value
18915 , source_application_id
18916 , source_type_code
18917 , source_code
18919 , source_meaning
18920 , created_by
18921 , creation_date
18922 , last_update_date
18923 , last_updated_by
18924 , last_update_login
18925 , program_update_date
18926 , program_application_id
18927 , program_id
18928 , request_id
18929 )
18930 SELECT
18931 event_id
18932 , p_target_ledger_id
18933 , p_sla_ledger_id
18934 , p_language
18935 , object_name
18936 , object_type_code
18937 , line_number
18938 , source_application_id
18939 , source_type_code
18940 , source_code
18941 , SUBSTR(source_value ,1,1996)
18942 , SUBSTR(source_meaning ,1,200)
18943 , xla_environment_pkg.g_Usr_Id
18944 , TRUNC(SYSDATE)
18945 , TRUNC(SYSDATE)
18946 , xla_environment_pkg.g_Usr_Id
18947 , xla_environment_pkg.g_Login_Id
18948 , TRUNC(SYSDATE)
18949 , xla_environment_pkg.g_Prog_Appl_Id
18950 , xla_environment_pkg.g_Prog_Id
18951 , xla_environment_pkg.g_Req_Id
18952 FROM (
18953 SELECT xet.event_id event_id
18954 , 0 line_number
18955 , CASE r
18956 WHEN 1 THEN 'OKL_CMN_EXTRACT_HDR_V'
18957 WHEN 2 THEN 'OKL_CMN_EXTRACT_HDR_V'
18958 WHEN 3 THEN 'OKL_CMN_EXTRACT_HDR_V'
18959 WHEN 4 THEN 'OKL_CMN_EXTRACT_HDR_V'
18960 WHEN 5 THEN 'OKL_CMN_EXTRACT_HDR_V'
18961 WHEN 6 THEN 'OKL_CMN_EXTRACT_HDR_V'
18962 WHEN 7 THEN 'OKL_CMN_EXTRACT_HDR_V'
18963 WHEN 8 THEN 'OKL_CMN_EXTRACT_HDR_V'
18964
18965 ELSE null
18966 END object_name
18967 , CASE r
18968 WHEN 1 THEN 'HEADER'
18969 WHEN 2 THEN 'HEADER'
18970 WHEN 3 THEN 'HEADER'
18971 WHEN 4 THEN 'HEADER'
18972 WHEN 5 THEN 'HEADER'
18973 WHEN 6 THEN 'HEADER'
18974 WHEN 7 THEN 'HEADER'
18975 WHEN 8 THEN 'HEADER'
18976
18977 ELSE null
18978 END object_type_code
18979 , CASE r
18980 WHEN 1 THEN '540'
18981 WHEN 2 THEN '540'
18982 WHEN 3 THEN '540'
18983 WHEN 4 THEN '540'
18984 WHEN 5 THEN '540'
18985 WHEN 6 THEN '540'
18986 WHEN 7 THEN '540'
18987 WHEN 8 THEN '540'
18988
18989 ELSE null
18990 END source_application_id
18991 , 'S' source_type_code
18992 , CASE r
18993 WHEN 1 THEN 'TEH_CONTRACT_NUMBER'
18994 WHEN 2 THEN 'TCN_CONTRACT_PRODUCT_NAME'
18995 WHEN 3 THEN 'TCN_CURRENCY_CODE'
18996 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE'
18997 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE'
18998 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE'
18999 WHEN 7 THEN 'GL_DATE'
19000 WHEN 8 THEN 'TCN_ACCOUNTING_REVERSAL_FLAG'
19001
19002 ELSE null
19003 END source_code
19004 , CASE r
19005 WHEN 1 THEN TO_CHAR(h1.TEH_CONTRACT_NUMBER)
19006 WHEN 2 THEN TO_CHAR(h1.TCN_CONTRACT_PRODUCT_NAME)
19007 WHEN 3 THEN TO_CHAR(h1.TCN_CURRENCY_CODE)
19008 WHEN 4 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_DATE)
19009 WHEN 5 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_RATE)
19010 WHEN 6 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_TYPE)
19011 WHEN 7 THEN TO_CHAR(h1.GL_DATE)
19012 WHEN 8 THEN TO_CHAR(h1.TCN_ACCOUNTING_REVERSAL_FLAG)
19013
19014 ELSE null
19015 END source_value
19016 , null source_meaning
19017 FROM xla_events_gt xet
19018 , OKL_CMN_EXTRACT_HDR_V h1
19019 ,(select rownum r from all_objects where rownum <= 8 and owner = p_apps_owner)
19020 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
19021 AND xet.event_class_code = C_EVENT_CLASS_CODE
19022 AND h1.event_id = xet.event_id
19023
19024 )
19025 ;
19026 --
19027 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
19028
19029 trace
19030 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
19031 ,p_level => C_LEVEL_STATEMENT
19032 ,p_module => l_log_module);
19033
19034 END IF;
19035 --
19036
19037
19038
19039 --
19040 INSERT INTO xla_diag_sources --line2
19041 (
19042 event_id
19043 , ledger_id
19044 , sla_ledger_id
19045 , description_language
19046 , object_name
19047 , object_type_code
19048 , line_number
19049 , source_application_id
19050 , source_type_code
19051 , source_code
19052 , source_value
19053 , source_meaning
19054 , created_by
19055 , creation_date
19056 , last_update_date
19057 , last_updated_by
19058 , last_update_login
19059 , program_update_date
19060 , program_application_id
19061 , program_id
19062 , request_id
19063 )
19064 SELECT event_id
19065 , p_target_ledger_id
19069 , object_type_code
19066 , p_sla_ledger_id
19067 , p_language
19068 , object_name
19070 , line_number
19071 , source_application_id
19072 , source_type_code
19073 , source_code
19074 , SUBSTR(source_value,1,1996)
19075 , SUBSTR(source_meaning ,1,200)
19076 , xla_environment_pkg.g_Usr_Id
19077 , TRUNC(SYSDATE)
19078 , TRUNC(SYSDATE)
19079 , xla_environment_pkg.g_Usr_Id
19080 , xla_environment_pkg.g_Login_Id
19081 , TRUNC(SYSDATE)
19082 , xla_environment_pkg.g_Prog_Appl_Id
19083 , xla_environment_pkg.g_Prog_Id
19084 , xla_environment_pkg.g_Req_Id
19085 FROM (
19086 SELECT xet.event_id event_id
19087 , l2.line_number line_number
19088 , CASE r
19089 WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V'
19090 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V'
19091 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V'
19092 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V'
19093 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V'
19094
19095 ELSE null
19096 END object_name
19097 , CASE r
19098 WHEN 1 THEN 'LINE'
19099 WHEN 2 THEN 'LINE'
19100 WHEN 3 THEN 'LINE'
19101 WHEN 4 THEN 'LINE'
19102 WHEN 5 THEN 'LINE'
19103
19104 ELSE null
19105 END object_type_code
19106 , CASE r
19107 WHEN 1 THEN '540'
19108 WHEN 2 THEN '540'
19109 WHEN 3 THEN '540'
19110 WHEN 4 THEN '540'
19111 WHEN 5 THEN '540'
19112
19113 ELSE null
19114 END source_application_id
19115 , 'S' source_type_code
19116 , CASE r
19117 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID'
19118 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE'
19119 WHEN 3 THEN 'DIST_ID'
19120 WHEN 4 THEN 'DIST_TYPE'
19121 WHEN 5 THEN 'DIST_ENTERED_AMOUNT'
19122
19123 ELSE null
19124 END source_code
19125 , CASE r
19126 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
19127 WHEN 2 THEN TO_CHAR(l2.DIST_AE_LINE_TYPE_CODE)
19128 WHEN 3 THEN TO_CHAR(l2.DIST_ID)
19129 WHEN 4 THEN TO_CHAR(l2.DIST_TYPE)
19130 WHEN 5 THEN TO_CHAR(l2.DIST_ENTERED_AMOUNT)
19131
19132 ELSE null
19133 END source_value
19134 , CASE r
19135 WHEN 2 THEN fvl6.meaning
19136
19137 ELSE null
19138 END source_meaning
19139 FROM xla_events_gt xet
19140 , OKL_CMN_EXTRACT_LINE_V l2
19141 , fnd_lookup_values fvl6
19142 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
19143 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
19144 AND xet.event_class_code = C_EVENT_CLASS_CODE
19145 AND l2.event_id = xet.event_id
19146 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
19147 AND fvl6.lookup_code(+) = l2.DIST_AE_LINE_TYPE_CODE
19148 AND fvl6.view_application_id(+) = 0
19149 AND fvl6.language(+) = USERENV('LANG')
19150
19151 )
19152 ;
19153 --
19154 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
19155
19156 trace
19157 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
19158 ,p_level => C_LEVEL_STATEMENT
19159 ,p_module => l_log_module);
19160
19161 END IF;
19162
19163
19164 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19165 trace
19166 (p_msg => 'END of insert_sources_35'
19167 ,p_level => C_LEVEL_PROCEDURE
19168 ,p_module => l_log_module);
19169 END IF;
19170 EXCEPTION
19171 WHEN xla_exceptions_pkg.application_exception THEN
19172 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
19173 trace
19174 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
19175 ,p_level => C_LEVEL_EXCEPTION
19176 ,p_module => l_log_module);
19177 END IF;
19178 RAISE;
19179 WHEN OTHERS THEN
19180 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
19181 trace
19182 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
19183 ,p_level => C_LEVEL_EXCEPTION
19184 ,p_module => l_log_module);
19185 END IF;
19186 xla_exceptions_pkg.raise_message
19187 (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_35');
19188 END insert_sources_35;
19189 --
19190
19191 ---------------------------------------
19192 --
19193 -- PRIVATE FUNCTION
19194 -- EventClass_35
19195 --
19196 ----------------------------------------
19197 --
19198 FUNCTION EventClass_35
19199 (p_application_id IN NUMBER
19200 ,p_base_ledger_id IN NUMBER
19201 ,p_target_ledger_id IN NUMBER
19202 ,p_language IN VARCHAR2
19203 ,p_currency_code IN VARCHAR2
19204 ,p_sla_ledger_id IN NUMBER
19205 ,p_pad_start_date IN DATE
19206 ,p_pad_end_date IN DATE
19207 ,p_primary_ledger_id IN NUMBER)
19208 RETURN BOOLEAN IS
19209 --
19213 l_calculate_acctd_flag VARCHAR2(1) :='Y';
19210 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'EVERGREEN_ALL';
19211 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'EVERGREEN';
19212
19214 l_calculate_g_l_flag VARCHAR2(1) :='Y';
19215 --
19216 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
19217 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
19218 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
19219 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
19220 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
19221 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
19222 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
19223 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
19224 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
19225 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
19226 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
19227 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
19228 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
19229 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
19230 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
19231 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
19232 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
19233 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
19234 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
19235 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
19236 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
19237 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
19238 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
19239 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
19240
19241 l_event_id NUMBER;
19242 l_previous_event_id NUMBER;
19243 l_first_event_id NUMBER;
19244 l_last_event_id NUMBER;
19245
19246 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
19247 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
19248 --
19249 --
19250 l_result BOOLEAN := TRUE;
19251 l_rows NUMBER := 1000;
19252 l_event_type_name VARCHAR2(80) := 'All';
19253 l_event_class_name VARCHAR2(80) := 'Evergreen';
19254 l_description VARCHAR2(4000);
19255 l_transaction_reversal NUMBER;
19256 l_ae_header_id NUMBER;
19257 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
19258 l_log_module VARCHAR2(240);
19259 --
19260 l_acct_reversal_source VARCHAR2(30);
19261 l_trx_reversal_source VARCHAR2(30);
19262
19263 l_continue_with_lines BOOLEAN := TRUE;
19264 --
19265 l_acc_rev_gl_date_source DATE; -- 4262811
19266 --
19267 type t_array_event_id is table of number index by binary_integer;
19268
19269 l_rec_array_event t_rec_array_event;
19270 l_null_rec_array_event t_rec_array_event;
19271 l_array_ae_header_id xla_number_array_type;
19272 l_actual_flag VARCHAR2(1) := NULL;
19273 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
19274 l_balance_type_code VARCHAR2(1) :=NULL;
19275 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
19276
19277 --
19278 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
19279 --
19280
19281 TYPE t_array_source_1 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TEH_CONTRACT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
19282 TYPE t_array_source_2 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CONTRACT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
19283 TYPE t_array_source_10 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
19284 TYPE t_array_source_11 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
19285 TYPE t_array_source_12 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
19286 TYPE t_array_source_13 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
19287 TYPE t_array_source_15 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
19288 TYPE t_array_source_16 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
19289
19290 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
19291 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
19292 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
19293 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
19294 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
19295
19296 l_array_source_1 t_array_source_1;
19297 l_array_source_2 t_array_source_2;
19298 l_array_source_10 t_array_source_10;
19299 l_array_source_11 t_array_source_11;
19300 l_array_source_12 t_array_source_12;
19301 l_array_source_13 t_array_source_13;
19302 l_array_source_15 t_array_source_15;
19303 l_array_source_16 t_array_source_16;
19304
19305 l_array_source_5 t_array_source_5;
19306 l_array_source_6 t_array_source_6;
19307 l_array_source_6_meaning t_array_lookup_meaning;
19308 l_array_source_7 t_array_source_7;
19309 l_array_source_8 t_array_source_8;
19313 CURSOR header_cur
19310 l_array_source_9 t_array_source_9;
19311
19312 --
19314 IS
19315 SELECT /*+ leading(xet) cardinality(xet,1) */
19316 -- Event Class Code: EVERGREEN
19317 xet.entity_id
19318 ,xet.legal_entity_id
19319 ,xet.entity_code
19320 ,xet.transaction_number
19321 ,xet.event_id
19322 ,xet.event_class_code
19323 ,xet.event_type_code
19324 ,xet.event_number
19325 ,xet.event_date
19326 ,xet.transaction_date
19327 ,xet.reference_num_1
19328 ,xet.reference_num_2
19329 ,xet.reference_num_3
19330 ,xet.reference_num_4
19331 ,xet.reference_char_1
19332 ,xet.reference_char_2
19333 ,xet.reference_char_3
19334 ,xet.reference_char_4
19335 ,xet.reference_date_1
19336 ,xet.reference_date_2
19337 ,xet.reference_date_3
19338 ,xet.reference_date_4
19339 ,xet.event_created_by
19340 ,xet.budgetary_control_flag
19341 , h1.TEH_CONTRACT_NUMBER source_1
19342 , h1.TCN_CONTRACT_PRODUCT_NAME source_2
19343 , h1.TCN_CURRENCY_CODE source_10
19344 , h1.TCN_CURR_CONVERSION_DATE source_11
19345 , h1.TCN_CURR_CONVERSION_RATE source_12
19346 , h1.TCN_CURR_CONVERSION_TYPE source_13
19347 , h1.GL_DATE source_15
19348 , h1.TCN_ACCOUNTING_REVERSAL_FLAG source_16
19349 FROM xla_events_gt xet
19350 , OKL_CMN_EXTRACT_HDR_V h1
19351 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
19352 and xet.event_class_code = C_EVENT_CLASS_CODE
19353 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
19354
19355 ORDER BY event_id
19356 ;
19357
19358
19359 --
19360 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
19361 IS
19362 SELECT /*+ leading(xet) cardinality(xet,1) */
19363 -- Event Class Code: EVERGREEN
19364 xet.entity_id
19365 ,xet.legal_entity_id
19366 ,xet.entity_code
19367 ,xet.transaction_number
19368 ,xet.event_id
19369 ,xet.event_class_code
19370 ,xet.event_type_code
19371 ,xet.event_number
19372 ,xet.event_date
19373 ,xet.transaction_date
19374 ,xet.reference_num_1
19375 ,xet.reference_num_2
19376 ,xet.reference_num_3
19377 ,xet.reference_num_4
19378 ,xet.reference_char_1
19379 ,xet.reference_char_2
19380 ,xet.reference_char_3
19381 ,xet.reference_char_4
19382 ,xet.reference_date_1
19383 ,xet.reference_date_2
19384 ,xet.reference_date_3
19385 ,xet.reference_date_4
19386 ,xet.event_created_by
19387 ,xet.budgetary_control_flag
19388 , l2.LINE_NUMBER
19389 , l2.DIST_CODE_COMBINATION_ID source_5
19390 , l2.DIST_AE_LINE_TYPE_CODE source_6
19391 , fvl6.meaning source_6_meaning
19392 , l2.DIST_ID source_7
19393 , l2.DIST_TYPE source_8
19394 , l2.DIST_ENTERED_AMOUNT source_9
19395 FROM xla_events_gt xet
19396 , OKL_CMN_EXTRACT_LINE_V l2
19397 , fnd_lookup_values fvl6
19398 WHERE xet.event_id between x_first_event_id and x_last_event_id
19399 and xet.event_date between p_pad_start_date and p_pad_end_date
19400 and xet.event_class_code = C_EVENT_CLASS_CODE
19401 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
19402 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
19403 AND fvl6.lookup_code(+) = l2.DIST_AE_LINE_TYPE_CODE
19404 AND fvl6.view_application_id(+) = 0
19405 AND fvl6.language(+) = USERENV('LANG')
19406 ;
19407
19408 --
19409 BEGIN
19410 IF g_log_enabled THEN
19411 l_log_module := C_DEFAULT_MODULE||'.EventClass_35';
19412 END IF;
19413 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19414 trace
19415 (p_msg => 'BEGIN of EventClass_35'
19416 ,p_level => C_LEVEL_PROCEDURE
19417 ,p_module => l_log_module);
19418 END IF;
19419
19420 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
19421 trace
19422 (p_msg => 'p_application_id = '||p_application_id||
19423 ' - p_base_ledger_id = '||p_base_ledger_id||
19424 ' - p_target_ledger_id = '||p_target_ledger_id||
19425 ' - p_language = '||p_language||
19426 ' - p_currency_code = '||p_currency_code||
19427 ' - p_sla_ledger_id = '||p_sla_ledger_id
19428 ,p_level => C_LEVEL_STATEMENT
19429 ,p_module => l_log_module);
19430 END IF;
19431 --
19432 -- initialze arrays
19433 --
19434 g_array_event.DELETE;
19435 l_rec_array_event := l_null_rec_array_event;
19436 --
19437 --------------------------------------
19438 -- 4262811 Initialze MPA Line Number
19439 --------------------------------------
19440 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
19441
19442 --
19443
19444 --
19445 OPEN header_cur;
19446 --
19447 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
19448 trace
19449 (p_msg => 'SQL - FETCH header_cur'
19450 ,p_level => C_LEVEL_STATEMENT
19451 ,p_module => l_log_module);
19452 END IF;
19453 --
19454 LOOP
19455 FETCH header_cur BULK COLLECT INTO
19456 l_array_entity_id
19457 , l_array_legal_entity_id
19458 , l_array_entity_code
19459 , l_array_transaction_num
19460 , l_array_event_id
19461 , l_array_class_code
19462 , l_array_event_type
19463 , l_array_event_number
19464 , l_array_event_date
19465 , l_array_transaction_date
19466 , l_array_reference_num_1
19467 , l_array_reference_num_2
19468 , l_array_reference_num_3
19469 , l_array_reference_num_4
19470 , l_array_reference_char_1
19471 , l_array_reference_char_2
19472 , l_array_reference_char_3
19476 , l_array_reference_date_3
19473 , l_array_reference_char_4
19474 , l_array_reference_date_1
19475 , l_array_reference_date_2
19477 , l_array_reference_date_4
19478 , l_array_event_created_by
19479 , l_array_budgetary_control_flag
19480 , l_array_source_1
19481 , l_array_source_2
19482 , l_array_source_10
19483 , l_array_source_11
19484 , l_array_source_12
19485 , l_array_source_13
19486 , l_array_source_15
19487 , l_array_source_16
19488 LIMIT l_rows;
19489 --
19490 IF (C_LEVEL_EVENT >= g_log_level) THEN
19491 trace
19492 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
19493 ,p_level => C_LEVEL_EVENT
19494 ,p_module => l_log_module);
19495 END IF;
19496 --
19497 EXIT WHEN l_array_entity_id.COUNT = 0;
19498
19499 -- initialize arrays
19500 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
19501 XLA_AE_LINES_PKG.g_rec_lines := NULL;
19502
19503 --
19504 -- Bug 4458708
19505 --
19506 XLA_AE_LINES_PKG.g_LineNumber := 0;
19507
19508
19509 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
19510 g_last_hdr_idx := l_array_event_id.LAST;
19511 --
19512 -- loop for the headers. Each iteration is for each header extract row
19513 -- fetched in header cursor
19514 --
19515 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
19516
19517 --
19518 -- set event info as cache for other routines to refer event attributes
19519 --
19520 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
19521 (p_application_id => p_application_id
19522 ,p_primary_ledger_id => p_primary_ledger_id
19523 ,p_base_ledger_id => p_base_ledger_id
19524 ,p_target_ledger_id => p_target_ledger_id
19525 ,p_entity_id => l_array_entity_id(hdr_idx)
19526 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
19527 ,p_entity_code => l_array_entity_code(hdr_idx)
19528 ,p_transaction_num => l_array_transaction_num(hdr_idx)
19529 ,p_event_id => l_array_event_id(hdr_idx)
19530 ,p_event_class_code => l_array_class_code(hdr_idx)
19531 ,p_event_type_code => l_array_event_type(hdr_idx)
19532 ,p_event_number => l_array_event_number(hdr_idx)
19533 ,p_event_date => l_array_event_date(hdr_idx)
19534 ,p_transaction_date => l_array_transaction_date(hdr_idx)
19535 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
19536 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
19537 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
19538 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
19539 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
19540 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
19541 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
19542 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
19543 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
19544 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
19545 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
19546 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
19547 ,p_event_created_by => l_array_event_created_by(hdr_idx)
19548 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
19549
19550 --
19551 -- set the status of entry to C_VALID (0)
19552 --
19553 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
19554
19555 --
19556 -- initialize a row for ae header
19557 --
19558 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
19559
19560 l_event_id := l_array_event_id(hdr_idx);
19561
19562 --
19563 -- storing the hdr_idx for event. May be used by line cursor.
19564 --
19565 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
19566
19567 --
19568 -- store sources from header extract. This can be improved to
19569 -- store only those sources from header extract that may be used in lines
19570 --
19571
19572 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
19573 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
19574 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
19575 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
19576 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
19577 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
19578 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
19579 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
19580
19581 --
19582 -- initilaize the status of ae headers for diffrent balance types
19583 -- the status is initialised to C_NOT_CREATED (2)
19584 --
19585 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
19586 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
19587 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
19588
19589 --
19590 -- call api to validate and store accounting attributes for header
19591 --
19592
19593 ------------------------------------------------------------
19594 -- Accrual Reversal : to get date for Standard Source (NONE)
19595 ------------------------------------------------------------
19596 l_acc_rev_gl_date_source := NULL;
19597
19598 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
19602
19599 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
19600 l_rec_acct_attrs.array_acct_attr_code(2) := 'TRX_ACCT_REVERSAL_OPTION';
19601 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_16');
19603
19604 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
19605
19606 XLA_AE_HEADER_PKG.SetJeCategoryName;
19607
19608 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
19609 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
19610 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
19611 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
19612 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
19613
19614
19615 --
19616 xla_ae_header_pkg.SetHdrDescription(
19617 p_description => Description_1 (
19618 p_application_id => p_application_id
19619 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
19620 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
19621 )
19622 );
19623 --
19624
19625 -- No header level analytical criteria
19626
19627 --
19628 --accounting attribute enhancement, bug 3612931
19629 --
19630 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_16'), 1,30);
19631
19632 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
19633 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
19634
19635 xla_accounting_err_pkg.build_message
19636 (p_appli_s_name => 'XLA'
19637 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
19638 ,p_token_1 => 'ACCT_ATTR_NAME'
19639 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
19640 ,p_token_2 => 'PRODUCT_NAME'
19641 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
19642 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
19643 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
19644 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
19645
19646 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
19647 --
19648 -- following sets the accounting attributes needed to reverse
19649 -- accounting for a distributeion
19650 --
19651 xla_ae_lines_pkg.SetTrxReversalAttrs
19652 (p_event_id => l_event_id
19653 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
19654 ,p_trx_reversal_source => l_trx_reversal_source);
19655
19656 END IF;
19657
19658
19659 ----------------------------------------------------------------
19660 -- 4262811 - update the header statuses to invalid in need be
19661 ----------------------------------------------------------------
19662 --
19663 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
19664
19665
19666 -----------------------------------------------
19667 -- No accrual reversal for the event class/type
19668 -----------------------------------------------
19669 ----------------------------------------------------------------
19670
19671 --
19672 -- this ends the header loop iteration for one bulk fetch
19673 --
19674 END LOOP;
19675
19676 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
19677 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
19678
19679 --
19680 -- insert dummy rows into lines gt table that were created due to
19681 -- transaction reversals
19682 --
19683 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
19684 l_result := XLA_AE_LINES_PKG.InsertLines;
19685 END IF;
19686
19687 --
19688 -- reset the temp_line_num for each set of events fetched from header
19689 -- cursor rather than doing it for each new event in line cursor
19690 -- Bug 3939231
19691 --
19692 xla_ae_lines_pkg.g_temp_line_num := 0;
19693
19694
19695
19696 --
19697 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
19698 --
19699 --
19700 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
19701
19702 trace
19703 (p_msg => 'SQL - FETCH line_cur'
19704 ,p_level => C_LEVEL_STATEMENT
19705 ,p_module => l_log_module);
19706
19707 END IF;
19708 --
19709 --
19710 LOOP
19711 --
19712 FETCH line_cur BULK COLLECT INTO
19713 l_array_entity_id
19714 , l_array_legal_entity_id
19715 , l_array_entity_code
19716 , l_array_transaction_num
19717 , l_array_event_id
19718 , l_array_class_code
19719 , l_array_event_type
19720 , l_array_event_number
19721 , l_array_event_date
19722 , l_array_transaction_date
19723 , l_array_reference_num_1
19724 , l_array_reference_num_2
19725 , l_array_reference_num_3
19726 , l_array_reference_num_4
19727 , l_array_reference_char_1
19728 , l_array_reference_char_2
19729 , l_array_reference_char_3
19730 , l_array_reference_char_4
19731 , l_array_reference_date_1
19732 , l_array_reference_date_2
19733 , l_array_reference_date_3
19734 , l_array_reference_date_4
19735 , l_array_event_created_by
19736 , l_array_budgetary_control_flag
19737 , l_array_extract_line_num
19738 , l_array_source_5
19739 , l_array_source_6
19740 , l_array_source_6_meaning
19741 , l_array_source_7
19742 , l_array_source_8
19746 --
19743 , l_array_source_9
19744 LIMIT l_rows;
19745
19747 IF (C_LEVEL_EVENT >= g_log_level) THEN
19748 trace
19749 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
19750 ,p_level => C_LEVEL_EVENT
19751 ,p_module => l_log_module);
19752 END IF;
19753 --
19754 EXIT WHEN l_array_entity_id.count = 0;
19755
19756 XLA_AE_LINES_PKG.g_rec_lines := null;
19757
19758 --
19759 -- Bug 4458708
19760 --
19761 XLA_AE_LINES_PKG.g_LineNumber := 0;
19762 --
19763 --
19764
19765 FOR Idx IN 1..l_array_event_id.count LOOP
19766 --
19767 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
19768 --
19769 l_event_id := l_array_event_id(idx); -- 5648433
19770
19771 --
19772 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
19773 --
19774
19775 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
19776 (g_array_event(l_event_id).array_value_num('header_index'))
19777 ,'N'
19778 ) <> 'Y'
19779 THEN
19780 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
19781 trace
19782 (p_msg => 'Trancaction revesal option is not Y '
19783 ,p_level => C_LEVEL_STATEMENT
19784 ,p_module => l_log_module);
19785 END IF;
19786
19787 --
19788 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
19789 --
19790 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
19791 --
19792 -- set event info as cache for other routines to refer event attributes
19793 --
19794
19795 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
19796 l_previous_event_id := l_event_id;
19797
19798 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
19799 (p_application_id => p_application_id
19800 ,p_primary_ledger_id => p_primary_ledger_id
19801 ,p_base_ledger_id => p_base_ledger_id
19802 ,p_target_ledger_id => p_target_ledger_id
19803 ,p_entity_id => l_array_entity_id(Idx)
19804 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
19805 ,p_entity_code => l_array_entity_code(Idx)
19806 ,p_transaction_num => l_array_transaction_num(Idx)
19807 ,p_event_id => l_array_event_id(Idx)
19808 ,p_event_class_code => l_array_class_code(Idx)
19809 ,p_event_type_code => l_array_event_type(Idx)
19810 ,p_event_number => l_array_event_number(Idx)
19811 ,p_event_date => l_array_event_date(Idx)
19812 ,p_transaction_date => l_array_transaction_date(Idx)
19813 ,p_reference_num_1 => l_array_reference_num_1(Idx)
19814 ,p_reference_num_2 => l_array_reference_num_2(Idx)
19815 ,p_reference_num_3 => l_array_reference_num_3(Idx)
19816 ,p_reference_num_4 => l_array_reference_num_4(Idx)
19817 ,p_reference_char_1 => l_array_reference_char_1(Idx)
19818 ,p_reference_char_2 => l_array_reference_char_2(Idx)
19819 ,p_reference_char_3 => l_array_reference_char_3(Idx)
19820 ,p_reference_char_4 => l_array_reference_char_4(Idx)
19821 ,p_reference_date_1 => l_array_reference_date_1(Idx)
19822 ,p_reference_date_2 => l_array_reference_date_2(Idx)
19823 ,p_reference_date_3 => l_array_reference_date_3(Idx)
19824 ,p_reference_date_4 => l_array_reference_date_4(Idx)
19825 ,p_event_created_by => l_array_event_created_by(Idx)
19826 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
19827 --
19828 END IF;
19829
19830
19831
19832 --
19833 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
19834
19835 l_acct_reversal_source := SUBSTR(NULL, 1,30);
19836
19837 IF l_continue_with_lines THEN
19838 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
19839 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
19840
19841 xla_accounting_err_pkg.build_message
19842 (p_appli_s_name => 'XLA'
19843 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
19844 ,p_token_1 => 'LINE_NUMBER'
19845 ,p_value_1 => l_array_extract_line_num(Idx)
19846 ,p_token_2 => 'PRODUCT_NAME'
19847 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
19848 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
19849 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
19850 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
19851
19852 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
19853 --
19854 -- following sets the accounting attributes needed to reverse
19855 -- accounting for a distributeion
19856 --
19857
19858 --
19859 -- 5217187
19860 --
19861 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
19862 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
19863 g_array_event(l_event_id).array_value_num('header_index'));
19864 --
19865 --
19866
19867 -- No reversal code generated
19868
19869 xla_ae_lines_pkg.SetAcctReversalAttrs
19870 (p_event_id => l_event_id
19871 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
19872 ,p_calculate_acctd_flag => l_calculate_acctd_flag
19873 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
19877 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
19874 END IF;
19875
19876 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
19878
19879 --
19880 AcctLineType_10 (
19881 p_application_id => p_application_id
19882 ,p_event_id => l_event_id
19883 ,p_calculate_acctd_flag => l_calculate_acctd_flag
19884 ,p_calculate_g_l_flag => l_calculate_g_l_flag
19885 ,p_actual_flag => l_actual_flag
19886 ,p_balance_type_code => l_balance_type_code
19887 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
19888
19889 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
19890 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
19891 , p_source_5 => l_array_source_5(Idx)
19892 , p_source_6 => l_array_source_6(Idx)
19893 , p_source_6_meaning => l_array_source_6_meaning(Idx)
19894 , p_source_7 => l_array_source_7(Idx)
19895 , p_source_8 => l_array_source_8(Idx)
19896 , p_source_9 => l_array_source_9(Idx)
19897 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
19898 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
19899 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
19900 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
19901 );
19902 If(l_balance_type_code = 'A') THEN
19903 l_actual_gain_loss_ref := l_gain_or_loss_ref;
19904 END IF;
19905
19906 --
19907
19908
19909 --
19910 AcctLineType_11 (
19911 p_application_id => p_application_id
19912 ,p_event_id => l_event_id
19913 ,p_calculate_acctd_flag => l_calculate_acctd_flag
19914 ,p_calculate_g_l_flag => l_calculate_g_l_flag
19915 ,p_actual_flag => l_actual_flag
19916 ,p_balance_type_code => l_balance_type_code
19917 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
19918
19919 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
19920 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
19921 , p_source_5 => l_array_source_5(Idx)
19922 , p_source_6 => l_array_source_6(Idx)
19923 , p_source_6_meaning => l_array_source_6_meaning(Idx)
19924 , p_source_7 => l_array_source_7(Idx)
19925 , p_source_8 => l_array_source_8(Idx)
19926 , p_source_9 => l_array_source_9(Idx)
19927 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
19928 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
19929 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
19930 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
19931 );
19932 If(l_balance_type_code = 'A') THEN
19933 l_actual_gain_loss_ref := l_gain_or_loss_ref;
19934 END IF;
19935
19936 --
19937
19938 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
19939 -- or secondary ledger that has different currency with primary
19940 -- or alc that is calculated by sla
19941 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
19942 (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'))
19943
19944 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
19945 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
19946 AND (l_actual_flag = 'A')) THEN
19947 XLA_AE_LINES_PKG.CreateGainOrLossLines(
19948 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
19949 ,p_application_id => p_application_id
19950 ,p_amb_context_code => 'DEFAULT'
19951 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
19952 ,p_event_class_code => C_EVENT_CLASS_CODE
19953 ,p_event_type_code => C_EVENT_TYPE_CODE
19954
19955 ,p_gain_ccid => -1
19956 ,p_loss_ccid => -1
19957
19958 ,p_actual_flag => l_actual_flag
19959 ,p_enc_flag => null
19960 ,p_actual_g_l_ref => l_actual_gain_loss_ref
19961 ,p_enc_g_l_ref => null
19962 );
19963 END IF;
19964 END IF;
19965 END IF;
19966
19967 ELSE
19968 --
19969 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
19970 --
19971 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
19972 trace
19973 (p_msg => 'Trancaction revesal option is Y'
19974 ,p_level => C_LEVEL_STATEMENT
19975 ,p_module => l_log_module);
19976 END IF;
19977 END IF;
19978
19979 END LOOP;
19980 l_result := XLA_AE_LINES_PKG.InsertLines ;
19981 end loop;
19982 close line_cur;
19983
19984
19985 --
19986 -- insert headers into xla_ae_headers_gt table
19987 --
19988 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
19989
19990 -- insert into errors table here.
19991
19992 END LOOP;
19993
19994 --
19995 -- 4865292
19996 --
19997 -- Compare g_hdr_extract_count with event count in
19998 -- CreateHeadersAndLines.
19999 --
20000 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
20001
20002 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
20003 trace (p_msg => '# rows extracted from header extract objects '
20004 || ' (running total): '
20005 || g_hdr_extract_count
20006 ,p_level => C_LEVEL_STATEMENT
20007 ,p_module => l_log_module);
20008 END IF;
20009
20010 CLOSE header_cur;
20011 --
20012
20013 --
20014 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20015 trace
20016 (p_msg => 'END of EventClass_35'
20017 ,p_level => C_LEVEL_PROCEDURE
20021 RETURN l_result;
20018 ,p_module => l_log_module);
20019 END IF;
20020 --
20022 EXCEPTION
20023 WHEN xla_exceptions_pkg.application_exception THEN
20024
20025 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
20026
20027
20028 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
20029
20030 RAISE;
20031 WHEN OTHERS THEN
20032 xla_exceptions_pkg.raise_message
20033 (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_35');
20034 END EventClass_35;
20035 --
20036
20037 ---------------------------------------
20038 --
20039 -- PRIVATE PROCEDURE
20040 -- insert_sources_36
20041 --
20042 ----------------------------------------
20043 --
20044 PROCEDURE insert_sources_36(
20045 p_target_ledger_id IN NUMBER
20046 , p_language IN VARCHAR2
20047 , p_sla_ledger_id IN NUMBER
20048 , p_pad_start_date IN DATE
20049 , p_pad_end_date IN DATE
20050 )
20051 IS
20052
20053 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'GENERAL_LOSS_PROVISION_ALL';
20054 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'GENERAL_LOSS_PROVISION';
20055 p_apps_owner VARCHAR2(30);
20056 l_log_module VARCHAR2(240);
20057 BEGIN
20058 IF g_log_enabled THEN
20059 l_log_module := C_DEFAULT_MODULE||'.insert_sources_36';
20060 END IF;
20061 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20062
20063 trace
20064 (p_msg => 'BEGIN of insert_sources_36'
20065 ,p_level => C_LEVEL_PROCEDURE
20066 ,p_module => l_log_module);
20067
20068 END IF;
20069
20070 -- select APPS owner
20071 SELECT oracle_username
20072 INTO p_apps_owner
20073 FROM fnd_oracle_userid
20074 WHERE read_only_flag = 'U'
20075 ;
20076
20077 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
20078 trace
20079 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
20080 ' - p_language = '||p_language||
20081 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
20082 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
20083 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
20084 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
20085 ,p_level => C_LEVEL_STATEMENT
20086 ,p_module => l_log_module);
20087 END IF;
20088
20089
20090 --
20091 INSERT INTO xla_diag_sources --hdr2
20092 (
20093 event_id
20094 , ledger_id
20095 , sla_ledger_id
20096 , description_language
20097 , object_name
20098 , object_type_code
20099 , line_number
20100 , source_application_id
20101 , source_type_code
20102 , source_code
20103 , source_value
20104 , source_meaning
20105 , created_by
20106 , creation_date
20107 , last_update_date
20108 , last_updated_by
20109 , last_update_login
20110 , program_update_date
20111 , program_application_id
20112 , program_id
20113 , request_id
20114 )
20115 SELECT
20116 event_id
20117 , p_target_ledger_id
20118 , p_sla_ledger_id
20119 , p_language
20120 , object_name
20121 , object_type_code
20122 , line_number
20123 , source_application_id
20124 , source_type_code
20125 , source_code
20126 , SUBSTR(source_value ,1,1996)
20127 , SUBSTR(source_meaning ,1,200)
20128 , xla_environment_pkg.g_Usr_Id
20129 , TRUNC(SYSDATE)
20130 , TRUNC(SYSDATE)
20131 , xla_environment_pkg.g_Usr_Id
20132 , xla_environment_pkg.g_Login_Id
20133 , TRUNC(SYSDATE)
20134 , xla_environment_pkg.g_Prog_Appl_Id
20135 , xla_environment_pkg.g_Prog_Id
20136 , xla_environment_pkg.g_Req_Id
20137 FROM (
20138 SELECT xet.event_id event_id
20139 , 0 line_number
20140 , CASE r
20141 WHEN 1 THEN 'OKL_CMN_EXTRACT_HDR_V'
20142 WHEN 2 THEN 'OKL_CMN_EXTRACT_HDR_V'
20143 WHEN 3 THEN 'OKL_CMN_EXTRACT_HDR_V'
20144 WHEN 4 THEN 'OKL_CMN_EXTRACT_HDR_V'
20145 WHEN 5 THEN 'OKL_CMN_EXTRACT_HDR_V'
20146 WHEN 6 THEN 'OKL_CMN_EXTRACT_HDR_V'
20147 WHEN 7 THEN 'OKL_CMN_EXTRACT_HDR_V'
20148 WHEN 8 THEN 'OKL_CMN_EXTRACT_HDR_V'
20149
20150 ELSE null
20151 END object_name
20152 , CASE r
20153 WHEN 1 THEN 'HEADER'
20154 WHEN 2 THEN 'HEADER'
20155 WHEN 3 THEN 'HEADER'
20156 WHEN 4 THEN 'HEADER'
20157 WHEN 5 THEN 'HEADER'
20158 WHEN 6 THEN 'HEADER'
20159 WHEN 7 THEN 'HEADER'
20160 WHEN 8 THEN 'HEADER'
20161
20162 ELSE null
20163 END object_type_code
20164 , CASE r
20165 WHEN 1 THEN '540'
20166 WHEN 2 THEN '540'
20167 WHEN 3 THEN '540'
20168 WHEN 4 THEN '540'
20169 WHEN 5 THEN '540'
20170 WHEN 6 THEN '540'
20171 WHEN 7 THEN '540'
20172 WHEN 8 THEN '540'
20173
20174 ELSE null
20178 WHEN 1 THEN 'TEH_CONTRACT_NUMBER'
20175 END source_application_id
20176 , 'S' source_type_code
20177 , CASE r
20179 WHEN 2 THEN 'TCN_CONTRACT_PRODUCT_NAME'
20180 WHEN 3 THEN 'TCN_CURRENCY_CODE'
20181 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE'
20182 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE'
20183 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE'
20184 WHEN 7 THEN 'GL_DATE'
20185 WHEN 8 THEN 'TCN_ACCOUNTING_REVERSAL_FLAG'
20186
20187 ELSE null
20188 END source_code
20189 , CASE r
20190 WHEN 1 THEN TO_CHAR(h1.TEH_CONTRACT_NUMBER)
20191 WHEN 2 THEN TO_CHAR(h1.TCN_CONTRACT_PRODUCT_NAME)
20192 WHEN 3 THEN TO_CHAR(h1.TCN_CURRENCY_CODE)
20193 WHEN 4 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_DATE)
20194 WHEN 5 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_RATE)
20195 WHEN 6 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_TYPE)
20196 WHEN 7 THEN TO_CHAR(h1.GL_DATE)
20197 WHEN 8 THEN TO_CHAR(h1.TCN_ACCOUNTING_REVERSAL_FLAG)
20198
20199 ELSE null
20200 END source_value
20201 , null source_meaning
20202 FROM xla_events_gt xet
20203 , OKL_CMN_EXTRACT_HDR_V h1
20204 ,(select rownum r from all_objects where rownum <= 8 and owner = p_apps_owner)
20205 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
20206 AND xet.event_class_code = C_EVENT_CLASS_CODE
20207 AND h1.event_id = xet.event_id
20208
20209 )
20210 ;
20211 --
20212 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
20213
20214 trace
20215 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
20216 ,p_level => C_LEVEL_STATEMENT
20217 ,p_module => l_log_module);
20218
20219 END IF;
20220 --
20221
20222
20223
20224 --
20225 INSERT INTO xla_diag_sources --line2
20226 (
20227 event_id
20228 , ledger_id
20229 , sla_ledger_id
20230 , description_language
20231 , object_name
20232 , object_type_code
20233 , line_number
20234 , source_application_id
20235 , source_type_code
20236 , source_code
20237 , source_value
20238 , source_meaning
20239 , created_by
20240 , creation_date
20241 , last_update_date
20242 , last_updated_by
20243 , last_update_login
20244 , program_update_date
20245 , program_application_id
20246 , program_id
20247 , request_id
20248 )
20249 SELECT event_id
20250 , p_target_ledger_id
20251 , p_sla_ledger_id
20252 , p_language
20253 , object_name
20254 , object_type_code
20255 , line_number
20256 , source_application_id
20257 , source_type_code
20258 , source_code
20259 , SUBSTR(source_value,1,1996)
20260 , SUBSTR(source_meaning ,1,200)
20261 , xla_environment_pkg.g_Usr_Id
20262 , TRUNC(SYSDATE)
20263 , TRUNC(SYSDATE)
20264 , xla_environment_pkg.g_Usr_Id
20265 , xla_environment_pkg.g_Login_Id
20266 , TRUNC(SYSDATE)
20267 , xla_environment_pkg.g_Prog_Appl_Id
20268 , xla_environment_pkg.g_Prog_Id
20269 , xla_environment_pkg.g_Req_Id
20270 FROM (
20271 SELECT xet.event_id event_id
20272 , l2.line_number line_number
20273 , CASE r
20274 WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V'
20275 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V'
20276 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V'
20277 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V'
20278 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V'
20279
20280 ELSE null
20281 END object_name
20282 , CASE r
20283 WHEN 1 THEN 'LINE'
20284 WHEN 2 THEN 'LINE'
20285 WHEN 3 THEN 'LINE'
20286 WHEN 4 THEN 'LINE'
20287 WHEN 5 THEN 'LINE'
20288
20289 ELSE null
20290 END object_type_code
20291 , CASE r
20292 WHEN 1 THEN '540'
20293 WHEN 2 THEN '540'
20294 WHEN 3 THEN '540'
20295 WHEN 4 THEN '540'
20296 WHEN 5 THEN '540'
20297
20298 ELSE null
20299 END source_application_id
20300 , 'S' source_type_code
20301 , CASE r
20302 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID'
20303 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE'
20304 WHEN 3 THEN 'DIST_ID'
20305 WHEN 4 THEN 'DIST_TYPE'
20306 WHEN 5 THEN 'DIST_ENTERED_AMOUNT'
20307
20308 ELSE null
20309 END source_code
20310 , CASE r
20311 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
20312 WHEN 2 THEN TO_CHAR(l2.DIST_AE_LINE_TYPE_CODE)
20313 WHEN 3 THEN TO_CHAR(l2.DIST_ID)
20314 WHEN 4 THEN TO_CHAR(l2.DIST_TYPE)
20315 WHEN 5 THEN TO_CHAR(l2.DIST_ENTERED_AMOUNT)
20316
20317 ELSE null
20318 END source_value
20322 ELSE null
20319 , CASE r
20320 WHEN 2 THEN fvl6.meaning
20321
20323 END source_meaning
20324 FROM xla_events_gt xet
20325 , OKL_CMN_EXTRACT_LINE_V l2
20326 , fnd_lookup_values fvl6
20327 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
20328 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
20329 AND xet.event_class_code = C_EVENT_CLASS_CODE
20330 AND l2.event_id = xet.event_id
20331 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
20332 AND fvl6.lookup_code(+) = l2.DIST_AE_LINE_TYPE_CODE
20333 AND fvl6.view_application_id(+) = 0
20334 AND fvl6.language(+) = USERENV('LANG')
20335
20336 )
20337 ;
20338 --
20339 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
20340
20341 trace
20342 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
20343 ,p_level => C_LEVEL_STATEMENT
20344 ,p_module => l_log_module);
20345
20346 END IF;
20347
20348
20349 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20350 trace
20351 (p_msg => 'END of insert_sources_36'
20352 ,p_level => C_LEVEL_PROCEDURE
20353 ,p_module => l_log_module);
20354 END IF;
20355 EXCEPTION
20356 WHEN xla_exceptions_pkg.application_exception THEN
20357 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
20358 trace
20359 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
20360 ,p_level => C_LEVEL_EXCEPTION
20361 ,p_module => l_log_module);
20362 END IF;
20363 RAISE;
20364 WHEN OTHERS THEN
20365 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
20366 trace
20367 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
20368 ,p_level => C_LEVEL_EXCEPTION
20369 ,p_module => l_log_module);
20370 END IF;
20371 xla_exceptions_pkg.raise_message
20372 (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_36');
20373 END insert_sources_36;
20374 --
20375
20376 ---------------------------------------
20377 --
20378 -- PRIVATE FUNCTION
20379 -- EventClass_36
20380 --
20381 ----------------------------------------
20382 --
20383 FUNCTION EventClass_36
20384 (p_application_id IN NUMBER
20385 ,p_base_ledger_id IN NUMBER
20386 ,p_target_ledger_id IN NUMBER
20387 ,p_language IN VARCHAR2
20388 ,p_currency_code IN VARCHAR2
20389 ,p_sla_ledger_id IN NUMBER
20390 ,p_pad_start_date IN DATE
20391 ,p_pad_end_date IN DATE
20392 ,p_primary_ledger_id IN NUMBER)
20393 RETURN BOOLEAN IS
20394 --
20395 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'GENERAL_LOSS_PROVISION_ALL';
20396 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'GENERAL_LOSS_PROVISION';
20397
20398 l_calculate_acctd_flag VARCHAR2(1) :='Y';
20399 l_calculate_g_l_flag VARCHAR2(1) :='Y';
20400 --
20401 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
20402 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
20403 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
20404 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
20405 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
20406 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
20407 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
20408 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
20409 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
20410 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
20411 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
20412 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
20413 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
20414 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
20415 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
20416 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
20417 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
20418 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
20419 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
20420 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
20421 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
20422 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
20423 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
20424 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
20425
20426 l_event_id NUMBER;
20427 l_previous_event_id NUMBER;
20428 l_first_event_id NUMBER;
20429 l_last_event_id NUMBER;
20430
20431 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
20432 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
20433 --
20434 --
20435 l_result BOOLEAN := TRUE;
20436 l_rows NUMBER := 1000;
20437 l_event_type_name VARCHAR2(80) := 'All';
20438 l_event_class_name VARCHAR2(80) := 'General Loss Provision';
20439 l_description VARCHAR2(4000);
20440 l_transaction_reversal NUMBER;
20441 l_ae_header_id NUMBER;
20445 l_acct_reversal_source VARCHAR2(30);
20442 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
20443 l_log_module VARCHAR2(240);
20444 --
20446 l_trx_reversal_source VARCHAR2(30);
20447
20448 l_continue_with_lines BOOLEAN := TRUE;
20449 --
20450 l_acc_rev_gl_date_source DATE; -- 4262811
20451 --
20452 type t_array_event_id is table of number index by binary_integer;
20453
20454 l_rec_array_event t_rec_array_event;
20455 l_null_rec_array_event t_rec_array_event;
20456 l_array_ae_header_id xla_number_array_type;
20457 l_actual_flag VARCHAR2(1) := NULL;
20458 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
20459 l_balance_type_code VARCHAR2(1) :=NULL;
20460 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
20461
20462 --
20463 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
20464 --
20465
20466 TYPE t_array_source_1 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TEH_CONTRACT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
20467 TYPE t_array_source_2 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CONTRACT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
20468 TYPE t_array_source_10 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
20469 TYPE t_array_source_11 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
20470 TYPE t_array_source_12 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
20471 TYPE t_array_source_13 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
20472 TYPE t_array_source_15 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
20473 TYPE t_array_source_16 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
20474
20475 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
20476 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
20477 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
20478 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
20479 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
20480
20481 l_array_source_1 t_array_source_1;
20482 l_array_source_2 t_array_source_2;
20483 l_array_source_10 t_array_source_10;
20484 l_array_source_11 t_array_source_11;
20485 l_array_source_12 t_array_source_12;
20486 l_array_source_13 t_array_source_13;
20487 l_array_source_15 t_array_source_15;
20488 l_array_source_16 t_array_source_16;
20489
20490 l_array_source_5 t_array_source_5;
20491 l_array_source_6 t_array_source_6;
20492 l_array_source_6_meaning t_array_lookup_meaning;
20493 l_array_source_7 t_array_source_7;
20494 l_array_source_8 t_array_source_8;
20495 l_array_source_9 t_array_source_9;
20496
20497 --
20498 CURSOR header_cur
20499 IS
20500 SELECT /*+ leading(xet) cardinality(xet,1) */
20501 -- Event Class Code: GENERAL_LOSS_PROVISION
20502 xet.entity_id
20503 ,xet.legal_entity_id
20504 ,xet.entity_code
20505 ,xet.transaction_number
20506 ,xet.event_id
20507 ,xet.event_class_code
20508 ,xet.event_type_code
20509 ,xet.event_number
20510 ,xet.event_date
20511 ,xet.transaction_date
20512 ,xet.reference_num_1
20513 ,xet.reference_num_2
20514 ,xet.reference_num_3
20515 ,xet.reference_num_4
20516 ,xet.reference_char_1
20517 ,xet.reference_char_2
20518 ,xet.reference_char_3
20519 ,xet.reference_char_4
20520 ,xet.reference_date_1
20521 ,xet.reference_date_2
20522 ,xet.reference_date_3
20523 ,xet.reference_date_4
20524 ,xet.event_created_by
20525 ,xet.budgetary_control_flag
20526 , h1.TEH_CONTRACT_NUMBER source_1
20527 , h1.TCN_CONTRACT_PRODUCT_NAME source_2
20528 , h1.TCN_CURRENCY_CODE source_10
20529 , h1.TCN_CURR_CONVERSION_DATE source_11
20530 , h1.TCN_CURR_CONVERSION_RATE source_12
20531 , h1.TCN_CURR_CONVERSION_TYPE source_13
20532 , h1.GL_DATE source_15
20533 , h1.TCN_ACCOUNTING_REVERSAL_FLAG source_16
20534 FROM xla_events_gt xet
20535 , OKL_CMN_EXTRACT_HDR_V h1
20536 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
20537 and xet.event_class_code = C_EVENT_CLASS_CODE
20538 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
20539
20540 ORDER BY event_id
20541 ;
20542
20543
20544 --
20545 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
20546 IS
20547 SELECT /*+ leading(xet) cardinality(xet,1) */
20548 -- Event Class Code: GENERAL_LOSS_PROVISION
20549 xet.entity_id
20550 ,xet.legal_entity_id
20551 ,xet.entity_code
20552 ,xet.transaction_number
20553 ,xet.event_id
20554 ,xet.event_class_code
20555 ,xet.event_type_code
20556 ,xet.event_number
20557 ,xet.event_date
20558 ,xet.transaction_date
20559 ,xet.reference_num_1
20560 ,xet.reference_num_2
20561 ,xet.reference_num_3
20562 ,xet.reference_num_4
20563 ,xet.reference_char_1
20564 ,xet.reference_char_2
20565 ,xet.reference_char_3
20566 ,xet.reference_char_4
20567 ,xet.reference_date_1
20568 ,xet.reference_date_2
20569 ,xet.reference_date_3
20570 ,xet.reference_date_4
20571 ,xet.event_created_by
20572 ,xet.budgetary_control_flag
20573 , l2.LINE_NUMBER
20574 , l2.DIST_CODE_COMBINATION_ID source_5
20575 , l2.DIST_AE_LINE_TYPE_CODE source_6
20576 , fvl6.meaning source_6_meaning
20580 FROM xla_events_gt xet
20577 , l2.DIST_ID source_7
20578 , l2.DIST_TYPE source_8
20579 , l2.DIST_ENTERED_AMOUNT source_9
20581 , OKL_CMN_EXTRACT_LINE_V l2
20582 , fnd_lookup_values fvl6
20583 WHERE xet.event_id between x_first_event_id and x_last_event_id
20584 and xet.event_date between p_pad_start_date and p_pad_end_date
20585 and xet.event_class_code = C_EVENT_CLASS_CODE
20586 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
20587 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
20588 AND fvl6.lookup_code(+) = l2.DIST_AE_LINE_TYPE_CODE
20589 AND fvl6.view_application_id(+) = 0
20590 AND fvl6.language(+) = USERENV('LANG')
20591 ;
20592
20593 --
20594 BEGIN
20595 IF g_log_enabled THEN
20596 l_log_module := C_DEFAULT_MODULE||'.EventClass_36';
20597 END IF;
20598 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20599 trace
20600 (p_msg => 'BEGIN of EventClass_36'
20601 ,p_level => C_LEVEL_PROCEDURE
20602 ,p_module => l_log_module);
20603 END IF;
20604
20605 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
20606 trace
20607 (p_msg => 'p_application_id = '||p_application_id||
20608 ' - p_base_ledger_id = '||p_base_ledger_id||
20609 ' - p_target_ledger_id = '||p_target_ledger_id||
20610 ' - p_language = '||p_language||
20611 ' - p_currency_code = '||p_currency_code||
20612 ' - p_sla_ledger_id = '||p_sla_ledger_id
20613 ,p_level => C_LEVEL_STATEMENT
20614 ,p_module => l_log_module);
20615 END IF;
20616 --
20617 -- initialze arrays
20618 --
20619 g_array_event.DELETE;
20620 l_rec_array_event := l_null_rec_array_event;
20621 --
20622 --------------------------------------
20623 -- 4262811 Initialze MPA Line Number
20624 --------------------------------------
20625 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
20626
20627 --
20628
20629 --
20630 OPEN header_cur;
20631 --
20632 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
20633 trace
20634 (p_msg => 'SQL - FETCH header_cur'
20635 ,p_level => C_LEVEL_STATEMENT
20636 ,p_module => l_log_module);
20637 END IF;
20638 --
20639 LOOP
20640 FETCH header_cur BULK COLLECT INTO
20641 l_array_entity_id
20642 , l_array_legal_entity_id
20643 , l_array_entity_code
20644 , l_array_transaction_num
20645 , l_array_event_id
20646 , l_array_class_code
20647 , l_array_event_type
20648 , l_array_event_number
20649 , l_array_event_date
20650 , l_array_transaction_date
20651 , l_array_reference_num_1
20652 , l_array_reference_num_2
20653 , l_array_reference_num_3
20654 , l_array_reference_num_4
20655 , l_array_reference_char_1
20656 , l_array_reference_char_2
20657 , l_array_reference_char_3
20658 , l_array_reference_char_4
20659 , l_array_reference_date_1
20660 , l_array_reference_date_2
20661 , l_array_reference_date_3
20662 , l_array_reference_date_4
20663 , l_array_event_created_by
20664 , l_array_budgetary_control_flag
20665 , l_array_source_1
20666 , l_array_source_2
20667 , l_array_source_10
20668 , l_array_source_11
20669 , l_array_source_12
20670 , l_array_source_13
20671 , l_array_source_15
20672 , l_array_source_16
20673 LIMIT l_rows;
20674 --
20675 IF (C_LEVEL_EVENT >= g_log_level) THEN
20676 trace
20677 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
20678 ,p_level => C_LEVEL_EVENT
20679 ,p_module => l_log_module);
20680 END IF;
20681 --
20682 EXIT WHEN l_array_entity_id.COUNT = 0;
20683
20684 -- initialize arrays
20685 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
20686 XLA_AE_LINES_PKG.g_rec_lines := NULL;
20687
20688 --
20689 -- Bug 4458708
20690 --
20691 XLA_AE_LINES_PKG.g_LineNumber := 0;
20692
20693
20694 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
20695 g_last_hdr_idx := l_array_event_id.LAST;
20696 --
20697 -- loop for the headers. Each iteration is for each header extract row
20698 -- fetched in header cursor
20699 --
20700 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
20701
20702 --
20703 -- set event info as cache for other routines to refer event attributes
20704 --
20705 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
20706 (p_application_id => p_application_id
20707 ,p_primary_ledger_id => p_primary_ledger_id
20708 ,p_base_ledger_id => p_base_ledger_id
20709 ,p_target_ledger_id => p_target_ledger_id
20710 ,p_entity_id => l_array_entity_id(hdr_idx)
20711 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
20712 ,p_entity_code => l_array_entity_code(hdr_idx)
20713 ,p_transaction_num => l_array_transaction_num(hdr_idx)
20714 ,p_event_id => l_array_event_id(hdr_idx)
20715 ,p_event_class_code => l_array_class_code(hdr_idx)
20716 ,p_event_type_code => l_array_event_type(hdr_idx)
20717 ,p_event_number => l_array_event_number(hdr_idx)
20718 ,p_event_date => l_array_event_date(hdr_idx)
20719 ,p_transaction_date => l_array_transaction_date(hdr_idx)
20720 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
20721 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
20722 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
20723 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
20727 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
20724 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
20725 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
20726 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
20728 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
20729 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
20730 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
20731 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
20732 ,p_event_created_by => l_array_event_created_by(hdr_idx)
20733 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
20734
20735 --
20736 -- set the status of entry to C_VALID (0)
20737 --
20738 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
20739
20740 --
20741 -- initialize a row for ae header
20742 --
20743 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
20744
20745 l_event_id := l_array_event_id(hdr_idx);
20746
20747 --
20748 -- storing the hdr_idx for event. May be used by line cursor.
20749 --
20750 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
20751
20752 --
20753 -- store sources from header extract. This can be improved to
20754 -- store only those sources from header extract that may be used in lines
20755 --
20756
20757 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
20758 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
20759 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
20760 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
20761 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
20762 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
20763 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
20764 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
20765
20766 --
20767 -- initilaize the status of ae headers for diffrent balance types
20768 -- the status is initialised to C_NOT_CREATED (2)
20769 --
20770 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
20771 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
20772 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
20773
20774 --
20775 -- call api to validate and store accounting attributes for header
20776 --
20777
20778 ------------------------------------------------------------
20779 -- Accrual Reversal : to get date for Standard Source (NONE)
20780 ------------------------------------------------------------
20781 l_acc_rev_gl_date_source := NULL;
20782
20783 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
20784 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
20785 l_rec_acct_attrs.array_acct_attr_code(2) := 'TRX_ACCT_REVERSAL_OPTION';
20786 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_16');
20787
20788
20789 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
20790
20791 XLA_AE_HEADER_PKG.SetJeCategoryName;
20792
20793 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
20794 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
20795 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
20796 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
20797 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
20798
20799
20800 --
20801 xla_ae_header_pkg.SetHdrDescription(
20802 p_description => Description_1 (
20803 p_application_id => p_application_id
20804 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
20805 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
20806 )
20807 );
20808 --
20809
20810 -- No header level analytical criteria
20811
20812 --
20813 --accounting attribute enhancement, bug 3612931
20814 --
20815 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_16'), 1,30);
20816
20817 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
20818 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
20819
20820 xla_accounting_err_pkg.build_message
20821 (p_appli_s_name => 'XLA'
20822 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
20823 ,p_token_1 => 'ACCT_ATTR_NAME'
20824 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
20825 ,p_token_2 => 'PRODUCT_NAME'
20826 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
20827 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
20828 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
20829 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
20830
20831 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
20832 --
20833 -- following sets the accounting attributes needed to reverse
20834 -- accounting for a distributeion
20835 --
20836 xla_ae_lines_pkg.SetTrxReversalAttrs
20837 (p_event_id => l_event_id
20838 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
20839 ,p_trx_reversal_source => l_trx_reversal_source);
20840
20841 END IF;
20842
20843
20847 --
20844 ----------------------------------------------------------------
20845 -- 4262811 - update the header statuses to invalid in need be
20846 ----------------------------------------------------------------
20848 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
20849
20850
20851 -----------------------------------------------
20852 -- No accrual reversal for the event class/type
20853 -----------------------------------------------
20854 ----------------------------------------------------------------
20855
20856 --
20857 -- this ends the header loop iteration for one bulk fetch
20858 --
20859 END LOOP;
20860
20861 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
20862 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
20863
20864 --
20865 -- insert dummy rows into lines gt table that were created due to
20866 -- transaction reversals
20867 --
20868 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
20869 l_result := XLA_AE_LINES_PKG.InsertLines;
20870 END IF;
20871
20872 --
20873 -- reset the temp_line_num for each set of events fetched from header
20874 -- cursor rather than doing it for each new event in line cursor
20875 -- Bug 3939231
20876 --
20877 xla_ae_lines_pkg.g_temp_line_num := 0;
20878
20879
20880
20881 --
20882 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
20883 --
20884 --
20885 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
20886
20887 trace
20888 (p_msg => 'SQL - FETCH line_cur'
20889 ,p_level => C_LEVEL_STATEMENT
20890 ,p_module => l_log_module);
20891
20892 END IF;
20893 --
20894 --
20895 LOOP
20896 --
20897 FETCH line_cur BULK COLLECT INTO
20898 l_array_entity_id
20899 , l_array_legal_entity_id
20900 , l_array_entity_code
20901 , l_array_transaction_num
20902 , l_array_event_id
20903 , l_array_class_code
20904 , l_array_event_type
20905 , l_array_event_number
20906 , l_array_event_date
20907 , l_array_transaction_date
20908 , l_array_reference_num_1
20909 , l_array_reference_num_2
20910 , l_array_reference_num_3
20911 , l_array_reference_num_4
20912 , l_array_reference_char_1
20913 , l_array_reference_char_2
20914 , l_array_reference_char_3
20915 , l_array_reference_char_4
20916 , l_array_reference_date_1
20917 , l_array_reference_date_2
20918 , l_array_reference_date_3
20919 , l_array_reference_date_4
20920 , l_array_event_created_by
20921 , l_array_budgetary_control_flag
20922 , l_array_extract_line_num
20923 , l_array_source_5
20924 , l_array_source_6
20925 , l_array_source_6_meaning
20926 , l_array_source_7
20927 , l_array_source_8
20928 , l_array_source_9
20929 LIMIT l_rows;
20930
20931 --
20932 IF (C_LEVEL_EVENT >= g_log_level) THEN
20933 trace
20934 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
20935 ,p_level => C_LEVEL_EVENT
20936 ,p_module => l_log_module);
20937 END IF;
20938 --
20939 EXIT WHEN l_array_entity_id.count = 0;
20940
20941 XLA_AE_LINES_PKG.g_rec_lines := null;
20942
20943 --
20944 -- Bug 4458708
20945 --
20946 XLA_AE_LINES_PKG.g_LineNumber := 0;
20947 --
20948 --
20949
20950 FOR Idx IN 1..l_array_event_id.count LOOP
20951 --
20952 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
20953 --
20954 l_event_id := l_array_event_id(idx); -- 5648433
20955
20956 --
20957 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
20958 --
20959
20960 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
20961 (g_array_event(l_event_id).array_value_num('header_index'))
20962 ,'N'
20963 ) <> 'Y'
20964 THEN
20965 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
20966 trace
20967 (p_msg => 'Trancaction revesal option is not Y '
20968 ,p_level => C_LEVEL_STATEMENT
20969 ,p_module => l_log_module);
20970 END IF;
20971
20972 --
20973 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
20974 --
20975 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
20976 --
20977 -- set event info as cache for other routines to refer event attributes
20978 --
20979
20980 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
20981 l_previous_event_id := l_event_id;
20982
20983 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
20984 (p_application_id => p_application_id
20985 ,p_primary_ledger_id => p_primary_ledger_id
20986 ,p_base_ledger_id => p_base_ledger_id
20987 ,p_target_ledger_id => p_target_ledger_id
20988 ,p_entity_id => l_array_entity_id(Idx)
20989 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
20990 ,p_entity_code => l_array_entity_code(Idx)
20991 ,p_transaction_num => l_array_transaction_num(Idx)
20992 ,p_event_id => l_array_event_id(Idx)
20993 ,p_event_class_code => l_array_class_code(Idx)
20994 ,p_event_type_code => l_array_event_type(Idx)
20995 ,p_event_number => l_array_event_number(Idx)
20996 ,p_event_date => l_array_event_date(Idx)
20997 ,p_transaction_date => l_array_transaction_date(Idx)
21001 ,p_reference_num_4 => l_array_reference_num_4(Idx)
20998 ,p_reference_num_1 => l_array_reference_num_1(Idx)
20999 ,p_reference_num_2 => l_array_reference_num_2(Idx)
21000 ,p_reference_num_3 => l_array_reference_num_3(Idx)
21002 ,p_reference_char_1 => l_array_reference_char_1(Idx)
21003 ,p_reference_char_2 => l_array_reference_char_2(Idx)
21004 ,p_reference_char_3 => l_array_reference_char_3(Idx)
21005 ,p_reference_char_4 => l_array_reference_char_4(Idx)
21006 ,p_reference_date_1 => l_array_reference_date_1(Idx)
21007 ,p_reference_date_2 => l_array_reference_date_2(Idx)
21008 ,p_reference_date_3 => l_array_reference_date_3(Idx)
21009 ,p_reference_date_4 => l_array_reference_date_4(Idx)
21010 ,p_event_created_by => l_array_event_created_by(Idx)
21011 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
21012 --
21013 END IF;
21014
21015
21016
21017 --
21018 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
21019
21020 l_acct_reversal_source := SUBSTR(NULL, 1,30);
21021
21022 IF l_continue_with_lines THEN
21023 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
21024 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
21025
21026 xla_accounting_err_pkg.build_message
21027 (p_appli_s_name => 'XLA'
21028 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
21029 ,p_token_1 => 'LINE_NUMBER'
21030 ,p_value_1 => l_array_extract_line_num(Idx)
21031 ,p_token_2 => 'PRODUCT_NAME'
21032 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
21033 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
21034 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
21035 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
21036
21037 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
21038 --
21039 -- following sets the accounting attributes needed to reverse
21040 -- accounting for a distributeion
21041 --
21042
21043 --
21044 -- 5217187
21045 --
21046 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
21047 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
21048 g_array_event(l_event_id).array_value_num('header_index'));
21049 --
21050 --
21051
21052 -- No reversal code generated
21053
21054 xla_ae_lines_pkg.SetAcctReversalAttrs
21055 (p_event_id => l_event_id
21056 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
21057 ,p_calculate_acctd_flag => l_calculate_acctd_flag
21058 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
21059 END IF;
21060
21061 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
21062 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
21063
21064 --
21065 AcctLineType_12 (
21066 p_application_id => p_application_id
21067 ,p_event_id => l_event_id
21068 ,p_calculate_acctd_flag => l_calculate_acctd_flag
21069 ,p_calculate_g_l_flag => l_calculate_g_l_flag
21070 ,p_actual_flag => l_actual_flag
21071 ,p_balance_type_code => l_balance_type_code
21072 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
21073
21074 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
21075 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
21076 , p_source_5 => l_array_source_5(Idx)
21077 , p_source_6 => l_array_source_6(Idx)
21078 , p_source_6_meaning => l_array_source_6_meaning(Idx)
21079 , p_source_7 => l_array_source_7(Idx)
21080 , p_source_8 => l_array_source_8(Idx)
21081 , p_source_9 => l_array_source_9(Idx)
21082 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
21083 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
21084 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
21085 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
21086 );
21087 If(l_balance_type_code = 'A') THEN
21088 l_actual_gain_loss_ref := l_gain_or_loss_ref;
21089 END IF;
21090
21091 --
21092
21093
21094 --
21095 AcctLineType_13 (
21096 p_application_id => p_application_id
21097 ,p_event_id => l_event_id
21098 ,p_calculate_acctd_flag => l_calculate_acctd_flag
21099 ,p_calculate_g_l_flag => l_calculate_g_l_flag
21100 ,p_actual_flag => l_actual_flag
21101 ,p_balance_type_code => l_balance_type_code
21102 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
21103
21104 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
21105 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
21106 , p_source_5 => l_array_source_5(Idx)
21107 , p_source_6 => l_array_source_6(Idx)
21108 , p_source_6_meaning => l_array_source_6_meaning(Idx)
21109 , p_source_7 => l_array_source_7(Idx)
21110 , p_source_8 => l_array_source_8(Idx)
21111 , p_source_9 => l_array_source_9(Idx)
21112 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
21113 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
21114 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
21115 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
21116 );
21117 If(l_balance_type_code = 'A') THEN
21118 l_actual_gain_loss_ref := l_gain_or_loss_ref;
21119 END IF;
21120
21121 --
21122
21123 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
21127 (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'))
21124 -- or secondary ledger that has different currency with primary
21125 -- or alc that is calculated by sla
21126 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
21128
21129 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
21130 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
21131 AND (l_actual_flag = 'A')) THEN
21132 XLA_AE_LINES_PKG.CreateGainOrLossLines(
21133 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
21134 ,p_application_id => p_application_id
21135 ,p_amb_context_code => 'DEFAULT'
21136 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
21137 ,p_event_class_code => C_EVENT_CLASS_CODE
21138 ,p_event_type_code => C_EVENT_TYPE_CODE
21139
21140 ,p_gain_ccid => -1
21141 ,p_loss_ccid => -1
21142
21143 ,p_actual_flag => l_actual_flag
21144 ,p_enc_flag => null
21145 ,p_actual_g_l_ref => l_actual_gain_loss_ref
21146 ,p_enc_g_l_ref => null
21147 );
21148 END IF;
21149 END IF;
21150 END IF;
21151
21152 ELSE
21153 --
21154 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
21155 --
21156 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
21157 trace
21158 (p_msg => 'Trancaction revesal option is Y'
21159 ,p_level => C_LEVEL_STATEMENT
21160 ,p_module => l_log_module);
21161 END IF;
21162 END IF;
21163
21164 END LOOP;
21165 l_result := XLA_AE_LINES_PKG.InsertLines ;
21166 end loop;
21167 close line_cur;
21168
21169
21170 --
21171 -- insert headers into xla_ae_headers_gt table
21172 --
21173 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
21174
21175 -- insert into errors table here.
21176
21177 END LOOP;
21178
21179 --
21180 -- 4865292
21181 --
21182 -- Compare g_hdr_extract_count with event count in
21183 -- CreateHeadersAndLines.
21184 --
21185 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
21186
21187 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
21188 trace (p_msg => '# rows extracted from header extract objects '
21189 || ' (running total): '
21190 || g_hdr_extract_count
21191 ,p_level => C_LEVEL_STATEMENT
21192 ,p_module => l_log_module);
21193 END IF;
21194
21195 CLOSE header_cur;
21196 --
21197
21198 --
21199 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21200 trace
21201 (p_msg => 'END of EventClass_36'
21202 ,p_level => C_LEVEL_PROCEDURE
21203 ,p_module => l_log_module);
21204 END IF;
21205 --
21206 RETURN l_result;
21207 EXCEPTION
21208 WHEN xla_exceptions_pkg.application_exception THEN
21209
21210 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
21211
21212
21213 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
21214
21215 RAISE;
21216 WHEN OTHERS THEN
21217 xla_exceptions_pkg.raise_message
21218 (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_36');
21219 END EventClass_36;
21220 --
21221
21222 ---------------------------------------
21223 --
21224 -- PRIVATE PROCEDURE
21225 -- insert_sources_37
21226 --
21227 ----------------------------------------
21228 --
21229 PROCEDURE insert_sources_37(
21230 p_target_ledger_id IN NUMBER
21231 , p_language IN VARCHAR2
21232 , p_sla_ledger_id IN NUMBER
21233 , p_pad_start_date IN DATE
21234 , p_pad_end_date IN DATE
21235 )
21236 IS
21237
21238 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'INVESTOR_ALL';
21239 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'INVESTOR';
21240 p_apps_owner VARCHAR2(30);
21241 l_log_module VARCHAR2(240);
21242 BEGIN
21243 IF g_log_enabled THEN
21244 l_log_module := C_DEFAULT_MODULE||'.insert_sources_37';
21245 END IF;
21246 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21247
21248 trace
21249 (p_msg => 'BEGIN of insert_sources_37'
21250 ,p_level => C_LEVEL_PROCEDURE
21251 ,p_module => l_log_module);
21252
21253 END IF;
21254
21255 -- select APPS owner
21256 SELECT oracle_username
21257 INTO p_apps_owner
21258 FROM fnd_oracle_userid
21259 WHERE read_only_flag = 'U'
21260 ;
21261
21262 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
21263 trace
21264 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
21265 ' - p_language = '||p_language||
21266 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
21267 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
21268 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
21269 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
21270 ,p_level => C_LEVEL_STATEMENT
21271 ,p_module => l_log_module);
21272 END IF;
21273
21274
21275 --
21276 INSERT INTO xla_diag_sources --hdr2
21277 (
21278 event_id
21279 , ledger_id
21280 , sla_ledger_id
21281 , description_language
21285 , source_application_id
21282 , object_name
21283 , object_type_code
21284 , line_number
21286 , source_type_code
21287 , source_code
21288 , source_value
21289 , source_meaning
21290 , created_by
21291 , creation_date
21292 , last_update_date
21293 , last_updated_by
21294 , last_update_login
21295 , program_update_date
21296 , program_application_id
21297 , program_id
21298 , request_id
21299 )
21300 SELECT
21301 event_id
21302 , p_target_ledger_id
21303 , p_sla_ledger_id
21304 , p_language
21305 , object_name
21306 , object_type_code
21307 , line_number
21308 , source_application_id
21309 , source_type_code
21310 , source_code
21311 , SUBSTR(source_value ,1,1996)
21312 , SUBSTR(source_meaning ,1,200)
21313 , xla_environment_pkg.g_Usr_Id
21314 , TRUNC(SYSDATE)
21315 , TRUNC(SYSDATE)
21316 , xla_environment_pkg.g_Usr_Id
21317 , xla_environment_pkg.g_Login_Id
21318 , TRUNC(SYSDATE)
21319 , xla_environment_pkg.g_Prog_Appl_Id
21320 , xla_environment_pkg.g_Prog_Id
21321 , xla_environment_pkg.g_Req_Id
21322 FROM (
21323 SELECT xet.event_id event_id
21324 , 0 line_number
21325 , CASE r
21326 WHEN 1 THEN 'OKL_IA_EXTRACT_HDR_V'
21327 WHEN 2 THEN 'OKL_IA_EXTRACT_HDR_V'
21328 WHEN 3 THEN 'OKL_IA_EXTRACT_HDR_V'
21329 WHEN 4 THEN 'OKL_IA_EXTRACT_HDR_V'
21330 WHEN 5 THEN 'OKL_IA_EXTRACT_HDR_V'
21331 WHEN 6 THEN 'OKL_IA_EXTRACT_HDR_V'
21332 WHEN 7 THEN 'OKL_IA_EXTRACT_HDR_V'
21333 WHEN 8 THEN 'OKL_IA_EXTRACT_HDR_V'
21334
21335 ELSE null
21336 END object_name
21337 , CASE r
21338 WHEN 1 THEN 'HEADER'
21339 WHEN 2 THEN 'HEADER'
21340 WHEN 3 THEN 'HEADER'
21341 WHEN 4 THEN 'HEADER'
21342 WHEN 5 THEN 'HEADER'
21343 WHEN 6 THEN 'HEADER'
21344 WHEN 7 THEN 'HEADER'
21345 WHEN 8 THEN 'HEADER'
21346
21347 ELSE null
21348 END object_type_code
21349 , CASE r
21350 WHEN 1 THEN '540'
21351 WHEN 2 THEN '540'
21352 WHEN 3 THEN '540'
21353 WHEN 4 THEN '540'
21354 WHEN 5 THEN '540'
21355 WHEN 6 THEN '540'
21356 WHEN 7 THEN '540'
21357 WHEN 8 THEN '540'
21358
21359 ELSE null
21360 END source_application_id
21361 , 'S' source_type_code
21362 , CASE r
21363 WHEN 1 THEN 'TEH_INV_AGRMNT_NUMBER'
21364 WHEN 2 THEN 'TCN_INV_AGRMNT_PRODUCT_NAME'
21365 WHEN 3 THEN 'TCN_CURRENCY_CODE'
21366 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE'
21367 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE'
21368 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE'
21369 WHEN 7 THEN 'GL_DATE'
21370 WHEN 8 THEN 'TCN_ACCOUNTING_REVERSAL_FLAG'
21371
21372 ELSE null
21373 END source_code
21374 , CASE r
21375 WHEN 1 THEN TO_CHAR(h2.TEH_INV_AGRMNT_NUMBER)
21376 WHEN 2 THEN TO_CHAR(h2.TCN_INV_AGRMNT_PRODUCT_NAME)
21377 WHEN 3 THEN TO_CHAR(h2.TCN_CURRENCY_CODE)
21378 WHEN 4 THEN TO_CHAR(h2.TCN_CURR_CONVERSION_DATE)
21379 WHEN 5 THEN TO_CHAR(h2.TCN_CURR_CONVERSION_RATE)
21380 WHEN 6 THEN TO_CHAR(h2.TCN_CURR_CONVERSION_TYPE)
21381 WHEN 7 THEN TO_CHAR(h2.GL_DATE)
21382 WHEN 8 THEN TO_CHAR(h2.TCN_ACCOUNTING_REVERSAL_FLAG)
21383
21384 ELSE null
21385 END source_value
21386 , null source_meaning
21387 FROM xla_events_gt xet
21388 , OKL_IA_EXTRACT_HDR_V h2
21389 ,(select rownum r from all_objects where rownum <= 8 and owner = p_apps_owner)
21390 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
21391 AND xet.event_class_code = C_EVENT_CLASS_CODE
21392 AND h2.event_id = xet.event_id
21393
21394 )
21395 ;
21396 --
21397 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
21398
21399 trace
21400 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
21401 ,p_level => C_LEVEL_STATEMENT
21402 ,p_module => l_log_module);
21403
21404 END IF;
21405 --
21406
21407
21408
21409 --
21410 INSERT INTO xla_diag_sources --line2
21411 (
21412 event_id
21413 , ledger_id
21414 , sla_ledger_id
21415 , description_language
21416 , object_name
21417 , object_type_code
21418 , line_number
21419 , source_application_id
21420 , source_type_code
21421 , source_code
21422 , source_value
21423 , source_meaning
21424 , created_by
21425 , creation_date
21426 , last_update_date
21427 , last_updated_by
21428 , last_update_login
21429 , program_update_date
21430 , program_application_id
21431 , program_id
21432 , request_id
21436 , p_sla_ledger_id
21433 )
21434 SELECT event_id
21435 , p_target_ledger_id
21437 , p_language
21438 , object_name
21439 , object_type_code
21440 , line_number
21441 , source_application_id
21442 , source_type_code
21443 , source_code
21444 , SUBSTR(source_value,1,1996)
21445 , SUBSTR(source_meaning ,1,200)
21446 , xla_environment_pkg.g_Usr_Id
21447 , TRUNC(SYSDATE)
21448 , TRUNC(SYSDATE)
21449 , xla_environment_pkg.g_Usr_Id
21450 , xla_environment_pkg.g_Login_Id
21451 , TRUNC(SYSDATE)
21452 , xla_environment_pkg.g_Prog_Appl_Id
21453 , xla_environment_pkg.g_Prog_Id
21454 , xla_environment_pkg.g_Req_Id
21455 FROM (
21456 SELECT xet.event_id event_id
21457 , l1.line_number line_number
21458 , CASE r
21459 WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V'
21460 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V'
21461 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V'
21462 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V'
21463 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V'
21464
21465 ELSE null
21466 END object_name
21467 , CASE r
21468 WHEN 1 THEN 'LINE'
21469 WHEN 2 THEN 'LINE'
21470 WHEN 3 THEN 'LINE'
21471 WHEN 4 THEN 'LINE'
21472 WHEN 5 THEN 'LINE'
21473
21474 ELSE null
21475 END object_type_code
21476 , CASE r
21477 WHEN 1 THEN '540'
21478 WHEN 2 THEN '540'
21479 WHEN 3 THEN '540'
21480 WHEN 4 THEN '540'
21481 WHEN 5 THEN '540'
21482
21483 ELSE null
21484 END source_application_id
21485 , 'S' source_type_code
21486 , CASE r
21487 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID'
21488 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE'
21489 WHEN 3 THEN 'DIST_ID'
21490 WHEN 4 THEN 'DIST_TYPE'
21491 WHEN 5 THEN 'DIST_ENTERED_AMOUNT'
21492
21493 ELSE null
21494 END source_code
21495 , CASE r
21496 WHEN 1 THEN TO_CHAR(l1.DIST_CODE_COMBINATION_ID)
21497 WHEN 2 THEN TO_CHAR(l1.DIST_AE_LINE_TYPE_CODE)
21498 WHEN 3 THEN TO_CHAR(l1.DIST_ID)
21499 WHEN 4 THEN TO_CHAR(l1.DIST_TYPE)
21500 WHEN 5 THEN TO_CHAR(l1.DIST_ENTERED_AMOUNT)
21501
21502 ELSE null
21503 END source_value
21504 , CASE r
21505 WHEN 2 THEN fvl6.meaning
21506
21507 ELSE null
21508 END source_meaning
21509 FROM xla_events_gt xet
21510 , OKL_CMN_EXTRACT_LINE_V l1
21511 , fnd_lookup_values fvl6
21512 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
21513 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
21514 AND xet.event_class_code = C_EVENT_CLASS_CODE
21515 AND l1.event_id = xet.event_id
21516 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
21517 AND fvl6.lookup_code(+) = l1.DIST_AE_LINE_TYPE_CODE
21518 AND fvl6.view_application_id(+) = 0
21519 AND fvl6.language(+) = USERENV('LANG')
21520
21521 )
21522 ;
21523 --
21524 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
21525
21526 trace
21527 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
21528 ,p_level => C_LEVEL_STATEMENT
21529 ,p_module => l_log_module);
21530
21531 END IF;
21532
21533
21534 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21535 trace
21536 (p_msg => 'END of insert_sources_37'
21537 ,p_level => C_LEVEL_PROCEDURE
21538 ,p_module => l_log_module);
21539 END IF;
21540 EXCEPTION
21541 WHEN xla_exceptions_pkg.application_exception THEN
21542 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
21543 trace
21544 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
21545 ,p_level => C_LEVEL_EXCEPTION
21546 ,p_module => l_log_module);
21547 END IF;
21548 RAISE;
21549 WHEN OTHERS THEN
21550 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
21551 trace
21552 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
21553 ,p_level => C_LEVEL_EXCEPTION
21554 ,p_module => l_log_module);
21555 END IF;
21556 xla_exceptions_pkg.raise_message
21557 (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_37');
21558 END insert_sources_37;
21559 --
21560
21561 ---------------------------------------
21562 --
21563 -- PRIVATE FUNCTION
21564 -- EventClass_37
21565 --
21566 ----------------------------------------
21567 --
21568 FUNCTION EventClass_37
21569 (p_application_id IN NUMBER
21570 ,p_base_ledger_id IN NUMBER
21571 ,p_target_ledger_id IN NUMBER
21572 ,p_language IN VARCHAR2
21573 ,p_currency_code IN VARCHAR2
21574 ,p_sla_ledger_id IN NUMBER
21575 ,p_pad_start_date IN DATE
21576 ,p_pad_end_date IN DATE
21580 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'INVESTOR_ALL';
21577 ,p_primary_ledger_id IN NUMBER)
21578 RETURN BOOLEAN IS
21579 --
21581 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'INVESTOR';
21582
21583 l_calculate_acctd_flag VARCHAR2(1) :='Y';
21584 l_calculate_g_l_flag VARCHAR2(1) :='Y';
21585 --
21586 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
21587 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
21588 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
21589 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
21590 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
21591 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
21592 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
21593 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
21594 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
21595 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
21596 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
21597 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
21598 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
21599 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
21600 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
21601 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
21602 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
21603 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
21604 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
21605 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
21606 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
21607 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
21608 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
21609 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
21610
21611 l_event_id NUMBER;
21612 l_previous_event_id NUMBER;
21613 l_first_event_id NUMBER;
21614 l_last_event_id NUMBER;
21615
21616 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
21617 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
21618 --
21619 --
21620 l_result BOOLEAN := TRUE;
21621 l_rows NUMBER := 1000;
21622 l_event_type_name VARCHAR2(80) := 'All';
21623 l_event_class_name VARCHAR2(80) := 'Investor';
21624 l_description VARCHAR2(4000);
21625 l_transaction_reversal NUMBER;
21626 l_ae_header_id NUMBER;
21627 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
21628 l_log_module VARCHAR2(240);
21629 --
21630 l_acct_reversal_source VARCHAR2(30);
21631 l_trx_reversal_source VARCHAR2(30);
21632
21633 l_continue_with_lines BOOLEAN := TRUE;
21634 --
21635 l_acc_rev_gl_date_source DATE; -- 4262811
21636 --
21637 type t_array_event_id is table of number index by binary_integer;
21638
21639 l_rec_array_event t_rec_array_event;
21640 l_null_rec_array_event t_rec_array_event;
21641 l_array_ae_header_id xla_number_array_type;
21642 l_actual_flag VARCHAR2(1) := NULL;
21643 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
21644 l_balance_type_code VARCHAR2(1) :=NULL;
21645 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
21646
21647 --
21648 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
21649 --
21650
21651 TYPE t_array_source_3 IS TABLE OF OKL_IA_EXTRACT_HDR_V.TEH_INV_AGRMNT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
21652 TYPE t_array_source_4 IS TABLE OF OKL_IA_EXTRACT_HDR_V.TCN_INV_AGRMNT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
21653 TYPE t_array_source_10 IS TABLE OF OKL_IA_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
21654 TYPE t_array_source_11 IS TABLE OF OKL_IA_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
21655 TYPE t_array_source_12 IS TABLE OF OKL_IA_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
21656 TYPE t_array_source_13 IS TABLE OF OKL_IA_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
21657 TYPE t_array_source_15 IS TABLE OF OKL_IA_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
21658 TYPE t_array_source_16 IS TABLE OF OKL_IA_EXTRACT_HDR_V.TCN_ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
21659
21660 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
21661 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
21662 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
21663 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
21664 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
21665
21666 l_array_source_3 t_array_source_3;
21667 l_array_source_4 t_array_source_4;
21668 l_array_source_10 t_array_source_10;
21669 l_array_source_11 t_array_source_11;
21670 l_array_source_12 t_array_source_12;
21671 l_array_source_13 t_array_source_13;
21672 l_array_source_15 t_array_source_15;
21673 l_array_source_16 t_array_source_16;
21674
21675 l_array_source_5 t_array_source_5;
21676 l_array_source_6 t_array_source_6;
21677 l_array_source_6_meaning t_array_lookup_meaning;
21678 l_array_source_7 t_array_source_7;
21682 --
21679 l_array_source_8 t_array_source_8;
21680 l_array_source_9 t_array_source_9;
21681
21683 CURSOR header_cur
21684 IS
21685 SELECT /*+ leading(xet) cardinality(xet,1) */
21686 -- Event Class Code: INVESTOR
21687 xet.entity_id
21688 ,xet.legal_entity_id
21689 ,xet.entity_code
21690 ,xet.transaction_number
21691 ,xet.event_id
21692 ,xet.event_class_code
21693 ,xet.event_type_code
21694 ,xet.event_number
21695 ,xet.event_date
21696 ,xet.transaction_date
21697 ,xet.reference_num_1
21698 ,xet.reference_num_2
21699 ,xet.reference_num_3
21700 ,xet.reference_num_4
21701 ,xet.reference_char_1
21702 ,xet.reference_char_2
21703 ,xet.reference_char_3
21704 ,xet.reference_char_4
21705 ,xet.reference_date_1
21706 ,xet.reference_date_2
21707 ,xet.reference_date_3
21708 ,xet.reference_date_4
21709 ,xet.event_created_by
21710 ,xet.budgetary_control_flag
21711 , h2.TEH_INV_AGRMNT_NUMBER source_3
21712 , h2.TCN_INV_AGRMNT_PRODUCT_NAME source_4
21713 , h2.TCN_CURRENCY_CODE source_10
21714 , h2.TCN_CURR_CONVERSION_DATE source_11
21715 , h2.TCN_CURR_CONVERSION_RATE source_12
21716 , h2.TCN_CURR_CONVERSION_TYPE source_13
21717 , h2.GL_DATE source_15
21718 , h2.TCN_ACCOUNTING_REVERSAL_FLAG source_16
21719 FROM xla_events_gt xet
21720 , OKL_IA_EXTRACT_HDR_V h2
21721 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
21722 and xet.event_class_code = C_EVENT_CLASS_CODE
21723 and xet.event_status_code <> 'N' AND h2.event_id = xet.event_id
21724
21725 ORDER BY event_id
21726 ;
21727
21728
21729 --
21730 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
21731 IS
21732 SELECT /*+ leading(xet) cardinality(xet,1) */
21733 -- Event Class Code: INVESTOR
21734 xet.entity_id
21735 ,xet.legal_entity_id
21736 ,xet.entity_code
21737 ,xet.transaction_number
21738 ,xet.event_id
21739 ,xet.event_class_code
21740 ,xet.event_type_code
21741 ,xet.event_number
21742 ,xet.event_date
21743 ,xet.transaction_date
21744 ,xet.reference_num_1
21745 ,xet.reference_num_2
21746 ,xet.reference_num_3
21747 ,xet.reference_num_4
21748 ,xet.reference_char_1
21749 ,xet.reference_char_2
21750 ,xet.reference_char_3
21751 ,xet.reference_char_4
21752 ,xet.reference_date_1
21753 ,xet.reference_date_2
21754 ,xet.reference_date_3
21755 ,xet.reference_date_4
21756 ,xet.event_created_by
21757 ,xet.budgetary_control_flag
21758 , l1.LINE_NUMBER
21759 , l1.DIST_CODE_COMBINATION_ID source_5
21760 , l1.DIST_AE_LINE_TYPE_CODE source_6
21761 , fvl6.meaning source_6_meaning
21762 , l1.DIST_ID source_7
21763 , l1.DIST_TYPE source_8
21764 , l1.DIST_ENTERED_AMOUNT source_9
21765 FROM xla_events_gt xet
21766 , OKL_CMN_EXTRACT_LINE_V l1
21767 , fnd_lookup_values fvl6
21768 WHERE xet.event_id between x_first_event_id and x_last_event_id
21769 and xet.event_date between p_pad_start_date and p_pad_end_date
21770 and xet.event_class_code = C_EVENT_CLASS_CODE
21771 and xet.event_status_code <> 'N' AND l1.event_id = xet.event_id
21772 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
21773 AND fvl6.lookup_code(+) = l1.DIST_AE_LINE_TYPE_CODE
21774 AND fvl6.view_application_id(+) = 0
21775 AND fvl6.language(+) = USERENV('LANG')
21776 ;
21777
21778 --
21779 BEGIN
21780 IF g_log_enabled THEN
21781 l_log_module := C_DEFAULT_MODULE||'.EventClass_37';
21782 END IF;
21783 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21784 trace
21785 (p_msg => 'BEGIN of EventClass_37'
21786 ,p_level => C_LEVEL_PROCEDURE
21787 ,p_module => l_log_module);
21788 END IF;
21789
21790 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
21791 trace
21792 (p_msg => 'p_application_id = '||p_application_id||
21793 ' - p_base_ledger_id = '||p_base_ledger_id||
21794 ' - p_target_ledger_id = '||p_target_ledger_id||
21795 ' - p_language = '||p_language||
21796 ' - p_currency_code = '||p_currency_code||
21797 ' - p_sla_ledger_id = '||p_sla_ledger_id
21798 ,p_level => C_LEVEL_STATEMENT
21799 ,p_module => l_log_module);
21800 END IF;
21801 --
21802 -- initialze arrays
21803 --
21804 g_array_event.DELETE;
21805 l_rec_array_event := l_null_rec_array_event;
21806 --
21807 --------------------------------------
21808 -- 4262811 Initialze MPA Line Number
21809 --------------------------------------
21810 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
21811
21812 --
21813
21814 --
21815 OPEN header_cur;
21816 --
21817 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
21818 trace
21819 (p_msg => 'SQL - FETCH header_cur'
21820 ,p_level => C_LEVEL_STATEMENT
21821 ,p_module => l_log_module);
21822 END IF;
21823 --
21824 LOOP
21825 FETCH header_cur BULK COLLECT INTO
21826 l_array_entity_id
21827 , l_array_legal_entity_id
21828 , l_array_entity_code
21829 , l_array_transaction_num
21830 , l_array_event_id
21831 , l_array_class_code
21832 , l_array_event_type
21833 , l_array_event_number
21834 , l_array_event_date
21835 , l_array_transaction_date
21836 , l_array_reference_num_1
21837 , l_array_reference_num_2
21838 , l_array_reference_num_3
21839 , l_array_reference_num_4
21840 , l_array_reference_char_1
21841 , l_array_reference_char_2
21845 , l_array_reference_date_2
21842 , l_array_reference_char_3
21843 , l_array_reference_char_4
21844 , l_array_reference_date_1
21846 , l_array_reference_date_3
21847 , l_array_reference_date_4
21848 , l_array_event_created_by
21849 , l_array_budgetary_control_flag
21850 , l_array_source_3
21851 , l_array_source_4
21852 , l_array_source_10
21853 , l_array_source_11
21854 , l_array_source_12
21855 , l_array_source_13
21856 , l_array_source_15
21857 , l_array_source_16
21858 LIMIT l_rows;
21859 --
21860 IF (C_LEVEL_EVENT >= g_log_level) THEN
21861 trace
21862 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
21863 ,p_level => C_LEVEL_EVENT
21864 ,p_module => l_log_module);
21865 END IF;
21866 --
21867 EXIT WHEN l_array_entity_id.COUNT = 0;
21868
21869 -- initialize arrays
21870 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
21871 XLA_AE_LINES_PKG.g_rec_lines := NULL;
21872
21873 --
21874 -- Bug 4458708
21875 --
21876 XLA_AE_LINES_PKG.g_LineNumber := 0;
21877
21878
21879 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
21880 g_last_hdr_idx := l_array_event_id.LAST;
21881 --
21882 -- loop for the headers. Each iteration is for each header extract row
21883 -- fetched in header cursor
21884 --
21885 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
21886
21887 --
21888 -- set event info as cache for other routines to refer event attributes
21889 --
21890 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
21891 (p_application_id => p_application_id
21892 ,p_primary_ledger_id => p_primary_ledger_id
21893 ,p_base_ledger_id => p_base_ledger_id
21894 ,p_target_ledger_id => p_target_ledger_id
21895 ,p_entity_id => l_array_entity_id(hdr_idx)
21896 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
21897 ,p_entity_code => l_array_entity_code(hdr_idx)
21898 ,p_transaction_num => l_array_transaction_num(hdr_idx)
21899 ,p_event_id => l_array_event_id(hdr_idx)
21900 ,p_event_class_code => l_array_class_code(hdr_idx)
21901 ,p_event_type_code => l_array_event_type(hdr_idx)
21902 ,p_event_number => l_array_event_number(hdr_idx)
21903 ,p_event_date => l_array_event_date(hdr_idx)
21904 ,p_transaction_date => l_array_transaction_date(hdr_idx)
21905 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
21906 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
21907 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
21908 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
21909 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
21910 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
21911 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
21912 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
21913 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
21914 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
21915 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
21916 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
21917 ,p_event_created_by => l_array_event_created_by(hdr_idx)
21918 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
21919
21920 --
21921 -- set the status of entry to C_VALID (0)
21922 --
21923 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
21924
21925 --
21926 -- initialize a row for ae header
21927 --
21928 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
21929
21930 l_event_id := l_array_event_id(hdr_idx);
21931
21932 --
21933 -- storing the hdr_idx for event. May be used by line cursor.
21934 --
21935 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
21936
21937 --
21938 -- store sources from header extract. This can be improved to
21939 -- store only those sources from header extract that may be used in lines
21940 --
21941
21942 g_array_event(l_event_id).array_value_char('source_3') := l_array_source_3(hdr_idx);
21943 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
21944 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
21945 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
21946 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
21947 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
21948 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
21949 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
21950
21951 --
21952 -- initilaize the status of ae headers for diffrent balance types
21953 -- the status is initialised to C_NOT_CREATED (2)
21954 --
21955 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
21956 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
21957 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
21958
21959 --
21960 -- call api to validate and store accounting attributes for header
21961 --
21962
21963 ------------------------------------------------------------
21964 -- Accrual Reversal : to get date for Standard Source (NONE)
21965 ------------------------------------------------------------
21966 l_acc_rev_gl_date_source := NULL;
21967
21968 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
21972
21969 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
21970 l_rec_acct_attrs.array_acct_attr_code(2) := 'TRX_ACCT_REVERSAL_OPTION';
21971 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_16');
21973
21974 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
21975
21976 XLA_AE_HEADER_PKG.SetJeCategoryName;
21977
21978 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
21979 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
21980 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
21981 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
21982 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
21983
21984
21985 --
21986 xla_ae_header_pkg.SetHdrDescription(
21987 p_description => Description_2 (
21988 p_application_id => p_application_id
21989 , p_source_3 => g_array_event(l_event_id).array_value_char('source_3')
21990 , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
21991 )
21992 );
21993 --
21994
21995 -- No header level analytical criteria
21996
21997 --
21998 --accounting attribute enhancement, bug 3612931
21999 --
22000 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_16'), 1,30);
22001
22002 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
22003 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
22004
22005 xla_accounting_err_pkg.build_message
22006 (p_appli_s_name => 'XLA'
22007 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
22008 ,p_token_1 => 'ACCT_ATTR_NAME'
22009 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
22010 ,p_token_2 => 'PRODUCT_NAME'
22011 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
22012 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
22013 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
22014 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
22015
22016 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
22017 --
22018 -- following sets the accounting attributes needed to reverse
22019 -- accounting for a distributeion
22020 --
22021 xla_ae_lines_pkg.SetTrxReversalAttrs
22022 (p_event_id => l_event_id
22023 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
22024 ,p_trx_reversal_source => l_trx_reversal_source);
22025
22026 END IF;
22027
22028
22029 ----------------------------------------------------------------
22030 -- 4262811 - update the header statuses to invalid in need be
22031 ----------------------------------------------------------------
22032 --
22033 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
22034
22035
22036 -----------------------------------------------
22037 -- No accrual reversal for the event class/type
22038 -----------------------------------------------
22039 ----------------------------------------------------------------
22040
22041 --
22042 -- this ends the header loop iteration for one bulk fetch
22043 --
22044 END LOOP;
22045
22046 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
22047 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
22048
22049 --
22050 -- insert dummy rows into lines gt table that were created due to
22051 -- transaction reversals
22052 --
22053 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
22054 l_result := XLA_AE_LINES_PKG.InsertLines;
22055 END IF;
22056
22057 --
22058 -- reset the temp_line_num for each set of events fetched from header
22059 -- cursor rather than doing it for each new event in line cursor
22060 -- Bug 3939231
22061 --
22062 xla_ae_lines_pkg.g_temp_line_num := 0;
22063
22064
22065
22066 --
22067 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
22068 --
22069 --
22070 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
22071
22072 trace
22073 (p_msg => 'SQL - FETCH line_cur'
22074 ,p_level => C_LEVEL_STATEMENT
22075 ,p_module => l_log_module);
22076
22077 END IF;
22078 --
22079 --
22080 LOOP
22081 --
22082 FETCH line_cur BULK COLLECT INTO
22083 l_array_entity_id
22084 , l_array_legal_entity_id
22085 , l_array_entity_code
22086 , l_array_transaction_num
22087 , l_array_event_id
22088 , l_array_class_code
22089 , l_array_event_type
22090 , l_array_event_number
22091 , l_array_event_date
22092 , l_array_transaction_date
22093 , l_array_reference_num_1
22094 , l_array_reference_num_2
22095 , l_array_reference_num_3
22096 , l_array_reference_num_4
22097 , l_array_reference_char_1
22098 , l_array_reference_char_2
22099 , l_array_reference_char_3
22100 , l_array_reference_char_4
22101 , l_array_reference_date_1
22102 , l_array_reference_date_2
22103 , l_array_reference_date_3
22104 , l_array_reference_date_4
22105 , l_array_event_created_by
22106 , l_array_budgetary_control_flag
22107 , l_array_extract_line_num
22108 , l_array_source_5
22109 , l_array_source_6
22110 , l_array_source_6_meaning
22111 , l_array_source_7
22112 , l_array_source_8
22116 --
22113 , l_array_source_9
22114 LIMIT l_rows;
22115
22117 IF (C_LEVEL_EVENT >= g_log_level) THEN
22118 trace
22119 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
22120 ,p_level => C_LEVEL_EVENT
22121 ,p_module => l_log_module);
22122 END IF;
22123 --
22124 EXIT WHEN l_array_entity_id.count = 0;
22125
22126 XLA_AE_LINES_PKG.g_rec_lines := null;
22127
22128 --
22129 -- Bug 4458708
22130 --
22131 XLA_AE_LINES_PKG.g_LineNumber := 0;
22132 --
22133 --
22134
22135 FOR Idx IN 1..l_array_event_id.count LOOP
22136 --
22137 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
22138 --
22139 l_event_id := l_array_event_id(idx); -- 5648433
22140
22141 --
22142 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
22143 --
22144
22145 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
22146 (g_array_event(l_event_id).array_value_num('header_index'))
22147 ,'N'
22148 ) <> 'Y'
22149 THEN
22150 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
22151 trace
22152 (p_msg => 'Trancaction revesal option is not Y '
22153 ,p_level => C_LEVEL_STATEMENT
22154 ,p_module => l_log_module);
22155 END IF;
22156
22157 --
22158 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
22159 --
22160 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
22161 --
22162 -- set event info as cache for other routines to refer event attributes
22163 --
22164
22165 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
22166 l_previous_event_id := l_event_id;
22167
22168 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
22169 (p_application_id => p_application_id
22170 ,p_primary_ledger_id => p_primary_ledger_id
22171 ,p_base_ledger_id => p_base_ledger_id
22172 ,p_target_ledger_id => p_target_ledger_id
22173 ,p_entity_id => l_array_entity_id(Idx)
22174 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
22175 ,p_entity_code => l_array_entity_code(Idx)
22176 ,p_transaction_num => l_array_transaction_num(Idx)
22177 ,p_event_id => l_array_event_id(Idx)
22178 ,p_event_class_code => l_array_class_code(Idx)
22179 ,p_event_type_code => l_array_event_type(Idx)
22180 ,p_event_number => l_array_event_number(Idx)
22181 ,p_event_date => l_array_event_date(Idx)
22182 ,p_transaction_date => l_array_transaction_date(Idx)
22183 ,p_reference_num_1 => l_array_reference_num_1(Idx)
22184 ,p_reference_num_2 => l_array_reference_num_2(Idx)
22185 ,p_reference_num_3 => l_array_reference_num_3(Idx)
22186 ,p_reference_num_4 => l_array_reference_num_4(Idx)
22187 ,p_reference_char_1 => l_array_reference_char_1(Idx)
22188 ,p_reference_char_2 => l_array_reference_char_2(Idx)
22189 ,p_reference_char_3 => l_array_reference_char_3(Idx)
22190 ,p_reference_char_4 => l_array_reference_char_4(Idx)
22191 ,p_reference_date_1 => l_array_reference_date_1(Idx)
22192 ,p_reference_date_2 => l_array_reference_date_2(Idx)
22193 ,p_reference_date_3 => l_array_reference_date_3(Idx)
22194 ,p_reference_date_4 => l_array_reference_date_4(Idx)
22195 ,p_event_created_by => l_array_event_created_by(Idx)
22196 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
22197 --
22198 END IF;
22199
22200
22201
22202 --
22203 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
22204
22205 l_acct_reversal_source := SUBSTR(NULL, 1,30);
22206
22207 IF l_continue_with_lines THEN
22208 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
22209 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
22210
22211 xla_accounting_err_pkg.build_message
22212 (p_appli_s_name => 'XLA'
22213 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
22214 ,p_token_1 => 'LINE_NUMBER'
22215 ,p_value_1 => l_array_extract_line_num(Idx)
22216 ,p_token_2 => 'PRODUCT_NAME'
22217 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
22218 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
22219 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
22220 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
22221
22222 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
22223 --
22224 -- following sets the accounting attributes needed to reverse
22225 -- accounting for a distributeion
22226 --
22227
22228 --
22229 -- 5217187
22230 --
22231 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
22232 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
22233 g_array_event(l_event_id).array_value_num('header_index'));
22234 --
22235 --
22236
22237 -- No reversal code generated
22238
22239 xla_ae_lines_pkg.SetAcctReversalAttrs
22240 (p_event_id => l_event_id
22241 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
22242 ,p_calculate_acctd_flag => l_calculate_acctd_flag
22243 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
22247 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
22244 END IF;
22245
22246 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
22248
22249 --
22250 AcctLineType_14 (
22251 p_application_id => p_application_id
22252 ,p_event_id => l_event_id
22253 ,p_calculate_acctd_flag => l_calculate_acctd_flag
22254 ,p_calculate_g_l_flag => l_calculate_g_l_flag
22255 ,p_actual_flag => l_actual_flag
22256 ,p_balance_type_code => l_balance_type_code
22257 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
22258
22259 , p_source_3 => g_array_event(l_event_id).array_value_char('source_3')
22260 , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
22261 , p_source_5 => l_array_source_5(Idx)
22262 , p_source_6 => l_array_source_6(Idx)
22263 , p_source_6_meaning => l_array_source_6_meaning(Idx)
22264 , p_source_7 => l_array_source_7(Idx)
22265 , p_source_8 => l_array_source_8(Idx)
22266 , p_source_9 => l_array_source_9(Idx)
22267 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
22268 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
22269 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
22270 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
22271 );
22272 If(l_balance_type_code = 'A') THEN
22273 l_actual_gain_loss_ref := l_gain_or_loss_ref;
22274 END IF;
22275
22276 --
22277
22278
22279 --
22280 AcctLineType_15 (
22281 p_application_id => p_application_id
22282 ,p_event_id => l_event_id
22283 ,p_calculate_acctd_flag => l_calculate_acctd_flag
22284 ,p_calculate_g_l_flag => l_calculate_g_l_flag
22285 ,p_actual_flag => l_actual_flag
22286 ,p_balance_type_code => l_balance_type_code
22287 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
22288
22289 , p_source_3 => g_array_event(l_event_id).array_value_char('source_3')
22290 , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
22291 , p_source_5 => l_array_source_5(Idx)
22292 , p_source_6 => l_array_source_6(Idx)
22293 , p_source_6_meaning => l_array_source_6_meaning(Idx)
22294 , p_source_7 => l_array_source_7(Idx)
22295 , p_source_8 => l_array_source_8(Idx)
22296 , p_source_9 => l_array_source_9(Idx)
22297 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
22298 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
22299 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
22300 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
22301 );
22302 If(l_balance_type_code = 'A') THEN
22303 l_actual_gain_loss_ref := l_gain_or_loss_ref;
22304 END IF;
22305
22306 --
22307
22308 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
22309 -- or secondary ledger that has different currency with primary
22310 -- or alc that is calculated by sla
22311 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
22312 (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'))
22313
22314 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
22315 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
22316 AND (l_actual_flag = 'A')) THEN
22317 XLA_AE_LINES_PKG.CreateGainOrLossLines(
22318 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
22319 ,p_application_id => p_application_id
22320 ,p_amb_context_code => 'DEFAULT'
22321 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
22322 ,p_event_class_code => C_EVENT_CLASS_CODE
22323 ,p_event_type_code => C_EVENT_TYPE_CODE
22324
22325 ,p_gain_ccid => -1
22326 ,p_loss_ccid => -1
22327
22328 ,p_actual_flag => l_actual_flag
22329 ,p_enc_flag => null
22330 ,p_actual_g_l_ref => l_actual_gain_loss_ref
22331 ,p_enc_g_l_ref => null
22332 );
22333 END IF;
22334 END IF;
22335 END IF;
22336
22337 ELSE
22338 --
22339 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
22340 --
22341 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
22342 trace
22343 (p_msg => 'Trancaction revesal option is Y'
22344 ,p_level => C_LEVEL_STATEMENT
22345 ,p_module => l_log_module);
22346 END IF;
22347 END IF;
22348
22349 END LOOP;
22350 l_result := XLA_AE_LINES_PKG.InsertLines ;
22351 end loop;
22352 close line_cur;
22353
22354
22355 --
22356 -- insert headers into xla_ae_headers_gt table
22357 --
22358 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
22359
22360 -- insert into errors table here.
22361
22362 END LOOP;
22363
22364 --
22365 -- 4865292
22366 --
22367 -- Compare g_hdr_extract_count with event count in
22368 -- CreateHeadersAndLines.
22369 --
22370 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
22371
22372 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
22373 trace (p_msg => '# rows extracted from header extract objects '
22374 || ' (running total): '
22375 || g_hdr_extract_count
22376 ,p_level => C_LEVEL_STATEMENT
22377 ,p_module => l_log_module);
22378 END IF;
22379
22380 CLOSE header_cur;
22381 --
22382
22383 --
22384 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22385 trace
22386 (p_msg => 'END of EventClass_37'
22387 ,p_level => C_LEVEL_PROCEDURE
22391 RETURN l_result;
22388 ,p_module => l_log_module);
22389 END IF;
22390 --
22392 EXCEPTION
22393 WHEN xla_exceptions_pkg.application_exception THEN
22394
22395 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
22396
22397
22398 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
22399
22400 RAISE;
22401 WHEN OTHERS THEN
22402 xla_exceptions_pkg.raise_message
22403 (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_37');
22404 END EventClass_37;
22405 --
22406
22407 ---------------------------------------
22408 --
22409 -- PRIVATE PROCEDURE
22410 -- insert_sources_38
22411 --
22412 ----------------------------------------
22413 --
22414 PROCEDURE insert_sources_38(
22415 p_target_ledger_id IN NUMBER
22416 , p_language IN VARCHAR2
22417 , p_sla_ledger_id IN NUMBER
22418 , p_pad_start_date IN DATE
22419 , p_pad_end_date IN DATE
22420 )
22421 IS
22422
22423 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'PRINCIPAL_ADJUSTMENT_ALL';
22424 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'PRINCIPAL_ADJUSTMENT';
22425 p_apps_owner VARCHAR2(30);
22426 l_log_module VARCHAR2(240);
22427 BEGIN
22428 IF g_log_enabled THEN
22429 l_log_module := C_DEFAULT_MODULE||'.insert_sources_38';
22430 END IF;
22431 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22432
22433 trace
22434 (p_msg => 'BEGIN of insert_sources_38'
22435 ,p_level => C_LEVEL_PROCEDURE
22436 ,p_module => l_log_module);
22437
22438 END IF;
22439
22440 -- select APPS owner
22441 SELECT oracle_username
22442 INTO p_apps_owner
22443 FROM fnd_oracle_userid
22444 WHERE read_only_flag = 'U'
22445 ;
22446
22447 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
22448 trace
22449 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
22450 ' - p_language = '||p_language||
22451 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
22452 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
22453 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
22454 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
22455 ,p_level => C_LEVEL_STATEMENT
22456 ,p_module => l_log_module);
22457 END IF;
22458
22459
22460 --
22461 INSERT INTO xla_diag_sources --hdr2
22462 (
22463 event_id
22464 , ledger_id
22465 , sla_ledger_id
22466 , description_language
22467 , object_name
22468 , object_type_code
22469 , line_number
22470 , source_application_id
22471 , source_type_code
22472 , source_code
22473 , source_value
22474 , source_meaning
22475 , created_by
22476 , creation_date
22477 , last_update_date
22478 , last_updated_by
22479 , last_update_login
22480 , program_update_date
22481 , program_application_id
22482 , program_id
22483 , request_id
22484 )
22485 SELECT
22486 event_id
22487 , p_target_ledger_id
22488 , p_sla_ledger_id
22489 , p_language
22490 , object_name
22491 , object_type_code
22492 , line_number
22493 , source_application_id
22494 , source_type_code
22495 , source_code
22496 , SUBSTR(source_value ,1,1996)
22497 , SUBSTR(source_meaning ,1,200)
22498 , xla_environment_pkg.g_Usr_Id
22499 , TRUNC(SYSDATE)
22500 , TRUNC(SYSDATE)
22501 , xla_environment_pkg.g_Usr_Id
22502 , xla_environment_pkg.g_Login_Id
22503 , TRUNC(SYSDATE)
22504 , xla_environment_pkg.g_Prog_Appl_Id
22505 , xla_environment_pkg.g_Prog_Id
22506 , xla_environment_pkg.g_Req_Id
22507 FROM (
22508 SELECT xet.event_id event_id
22509 , 0 line_number
22510 , CASE r
22511 WHEN 1 THEN 'OKL_CMN_EXTRACT_HDR_V'
22512 WHEN 2 THEN 'OKL_CMN_EXTRACT_HDR_V'
22513 WHEN 3 THEN 'OKL_CMN_EXTRACT_HDR_V'
22514 WHEN 4 THEN 'OKL_CMN_EXTRACT_HDR_V'
22515 WHEN 5 THEN 'OKL_CMN_EXTRACT_HDR_V'
22516 WHEN 6 THEN 'OKL_CMN_EXTRACT_HDR_V'
22517 WHEN 7 THEN 'OKL_CMN_EXTRACT_HDR_V'
22518 WHEN 8 THEN 'OKL_CMN_EXTRACT_HDR_V'
22519
22520 ELSE null
22521 END object_name
22522 , CASE r
22523 WHEN 1 THEN 'HEADER'
22524 WHEN 2 THEN 'HEADER'
22525 WHEN 3 THEN 'HEADER'
22526 WHEN 4 THEN 'HEADER'
22527 WHEN 5 THEN 'HEADER'
22528 WHEN 6 THEN 'HEADER'
22529 WHEN 7 THEN 'HEADER'
22530 WHEN 8 THEN 'HEADER'
22531
22532 ELSE null
22533 END object_type_code
22534 , CASE r
22535 WHEN 1 THEN '540'
22536 WHEN 2 THEN '540'
22537 WHEN 3 THEN '540'
22538 WHEN 4 THEN '540'
22539 WHEN 5 THEN '540'
22540 WHEN 6 THEN '540'
22541 WHEN 7 THEN '540'
22542 WHEN 8 THEN '540'
22543
22544 ELSE null
22548 WHEN 1 THEN 'TEH_CONTRACT_NUMBER'
22545 END source_application_id
22546 , 'S' source_type_code
22547 , CASE r
22549 WHEN 2 THEN 'TCN_CONTRACT_PRODUCT_NAME'
22550 WHEN 3 THEN 'TCN_CURRENCY_CODE'
22551 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE'
22552 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE'
22553 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE'
22554 WHEN 7 THEN 'GL_DATE'
22555 WHEN 8 THEN 'TCN_ACCOUNTING_REVERSAL_FLAG'
22556
22557 ELSE null
22558 END source_code
22559 , CASE r
22560 WHEN 1 THEN TO_CHAR(h1.TEH_CONTRACT_NUMBER)
22561 WHEN 2 THEN TO_CHAR(h1.TCN_CONTRACT_PRODUCT_NAME)
22562 WHEN 3 THEN TO_CHAR(h1.TCN_CURRENCY_CODE)
22563 WHEN 4 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_DATE)
22564 WHEN 5 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_RATE)
22565 WHEN 6 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_TYPE)
22566 WHEN 7 THEN TO_CHAR(h1.GL_DATE)
22567 WHEN 8 THEN TO_CHAR(h1.TCN_ACCOUNTING_REVERSAL_FLAG)
22568
22569 ELSE null
22570 END source_value
22571 , null source_meaning
22572 FROM xla_events_gt xet
22573 , OKL_CMN_EXTRACT_HDR_V h1
22574 ,(select rownum r from all_objects where rownum <= 8 and owner = p_apps_owner)
22575 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
22576 AND xet.event_class_code = C_EVENT_CLASS_CODE
22577 AND h1.event_id = xet.event_id
22578
22579 )
22580 ;
22581 --
22582 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
22583
22584 trace
22585 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
22586 ,p_level => C_LEVEL_STATEMENT
22587 ,p_module => l_log_module);
22588
22589 END IF;
22590 --
22591
22592
22593
22594 --
22595 INSERT INTO xla_diag_sources --line2
22596 (
22597 event_id
22598 , ledger_id
22599 , sla_ledger_id
22600 , description_language
22601 , object_name
22602 , object_type_code
22603 , line_number
22604 , source_application_id
22605 , source_type_code
22606 , source_code
22607 , source_value
22608 , source_meaning
22609 , created_by
22610 , creation_date
22611 , last_update_date
22612 , last_updated_by
22613 , last_update_login
22614 , program_update_date
22615 , program_application_id
22616 , program_id
22617 , request_id
22618 )
22619 SELECT event_id
22620 , p_target_ledger_id
22621 , p_sla_ledger_id
22622 , p_language
22623 , object_name
22624 , object_type_code
22625 , line_number
22626 , source_application_id
22627 , source_type_code
22628 , source_code
22629 , SUBSTR(source_value,1,1996)
22630 , SUBSTR(source_meaning ,1,200)
22631 , xla_environment_pkg.g_Usr_Id
22632 , TRUNC(SYSDATE)
22633 , TRUNC(SYSDATE)
22634 , xla_environment_pkg.g_Usr_Id
22635 , xla_environment_pkg.g_Login_Id
22636 , TRUNC(SYSDATE)
22637 , xla_environment_pkg.g_Prog_Appl_Id
22638 , xla_environment_pkg.g_Prog_Id
22639 , xla_environment_pkg.g_Req_Id
22640 FROM (
22641 SELECT xet.event_id event_id
22642 , l2.line_number line_number
22643 , CASE r
22644 WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V'
22645 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V'
22646 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V'
22647 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V'
22648 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V'
22649
22650 ELSE null
22651 END object_name
22652 , CASE r
22653 WHEN 1 THEN 'LINE'
22654 WHEN 2 THEN 'LINE'
22655 WHEN 3 THEN 'LINE'
22656 WHEN 4 THEN 'LINE'
22657 WHEN 5 THEN 'LINE'
22658
22659 ELSE null
22660 END object_type_code
22661 , CASE r
22662 WHEN 1 THEN '540'
22663 WHEN 2 THEN '540'
22664 WHEN 3 THEN '540'
22665 WHEN 4 THEN '540'
22666 WHEN 5 THEN '540'
22667
22668 ELSE null
22669 END source_application_id
22670 , 'S' source_type_code
22671 , CASE r
22672 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID'
22673 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE'
22674 WHEN 3 THEN 'DIST_ID'
22675 WHEN 4 THEN 'DIST_TYPE'
22676 WHEN 5 THEN 'DIST_ENTERED_AMOUNT'
22677
22678 ELSE null
22679 END source_code
22680 , CASE r
22681 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
22682 WHEN 2 THEN TO_CHAR(l2.DIST_AE_LINE_TYPE_CODE)
22683 WHEN 3 THEN TO_CHAR(l2.DIST_ID)
22684 WHEN 4 THEN TO_CHAR(l2.DIST_TYPE)
22685 WHEN 5 THEN TO_CHAR(l2.DIST_ENTERED_AMOUNT)
22686
22687 ELSE null
22688 END source_value
22692 ELSE null
22689 , CASE r
22690 WHEN 2 THEN fvl6.meaning
22691
22693 END source_meaning
22694 FROM xla_events_gt xet
22695 , OKL_CMN_EXTRACT_LINE_V l2
22696 , fnd_lookup_values fvl6
22697 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
22698 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
22699 AND xet.event_class_code = C_EVENT_CLASS_CODE
22700 AND l2.event_id = xet.event_id
22701 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
22702 AND fvl6.lookup_code(+) = l2.DIST_AE_LINE_TYPE_CODE
22703 AND fvl6.view_application_id(+) = 0
22704 AND fvl6.language(+) = USERENV('LANG')
22705
22706 )
22707 ;
22708 --
22709 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
22710
22711 trace
22712 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
22713 ,p_level => C_LEVEL_STATEMENT
22714 ,p_module => l_log_module);
22715
22716 END IF;
22717
22718
22719 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22720 trace
22721 (p_msg => 'END of insert_sources_38'
22722 ,p_level => C_LEVEL_PROCEDURE
22723 ,p_module => l_log_module);
22724 END IF;
22725 EXCEPTION
22726 WHEN xla_exceptions_pkg.application_exception THEN
22727 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
22728 trace
22729 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
22730 ,p_level => C_LEVEL_EXCEPTION
22731 ,p_module => l_log_module);
22732 END IF;
22733 RAISE;
22734 WHEN OTHERS THEN
22735 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
22736 trace
22737 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
22738 ,p_level => C_LEVEL_EXCEPTION
22739 ,p_module => l_log_module);
22740 END IF;
22741 xla_exceptions_pkg.raise_message
22742 (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_38');
22743 END insert_sources_38;
22744 --
22745
22746 ---------------------------------------
22747 --
22748 -- PRIVATE FUNCTION
22749 -- EventClass_38
22750 --
22751 ----------------------------------------
22752 --
22753 FUNCTION EventClass_38
22754 (p_application_id IN NUMBER
22755 ,p_base_ledger_id IN NUMBER
22756 ,p_target_ledger_id IN NUMBER
22757 ,p_language IN VARCHAR2
22758 ,p_currency_code IN VARCHAR2
22759 ,p_sla_ledger_id IN NUMBER
22760 ,p_pad_start_date IN DATE
22761 ,p_pad_end_date IN DATE
22762 ,p_primary_ledger_id IN NUMBER)
22763 RETURN BOOLEAN IS
22764 --
22765 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'PRINCIPAL_ADJUSTMENT_ALL';
22766 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'PRINCIPAL_ADJUSTMENT';
22767
22768 l_calculate_acctd_flag VARCHAR2(1) :='Y';
22769 l_calculate_g_l_flag VARCHAR2(1) :='Y';
22770 --
22771 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
22772 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
22773 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
22774 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
22775 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
22776 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
22777 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
22778 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
22779 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
22780 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
22781 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
22782 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
22783 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
22784 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
22785 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
22786 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
22787 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
22788 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
22789 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
22790 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
22791 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
22792 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
22793 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
22794 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
22795
22796 l_event_id NUMBER;
22797 l_previous_event_id NUMBER;
22798 l_first_event_id NUMBER;
22799 l_last_event_id NUMBER;
22800
22801 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
22802 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
22803 --
22804 --
22805 l_result BOOLEAN := TRUE;
22806 l_rows NUMBER := 1000;
22807 l_event_type_name VARCHAR2(80) := 'All';
22808 l_event_class_name VARCHAR2(80) := 'Principal Adjustment';
22809 l_description VARCHAR2(4000);
22810 l_transaction_reversal NUMBER;
22811 l_ae_header_id NUMBER;
22815 l_acct_reversal_source VARCHAR2(30);
22812 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
22813 l_log_module VARCHAR2(240);
22814 --
22816 l_trx_reversal_source VARCHAR2(30);
22817
22818 l_continue_with_lines BOOLEAN := TRUE;
22819 --
22820 l_acc_rev_gl_date_source DATE; -- 4262811
22821 --
22822 type t_array_event_id is table of number index by binary_integer;
22823
22824 l_rec_array_event t_rec_array_event;
22825 l_null_rec_array_event t_rec_array_event;
22826 l_array_ae_header_id xla_number_array_type;
22827 l_actual_flag VARCHAR2(1) := NULL;
22828 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
22829 l_balance_type_code VARCHAR2(1) :=NULL;
22830 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
22831
22832 --
22833 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
22834 --
22835
22836 TYPE t_array_source_1 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TEH_CONTRACT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
22837 TYPE t_array_source_2 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CONTRACT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
22838 TYPE t_array_source_10 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
22839 TYPE t_array_source_11 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
22840 TYPE t_array_source_12 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
22841 TYPE t_array_source_13 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
22842 TYPE t_array_source_15 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
22843 TYPE t_array_source_16 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
22844
22845 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
22846 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
22847 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
22848 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
22849 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
22850
22851 l_array_source_1 t_array_source_1;
22852 l_array_source_2 t_array_source_2;
22853 l_array_source_10 t_array_source_10;
22854 l_array_source_11 t_array_source_11;
22855 l_array_source_12 t_array_source_12;
22856 l_array_source_13 t_array_source_13;
22857 l_array_source_15 t_array_source_15;
22858 l_array_source_16 t_array_source_16;
22859
22860 l_array_source_5 t_array_source_5;
22861 l_array_source_6 t_array_source_6;
22862 l_array_source_6_meaning t_array_lookup_meaning;
22863 l_array_source_7 t_array_source_7;
22864 l_array_source_8 t_array_source_8;
22865 l_array_source_9 t_array_source_9;
22866
22867 --
22868 CURSOR header_cur
22869 IS
22870 SELECT /*+ leading(xet) cardinality(xet,1) */
22871 -- Event Class Code: PRINCIPAL_ADJUSTMENT
22872 xet.entity_id
22873 ,xet.legal_entity_id
22874 ,xet.entity_code
22875 ,xet.transaction_number
22876 ,xet.event_id
22877 ,xet.event_class_code
22878 ,xet.event_type_code
22879 ,xet.event_number
22880 ,xet.event_date
22881 ,xet.transaction_date
22882 ,xet.reference_num_1
22883 ,xet.reference_num_2
22884 ,xet.reference_num_3
22885 ,xet.reference_num_4
22886 ,xet.reference_char_1
22887 ,xet.reference_char_2
22888 ,xet.reference_char_3
22889 ,xet.reference_char_4
22890 ,xet.reference_date_1
22891 ,xet.reference_date_2
22892 ,xet.reference_date_3
22893 ,xet.reference_date_4
22894 ,xet.event_created_by
22895 ,xet.budgetary_control_flag
22896 , h1.TEH_CONTRACT_NUMBER source_1
22897 , h1.TCN_CONTRACT_PRODUCT_NAME source_2
22898 , h1.TCN_CURRENCY_CODE source_10
22899 , h1.TCN_CURR_CONVERSION_DATE source_11
22900 , h1.TCN_CURR_CONVERSION_RATE source_12
22901 , h1.TCN_CURR_CONVERSION_TYPE source_13
22902 , h1.GL_DATE source_15
22903 , h1.TCN_ACCOUNTING_REVERSAL_FLAG source_16
22904 FROM xla_events_gt xet
22905 , OKL_CMN_EXTRACT_HDR_V h1
22906 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
22907 and xet.event_class_code = C_EVENT_CLASS_CODE
22908 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
22909
22910 ORDER BY event_id
22911 ;
22912
22913
22914 --
22915 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
22916 IS
22917 SELECT /*+ leading(xet) cardinality(xet,1) */
22918 -- Event Class Code: PRINCIPAL_ADJUSTMENT
22919 xet.entity_id
22920 ,xet.legal_entity_id
22921 ,xet.entity_code
22922 ,xet.transaction_number
22923 ,xet.event_id
22924 ,xet.event_class_code
22925 ,xet.event_type_code
22926 ,xet.event_number
22927 ,xet.event_date
22928 ,xet.transaction_date
22929 ,xet.reference_num_1
22930 ,xet.reference_num_2
22931 ,xet.reference_num_3
22932 ,xet.reference_num_4
22933 ,xet.reference_char_1
22934 ,xet.reference_char_2
22935 ,xet.reference_char_3
22936 ,xet.reference_char_4
22937 ,xet.reference_date_1
22938 ,xet.reference_date_2
22939 ,xet.reference_date_3
22940 ,xet.reference_date_4
22941 ,xet.event_created_by
22942 ,xet.budgetary_control_flag
22943 , l2.LINE_NUMBER
22944 , l2.DIST_CODE_COMBINATION_ID source_5
22945 , l2.DIST_AE_LINE_TYPE_CODE source_6
22946 , fvl6.meaning source_6_meaning
22950 FROM xla_events_gt xet
22947 , l2.DIST_ID source_7
22948 , l2.DIST_TYPE source_8
22949 , l2.DIST_ENTERED_AMOUNT source_9
22951 , OKL_CMN_EXTRACT_LINE_V l2
22952 , fnd_lookup_values fvl6
22953 WHERE xet.event_id between x_first_event_id and x_last_event_id
22954 and xet.event_date between p_pad_start_date and p_pad_end_date
22955 and xet.event_class_code = C_EVENT_CLASS_CODE
22956 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
22957 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
22958 AND fvl6.lookup_code(+) = l2.DIST_AE_LINE_TYPE_CODE
22959 AND fvl6.view_application_id(+) = 0
22960 AND fvl6.language(+) = USERENV('LANG')
22961 ;
22962
22963 --
22964 BEGIN
22965 IF g_log_enabled THEN
22966 l_log_module := C_DEFAULT_MODULE||'.EventClass_38';
22967 END IF;
22968 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22969 trace
22970 (p_msg => 'BEGIN of EventClass_38'
22971 ,p_level => C_LEVEL_PROCEDURE
22972 ,p_module => l_log_module);
22973 END IF;
22974
22975 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
22976 trace
22977 (p_msg => 'p_application_id = '||p_application_id||
22978 ' - p_base_ledger_id = '||p_base_ledger_id||
22979 ' - p_target_ledger_id = '||p_target_ledger_id||
22980 ' - p_language = '||p_language||
22981 ' - p_currency_code = '||p_currency_code||
22982 ' - p_sla_ledger_id = '||p_sla_ledger_id
22983 ,p_level => C_LEVEL_STATEMENT
22984 ,p_module => l_log_module);
22985 END IF;
22986 --
22987 -- initialze arrays
22988 --
22989 g_array_event.DELETE;
22990 l_rec_array_event := l_null_rec_array_event;
22991 --
22992 --------------------------------------
22993 -- 4262811 Initialze MPA Line Number
22994 --------------------------------------
22995 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
22996
22997 --
22998
22999 --
23000 OPEN header_cur;
23001 --
23002 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
23003 trace
23004 (p_msg => 'SQL - FETCH header_cur'
23005 ,p_level => C_LEVEL_STATEMENT
23006 ,p_module => l_log_module);
23007 END IF;
23008 --
23009 LOOP
23010 FETCH header_cur BULK COLLECT INTO
23011 l_array_entity_id
23012 , l_array_legal_entity_id
23013 , l_array_entity_code
23014 , l_array_transaction_num
23015 , l_array_event_id
23016 , l_array_class_code
23017 , l_array_event_type
23018 , l_array_event_number
23019 , l_array_event_date
23020 , l_array_transaction_date
23021 , l_array_reference_num_1
23022 , l_array_reference_num_2
23023 , l_array_reference_num_3
23024 , l_array_reference_num_4
23025 , l_array_reference_char_1
23026 , l_array_reference_char_2
23027 , l_array_reference_char_3
23028 , l_array_reference_char_4
23029 , l_array_reference_date_1
23030 , l_array_reference_date_2
23031 , l_array_reference_date_3
23032 , l_array_reference_date_4
23033 , l_array_event_created_by
23034 , l_array_budgetary_control_flag
23035 , l_array_source_1
23036 , l_array_source_2
23037 , l_array_source_10
23038 , l_array_source_11
23039 , l_array_source_12
23040 , l_array_source_13
23041 , l_array_source_15
23042 , l_array_source_16
23043 LIMIT l_rows;
23044 --
23045 IF (C_LEVEL_EVENT >= g_log_level) THEN
23046 trace
23047 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
23048 ,p_level => C_LEVEL_EVENT
23049 ,p_module => l_log_module);
23050 END IF;
23051 --
23052 EXIT WHEN l_array_entity_id.COUNT = 0;
23053
23054 -- initialize arrays
23055 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
23056 XLA_AE_LINES_PKG.g_rec_lines := NULL;
23057
23058 --
23059 -- Bug 4458708
23060 --
23061 XLA_AE_LINES_PKG.g_LineNumber := 0;
23062
23063
23064 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
23065 g_last_hdr_idx := l_array_event_id.LAST;
23066 --
23067 -- loop for the headers. Each iteration is for each header extract row
23068 -- fetched in header cursor
23069 --
23070 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
23071
23072 --
23073 -- set event info as cache for other routines to refer event attributes
23074 --
23075 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
23076 (p_application_id => p_application_id
23077 ,p_primary_ledger_id => p_primary_ledger_id
23078 ,p_base_ledger_id => p_base_ledger_id
23079 ,p_target_ledger_id => p_target_ledger_id
23080 ,p_entity_id => l_array_entity_id(hdr_idx)
23081 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
23082 ,p_entity_code => l_array_entity_code(hdr_idx)
23083 ,p_transaction_num => l_array_transaction_num(hdr_idx)
23084 ,p_event_id => l_array_event_id(hdr_idx)
23085 ,p_event_class_code => l_array_class_code(hdr_idx)
23086 ,p_event_type_code => l_array_event_type(hdr_idx)
23087 ,p_event_number => l_array_event_number(hdr_idx)
23088 ,p_event_date => l_array_event_date(hdr_idx)
23089 ,p_transaction_date => l_array_transaction_date(hdr_idx)
23090 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
23091 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
23092 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
23093 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
23097 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
23094 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
23095 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
23096 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
23098 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
23099 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
23100 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
23101 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
23102 ,p_event_created_by => l_array_event_created_by(hdr_idx)
23103 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
23104
23105 --
23106 -- set the status of entry to C_VALID (0)
23107 --
23108 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
23109
23110 --
23111 -- initialize a row for ae header
23112 --
23113 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
23114
23115 l_event_id := l_array_event_id(hdr_idx);
23116
23117 --
23118 -- storing the hdr_idx for event. May be used by line cursor.
23119 --
23120 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
23121
23122 --
23123 -- store sources from header extract. This can be improved to
23124 -- store only those sources from header extract that may be used in lines
23125 --
23126
23127 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
23128 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
23129 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
23130 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
23131 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
23132 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
23133 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
23134 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
23135
23136 --
23137 -- initilaize the status of ae headers for diffrent balance types
23138 -- the status is initialised to C_NOT_CREATED (2)
23139 --
23140 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
23141 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
23142 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
23143
23144 --
23145 -- call api to validate and store accounting attributes for header
23146 --
23147
23148 ------------------------------------------------------------
23149 -- Accrual Reversal : to get date for Standard Source (NONE)
23150 ------------------------------------------------------------
23151 l_acc_rev_gl_date_source := NULL;
23152
23153 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
23154 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
23155 l_rec_acct_attrs.array_acct_attr_code(2) := 'TRX_ACCT_REVERSAL_OPTION';
23156 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_16');
23157
23158
23159 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
23160
23161 XLA_AE_HEADER_PKG.SetJeCategoryName;
23162
23163 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
23164 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
23165 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
23166 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
23167 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
23168
23169
23170 --
23171 xla_ae_header_pkg.SetHdrDescription(
23172 p_description => Description_1 (
23173 p_application_id => p_application_id
23174 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
23175 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
23176 )
23177 );
23178 --
23179
23180 -- No header level analytical criteria
23181
23182 --
23183 --accounting attribute enhancement, bug 3612931
23184 --
23185 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_16'), 1,30);
23186
23187 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
23188 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
23189
23190 xla_accounting_err_pkg.build_message
23191 (p_appli_s_name => 'XLA'
23192 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
23193 ,p_token_1 => 'ACCT_ATTR_NAME'
23194 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
23195 ,p_token_2 => 'PRODUCT_NAME'
23196 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
23197 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
23198 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
23199 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
23200
23201 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
23202 --
23203 -- following sets the accounting attributes needed to reverse
23204 -- accounting for a distributeion
23205 --
23206 xla_ae_lines_pkg.SetTrxReversalAttrs
23207 (p_event_id => l_event_id
23208 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
23209 ,p_trx_reversal_source => l_trx_reversal_source);
23210
23211 END IF;
23212
23213
23217 --
23214 ----------------------------------------------------------------
23215 -- 4262811 - update the header statuses to invalid in need be
23216 ----------------------------------------------------------------
23218 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
23219
23220
23221 -----------------------------------------------
23222 -- No accrual reversal for the event class/type
23223 -----------------------------------------------
23224 ----------------------------------------------------------------
23225
23226 --
23227 -- this ends the header loop iteration for one bulk fetch
23228 --
23229 END LOOP;
23230
23231 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
23232 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
23233
23234 --
23235 -- insert dummy rows into lines gt table that were created due to
23236 -- transaction reversals
23237 --
23238 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
23239 l_result := XLA_AE_LINES_PKG.InsertLines;
23240 END IF;
23241
23242 --
23243 -- reset the temp_line_num for each set of events fetched from header
23244 -- cursor rather than doing it for each new event in line cursor
23245 -- Bug 3939231
23246 --
23247 xla_ae_lines_pkg.g_temp_line_num := 0;
23248
23249
23250
23251 --
23252 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
23253 --
23254 --
23255 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
23256
23257 trace
23258 (p_msg => 'SQL - FETCH line_cur'
23259 ,p_level => C_LEVEL_STATEMENT
23260 ,p_module => l_log_module);
23261
23262 END IF;
23263 --
23264 --
23265 LOOP
23266 --
23267 FETCH line_cur BULK COLLECT INTO
23268 l_array_entity_id
23269 , l_array_legal_entity_id
23270 , l_array_entity_code
23271 , l_array_transaction_num
23272 , l_array_event_id
23273 , l_array_class_code
23274 , l_array_event_type
23275 , l_array_event_number
23276 , l_array_event_date
23277 , l_array_transaction_date
23278 , l_array_reference_num_1
23279 , l_array_reference_num_2
23280 , l_array_reference_num_3
23281 , l_array_reference_num_4
23282 , l_array_reference_char_1
23283 , l_array_reference_char_2
23284 , l_array_reference_char_3
23285 , l_array_reference_char_4
23286 , l_array_reference_date_1
23287 , l_array_reference_date_2
23288 , l_array_reference_date_3
23289 , l_array_reference_date_4
23290 , l_array_event_created_by
23291 , l_array_budgetary_control_flag
23292 , l_array_extract_line_num
23293 , l_array_source_5
23294 , l_array_source_6
23295 , l_array_source_6_meaning
23296 , l_array_source_7
23297 , l_array_source_8
23298 , l_array_source_9
23299 LIMIT l_rows;
23300
23301 --
23302 IF (C_LEVEL_EVENT >= g_log_level) THEN
23303 trace
23304 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
23305 ,p_level => C_LEVEL_EVENT
23306 ,p_module => l_log_module);
23307 END IF;
23308 --
23309 EXIT WHEN l_array_entity_id.count = 0;
23310
23311 XLA_AE_LINES_PKG.g_rec_lines := null;
23312
23313 --
23314 -- Bug 4458708
23315 --
23316 XLA_AE_LINES_PKG.g_LineNumber := 0;
23317 --
23318 --
23319
23320 FOR Idx IN 1..l_array_event_id.count LOOP
23321 --
23322 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
23323 --
23324 l_event_id := l_array_event_id(idx); -- 5648433
23325
23326 --
23327 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
23328 --
23329
23330 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
23331 (g_array_event(l_event_id).array_value_num('header_index'))
23332 ,'N'
23333 ) <> 'Y'
23334 THEN
23335 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
23336 trace
23337 (p_msg => 'Trancaction revesal option is not Y '
23338 ,p_level => C_LEVEL_STATEMENT
23339 ,p_module => l_log_module);
23340 END IF;
23341
23342 --
23343 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
23344 --
23345 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
23346 --
23347 -- set event info as cache for other routines to refer event attributes
23348 --
23349
23350 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
23351 l_previous_event_id := l_event_id;
23352
23353 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
23354 (p_application_id => p_application_id
23355 ,p_primary_ledger_id => p_primary_ledger_id
23356 ,p_base_ledger_id => p_base_ledger_id
23357 ,p_target_ledger_id => p_target_ledger_id
23358 ,p_entity_id => l_array_entity_id(Idx)
23359 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
23360 ,p_entity_code => l_array_entity_code(Idx)
23361 ,p_transaction_num => l_array_transaction_num(Idx)
23362 ,p_event_id => l_array_event_id(Idx)
23363 ,p_event_class_code => l_array_class_code(Idx)
23364 ,p_event_type_code => l_array_event_type(Idx)
23365 ,p_event_number => l_array_event_number(Idx)
23366 ,p_event_date => l_array_event_date(Idx)
23367 ,p_transaction_date => l_array_transaction_date(Idx)
23371 ,p_reference_num_4 => l_array_reference_num_4(Idx)
23368 ,p_reference_num_1 => l_array_reference_num_1(Idx)
23369 ,p_reference_num_2 => l_array_reference_num_2(Idx)
23370 ,p_reference_num_3 => l_array_reference_num_3(Idx)
23372 ,p_reference_char_1 => l_array_reference_char_1(Idx)
23373 ,p_reference_char_2 => l_array_reference_char_2(Idx)
23374 ,p_reference_char_3 => l_array_reference_char_3(Idx)
23375 ,p_reference_char_4 => l_array_reference_char_4(Idx)
23376 ,p_reference_date_1 => l_array_reference_date_1(Idx)
23377 ,p_reference_date_2 => l_array_reference_date_2(Idx)
23378 ,p_reference_date_3 => l_array_reference_date_3(Idx)
23379 ,p_reference_date_4 => l_array_reference_date_4(Idx)
23380 ,p_event_created_by => l_array_event_created_by(Idx)
23381 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
23382 --
23383 END IF;
23384
23385
23386
23387 --
23388 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
23389
23390 l_acct_reversal_source := SUBSTR(NULL, 1,30);
23391
23392 IF l_continue_with_lines THEN
23393 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
23394 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
23395
23396 xla_accounting_err_pkg.build_message
23397 (p_appli_s_name => 'XLA'
23398 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
23399 ,p_token_1 => 'LINE_NUMBER'
23400 ,p_value_1 => l_array_extract_line_num(Idx)
23401 ,p_token_2 => 'PRODUCT_NAME'
23402 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
23403 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
23404 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
23405 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
23406
23407 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
23408 --
23409 -- following sets the accounting attributes needed to reverse
23410 -- accounting for a distributeion
23411 --
23412
23413 --
23414 -- 5217187
23415 --
23416 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
23417 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
23418 g_array_event(l_event_id).array_value_num('header_index'));
23419 --
23420 --
23421
23422 -- No reversal code generated
23423
23424 xla_ae_lines_pkg.SetAcctReversalAttrs
23425 (p_event_id => l_event_id
23426 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
23427 ,p_calculate_acctd_flag => l_calculate_acctd_flag
23428 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
23429 END IF;
23430
23431 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
23432 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
23433
23434 --
23435 AcctLineType_16 (
23436 p_application_id => p_application_id
23437 ,p_event_id => l_event_id
23438 ,p_calculate_acctd_flag => l_calculate_acctd_flag
23439 ,p_calculate_g_l_flag => l_calculate_g_l_flag
23440 ,p_actual_flag => l_actual_flag
23441 ,p_balance_type_code => l_balance_type_code
23442 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
23443
23444 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
23445 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
23446 , p_source_5 => l_array_source_5(Idx)
23447 , p_source_6 => l_array_source_6(Idx)
23448 , p_source_6_meaning => l_array_source_6_meaning(Idx)
23449 , p_source_7 => l_array_source_7(Idx)
23450 , p_source_8 => l_array_source_8(Idx)
23451 , p_source_9 => l_array_source_9(Idx)
23452 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
23453 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
23454 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
23455 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
23456 );
23457 If(l_balance_type_code = 'A') THEN
23458 l_actual_gain_loss_ref := l_gain_or_loss_ref;
23459 END IF;
23460
23461 --
23462
23463
23464 --
23465 AcctLineType_17 (
23466 p_application_id => p_application_id
23467 ,p_event_id => l_event_id
23468 ,p_calculate_acctd_flag => l_calculate_acctd_flag
23469 ,p_calculate_g_l_flag => l_calculate_g_l_flag
23470 ,p_actual_flag => l_actual_flag
23471 ,p_balance_type_code => l_balance_type_code
23472 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
23473
23474 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
23475 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
23476 , p_source_5 => l_array_source_5(Idx)
23477 , p_source_6 => l_array_source_6(Idx)
23478 , p_source_6_meaning => l_array_source_6_meaning(Idx)
23479 , p_source_7 => l_array_source_7(Idx)
23480 , p_source_8 => l_array_source_8(Idx)
23481 , p_source_9 => l_array_source_9(Idx)
23482 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
23483 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
23484 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
23485 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
23486 );
23487 If(l_balance_type_code = 'A') THEN
23488 l_actual_gain_loss_ref := l_gain_or_loss_ref;
23489 END IF;
23490
23491 --
23492
23493 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
23497 (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'))
23494 -- or secondary ledger that has different currency with primary
23495 -- or alc that is calculated by sla
23496 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
23498
23499 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
23500 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
23501 AND (l_actual_flag = 'A')) THEN
23502 XLA_AE_LINES_PKG.CreateGainOrLossLines(
23503 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
23504 ,p_application_id => p_application_id
23505 ,p_amb_context_code => 'DEFAULT'
23506 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
23507 ,p_event_class_code => C_EVENT_CLASS_CODE
23508 ,p_event_type_code => C_EVENT_TYPE_CODE
23509
23510 ,p_gain_ccid => -1
23511 ,p_loss_ccid => -1
23512
23513 ,p_actual_flag => l_actual_flag
23514 ,p_enc_flag => null
23515 ,p_actual_g_l_ref => l_actual_gain_loss_ref
23516 ,p_enc_g_l_ref => null
23517 );
23518 END IF;
23519 END IF;
23520 END IF;
23521
23522 ELSE
23523 --
23524 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
23525 --
23526 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
23527 trace
23528 (p_msg => 'Trancaction revesal option is Y'
23529 ,p_level => C_LEVEL_STATEMENT
23530 ,p_module => l_log_module);
23531 END IF;
23532 END IF;
23533
23534 END LOOP;
23535 l_result := XLA_AE_LINES_PKG.InsertLines ;
23536 end loop;
23537 close line_cur;
23538
23539
23540 --
23541 -- insert headers into xla_ae_headers_gt table
23542 --
23543 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
23544
23545 -- insert into errors table here.
23546
23547 END LOOP;
23548
23549 --
23550 -- 4865292
23551 --
23552 -- Compare g_hdr_extract_count with event count in
23553 -- CreateHeadersAndLines.
23554 --
23555 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
23556
23557 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
23558 trace (p_msg => '# rows extracted from header extract objects '
23559 || ' (running total): '
23560 || g_hdr_extract_count
23561 ,p_level => C_LEVEL_STATEMENT
23562 ,p_module => l_log_module);
23563 END IF;
23564
23565 CLOSE header_cur;
23566 --
23567
23568 --
23569 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23570 trace
23571 (p_msg => 'END of EventClass_38'
23572 ,p_level => C_LEVEL_PROCEDURE
23573 ,p_module => l_log_module);
23574 END IF;
23575 --
23576 RETURN l_result;
23577 EXCEPTION
23578 WHEN xla_exceptions_pkg.application_exception THEN
23579
23580 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
23581
23582
23583 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
23584
23585 RAISE;
23586 WHEN OTHERS THEN
23587 xla_exceptions_pkg.raise_message
23588 (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_38');
23589 END EventClass_38;
23590 --
23591
23592 ---------------------------------------
23593 --
23594 -- PRIVATE PROCEDURE
23595 -- insert_sources_39
23596 --
23597 ----------------------------------------
23598 --
23599 PROCEDURE insert_sources_39(
23600 p_target_ledger_id IN NUMBER
23601 , p_language IN VARCHAR2
23602 , p_sla_ledger_id IN NUMBER
23603 , p_pad_start_date IN DATE
23604 , p_pad_end_date IN DATE
23605 )
23606 IS
23607
23608 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'REBOOK_ALL';
23609 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'REBOOK';
23610 p_apps_owner VARCHAR2(30);
23611 l_log_module VARCHAR2(240);
23612 BEGIN
23613 IF g_log_enabled THEN
23614 l_log_module := C_DEFAULT_MODULE||'.insert_sources_39';
23615 END IF;
23616 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23617
23618 trace
23619 (p_msg => 'BEGIN of insert_sources_39'
23620 ,p_level => C_LEVEL_PROCEDURE
23621 ,p_module => l_log_module);
23622
23623 END IF;
23624
23625 -- select APPS owner
23626 SELECT oracle_username
23627 INTO p_apps_owner
23628 FROM fnd_oracle_userid
23629 WHERE read_only_flag = 'U'
23630 ;
23631
23632 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
23633 trace
23634 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
23635 ' - p_language = '||p_language||
23636 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
23637 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
23638 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
23639 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
23640 ,p_level => C_LEVEL_STATEMENT
23641 ,p_module => l_log_module);
23642 END IF;
23643
23644
23645 --
23646 INSERT INTO xla_diag_sources --hdr2
23647 (
23648 event_id
23649 , ledger_id
23650 , sla_ledger_id
23651 , description_language
23655 , source_application_id
23652 , object_name
23653 , object_type_code
23654 , line_number
23656 , source_type_code
23657 , source_code
23658 , source_value
23659 , source_meaning
23660 , created_by
23661 , creation_date
23662 , last_update_date
23663 , last_updated_by
23664 , last_update_login
23665 , program_update_date
23666 , program_application_id
23667 , program_id
23668 , request_id
23669 )
23670 SELECT
23671 event_id
23672 , p_target_ledger_id
23673 , p_sla_ledger_id
23674 , p_language
23675 , object_name
23676 , object_type_code
23677 , line_number
23678 , source_application_id
23679 , source_type_code
23680 , source_code
23681 , SUBSTR(source_value ,1,1996)
23682 , SUBSTR(source_meaning ,1,200)
23683 , xla_environment_pkg.g_Usr_Id
23684 , TRUNC(SYSDATE)
23685 , TRUNC(SYSDATE)
23686 , xla_environment_pkg.g_Usr_Id
23687 , xla_environment_pkg.g_Login_Id
23688 , TRUNC(SYSDATE)
23689 , xla_environment_pkg.g_Prog_Appl_Id
23690 , xla_environment_pkg.g_Prog_Id
23691 , xla_environment_pkg.g_Req_Id
23692 FROM (
23693 SELECT xet.event_id event_id
23694 , 0 line_number
23695 , CASE r
23696 WHEN 1 THEN 'OKL_CMN_EXTRACT_HDR_V'
23697 WHEN 2 THEN 'OKL_CMN_EXTRACT_HDR_V'
23698 WHEN 3 THEN 'OKL_CMN_EXTRACT_HDR_V'
23699 WHEN 4 THEN 'OKL_CMN_EXTRACT_HDR_V'
23700 WHEN 5 THEN 'OKL_CMN_EXTRACT_HDR_V'
23701 WHEN 6 THEN 'OKL_CMN_EXTRACT_HDR_V'
23702 WHEN 7 THEN 'OKL_CMN_EXTRACT_HDR_V'
23703 WHEN 8 THEN 'OKL_CMN_EXTRACT_HDR_V'
23704
23705 ELSE null
23706 END object_name
23707 , CASE r
23708 WHEN 1 THEN 'HEADER'
23709 WHEN 2 THEN 'HEADER'
23710 WHEN 3 THEN 'HEADER'
23711 WHEN 4 THEN 'HEADER'
23712 WHEN 5 THEN 'HEADER'
23713 WHEN 6 THEN 'HEADER'
23714 WHEN 7 THEN 'HEADER'
23715 WHEN 8 THEN 'HEADER'
23716
23717 ELSE null
23718 END object_type_code
23719 , CASE r
23720 WHEN 1 THEN '540'
23721 WHEN 2 THEN '540'
23722 WHEN 3 THEN '540'
23723 WHEN 4 THEN '540'
23724 WHEN 5 THEN '540'
23725 WHEN 6 THEN '540'
23726 WHEN 7 THEN '540'
23727 WHEN 8 THEN '540'
23728
23729 ELSE null
23730 END source_application_id
23731 , 'S' source_type_code
23732 , CASE r
23733 WHEN 1 THEN 'TEH_CONTRACT_NUMBER'
23734 WHEN 2 THEN 'TCN_CONTRACT_PRODUCT_NAME'
23735 WHEN 3 THEN 'TCN_CURRENCY_CODE'
23736 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE'
23737 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE'
23738 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE'
23739 WHEN 7 THEN 'GL_DATE'
23740 WHEN 8 THEN 'TCN_ACCOUNTING_REVERSAL_FLAG'
23741
23742 ELSE null
23743 END source_code
23744 , CASE r
23745 WHEN 1 THEN TO_CHAR(h1.TEH_CONTRACT_NUMBER)
23746 WHEN 2 THEN TO_CHAR(h1.TCN_CONTRACT_PRODUCT_NAME)
23747 WHEN 3 THEN TO_CHAR(h1.TCN_CURRENCY_CODE)
23748 WHEN 4 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_DATE)
23749 WHEN 5 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_RATE)
23750 WHEN 6 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_TYPE)
23751 WHEN 7 THEN TO_CHAR(h1.GL_DATE)
23752 WHEN 8 THEN TO_CHAR(h1.TCN_ACCOUNTING_REVERSAL_FLAG)
23753
23754 ELSE null
23755 END source_value
23756 , null source_meaning
23757 FROM xla_events_gt xet
23758 , OKL_CMN_EXTRACT_HDR_V h1
23759 ,(select rownum r from all_objects where rownum <= 8 and owner = p_apps_owner)
23760 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
23761 AND xet.event_class_code = C_EVENT_CLASS_CODE
23762 AND h1.event_id = xet.event_id
23763
23764 )
23765 ;
23766 --
23767 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
23768
23769 trace
23770 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
23771 ,p_level => C_LEVEL_STATEMENT
23772 ,p_module => l_log_module);
23773
23774 END IF;
23775 --
23776
23777
23778
23779 --
23780 INSERT INTO xla_diag_sources --line2
23781 (
23782 event_id
23783 , ledger_id
23784 , sla_ledger_id
23785 , description_language
23786 , object_name
23787 , object_type_code
23788 , line_number
23789 , source_application_id
23790 , source_type_code
23791 , source_code
23792 , source_value
23793 , source_meaning
23794 , created_by
23795 , creation_date
23796 , last_update_date
23797 , last_updated_by
23798 , last_update_login
23799 , program_update_date
23800 , program_application_id
23801 , program_id
23802 , request_id
23806 , p_sla_ledger_id
23803 )
23804 SELECT event_id
23805 , p_target_ledger_id
23807 , p_language
23808 , object_name
23809 , object_type_code
23810 , line_number
23811 , source_application_id
23812 , source_type_code
23813 , source_code
23814 , SUBSTR(source_value,1,1996)
23815 , SUBSTR(source_meaning ,1,200)
23816 , xla_environment_pkg.g_Usr_Id
23817 , TRUNC(SYSDATE)
23818 , TRUNC(SYSDATE)
23819 , xla_environment_pkg.g_Usr_Id
23820 , xla_environment_pkg.g_Login_Id
23821 , TRUNC(SYSDATE)
23822 , xla_environment_pkg.g_Prog_Appl_Id
23823 , xla_environment_pkg.g_Prog_Id
23824 , xla_environment_pkg.g_Req_Id
23825 FROM (
23826 SELECT xet.event_id event_id
23827 , l2.line_number line_number
23828 , CASE r
23829 WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V'
23830 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V'
23831 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V'
23832 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V'
23833 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V'
23834
23835 ELSE null
23836 END object_name
23837 , CASE r
23838 WHEN 1 THEN 'LINE'
23839 WHEN 2 THEN 'LINE'
23840 WHEN 3 THEN 'LINE'
23841 WHEN 4 THEN 'LINE'
23842 WHEN 5 THEN 'LINE'
23843
23844 ELSE null
23845 END object_type_code
23846 , CASE r
23847 WHEN 1 THEN '540'
23848 WHEN 2 THEN '540'
23849 WHEN 3 THEN '540'
23850 WHEN 4 THEN '540'
23851 WHEN 5 THEN '540'
23852
23853 ELSE null
23854 END source_application_id
23855 , 'S' source_type_code
23856 , CASE r
23857 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID'
23858 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE'
23859 WHEN 3 THEN 'DIST_ID'
23860 WHEN 4 THEN 'DIST_TYPE'
23861 WHEN 5 THEN 'DIST_ENTERED_AMOUNT'
23862
23863 ELSE null
23864 END source_code
23865 , CASE r
23866 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
23867 WHEN 2 THEN TO_CHAR(l2.DIST_AE_LINE_TYPE_CODE)
23868 WHEN 3 THEN TO_CHAR(l2.DIST_ID)
23869 WHEN 4 THEN TO_CHAR(l2.DIST_TYPE)
23870 WHEN 5 THEN TO_CHAR(l2.DIST_ENTERED_AMOUNT)
23871
23872 ELSE null
23873 END source_value
23874 , CASE r
23875 WHEN 2 THEN fvl6.meaning
23876
23877 ELSE null
23878 END source_meaning
23879 FROM xla_events_gt xet
23880 , OKL_CMN_EXTRACT_LINE_V l2
23881 , fnd_lookup_values fvl6
23882 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
23883 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
23884 AND xet.event_class_code = C_EVENT_CLASS_CODE
23885 AND l2.event_id = xet.event_id
23886 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
23887 AND fvl6.lookup_code(+) = l2.DIST_AE_LINE_TYPE_CODE
23888 AND fvl6.view_application_id(+) = 0
23889 AND fvl6.language(+) = USERENV('LANG')
23890
23891 )
23892 ;
23893 --
23894 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
23895
23896 trace
23897 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
23898 ,p_level => C_LEVEL_STATEMENT
23899 ,p_module => l_log_module);
23900
23901 END IF;
23902
23903
23904 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23905 trace
23906 (p_msg => 'END of insert_sources_39'
23907 ,p_level => C_LEVEL_PROCEDURE
23908 ,p_module => l_log_module);
23909 END IF;
23910 EXCEPTION
23911 WHEN xla_exceptions_pkg.application_exception THEN
23912 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
23913 trace
23914 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
23915 ,p_level => C_LEVEL_EXCEPTION
23916 ,p_module => l_log_module);
23917 END IF;
23918 RAISE;
23919 WHEN OTHERS THEN
23920 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
23921 trace
23922 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
23923 ,p_level => C_LEVEL_EXCEPTION
23924 ,p_module => l_log_module);
23925 END IF;
23926 xla_exceptions_pkg.raise_message
23927 (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_39');
23928 END insert_sources_39;
23929 --
23930
23931 ---------------------------------------
23932 --
23933 -- PRIVATE FUNCTION
23934 -- EventClass_39
23935 --
23936 ----------------------------------------
23937 --
23938 FUNCTION EventClass_39
23939 (p_application_id IN NUMBER
23940 ,p_base_ledger_id IN NUMBER
23941 ,p_target_ledger_id IN NUMBER
23942 ,p_language IN VARCHAR2
23943 ,p_currency_code IN VARCHAR2
23944 ,p_sla_ledger_id IN NUMBER
23945 ,p_pad_start_date IN DATE
23946 ,p_pad_end_date IN DATE
23950 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'REBOOK_ALL';
23947 ,p_primary_ledger_id IN NUMBER)
23948 RETURN BOOLEAN IS
23949 --
23951 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'REBOOK';
23952
23953 l_calculate_acctd_flag VARCHAR2(1) :='Y';
23954 l_calculate_g_l_flag VARCHAR2(1) :='Y';
23955 --
23956 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
23957 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
23958 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
23959 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
23960 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
23961 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
23962 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
23963 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
23964 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
23965 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
23966 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
23967 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
23968 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
23969 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
23970 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
23971 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
23972 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
23973 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
23974 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
23975 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
23976 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
23977 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
23978 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
23979 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
23980
23981 l_event_id NUMBER;
23982 l_previous_event_id NUMBER;
23983 l_first_event_id NUMBER;
23984 l_last_event_id NUMBER;
23985
23986 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
23987 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
23988 --
23989 --
23990 l_result BOOLEAN := TRUE;
23991 l_rows NUMBER := 1000;
23992 l_event_type_name VARCHAR2(80) := 'All';
23993 l_event_class_name VARCHAR2(80) := 'Rebook';
23994 l_description VARCHAR2(4000);
23995 l_transaction_reversal NUMBER;
23996 l_ae_header_id NUMBER;
23997 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
23998 l_log_module VARCHAR2(240);
23999 --
24000 l_acct_reversal_source VARCHAR2(30);
24001 l_trx_reversal_source VARCHAR2(30);
24002
24003 l_continue_with_lines BOOLEAN := TRUE;
24004 --
24005 l_acc_rev_gl_date_source DATE; -- 4262811
24006 --
24007 type t_array_event_id is table of number index by binary_integer;
24008
24009 l_rec_array_event t_rec_array_event;
24010 l_null_rec_array_event t_rec_array_event;
24011 l_array_ae_header_id xla_number_array_type;
24012 l_actual_flag VARCHAR2(1) := NULL;
24013 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
24014 l_balance_type_code VARCHAR2(1) :=NULL;
24015 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
24016
24017 --
24018 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
24019 --
24020
24021 TYPE t_array_source_1 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TEH_CONTRACT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
24022 TYPE t_array_source_2 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CONTRACT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
24023 TYPE t_array_source_10 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
24024 TYPE t_array_source_11 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
24025 TYPE t_array_source_12 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
24026 TYPE t_array_source_13 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
24027 TYPE t_array_source_15 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
24028 TYPE t_array_source_16 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
24029
24030 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
24031 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
24032 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
24033 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
24034 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
24035
24036 l_array_source_1 t_array_source_1;
24037 l_array_source_2 t_array_source_2;
24038 l_array_source_10 t_array_source_10;
24039 l_array_source_11 t_array_source_11;
24040 l_array_source_12 t_array_source_12;
24041 l_array_source_13 t_array_source_13;
24042 l_array_source_15 t_array_source_15;
24043 l_array_source_16 t_array_source_16;
24044
24045 l_array_source_5 t_array_source_5;
24046 l_array_source_6 t_array_source_6;
24047 l_array_source_6_meaning t_array_lookup_meaning;
24048 l_array_source_7 t_array_source_7;
24052 --
24049 l_array_source_8 t_array_source_8;
24050 l_array_source_9 t_array_source_9;
24051
24053 CURSOR header_cur
24054 IS
24055 SELECT /*+ leading(xet) cardinality(xet,1) */
24056 -- Event Class Code: REBOOK
24057 xet.entity_id
24058 ,xet.legal_entity_id
24059 ,xet.entity_code
24060 ,xet.transaction_number
24061 ,xet.event_id
24062 ,xet.event_class_code
24063 ,xet.event_type_code
24064 ,xet.event_number
24065 ,xet.event_date
24066 ,xet.transaction_date
24067 ,xet.reference_num_1
24068 ,xet.reference_num_2
24069 ,xet.reference_num_3
24070 ,xet.reference_num_4
24071 ,xet.reference_char_1
24072 ,xet.reference_char_2
24073 ,xet.reference_char_3
24074 ,xet.reference_char_4
24075 ,xet.reference_date_1
24076 ,xet.reference_date_2
24077 ,xet.reference_date_3
24078 ,xet.reference_date_4
24079 ,xet.event_created_by
24080 ,xet.budgetary_control_flag
24081 , h1.TEH_CONTRACT_NUMBER source_1
24082 , h1.TCN_CONTRACT_PRODUCT_NAME source_2
24083 , h1.TCN_CURRENCY_CODE source_10
24084 , h1.TCN_CURR_CONVERSION_DATE source_11
24085 , h1.TCN_CURR_CONVERSION_RATE source_12
24086 , h1.TCN_CURR_CONVERSION_TYPE source_13
24087 , h1.GL_DATE source_15
24088 , h1.TCN_ACCOUNTING_REVERSAL_FLAG source_16
24089 FROM xla_events_gt xet
24090 , OKL_CMN_EXTRACT_HDR_V h1
24091 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
24092 and xet.event_class_code = C_EVENT_CLASS_CODE
24093 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
24094
24095 ORDER BY event_id
24096 ;
24097
24098
24099 --
24100 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
24101 IS
24102 SELECT /*+ leading(xet) cardinality(xet,1) */
24103 -- Event Class Code: REBOOK
24104 xet.entity_id
24105 ,xet.legal_entity_id
24106 ,xet.entity_code
24107 ,xet.transaction_number
24108 ,xet.event_id
24109 ,xet.event_class_code
24110 ,xet.event_type_code
24111 ,xet.event_number
24112 ,xet.event_date
24113 ,xet.transaction_date
24114 ,xet.reference_num_1
24115 ,xet.reference_num_2
24116 ,xet.reference_num_3
24117 ,xet.reference_num_4
24118 ,xet.reference_char_1
24119 ,xet.reference_char_2
24120 ,xet.reference_char_3
24121 ,xet.reference_char_4
24122 ,xet.reference_date_1
24123 ,xet.reference_date_2
24124 ,xet.reference_date_3
24125 ,xet.reference_date_4
24126 ,xet.event_created_by
24127 ,xet.budgetary_control_flag
24128 , l2.LINE_NUMBER
24129 , l2.DIST_CODE_COMBINATION_ID source_5
24130 , l2.DIST_AE_LINE_TYPE_CODE source_6
24131 , fvl6.meaning source_6_meaning
24132 , l2.DIST_ID source_7
24133 , l2.DIST_TYPE source_8
24134 , l2.DIST_ENTERED_AMOUNT source_9
24135 FROM xla_events_gt xet
24136 , OKL_CMN_EXTRACT_LINE_V l2
24137 , fnd_lookup_values fvl6
24138 WHERE xet.event_id between x_first_event_id and x_last_event_id
24139 and xet.event_date between p_pad_start_date and p_pad_end_date
24140 and xet.event_class_code = C_EVENT_CLASS_CODE
24141 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
24142 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
24143 AND fvl6.lookup_code(+) = l2.DIST_AE_LINE_TYPE_CODE
24144 AND fvl6.view_application_id(+) = 0
24145 AND fvl6.language(+) = USERENV('LANG')
24146 ;
24147
24148 --
24149 BEGIN
24150 IF g_log_enabled THEN
24151 l_log_module := C_DEFAULT_MODULE||'.EventClass_39';
24152 END IF;
24153 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24154 trace
24155 (p_msg => 'BEGIN of EventClass_39'
24156 ,p_level => C_LEVEL_PROCEDURE
24157 ,p_module => l_log_module);
24158 END IF;
24159
24160 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
24161 trace
24162 (p_msg => 'p_application_id = '||p_application_id||
24163 ' - p_base_ledger_id = '||p_base_ledger_id||
24164 ' - p_target_ledger_id = '||p_target_ledger_id||
24165 ' - p_language = '||p_language||
24166 ' - p_currency_code = '||p_currency_code||
24167 ' - p_sla_ledger_id = '||p_sla_ledger_id
24168 ,p_level => C_LEVEL_STATEMENT
24169 ,p_module => l_log_module);
24170 END IF;
24171 --
24172 -- initialze arrays
24173 --
24174 g_array_event.DELETE;
24175 l_rec_array_event := l_null_rec_array_event;
24176 --
24177 --------------------------------------
24178 -- 4262811 Initialze MPA Line Number
24179 --------------------------------------
24180 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
24181
24182 --
24183
24184 --
24185 OPEN header_cur;
24186 --
24187 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
24188 trace
24189 (p_msg => 'SQL - FETCH header_cur'
24190 ,p_level => C_LEVEL_STATEMENT
24191 ,p_module => l_log_module);
24192 END IF;
24193 --
24194 LOOP
24195 FETCH header_cur BULK COLLECT INTO
24196 l_array_entity_id
24197 , l_array_legal_entity_id
24198 , l_array_entity_code
24199 , l_array_transaction_num
24200 , l_array_event_id
24201 , l_array_class_code
24202 , l_array_event_type
24203 , l_array_event_number
24204 , l_array_event_date
24205 , l_array_transaction_date
24206 , l_array_reference_num_1
24207 , l_array_reference_num_2
24208 , l_array_reference_num_3
24209 , l_array_reference_num_4
24210 , l_array_reference_char_1
24211 , l_array_reference_char_2
24215 , l_array_reference_date_2
24212 , l_array_reference_char_3
24213 , l_array_reference_char_4
24214 , l_array_reference_date_1
24216 , l_array_reference_date_3
24217 , l_array_reference_date_4
24218 , l_array_event_created_by
24219 , l_array_budgetary_control_flag
24220 , l_array_source_1
24221 , l_array_source_2
24222 , l_array_source_10
24223 , l_array_source_11
24224 , l_array_source_12
24225 , l_array_source_13
24226 , l_array_source_15
24227 , l_array_source_16
24228 LIMIT l_rows;
24229 --
24230 IF (C_LEVEL_EVENT >= g_log_level) THEN
24231 trace
24232 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
24233 ,p_level => C_LEVEL_EVENT
24234 ,p_module => l_log_module);
24235 END IF;
24236 --
24237 EXIT WHEN l_array_entity_id.COUNT = 0;
24238
24239 -- initialize arrays
24240 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
24241 XLA_AE_LINES_PKG.g_rec_lines := NULL;
24242
24243 --
24244 -- Bug 4458708
24245 --
24246 XLA_AE_LINES_PKG.g_LineNumber := 0;
24247
24248
24249 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
24250 g_last_hdr_idx := l_array_event_id.LAST;
24251 --
24252 -- loop for the headers. Each iteration is for each header extract row
24253 -- fetched in header cursor
24254 --
24255 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
24256
24257 --
24258 -- set event info as cache for other routines to refer event attributes
24259 --
24260 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
24261 (p_application_id => p_application_id
24262 ,p_primary_ledger_id => p_primary_ledger_id
24263 ,p_base_ledger_id => p_base_ledger_id
24264 ,p_target_ledger_id => p_target_ledger_id
24265 ,p_entity_id => l_array_entity_id(hdr_idx)
24266 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
24267 ,p_entity_code => l_array_entity_code(hdr_idx)
24268 ,p_transaction_num => l_array_transaction_num(hdr_idx)
24269 ,p_event_id => l_array_event_id(hdr_idx)
24270 ,p_event_class_code => l_array_class_code(hdr_idx)
24271 ,p_event_type_code => l_array_event_type(hdr_idx)
24272 ,p_event_number => l_array_event_number(hdr_idx)
24273 ,p_event_date => l_array_event_date(hdr_idx)
24274 ,p_transaction_date => l_array_transaction_date(hdr_idx)
24275 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
24276 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
24277 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
24278 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
24279 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
24280 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
24281 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
24282 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
24283 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
24284 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
24285 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
24286 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
24287 ,p_event_created_by => l_array_event_created_by(hdr_idx)
24288 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
24289
24290 --
24291 -- set the status of entry to C_VALID (0)
24292 --
24293 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
24294
24295 --
24296 -- initialize a row for ae header
24297 --
24298 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
24299
24300 l_event_id := l_array_event_id(hdr_idx);
24301
24302 --
24303 -- storing the hdr_idx for event. May be used by line cursor.
24304 --
24305 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
24306
24307 --
24308 -- store sources from header extract. This can be improved to
24309 -- store only those sources from header extract that may be used in lines
24310 --
24311
24312 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
24313 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
24314 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
24315 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
24316 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
24317 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
24318 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
24319 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
24320
24321 --
24322 -- initilaize the status of ae headers for diffrent balance types
24323 -- the status is initialised to C_NOT_CREATED (2)
24324 --
24325 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
24326 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
24327 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
24328
24329 --
24330 -- call api to validate and store accounting attributes for header
24331 --
24332
24333 ------------------------------------------------------------
24334 -- Accrual Reversal : to get date for Standard Source (NONE)
24335 ------------------------------------------------------------
24336 l_acc_rev_gl_date_source := NULL;
24337
24338 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
24342
24339 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
24340 l_rec_acct_attrs.array_acct_attr_code(2) := 'TRX_ACCT_REVERSAL_OPTION';
24341 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_16');
24343
24344 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
24345
24346 XLA_AE_HEADER_PKG.SetJeCategoryName;
24347
24348 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
24349 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
24350 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
24351 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
24352 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
24353
24354
24355 --
24356 xla_ae_header_pkg.SetHdrDescription(
24357 p_description => Description_1 (
24358 p_application_id => p_application_id
24359 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
24360 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
24361 )
24362 );
24363 --
24364
24365 -- No header level analytical criteria
24366
24367 --
24368 --accounting attribute enhancement, bug 3612931
24369 --
24370 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_16'), 1,30);
24371
24372 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
24373 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
24374
24375 xla_accounting_err_pkg.build_message
24376 (p_appli_s_name => 'XLA'
24377 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
24378 ,p_token_1 => 'ACCT_ATTR_NAME'
24379 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
24380 ,p_token_2 => 'PRODUCT_NAME'
24381 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
24382 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
24383 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
24384 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
24385
24386 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
24387 --
24388 -- following sets the accounting attributes needed to reverse
24389 -- accounting for a distributeion
24390 --
24391 xla_ae_lines_pkg.SetTrxReversalAttrs
24392 (p_event_id => l_event_id
24393 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
24394 ,p_trx_reversal_source => l_trx_reversal_source);
24395
24396 END IF;
24397
24398
24399 ----------------------------------------------------------------
24400 -- 4262811 - update the header statuses to invalid in need be
24401 ----------------------------------------------------------------
24402 --
24403 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
24404
24405
24406 -----------------------------------------------
24407 -- No accrual reversal for the event class/type
24408 -----------------------------------------------
24409 ----------------------------------------------------------------
24410
24411 --
24412 -- this ends the header loop iteration for one bulk fetch
24413 --
24414 END LOOP;
24415
24416 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
24417 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
24418
24419 --
24420 -- insert dummy rows into lines gt table that were created due to
24421 -- transaction reversals
24422 --
24423 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
24424 l_result := XLA_AE_LINES_PKG.InsertLines;
24425 END IF;
24426
24427 --
24428 -- reset the temp_line_num for each set of events fetched from header
24429 -- cursor rather than doing it for each new event in line cursor
24430 -- Bug 3939231
24431 --
24432 xla_ae_lines_pkg.g_temp_line_num := 0;
24433
24434
24435
24436 --
24437 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
24438 --
24439 --
24440 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
24441
24442 trace
24443 (p_msg => 'SQL - FETCH line_cur'
24444 ,p_level => C_LEVEL_STATEMENT
24445 ,p_module => l_log_module);
24446
24447 END IF;
24448 --
24449 --
24450 LOOP
24451 --
24452 FETCH line_cur BULK COLLECT INTO
24453 l_array_entity_id
24454 , l_array_legal_entity_id
24455 , l_array_entity_code
24456 , l_array_transaction_num
24457 , l_array_event_id
24458 , l_array_class_code
24459 , l_array_event_type
24460 , l_array_event_number
24461 , l_array_event_date
24462 , l_array_transaction_date
24463 , l_array_reference_num_1
24464 , l_array_reference_num_2
24465 , l_array_reference_num_3
24466 , l_array_reference_num_4
24467 , l_array_reference_char_1
24468 , l_array_reference_char_2
24469 , l_array_reference_char_3
24470 , l_array_reference_char_4
24471 , l_array_reference_date_1
24472 , l_array_reference_date_2
24473 , l_array_reference_date_3
24474 , l_array_reference_date_4
24475 , l_array_event_created_by
24476 , l_array_budgetary_control_flag
24477 , l_array_extract_line_num
24478 , l_array_source_5
24479 , l_array_source_6
24480 , l_array_source_6_meaning
24481 , l_array_source_7
24482 , l_array_source_8
24486 --
24483 , l_array_source_9
24484 LIMIT l_rows;
24485
24487 IF (C_LEVEL_EVENT >= g_log_level) THEN
24488 trace
24489 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
24490 ,p_level => C_LEVEL_EVENT
24491 ,p_module => l_log_module);
24492 END IF;
24493 --
24494 EXIT WHEN l_array_entity_id.count = 0;
24495
24496 XLA_AE_LINES_PKG.g_rec_lines := null;
24497
24498 --
24499 -- Bug 4458708
24500 --
24501 XLA_AE_LINES_PKG.g_LineNumber := 0;
24502 --
24503 --
24504
24505 FOR Idx IN 1..l_array_event_id.count LOOP
24506 --
24507 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
24508 --
24509 l_event_id := l_array_event_id(idx); -- 5648433
24510
24511 --
24512 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
24513 --
24514
24515 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
24516 (g_array_event(l_event_id).array_value_num('header_index'))
24517 ,'N'
24518 ) <> 'Y'
24519 THEN
24520 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
24521 trace
24522 (p_msg => 'Trancaction revesal option is not Y '
24523 ,p_level => C_LEVEL_STATEMENT
24524 ,p_module => l_log_module);
24525 END IF;
24526
24527 --
24528 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
24529 --
24530 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
24531 --
24532 -- set event info as cache for other routines to refer event attributes
24533 --
24534
24535 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
24536 l_previous_event_id := l_event_id;
24537
24538 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
24539 (p_application_id => p_application_id
24540 ,p_primary_ledger_id => p_primary_ledger_id
24541 ,p_base_ledger_id => p_base_ledger_id
24542 ,p_target_ledger_id => p_target_ledger_id
24543 ,p_entity_id => l_array_entity_id(Idx)
24544 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
24545 ,p_entity_code => l_array_entity_code(Idx)
24546 ,p_transaction_num => l_array_transaction_num(Idx)
24547 ,p_event_id => l_array_event_id(Idx)
24548 ,p_event_class_code => l_array_class_code(Idx)
24549 ,p_event_type_code => l_array_event_type(Idx)
24550 ,p_event_number => l_array_event_number(Idx)
24551 ,p_event_date => l_array_event_date(Idx)
24552 ,p_transaction_date => l_array_transaction_date(Idx)
24553 ,p_reference_num_1 => l_array_reference_num_1(Idx)
24554 ,p_reference_num_2 => l_array_reference_num_2(Idx)
24555 ,p_reference_num_3 => l_array_reference_num_3(Idx)
24556 ,p_reference_num_4 => l_array_reference_num_4(Idx)
24557 ,p_reference_char_1 => l_array_reference_char_1(Idx)
24558 ,p_reference_char_2 => l_array_reference_char_2(Idx)
24559 ,p_reference_char_3 => l_array_reference_char_3(Idx)
24560 ,p_reference_char_4 => l_array_reference_char_4(Idx)
24561 ,p_reference_date_1 => l_array_reference_date_1(Idx)
24562 ,p_reference_date_2 => l_array_reference_date_2(Idx)
24563 ,p_reference_date_3 => l_array_reference_date_3(Idx)
24564 ,p_reference_date_4 => l_array_reference_date_4(Idx)
24565 ,p_event_created_by => l_array_event_created_by(Idx)
24566 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
24567 --
24568 END IF;
24569
24570
24571
24572 --
24573 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
24574
24575 l_acct_reversal_source := SUBSTR(NULL, 1,30);
24576
24577 IF l_continue_with_lines THEN
24578 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
24579 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
24580
24581 xla_accounting_err_pkg.build_message
24582 (p_appli_s_name => 'XLA'
24583 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
24584 ,p_token_1 => 'LINE_NUMBER'
24585 ,p_value_1 => l_array_extract_line_num(Idx)
24586 ,p_token_2 => 'PRODUCT_NAME'
24587 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
24588 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
24589 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
24590 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
24591
24592 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
24593 --
24594 -- following sets the accounting attributes needed to reverse
24595 -- accounting for a distributeion
24596 --
24597
24598 --
24599 -- 5217187
24600 --
24601 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
24602 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
24603 g_array_event(l_event_id).array_value_num('header_index'));
24604 --
24605 --
24606
24607 -- No reversal code generated
24608
24609 xla_ae_lines_pkg.SetAcctReversalAttrs
24610 (p_event_id => l_event_id
24611 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
24612 ,p_calculate_acctd_flag => l_calculate_acctd_flag
24613 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
24617 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
24614 END IF;
24615
24616 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
24618
24619 --
24620 AcctLineType_18 (
24621 p_application_id => p_application_id
24622 ,p_event_id => l_event_id
24623 ,p_calculate_acctd_flag => l_calculate_acctd_flag
24624 ,p_calculate_g_l_flag => l_calculate_g_l_flag
24625 ,p_actual_flag => l_actual_flag
24626 ,p_balance_type_code => l_balance_type_code
24627 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
24628
24629 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
24630 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
24631 , p_source_5 => l_array_source_5(Idx)
24632 , p_source_6 => l_array_source_6(Idx)
24633 , p_source_6_meaning => l_array_source_6_meaning(Idx)
24634 , p_source_7 => l_array_source_7(Idx)
24635 , p_source_8 => l_array_source_8(Idx)
24636 , p_source_9 => l_array_source_9(Idx)
24637 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
24638 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
24639 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
24640 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
24641 );
24642 If(l_balance_type_code = 'A') THEN
24643 l_actual_gain_loss_ref := l_gain_or_loss_ref;
24644 END IF;
24645
24646 --
24647
24648
24649 --
24650 AcctLineType_19 (
24651 p_application_id => p_application_id
24652 ,p_event_id => l_event_id
24653 ,p_calculate_acctd_flag => l_calculate_acctd_flag
24654 ,p_calculate_g_l_flag => l_calculate_g_l_flag
24655 ,p_actual_flag => l_actual_flag
24656 ,p_balance_type_code => l_balance_type_code
24657 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
24658
24659 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
24660 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
24661 , p_source_5 => l_array_source_5(Idx)
24662 , p_source_6 => l_array_source_6(Idx)
24663 , p_source_6_meaning => l_array_source_6_meaning(Idx)
24664 , p_source_7 => l_array_source_7(Idx)
24665 , p_source_8 => l_array_source_8(Idx)
24666 , p_source_9 => l_array_source_9(Idx)
24667 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
24668 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
24669 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
24670 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
24671 );
24672 If(l_balance_type_code = 'A') THEN
24673 l_actual_gain_loss_ref := l_gain_or_loss_ref;
24674 END IF;
24675
24676 --
24677
24678 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
24679 -- or secondary ledger that has different currency with primary
24680 -- or alc that is calculated by sla
24681 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
24682 (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'))
24683
24684 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
24685 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
24686 AND (l_actual_flag = 'A')) THEN
24687 XLA_AE_LINES_PKG.CreateGainOrLossLines(
24688 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
24689 ,p_application_id => p_application_id
24690 ,p_amb_context_code => 'DEFAULT'
24691 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
24692 ,p_event_class_code => C_EVENT_CLASS_CODE
24693 ,p_event_type_code => C_EVENT_TYPE_CODE
24694
24695 ,p_gain_ccid => -1
24696 ,p_loss_ccid => -1
24697
24698 ,p_actual_flag => l_actual_flag
24699 ,p_enc_flag => null
24700 ,p_actual_g_l_ref => l_actual_gain_loss_ref
24701 ,p_enc_g_l_ref => null
24702 );
24703 END IF;
24704 END IF;
24705 END IF;
24706
24707 ELSE
24708 --
24709 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
24710 --
24711 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
24712 trace
24713 (p_msg => 'Trancaction revesal option is Y'
24714 ,p_level => C_LEVEL_STATEMENT
24715 ,p_module => l_log_module);
24716 END IF;
24717 END IF;
24718
24719 END LOOP;
24720 l_result := XLA_AE_LINES_PKG.InsertLines ;
24721 end loop;
24722 close line_cur;
24723
24724
24725 --
24726 -- insert headers into xla_ae_headers_gt table
24727 --
24728 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
24729
24730 -- insert into errors table here.
24731
24732 END LOOP;
24733
24734 --
24735 -- 4865292
24736 --
24737 -- Compare g_hdr_extract_count with event count in
24738 -- CreateHeadersAndLines.
24739 --
24740 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
24741
24742 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
24743 trace (p_msg => '# rows extracted from header extract objects '
24744 || ' (running total): '
24745 || g_hdr_extract_count
24746 ,p_level => C_LEVEL_STATEMENT
24747 ,p_module => l_log_module);
24748 END IF;
24749
24750 CLOSE header_cur;
24751 --
24752
24753 --
24754 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24755 trace
24756 (p_msg => 'END of EventClass_39'
24757 ,p_level => C_LEVEL_PROCEDURE
24761 RETURN l_result;
24758 ,p_module => l_log_module);
24759 END IF;
24760 --
24762 EXCEPTION
24763 WHEN xla_exceptions_pkg.application_exception THEN
24764
24765 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
24766
24767
24768 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
24769
24770 RAISE;
24771 WHEN OTHERS THEN
24772 xla_exceptions_pkg.raise_message
24773 (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_39');
24774 END EventClass_39;
24775 --
24776
24777 ---------------------------------------
24778 --
24779 -- PRIVATE PROCEDURE
24780 -- insert_sources_40
24781 --
24782 ----------------------------------------
24783 --
24784 PROCEDURE insert_sources_40(
24785 p_target_ledger_id IN NUMBER
24786 , p_language IN VARCHAR2
24787 , p_sla_ledger_id IN NUMBER
24788 , p_pad_start_date IN DATE
24789 , p_pad_end_date IN DATE
24790 )
24791 IS
24792
24793 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RECEIPT_APPLICATION_ALL';
24794 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RECEIPT_APPLICATION';
24795 p_apps_owner VARCHAR2(30);
24796 l_log_module VARCHAR2(240);
24797 BEGIN
24798 IF g_log_enabled THEN
24799 l_log_module := C_DEFAULT_MODULE||'.insert_sources_40';
24800 END IF;
24801 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24802
24803 trace
24804 (p_msg => 'BEGIN of insert_sources_40'
24805 ,p_level => C_LEVEL_PROCEDURE
24806 ,p_module => l_log_module);
24807
24808 END IF;
24809
24810 -- select APPS owner
24811 SELECT oracle_username
24812 INTO p_apps_owner
24813 FROM fnd_oracle_userid
24814 WHERE read_only_flag = 'U'
24815 ;
24816
24817 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
24818 trace
24819 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
24820 ' - p_language = '||p_language||
24821 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
24822 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
24823 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
24824 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
24825 ,p_level => C_LEVEL_STATEMENT
24826 ,p_module => l_log_module);
24827 END IF;
24828
24829
24830 --
24831 INSERT INTO xla_diag_sources --hdr2
24832 (
24833 event_id
24834 , ledger_id
24835 , sla_ledger_id
24836 , description_language
24837 , object_name
24838 , object_type_code
24839 , line_number
24840 , source_application_id
24841 , source_type_code
24842 , source_code
24843 , source_value
24844 , source_meaning
24845 , created_by
24846 , creation_date
24847 , last_update_date
24848 , last_updated_by
24849 , last_update_login
24850 , program_update_date
24851 , program_application_id
24852 , program_id
24853 , request_id
24854 )
24855 SELECT
24856 event_id
24857 , p_target_ledger_id
24858 , p_sla_ledger_id
24859 , p_language
24860 , object_name
24861 , object_type_code
24862 , line_number
24863 , source_application_id
24864 , source_type_code
24865 , source_code
24866 , SUBSTR(source_value ,1,1996)
24867 , SUBSTR(source_meaning ,1,200)
24868 , xla_environment_pkg.g_Usr_Id
24869 , TRUNC(SYSDATE)
24870 , TRUNC(SYSDATE)
24871 , xla_environment_pkg.g_Usr_Id
24872 , xla_environment_pkg.g_Login_Id
24873 , TRUNC(SYSDATE)
24874 , xla_environment_pkg.g_Prog_Appl_Id
24875 , xla_environment_pkg.g_Prog_Id
24876 , xla_environment_pkg.g_Req_Id
24877 FROM (
24878 SELECT xet.event_id event_id
24879 , 0 line_number
24880 , CASE r
24881 WHEN 1 THEN 'OKL_CMN_EXTRACT_HDR_V'
24882 WHEN 2 THEN 'OKL_CMN_EXTRACT_HDR_V'
24883 WHEN 3 THEN 'OKL_CMN_EXTRACT_HDR_V'
24884 WHEN 4 THEN 'OKL_CMN_EXTRACT_HDR_V'
24885 WHEN 5 THEN 'OKL_CMN_EXTRACT_HDR_V'
24886 WHEN 6 THEN 'OKL_CMN_EXTRACT_HDR_V'
24887 WHEN 7 THEN 'OKL_CMN_EXTRACT_HDR_V'
24888 WHEN 8 THEN 'OKL_CMN_EXTRACT_HDR_V'
24889
24890 ELSE null
24891 END object_name
24892 , CASE r
24893 WHEN 1 THEN 'HEADER'
24894 WHEN 2 THEN 'HEADER'
24895 WHEN 3 THEN 'HEADER'
24896 WHEN 4 THEN 'HEADER'
24897 WHEN 5 THEN 'HEADER'
24898 WHEN 6 THEN 'HEADER'
24899 WHEN 7 THEN 'HEADER'
24900 WHEN 8 THEN 'HEADER'
24901
24902 ELSE null
24903 END object_type_code
24904 , CASE r
24905 WHEN 1 THEN '540'
24906 WHEN 2 THEN '540'
24907 WHEN 3 THEN '540'
24908 WHEN 4 THEN '540'
24909 WHEN 5 THEN '540'
24910 WHEN 6 THEN '540'
24911 WHEN 7 THEN '540'
24912 WHEN 8 THEN '540'
24913
24914 ELSE null
24918 WHEN 1 THEN 'TEH_CONTRACT_NUMBER'
24915 END source_application_id
24916 , 'S' source_type_code
24917 , CASE r
24919 WHEN 2 THEN 'TCN_CONTRACT_PRODUCT_NAME'
24920 WHEN 3 THEN 'TCN_CURRENCY_CODE'
24921 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE'
24922 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE'
24923 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE'
24924 WHEN 7 THEN 'GL_DATE'
24925 WHEN 8 THEN 'TCN_ACCOUNTING_REVERSAL_FLAG'
24926
24927 ELSE null
24928 END source_code
24929 , CASE r
24930 WHEN 1 THEN TO_CHAR(h1.TEH_CONTRACT_NUMBER)
24931 WHEN 2 THEN TO_CHAR(h1.TCN_CONTRACT_PRODUCT_NAME)
24932 WHEN 3 THEN TO_CHAR(h1.TCN_CURRENCY_CODE)
24933 WHEN 4 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_DATE)
24934 WHEN 5 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_RATE)
24935 WHEN 6 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_TYPE)
24936 WHEN 7 THEN TO_CHAR(h1.GL_DATE)
24937 WHEN 8 THEN TO_CHAR(h1.TCN_ACCOUNTING_REVERSAL_FLAG)
24938
24939 ELSE null
24940 END source_value
24941 , null source_meaning
24942 FROM xla_events_gt xet
24943 , OKL_CMN_EXTRACT_HDR_V h1
24944 ,(select rownum r from all_objects where rownum <= 8 and owner = p_apps_owner)
24945 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
24946 AND xet.event_class_code = C_EVENT_CLASS_CODE
24947 AND h1.event_id = xet.event_id
24948
24949 )
24950 ;
24951 --
24952 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
24953
24954 trace
24955 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
24956 ,p_level => C_LEVEL_STATEMENT
24957 ,p_module => l_log_module);
24958
24959 END IF;
24960 --
24961
24962
24963
24964 --
24965 INSERT INTO xla_diag_sources --line2
24966 (
24967 event_id
24968 , ledger_id
24969 , sla_ledger_id
24970 , description_language
24971 , object_name
24972 , object_type_code
24973 , line_number
24974 , source_application_id
24975 , source_type_code
24976 , source_code
24977 , source_value
24978 , source_meaning
24979 , created_by
24980 , creation_date
24981 , last_update_date
24982 , last_updated_by
24983 , last_update_login
24984 , program_update_date
24985 , program_application_id
24986 , program_id
24987 , request_id
24988 )
24989 SELECT event_id
24990 , p_target_ledger_id
24991 , p_sla_ledger_id
24992 , p_language
24993 , object_name
24994 , object_type_code
24995 , line_number
24996 , source_application_id
24997 , source_type_code
24998 , source_code
24999 , SUBSTR(source_value,1,1996)
25000 , SUBSTR(source_meaning ,1,200)
25001 , xla_environment_pkg.g_Usr_Id
25002 , TRUNC(SYSDATE)
25003 , TRUNC(SYSDATE)
25004 , xla_environment_pkg.g_Usr_Id
25005 , xla_environment_pkg.g_Login_Id
25006 , TRUNC(SYSDATE)
25007 , xla_environment_pkg.g_Prog_Appl_Id
25008 , xla_environment_pkg.g_Prog_Id
25009 , xla_environment_pkg.g_Req_Id
25010 FROM (
25011 SELECT xet.event_id event_id
25012 , l2.line_number line_number
25013 , CASE r
25014 WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V'
25015 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V'
25016 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V'
25017 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V'
25018 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V'
25019
25020 ELSE null
25021 END object_name
25022 , CASE r
25023 WHEN 1 THEN 'LINE'
25024 WHEN 2 THEN 'LINE'
25025 WHEN 3 THEN 'LINE'
25026 WHEN 4 THEN 'LINE'
25027 WHEN 5 THEN 'LINE'
25028
25029 ELSE null
25030 END object_type_code
25031 , CASE r
25032 WHEN 1 THEN '540'
25033 WHEN 2 THEN '540'
25034 WHEN 3 THEN '540'
25035 WHEN 4 THEN '540'
25036 WHEN 5 THEN '540'
25037
25038 ELSE null
25039 END source_application_id
25040 , 'S' source_type_code
25041 , CASE r
25042 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID'
25043 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE'
25044 WHEN 3 THEN 'DIST_ID'
25045 WHEN 4 THEN 'DIST_TYPE'
25046 WHEN 5 THEN 'DIST_ENTERED_AMOUNT'
25047
25048 ELSE null
25049 END source_code
25050 , CASE r
25051 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
25052 WHEN 2 THEN TO_CHAR(l2.DIST_AE_LINE_TYPE_CODE)
25053 WHEN 3 THEN TO_CHAR(l2.DIST_ID)
25054 WHEN 4 THEN TO_CHAR(l2.DIST_TYPE)
25055 WHEN 5 THEN TO_CHAR(l2.DIST_ENTERED_AMOUNT)
25056
25057 ELSE null
25058 END source_value
25062 ELSE null
25059 , CASE r
25060 WHEN 2 THEN fvl6.meaning
25061
25063 END source_meaning
25064 FROM xla_events_gt xet
25065 , OKL_CMN_EXTRACT_LINE_V l2
25066 , fnd_lookup_values fvl6
25067 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
25068 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
25069 AND xet.event_class_code = C_EVENT_CLASS_CODE
25070 AND l2.event_id = xet.event_id
25071 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
25072 AND fvl6.lookup_code(+) = l2.DIST_AE_LINE_TYPE_CODE
25073 AND fvl6.view_application_id(+) = 0
25074 AND fvl6.language(+) = USERENV('LANG')
25075
25076 )
25077 ;
25078 --
25079 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
25080
25081 trace
25082 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
25083 ,p_level => C_LEVEL_STATEMENT
25084 ,p_module => l_log_module);
25085
25086 END IF;
25087
25088
25089 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25090 trace
25091 (p_msg => 'END of insert_sources_40'
25092 ,p_level => C_LEVEL_PROCEDURE
25093 ,p_module => l_log_module);
25094 END IF;
25095 EXCEPTION
25096 WHEN xla_exceptions_pkg.application_exception THEN
25097 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
25098 trace
25099 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
25100 ,p_level => C_LEVEL_EXCEPTION
25101 ,p_module => l_log_module);
25102 END IF;
25103 RAISE;
25104 WHEN OTHERS THEN
25105 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
25106 trace
25107 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
25108 ,p_level => C_LEVEL_EXCEPTION
25109 ,p_module => l_log_module);
25110 END IF;
25111 xla_exceptions_pkg.raise_message
25112 (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_40');
25113 END insert_sources_40;
25114 --
25115
25116 ---------------------------------------
25117 --
25118 -- PRIVATE FUNCTION
25119 -- EventClass_40
25120 --
25121 ----------------------------------------
25122 --
25123 FUNCTION EventClass_40
25124 (p_application_id IN NUMBER
25125 ,p_base_ledger_id IN NUMBER
25126 ,p_target_ledger_id IN NUMBER
25127 ,p_language IN VARCHAR2
25128 ,p_currency_code IN VARCHAR2
25129 ,p_sla_ledger_id IN NUMBER
25130 ,p_pad_start_date IN DATE
25131 ,p_pad_end_date IN DATE
25132 ,p_primary_ledger_id IN NUMBER)
25133 RETURN BOOLEAN IS
25134 --
25135 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RECEIPT_APPLICATION_ALL';
25136 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RECEIPT_APPLICATION';
25137
25138 l_calculate_acctd_flag VARCHAR2(1) :='Y';
25139 l_calculate_g_l_flag VARCHAR2(1) :='Y';
25140 --
25141 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
25142 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
25143 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
25144 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
25145 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
25146 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
25147 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
25148 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
25149 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
25150 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
25151 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
25152 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
25153 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
25154 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
25155 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
25156 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
25157 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
25158 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
25159 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
25160 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
25161 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
25162 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
25163 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
25164 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
25165
25166 l_event_id NUMBER;
25167 l_previous_event_id NUMBER;
25168 l_first_event_id NUMBER;
25169 l_last_event_id NUMBER;
25170
25171 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
25172 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
25173 --
25174 --
25175 l_result BOOLEAN := TRUE;
25176 l_rows NUMBER := 1000;
25177 l_event_type_name VARCHAR2(80) := 'All';
25178 l_event_class_name VARCHAR2(80) := 'Receipt Application';
25179 l_description VARCHAR2(4000);
25180 l_transaction_reversal NUMBER;
25181 l_ae_header_id NUMBER;
25185 l_acct_reversal_source VARCHAR2(30);
25182 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
25183 l_log_module VARCHAR2(240);
25184 --
25186 l_trx_reversal_source VARCHAR2(30);
25187
25188 l_continue_with_lines BOOLEAN := TRUE;
25189 --
25190 l_acc_rev_gl_date_source DATE; -- 4262811
25191 --
25192 type t_array_event_id is table of number index by binary_integer;
25193
25194 l_rec_array_event t_rec_array_event;
25195 l_null_rec_array_event t_rec_array_event;
25196 l_array_ae_header_id xla_number_array_type;
25197 l_actual_flag VARCHAR2(1) := NULL;
25198 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
25199 l_balance_type_code VARCHAR2(1) :=NULL;
25200 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
25201
25202 --
25203 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
25204 --
25205
25206 TYPE t_array_source_1 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TEH_CONTRACT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
25207 TYPE t_array_source_2 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CONTRACT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
25208 TYPE t_array_source_10 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
25209 TYPE t_array_source_11 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
25210 TYPE t_array_source_12 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
25211 TYPE t_array_source_13 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
25212 TYPE t_array_source_15 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
25213 TYPE t_array_source_16 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
25214
25215 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
25216 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
25217 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
25218 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
25219 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
25220
25221 l_array_source_1 t_array_source_1;
25222 l_array_source_2 t_array_source_2;
25223 l_array_source_10 t_array_source_10;
25224 l_array_source_11 t_array_source_11;
25225 l_array_source_12 t_array_source_12;
25226 l_array_source_13 t_array_source_13;
25227 l_array_source_15 t_array_source_15;
25228 l_array_source_16 t_array_source_16;
25229
25230 l_array_source_5 t_array_source_5;
25231 l_array_source_6 t_array_source_6;
25232 l_array_source_6_meaning t_array_lookup_meaning;
25233 l_array_source_7 t_array_source_7;
25234 l_array_source_8 t_array_source_8;
25235 l_array_source_9 t_array_source_9;
25236
25237 --
25238 CURSOR header_cur
25239 IS
25240 SELECT /*+ leading(xet) cardinality(xet,1) */
25241 -- Event Class Code: RECEIPT_APPLICATION
25242 xet.entity_id
25243 ,xet.legal_entity_id
25244 ,xet.entity_code
25245 ,xet.transaction_number
25246 ,xet.event_id
25247 ,xet.event_class_code
25248 ,xet.event_type_code
25249 ,xet.event_number
25250 ,xet.event_date
25251 ,xet.transaction_date
25252 ,xet.reference_num_1
25253 ,xet.reference_num_2
25254 ,xet.reference_num_3
25255 ,xet.reference_num_4
25256 ,xet.reference_char_1
25257 ,xet.reference_char_2
25258 ,xet.reference_char_3
25259 ,xet.reference_char_4
25260 ,xet.reference_date_1
25261 ,xet.reference_date_2
25262 ,xet.reference_date_3
25263 ,xet.reference_date_4
25264 ,xet.event_created_by
25265 ,xet.budgetary_control_flag
25266 , h1.TEH_CONTRACT_NUMBER source_1
25267 , h1.TCN_CONTRACT_PRODUCT_NAME source_2
25268 , h1.TCN_CURRENCY_CODE source_10
25269 , h1.TCN_CURR_CONVERSION_DATE source_11
25270 , h1.TCN_CURR_CONVERSION_RATE source_12
25271 , h1.TCN_CURR_CONVERSION_TYPE source_13
25272 , h1.GL_DATE source_15
25273 , h1.TCN_ACCOUNTING_REVERSAL_FLAG source_16
25274 FROM xla_events_gt xet
25275 , OKL_CMN_EXTRACT_HDR_V h1
25276 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
25277 and xet.event_class_code = C_EVENT_CLASS_CODE
25278 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
25279
25280 ORDER BY event_id
25281 ;
25282
25283
25284 --
25285 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
25286 IS
25287 SELECT /*+ leading(xet) cardinality(xet,1) */
25288 -- Event Class Code: RECEIPT_APPLICATION
25289 xet.entity_id
25290 ,xet.legal_entity_id
25291 ,xet.entity_code
25292 ,xet.transaction_number
25293 ,xet.event_id
25294 ,xet.event_class_code
25295 ,xet.event_type_code
25296 ,xet.event_number
25297 ,xet.event_date
25298 ,xet.transaction_date
25299 ,xet.reference_num_1
25300 ,xet.reference_num_2
25301 ,xet.reference_num_3
25302 ,xet.reference_num_4
25303 ,xet.reference_char_1
25304 ,xet.reference_char_2
25305 ,xet.reference_char_3
25306 ,xet.reference_char_4
25307 ,xet.reference_date_1
25308 ,xet.reference_date_2
25309 ,xet.reference_date_3
25310 ,xet.reference_date_4
25311 ,xet.event_created_by
25312 ,xet.budgetary_control_flag
25313 , l2.LINE_NUMBER
25314 , l2.DIST_CODE_COMBINATION_ID source_5
25315 , l2.DIST_AE_LINE_TYPE_CODE source_6
25316 , fvl6.meaning source_6_meaning
25320 FROM xla_events_gt xet
25317 , l2.DIST_ID source_7
25318 , l2.DIST_TYPE source_8
25319 , l2.DIST_ENTERED_AMOUNT source_9
25321 , OKL_CMN_EXTRACT_LINE_V l2
25322 , fnd_lookup_values fvl6
25323 WHERE xet.event_id between x_first_event_id and x_last_event_id
25324 and xet.event_date between p_pad_start_date and p_pad_end_date
25325 and xet.event_class_code = C_EVENT_CLASS_CODE
25326 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
25327 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
25328 AND fvl6.lookup_code(+) = l2.DIST_AE_LINE_TYPE_CODE
25329 AND fvl6.view_application_id(+) = 0
25330 AND fvl6.language(+) = USERENV('LANG')
25331 ;
25332
25333 --
25334 BEGIN
25335 IF g_log_enabled THEN
25336 l_log_module := C_DEFAULT_MODULE||'.EventClass_40';
25337 END IF;
25338 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25339 trace
25340 (p_msg => 'BEGIN of EventClass_40'
25341 ,p_level => C_LEVEL_PROCEDURE
25342 ,p_module => l_log_module);
25343 END IF;
25344
25345 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
25346 trace
25347 (p_msg => 'p_application_id = '||p_application_id||
25348 ' - p_base_ledger_id = '||p_base_ledger_id||
25349 ' - p_target_ledger_id = '||p_target_ledger_id||
25350 ' - p_language = '||p_language||
25351 ' - p_currency_code = '||p_currency_code||
25352 ' - p_sla_ledger_id = '||p_sla_ledger_id
25353 ,p_level => C_LEVEL_STATEMENT
25354 ,p_module => l_log_module);
25355 END IF;
25356 --
25357 -- initialze arrays
25358 --
25359 g_array_event.DELETE;
25360 l_rec_array_event := l_null_rec_array_event;
25361 --
25362 --------------------------------------
25363 -- 4262811 Initialze MPA Line Number
25364 --------------------------------------
25365 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
25366
25367 --
25368
25369 --
25370 OPEN header_cur;
25371 --
25372 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
25373 trace
25374 (p_msg => 'SQL - FETCH header_cur'
25375 ,p_level => C_LEVEL_STATEMENT
25376 ,p_module => l_log_module);
25377 END IF;
25378 --
25379 LOOP
25380 FETCH header_cur BULK COLLECT INTO
25381 l_array_entity_id
25382 , l_array_legal_entity_id
25383 , l_array_entity_code
25384 , l_array_transaction_num
25385 , l_array_event_id
25386 , l_array_class_code
25387 , l_array_event_type
25388 , l_array_event_number
25389 , l_array_event_date
25390 , l_array_transaction_date
25391 , l_array_reference_num_1
25392 , l_array_reference_num_2
25393 , l_array_reference_num_3
25394 , l_array_reference_num_4
25395 , l_array_reference_char_1
25396 , l_array_reference_char_2
25397 , l_array_reference_char_3
25398 , l_array_reference_char_4
25399 , l_array_reference_date_1
25400 , l_array_reference_date_2
25401 , l_array_reference_date_3
25402 , l_array_reference_date_4
25403 , l_array_event_created_by
25404 , l_array_budgetary_control_flag
25405 , l_array_source_1
25406 , l_array_source_2
25407 , l_array_source_10
25408 , l_array_source_11
25409 , l_array_source_12
25410 , l_array_source_13
25411 , l_array_source_15
25412 , l_array_source_16
25413 LIMIT l_rows;
25414 --
25415 IF (C_LEVEL_EVENT >= g_log_level) THEN
25416 trace
25417 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
25418 ,p_level => C_LEVEL_EVENT
25419 ,p_module => l_log_module);
25420 END IF;
25421 --
25422 EXIT WHEN l_array_entity_id.COUNT = 0;
25423
25424 -- initialize arrays
25425 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
25426 XLA_AE_LINES_PKG.g_rec_lines := NULL;
25427
25428 --
25429 -- Bug 4458708
25430 --
25431 XLA_AE_LINES_PKG.g_LineNumber := 0;
25432
25433
25434 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
25435 g_last_hdr_idx := l_array_event_id.LAST;
25436 --
25437 -- loop for the headers. Each iteration is for each header extract row
25438 -- fetched in header cursor
25439 --
25440 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
25441
25442 --
25443 -- set event info as cache for other routines to refer event attributes
25444 --
25445 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
25446 (p_application_id => p_application_id
25447 ,p_primary_ledger_id => p_primary_ledger_id
25448 ,p_base_ledger_id => p_base_ledger_id
25449 ,p_target_ledger_id => p_target_ledger_id
25450 ,p_entity_id => l_array_entity_id(hdr_idx)
25451 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
25452 ,p_entity_code => l_array_entity_code(hdr_idx)
25453 ,p_transaction_num => l_array_transaction_num(hdr_idx)
25454 ,p_event_id => l_array_event_id(hdr_idx)
25455 ,p_event_class_code => l_array_class_code(hdr_idx)
25456 ,p_event_type_code => l_array_event_type(hdr_idx)
25457 ,p_event_number => l_array_event_number(hdr_idx)
25458 ,p_event_date => l_array_event_date(hdr_idx)
25459 ,p_transaction_date => l_array_transaction_date(hdr_idx)
25460 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
25461 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
25462 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
25463 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
25467 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
25464 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
25465 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
25466 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
25468 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
25469 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
25470 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
25471 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
25472 ,p_event_created_by => l_array_event_created_by(hdr_idx)
25473 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
25474
25475 --
25476 -- set the status of entry to C_VALID (0)
25477 --
25478 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
25479
25480 --
25481 -- initialize a row for ae header
25482 --
25483 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
25484
25485 l_event_id := l_array_event_id(hdr_idx);
25486
25487 --
25488 -- storing the hdr_idx for event. May be used by line cursor.
25489 --
25490 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
25491
25492 --
25493 -- store sources from header extract. This can be improved to
25494 -- store only those sources from header extract that may be used in lines
25495 --
25496
25497 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
25498 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
25499 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
25500 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
25501 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
25502 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
25503 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
25504 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
25505
25506 --
25507 -- initilaize the status of ae headers for diffrent balance types
25508 -- the status is initialised to C_NOT_CREATED (2)
25509 --
25510 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
25511 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
25512 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
25513
25514 --
25515 -- call api to validate and store accounting attributes for header
25516 --
25517
25518 ------------------------------------------------------------
25519 -- Accrual Reversal : to get date for Standard Source (NONE)
25520 ------------------------------------------------------------
25521 l_acc_rev_gl_date_source := NULL;
25522
25523 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
25524 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
25525 l_rec_acct_attrs.array_acct_attr_code(2) := 'TRX_ACCT_REVERSAL_OPTION';
25526 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_16');
25527
25528
25529 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
25530
25531 XLA_AE_HEADER_PKG.SetJeCategoryName;
25532
25533 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
25534 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
25535 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
25536 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
25537 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
25538
25539
25540 --
25541 xla_ae_header_pkg.SetHdrDescription(
25542 p_description => Description_1 (
25543 p_application_id => p_application_id
25544 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
25545 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
25546 )
25547 );
25548 --
25549
25550 -- No header level analytical criteria
25551
25552 --
25553 --accounting attribute enhancement, bug 3612931
25554 --
25555 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_16'), 1,30);
25556
25557 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
25558 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
25559
25560 xla_accounting_err_pkg.build_message
25561 (p_appli_s_name => 'XLA'
25562 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
25563 ,p_token_1 => 'ACCT_ATTR_NAME'
25564 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
25565 ,p_token_2 => 'PRODUCT_NAME'
25566 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
25567 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
25568 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
25569 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
25570
25571 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
25572 --
25573 -- following sets the accounting attributes needed to reverse
25574 -- accounting for a distributeion
25575 --
25576 xla_ae_lines_pkg.SetTrxReversalAttrs
25577 (p_event_id => l_event_id
25578 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
25579 ,p_trx_reversal_source => l_trx_reversal_source);
25580
25581 END IF;
25582
25583
25587 --
25584 ----------------------------------------------------------------
25585 -- 4262811 - update the header statuses to invalid in need be
25586 ----------------------------------------------------------------
25588 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
25589
25590
25591 -----------------------------------------------
25592 -- No accrual reversal for the event class/type
25593 -----------------------------------------------
25594 ----------------------------------------------------------------
25595
25596 --
25597 -- this ends the header loop iteration for one bulk fetch
25598 --
25599 END LOOP;
25600
25601 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
25602 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
25603
25604 --
25605 -- insert dummy rows into lines gt table that were created due to
25606 -- transaction reversals
25607 --
25608 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
25609 l_result := XLA_AE_LINES_PKG.InsertLines;
25610 END IF;
25611
25612 --
25613 -- reset the temp_line_num for each set of events fetched from header
25614 -- cursor rather than doing it for each new event in line cursor
25615 -- Bug 3939231
25616 --
25617 xla_ae_lines_pkg.g_temp_line_num := 0;
25618
25619
25620
25621 --
25622 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
25623 --
25624 --
25625 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
25626
25627 trace
25628 (p_msg => 'SQL - FETCH line_cur'
25629 ,p_level => C_LEVEL_STATEMENT
25630 ,p_module => l_log_module);
25631
25632 END IF;
25633 --
25634 --
25635 LOOP
25636 --
25637 FETCH line_cur BULK COLLECT INTO
25638 l_array_entity_id
25639 , l_array_legal_entity_id
25640 , l_array_entity_code
25641 , l_array_transaction_num
25642 , l_array_event_id
25643 , l_array_class_code
25644 , l_array_event_type
25645 , l_array_event_number
25646 , l_array_event_date
25647 , l_array_transaction_date
25648 , l_array_reference_num_1
25649 , l_array_reference_num_2
25650 , l_array_reference_num_3
25651 , l_array_reference_num_4
25652 , l_array_reference_char_1
25653 , l_array_reference_char_2
25654 , l_array_reference_char_3
25655 , l_array_reference_char_4
25656 , l_array_reference_date_1
25657 , l_array_reference_date_2
25658 , l_array_reference_date_3
25659 , l_array_reference_date_4
25660 , l_array_event_created_by
25661 , l_array_budgetary_control_flag
25662 , l_array_extract_line_num
25663 , l_array_source_5
25664 , l_array_source_6
25665 , l_array_source_6_meaning
25666 , l_array_source_7
25667 , l_array_source_8
25668 , l_array_source_9
25669 LIMIT l_rows;
25670
25671 --
25672 IF (C_LEVEL_EVENT >= g_log_level) THEN
25673 trace
25674 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
25675 ,p_level => C_LEVEL_EVENT
25676 ,p_module => l_log_module);
25677 END IF;
25678 --
25679 EXIT WHEN l_array_entity_id.count = 0;
25680
25681 XLA_AE_LINES_PKG.g_rec_lines := null;
25682
25683 --
25684 -- Bug 4458708
25685 --
25686 XLA_AE_LINES_PKG.g_LineNumber := 0;
25687 --
25688 --
25689
25690 FOR Idx IN 1..l_array_event_id.count LOOP
25691 --
25692 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
25693 --
25694 l_event_id := l_array_event_id(idx); -- 5648433
25695
25696 --
25697 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
25698 --
25699
25700 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
25701 (g_array_event(l_event_id).array_value_num('header_index'))
25702 ,'N'
25703 ) <> 'Y'
25704 THEN
25705 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
25706 trace
25707 (p_msg => 'Trancaction revesal option is not Y '
25708 ,p_level => C_LEVEL_STATEMENT
25709 ,p_module => l_log_module);
25710 END IF;
25711
25712 --
25713 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
25714 --
25715 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
25716 --
25717 -- set event info as cache for other routines to refer event attributes
25718 --
25719
25720 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
25721 l_previous_event_id := l_event_id;
25722
25723 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
25724 (p_application_id => p_application_id
25725 ,p_primary_ledger_id => p_primary_ledger_id
25726 ,p_base_ledger_id => p_base_ledger_id
25727 ,p_target_ledger_id => p_target_ledger_id
25728 ,p_entity_id => l_array_entity_id(Idx)
25729 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
25730 ,p_entity_code => l_array_entity_code(Idx)
25731 ,p_transaction_num => l_array_transaction_num(Idx)
25732 ,p_event_id => l_array_event_id(Idx)
25733 ,p_event_class_code => l_array_class_code(Idx)
25734 ,p_event_type_code => l_array_event_type(Idx)
25735 ,p_event_number => l_array_event_number(Idx)
25736 ,p_event_date => l_array_event_date(Idx)
25737 ,p_transaction_date => l_array_transaction_date(Idx)
25741 ,p_reference_num_4 => l_array_reference_num_4(Idx)
25738 ,p_reference_num_1 => l_array_reference_num_1(Idx)
25739 ,p_reference_num_2 => l_array_reference_num_2(Idx)
25740 ,p_reference_num_3 => l_array_reference_num_3(Idx)
25742 ,p_reference_char_1 => l_array_reference_char_1(Idx)
25743 ,p_reference_char_2 => l_array_reference_char_2(Idx)
25744 ,p_reference_char_3 => l_array_reference_char_3(Idx)
25745 ,p_reference_char_4 => l_array_reference_char_4(Idx)
25746 ,p_reference_date_1 => l_array_reference_date_1(Idx)
25747 ,p_reference_date_2 => l_array_reference_date_2(Idx)
25748 ,p_reference_date_3 => l_array_reference_date_3(Idx)
25749 ,p_reference_date_4 => l_array_reference_date_4(Idx)
25750 ,p_event_created_by => l_array_event_created_by(Idx)
25751 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
25752 --
25753 END IF;
25754
25755
25756
25757 --
25758 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
25759
25760 l_acct_reversal_source := SUBSTR(NULL, 1,30);
25761
25762 IF l_continue_with_lines THEN
25763 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
25764 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
25765
25766 xla_accounting_err_pkg.build_message
25767 (p_appli_s_name => 'XLA'
25768 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
25769 ,p_token_1 => 'LINE_NUMBER'
25770 ,p_value_1 => l_array_extract_line_num(Idx)
25771 ,p_token_2 => 'PRODUCT_NAME'
25772 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
25773 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
25774 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
25775 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
25776
25777 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
25778 --
25779 -- following sets the accounting attributes needed to reverse
25780 -- accounting for a distributeion
25781 --
25782
25783 --
25784 -- 5217187
25785 --
25786 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
25787 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
25788 g_array_event(l_event_id).array_value_num('header_index'));
25789 --
25790 --
25791
25792 -- No reversal code generated
25793
25794 xla_ae_lines_pkg.SetAcctReversalAttrs
25795 (p_event_id => l_event_id
25796 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
25797 ,p_calculate_acctd_flag => l_calculate_acctd_flag
25798 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
25799 END IF;
25800
25801 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
25802 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
25803
25804 --
25805 AcctLineType_20 (
25806 p_application_id => p_application_id
25807 ,p_event_id => l_event_id
25808 ,p_calculate_acctd_flag => l_calculate_acctd_flag
25809 ,p_calculate_g_l_flag => l_calculate_g_l_flag
25810 ,p_actual_flag => l_actual_flag
25811 ,p_balance_type_code => l_balance_type_code
25812 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
25813
25814 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
25815 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
25816 , p_source_5 => l_array_source_5(Idx)
25817 , p_source_6 => l_array_source_6(Idx)
25818 , p_source_6_meaning => l_array_source_6_meaning(Idx)
25819 , p_source_7 => l_array_source_7(Idx)
25820 , p_source_8 => l_array_source_8(Idx)
25821 , p_source_9 => l_array_source_9(Idx)
25822 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
25823 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
25824 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
25825 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
25826 );
25827 If(l_balance_type_code = 'A') THEN
25828 l_actual_gain_loss_ref := l_gain_or_loss_ref;
25829 END IF;
25830
25831 --
25832
25833
25834 --
25835 AcctLineType_21 (
25836 p_application_id => p_application_id
25837 ,p_event_id => l_event_id
25838 ,p_calculate_acctd_flag => l_calculate_acctd_flag
25839 ,p_calculate_g_l_flag => l_calculate_g_l_flag
25840 ,p_actual_flag => l_actual_flag
25841 ,p_balance_type_code => l_balance_type_code
25842 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
25843
25844 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
25845 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
25846 , p_source_5 => l_array_source_5(Idx)
25847 , p_source_6 => l_array_source_6(Idx)
25848 , p_source_6_meaning => l_array_source_6_meaning(Idx)
25849 , p_source_7 => l_array_source_7(Idx)
25850 , p_source_8 => l_array_source_8(Idx)
25851 , p_source_9 => l_array_source_9(Idx)
25852 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
25853 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
25854 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
25855 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
25856 );
25857 If(l_balance_type_code = 'A') THEN
25858 l_actual_gain_loss_ref := l_gain_or_loss_ref;
25859 END IF;
25860
25861 --
25862
25863 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
25867 (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'))
25864 -- or secondary ledger that has different currency with primary
25865 -- or alc that is calculated by sla
25866 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
25868
25869 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
25870 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
25871 AND (l_actual_flag = 'A')) THEN
25872 XLA_AE_LINES_PKG.CreateGainOrLossLines(
25873 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
25874 ,p_application_id => p_application_id
25875 ,p_amb_context_code => 'DEFAULT'
25876 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
25877 ,p_event_class_code => C_EVENT_CLASS_CODE
25878 ,p_event_type_code => C_EVENT_TYPE_CODE
25879
25880 ,p_gain_ccid => -1
25881 ,p_loss_ccid => -1
25882
25883 ,p_actual_flag => l_actual_flag
25884 ,p_enc_flag => null
25885 ,p_actual_g_l_ref => l_actual_gain_loss_ref
25886 ,p_enc_g_l_ref => null
25887 );
25888 END IF;
25889 END IF;
25890 END IF;
25891
25892 ELSE
25893 --
25894 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
25895 --
25896 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
25897 trace
25898 (p_msg => 'Trancaction revesal option is Y'
25899 ,p_level => C_LEVEL_STATEMENT
25900 ,p_module => l_log_module);
25901 END IF;
25902 END IF;
25903
25904 END LOOP;
25905 l_result := XLA_AE_LINES_PKG.InsertLines ;
25906 end loop;
25907 close line_cur;
25908
25909
25910 --
25911 -- insert headers into xla_ae_headers_gt table
25912 --
25913 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
25914
25915 -- insert into errors table here.
25916
25917 END LOOP;
25918
25919 --
25920 -- 4865292
25921 --
25922 -- Compare g_hdr_extract_count with event count in
25923 -- CreateHeadersAndLines.
25924 --
25925 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
25926
25927 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
25928 trace (p_msg => '# rows extracted from header extract objects '
25929 || ' (running total): '
25930 || g_hdr_extract_count
25931 ,p_level => C_LEVEL_STATEMENT
25932 ,p_module => l_log_module);
25933 END IF;
25934
25935 CLOSE header_cur;
25936 --
25937
25938 --
25939 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25940 trace
25941 (p_msg => 'END of EventClass_40'
25942 ,p_level => C_LEVEL_PROCEDURE
25943 ,p_module => l_log_module);
25944 END IF;
25945 --
25946 RETURN l_result;
25947 EXCEPTION
25948 WHEN xla_exceptions_pkg.application_exception THEN
25949
25950 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
25951
25952
25953 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
25954
25955 RAISE;
25956 WHEN OTHERS THEN
25957 xla_exceptions_pkg.raise_message
25958 (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_40');
25959 END EventClass_40;
25960 --
25961
25962 ---------------------------------------
25963 --
25964 -- PRIVATE PROCEDURE
25965 -- insert_sources_41
25966 --
25967 ----------------------------------------
25968 --
25969 PROCEDURE insert_sources_41(
25970 p_target_ledger_id IN NUMBER
25971 , p_language IN VARCHAR2
25972 , p_sla_ledger_id IN NUMBER
25973 , p_pad_start_date IN DATE
25974 , p_pad_end_date IN DATE
25975 )
25976 IS
25977
25978 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RE_LEASE_ALL';
25979 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RE_LEASE';
25980 p_apps_owner VARCHAR2(30);
25981 l_log_module VARCHAR2(240);
25982 BEGIN
25983 IF g_log_enabled THEN
25984 l_log_module := C_DEFAULT_MODULE||'.insert_sources_41';
25985 END IF;
25986 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25987
25988 trace
25989 (p_msg => 'BEGIN of insert_sources_41'
25990 ,p_level => C_LEVEL_PROCEDURE
25991 ,p_module => l_log_module);
25992
25993 END IF;
25994
25995 -- select APPS owner
25996 SELECT oracle_username
25997 INTO p_apps_owner
25998 FROM fnd_oracle_userid
25999 WHERE read_only_flag = 'U'
26000 ;
26001
26002 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
26003 trace
26004 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
26005 ' - p_language = '||p_language||
26006 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
26007 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
26008 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
26009 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
26010 ,p_level => C_LEVEL_STATEMENT
26011 ,p_module => l_log_module);
26012 END IF;
26013
26014
26015 --
26016 INSERT INTO xla_diag_sources --hdr2
26017 (
26018 event_id
26019 , ledger_id
26020 , sla_ledger_id
26021 , description_language
26025 , source_application_id
26022 , object_name
26023 , object_type_code
26024 , line_number
26026 , source_type_code
26027 , source_code
26028 , source_value
26029 , source_meaning
26030 , created_by
26031 , creation_date
26032 , last_update_date
26033 , last_updated_by
26034 , last_update_login
26035 , program_update_date
26036 , program_application_id
26037 , program_id
26038 , request_id
26039 )
26040 SELECT
26041 event_id
26042 , p_target_ledger_id
26043 , p_sla_ledger_id
26044 , p_language
26045 , object_name
26046 , object_type_code
26047 , line_number
26048 , source_application_id
26049 , source_type_code
26050 , source_code
26051 , SUBSTR(source_value ,1,1996)
26052 , SUBSTR(source_meaning ,1,200)
26053 , xla_environment_pkg.g_Usr_Id
26054 , TRUNC(SYSDATE)
26055 , TRUNC(SYSDATE)
26056 , xla_environment_pkg.g_Usr_Id
26057 , xla_environment_pkg.g_Login_Id
26058 , TRUNC(SYSDATE)
26059 , xla_environment_pkg.g_Prog_Appl_Id
26060 , xla_environment_pkg.g_Prog_Id
26061 , xla_environment_pkg.g_Req_Id
26062 FROM (
26063 SELECT xet.event_id event_id
26064 , 0 line_number
26065 , CASE r
26066 WHEN 1 THEN 'OKL_CMN_EXTRACT_HDR_V'
26067 WHEN 2 THEN 'OKL_CMN_EXTRACT_HDR_V'
26068 WHEN 3 THEN 'OKL_CMN_EXTRACT_HDR_V'
26069 WHEN 4 THEN 'OKL_CMN_EXTRACT_HDR_V'
26070 WHEN 5 THEN 'OKL_CMN_EXTRACT_HDR_V'
26071 WHEN 6 THEN 'OKL_CMN_EXTRACT_HDR_V'
26072 WHEN 7 THEN 'OKL_CMN_EXTRACT_HDR_V'
26073 WHEN 8 THEN 'OKL_CMN_EXTRACT_HDR_V'
26074
26075 ELSE null
26076 END object_name
26077 , CASE r
26078 WHEN 1 THEN 'HEADER'
26079 WHEN 2 THEN 'HEADER'
26080 WHEN 3 THEN 'HEADER'
26081 WHEN 4 THEN 'HEADER'
26082 WHEN 5 THEN 'HEADER'
26083 WHEN 6 THEN 'HEADER'
26084 WHEN 7 THEN 'HEADER'
26085 WHEN 8 THEN 'HEADER'
26086
26087 ELSE null
26088 END object_type_code
26089 , CASE r
26090 WHEN 1 THEN '540'
26091 WHEN 2 THEN '540'
26092 WHEN 3 THEN '540'
26093 WHEN 4 THEN '540'
26094 WHEN 5 THEN '540'
26095 WHEN 6 THEN '540'
26096 WHEN 7 THEN '540'
26097 WHEN 8 THEN '540'
26098
26099 ELSE null
26100 END source_application_id
26101 , 'S' source_type_code
26102 , CASE r
26103 WHEN 1 THEN 'TEH_CONTRACT_NUMBER'
26104 WHEN 2 THEN 'TCN_CONTRACT_PRODUCT_NAME'
26105 WHEN 3 THEN 'TCN_CURRENCY_CODE'
26106 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE'
26107 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE'
26108 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE'
26109 WHEN 7 THEN 'GL_DATE'
26110 WHEN 8 THEN 'TCN_ACCOUNTING_REVERSAL_FLAG'
26111
26112 ELSE null
26113 END source_code
26114 , CASE r
26115 WHEN 1 THEN TO_CHAR(h1.TEH_CONTRACT_NUMBER)
26116 WHEN 2 THEN TO_CHAR(h1.TCN_CONTRACT_PRODUCT_NAME)
26117 WHEN 3 THEN TO_CHAR(h1.TCN_CURRENCY_CODE)
26118 WHEN 4 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_DATE)
26119 WHEN 5 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_RATE)
26120 WHEN 6 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_TYPE)
26121 WHEN 7 THEN TO_CHAR(h1.GL_DATE)
26122 WHEN 8 THEN TO_CHAR(h1.TCN_ACCOUNTING_REVERSAL_FLAG)
26123
26124 ELSE null
26125 END source_value
26126 , null source_meaning
26127 FROM xla_events_gt xet
26128 , OKL_CMN_EXTRACT_HDR_V h1
26129 ,(select rownum r from all_objects where rownum <= 8 and owner = p_apps_owner)
26130 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
26131 AND xet.event_class_code = C_EVENT_CLASS_CODE
26132 AND h1.event_id = xet.event_id
26133
26134 )
26135 ;
26136 --
26137 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
26138
26139 trace
26140 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
26141 ,p_level => C_LEVEL_STATEMENT
26142 ,p_module => l_log_module);
26143
26144 END IF;
26145 --
26146
26147
26148
26149 --
26150 INSERT INTO xla_diag_sources --line2
26151 (
26152 event_id
26153 , ledger_id
26154 , sla_ledger_id
26155 , description_language
26156 , object_name
26157 , object_type_code
26158 , line_number
26159 , source_application_id
26160 , source_type_code
26161 , source_code
26162 , source_value
26163 , source_meaning
26164 , created_by
26165 , creation_date
26166 , last_update_date
26167 , last_updated_by
26168 , last_update_login
26169 , program_update_date
26170 , program_application_id
26171 , program_id
26172 , request_id
26176 , p_sla_ledger_id
26173 )
26174 SELECT event_id
26175 , p_target_ledger_id
26177 , p_language
26178 , object_name
26179 , object_type_code
26180 , line_number
26181 , source_application_id
26182 , source_type_code
26183 , source_code
26184 , SUBSTR(source_value,1,1996)
26185 , SUBSTR(source_meaning ,1,200)
26186 , xla_environment_pkg.g_Usr_Id
26187 , TRUNC(SYSDATE)
26188 , TRUNC(SYSDATE)
26189 , xla_environment_pkg.g_Usr_Id
26190 , xla_environment_pkg.g_Login_Id
26191 , TRUNC(SYSDATE)
26192 , xla_environment_pkg.g_Prog_Appl_Id
26193 , xla_environment_pkg.g_Prog_Id
26194 , xla_environment_pkg.g_Req_Id
26195 FROM (
26196 SELECT xet.event_id event_id
26197 , l2.line_number line_number
26198 , CASE r
26199 WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V'
26200 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V'
26201 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V'
26202 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V'
26203 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V'
26204
26205 ELSE null
26206 END object_name
26207 , CASE r
26208 WHEN 1 THEN 'LINE'
26209 WHEN 2 THEN 'LINE'
26210 WHEN 3 THEN 'LINE'
26211 WHEN 4 THEN 'LINE'
26212 WHEN 5 THEN 'LINE'
26213
26214 ELSE null
26215 END object_type_code
26216 , CASE r
26217 WHEN 1 THEN '540'
26218 WHEN 2 THEN '540'
26219 WHEN 3 THEN '540'
26220 WHEN 4 THEN '540'
26221 WHEN 5 THEN '540'
26222
26223 ELSE null
26224 END source_application_id
26225 , 'S' source_type_code
26226 , CASE r
26227 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID'
26228 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE'
26229 WHEN 3 THEN 'DIST_ID'
26230 WHEN 4 THEN 'DIST_TYPE'
26231 WHEN 5 THEN 'DIST_ENTERED_AMOUNT'
26232
26233 ELSE null
26234 END source_code
26235 , CASE r
26236 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
26237 WHEN 2 THEN TO_CHAR(l2.DIST_AE_LINE_TYPE_CODE)
26238 WHEN 3 THEN TO_CHAR(l2.DIST_ID)
26239 WHEN 4 THEN TO_CHAR(l2.DIST_TYPE)
26240 WHEN 5 THEN TO_CHAR(l2.DIST_ENTERED_AMOUNT)
26241
26242 ELSE null
26243 END source_value
26244 , CASE r
26245 WHEN 2 THEN fvl6.meaning
26246
26247 ELSE null
26248 END source_meaning
26249 FROM xla_events_gt xet
26250 , OKL_CMN_EXTRACT_LINE_V l2
26251 , fnd_lookup_values fvl6
26252 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
26253 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
26254 AND xet.event_class_code = C_EVENT_CLASS_CODE
26255 AND l2.event_id = xet.event_id
26256 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
26257 AND fvl6.lookup_code(+) = l2.DIST_AE_LINE_TYPE_CODE
26258 AND fvl6.view_application_id(+) = 0
26259 AND fvl6.language(+) = USERENV('LANG')
26260
26261 )
26262 ;
26263 --
26264 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
26265
26266 trace
26267 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
26268 ,p_level => C_LEVEL_STATEMENT
26269 ,p_module => l_log_module);
26270
26271 END IF;
26272
26273
26274 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26275 trace
26276 (p_msg => 'END of insert_sources_41'
26277 ,p_level => C_LEVEL_PROCEDURE
26278 ,p_module => l_log_module);
26279 END IF;
26280 EXCEPTION
26281 WHEN xla_exceptions_pkg.application_exception THEN
26282 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
26283 trace
26284 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
26285 ,p_level => C_LEVEL_EXCEPTION
26286 ,p_module => l_log_module);
26287 END IF;
26288 RAISE;
26289 WHEN OTHERS THEN
26290 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
26291 trace
26292 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
26293 ,p_level => C_LEVEL_EXCEPTION
26294 ,p_module => l_log_module);
26295 END IF;
26296 xla_exceptions_pkg.raise_message
26297 (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_41');
26298 END insert_sources_41;
26299 --
26300
26301 ---------------------------------------
26302 --
26303 -- PRIVATE FUNCTION
26304 -- EventClass_41
26305 --
26306 ----------------------------------------
26307 --
26308 FUNCTION EventClass_41
26309 (p_application_id IN NUMBER
26310 ,p_base_ledger_id IN NUMBER
26311 ,p_target_ledger_id IN NUMBER
26312 ,p_language IN VARCHAR2
26313 ,p_currency_code IN VARCHAR2
26314 ,p_sla_ledger_id IN NUMBER
26315 ,p_pad_start_date IN DATE
26316 ,p_pad_end_date IN DATE
26320 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RE_LEASE_ALL';
26317 ,p_primary_ledger_id IN NUMBER)
26318 RETURN BOOLEAN IS
26319 --
26321 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RE_LEASE';
26322
26323 l_calculate_acctd_flag VARCHAR2(1) :='Y';
26324 l_calculate_g_l_flag VARCHAR2(1) :='Y';
26325 --
26326 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
26327 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
26328 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
26329 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
26330 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
26331 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
26332 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
26333 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
26334 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
26335 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
26336 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
26337 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
26338 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
26339 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
26340 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
26341 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
26342 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
26343 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
26344 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
26345 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
26346 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
26347 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
26348 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
26349 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
26350
26351 l_event_id NUMBER;
26352 l_previous_event_id NUMBER;
26353 l_first_event_id NUMBER;
26354 l_last_event_id NUMBER;
26355
26356 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
26357 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
26358 --
26359 --
26360 l_result BOOLEAN := TRUE;
26361 l_rows NUMBER := 1000;
26362 l_event_type_name VARCHAR2(80) := 'All';
26363 l_event_class_name VARCHAR2(80) := 'Release';
26364 l_description VARCHAR2(4000);
26365 l_transaction_reversal NUMBER;
26366 l_ae_header_id NUMBER;
26367 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
26368 l_log_module VARCHAR2(240);
26369 --
26370 l_acct_reversal_source VARCHAR2(30);
26371 l_trx_reversal_source VARCHAR2(30);
26372
26373 l_continue_with_lines BOOLEAN := TRUE;
26374 --
26375 l_acc_rev_gl_date_source DATE; -- 4262811
26376 --
26377 type t_array_event_id is table of number index by binary_integer;
26378
26379 l_rec_array_event t_rec_array_event;
26380 l_null_rec_array_event t_rec_array_event;
26381 l_array_ae_header_id xla_number_array_type;
26382 l_actual_flag VARCHAR2(1) := NULL;
26383 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
26384 l_balance_type_code VARCHAR2(1) :=NULL;
26385 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
26386
26387 --
26388 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
26389 --
26390
26391 TYPE t_array_source_1 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TEH_CONTRACT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
26392 TYPE t_array_source_2 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CONTRACT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
26393 TYPE t_array_source_10 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
26394 TYPE t_array_source_11 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
26395 TYPE t_array_source_12 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
26396 TYPE t_array_source_13 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
26397 TYPE t_array_source_15 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
26398 TYPE t_array_source_16 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
26399
26400 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
26401 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
26402 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
26403 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
26404 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
26405
26406 l_array_source_1 t_array_source_1;
26407 l_array_source_2 t_array_source_2;
26408 l_array_source_10 t_array_source_10;
26409 l_array_source_11 t_array_source_11;
26410 l_array_source_12 t_array_source_12;
26411 l_array_source_13 t_array_source_13;
26412 l_array_source_15 t_array_source_15;
26413 l_array_source_16 t_array_source_16;
26414
26415 l_array_source_5 t_array_source_5;
26416 l_array_source_6 t_array_source_6;
26417 l_array_source_6_meaning t_array_lookup_meaning;
26421
26418 l_array_source_7 t_array_source_7;
26419 l_array_source_8 t_array_source_8;
26420 l_array_source_9 t_array_source_9;
26422 --
26423 CURSOR header_cur
26424 IS
26425 SELECT /*+ leading(xet) cardinality(xet,1) */
26426 -- Event Class Code: RE_LEASE
26427 xet.entity_id
26428 ,xet.legal_entity_id
26429 ,xet.entity_code
26430 ,xet.transaction_number
26431 ,xet.event_id
26432 ,xet.event_class_code
26433 ,xet.event_type_code
26434 ,xet.event_number
26435 ,xet.event_date
26436 ,xet.transaction_date
26437 ,xet.reference_num_1
26438 ,xet.reference_num_2
26439 ,xet.reference_num_3
26440 ,xet.reference_num_4
26441 ,xet.reference_char_1
26442 ,xet.reference_char_2
26443 ,xet.reference_char_3
26444 ,xet.reference_char_4
26445 ,xet.reference_date_1
26446 ,xet.reference_date_2
26447 ,xet.reference_date_3
26448 ,xet.reference_date_4
26449 ,xet.event_created_by
26450 ,xet.budgetary_control_flag
26451 , h1.TEH_CONTRACT_NUMBER source_1
26452 , h1.TCN_CONTRACT_PRODUCT_NAME source_2
26453 , h1.TCN_CURRENCY_CODE source_10
26454 , h1.TCN_CURR_CONVERSION_DATE source_11
26455 , h1.TCN_CURR_CONVERSION_RATE source_12
26456 , h1.TCN_CURR_CONVERSION_TYPE source_13
26457 , h1.GL_DATE source_15
26458 , h1.TCN_ACCOUNTING_REVERSAL_FLAG source_16
26459 FROM xla_events_gt xet
26460 , OKL_CMN_EXTRACT_HDR_V h1
26461 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
26462 and xet.event_class_code = C_EVENT_CLASS_CODE
26463 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
26464
26465 ORDER BY event_id
26466 ;
26467
26468
26469 --
26470 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
26471 IS
26472 SELECT /*+ leading(xet) cardinality(xet,1) */
26473 -- Event Class Code: RE_LEASE
26474 xet.entity_id
26475 ,xet.legal_entity_id
26476 ,xet.entity_code
26477 ,xet.transaction_number
26478 ,xet.event_id
26479 ,xet.event_class_code
26480 ,xet.event_type_code
26481 ,xet.event_number
26482 ,xet.event_date
26483 ,xet.transaction_date
26484 ,xet.reference_num_1
26485 ,xet.reference_num_2
26486 ,xet.reference_num_3
26487 ,xet.reference_num_4
26488 ,xet.reference_char_1
26489 ,xet.reference_char_2
26490 ,xet.reference_char_3
26491 ,xet.reference_char_4
26492 ,xet.reference_date_1
26493 ,xet.reference_date_2
26494 ,xet.reference_date_3
26495 ,xet.reference_date_4
26496 ,xet.event_created_by
26497 ,xet.budgetary_control_flag
26498 , l2.LINE_NUMBER
26499 , l2.DIST_CODE_COMBINATION_ID source_5
26500 , l2.DIST_AE_LINE_TYPE_CODE source_6
26501 , fvl6.meaning source_6_meaning
26502 , l2.DIST_ID source_7
26503 , l2.DIST_TYPE source_8
26504 , l2.DIST_ENTERED_AMOUNT source_9
26505 FROM xla_events_gt xet
26506 , OKL_CMN_EXTRACT_LINE_V l2
26507 , fnd_lookup_values fvl6
26508 WHERE xet.event_id between x_first_event_id and x_last_event_id
26509 and xet.event_date between p_pad_start_date and p_pad_end_date
26510 and xet.event_class_code = C_EVENT_CLASS_CODE
26511 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
26512 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
26513 AND fvl6.lookup_code(+) = l2.DIST_AE_LINE_TYPE_CODE
26514 AND fvl6.view_application_id(+) = 0
26515 AND fvl6.language(+) = USERENV('LANG')
26516 ;
26517
26518 --
26519 BEGIN
26520 IF g_log_enabled THEN
26521 l_log_module := C_DEFAULT_MODULE||'.EventClass_41';
26522 END IF;
26523 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26524 trace
26525 (p_msg => 'BEGIN of EventClass_41'
26526 ,p_level => C_LEVEL_PROCEDURE
26527 ,p_module => l_log_module);
26528 END IF;
26529
26530 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
26531 trace
26532 (p_msg => 'p_application_id = '||p_application_id||
26533 ' - p_base_ledger_id = '||p_base_ledger_id||
26534 ' - p_target_ledger_id = '||p_target_ledger_id||
26535 ' - p_language = '||p_language||
26536 ' - p_currency_code = '||p_currency_code||
26537 ' - p_sla_ledger_id = '||p_sla_ledger_id
26538 ,p_level => C_LEVEL_STATEMENT
26539 ,p_module => l_log_module);
26540 END IF;
26541 --
26542 -- initialze arrays
26543 --
26544 g_array_event.DELETE;
26545 l_rec_array_event := l_null_rec_array_event;
26546 --
26547 --------------------------------------
26548 -- 4262811 Initialze MPA Line Number
26549 --------------------------------------
26550 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
26551
26552 --
26553
26554 --
26555 OPEN header_cur;
26556 --
26557 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
26558 trace
26559 (p_msg => 'SQL - FETCH header_cur'
26560 ,p_level => C_LEVEL_STATEMENT
26561 ,p_module => l_log_module);
26562 END IF;
26563 --
26564 LOOP
26565 FETCH header_cur BULK COLLECT INTO
26566 l_array_entity_id
26567 , l_array_legal_entity_id
26568 , l_array_entity_code
26569 , l_array_transaction_num
26570 , l_array_event_id
26571 , l_array_class_code
26572 , l_array_event_type
26573 , l_array_event_number
26574 , l_array_event_date
26575 , l_array_transaction_date
26576 , l_array_reference_num_1
26577 , l_array_reference_num_2
26578 , l_array_reference_num_3
26579 , l_array_reference_num_4
26580 , l_array_reference_char_1
26584 , l_array_reference_date_1
26581 , l_array_reference_char_2
26582 , l_array_reference_char_3
26583 , l_array_reference_char_4
26585 , l_array_reference_date_2
26586 , l_array_reference_date_3
26587 , l_array_reference_date_4
26588 , l_array_event_created_by
26589 , l_array_budgetary_control_flag
26590 , l_array_source_1
26591 , l_array_source_2
26592 , l_array_source_10
26593 , l_array_source_11
26594 , l_array_source_12
26595 , l_array_source_13
26596 , l_array_source_15
26597 , l_array_source_16
26598 LIMIT l_rows;
26599 --
26600 IF (C_LEVEL_EVENT >= g_log_level) THEN
26601 trace
26602 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
26603 ,p_level => C_LEVEL_EVENT
26604 ,p_module => l_log_module);
26605 END IF;
26606 --
26607 EXIT WHEN l_array_entity_id.COUNT = 0;
26608
26609 -- initialize arrays
26610 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
26611 XLA_AE_LINES_PKG.g_rec_lines := NULL;
26612
26613 --
26614 -- Bug 4458708
26615 --
26616 XLA_AE_LINES_PKG.g_LineNumber := 0;
26617
26618
26619 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
26620 g_last_hdr_idx := l_array_event_id.LAST;
26621 --
26622 -- loop for the headers. Each iteration is for each header extract row
26623 -- fetched in header cursor
26624 --
26625 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
26626
26627 --
26628 -- set event info as cache for other routines to refer event attributes
26629 --
26630 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
26631 (p_application_id => p_application_id
26632 ,p_primary_ledger_id => p_primary_ledger_id
26633 ,p_base_ledger_id => p_base_ledger_id
26634 ,p_target_ledger_id => p_target_ledger_id
26635 ,p_entity_id => l_array_entity_id(hdr_idx)
26636 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
26637 ,p_entity_code => l_array_entity_code(hdr_idx)
26638 ,p_transaction_num => l_array_transaction_num(hdr_idx)
26639 ,p_event_id => l_array_event_id(hdr_idx)
26640 ,p_event_class_code => l_array_class_code(hdr_idx)
26641 ,p_event_type_code => l_array_event_type(hdr_idx)
26642 ,p_event_number => l_array_event_number(hdr_idx)
26643 ,p_event_date => l_array_event_date(hdr_idx)
26644 ,p_transaction_date => l_array_transaction_date(hdr_idx)
26645 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
26646 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
26647 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
26648 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
26649 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
26650 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
26651 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
26652 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
26653 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
26654 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
26655 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
26656 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
26657 ,p_event_created_by => l_array_event_created_by(hdr_idx)
26658 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
26659
26660 --
26661 -- set the status of entry to C_VALID (0)
26662 --
26663 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
26664
26665 --
26666 -- initialize a row for ae header
26667 --
26668 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
26669
26670 l_event_id := l_array_event_id(hdr_idx);
26671
26672 --
26673 -- storing the hdr_idx for event. May be used by line cursor.
26674 --
26675 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
26676
26677 --
26678 -- store sources from header extract. This can be improved to
26679 -- store only those sources from header extract that may be used in lines
26680 --
26681
26682 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
26683 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
26684 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
26685 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
26686 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
26687 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
26688 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
26689 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
26690
26691 --
26692 -- initilaize the status of ae headers for diffrent balance types
26693 -- the status is initialised to C_NOT_CREATED (2)
26694 --
26695 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
26696 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
26697 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
26698
26699 --
26700 -- call api to validate and store accounting attributes for header
26701 --
26702
26703 ------------------------------------------------------------
26704 -- Accrual Reversal : to get date for Standard Source (NONE)
26705 ------------------------------------------------------------
26706 l_acc_rev_gl_date_source := NULL;
26707
26708 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
26712
26709 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
26710 l_rec_acct_attrs.array_acct_attr_code(2) := 'TRX_ACCT_REVERSAL_OPTION';
26711 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_16');
26713
26714 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
26715
26716 XLA_AE_HEADER_PKG.SetJeCategoryName;
26717
26718 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
26719 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
26720 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
26721 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
26722 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
26723
26724
26725 --
26726 xla_ae_header_pkg.SetHdrDescription(
26727 p_description => Description_1 (
26728 p_application_id => p_application_id
26729 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
26730 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
26731 )
26732 );
26733 --
26734
26735 -- No header level analytical criteria
26736
26737 --
26738 --accounting attribute enhancement, bug 3612931
26739 --
26740 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_16'), 1,30);
26741
26742 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
26743 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
26744
26745 xla_accounting_err_pkg.build_message
26746 (p_appli_s_name => 'XLA'
26747 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
26748 ,p_token_1 => 'ACCT_ATTR_NAME'
26749 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
26750 ,p_token_2 => 'PRODUCT_NAME'
26751 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
26752 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
26753 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
26754 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
26755
26756 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
26757 --
26758 -- following sets the accounting attributes needed to reverse
26759 -- accounting for a distributeion
26760 --
26761 xla_ae_lines_pkg.SetTrxReversalAttrs
26762 (p_event_id => l_event_id
26763 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
26764 ,p_trx_reversal_source => l_trx_reversal_source);
26765
26766 END IF;
26767
26768
26769 ----------------------------------------------------------------
26770 -- 4262811 - update the header statuses to invalid in need be
26771 ----------------------------------------------------------------
26772 --
26773 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
26774
26775
26776 -----------------------------------------------
26777 -- No accrual reversal for the event class/type
26778 -----------------------------------------------
26779 ----------------------------------------------------------------
26780
26781 --
26782 -- this ends the header loop iteration for one bulk fetch
26783 --
26784 END LOOP;
26785
26786 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
26787 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
26788
26789 --
26790 -- insert dummy rows into lines gt table that were created due to
26791 -- transaction reversals
26792 --
26793 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
26794 l_result := XLA_AE_LINES_PKG.InsertLines;
26795 END IF;
26796
26797 --
26798 -- reset the temp_line_num for each set of events fetched from header
26799 -- cursor rather than doing it for each new event in line cursor
26800 -- Bug 3939231
26801 --
26802 xla_ae_lines_pkg.g_temp_line_num := 0;
26803
26804
26805
26806 --
26807 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
26808 --
26809 --
26810 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
26811
26812 trace
26813 (p_msg => 'SQL - FETCH line_cur'
26814 ,p_level => C_LEVEL_STATEMENT
26815 ,p_module => l_log_module);
26816
26817 END IF;
26818 --
26819 --
26820 LOOP
26821 --
26822 FETCH line_cur BULK COLLECT INTO
26823 l_array_entity_id
26824 , l_array_legal_entity_id
26825 , l_array_entity_code
26826 , l_array_transaction_num
26827 , l_array_event_id
26828 , l_array_class_code
26829 , l_array_event_type
26830 , l_array_event_number
26831 , l_array_event_date
26832 , l_array_transaction_date
26833 , l_array_reference_num_1
26834 , l_array_reference_num_2
26835 , l_array_reference_num_3
26836 , l_array_reference_num_4
26837 , l_array_reference_char_1
26838 , l_array_reference_char_2
26839 , l_array_reference_char_3
26840 , l_array_reference_char_4
26841 , l_array_reference_date_1
26842 , l_array_reference_date_2
26843 , l_array_reference_date_3
26844 , l_array_reference_date_4
26845 , l_array_event_created_by
26846 , l_array_budgetary_control_flag
26847 , l_array_extract_line_num
26848 , l_array_source_5
26849 , l_array_source_6
26850 , l_array_source_6_meaning
26851 , l_array_source_7
26852 , l_array_source_8
26856 --
26853 , l_array_source_9
26854 LIMIT l_rows;
26855
26857 IF (C_LEVEL_EVENT >= g_log_level) THEN
26858 trace
26859 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
26860 ,p_level => C_LEVEL_EVENT
26861 ,p_module => l_log_module);
26862 END IF;
26863 --
26864 EXIT WHEN l_array_entity_id.count = 0;
26865
26866 XLA_AE_LINES_PKG.g_rec_lines := null;
26867
26868 --
26869 -- Bug 4458708
26870 --
26871 XLA_AE_LINES_PKG.g_LineNumber := 0;
26872 --
26873 --
26874
26875 FOR Idx IN 1..l_array_event_id.count LOOP
26876 --
26877 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
26878 --
26879 l_event_id := l_array_event_id(idx); -- 5648433
26880
26881 --
26882 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
26883 --
26884
26885 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
26886 (g_array_event(l_event_id).array_value_num('header_index'))
26887 ,'N'
26888 ) <> 'Y'
26889 THEN
26890 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
26891 trace
26892 (p_msg => 'Trancaction revesal option is not Y '
26893 ,p_level => C_LEVEL_STATEMENT
26894 ,p_module => l_log_module);
26895 END IF;
26896
26897 --
26898 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
26899 --
26900 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
26901 --
26902 -- set event info as cache for other routines to refer event attributes
26903 --
26904
26905 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
26906 l_previous_event_id := l_event_id;
26907
26908 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
26909 (p_application_id => p_application_id
26910 ,p_primary_ledger_id => p_primary_ledger_id
26911 ,p_base_ledger_id => p_base_ledger_id
26912 ,p_target_ledger_id => p_target_ledger_id
26913 ,p_entity_id => l_array_entity_id(Idx)
26914 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
26915 ,p_entity_code => l_array_entity_code(Idx)
26916 ,p_transaction_num => l_array_transaction_num(Idx)
26917 ,p_event_id => l_array_event_id(Idx)
26918 ,p_event_class_code => l_array_class_code(Idx)
26919 ,p_event_type_code => l_array_event_type(Idx)
26920 ,p_event_number => l_array_event_number(Idx)
26921 ,p_event_date => l_array_event_date(Idx)
26922 ,p_transaction_date => l_array_transaction_date(Idx)
26923 ,p_reference_num_1 => l_array_reference_num_1(Idx)
26924 ,p_reference_num_2 => l_array_reference_num_2(Idx)
26925 ,p_reference_num_3 => l_array_reference_num_3(Idx)
26926 ,p_reference_num_4 => l_array_reference_num_4(Idx)
26927 ,p_reference_char_1 => l_array_reference_char_1(Idx)
26928 ,p_reference_char_2 => l_array_reference_char_2(Idx)
26929 ,p_reference_char_3 => l_array_reference_char_3(Idx)
26930 ,p_reference_char_4 => l_array_reference_char_4(Idx)
26931 ,p_reference_date_1 => l_array_reference_date_1(Idx)
26932 ,p_reference_date_2 => l_array_reference_date_2(Idx)
26933 ,p_reference_date_3 => l_array_reference_date_3(Idx)
26934 ,p_reference_date_4 => l_array_reference_date_4(Idx)
26935 ,p_event_created_by => l_array_event_created_by(Idx)
26936 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
26937 --
26938 END IF;
26939
26940
26941
26942 --
26943 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
26944
26945 l_acct_reversal_source := SUBSTR(NULL, 1,30);
26946
26947 IF l_continue_with_lines THEN
26948 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
26949 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
26950
26951 xla_accounting_err_pkg.build_message
26952 (p_appli_s_name => 'XLA'
26953 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
26954 ,p_token_1 => 'LINE_NUMBER'
26955 ,p_value_1 => l_array_extract_line_num(Idx)
26956 ,p_token_2 => 'PRODUCT_NAME'
26957 ,p_value_2 => 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
26962 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
26963 --
26964 -- following sets the accounting attributes needed to reverse
26965 -- accounting for a distributeion
26966 --
26967
26968 --
26969 -- 5217187
26970 --
26971 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
26972 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
26973 g_array_event(l_event_id).array_value_num('header_index'));
26974 --
26975 --
26976
26977 -- No reversal code generated
26978
26979 xla_ae_lines_pkg.SetAcctReversalAttrs
26980 (p_event_id => l_event_id
26981 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
26982 ,p_calculate_acctd_flag => l_calculate_acctd_flag
26983 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
26987 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
26984 END IF;
26985
26986 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
26988
26989 --
26990 AcctLineType_22 (
26991 p_application_id => p_application_id
26992 ,p_event_id => l_event_id
26993 ,p_calculate_acctd_flag => l_calculate_acctd_flag
26994 ,p_calculate_g_l_flag => l_calculate_g_l_flag
26995 ,p_actual_flag => l_actual_flag
26996 ,p_balance_type_code => l_balance_type_code
26997 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
26998
26999 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
27000 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
27001 , p_source_5 => l_array_source_5(Idx)
27002 , p_source_6 => l_array_source_6(Idx)
27003 , p_source_6_meaning => l_array_source_6_meaning(Idx)
27004 , p_source_7 => l_array_source_7(Idx)
27005 , p_source_8 => l_array_source_8(Idx)
27006 , p_source_9 => l_array_source_9(Idx)
27007 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
27008 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
27009 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
27010 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
27011 );
27012 If(l_balance_type_code = 'A') THEN
27013 l_actual_gain_loss_ref := l_gain_or_loss_ref;
27014 END IF;
27015
27016 --
27017
27018
27019 --
27020 AcctLineType_23 (
27021 p_application_id => p_application_id
27022 ,p_event_id => l_event_id
27023 ,p_calculate_acctd_flag => l_calculate_acctd_flag
27024 ,p_calculate_g_l_flag => l_calculate_g_l_flag
27025 ,p_actual_flag => l_actual_flag
27026 ,p_balance_type_code => l_balance_type_code
27027 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
27028
27029 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
27030 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
27031 , p_source_5 => l_array_source_5(Idx)
27032 , p_source_6 => l_array_source_6(Idx)
27033 , p_source_6_meaning => l_array_source_6_meaning(Idx)
27034 , p_source_7 => l_array_source_7(Idx)
27035 , p_source_8 => l_array_source_8(Idx)
27036 , p_source_9 => l_array_source_9(Idx)
27037 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
27038 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
27039 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
27040 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
27041 );
27042 If(l_balance_type_code = 'A') THEN
27043 l_actual_gain_loss_ref := l_gain_or_loss_ref;
27044 END IF;
27045
27046 --
27047
27048 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
27049 -- or secondary ledger that has different currency with primary
27050 -- or alc that is calculated by sla
27051 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
27052 (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'))
27053
27054 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
27055 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
27056 AND (l_actual_flag = 'A')) THEN
27057 XLA_AE_LINES_PKG.CreateGainOrLossLines(
27058 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
27059 ,p_application_id => p_application_id
27060 ,p_amb_context_code => 'DEFAULT'
27061 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
27062 ,p_event_class_code => C_EVENT_CLASS_CODE
27063 ,p_event_type_code => C_EVENT_TYPE_CODE
27064
27065 ,p_gain_ccid => -1
27066 ,p_loss_ccid => -1
27067
27068 ,p_actual_flag => l_actual_flag
27069 ,p_enc_flag => null
27070 ,p_actual_g_l_ref => l_actual_gain_loss_ref
27071 ,p_enc_g_l_ref => null
27072 );
27073 END IF;
27074 END IF;
27075 END IF;
27076
27077 ELSE
27078 --
27079 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
27080 --
27081 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
27082 trace
27083 (p_msg => 'Trancaction revesal option is Y'
27084 ,p_level => C_LEVEL_STATEMENT
27085 ,p_module => l_log_module);
27086 END IF;
27087 END IF;
27088
27089 END LOOP;
27090 l_result := XLA_AE_LINES_PKG.InsertLines ;
27091 end loop;
27092 close line_cur;
27093
27094
27095 --
27096 -- insert headers into xla_ae_headers_gt table
27097 --
27098 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
27099
27100 -- insert into errors table here.
27101
27102 END LOOP;
27103
27104 --
27105 -- 4865292
27106 --
27107 -- Compare g_hdr_extract_count with event count in
27108 -- CreateHeadersAndLines.
27109 --
27110 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
27111
27112 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
27113 trace (p_msg => '# rows extracted from header extract objects '
27114 || ' (running total): '
27115 || g_hdr_extract_count
27116 ,p_level => C_LEVEL_STATEMENT
27117 ,p_module => l_log_module);
27118 END IF;
27119
27120 CLOSE header_cur;
27121 --
27122
27123 --
27124 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27125 trace
27126 (p_msg => 'END of EventClass_41'
27127 ,p_level => C_LEVEL_PROCEDURE
27131 RETURN l_result;
27128 ,p_module => l_log_module);
27129 END IF;
27130 --
27132 EXCEPTION
27133 WHEN xla_exceptions_pkg.application_exception THEN
27134
27135 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
27136
27137
27138 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
27139
27140 RAISE;
27141 WHEN OTHERS THEN
27142 xla_exceptions_pkg.raise_message
27143 (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_41');
27144 END EventClass_41;
27145 --
27146
27147 ---------------------------------------
27148 --
27149 -- PRIVATE PROCEDURE
27150 -- insert_sources_42
27151 --
27152 ----------------------------------------
27153 --
27154 PROCEDURE insert_sources_42(
27155 p_target_ledger_id IN NUMBER
27156 , p_language IN VARCHAR2
27157 , p_sla_ledger_id IN NUMBER
27158 , p_pad_start_date IN DATE
27159 , p_pad_end_date IN DATE
27160 )
27161 IS
27162
27163 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'SPECIFIC_LOSS_PROVISION_ALL';
27164 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'SPECIFIC_LOSS_PROVISION';
27165 p_apps_owner VARCHAR2(30);
27166 l_log_module VARCHAR2(240);
27167 BEGIN
27168 IF g_log_enabled THEN
27169 l_log_module := C_DEFAULT_MODULE||'.insert_sources_42';
27170 END IF;
27171 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27172
27173 trace
27174 (p_msg => 'BEGIN of insert_sources_42'
27175 ,p_level => C_LEVEL_PROCEDURE
27176 ,p_module => l_log_module);
27177
27178 END IF;
27179
27180 -- select APPS owner
27181 SELECT oracle_username
27182 INTO p_apps_owner
27183 FROM fnd_oracle_userid
27184 WHERE read_only_flag = 'U'
27185 ;
27186
27187 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
27188 trace
27189 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
27190 ' - p_language = '||p_language||
27191 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
27192 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
27193 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
27194 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
27195 ,p_level => C_LEVEL_STATEMENT
27196 ,p_module => l_log_module);
27197 END IF;
27198
27199
27200 --
27201 INSERT INTO xla_diag_sources --hdr2
27202 (
27203 event_id
27204 , ledger_id
27205 , sla_ledger_id
27206 , description_language
27207 , object_name
27208 , object_type_code
27209 , line_number
27210 , source_application_id
27211 , source_type_code
27212 , source_code
27213 , source_value
27214 , source_meaning
27215 , created_by
27216 , creation_date
27217 , last_update_date
27218 , last_updated_by
27219 , last_update_login
27220 , program_update_date
27221 , program_application_id
27222 , program_id
27223 , request_id
27224 )
27225 SELECT
27226 event_id
27227 , p_target_ledger_id
27228 , p_sla_ledger_id
27229 , p_language
27230 , object_name
27231 , object_type_code
27232 , line_number
27233 , source_application_id
27234 , source_type_code
27235 , source_code
27236 , SUBSTR(source_value ,1,1996)
27237 , SUBSTR(source_meaning ,1,200)
27238 , xla_environment_pkg.g_Usr_Id
27239 , TRUNC(SYSDATE)
27240 , TRUNC(SYSDATE)
27241 , xla_environment_pkg.g_Usr_Id
27242 , xla_environment_pkg.g_Login_Id
27243 , TRUNC(SYSDATE)
27244 , xla_environment_pkg.g_Prog_Appl_Id
27245 , xla_environment_pkg.g_Prog_Id
27246 , xla_environment_pkg.g_Req_Id
27247 FROM (
27248 SELECT xet.event_id event_id
27249 , 0 line_number
27250 , CASE r
27251 WHEN 1 THEN 'OKL_CMN_EXTRACT_HDR_V'
27252 WHEN 2 THEN 'OKL_CMN_EXTRACT_HDR_V'
27253 WHEN 3 THEN 'OKL_CMN_EXTRACT_HDR_V'
27254 WHEN 4 THEN 'OKL_CMN_EXTRACT_HDR_V'
27255 WHEN 5 THEN 'OKL_CMN_EXTRACT_HDR_V'
27256 WHEN 6 THEN 'OKL_CMN_EXTRACT_HDR_V'
27257 WHEN 7 THEN 'OKL_CMN_EXTRACT_HDR_V'
27258 WHEN 8 THEN 'OKL_CMN_EXTRACT_HDR_V'
27259
27260 ELSE null
27261 END object_name
27262 , CASE r
27263 WHEN 1 THEN 'HEADER'
27264 WHEN 2 THEN 'HEADER'
27265 WHEN 3 THEN 'HEADER'
27266 WHEN 4 THEN 'HEADER'
27267 WHEN 5 THEN 'HEADER'
27268 WHEN 6 THEN 'HEADER'
27269 WHEN 7 THEN 'HEADER'
27270 WHEN 8 THEN 'HEADER'
27271
27272 ELSE null
27273 END object_type_code
27274 , CASE r
27275 WHEN 1 THEN '540'
27276 WHEN 2 THEN '540'
27277 WHEN 3 THEN '540'
27278 WHEN 4 THEN '540'
27279 WHEN 5 THEN '540'
27280 WHEN 6 THEN '540'
27281 WHEN 7 THEN '540'
27282 WHEN 8 THEN '540'
27283
27284 ELSE null
27288 WHEN 1 THEN 'TEH_CONTRACT_NUMBER'
27285 END source_application_id
27286 , 'S' source_type_code
27287 , CASE r
27289 WHEN 2 THEN 'TCN_CONTRACT_PRODUCT_NAME'
27290 WHEN 3 THEN 'TCN_CURRENCY_CODE'
27291 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE'
27292 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE'
27293 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE'
27294 WHEN 7 THEN 'GL_DATE'
27295 WHEN 8 THEN 'TCN_ACCOUNTING_REVERSAL_FLAG'
27296
27297 ELSE null
27298 END source_code
27299 , CASE r
27300 WHEN 1 THEN TO_CHAR(h1.TEH_CONTRACT_NUMBER)
27301 WHEN 2 THEN TO_CHAR(h1.TCN_CONTRACT_PRODUCT_NAME)
27302 WHEN 3 THEN TO_CHAR(h1.TCN_CURRENCY_CODE)
27303 WHEN 4 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_DATE)
27304 WHEN 5 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_RATE)
27305 WHEN 6 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_TYPE)
27306 WHEN 7 THEN TO_CHAR(h1.GL_DATE)
27307 WHEN 8 THEN TO_CHAR(h1.TCN_ACCOUNTING_REVERSAL_FLAG)
27308
27309 ELSE null
27310 END source_value
27311 , null source_meaning
27312 FROM xla_events_gt xet
27313 , OKL_CMN_EXTRACT_HDR_V h1
27314 ,(select rownum r from all_objects where rownum <= 8 and owner = p_apps_owner)
27315 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
27316 AND xet.event_class_code = C_EVENT_CLASS_CODE
27317 AND h1.event_id = xet.event_id
27318
27319 )
27320 ;
27321 --
27322 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
27323
27324 trace
27325 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
27326 ,p_level => C_LEVEL_STATEMENT
27327 ,p_module => l_log_module);
27328
27329 END IF;
27330 --
27331
27332
27333
27334 --
27335 INSERT INTO xla_diag_sources --line2
27336 (
27337 event_id
27338 , ledger_id
27339 , sla_ledger_id
27340 , description_language
27341 , object_name
27342 , object_type_code
27343 , line_number
27344 , source_application_id
27345 , source_type_code
27346 , source_code
27347 , source_value
27348 , source_meaning
27349 , created_by
27350 , creation_date
27351 , last_update_date
27352 , last_updated_by
27353 , last_update_login
27354 , program_update_date
27355 , program_application_id
27356 , program_id
27357 , request_id
27358 )
27359 SELECT event_id
27360 , p_target_ledger_id
27361 , p_sla_ledger_id
27362 , p_language
27363 , object_name
27364 , object_type_code
27365 , line_number
27366 , source_application_id
27367 , source_type_code
27368 , source_code
27369 , SUBSTR(source_value,1,1996)
27370 , SUBSTR(source_meaning ,1,200)
27371 , xla_environment_pkg.g_Usr_Id
27372 , TRUNC(SYSDATE)
27373 , TRUNC(SYSDATE)
27374 , xla_environment_pkg.g_Usr_Id
27375 , xla_environment_pkg.g_Login_Id
27376 , TRUNC(SYSDATE)
27377 , xla_environment_pkg.g_Prog_Appl_Id
27378 , xla_environment_pkg.g_Prog_Id
27379 , xla_environment_pkg.g_Req_Id
27380 FROM (
27381 SELECT xet.event_id event_id
27382 , l2.line_number line_number
27383 , CASE r
27384 WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V'
27385 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V'
27386 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V'
27387 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V'
27388 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V'
27389
27390 ELSE null
27391 END object_name
27392 , CASE r
27393 WHEN 1 THEN 'LINE'
27394 WHEN 2 THEN 'LINE'
27395 WHEN 3 THEN 'LINE'
27396 WHEN 4 THEN 'LINE'
27397 WHEN 5 THEN 'LINE'
27398
27399 ELSE null
27400 END object_type_code
27401 , CASE r
27402 WHEN 1 THEN '540'
27403 WHEN 2 THEN '540'
27404 WHEN 3 THEN '540'
27405 WHEN 4 THEN '540'
27406 WHEN 5 THEN '540'
27407
27408 ELSE null
27409 END source_application_id
27410 , 'S' source_type_code
27411 , CASE r
27412 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID'
27413 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE'
27414 WHEN 3 THEN 'DIST_ID'
27415 WHEN 4 THEN 'DIST_TYPE'
27416 WHEN 5 THEN 'DIST_ENTERED_AMOUNT'
27417
27418 ELSE null
27419 END source_code
27420 , CASE r
27421 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
27422 WHEN 2 THEN TO_CHAR(l2.DIST_AE_LINE_TYPE_CODE)
27423 WHEN 3 THEN TO_CHAR(l2.DIST_ID)
27424 WHEN 4 THEN TO_CHAR(l2.DIST_TYPE)
27425 WHEN 5 THEN TO_CHAR(l2.DIST_ENTERED_AMOUNT)
27426
27427 ELSE null
27428 END source_value
27432 ELSE null
27429 , CASE r
27430 WHEN 2 THEN fvl6.meaning
27431
27433 END source_meaning
27434 FROM xla_events_gt xet
27435 , OKL_CMN_EXTRACT_LINE_V l2
27436 , fnd_lookup_values fvl6
27437 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
27438 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
27439 AND xet.event_class_code = C_EVENT_CLASS_CODE
27440 AND l2.event_id = xet.event_id
27441 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
27442 AND fvl6.lookup_code(+) = l2.DIST_AE_LINE_TYPE_CODE
27443 AND fvl6.view_application_id(+) = 0
27444 AND fvl6.language(+) = USERENV('LANG')
27445
27446 )
27447 ;
27448 --
27449 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
27450
27451 trace
27452 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
27453 ,p_level => C_LEVEL_STATEMENT
27454 ,p_module => l_log_module);
27455
27456 END IF;
27457
27458
27459 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27460 trace
27461 (p_msg => 'END of insert_sources_42'
27462 ,p_level => C_LEVEL_PROCEDURE
27463 ,p_module => l_log_module);
27464 END IF;
27465 EXCEPTION
27466 WHEN xla_exceptions_pkg.application_exception THEN
27467 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
27468 trace
27469 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
27470 ,p_level => C_LEVEL_EXCEPTION
27471 ,p_module => l_log_module);
27472 END IF;
27473 RAISE;
27474 WHEN OTHERS THEN
27475 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
27476 trace
27477 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
27478 ,p_level => C_LEVEL_EXCEPTION
27479 ,p_module => l_log_module);
27480 END IF;
27481 xla_exceptions_pkg.raise_message
27482 (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_42');
27483 END insert_sources_42;
27484 --
27485
27486 ---------------------------------------
27487 --
27488 -- PRIVATE FUNCTION
27489 -- EventClass_42
27490 --
27491 ----------------------------------------
27492 --
27493 FUNCTION EventClass_42
27494 (p_application_id IN NUMBER
27495 ,p_base_ledger_id IN NUMBER
27496 ,p_target_ledger_id IN NUMBER
27497 ,p_language IN VARCHAR2
27498 ,p_currency_code IN VARCHAR2
27499 ,p_sla_ledger_id IN NUMBER
27500 ,p_pad_start_date IN DATE
27501 ,p_pad_end_date IN DATE
27502 ,p_primary_ledger_id IN NUMBER)
27503 RETURN BOOLEAN IS
27504 --
27505 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'SPECIFIC_LOSS_PROVISION_ALL';
27506 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'SPECIFIC_LOSS_PROVISION';
27507
27508 l_calculate_acctd_flag VARCHAR2(1) :='Y';
27509 l_calculate_g_l_flag VARCHAR2(1) :='Y';
27510 --
27511 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
27512 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
27513 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
27514 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
27515 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
27516 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
27517 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
27518 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
27519 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
27520 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
27521 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
27522 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
27523 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
27524 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
27525 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
27526 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
27527 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
27528 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
27529 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
27530 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
27531 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
27532 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
27533 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
27534 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
27535
27536 l_event_id NUMBER;
27537 l_previous_event_id NUMBER;
27538 l_first_event_id NUMBER;
27539 l_last_event_id NUMBER;
27540
27541 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
27542 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
27543 --
27544 --
27545 l_result BOOLEAN := TRUE;
27546 l_rows NUMBER := 1000;
27547 l_event_type_name VARCHAR2(80) := 'All';
27548 l_event_class_name VARCHAR2(80) := 'Specific Loss Provision';
27549 l_description VARCHAR2(4000);
27550 l_transaction_reversal NUMBER;
27551 l_ae_header_id NUMBER;
27555 l_acct_reversal_source VARCHAR2(30);
27552 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
27553 l_log_module VARCHAR2(240);
27554 --
27556 l_trx_reversal_source VARCHAR2(30);
27557
27558 l_continue_with_lines BOOLEAN := TRUE;
27559 --
27560 l_acc_rev_gl_date_source DATE; -- 4262811
27561 --
27562 type t_array_event_id is table of number index by binary_integer;
27563
27564 l_rec_array_event t_rec_array_event;
27565 l_null_rec_array_event t_rec_array_event;
27566 l_array_ae_header_id xla_number_array_type;
27567 l_actual_flag VARCHAR2(1) := NULL;
27568 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
27569 l_balance_type_code VARCHAR2(1) :=NULL;
27570 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
27571
27572 --
27573 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
27574 --
27575
27576 TYPE t_array_source_1 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TEH_CONTRACT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
27577 TYPE t_array_source_2 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CONTRACT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
27578 TYPE t_array_source_10 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
27579 TYPE t_array_source_11 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
27580 TYPE t_array_source_12 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
27581 TYPE t_array_source_13 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
27582 TYPE t_array_source_15 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
27583 TYPE t_array_source_16 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
27584
27585 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
27586 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
27587 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
27588 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
27589 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
27590
27591 l_array_source_1 t_array_source_1;
27592 l_array_source_2 t_array_source_2;
27593 l_array_source_10 t_array_source_10;
27594 l_array_source_11 t_array_source_11;
27595 l_array_source_12 t_array_source_12;
27596 l_array_source_13 t_array_source_13;
27597 l_array_source_15 t_array_source_15;
27598 l_array_source_16 t_array_source_16;
27599
27600 l_array_source_5 t_array_source_5;
27601 l_array_source_6 t_array_source_6;
27602 l_array_source_6_meaning t_array_lookup_meaning;
27603 l_array_source_7 t_array_source_7;
27604 l_array_source_8 t_array_source_8;
27605 l_array_source_9 t_array_source_9;
27606
27607 --
27608 CURSOR header_cur
27609 IS
27610 SELECT /*+ leading(xet) cardinality(xet,1) */
27611 -- Event Class Code: SPECIFIC_LOSS_PROVISION
27612 xet.entity_id
27613 ,xet.legal_entity_id
27614 ,xet.entity_code
27615 ,xet.transaction_number
27616 ,xet.event_id
27617 ,xet.event_class_code
27618 ,xet.event_type_code
27619 ,xet.event_number
27620 ,xet.event_date
27621 ,xet.transaction_date
27622 ,xet.reference_num_1
27623 ,xet.reference_num_2
27624 ,xet.reference_num_3
27625 ,xet.reference_num_4
27626 ,xet.reference_char_1
27627 ,xet.reference_char_2
27628 ,xet.reference_char_3
27629 ,xet.reference_char_4
27630 ,xet.reference_date_1
27631 ,xet.reference_date_2
27632 ,xet.reference_date_3
27633 ,xet.reference_date_4
27634 ,xet.event_created_by
27635 ,xet.budgetary_control_flag
27636 , h1.TEH_CONTRACT_NUMBER source_1
27637 , h1.TCN_CONTRACT_PRODUCT_NAME source_2
27638 , h1.TCN_CURRENCY_CODE source_10
27639 , h1.TCN_CURR_CONVERSION_DATE source_11
27640 , h1.TCN_CURR_CONVERSION_RATE source_12
27641 , h1.TCN_CURR_CONVERSION_TYPE source_13
27642 , h1.GL_DATE source_15
27643 , h1.TCN_ACCOUNTING_REVERSAL_FLAG source_16
27644 FROM xla_events_gt xet
27645 , OKL_CMN_EXTRACT_HDR_V h1
27646 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
27647 and xet.event_class_code = C_EVENT_CLASS_CODE
27648 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
27649
27650 ORDER BY event_id
27651 ;
27652
27653
27654 --
27655 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
27656 IS
27657 SELECT /*+ leading(xet) cardinality(xet,1) */
27658 -- Event Class Code: SPECIFIC_LOSS_PROVISION
27659 xet.entity_id
27660 ,xet.legal_entity_id
27661 ,xet.entity_code
27662 ,xet.transaction_number
27663 ,xet.event_id
27664 ,xet.event_class_code
27665 ,xet.event_type_code
27666 ,xet.event_number
27667 ,xet.event_date
27668 ,xet.transaction_date
27669 ,xet.reference_num_1
27670 ,xet.reference_num_2
27671 ,xet.reference_num_3
27672 ,xet.reference_num_4
27673 ,xet.reference_char_1
27674 ,xet.reference_char_2
27675 ,xet.reference_char_3
27676 ,xet.reference_char_4
27677 ,xet.reference_date_1
27678 ,xet.reference_date_2
27679 ,xet.reference_date_3
27680 ,xet.reference_date_4
27681 ,xet.event_created_by
27682 ,xet.budgetary_control_flag
27683 , l2.LINE_NUMBER
27684 , l2.DIST_CODE_COMBINATION_ID source_5
27685 , l2.DIST_AE_LINE_TYPE_CODE source_6
27686 , fvl6.meaning source_6_meaning
27690 FROM xla_events_gt xet
27687 , l2.DIST_ID source_7
27688 , l2.DIST_TYPE source_8
27689 , l2.DIST_ENTERED_AMOUNT source_9
27691 , OKL_CMN_EXTRACT_LINE_V l2
27692 , fnd_lookup_values fvl6
27693 WHERE xet.event_id between x_first_event_id and x_last_event_id
27694 and xet.event_date between p_pad_start_date and p_pad_end_date
27695 and xet.event_class_code = C_EVENT_CLASS_CODE
27696 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
27697 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
27698 AND fvl6.lookup_code(+) = l2.DIST_AE_LINE_TYPE_CODE
27699 AND fvl6.view_application_id(+) = 0
27700 AND fvl6.language(+) = USERENV('LANG')
27701 ;
27702
27703 --
27704 BEGIN
27705 IF g_log_enabled THEN
27706 l_log_module := C_DEFAULT_MODULE||'.EventClass_42';
27707 END IF;
27708 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27709 trace
27710 (p_msg => 'BEGIN of EventClass_42'
27711 ,p_level => C_LEVEL_PROCEDURE
27712 ,p_module => l_log_module);
27713 END IF;
27714
27715 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
27716 trace
27717 (p_msg => 'p_application_id = '||p_application_id||
27718 ' - p_base_ledger_id = '||p_base_ledger_id||
27719 ' - p_target_ledger_id = '||p_target_ledger_id||
27720 ' - p_language = '||p_language||
27721 ' - p_currency_code = '||p_currency_code||
27722 ' - p_sla_ledger_id = '||p_sla_ledger_id
27723 ,p_level => C_LEVEL_STATEMENT
27724 ,p_module => l_log_module);
27725 END IF;
27726 --
27727 -- initialze arrays
27728 --
27729 g_array_event.DELETE;
27730 l_rec_array_event := l_null_rec_array_event;
27731 --
27732 --------------------------------------
27733 -- 4262811 Initialze MPA Line Number
27734 --------------------------------------
27735 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
27736
27737 --
27738
27739 --
27740 OPEN header_cur;
27741 --
27742 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
27743 trace
27744 (p_msg => 'SQL - FETCH header_cur'
27745 ,p_level => C_LEVEL_STATEMENT
27746 ,p_module => l_log_module);
27747 END IF;
27748 --
27749 LOOP
27750 FETCH header_cur BULK COLLECT INTO
27751 l_array_entity_id
27752 , l_array_legal_entity_id
27753 , l_array_entity_code
27754 , l_array_transaction_num
27755 , l_array_event_id
27756 , l_array_class_code
27757 , l_array_event_type
27758 , l_array_event_number
27759 , l_array_event_date
27760 , l_array_transaction_date
27761 , l_array_reference_num_1
27762 , l_array_reference_num_2
27763 , l_array_reference_num_3
27764 , l_array_reference_num_4
27765 , l_array_reference_char_1
27766 , l_array_reference_char_2
27767 , l_array_reference_char_3
27768 , l_array_reference_char_4
27769 , l_array_reference_date_1
27770 , l_array_reference_date_2
27771 , l_array_reference_date_3
27772 , l_array_reference_date_4
27773 , l_array_event_created_by
27774 , l_array_budgetary_control_flag
27775 , l_array_source_1
27776 , l_array_source_2
27777 , l_array_source_10
27778 , l_array_source_11
27779 , l_array_source_12
27780 , l_array_source_13
27781 , l_array_source_15
27782 , l_array_source_16
27783 LIMIT l_rows;
27784 --
27785 IF (C_LEVEL_EVENT >= g_log_level) THEN
27786 trace
27787 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
27788 ,p_level => C_LEVEL_EVENT
27789 ,p_module => l_log_module);
27790 END IF;
27791 --
27792 EXIT WHEN l_array_entity_id.COUNT = 0;
27793
27794 -- initialize arrays
27795 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
27796 XLA_AE_LINES_PKG.g_rec_lines := NULL;
27797
27798 --
27799 -- Bug 4458708
27800 --
27801 XLA_AE_LINES_PKG.g_LineNumber := 0;
27802
27803
27804 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
27805 g_last_hdr_idx := l_array_event_id.LAST;
27806 --
27807 -- loop for the headers. Each iteration is for each header extract row
27808 -- fetched in header cursor
27809 --
27810 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
27811
27812 --
27813 -- set event info as cache for other routines to refer event attributes
27814 --
27815 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
27816 (p_application_id => p_application_id
27817 ,p_primary_ledger_id => p_primary_ledger_id
27818 ,p_base_ledger_id => p_base_ledger_id
27819 ,p_target_ledger_id => p_target_ledger_id
27820 ,p_entity_id => l_array_entity_id(hdr_idx)
27821 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
27822 ,p_entity_code => l_array_entity_code(hdr_idx)
27823 ,p_transaction_num => l_array_transaction_num(hdr_idx)
27824 ,p_event_id => l_array_event_id(hdr_idx)
27825 ,p_event_class_code => l_array_class_code(hdr_idx)
27826 ,p_event_type_code => l_array_event_type(hdr_idx)
27827 ,p_event_number => l_array_event_number(hdr_idx)
27828 ,p_event_date => l_array_event_date(hdr_idx)
27829 ,p_transaction_date => l_array_transaction_date(hdr_idx)
27830 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
27831 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
27832 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
27833 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
27837 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
27834 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
27835 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
27836 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
27838 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
27839 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
27840 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
27841 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
27842 ,p_event_created_by => l_array_event_created_by(hdr_idx)
27843 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
27844
27845 --
27846 -- set the status of entry to C_VALID (0)
27847 --
27848 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
27849
27850 --
27851 -- initialize a row for ae header
27852 --
27853 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
27854
27855 l_event_id := l_array_event_id(hdr_idx);
27856
27857 --
27858 -- storing the hdr_idx for event. May be used by line cursor.
27859 --
27860 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
27861
27862 --
27863 -- store sources from header extract. This can be improved to
27864 -- store only those sources from header extract that may be used in lines
27865 --
27866
27867 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
27868 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
27869 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
27870 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
27871 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
27872 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
27873 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
27874 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
27875
27876 --
27877 -- initilaize the status of ae headers for diffrent balance types
27878 -- the status is initialised to C_NOT_CREATED (2)
27879 --
27880 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
27881 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
27882 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
27883
27884 --
27885 -- call api to validate and store accounting attributes for header
27886 --
27887
27888 ------------------------------------------------------------
27889 -- Accrual Reversal : to get date for Standard Source (NONE)
27890 ------------------------------------------------------------
27891 l_acc_rev_gl_date_source := NULL;
27892
27893 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
27894 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
27895 l_rec_acct_attrs.array_acct_attr_code(2) := 'TRX_ACCT_REVERSAL_OPTION';
27896 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_16');
27897
27898
27899 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
27900
27901 XLA_AE_HEADER_PKG.SetJeCategoryName;
27902
27903 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
27904 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
27905 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
27906 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
27907 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
27908
27909
27910 --
27911 xla_ae_header_pkg.SetHdrDescription(
27912 p_description => Description_1 (
27913 p_application_id => p_application_id
27914 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
27915 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
27916 )
27917 );
27918 --
27919
27920 -- No header level analytical criteria
27921
27922 --
27923 --accounting attribute enhancement, bug 3612931
27924 --
27925 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_16'), 1,30);
27926
27927 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
27928 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
27929
27930 xla_accounting_err_pkg.build_message
27931 (p_appli_s_name => 'XLA'
27932 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
27933 ,p_token_1 => 'ACCT_ATTR_NAME'
27934 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
27935 ,p_token_2 => 'PRODUCT_NAME'
27936 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
27937 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
27938 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
27939 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
27940
27941 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
27942 --
27943 -- following sets the accounting attributes needed to reverse
27944 -- accounting for a distributeion
27945 --
27946 xla_ae_lines_pkg.SetTrxReversalAttrs
27947 (p_event_id => l_event_id
27948 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
27949 ,p_trx_reversal_source => l_trx_reversal_source);
27950
27951 END IF;
27952
27953
27957 --
27954 ----------------------------------------------------------------
27955 -- 4262811 - update the header statuses to invalid in need be
27956 ----------------------------------------------------------------
27958 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
27959
27960
27961 -----------------------------------------------
27962 -- No accrual reversal for the event class/type
27963 -----------------------------------------------
27964 ----------------------------------------------------------------
27965
27966 --
27967 -- this ends the header loop iteration for one bulk fetch
27968 --
27969 END LOOP;
27970
27971 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
27972 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
27973
27974 --
27975 -- insert dummy rows into lines gt table that were created due to
27976 -- transaction reversals
27977 --
27978 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
27979 l_result := XLA_AE_LINES_PKG.InsertLines;
27980 END IF;
27981
27982 --
27983 -- reset the temp_line_num for each set of events fetched from header
27984 -- cursor rather than doing it for each new event in line cursor
27985 -- Bug 3939231
27986 --
27987 xla_ae_lines_pkg.g_temp_line_num := 0;
27988
27989
27990
27991 --
27992 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
27993 --
27994 --
27995 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
27996
27997 trace
27998 (p_msg => 'SQL - FETCH line_cur'
27999 ,p_level => C_LEVEL_STATEMENT
28000 ,p_module => l_log_module);
28001
28002 END IF;
28003 --
28004 --
28005 LOOP
28006 --
28007 FETCH line_cur BULK COLLECT INTO
28008 l_array_entity_id
28009 , l_array_legal_entity_id
28010 , l_array_entity_code
28011 , l_array_transaction_num
28012 , l_array_event_id
28013 , l_array_class_code
28014 , l_array_event_type
28015 , l_array_event_number
28016 , l_array_event_date
28017 , l_array_transaction_date
28018 , l_array_reference_num_1
28019 , l_array_reference_num_2
28020 , l_array_reference_num_3
28021 , l_array_reference_num_4
28022 , l_array_reference_char_1
28023 , l_array_reference_char_2
28024 , l_array_reference_char_3
28025 , l_array_reference_char_4
28026 , l_array_reference_date_1
28027 , l_array_reference_date_2
28028 , l_array_reference_date_3
28029 , l_array_reference_date_4
28030 , l_array_event_created_by
28031 , l_array_budgetary_control_flag
28032 , l_array_extract_line_num
28033 , l_array_source_5
28034 , l_array_source_6
28035 , l_array_source_6_meaning
28036 , l_array_source_7
28037 , l_array_source_8
28038 , l_array_source_9
28039 LIMIT l_rows;
28040
28041 --
28042 IF (C_LEVEL_EVENT >= g_log_level) THEN
28043 trace
28044 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
28045 ,p_level => C_LEVEL_EVENT
28046 ,p_module => l_log_module);
28047 END IF;
28048 --
28049 EXIT WHEN l_array_entity_id.count = 0;
28050
28051 XLA_AE_LINES_PKG.g_rec_lines := null;
28052
28053 --
28054 -- Bug 4458708
28055 --
28056 XLA_AE_LINES_PKG.g_LineNumber := 0;
28057 --
28058 --
28059
28060 FOR Idx IN 1..l_array_event_id.count LOOP
28061 --
28062 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
28063 --
28064 l_event_id := l_array_event_id(idx); -- 5648433
28065
28066 --
28067 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
28068 --
28069
28070 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
28071 (g_array_event(l_event_id).array_value_num('header_index'))
28072 ,'N'
28073 ) <> 'Y'
28074 THEN
28075 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
28076 trace
28077 (p_msg => 'Trancaction revesal option is not Y '
28078 ,p_level => C_LEVEL_STATEMENT
28079 ,p_module => l_log_module);
28080 END IF;
28081
28082 --
28083 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
28084 --
28085 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
28086 --
28087 -- set event info as cache for other routines to refer event attributes
28088 --
28089
28090 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
28091 l_previous_event_id := l_event_id;
28092
28093 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
28094 (p_application_id => p_application_id
28095 ,p_primary_ledger_id => p_primary_ledger_id
28096 ,p_base_ledger_id => p_base_ledger_id
28097 ,p_target_ledger_id => p_target_ledger_id
28098 ,p_entity_id => l_array_entity_id(Idx)
28099 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
28100 ,p_entity_code => l_array_entity_code(Idx)
28101 ,p_transaction_num => l_array_transaction_num(Idx)
28102 ,p_event_id => l_array_event_id(Idx)
28103 ,p_event_class_code => l_array_class_code(Idx)
28104 ,p_event_type_code => l_array_event_type(Idx)
28105 ,p_event_number => l_array_event_number(Idx)
28106 ,p_event_date => l_array_event_date(Idx)
28107 ,p_transaction_date => l_array_transaction_date(Idx)
28111 ,p_reference_num_4 => l_array_reference_num_4(Idx)
28108 ,p_reference_num_1 => l_array_reference_num_1(Idx)
28109 ,p_reference_num_2 => l_array_reference_num_2(Idx)
28110 ,p_reference_num_3 => l_array_reference_num_3(Idx)
28112 ,p_reference_char_1 => l_array_reference_char_1(Idx)
28113 ,p_reference_char_2 => l_array_reference_char_2(Idx)
28114 ,p_reference_char_3 => l_array_reference_char_3(Idx)
28115 ,p_reference_char_4 => l_array_reference_char_4(Idx)
28116 ,p_reference_date_1 => l_array_reference_date_1(Idx)
28117 ,p_reference_date_2 => l_array_reference_date_2(Idx)
28118 ,p_reference_date_3 => l_array_reference_date_3(Idx)
28119 ,p_reference_date_4 => l_array_reference_date_4(Idx)
28120 ,p_event_created_by => l_array_event_created_by(Idx)
28121 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
28122 --
28123 END IF;
28124
28125
28126
28127 --
28128 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
28129
28130 l_acct_reversal_source := SUBSTR(NULL, 1,30);
28131
28132 IF l_continue_with_lines THEN
28133 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
28134 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
28135
28136 xla_accounting_err_pkg.build_message
28137 (p_appli_s_name => 'XLA'
28138 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
28139 ,p_token_1 => 'LINE_NUMBER'
28140 ,p_value_1 => l_array_extract_line_num(Idx)
28141 ,p_token_2 => 'PRODUCT_NAME'
28142 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
28143 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
28144 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
28145 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
28146
28147 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
28148 --
28149 -- following sets the accounting attributes needed to reverse
28150 -- accounting for a distributeion
28151 --
28152
28153 --
28154 -- 5217187
28155 --
28156 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
28157 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
28158 g_array_event(l_event_id).array_value_num('header_index'));
28159 --
28160 --
28161
28162 -- No reversal code generated
28163
28164 xla_ae_lines_pkg.SetAcctReversalAttrs
28165 (p_event_id => l_event_id
28166 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
28167 ,p_calculate_acctd_flag => l_calculate_acctd_flag
28168 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
28169 END IF;
28170
28171 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
28172 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
28173
28174 --
28175 AcctLineType_24 (
28176 p_application_id => p_application_id
28177 ,p_event_id => l_event_id
28178 ,p_calculate_acctd_flag => l_calculate_acctd_flag
28179 ,p_calculate_g_l_flag => l_calculate_g_l_flag
28180 ,p_actual_flag => l_actual_flag
28181 ,p_balance_type_code => l_balance_type_code
28182 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
28183
28184 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
28185 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
28186 , p_source_5 => l_array_source_5(Idx)
28187 , p_source_6 => l_array_source_6(Idx)
28188 , p_source_6_meaning => l_array_source_6_meaning(Idx)
28189 , p_source_7 => l_array_source_7(Idx)
28190 , p_source_8 => l_array_source_8(Idx)
28191 , p_source_9 => l_array_source_9(Idx)
28192 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
28193 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
28194 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
28195 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
28196 );
28197 If(l_balance_type_code = 'A') THEN
28198 l_actual_gain_loss_ref := l_gain_or_loss_ref;
28199 END IF;
28200
28201 --
28202
28203
28204 --
28205 AcctLineType_25 (
28206 p_application_id => p_application_id
28207 ,p_event_id => l_event_id
28208 ,p_calculate_acctd_flag => l_calculate_acctd_flag
28209 ,p_calculate_g_l_flag => l_calculate_g_l_flag
28210 ,p_actual_flag => l_actual_flag
28211 ,p_balance_type_code => l_balance_type_code
28212 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
28213
28214 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
28215 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
28216 , p_source_5 => l_array_source_5(Idx)
28217 , p_source_6 => l_array_source_6(Idx)
28218 , p_source_6_meaning => l_array_source_6_meaning(Idx)
28219 , p_source_7 => l_array_source_7(Idx)
28220 , p_source_8 => l_array_source_8(Idx)
28221 , p_source_9 => l_array_source_9(Idx)
28222 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
28223 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
28224 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
28225 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
28226 );
28227 If(l_balance_type_code = 'A') THEN
28228 l_actual_gain_loss_ref := l_gain_or_loss_ref;
28229 END IF;
28230
28231 --
28232
28233 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
28237 (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'))
28234 -- or secondary ledger that has different currency with primary
28235 -- or alc that is calculated by sla
28236 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
28238
28239 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
28240 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
28241 AND (l_actual_flag = 'A')) THEN
28242 XLA_AE_LINES_PKG.CreateGainOrLossLines(
28243 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
28244 ,p_application_id => p_application_id
28245 ,p_amb_context_code => 'DEFAULT'
28246 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
28247 ,p_event_class_code => C_EVENT_CLASS_CODE
28248 ,p_event_type_code => C_EVENT_TYPE_CODE
28249
28250 ,p_gain_ccid => -1
28251 ,p_loss_ccid => -1
28252
28253 ,p_actual_flag => l_actual_flag
28254 ,p_enc_flag => null
28255 ,p_actual_g_l_ref => l_actual_gain_loss_ref
28256 ,p_enc_g_l_ref => null
28257 );
28258 END IF;
28259 END IF;
28260 END IF;
28261
28262 ELSE
28263 --
28264 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
28265 --
28266 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
28267 trace
28268 (p_msg => 'Trancaction revesal option is Y'
28269 ,p_level => C_LEVEL_STATEMENT
28270 ,p_module => l_log_module);
28271 END IF;
28272 END IF;
28273
28274 END LOOP;
28275 l_result := XLA_AE_LINES_PKG.InsertLines ;
28276 end loop;
28277 close line_cur;
28278
28279
28280 --
28281 -- insert headers into xla_ae_headers_gt table
28282 --
28283 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
28284
28285 -- insert into errors table here.
28286
28287 END LOOP;
28288
28289 --
28290 -- 4865292
28291 --
28292 -- Compare g_hdr_extract_count with event count in
28293 -- CreateHeadersAndLines.
28294 --
28295 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
28296
28297 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
28298 trace (p_msg => '# rows extracted from header extract objects '
28299 || ' (running total): '
28300 || g_hdr_extract_count
28301 ,p_level => C_LEVEL_STATEMENT
28302 ,p_module => l_log_module);
28303 END IF;
28304
28305 CLOSE header_cur;
28306 --
28307
28308 --
28309 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28310 trace
28311 (p_msg => 'END of EventClass_42'
28312 ,p_level => C_LEVEL_PROCEDURE
28313 ,p_module => l_log_module);
28314 END IF;
28315 --
28316 RETURN l_result;
28317 EXCEPTION
28318 WHEN xla_exceptions_pkg.application_exception THEN
28319
28320 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
28321
28322
28323 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
28324
28325 RAISE;
28326 WHEN OTHERS THEN
28327 xla_exceptions_pkg.raise_message
28328 (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_42');
28329 END EventClass_42;
28330 --
28331
28332 ---------------------------------------
28333 --
28334 -- PRIVATE PROCEDURE
28335 -- insert_sources_43
28336 --
28337 ----------------------------------------
28338 --
28339 PROCEDURE insert_sources_43(
28340 p_target_ledger_id IN NUMBER
28341 , p_language IN VARCHAR2
28342 , p_sla_ledger_id IN NUMBER
28343 , p_pad_start_date IN DATE
28344 , p_pad_end_date IN DATE
28345 )
28346 IS
28347
28348 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'SPLIT_ASSET_ALL';
28349 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'SPLIT_ASSET';
28350 p_apps_owner VARCHAR2(30);
28351 l_log_module VARCHAR2(240);
28352 BEGIN
28353 IF g_log_enabled THEN
28354 l_log_module := C_DEFAULT_MODULE||'.insert_sources_43';
28355 END IF;
28356 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28357
28358 trace
28359 (p_msg => 'BEGIN of insert_sources_43'
28360 ,p_level => C_LEVEL_PROCEDURE
28361 ,p_module => l_log_module);
28362
28363 END IF;
28364
28365 -- select APPS owner
28366 SELECT oracle_username
28367 INTO p_apps_owner
28368 FROM fnd_oracle_userid
28369 WHERE read_only_flag = 'U'
28370 ;
28371
28372 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
28373 trace
28374 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
28375 ' - p_language = '||p_language||
28376 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
28377 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
28378 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
28379 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
28380 ,p_level => C_LEVEL_STATEMENT
28381 ,p_module => l_log_module);
28382 END IF;
28383
28384
28385 --
28386 INSERT INTO xla_diag_sources --hdr2
28387 (
28388 event_id
28389 , ledger_id
28390 , sla_ledger_id
28394 , line_number
28391 , description_language
28392 , object_name
28393 , object_type_code
28395 , source_application_id
28396 , source_type_code
28397 , source_code
28398 , source_value
28399 , source_meaning
28400 , created_by
28401 , creation_date
28402 , last_update_date
28403 , last_updated_by
28404 , last_update_login
28405 , program_update_date
28406 , program_application_id
28407 , program_id
28408 , request_id
28409 )
28410 SELECT
28411 event_id
28412 , p_target_ledger_id
28413 , p_sla_ledger_id
28414 , p_language
28415 , object_name
28416 , object_type_code
28417 , line_number
28418 , source_application_id
28419 , source_type_code
28420 , source_code
28421 , SUBSTR(source_value ,1,1996)
28422 , SUBSTR(source_meaning ,1,200)
28423 , xla_environment_pkg.g_Usr_Id
28424 , TRUNC(SYSDATE)
28425 , TRUNC(SYSDATE)
28426 , xla_environment_pkg.g_Usr_Id
28427 , xla_environment_pkg.g_Login_Id
28428 , TRUNC(SYSDATE)
28429 , xla_environment_pkg.g_Prog_Appl_Id
28430 , xla_environment_pkg.g_Prog_Id
28431 , xla_environment_pkg.g_Req_Id
28432 FROM (
28433 SELECT xet.event_id event_id
28434 , 0 line_number
28435 , CASE r
28436 WHEN 1 THEN 'OKL_CMN_EXTRACT_HDR_V'
28437 WHEN 2 THEN 'OKL_CMN_EXTRACT_HDR_V'
28438 WHEN 3 THEN 'OKL_CMN_EXTRACT_HDR_V'
28439 WHEN 4 THEN 'OKL_CMN_EXTRACT_HDR_V'
28440 WHEN 5 THEN 'OKL_CMN_EXTRACT_HDR_V'
28441 WHEN 6 THEN 'OKL_CMN_EXTRACT_HDR_V'
28442 WHEN 7 THEN 'OKL_CMN_EXTRACT_HDR_V'
28443
28444 ELSE null
28445 END object_name
28446 , CASE r
28447 WHEN 1 THEN 'HEADER'
28448 WHEN 2 THEN 'HEADER'
28449 WHEN 3 THEN 'HEADER'
28450 WHEN 4 THEN 'HEADER'
28451 WHEN 5 THEN 'HEADER'
28452 WHEN 6 THEN 'HEADER'
28453 WHEN 7 THEN 'HEADER'
28454
28455 ELSE null
28456 END object_type_code
28457 , CASE r
28458 WHEN 1 THEN '540'
28459 WHEN 2 THEN '540'
28460 WHEN 3 THEN '540'
28461 WHEN 4 THEN '540'
28462 WHEN 5 THEN '540'
28463 WHEN 6 THEN '540'
28464 WHEN 7 THEN '540'
28465
28466 ELSE null
28467 END source_application_id
28468 , 'S' source_type_code
28469 , CASE r
28470 WHEN 1 THEN 'TEH_CONTRACT_NUMBER'
28471 WHEN 2 THEN 'TCN_CONTRACT_PRODUCT_NAME'
28472 WHEN 3 THEN 'TCN_CURRENCY_CODE'
28473 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE'
28474 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE'
28475 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE'
28476 WHEN 7 THEN 'GL_DATE'
28477
28478 ELSE null
28479 END source_code
28480 , CASE r
28481 WHEN 1 THEN TO_CHAR(h1.TEH_CONTRACT_NUMBER)
28482 WHEN 2 THEN TO_CHAR(h1.TCN_CONTRACT_PRODUCT_NAME)
28483 WHEN 3 THEN TO_CHAR(h1.TCN_CURRENCY_CODE)
28484 WHEN 4 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_DATE)
28485 WHEN 5 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_RATE)
28486 WHEN 6 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_TYPE)
28487 WHEN 7 THEN TO_CHAR(h1.GL_DATE)
28488
28489 ELSE null
28490 END source_value
28491 , null source_meaning
28492 FROM xla_events_gt xet
28493 , OKL_CMN_EXTRACT_HDR_V h1
28494 ,(select rownum r from all_objects where rownum <= 7 and owner = p_apps_owner)
28495 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
28496 AND xet.event_class_code = C_EVENT_CLASS_CODE
28497 AND h1.event_id = xet.event_id
28498
28499 )
28500 ;
28501 --
28502 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
28503
28504 trace
28505 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
28506 ,p_level => C_LEVEL_STATEMENT
28507 ,p_module => l_log_module);
28508
28509 END IF;
28510 --
28511
28512
28513
28514 --
28515 INSERT INTO xla_diag_sources --line2
28516 (
28517 event_id
28518 , ledger_id
28519 , sla_ledger_id
28520 , description_language
28521 , object_name
28522 , object_type_code
28523 , line_number
28524 , source_application_id
28525 , source_type_code
28526 , source_code
28527 , source_value
28528 , source_meaning
28529 , created_by
28530 , creation_date
28531 , last_update_date
28532 , last_updated_by
28533 , last_update_login
28534 , program_update_date
28535 , program_application_id
28536 , program_id
28537 , request_id
28538 )
28539 SELECT event_id
28540 , p_target_ledger_id
28541 , p_sla_ledger_id
28542 , p_language
28543 , object_name
28544 , object_type_code
28545 , line_number
28549 , SUBSTR(source_value,1,1996)
28546 , source_application_id
28547 , source_type_code
28548 , source_code
28550 , SUBSTR(source_meaning ,1,200)
28551 , xla_environment_pkg.g_Usr_Id
28552 , TRUNC(SYSDATE)
28553 , TRUNC(SYSDATE)
28554 , xla_environment_pkg.g_Usr_Id
28555 , xla_environment_pkg.g_Login_Id
28556 , TRUNC(SYSDATE)
28557 , xla_environment_pkg.g_Prog_Appl_Id
28558 , xla_environment_pkg.g_Prog_Id
28559 , xla_environment_pkg.g_Req_Id
28560 FROM (
28561 SELECT xet.event_id event_id
28562 , l2.line_number line_number
28563 , CASE r
28564 WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V'
28565 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V'
28566 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V'
28567 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V'
28568 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V'
28569
28570 ELSE null
28571 END object_name
28572 , CASE r
28573 WHEN 1 THEN 'LINE'
28574 WHEN 2 THEN 'LINE'
28575 WHEN 3 THEN 'LINE'
28576 WHEN 4 THEN 'LINE'
28577 WHEN 5 THEN 'LINE'
28578
28579 ELSE null
28580 END object_type_code
28581 , CASE r
28582 WHEN 1 THEN '540'
28583 WHEN 2 THEN '540'
28584 WHEN 3 THEN '540'
28585 WHEN 4 THEN '540'
28586 WHEN 5 THEN '540'
28587
28588 ELSE null
28589 END source_application_id
28590 , 'S' source_type_code
28591 , CASE r
28592 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID'
28593 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE'
28594 WHEN 3 THEN 'DIST_ID'
28595 WHEN 4 THEN 'DIST_TYPE'
28596 WHEN 5 THEN 'DIST_ENTERED_AMOUNT'
28597
28598 ELSE null
28599 END source_code
28600 , CASE r
28601 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
28602 WHEN 2 THEN TO_CHAR(l2.DIST_AE_LINE_TYPE_CODE)
28603 WHEN 3 THEN TO_CHAR(l2.DIST_ID)
28604 WHEN 4 THEN TO_CHAR(l2.DIST_TYPE)
28605 WHEN 5 THEN TO_CHAR(l2.DIST_ENTERED_AMOUNT)
28606
28607 ELSE null
28608 END source_value
28609 , CASE r
28610 WHEN 2 THEN fvl6.meaning
28611
28612 ELSE null
28613 END source_meaning
28614 FROM xla_events_gt xet
28615 , OKL_CMN_EXTRACT_LINE_V l2
28616 , fnd_lookup_values fvl6
28617 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
28618 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
28619 AND xet.event_class_code = C_EVENT_CLASS_CODE
28620 AND l2.event_id = xet.event_id
28621 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
28622 AND fvl6.lookup_code(+) = l2.DIST_AE_LINE_TYPE_CODE
28623 AND fvl6.view_application_id(+) = 0
28624 AND fvl6.language(+) = USERENV('LANG')
28625
28626 )
28627 ;
28628 --
28629 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
28630
28631 trace
28632 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
28633 ,p_level => C_LEVEL_STATEMENT
28634 ,p_module => l_log_module);
28635
28636 END IF;
28637
28638
28639 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28640 trace
28641 (p_msg => 'END of insert_sources_43'
28642 ,p_level => C_LEVEL_PROCEDURE
28643 ,p_module => l_log_module);
28644 END IF;
28645 EXCEPTION
28646 WHEN xla_exceptions_pkg.application_exception THEN
28647 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
28648 trace
28649 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
28650 ,p_level => C_LEVEL_EXCEPTION
28651 ,p_module => l_log_module);
28652 END IF;
28653 RAISE;
28654 WHEN OTHERS THEN
28655 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
28656 trace
28657 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
28658 ,p_level => C_LEVEL_EXCEPTION
28659 ,p_module => l_log_module);
28660 END IF;
28661 xla_exceptions_pkg.raise_message
28662 (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_43');
28663 END insert_sources_43;
28664 --
28665
28666 ---------------------------------------
28667 --
28668 -- PRIVATE FUNCTION
28669 -- EventClass_43
28670 --
28671 ----------------------------------------
28672 --
28673 FUNCTION EventClass_43
28674 (p_application_id IN NUMBER
28675 ,p_base_ledger_id IN NUMBER
28676 ,p_target_ledger_id IN NUMBER
28677 ,p_language IN VARCHAR2
28678 ,p_currency_code IN VARCHAR2
28679 ,p_sla_ledger_id IN NUMBER
28680 ,p_pad_start_date IN DATE
28681 ,p_pad_end_date IN DATE
28682 ,p_primary_ledger_id IN NUMBER)
28683 RETURN BOOLEAN IS
28684 --
28685 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'SPLIT_ASSET_ALL';
28686 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'SPLIT_ASSET';
28687
28691 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
28688 l_calculate_acctd_flag VARCHAR2(1) :='Y';
28689 l_calculate_g_l_flag VARCHAR2(1) :='Y';
28690 --
28692 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
28693 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
28694 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
28695 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
28696 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
28697 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
28698 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
28699 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
28700 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
28701 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
28702 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
28703 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
28704 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
28705 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
28706 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
28707 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
28708 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
28709 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
28710 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
28711 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
28712 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
28713 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
28714 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
28715
28716 l_event_id NUMBER;
28717 l_previous_event_id NUMBER;
28718 l_first_event_id NUMBER;
28719 l_last_event_id NUMBER;
28720
28721 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
28722 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
28723 --
28724 --
28725 l_result BOOLEAN := TRUE;
28726 l_rows NUMBER := 1000;
28727 l_event_type_name VARCHAR2(80) := 'All';
28728 l_event_class_name VARCHAR2(80) := 'Split Asset';
28729 l_description VARCHAR2(4000);
28730 l_transaction_reversal NUMBER;
28731 l_ae_header_id NUMBER;
28732 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
28733 l_log_module VARCHAR2(240);
28734 --
28735 l_acct_reversal_source VARCHAR2(30);
28736 l_trx_reversal_source VARCHAR2(30);
28737
28738 l_continue_with_lines BOOLEAN := TRUE;
28739 --
28740 l_acc_rev_gl_date_source DATE; -- 4262811
28741 --
28742 type t_array_event_id is table of number index by binary_integer;
28743
28744 l_rec_array_event t_rec_array_event;
28745 l_null_rec_array_event t_rec_array_event;
28746 l_array_ae_header_id xla_number_array_type;
28747 l_actual_flag VARCHAR2(1) := NULL;
28748 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
28749 l_balance_type_code VARCHAR2(1) :=NULL;
28750 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
28751
28752 --
28753 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
28754 --
28755
28756 TYPE t_array_source_1 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TEH_CONTRACT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
28757 TYPE t_array_source_2 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CONTRACT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
28758 TYPE t_array_source_10 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
28759 TYPE t_array_source_11 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
28760 TYPE t_array_source_12 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
28761 TYPE t_array_source_13 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
28762 TYPE t_array_source_15 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
28763
28764 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
28765 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
28766 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
28767 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
28768 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
28769
28770 l_array_source_1 t_array_source_1;
28771 l_array_source_2 t_array_source_2;
28772 l_array_source_10 t_array_source_10;
28773 l_array_source_11 t_array_source_11;
28774 l_array_source_12 t_array_source_12;
28775 l_array_source_13 t_array_source_13;
28776 l_array_source_15 t_array_source_15;
28777
28778 l_array_source_5 t_array_source_5;
28779 l_array_source_6 t_array_source_6;
28780 l_array_source_6_meaning t_array_lookup_meaning;
28781 l_array_source_7 t_array_source_7;
28782 l_array_source_8 t_array_source_8;
28783 l_array_source_9 t_array_source_9;
28784
28785 --
28786 CURSOR header_cur
28787 IS
28788 SELECT /*+ leading(xet) cardinality(xet,1) */
28789 -- Event Class Code: SPLIT_ASSET
28790 xet.entity_id
28791 ,xet.legal_entity_id
28792 ,xet.entity_code
28793 ,xet.transaction_number
28797 ,xet.event_number
28794 ,xet.event_id
28795 ,xet.event_class_code
28796 ,xet.event_type_code
28798 ,xet.event_date
28799 ,xet.transaction_date
28800 ,xet.reference_num_1
28801 ,xet.reference_num_2
28802 ,xet.reference_num_3
28803 ,xet.reference_num_4
28804 ,xet.reference_char_1
28805 ,xet.reference_char_2
28806 ,xet.reference_char_3
28807 ,xet.reference_char_4
28808 ,xet.reference_date_1
28809 ,xet.reference_date_2
28810 ,xet.reference_date_3
28811 ,xet.reference_date_4
28812 ,xet.event_created_by
28813 ,xet.budgetary_control_flag
28814 , h1.TEH_CONTRACT_NUMBER source_1
28815 , h1.TCN_CONTRACT_PRODUCT_NAME source_2
28816 , h1.TCN_CURRENCY_CODE source_10
28817 , h1.TCN_CURR_CONVERSION_DATE source_11
28818 , h1.TCN_CURR_CONVERSION_RATE source_12
28819 , h1.TCN_CURR_CONVERSION_TYPE source_13
28820 , h1.GL_DATE source_15
28821 FROM xla_events_gt xet
28822 , OKL_CMN_EXTRACT_HDR_V h1
28823 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
28824 and xet.event_class_code = C_EVENT_CLASS_CODE
28825 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
28826
28827 ORDER BY event_id
28828 ;
28829
28830
28831 --
28832 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
28833 IS
28834 SELECT /*+ leading(xet) cardinality(xet,1) */
28835 -- Event Class Code: SPLIT_ASSET
28836 xet.entity_id
28837 ,xet.legal_entity_id
28838 ,xet.entity_code
28839 ,xet.transaction_number
28840 ,xet.event_id
28841 ,xet.event_class_code
28842 ,xet.event_type_code
28843 ,xet.event_number
28844 ,xet.event_date
28845 ,xet.transaction_date
28846 ,xet.reference_num_1
28847 ,xet.reference_num_2
28848 ,xet.reference_num_3
28849 ,xet.reference_num_4
28850 ,xet.reference_char_1
28851 ,xet.reference_char_2
28852 ,xet.reference_char_3
28853 ,xet.reference_char_4
28854 ,xet.reference_date_1
28855 ,xet.reference_date_2
28856 ,xet.reference_date_3
28857 ,xet.reference_date_4
28858 ,xet.event_created_by
28859 ,xet.budgetary_control_flag
28860 , l2.LINE_NUMBER
28861 , l2.DIST_CODE_COMBINATION_ID source_5
28862 , l2.DIST_AE_LINE_TYPE_CODE source_6
28863 , fvl6.meaning source_6_meaning
28864 , l2.DIST_ID source_7
28865 , l2.DIST_TYPE source_8
28866 , l2.DIST_ENTERED_AMOUNT source_9
28867 FROM xla_events_gt xet
28868 , OKL_CMN_EXTRACT_LINE_V l2
28869 , fnd_lookup_values fvl6
28870 WHERE xet.event_id between x_first_event_id and x_last_event_id
28871 and xet.event_date between p_pad_start_date and p_pad_end_date
28872 and xet.event_class_code = C_EVENT_CLASS_CODE
28873 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
28874 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
28875 AND fvl6.lookup_code(+) = l2.DIST_AE_LINE_TYPE_CODE
28876 AND fvl6.view_application_id(+) = 0
28877 AND fvl6.language(+) = USERENV('LANG')
28878 ;
28879
28880 --
28881 BEGIN
28882 IF g_log_enabled THEN
28883 l_log_module := C_DEFAULT_MODULE||'.EventClass_43';
28884 END IF;
28885 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28886 trace
28887 (p_msg => 'BEGIN of EventClass_43'
28888 ,p_level => C_LEVEL_PROCEDURE
28889 ,p_module => l_log_module);
28890 END IF;
28891
28892 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
28893 trace
28894 (p_msg => 'p_application_id = '||p_application_id||
28895 ' - p_base_ledger_id = '||p_base_ledger_id||
28896 ' - p_target_ledger_id = '||p_target_ledger_id||
28897 ' - p_language = '||p_language||
28898 ' - p_currency_code = '||p_currency_code||
28899 ' - p_sla_ledger_id = '||p_sla_ledger_id
28900 ,p_level => C_LEVEL_STATEMENT
28901 ,p_module => l_log_module);
28902 END IF;
28903 --
28904 -- initialze arrays
28905 --
28906 g_array_event.DELETE;
28907 l_rec_array_event := l_null_rec_array_event;
28908 --
28909 --------------------------------------
28910 -- 4262811 Initialze MPA Line Number
28911 --------------------------------------
28912 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
28913
28914 --
28915
28916 --
28917 OPEN header_cur;
28918 --
28919 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
28920 trace
28921 (p_msg => 'SQL - FETCH header_cur'
28922 ,p_level => C_LEVEL_STATEMENT
28923 ,p_module => l_log_module);
28924 END IF;
28925 --
28926 LOOP
28927 FETCH header_cur BULK COLLECT INTO
28928 l_array_entity_id
28929 , l_array_legal_entity_id
28930 , l_array_entity_code
28931 , l_array_transaction_num
28932 , l_array_event_id
28933 , l_array_class_code
28934 , l_array_event_type
28935 , l_array_event_number
28936 , l_array_event_date
28937 , l_array_transaction_date
28938 , l_array_reference_num_1
28939 , l_array_reference_num_2
28940 , l_array_reference_num_3
28941 , l_array_reference_num_4
28942 , l_array_reference_char_1
28943 , l_array_reference_char_2
28944 , l_array_reference_char_3
28945 , l_array_reference_char_4
28946 , l_array_reference_date_1
28947 , l_array_reference_date_2
28948 , l_array_reference_date_3
28949 , l_array_reference_date_4
28950 , l_array_event_created_by
28951 , l_array_budgetary_control_flag
28952 , l_array_source_1
28953 , l_array_source_2
28954 , l_array_source_10
28958 , l_array_source_15
28955 , l_array_source_11
28956 , l_array_source_12
28957 , l_array_source_13
28959 LIMIT l_rows;
28960 --
28961 IF (C_LEVEL_EVENT >= g_log_level) THEN
28962 trace
28963 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
28964 ,p_level => C_LEVEL_EVENT
28965 ,p_module => l_log_module);
28966 END IF;
28967 --
28968 EXIT WHEN l_array_entity_id.COUNT = 0;
28969
28970 -- initialize arrays
28971 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
28972 XLA_AE_LINES_PKG.g_rec_lines := NULL;
28973
28974 --
28975 -- Bug 4458708
28976 --
28977 XLA_AE_LINES_PKG.g_LineNumber := 0;
28978
28979
28980 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
28981 g_last_hdr_idx := l_array_event_id.LAST;
28982 --
28983 -- loop for the headers. Each iteration is for each header extract row
28984 -- fetched in header cursor
28985 --
28986 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
28987
28988 --
28989 -- set event info as cache for other routines to refer event attributes
28990 --
28991 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
28992 (p_application_id => p_application_id
28993 ,p_primary_ledger_id => p_primary_ledger_id
28994 ,p_base_ledger_id => p_base_ledger_id
28995 ,p_target_ledger_id => p_target_ledger_id
28996 ,p_entity_id => l_array_entity_id(hdr_idx)
28997 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
28998 ,p_entity_code => l_array_entity_code(hdr_idx)
28999 ,p_transaction_num => l_array_transaction_num(hdr_idx)
29000 ,p_event_id => l_array_event_id(hdr_idx)
29001 ,p_event_class_code => l_array_class_code(hdr_idx)
29002 ,p_event_type_code => l_array_event_type(hdr_idx)
29003 ,p_event_number => l_array_event_number(hdr_idx)
29004 ,p_event_date => l_array_event_date(hdr_idx)
29005 ,p_transaction_date => l_array_transaction_date(hdr_idx)
29006 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
29007 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
29008 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
29009 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
29010 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
29011 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
29012 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
29013 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
29014 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
29015 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
29016 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
29017 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
29018 ,p_event_created_by => l_array_event_created_by(hdr_idx)
29019 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
29020
29021 --
29022 -- set the status of entry to C_VALID (0)
29023 --
29024 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
29025
29026 --
29027 -- initialize a row for ae header
29028 --
29029 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
29030
29031 l_event_id := l_array_event_id(hdr_idx);
29032
29033 --
29034 -- storing the hdr_idx for event. May be used by line cursor.
29035 --
29036 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
29037
29038 --
29039 -- store sources from header extract. This can be improved to
29040 -- store only those sources from header extract that may be used in lines
29041 --
29042
29043 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
29044 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
29045 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
29046 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
29047 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
29048 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
29049 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
29050
29051 --
29052 -- initilaize the status of ae headers for diffrent balance types
29053 -- the status is initialised to C_NOT_CREATED (2)
29054 --
29055 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
29056 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
29057 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
29058
29059 --
29060 -- call api to validate and store accounting attributes for header
29061 --
29062
29063 ------------------------------------------------------------
29064 -- Accrual Reversal : to get date for Standard Source (NONE)
29065 ------------------------------------------------------------
29066 l_acc_rev_gl_date_source := NULL;
29067
29068 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
29069 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
29070
29071
29072 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
29073
29074 XLA_AE_HEADER_PKG.SetJeCategoryName;
29075
29076 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
29077 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
29078 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
29082
29079 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
29080 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
29081
29083 -- No header level analytical criteria
29084
29085 --
29086 --accounting attribute enhancement, bug 3612931
29087 --
29088 l_trx_reversal_source := SUBSTR(NULL, 1,30);
29089
29090 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
29091 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
29092
29093 xla_accounting_err_pkg.build_message
29094 (p_appli_s_name => 'XLA'
29095 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
29096 ,p_token_1 => 'ACCT_ATTR_NAME'
29097 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
29098 ,p_token_2 => 'PRODUCT_NAME'
29099 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
29100 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
29101 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
29102 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
29103
29104 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
29105 --
29106 -- following sets the accounting attributes needed to reverse
29107 -- accounting for a distributeion
29108 --
29109 xla_ae_lines_pkg.SetTrxReversalAttrs
29110 (p_event_id => l_event_id
29111 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
29112 ,p_trx_reversal_source => l_trx_reversal_source);
29113
29114 END IF;
29115
29116
29117 ----------------------------------------------------------------
29118 -- 4262811 - update the header statuses to invalid in need be
29119 ----------------------------------------------------------------
29120 --
29121 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
29122
29123
29124 -----------------------------------------------
29125 -- No accrual reversal for the event class/type
29126 -----------------------------------------------
29127 ----------------------------------------------------------------
29128
29129 --
29130 -- this ends the header loop iteration for one bulk fetch
29131 --
29132 END LOOP;
29133
29134 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
29135 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
29136
29137 --
29138 -- insert dummy rows into lines gt table that were created due to
29139 -- transaction reversals
29140 --
29141 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
29142 l_result := XLA_AE_LINES_PKG.InsertLines;
29143 END IF;
29144
29145 --
29146 -- reset the temp_line_num for each set of events fetched from header
29147 -- cursor rather than doing it for each new event in line cursor
29148 -- Bug 3939231
29149 --
29150 xla_ae_lines_pkg.g_temp_line_num := 0;
29151
29152
29153
29154 --
29155 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
29156 --
29157 --
29158 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
29159
29160 trace
29161 (p_msg => 'SQL - FETCH line_cur'
29162 ,p_level => C_LEVEL_STATEMENT
29163 ,p_module => l_log_module);
29164
29165 END IF;
29166 --
29167 --
29168 LOOP
29169 --
29170 FETCH line_cur BULK COLLECT INTO
29171 l_array_entity_id
29172 , l_array_legal_entity_id
29173 , l_array_entity_code
29174 , l_array_transaction_num
29175 , l_array_event_id
29176 , l_array_class_code
29177 , l_array_event_type
29178 , l_array_event_number
29179 , l_array_event_date
29180 , l_array_transaction_date
29181 , l_array_reference_num_1
29182 , l_array_reference_num_2
29183 , l_array_reference_num_3
29184 , l_array_reference_num_4
29185 , l_array_reference_char_1
29186 , l_array_reference_char_2
29187 , l_array_reference_char_3
29188 , l_array_reference_char_4
29189 , l_array_reference_date_1
29190 , l_array_reference_date_2
29191 , l_array_reference_date_3
29192 , l_array_reference_date_4
29193 , l_array_event_created_by
29194 , l_array_budgetary_control_flag
29195 , l_array_extract_line_num
29196 , l_array_source_5
29197 , l_array_source_6
29198 , l_array_source_6_meaning
29199 , l_array_source_7
29200 , l_array_source_8
29201 , l_array_source_9
29202 LIMIT l_rows;
29203
29204 --
29205 IF (C_LEVEL_EVENT >= g_log_level) THEN
29206 trace
29207 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
29208 ,p_level => C_LEVEL_EVENT
29209 ,p_module => l_log_module);
29210 END IF;
29211 --
29212 EXIT WHEN l_array_entity_id.count = 0;
29213
29214 XLA_AE_LINES_PKG.g_rec_lines := null;
29215
29216 --
29217 -- Bug 4458708
29218 --
29219 XLA_AE_LINES_PKG.g_LineNumber := 0;
29220 --
29221 --
29222
29223 FOR Idx IN 1..l_array_event_id.count LOOP
29224 --
29225 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
29226 --
29227 l_event_id := l_array_event_id(idx); -- 5648433
29228
29229 --
29230 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
29231 --
29232
29233 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
29237 THEN
29234 (g_array_event(l_event_id).array_value_num('header_index'))
29235 ,'N'
29236 ) <> 'Y'
29238 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
29239 trace
29240 (p_msg => 'Trancaction revesal option is not Y '
29241 ,p_level => C_LEVEL_STATEMENT
29242 ,p_module => l_log_module);
29243 END IF;
29244
29245 --
29246 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
29247 --
29248 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
29249 --
29250 -- set event info as cache for other routines to refer event attributes
29251 --
29252
29253 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
29254 l_previous_event_id := l_event_id;
29255
29256 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
29257 (p_application_id => p_application_id
29258 ,p_primary_ledger_id => p_primary_ledger_id
29259 ,p_base_ledger_id => p_base_ledger_id
29260 ,p_target_ledger_id => p_target_ledger_id
29261 ,p_entity_id => l_array_entity_id(Idx)
29262 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
29263 ,p_entity_code => l_array_entity_code(Idx)
29264 ,p_transaction_num => l_array_transaction_num(Idx)
29265 ,p_event_id => l_array_event_id(Idx)
29266 ,p_event_class_code => l_array_class_code(Idx)
29267 ,p_event_type_code => l_array_event_type(Idx)
29268 ,p_event_number => l_array_event_number(Idx)
29269 ,p_event_date => l_array_event_date(Idx)
29270 ,p_transaction_date => l_array_transaction_date(Idx)
29271 ,p_reference_num_1 => l_array_reference_num_1(Idx)
29272 ,p_reference_num_2 => l_array_reference_num_2(Idx)
29273 ,p_reference_num_3 => l_array_reference_num_3(Idx)
29274 ,p_reference_num_4 => l_array_reference_num_4(Idx)
29275 ,p_reference_char_1 => l_array_reference_char_1(Idx)
29276 ,p_reference_char_2 => l_array_reference_char_2(Idx)
29277 ,p_reference_char_3 => l_array_reference_char_3(Idx)
29278 ,p_reference_char_4 => l_array_reference_char_4(Idx)
29279 ,p_reference_date_1 => l_array_reference_date_1(Idx)
29280 ,p_reference_date_2 => l_array_reference_date_2(Idx)
29281 ,p_reference_date_3 => l_array_reference_date_3(Idx)
29282 ,p_reference_date_4 => l_array_reference_date_4(Idx)
29283 ,p_event_created_by => l_array_event_created_by(Idx)
29284 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
29285 --
29286 END IF;
29287
29288
29289
29290 --
29291 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
29292
29293 l_acct_reversal_source := SUBSTR(NULL, 1,30);
29294
29295 IF l_continue_with_lines THEN
29296 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
29297 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
29298
29299 xla_accounting_err_pkg.build_message
29300 (p_appli_s_name => 'XLA'
29301 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
29302 ,p_token_1 => 'LINE_NUMBER'
29303 ,p_value_1 => l_array_extract_line_num(Idx)
29304 ,p_token_2 => 'PRODUCT_NAME'
29305 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
29306 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
29307 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
29308 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
29309
29310 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
29311 --
29312 -- following sets the accounting attributes needed to reverse
29313 -- accounting for a distributeion
29314 --
29315
29316 --
29317 -- 5217187
29318 --
29319 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
29320 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
29321 g_array_event(l_event_id).array_value_num('header_index'));
29322 --
29323 --
29324
29325 -- No reversal code generated
29326
29327 xla_ae_lines_pkg.SetAcctReversalAttrs
29328 (p_event_id => l_event_id
29329 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
29330 ,p_calculate_acctd_flag => l_calculate_acctd_flag
29331 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
29332 END IF;
29333
29334 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
29335 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
29336
29337 --
29338 AcctLineType_26 (
29339 p_application_id => p_application_id
29340 ,p_event_id => l_event_id
29341 ,p_calculate_acctd_flag => l_calculate_acctd_flag
29342 ,p_calculate_g_l_flag => l_calculate_g_l_flag
29343 ,p_actual_flag => l_actual_flag
29344 ,p_balance_type_code => l_balance_type_code
29345 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
29346
29347 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
29348 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
29349 , p_source_5 => l_array_source_5(Idx)
29350 , p_source_6 => l_array_source_6(Idx)
29351 , p_source_6_meaning => l_array_source_6_meaning(Idx)
29352 , p_source_7 => l_array_source_7(Idx)
29353 , p_source_8 => l_array_source_8(Idx)
29354 , p_source_9 => l_array_source_9(Idx)
29355 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
29359 );
29356 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
29357 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
29358 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
29360 If(l_balance_type_code = 'A') THEN
29361 l_actual_gain_loss_ref := l_gain_or_loss_ref;
29362 END IF;
29363
29364 --
29365
29366
29367 --
29368 AcctLineType_27 (
29369 p_application_id => p_application_id
29370 ,p_event_id => l_event_id
29371 ,p_calculate_acctd_flag => l_calculate_acctd_flag
29372 ,p_calculate_g_l_flag => l_calculate_g_l_flag
29373 ,p_actual_flag => l_actual_flag
29374 ,p_balance_type_code => l_balance_type_code
29375 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
29376
29377 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
29378 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
29379 , p_source_5 => l_array_source_5(Idx)
29380 , p_source_6 => l_array_source_6(Idx)
29381 , p_source_6_meaning => l_array_source_6_meaning(Idx)
29382 , p_source_7 => l_array_source_7(Idx)
29383 , p_source_8 => l_array_source_8(Idx)
29384 , p_source_9 => l_array_source_9(Idx)
29385 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
29386 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
29387 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
29388 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
29389 );
29390 If(l_balance_type_code = 'A') THEN
29391 l_actual_gain_loss_ref := l_gain_or_loss_ref;
29392 END IF;
29393
29394 --
29395
29396 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
29397 -- or secondary ledger that has different currency with primary
29398 -- or alc that is calculated by sla
29399 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
29400 (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'))
29401
29402 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
29403 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
29404 AND (l_actual_flag = 'A')) THEN
29405 XLA_AE_LINES_PKG.CreateGainOrLossLines(
29406 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
29407 ,p_application_id => p_application_id
29408 ,p_amb_context_code => 'DEFAULT'
29409 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
29410 ,p_event_class_code => C_EVENT_CLASS_CODE
29411 ,p_event_type_code => C_EVENT_TYPE_CODE
29412
29413 ,p_gain_ccid => -1
29414 ,p_loss_ccid => -1
29415
29416 ,p_actual_flag => l_actual_flag
29417 ,p_enc_flag => null
29418 ,p_actual_g_l_ref => l_actual_gain_loss_ref
29419 ,p_enc_g_l_ref => null
29420 );
29421 END IF;
29422 END IF;
29423 END IF;
29424
29425 ELSE
29426 --
29427 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
29428 --
29429 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
29430 trace
29431 (p_msg => 'Trancaction revesal option is Y'
29432 ,p_level => C_LEVEL_STATEMENT
29433 ,p_module => l_log_module);
29434 END IF;
29435 END IF;
29436
29437 END LOOP;
29438 l_result := XLA_AE_LINES_PKG.InsertLines ;
29439 end loop;
29440 close line_cur;
29441
29442
29443 --
29444 -- insert headers into xla_ae_headers_gt table
29445 --
29446 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
29447
29448 -- insert into errors table here.
29449
29450 END LOOP;
29451
29452 --
29453 -- 4865292
29454 --
29455 -- Compare g_hdr_extract_count with event count in
29456 -- CreateHeadersAndLines.
29457 --
29458 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
29459
29460 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
29461 trace (p_msg => '# rows extracted from header extract objects '
29462 || ' (running total): '
29463 || g_hdr_extract_count
29464 ,p_level => C_LEVEL_STATEMENT
29465 ,p_module => l_log_module);
29466 END IF;
29467
29468 CLOSE header_cur;
29469 --
29470
29471 --
29472 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29473 trace
29474 (p_msg => 'END of EventClass_43'
29475 ,p_level => C_LEVEL_PROCEDURE
29476 ,p_module => l_log_module);
29477 END IF;
29478 --
29479 RETURN l_result;
29480 EXCEPTION
29481 WHEN xla_exceptions_pkg.application_exception THEN
29482
29483 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
29484
29485
29486 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
29487
29488 RAISE;
29489 WHEN OTHERS THEN
29490 xla_exceptions_pkg.raise_message
29491 (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_43');
29492 END EventClass_43;
29493 --
29494
29495 ---------------------------------------
29496 --
29497 -- PRIVATE PROCEDURE
29498 -- insert_sources_44
29499 --
29500 ----------------------------------------
29501 --
29502 PROCEDURE insert_sources_44(
29503 p_target_ledger_id IN NUMBER
29504 , p_language IN VARCHAR2
29505 , p_sla_ledger_id IN NUMBER
29506 , p_pad_start_date IN DATE
29510
29507 , p_pad_end_date IN DATE
29508 )
29509 IS
29511 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'TERMINATION_ALL';
29512 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'TERMINATION';
29513 p_apps_owner VARCHAR2(30);
29514 l_log_module VARCHAR2(240);
29515 BEGIN
29516 IF g_log_enabled THEN
29517 l_log_module := C_DEFAULT_MODULE||'.insert_sources_44';
29518 END IF;
29519 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29520
29521 trace
29522 (p_msg => 'BEGIN of insert_sources_44'
29523 ,p_level => C_LEVEL_PROCEDURE
29524 ,p_module => l_log_module);
29525
29526 END IF;
29527
29528 -- select APPS owner
29529 SELECT oracle_username
29530 INTO p_apps_owner
29531 FROM fnd_oracle_userid
29532 WHERE read_only_flag = 'U'
29533 ;
29534
29535 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
29536 trace
29537 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
29538 ' - p_language = '||p_language||
29539 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
29540 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
29541 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
29542 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
29543 ,p_level => C_LEVEL_STATEMENT
29544 ,p_module => l_log_module);
29545 END IF;
29546
29547
29548 --
29549 INSERT INTO xla_diag_sources --hdr2
29550 (
29551 event_id
29552 , ledger_id
29553 , sla_ledger_id
29554 , description_language
29555 , object_name
29556 , object_type_code
29557 , line_number
29558 , source_application_id
29559 , source_type_code
29560 , source_code
29561 , source_value
29562 , source_meaning
29563 , created_by
29564 , creation_date
29565 , last_update_date
29566 , last_updated_by
29567 , last_update_login
29568 , program_update_date
29569 , program_application_id
29570 , program_id
29571 , request_id
29572 )
29573 SELECT
29574 event_id
29575 , p_target_ledger_id
29576 , p_sla_ledger_id
29577 , p_language
29578 , object_name
29579 , object_type_code
29580 , line_number
29581 , source_application_id
29582 , source_type_code
29583 , source_code
29584 , SUBSTR(source_value ,1,1996)
29585 , SUBSTR(source_meaning ,1,200)
29586 , xla_environment_pkg.g_Usr_Id
29587 , TRUNC(SYSDATE)
29588 , TRUNC(SYSDATE)
29589 , xla_environment_pkg.g_Usr_Id
29590 , xla_environment_pkg.g_Login_Id
29591 , TRUNC(SYSDATE)
29592 , xla_environment_pkg.g_Prog_Appl_Id
29593 , xla_environment_pkg.g_Prog_Id
29594 , xla_environment_pkg.g_Req_Id
29595 FROM (
29596 SELECT xet.event_id event_id
29597 , 0 line_number
29598 , CASE r
29599 WHEN 1 THEN 'OKL_CMN_EXTRACT_HDR_V'
29600 WHEN 2 THEN 'OKL_CMN_EXTRACT_HDR_V'
29601 WHEN 3 THEN 'OKL_CMN_EXTRACT_HDR_V'
29602 WHEN 4 THEN 'OKL_CMN_EXTRACT_HDR_V'
29603 WHEN 5 THEN 'OKL_CMN_EXTRACT_HDR_V'
29604 WHEN 6 THEN 'OKL_CMN_EXTRACT_HDR_V'
29605 WHEN 7 THEN 'OKL_CMN_EXTRACT_HDR_V'
29606 WHEN 8 THEN 'OKL_CMN_EXTRACT_HDR_V'
29607
29608 ELSE null
29609 END object_name
29610 , CASE r
29611 WHEN 1 THEN 'HEADER'
29612 WHEN 2 THEN 'HEADER'
29613 WHEN 3 THEN 'HEADER'
29614 WHEN 4 THEN 'HEADER'
29615 WHEN 5 THEN 'HEADER'
29616 WHEN 6 THEN 'HEADER'
29617 WHEN 7 THEN 'HEADER'
29618 WHEN 8 THEN 'HEADER'
29619
29620 ELSE null
29621 END object_type_code
29622 , CASE r
29623 WHEN 1 THEN '540'
29624 WHEN 2 THEN '540'
29625 WHEN 3 THEN '540'
29626 WHEN 4 THEN '540'
29627 WHEN 5 THEN '540'
29628 WHEN 6 THEN '540'
29629 WHEN 7 THEN '540'
29630 WHEN 8 THEN '540'
29631
29632 ELSE null
29633 END source_application_id
29634 , 'S' source_type_code
29635 , CASE r
29636 WHEN 1 THEN 'TEH_CONTRACT_NUMBER'
29637 WHEN 2 THEN 'TCN_CONTRACT_PRODUCT_NAME'
29638 WHEN 3 THEN 'TCN_CURRENCY_CODE'
29639 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE'
29640 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE'
29641 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE'
29642 WHEN 7 THEN 'GL_DATE'
29643 WHEN 8 THEN 'TCN_ACCOUNTING_REVERSAL_FLAG'
29644
29645 ELSE null
29646 END source_code
29647 , CASE r
29648 WHEN 1 THEN TO_CHAR(h1.TEH_CONTRACT_NUMBER)
29649 WHEN 2 THEN TO_CHAR(h1.TCN_CONTRACT_PRODUCT_NAME)
29650 WHEN 3 THEN TO_CHAR(h1.TCN_CURRENCY_CODE)
29651 WHEN 4 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_DATE)
29652 WHEN 5 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_RATE)
29653 WHEN 6 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_TYPE)
29657 ELSE null
29654 WHEN 7 THEN TO_CHAR(h1.GL_DATE)
29655 WHEN 8 THEN TO_CHAR(h1.TCN_ACCOUNTING_REVERSAL_FLAG)
29656
29658 END source_value
29659 , null source_meaning
29660 FROM xla_events_gt xet
29661 , OKL_CMN_EXTRACT_HDR_V h1
29662 ,(select rownum r from all_objects where rownum <= 8 and owner = p_apps_owner)
29663 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
29664 AND xet.event_class_code = C_EVENT_CLASS_CODE
29665 AND h1.event_id = xet.event_id
29666
29667 )
29668 ;
29669 --
29670 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
29671
29672 trace
29673 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
29674 ,p_level => C_LEVEL_STATEMENT
29675 ,p_module => l_log_module);
29676
29677 END IF;
29678 --
29679
29680
29681
29682 --
29683 INSERT INTO xla_diag_sources --line2
29684 (
29685 event_id
29686 , ledger_id
29687 , sla_ledger_id
29688 , description_language
29689 , object_name
29690 , object_type_code
29691 , line_number
29692 , source_application_id
29693 , source_type_code
29694 , source_code
29695 , source_value
29696 , source_meaning
29697 , created_by
29698 , creation_date
29699 , last_update_date
29700 , last_updated_by
29701 , last_update_login
29702 , program_update_date
29703 , program_application_id
29704 , program_id
29705 , request_id
29706 )
29707 SELECT event_id
29708 , p_target_ledger_id
29709 , p_sla_ledger_id
29710 , p_language
29711 , object_name
29712 , object_type_code
29713 , line_number
29714 , source_application_id
29715 , source_type_code
29716 , source_code
29717 , SUBSTR(source_value,1,1996)
29718 , SUBSTR(source_meaning ,1,200)
29719 , xla_environment_pkg.g_Usr_Id
29720 , TRUNC(SYSDATE)
29721 , TRUNC(SYSDATE)
29722 , xla_environment_pkg.g_Usr_Id
29723 , xla_environment_pkg.g_Login_Id
29724 , TRUNC(SYSDATE)
29725 , xla_environment_pkg.g_Prog_Appl_Id
29726 , xla_environment_pkg.g_Prog_Id
29727 , xla_environment_pkg.g_Req_Id
29728 FROM (
29729 SELECT xet.event_id event_id
29730 , l2.line_number line_number
29731 , CASE r
29732 WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V'
29733 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V'
29734 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V'
29735 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V'
29736 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V'
29737
29738 ELSE null
29739 END object_name
29740 , CASE r
29741 WHEN 1 THEN 'LINE'
29742 WHEN 2 THEN 'LINE'
29743 WHEN 3 THEN 'LINE'
29744 WHEN 4 THEN 'LINE'
29745 WHEN 5 THEN 'LINE'
29746
29747 ELSE null
29748 END object_type_code
29749 , CASE r
29750 WHEN 1 THEN '540'
29751 WHEN 2 THEN '540'
29752 WHEN 3 THEN '540'
29753 WHEN 4 THEN '540'
29754 WHEN 5 THEN '540'
29755
29756 ELSE null
29757 END source_application_id
29758 , 'S' source_type_code
29759 , CASE r
29760 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID'
29761 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE'
29762 WHEN 3 THEN 'DIST_ID'
29763 WHEN 4 THEN 'DIST_TYPE'
29764 WHEN 5 THEN 'DIST_ENTERED_AMOUNT'
29765
29766 ELSE null
29767 END source_code
29768 , CASE r
29769 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
29770 WHEN 2 THEN TO_CHAR(l2.DIST_AE_LINE_TYPE_CODE)
29771 WHEN 3 THEN TO_CHAR(l2.DIST_ID)
29772 WHEN 4 THEN TO_CHAR(l2.DIST_TYPE)
29773 WHEN 5 THEN TO_CHAR(l2.DIST_ENTERED_AMOUNT)
29774
29775 ELSE null
29776 END source_value
29777 , CASE r
29778 WHEN 2 THEN fvl6.meaning
29779
29780 ELSE null
29781 END source_meaning
29782 FROM xla_events_gt xet
29783 , OKL_CMN_EXTRACT_LINE_V l2
29784 , fnd_lookup_values fvl6
29785 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
29786 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
29787 AND xet.event_class_code = C_EVENT_CLASS_CODE
29788 AND l2.event_id = xet.event_id
29789 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
29790 AND fvl6.lookup_code(+) = l2.DIST_AE_LINE_TYPE_CODE
29791 AND fvl6.view_application_id(+) = 0
29792 AND fvl6.language(+) = USERENV('LANG')
29793
29794 )
29795 ;
29796 --
29797 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
29798
29799 trace
29800 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
29801 ,p_level => C_LEVEL_STATEMENT
29802 ,p_module => l_log_module);
29803
29807 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29804 END IF;
29805
29806
29808 trace
29809 (p_msg => 'END of insert_sources_44'
29810 ,p_level => C_LEVEL_PROCEDURE
29811 ,p_module => l_log_module);
29812 END IF;
29813 EXCEPTION
29814 WHEN xla_exceptions_pkg.application_exception THEN
29815 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
29816 trace
29817 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
29818 ,p_level => C_LEVEL_EXCEPTION
29819 ,p_module => l_log_module);
29820 END IF;
29821 RAISE;
29822 WHEN OTHERS THEN
29823 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
29824 trace
29825 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
29826 ,p_level => C_LEVEL_EXCEPTION
29827 ,p_module => l_log_module);
29828 END IF;
29829 xla_exceptions_pkg.raise_message
29830 (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_44');
29831 END insert_sources_44;
29832 --
29833
29834 ---------------------------------------
29835 --
29836 -- PRIVATE FUNCTION
29837 -- EventClass_44
29838 --
29839 ----------------------------------------
29840 --
29841 FUNCTION EventClass_44
29842 (p_application_id IN NUMBER
29843 ,p_base_ledger_id IN NUMBER
29844 ,p_target_ledger_id IN NUMBER
29845 ,p_language IN VARCHAR2
29846 ,p_currency_code IN VARCHAR2
29847 ,p_sla_ledger_id IN NUMBER
29848 ,p_pad_start_date IN DATE
29849 ,p_pad_end_date IN DATE
29850 ,p_primary_ledger_id IN NUMBER)
29851 RETURN BOOLEAN IS
29852 --
29853 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'TERMINATION_ALL';
29854 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'TERMINATION';
29855
29856 l_calculate_acctd_flag VARCHAR2(1) :='Y';
29857 l_calculate_g_l_flag VARCHAR2(1) :='Y';
29858 --
29859 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
29860 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
29861 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
29862 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
29863 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
29864 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
29865 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
29866 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
29867 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
29868 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
29869 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
29870 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
29871 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
29872 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
29873 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
29874 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
29875 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
29876 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
29877 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
29878 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
29879 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
29880 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
29881 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
29882 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
29883
29884 l_event_id NUMBER;
29885 l_previous_event_id NUMBER;
29886 l_first_event_id NUMBER;
29887 l_last_event_id NUMBER;
29888
29889 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
29890 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
29891 --
29892 --
29893 l_result BOOLEAN := TRUE;
29894 l_rows NUMBER := 1000;
29895 l_event_type_name VARCHAR2(80) := 'All';
29896 l_event_class_name VARCHAR2(80) := 'Termination';
29897 l_description VARCHAR2(4000);
29898 l_transaction_reversal NUMBER;
29899 l_ae_header_id NUMBER;
29900 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
29901 l_log_module VARCHAR2(240);
29902 --
29903 l_acct_reversal_source VARCHAR2(30);
29904 l_trx_reversal_source VARCHAR2(30);
29905
29906 l_continue_with_lines BOOLEAN := TRUE;
29907 --
29908 l_acc_rev_gl_date_source DATE; -- 4262811
29909 --
29910 type t_array_event_id is table of number index by binary_integer;
29911
29912 l_rec_array_event t_rec_array_event;
29913 l_null_rec_array_event t_rec_array_event;
29914 l_array_ae_header_id xla_number_array_type;
29915 l_actual_flag VARCHAR2(1) := NULL;
29916 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
29917 l_balance_type_code VARCHAR2(1) :=NULL;
29918 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
29919
29920 --
29921 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
29922 --
29923
29924 TYPE t_array_source_1 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TEH_CONTRACT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
29928 TYPE t_array_source_12 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
29925 TYPE t_array_source_2 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CONTRACT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
29926 TYPE t_array_source_10 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
29927 TYPE t_array_source_11 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
29929 TYPE t_array_source_13 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
29930 TYPE t_array_source_15 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
29931 TYPE t_array_source_16 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
29932
29933 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
29934 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
29935 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
29936 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
29937 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
29938
29939 l_array_source_1 t_array_source_1;
29940 l_array_source_2 t_array_source_2;
29941 l_array_source_10 t_array_source_10;
29942 l_array_source_11 t_array_source_11;
29943 l_array_source_12 t_array_source_12;
29944 l_array_source_13 t_array_source_13;
29945 l_array_source_15 t_array_source_15;
29946 l_array_source_16 t_array_source_16;
29947
29948 l_array_source_5 t_array_source_5;
29949 l_array_source_6 t_array_source_6;
29950 l_array_source_6_meaning t_array_lookup_meaning;
29951 l_array_source_7 t_array_source_7;
29952 l_array_source_8 t_array_source_8;
29953 l_array_source_9 t_array_source_9;
29954
29955 --
29956 CURSOR header_cur
29957 IS
29958 SELECT /*+ leading(xet) cardinality(xet,1) */
29959 -- Event Class Code: TERMINATION
29960 xet.entity_id
29961 ,xet.legal_entity_id
29962 ,xet.entity_code
29963 ,xet.transaction_number
29964 ,xet.event_id
29965 ,xet.event_class_code
29966 ,xet.event_type_code
29967 ,xet.event_number
29968 ,xet.event_date
29969 ,xet.transaction_date
29970 ,xet.reference_num_1
29971 ,xet.reference_num_2
29972 ,xet.reference_num_3
29973 ,xet.reference_num_4
29974 ,xet.reference_char_1
29975 ,xet.reference_char_2
29976 ,xet.reference_char_3
29977 ,xet.reference_char_4
29978 ,xet.reference_date_1
29979 ,xet.reference_date_2
29980 ,xet.reference_date_3
29981 ,xet.reference_date_4
29982 ,xet.event_created_by
29983 ,xet.budgetary_control_flag
29984 , h1.TEH_CONTRACT_NUMBER source_1
29985 , h1.TCN_CONTRACT_PRODUCT_NAME source_2
29986 , h1.TCN_CURRENCY_CODE source_10
29987 , h1.TCN_CURR_CONVERSION_DATE source_11
29988 , h1.TCN_CURR_CONVERSION_RATE source_12
29989 , h1.TCN_CURR_CONVERSION_TYPE source_13
29990 , h1.GL_DATE source_15
29991 , h1.TCN_ACCOUNTING_REVERSAL_FLAG source_16
29992 FROM xla_events_gt xet
29993 , OKL_CMN_EXTRACT_HDR_V h1
29994 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
29995 and xet.event_class_code = C_EVENT_CLASS_CODE
29996 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
29997
29998 ORDER BY event_id
29999 ;
30000
30001
30002 --
30003 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
30004 IS
30005 SELECT /*+ leading(xet) cardinality(xet,1) */
30006 -- Event Class Code: TERMINATION
30007 xet.entity_id
30008 ,xet.legal_entity_id
30009 ,xet.entity_code
30010 ,xet.transaction_number
30011 ,xet.event_id
30012 ,xet.event_class_code
30013 ,xet.event_type_code
30014 ,xet.event_number
30015 ,xet.event_date
30016 ,xet.transaction_date
30017 ,xet.reference_num_1
30018 ,xet.reference_num_2
30019 ,xet.reference_num_3
30020 ,xet.reference_num_4
30021 ,xet.reference_char_1
30022 ,xet.reference_char_2
30023 ,xet.reference_char_3
30024 ,xet.reference_char_4
30025 ,xet.reference_date_1
30026 ,xet.reference_date_2
30027 ,xet.reference_date_3
30028 ,xet.reference_date_4
30029 ,xet.event_created_by
30030 ,xet.budgetary_control_flag
30031 , l2.LINE_NUMBER
30032 , l2.DIST_CODE_COMBINATION_ID source_5
30033 , l2.DIST_AE_LINE_TYPE_CODE source_6
30034 , fvl6.meaning source_6_meaning
30035 , l2.DIST_ID source_7
30036 , l2.DIST_TYPE source_8
30037 , l2.DIST_ENTERED_AMOUNT source_9
30038 FROM xla_events_gt xet
30039 , OKL_CMN_EXTRACT_LINE_V l2
30040 , fnd_lookup_values fvl6
30041 WHERE xet.event_id between x_first_event_id and x_last_event_id
30042 and xet.event_date between p_pad_start_date and p_pad_end_date
30043 and xet.event_class_code = C_EVENT_CLASS_CODE
30044 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
30045 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
30046 AND fvl6.lookup_code(+) = l2.DIST_AE_LINE_TYPE_CODE
30047 AND fvl6.view_application_id(+) = 0
30048 AND fvl6.language(+) = USERENV('LANG')
30049 ;
30050
30051 --
30052 BEGIN
30053 IF g_log_enabled THEN
30054 l_log_module := C_DEFAULT_MODULE||'.EventClass_44';
30055 END IF;
30056 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30057 trace
30058 (p_msg => 'BEGIN of EventClass_44'
30059 ,p_level => C_LEVEL_PROCEDURE
30060 ,p_module => l_log_module);
30061 END IF;
30062
30066 ' - p_base_ledger_id = '||p_base_ledger_id||
30063 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
30064 trace
30065 (p_msg => 'p_application_id = '||p_application_id||
30067 ' - p_target_ledger_id = '||p_target_ledger_id||
30068 ' - p_language = '||p_language||
30069 ' - p_currency_code = '||p_currency_code||
30070 ' - p_sla_ledger_id = '||p_sla_ledger_id
30071 ,p_level => C_LEVEL_STATEMENT
30072 ,p_module => l_log_module);
30073 END IF;
30074 --
30075 -- initialze arrays
30076 --
30077 g_array_event.DELETE;
30078 l_rec_array_event := l_null_rec_array_event;
30079 --
30080 --------------------------------------
30081 -- 4262811 Initialze MPA Line Number
30082 --------------------------------------
30083 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
30084
30085 --
30086
30087 --
30088 OPEN header_cur;
30089 --
30090 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
30091 trace
30092 (p_msg => 'SQL - FETCH header_cur'
30093 ,p_level => C_LEVEL_STATEMENT
30094 ,p_module => l_log_module);
30095 END IF;
30096 --
30097 LOOP
30098 FETCH header_cur BULK COLLECT INTO
30099 l_array_entity_id
30100 , l_array_legal_entity_id
30101 , l_array_entity_code
30102 , l_array_transaction_num
30103 , l_array_event_id
30104 , l_array_class_code
30105 , l_array_event_type
30106 , l_array_event_number
30107 , l_array_event_date
30108 , l_array_transaction_date
30109 , l_array_reference_num_1
30110 , l_array_reference_num_2
30111 , l_array_reference_num_3
30112 , l_array_reference_num_4
30113 , l_array_reference_char_1
30114 , l_array_reference_char_2
30115 , l_array_reference_char_3
30116 , l_array_reference_char_4
30117 , l_array_reference_date_1
30118 , l_array_reference_date_2
30119 , l_array_reference_date_3
30120 , l_array_reference_date_4
30121 , l_array_event_created_by
30122 , l_array_budgetary_control_flag
30123 , l_array_source_1
30124 , l_array_source_2
30125 , l_array_source_10
30126 , l_array_source_11
30127 , l_array_source_12
30128 , l_array_source_13
30129 , l_array_source_15
30130 , l_array_source_16
30131 LIMIT l_rows;
30132 --
30133 IF (C_LEVEL_EVENT >= g_log_level) THEN
30134 trace
30135 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
30136 ,p_level => C_LEVEL_EVENT
30137 ,p_module => l_log_module);
30138 END IF;
30139 --
30140 EXIT WHEN l_array_entity_id.COUNT = 0;
30141
30142 -- initialize arrays
30143 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
30144 XLA_AE_LINES_PKG.g_rec_lines := NULL;
30145
30146 --
30147 -- Bug 4458708
30148 --
30149 XLA_AE_LINES_PKG.g_LineNumber := 0;
30150
30151
30152 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
30153 g_last_hdr_idx := l_array_event_id.LAST;
30154 --
30155 -- loop for the headers. Each iteration is for each header extract row
30156 -- fetched in header cursor
30157 --
30158 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
30159
30160 --
30161 -- set event info as cache for other routines to refer event attributes
30162 --
30163 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
30164 (p_application_id => p_application_id
30165 ,p_primary_ledger_id => p_primary_ledger_id
30166 ,p_base_ledger_id => p_base_ledger_id
30167 ,p_target_ledger_id => p_target_ledger_id
30168 ,p_entity_id => l_array_entity_id(hdr_idx)
30169 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
30170 ,p_entity_code => l_array_entity_code(hdr_idx)
30171 ,p_transaction_num => l_array_transaction_num(hdr_idx)
30172 ,p_event_id => l_array_event_id(hdr_idx)
30173 ,p_event_class_code => l_array_class_code(hdr_idx)
30174 ,p_event_type_code => l_array_event_type(hdr_idx)
30175 ,p_event_number => l_array_event_number(hdr_idx)
30176 ,p_event_date => l_array_event_date(hdr_idx)
30177 ,p_transaction_date => l_array_transaction_date(hdr_idx)
30178 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
30179 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
30180 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
30181 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
30182 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
30183 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
30184 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
30185 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
30186 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
30187 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
30188 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
30189 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
30190 ,p_event_created_by => l_array_event_created_by(hdr_idx)
30191 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
30192
30193 --
30194 -- set the status of entry to C_VALID (0)
30195 --
30196 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
30197
30198 --
30199 -- initialize a row for ae header
30200 --
30201 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
30202
30203 l_event_id := l_array_event_id(hdr_idx);
30204
30205 --
30206 -- storing the hdr_idx for event. May be used by line cursor.
30210 --
30207 --
30208 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
30209
30211 -- store sources from header extract. This can be improved to
30212 -- store only those sources from header extract that may be used in lines
30213 --
30214
30215 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
30216 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
30217 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
30218 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
30219 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
30220 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
30221 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
30222 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
30223
30224 --
30225 -- initilaize the status of ae headers for diffrent balance types
30226 -- the status is initialised to C_NOT_CREATED (2)
30227 --
30228 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
30229 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
30230 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
30231
30232 --
30233 -- call api to validate and store accounting attributes for header
30234 --
30235
30236 ------------------------------------------------------------
30237 -- Accrual Reversal : to get date for Standard Source (NONE)
30238 ------------------------------------------------------------
30239 l_acc_rev_gl_date_source := NULL;
30240
30241 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
30242 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
30243 l_rec_acct_attrs.array_acct_attr_code(2) := 'TRX_ACCT_REVERSAL_OPTION';
30244 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_16');
30245
30246
30247 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
30248
30249 XLA_AE_HEADER_PKG.SetJeCategoryName;
30250
30251 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
30252 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
30253 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
30254 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
30255 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
30256
30257
30258 --
30259 xla_ae_header_pkg.SetHdrDescription(
30260 p_description => Description_1 (
30261 p_application_id => p_application_id
30262 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
30263 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
30264 )
30265 );
30266 --
30267
30268 -- No header level analytical criteria
30269
30270 --
30271 --accounting attribute enhancement, bug 3612931
30272 --
30273 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_16'), 1,30);
30274
30275 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
30276 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
30277
30278 xla_accounting_err_pkg.build_message
30279 (p_appli_s_name => 'XLA'
30280 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
30281 ,p_token_1 => 'ACCT_ATTR_NAME'
30282 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
30283 ,p_token_2 => 'PRODUCT_NAME'
30284 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
30285 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
30286 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
30287 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
30288
30289 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
30290 --
30291 -- following sets the accounting attributes needed to reverse
30292 -- accounting for a distributeion
30293 --
30294 xla_ae_lines_pkg.SetTrxReversalAttrs
30295 (p_event_id => l_event_id
30296 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
30297 ,p_trx_reversal_source => l_trx_reversal_source);
30298
30299 END IF;
30300
30301
30302 ----------------------------------------------------------------
30303 -- 4262811 - update the header statuses to invalid in need be
30304 ----------------------------------------------------------------
30305 --
30306 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
30307
30308
30309 -----------------------------------------------
30310 -- No accrual reversal for the event class/type
30311 -----------------------------------------------
30312 ----------------------------------------------------------------
30313
30314 --
30315 -- this ends the header loop iteration for one bulk fetch
30316 --
30317 END LOOP;
30318
30319 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
30320 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
30321
30322 --
30323 -- insert dummy rows into lines gt table that were created due to
30324 -- transaction reversals
30325 --
30326 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
30327 l_result := XLA_AE_LINES_PKG.InsertLines;
30328 END IF;
30329
30330 --
30331 -- reset the temp_line_num for each set of events fetched from header
30335 xla_ae_lines_pkg.g_temp_line_num := 0;
30332 -- cursor rather than doing it for each new event in line cursor
30333 -- Bug 3939231
30334 --
30336
30337
30338
30339 --
30340 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
30341 --
30342 --
30343 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
30344
30345 trace
30346 (p_msg => 'SQL - FETCH line_cur'
30347 ,p_level => C_LEVEL_STATEMENT
30348 ,p_module => l_log_module);
30349
30350 END IF;
30351 --
30352 --
30353 LOOP
30354 --
30355 FETCH line_cur BULK COLLECT INTO
30356 l_array_entity_id
30357 , l_array_legal_entity_id
30358 , l_array_entity_code
30359 , l_array_transaction_num
30360 , l_array_event_id
30361 , l_array_class_code
30362 , l_array_event_type
30363 , l_array_event_number
30364 , l_array_event_date
30365 , l_array_transaction_date
30366 , l_array_reference_num_1
30367 , l_array_reference_num_2
30368 , l_array_reference_num_3
30369 , l_array_reference_num_4
30370 , l_array_reference_char_1
30371 , l_array_reference_char_2
30372 , l_array_reference_char_3
30373 , l_array_reference_char_4
30374 , l_array_reference_date_1
30375 , l_array_reference_date_2
30376 , l_array_reference_date_3
30377 , l_array_reference_date_4
30378 , l_array_event_created_by
30379 , l_array_budgetary_control_flag
30380 , l_array_extract_line_num
30381 , l_array_source_5
30382 , l_array_source_6
30383 , l_array_source_6_meaning
30384 , l_array_source_7
30385 , l_array_source_8
30386 , l_array_source_9
30387 LIMIT l_rows;
30388
30389 --
30390 IF (C_LEVEL_EVENT >= g_log_level) THEN
30391 trace
30392 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
30393 ,p_level => C_LEVEL_EVENT
30394 ,p_module => l_log_module);
30395 END IF;
30396 --
30397 EXIT WHEN l_array_entity_id.count = 0;
30398
30399 XLA_AE_LINES_PKG.g_rec_lines := null;
30400
30401 --
30402 -- Bug 4458708
30403 --
30404 XLA_AE_LINES_PKG.g_LineNumber := 0;
30405 --
30406 --
30407
30408 FOR Idx IN 1..l_array_event_id.count LOOP
30409 --
30410 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
30411 --
30412 l_event_id := l_array_event_id(idx); -- 5648433
30413
30414 --
30415 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
30416 --
30417
30418 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
30419 (g_array_event(l_event_id).array_value_num('header_index'))
30420 ,'N'
30421 ) <> 'Y'
30422 THEN
30423 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
30424 trace
30425 (p_msg => 'Trancaction revesal option is not Y '
30426 ,p_level => C_LEVEL_STATEMENT
30427 ,p_module => l_log_module);
30428 END IF;
30429
30430 --
30431 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
30432 --
30433 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
30434 --
30435 -- set event info as cache for other routines to refer event attributes
30436 --
30437
30438 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
30439 l_previous_event_id := l_event_id;
30440
30441 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
30442 (p_application_id => p_application_id
30443 ,p_primary_ledger_id => p_primary_ledger_id
30444 ,p_base_ledger_id => p_base_ledger_id
30445 ,p_target_ledger_id => p_target_ledger_id
30446 ,p_entity_id => l_array_entity_id(Idx)
30447 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
30448 ,p_entity_code => l_array_entity_code(Idx)
30449 ,p_transaction_num => l_array_transaction_num(Idx)
30450 ,p_event_id => l_array_event_id(Idx)
30451 ,p_event_class_code => l_array_class_code(Idx)
30452 ,p_event_type_code => l_array_event_type(Idx)
30453 ,p_event_number => l_array_event_number(Idx)
30454 ,p_event_date => l_array_event_date(Idx)
30455 ,p_transaction_date => l_array_transaction_date(Idx)
30456 ,p_reference_num_1 => l_array_reference_num_1(Idx)
30457 ,p_reference_num_2 => l_array_reference_num_2(Idx)
30458 ,p_reference_num_3 => l_array_reference_num_3(Idx)
30459 ,p_reference_num_4 => l_array_reference_num_4(Idx)
30460 ,p_reference_char_1 => l_array_reference_char_1(Idx)
30461 ,p_reference_char_2 => l_array_reference_char_2(Idx)
30462 ,p_reference_char_3 => l_array_reference_char_3(Idx)
30463 ,p_reference_char_4 => l_array_reference_char_4(Idx)
30464 ,p_reference_date_1 => l_array_reference_date_1(Idx)
30465 ,p_reference_date_2 => l_array_reference_date_2(Idx)
30466 ,p_reference_date_3 => l_array_reference_date_3(Idx)
30467 ,p_reference_date_4 => l_array_reference_date_4(Idx)
30468 ,p_event_created_by => l_array_event_created_by(Idx)
30469 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
30470 --
30471 END IF;
30472
30473
30474
30475 --
30476 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
30477
30478 l_acct_reversal_source := SUBSTR(NULL, 1,30);
30479
30480 IF l_continue_with_lines THEN
30484 xla_accounting_err_pkg.build_message
30481 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
30482 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
30483
30485 (p_appli_s_name => 'XLA'
30486 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
30487 ,p_token_1 => 'LINE_NUMBER'
30488 ,p_value_1 => l_array_extract_line_num(Idx)
30489 ,p_token_2 => 'PRODUCT_NAME'
30490 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
30491 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
30492 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
30493 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
30494
30495 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
30496 --
30497 -- following sets the accounting attributes needed to reverse
30498 -- accounting for a distributeion
30499 --
30500
30501 --
30502 -- 5217187
30503 --
30504 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
30505 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
30506 g_array_event(l_event_id).array_value_num('header_index'));
30507 --
30508 --
30509
30510 -- No reversal code generated
30511
30512 xla_ae_lines_pkg.SetAcctReversalAttrs
30513 (p_event_id => l_event_id
30514 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
30515 ,p_calculate_acctd_flag => l_calculate_acctd_flag
30516 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
30517 END IF;
30518
30519 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
30520 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
30521
30522 --
30523 AcctLineType_28 (
30524 p_application_id => p_application_id
30525 ,p_event_id => l_event_id
30526 ,p_calculate_acctd_flag => l_calculate_acctd_flag
30527 ,p_calculate_g_l_flag => l_calculate_g_l_flag
30528 ,p_actual_flag => l_actual_flag
30529 ,p_balance_type_code => l_balance_type_code
30530 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
30531
30532 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
30533 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
30534 , p_source_5 => l_array_source_5(Idx)
30535 , p_source_6 => l_array_source_6(Idx)
30536 , p_source_6_meaning => l_array_source_6_meaning(Idx)
30537 , p_source_7 => l_array_source_7(Idx)
30538 , p_source_8 => l_array_source_8(Idx)
30539 , p_source_9 => l_array_source_9(Idx)
30540 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
30541 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
30542 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
30543 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
30544 );
30545 If(l_balance_type_code = 'A') THEN
30546 l_actual_gain_loss_ref := l_gain_or_loss_ref;
30547 END IF;
30548
30549 --
30550
30551
30552 --
30553 AcctLineType_29 (
30554 p_application_id => p_application_id
30555 ,p_event_id => l_event_id
30556 ,p_calculate_acctd_flag => l_calculate_acctd_flag
30557 ,p_calculate_g_l_flag => l_calculate_g_l_flag
30558 ,p_actual_flag => l_actual_flag
30559 ,p_balance_type_code => l_balance_type_code
30560 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
30561
30562 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
30563 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
30564 , p_source_5 => l_array_source_5(Idx)
30565 , p_source_6 => l_array_source_6(Idx)
30566 , p_source_6_meaning => l_array_source_6_meaning(Idx)
30567 , p_source_7 => l_array_source_7(Idx)
30568 , p_source_8 => l_array_source_8(Idx)
30569 , p_source_9 => l_array_source_9(Idx)
30570 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
30571 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
30572 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
30573 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
30574 );
30575 If(l_balance_type_code = 'A') THEN
30576 l_actual_gain_loss_ref := l_gain_or_loss_ref;
30577 END IF;
30578
30579 --
30580
30581 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
30582 -- or secondary ledger that has different currency with primary
30583 -- or alc that is calculated by sla
30584 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
30585 (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'))
30586
30587 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
30588 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
30589 AND (l_actual_flag = 'A')) THEN
30590 XLA_AE_LINES_PKG.CreateGainOrLossLines(
30591 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
30592 ,p_application_id => p_application_id
30593 ,p_amb_context_code => 'DEFAULT'
30594 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
30595 ,p_event_class_code => C_EVENT_CLASS_CODE
30596 ,p_event_type_code => C_EVENT_TYPE_CODE
30597
30598 ,p_gain_ccid => -1
30599 ,p_loss_ccid => -1
30600
30601 ,p_actual_flag => l_actual_flag
30602 ,p_enc_flag => null
30606 END IF;
30603 ,p_actual_g_l_ref => l_actual_gain_loss_ref
30604 ,p_enc_g_l_ref => null
30605 );
30607 END IF;
30608 END IF;
30609
30610 ELSE
30611 --
30612 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
30613 --
30614 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
30615 trace
30616 (p_msg => 'Trancaction revesal option is Y'
30617 ,p_level => C_LEVEL_STATEMENT
30618 ,p_module => l_log_module);
30619 END IF;
30620 END IF;
30621
30622 END LOOP;
30623 l_result := XLA_AE_LINES_PKG.InsertLines ;
30624 end loop;
30625 close line_cur;
30626
30627
30628 --
30629 -- insert headers into xla_ae_headers_gt table
30630 --
30631 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
30632
30633 -- insert into errors table here.
30634
30635 END LOOP;
30636
30637 --
30638 -- 4865292
30639 --
30640 -- Compare g_hdr_extract_count with event count in
30641 -- CreateHeadersAndLines.
30642 --
30643 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
30644
30645 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
30646 trace (p_msg => '# rows extracted from header extract objects '
30647 || ' (running total): '
30648 || g_hdr_extract_count
30649 ,p_level => C_LEVEL_STATEMENT
30650 ,p_module => l_log_module);
30651 END IF;
30652
30653 CLOSE header_cur;
30654 --
30655
30656 --
30657 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30658 trace
30659 (p_msg => 'END of EventClass_44'
30660 ,p_level => C_LEVEL_PROCEDURE
30661 ,p_module => l_log_module);
30662 END IF;
30663 --
30664 RETURN l_result;
30665 EXCEPTION
30666 WHEN xla_exceptions_pkg.application_exception THEN
30667
30668 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
30669
30670
30671 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
30672
30673 RAISE;
30674 WHEN OTHERS THEN
30675 xla_exceptions_pkg.raise_message
30676 (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_44');
30677 END EventClass_44;
30678 --
30679
30680 ---------------------------------------
30681 --
30682 -- PRIVATE PROCEDURE
30683 -- insert_sources_45
30684 --
30685 ----------------------------------------
30686 --
30687 PROCEDURE insert_sources_45(
30688 p_target_ledger_id IN NUMBER
30689 , p_language IN VARCHAR2
30690 , p_sla_ledger_id IN NUMBER
30691 , p_pad_start_date IN DATE
30692 , p_pad_end_date IN DATE
30693 )
30694 IS
30695
30696 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UPFRONT_TAX_ALL';
30697 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'UPFRONT_TAX';
30698 p_apps_owner VARCHAR2(30);
30699 l_log_module VARCHAR2(240);
30700 BEGIN
30701 IF g_log_enabled THEN
30702 l_log_module := C_DEFAULT_MODULE||'.insert_sources_45';
30703 END IF;
30704 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30705
30706 trace
30707 (p_msg => 'BEGIN of insert_sources_45'
30708 ,p_level => C_LEVEL_PROCEDURE
30709 ,p_module => l_log_module);
30710
30711 END IF;
30712
30713 -- select APPS owner
30714 SELECT oracle_username
30715 INTO p_apps_owner
30716 FROM fnd_oracle_userid
30717 WHERE read_only_flag = 'U'
30718 ;
30719
30720 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
30721 trace
30722 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
30723 ' - p_language = '||p_language||
30724 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
30725 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
30726 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
30727 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
30728 ,p_level => C_LEVEL_STATEMENT
30729 ,p_module => l_log_module);
30730 END IF;
30731
30732
30733 --
30734 INSERT INTO xla_diag_sources --hdr2
30735 (
30736 event_id
30737 , ledger_id
30738 , sla_ledger_id
30739 , description_language
30740 , object_name
30741 , object_type_code
30742 , line_number
30743 , source_application_id
30744 , source_type_code
30745 , source_code
30746 , source_value
30747 , source_meaning
30748 , created_by
30749 , creation_date
30750 , last_update_date
30751 , last_updated_by
30752 , last_update_login
30753 , program_update_date
30754 , program_application_id
30755 , program_id
30756 , request_id
30757 )
30758 SELECT
30759 event_id
30760 , p_target_ledger_id
30761 , p_sla_ledger_id
30762 , p_language
30763 , object_name
30764 , object_type_code
30765 , line_number
30766 , source_application_id
30767 , source_type_code
30768 , source_code
30769 , SUBSTR(source_value ,1,1996)
30770 , SUBSTR(source_meaning ,1,200)
30771 , xla_environment_pkg.g_Usr_Id
30772 , TRUNC(SYSDATE)
30773 , TRUNC(SYSDATE)
30774 , xla_environment_pkg.g_Usr_Id
30775 , xla_environment_pkg.g_Login_Id
30776 , TRUNC(SYSDATE)
30780 FROM (
30777 , xla_environment_pkg.g_Prog_Appl_Id
30778 , xla_environment_pkg.g_Prog_Id
30779 , xla_environment_pkg.g_Req_Id
30781 SELECT xet.event_id event_id
30782 , 0 line_number
30783 , CASE r
30784 WHEN 1 THEN 'OKL_CMN_EXTRACT_HDR_V'
30785 WHEN 2 THEN 'OKL_CMN_EXTRACT_HDR_V'
30786 WHEN 3 THEN 'OKL_CMN_EXTRACT_HDR_V'
30787 WHEN 4 THEN 'OKL_CMN_EXTRACT_HDR_V'
30788 WHEN 5 THEN 'OKL_CMN_EXTRACT_HDR_V'
30789 WHEN 6 THEN 'OKL_CMN_EXTRACT_HDR_V'
30790 WHEN 7 THEN 'OKL_CMN_EXTRACT_HDR_V'
30791 WHEN 8 THEN 'OKL_CMN_EXTRACT_HDR_V'
30792
30793 ELSE null
30794 END object_name
30795 , CASE r
30796 WHEN 1 THEN 'HEADER'
30797 WHEN 2 THEN 'HEADER'
30798 WHEN 3 THEN 'HEADER'
30799 WHEN 4 THEN 'HEADER'
30800 WHEN 5 THEN 'HEADER'
30801 WHEN 6 THEN 'HEADER'
30802 WHEN 7 THEN 'HEADER'
30803 WHEN 8 THEN 'HEADER'
30804
30805 ELSE null
30806 END object_type_code
30807 , CASE r
30808 WHEN 1 THEN '540'
30809 WHEN 2 THEN '540'
30810 WHEN 3 THEN '540'
30811 WHEN 4 THEN '540'
30812 WHEN 5 THEN '540'
30813 WHEN 6 THEN '540'
30814 WHEN 7 THEN '540'
30815 WHEN 8 THEN '540'
30816
30817 ELSE null
30818 END source_application_id
30819 , 'S' source_type_code
30820 , CASE r
30821 WHEN 1 THEN 'TEH_CONTRACT_NUMBER'
30822 WHEN 2 THEN 'TCN_CONTRACT_PRODUCT_NAME'
30823 WHEN 3 THEN 'TCN_CURRENCY_CODE'
30824 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE'
30825 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE'
30826 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE'
30827 WHEN 7 THEN 'GL_DATE'
30828 WHEN 8 THEN 'TCN_ACCOUNTING_REVERSAL_FLAG'
30829
30830 ELSE null
30831 END source_code
30832 , CASE r
30833 WHEN 1 THEN TO_CHAR(h1.TEH_CONTRACT_NUMBER)
30834 WHEN 2 THEN TO_CHAR(h1.TCN_CONTRACT_PRODUCT_NAME)
30835 WHEN 3 THEN TO_CHAR(h1.TCN_CURRENCY_CODE)
30836 WHEN 4 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_DATE)
30837 WHEN 5 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_RATE)
30838 WHEN 6 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_TYPE)
30839 WHEN 7 THEN TO_CHAR(h1.GL_DATE)
30840 WHEN 8 THEN TO_CHAR(h1.TCN_ACCOUNTING_REVERSAL_FLAG)
30841
30842 ELSE null
30843 END source_value
30844 , null source_meaning
30845 FROM xla_events_gt xet
30846 , OKL_CMN_EXTRACT_HDR_V h1
30847 ,(select rownum r from all_objects where rownum <= 8 and owner = p_apps_owner)
30848 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
30849 AND xet.event_class_code = C_EVENT_CLASS_CODE
30850 AND h1.event_id = xet.event_id
30851
30852 )
30853 ;
30854 --
30855 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
30856
30857 trace
30858 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
30859 ,p_level => C_LEVEL_STATEMENT
30860 ,p_module => l_log_module);
30861
30862 END IF;
30863 --
30864
30865
30866
30867 --
30868 INSERT INTO xla_diag_sources --line2
30869 (
30870 event_id
30871 , ledger_id
30872 , sla_ledger_id
30873 , description_language
30874 , object_name
30875 , object_type_code
30876 , line_number
30877 , source_application_id
30878 , source_type_code
30879 , source_code
30880 , source_value
30881 , source_meaning
30882 , created_by
30883 , creation_date
30884 , last_update_date
30885 , last_updated_by
30886 , last_update_login
30887 , program_update_date
30888 , program_application_id
30889 , program_id
30890 , request_id
30891 )
30892 SELECT event_id
30893 , p_target_ledger_id
30894 , p_sla_ledger_id
30895 , p_language
30896 , object_name
30897 , object_type_code
30898 , line_number
30899 , source_application_id
30900 , source_type_code
30901 , source_code
30902 , SUBSTR(source_value,1,1996)
30903 , SUBSTR(source_meaning ,1,200)
30904 , xla_environment_pkg.g_Usr_Id
30905 , TRUNC(SYSDATE)
30906 , TRUNC(SYSDATE)
30907 , xla_environment_pkg.g_Usr_Id
30908 , xla_environment_pkg.g_Login_Id
30909 , TRUNC(SYSDATE)
30910 , xla_environment_pkg.g_Prog_Appl_Id
30911 , xla_environment_pkg.g_Prog_Id
30912 , xla_environment_pkg.g_Req_Id
30913 FROM (
30914 SELECT xet.event_id event_id
30915 , l2.line_number line_number
30916 , CASE r
30917 WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V'
30918 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V'
30919 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V'
30920 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V'
30924 END object_name
30921 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V'
30922
30923 ELSE null
30925 , CASE r
30926 WHEN 1 THEN 'LINE'
30927 WHEN 2 THEN 'LINE'
30928 WHEN 3 THEN 'LINE'
30929 WHEN 4 THEN 'LINE'
30930 WHEN 5 THEN 'LINE'
30931
30932 ELSE null
30933 END object_type_code
30934 , CASE r
30935 WHEN 1 THEN '540'
30936 WHEN 2 THEN '540'
30937 WHEN 3 THEN '540'
30938 WHEN 4 THEN '540'
30939 WHEN 5 THEN '540'
30940
30941 ELSE null
30942 END source_application_id
30943 , 'S' source_type_code
30944 , CASE r
30945 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID'
30946 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE'
30947 WHEN 3 THEN 'DIST_ID'
30948 WHEN 4 THEN 'DIST_TYPE'
30949 WHEN 5 THEN 'DIST_ENTERED_AMOUNT'
30950
30951 ELSE null
30952 END source_code
30953 , CASE r
30954 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
30955 WHEN 2 THEN TO_CHAR(l2.DIST_AE_LINE_TYPE_CODE)
30956 WHEN 3 THEN TO_CHAR(l2.DIST_ID)
30957 WHEN 4 THEN TO_CHAR(l2.DIST_TYPE)
30958 WHEN 5 THEN TO_CHAR(l2.DIST_ENTERED_AMOUNT)
30959
30960 ELSE null
30961 END source_value
30962 , CASE r
30963 WHEN 2 THEN fvl6.meaning
30964
30965 ELSE null
30966 END source_meaning
30967 FROM xla_events_gt xet
30968 , OKL_CMN_EXTRACT_LINE_V l2
30969 , fnd_lookup_values fvl6
30970 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
30971 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
30972 AND xet.event_class_code = C_EVENT_CLASS_CODE
30973 AND l2.event_id = xet.event_id
30974 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
30975 AND fvl6.lookup_code(+) = l2.DIST_AE_LINE_TYPE_CODE
30976 AND fvl6.view_application_id(+) = 0
30977 AND fvl6.language(+) = USERENV('LANG')
30978
30979 )
30980 ;
30981 --
30982 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
30983
30984 trace
30985 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
30986 ,p_level => C_LEVEL_STATEMENT
30987 ,p_module => l_log_module);
30988
30989 END IF;
30990
30991
30992 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30993 trace
30994 (p_msg => 'END of insert_sources_45'
30995 ,p_level => C_LEVEL_PROCEDURE
30996 ,p_module => l_log_module);
30997 END IF;
30998 EXCEPTION
30999 WHEN xla_exceptions_pkg.application_exception THEN
31000 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
31001 trace
31002 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
31003 ,p_level => C_LEVEL_EXCEPTION
31004 ,p_module => l_log_module);
31005 END IF;
31006 RAISE;
31007 WHEN OTHERS THEN
31008 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
31009 trace
31010 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
31011 ,p_level => C_LEVEL_EXCEPTION
31012 ,p_module => l_log_module);
31013 END IF;
31014 xla_exceptions_pkg.raise_message
31015 (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_45');
31016 END insert_sources_45;
31017 --
31018
31019 ---------------------------------------
31020 --
31021 -- PRIVATE FUNCTION
31022 -- EventClass_45
31023 --
31024 ----------------------------------------
31025 --
31026 FUNCTION EventClass_45
31027 (p_application_id IN NUMBER
31028 ,p_base_ledger_id IN NUMBER
31029 ,p_target_ledger_id IN NUMBER
31030 ,p_language IN VARCHAR2
31031 ,p_currency_code IN VARCHAR2
31032 ,p_sla_ledger_id IN NUMBER
31033 ,p_pad_start_date IN DATE
31034 ,p_pad_end_date IN DATE
31035 ,p_primary_ledger_id IN NUMBER)
31036 RETURN BOOLEAN IS
31037 --
31038 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UPFRONT_TAX_ALL';
31039 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'UPFRONT_TAX';
31040
31041 l_calculate_acctd_flag VARCHAR2(1) :='Y';
31042 l_calculate_g_l_flag VARCHAR2(1) :='Y';
31043 --
31044 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
31045 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
31046 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
31047 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
31048 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
31049 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
31050 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
31051 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
31052 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
31053 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
31054 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
31058 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
31055 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
31056 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
31057 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
31059 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
31060 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
31061 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
31062 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
31063 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
31064 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
31065 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
31066 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
31067 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
31068
31069 l_event_id NUMBER;
31070 l_previous_event_id NUMBER;
31071 l_first_event_id NUMBER;
31072 l_last_event_id NUMBER;
31073
31074 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
31075 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
31076 --
31077 --
31078 l_result BOOLEAN := TRUE;
31079 l_rows NUMBER := 1000;
31080 l_event_type_name VARCHAR2(80) := 'All';
31081 l_event_class_name VARCHAR2(80) := 'Upfront Tax';
31082 l_description VARCHAR2(4000);
31083 l_transaction_reversal NUMBER;
31084 l_ae_header_id NUMBER;
31085 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
31086 l_log_module VARCHAR2(240);
31087 --
31088 l_acct_reversal_source VARCHAR2(30);
31089 l_trx_reversal_source VARCHAR2(30);
31090
31091 l_continue_with_lines BOOLEAN := TRUE;
31092 --
31093 l_acc_rev_gl_date_source DATE; -- 4262811
31094 --
31095 type t_array_event_id is table of number index by binary_integer;
31096
31097 l_rec_array_event t_rec_array_event;
31098 l_null_rec_array_event t_rec_array_event;
31099 l_array_ae_header_id xla_number_array_type;
31100 l_actual_flag VARCHAR2(1) := NULL;
31101 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
31102 l_balance_type_code VARCHAR2(1) :=NULL;
31103 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
31104
31105 --
31106 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
31107 --
31108
31109 TYPE t_array_source_1 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TEH_CONTRACT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
31110 TYPE t_array_source_2 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CONTRACT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
31111 TYPE t_array_source_10 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
31112 TYPE t_array_source_11 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
31113 TYPE t_array_source_12 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
31114 TYPE t_array_source_13 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
31115 TYPE t_array_source_15 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
31116 TYPE t_array_source_16 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
31117
31118 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
31119 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
31120 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
31121 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
31122 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
31123
31124 l_array_source_1 t_array_source_1;
31125 l_array_source_2 t_array_source_2;
31126 l_array_source_10 t_array_source_10;
31127 l_array_source_11 t_array_source_11;
31128 l_array_source_12 t_array_source_12;
31129 l_array_source_13 t_array_source_13;
31130 l_array_source_15 t_array_source_15;
31131 l_array_source_16 t_array_source_16;
31132
31133 l_array_source_5 t_array_source_5;
31134 l_array_source_6 t_array_source_6;
31135 l_array_source_6_meaning t_array_lookup_meaning;
31136 l_array_source_7 t_array_source_7;
31137 l_array_source_8 t_array_source_8;
31138 l_array_source_9 t_array_source_9;
31139
31140 --
31141 CURSOR header_cur
31142 IS
31143 SELECT /*+ leading(xet) cardinality(xet,1) */
31144 -- Event Class Code: UPFRONT_TAX
31145 xet.entity_id
31146 ,xet.legal_entity_id
31147 ,xet.entity_code
31148 ,xet.transaction_number
31149 ,xet.event_id
31150 ,xet.event_class_code
31151 ,xet.event_type_code
31152 ,xet.event_number
31153 ,xet.event_date
31154 ,xet.transaction_date
31155 ,xet.reference_num_1
31156 ,xet.reference_num_2
31157 ,xet.reference_num_3
31158 ,xet.reference_num_4
31159 ,xet.reference_char_1
31160 ,xet.reference_char_2
31161 ,xet.reference_char_3
31162 ,xet.reference_char_4
31163 ,xet.reference_date_1
31164 ,xet.reference_date_2
31165 ,xet.reference_date_3
31166 ,xet.reference_date_4
31167 ,xet.event_created_by
31168 ,xet.budgetary_control_flag
31169 , h1.TEH_CONTRACT_NUMBER source_1
31170 , h1.TCN_CONTRACT_PRODUCT_NAME source_2
31171 , h1.TCN_CURRENCY_CODE source_10
31175 , h1.GL_DATE source_15
31172 , h1.TCN_CURR_CONVERSION_DATE source_11
31173 , h1.TCN_CURR_CONVERSION_RATE source_12
31174 , h1.TCN_CURR_CONVERSION_TYPE source_13
31176 , h1.TCN_ACCOUNTING_REVERSAL_FLAG source_16
31177 FROM xla_events_gt xet
31178 , OKL_CMN_EXTRACT_HDR_V h1
31179 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
31180 and xet.event_class_code = C_EVENT_CLASS_CODE
31181 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
31182
31183 ORDER BY event_id
31184 ;
31185
31186
31187 --
31188 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
31189 IS
31190 SELECT /*+ leading(xet) cardinality(xet,1) */
31191 -- Event Class Code: UPFRONT_TAX
31192 xet.entity_id
31193 ,xet.legal_entity_id
31194 ,xet.entity_code
31195 ,xet.transaction_number
31196 ,xet.event_id
31197 ,xet.event_class_code
31198 ,xet.event_type_code
31199 ,xet.event_number
31200 ,xet.event_date
31201 ,xet.transaction_date
31202 ,xet.reference_num_1
31203 ,xet.reference_num_2
31204 ,xet.reference_num_3
31205 ,xet.reference_num_4
31206 ,xet.reference_char_1
31207 ,xet.reference_char_2
31208 ,xet.reference_char_3
31209 ,xet.reference_char_4
31210 ,xet.reference_date_1
31211 ,xet.reference_date_2
31212 ,xet.reference_date_3
31213 ,xet.reference_date_4
31214 ,xet.event_created_by
31215 ,xet.budgetary_control_flag
31216 , l2.LINE_NUMBER
31217 , l2.DIST_CODE_COMBINATION_ID source_5
31218 , l2.DIST_AE_LINE_TYPE_CODE source_6
31219 , fvl6.meaning source_6_meaning
31220 , l2.DIST_ID source_7
31221 , l2.DIST_TYPE source_8
31222 , l2.DIST_ENTERED_AMOUNT source_9
31223 FROM xla_events_gt xet
31224 , OKL_CMN_EXTRACT_LINE_V l2
31225 , fnd_lookup_values fvl6
31226 WHERE xet.event_id between x_first_event_id and x_last_event_id
31227 and xet.event_date between p_pad_start_date and p_pad_end_date
31228 and xet.event_class_code = C_EVENT_CLASS_CODE
31229 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
31230 AND fvl6.lookup_type(+) = 'OKL_ACCOUNTING_LINE_TYPE'
31231 AND fvl6.lookup_code(+) = l2.DIST_AE_LINE_TYPE_CODE
31232 AND fvl6.view_application_id(+) = 0
31233 AND fvl6.language(+) = USERENV('LANG')
31234 ;
31235
31236 --
31237 BEGIN
31238 IF g_log_enabled THEN
31239 l_log_module := C_DEFAULT_MODULE||'.EventClass_45';
31240 END IF;
31241 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31242 trace
31243 (p_msg => 'BEGIN of EventClass_45'
31244 ,p_level => C_LEVEL_PROCEDURE
31245 ,p_module => l_log_module);
31246 END IF;
31247
31248 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
31249 trace
31250 (p_msg => 'p_application_id = '||p_application_id||
31251 ' - p_base_ledger_id = '||p_base_ledger_id||
31252 ' - p_target_ledger_id = '||p_target_ledger_id||
31253 ' - p_language = '||p_language||
31254 ' - p_currency_code = '||p_currency_code||
31255 ' - p_sla_ledger_id = '||p_sla_ledger_id
31256 ,p_level => C_LEVEL_STATEMENT
31257 ,p_module => l_log_module);
31258 END IF;
31259 --
31260 -- initialze arrays
31261 --
31262 g_array_event.DELETE;
31263 l_rec_array_event := l_null_rec_array_event;
31264 --
31265 --------------------------------------
31266 -- 4262811 Initialze MPA Line Number
31267 --------------------------------------
31268 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
31269
31270 --
31271
31272 --
31273 OPEN header_cur;
31274 --
31275 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
31276 trace
31277 (p_msg => 'SQL - FETCH header_cur'
31278 ,p_level => C_LEVEL_STATEMENT
31279 ,p_module => l_log_module);
31280 END IF;
31281 --
31282 LOOP
31283 FETCH header_cur BULK COLLECT INTO
31284 l_array_entity_id
31285 , l_array_legal_entity_id
31286 , l_array_entity_code
31287 , l_array_transaction_num
31288 , l_array_event_id
31289 , l_array_class_code
31290 , l_array_event_type
31291 , l_array_event_number
31292 , l_array_event_date
31293 , l_array_transaction_date
31294 , l_array_reference_num_1
31295 , l_array_reference_num_2
31296 , l_array_reference_num_3
31297 , l_array_reference_num_4
31298 , l_array_reference_char_1
31299 , l_array_reference_char_2
31300 , l_array_reference_char_3
31301 , l_array_reference_char_4
31302 , l_array_reference_date_1
31303 , l_array_reference_date_2
31304 , l_array_reference_date_3
31305 , l_array_reference_date_4
31306 , l_array_event_created_by
31307 , l_array_budgetary_control_flag
31308 , l_array_source_1
31309 , l_array_source_2
31310 , l_array_source_10
31311 , l_array_source_11
31312 , l_array_source_12
31313 , l_array_source_13
31314 , l_array_source_15
31315 , l_array_source_16
31316 LIMIT l_rows;
31317 --
31318 IF (C_LEVEL_EVENT >= g_log_level) THEN
31319 trace
31320 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
31321 ,p_level => C_LEVEL_EVENT
31322 ,p_module => l_log_module);
31323 END IF;
31324 --
31325 EXIT WHEN l_array_entity_id.COUNT = 0;
31326
31327 -- initialize arrays
31328 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
31329 XLA_AE_LINES_PKG.g_rec_lines := NULL;
31330
31331 --
31332 -- Bug 4458708
31333 --
31337 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
31334 XLA_AE_LINES_PKG.g_LineNumber := 0;
31335
31336
31338 g_last_hdr_idx := l_array_event_id.LAST;
31339 --
31340 -- loop for the headers. Each iteration is for each header extract row
31341 -- fetched in header cursor
31342 --
31343 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
31344
31345 --
31346 -- set event info as cache for other routines to refer event attributes
31347 --
31348 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
31349 (p_application_id => p_application_id
31350 ,p_primary_ledger_id => p_primary_ledger_id
31351 ,p_base_ledger_id => p_base_ledger_id
31352 ,p_target_ledger_id => p_target_ledger_id
31353 ,p_entity_id => l_array_entity_id(hdr_idx)
31354 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
31355 ,p_entity_code => l_array_entity_code(hdr_idx)
31356 ,p_transaction_num => l_array_transaction_num(hdr_idx)
31357 ,p_event_id => l_array_event_id(hdr_idx)
31358 ,p_event_class_code => l_array_class_code(hdr_idx)
31359 ,p_event_type_code => l_array_event_type(hdr_idx)
31360 ,p_event_number => l_array_event_number(hdr_idx)
31361 ,p_event_date => l_array_event_date(hdr_idx)
31362 ,p_transaction_date => l_array_transaction_date(hdr_idx)
31363 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
31364 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
31365 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
31366 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
31367 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
31368 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
31369 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
31370 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
31371 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
31372 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
31373 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
31374 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
31375 ,p_event_created_by => l_array_event_created_by(hdr_idx)
31376 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
31377
31378 --
31379 -- set the status of entry to C_VALID (0)
31380 --
31381 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
31382
31383 --
31384 -- initialize a row for ae header
31385 --
31386 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
31387
31388 l_event_id := l_array_event_id(hdr_idx);
31389
31390 --
31391 -- storing the hdr_idx for event. May be used by line cursor.
31392 --
31393 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
31394
31395 --
31396 -- store sources from header extract. This can be improved to
31397 -- store only those sources from header extract that may be used in lines
31398 --
31399
31400 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
31401 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
31402 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
31403 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
31404 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
31405 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
31406 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
31407 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
31408
31409 --
31410 -- initilaize the status of ae headers for diffrent balance types
31411 -- the status is initialised to C_NOT_CREATED (2)
31412 --
31413 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
31414 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
31415 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
31416
31417 --
31418 -- call api to validate and store accounting attributes for header
31419 --
31420
31421 ------------------------------------------------------------
31422 -- Accrual Reversal : to get date for Standard Source (NONE)
31423 ------------------------------------------------------------
31424 l_acc_rev_gl_date_source := NULL;
31425
31426 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
31427 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
31428 l_rec_acct_attrs.array_acct_attr_code(2) := 'TRX_ACCT_REVERSAL_OPTION';
31429 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_16');
31430
31431
31432 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
31433
31434 XLA_AE_HEADER_PKG.SetJeCategoryName;
31435
31436 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
31437 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
31438 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
31439 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
31440 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
31441
31442
31443 --
31444 xla_ae_header_pkg.SetHdrDescription(
31445 p_description => Description_1 (
31446 p_application_id => p_application_id
31447 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
31448 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
31449 )
31453 -- No header level analytical criteria
31450 );
31451 --
31452
31454
31455 --
31456 --accounting attribute enhancement, bug 3612931
31457 --
31458 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_16'), 1,30);
31459
31460 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
31461 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
31462
31463 xla_accounting_err_pkg.build_message
31464 (p_appli_s_name => 'XLA'
31465 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
31466 ,p_token_1 => 'ACCT_ATTR_NAME'
31467 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
31468 ,p_token_2 => 'PRODUCT_NAME'
31469 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
31470 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
31471 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
31472 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
31473
31474 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
31475 --
31476 -- following sets the accounting attributes needed to reverse
31477 -- accounting for a distributeion
31478 --
31479 xla_ae_lines_pkg.SetTrxReversalAttrs
31480 (p_event_id => l_event_id
31481 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
31482 ,p_trx_reversal_source => l_trx_reversal_source);
31483
31484 END IF;
31485
31486
31487 ----------------------------------------------------------------
31488 -- 4262811 - update the header statuses to invalid in need be
31489 ----------------------------------------------------------------
31490 --
31491 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
31492
31493
31494 -----------------------------------------------
31495 -- No accrual reversal for the event class/type
31496 -----------------------------------------------
31497 ----------------------------------------------------------------
31498
31499 --
31500 -- this ends the header loop iteration for one bulk fetch
31501 --
31502 END LOOP;
31503
31504 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
31505 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
31506
31507 --
31508 -- insert dummy rows into lines gt table that were created due to
31509 -- transaction reversals
31510 --
31511 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
31512 l_result := XLA_AE_LINES_PKG.InsertLines;
31513 END IF;
31514
31515 --
31516 -- reset the temp_line_num for each set of events fetched from header
31517 -- cursor rather than doing it for each new event in line cursor
31518 -- Bug 3939231
31519 --
31520 xla_ae_lines_pkg.g_temp_line_num := 0;
31521
31522
31523
31524 --
31525 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
31526 --
31527 --
31528 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
31529
31530 trace
31531 (p_msg => 'SQL - FETCH line_cur'
31532 ,p_level => C_LEVEL_STATEMENT
31533 ,p_module => l_log_module);
31534
31535 END IF;
31536 --
31537 --
31538 LOOP
31539 --
31540 FETCH line_cur BULK COLLECT INTO
31541 l_array_entity_id
31542 , l_array_legal_entity_id
31543 , l_array_entity_code
31544 , l_array_transaction_num
31545 , l_array_event_id
31546 , l_array_class_code
31547 , l_array_event_type
31548 , l_array_event_number
31549 , l_array_event_date
31550 , l_array_transaction_date
31551 , l_array_reference_num_1
31552 , l_array_reference_num_2
31553 , l_array_reference_num_3
31554 , l_array_reference_num_4
31555 , l_array_reference_char_1
31556 , l_array_reference_char_2
31557 , l_array_reference_char_3
31558 , l_array_reference_char_4
31559 , l_array_reference_date_1
31560 , l_array_reference_date_2
31561 , l_array_reference_date_3
31562 , l_array_reference_date_4
31563 , l_array_event_created_by
31564 , l_array_budgetary_control_flag
31565 , l_array_extract_line_num
31566 , l_array_source_5
31567 , l_array_source_6
31568 , l_array_source_6_meaning
31569 , l_array_source_7
31570 , l_array_source_8
31571 , l_array_source_9
31572 LIMIT l_rows;
31573
31574 --
31575 IF (C_LEVEL_EVENT >= g_log_level) THEN
31576 trace
31577 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
31578 ,p_level => C_LEVEL_EVENT
31579 ,p_module => l_log_module);
31580 END IF;
31581 --
31582 EXIT WHEN l_array_entity_id.count = 0;
31583
31584 XLA_AE_LINES_PKG.g_rec_lines := null;
31585
31586 --
31587 -- Bug 4458708
31588 --
31589 XLA_AE_LINES_PKG.g_LineNumber := 0;
31590 --
31591 --
31592
31593 FOR Idx IN 1..l_array_event_id.count LOOP
31594 --
31595 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
31596 --
31597 l_event_id := l_array_event_id(idx); -- 5648433
31598
31599 --
31600 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
31601 --
31602
31603 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
31604 (g_array_event(l_event_id).array_value_num('header_index'))
31605 ,'N'
31606 ) <> 'Y'
31610 (p_msg => 'Trancaction revesal option is not Y '
31607 THEN
31608 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
31609 trace
31611 ,p_level => C_LEVEL_STATEMENT
31612 ,p_module => l_log_module);
31613 END IF;
31614
31615 --
31616 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
31617 --
31618 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
31619 --
31620 -- set event info as cache for other routines to refer event attributes
31621 --
31622
31623 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
31624 l_previous_event_id := l_event_id;
31625
31626 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
31627 (p_application_id => p_application_id
31628 ,p_primary_ledger_id => p_primary_ledger_id
31629 ,p_base_ledger_id => p_base_ledger_id
31630 ,p_target_ledger_id => p_target_ledger_id
31631 ,p_entity_id => l_array_entity_id(Idx)
31632 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
31633 ,p_entity_code => l_array_entity_code(Idx)
31634 ,p_transaction_num => l_array_transaction_num(Idx)
31635 ,p_event_id => l_array_event_id(Idx)
31636 ,p_event_class_code => l_array_class_code(Idx)
31637 ,p_event_type_code => l_array_event_type(Idx)
31638 ,p_event_number => l_array_event_number(Idx)
31639 ,p_event_date => l_array_event_date(Idx)
31640 ,p_transaction_date => l_array_transaction_date(Idx)
31641 ,p_reference_num_1 => l_array_reference_num_1(Idx)
31642 ,p_reference_num_2 => l_array_reference_num_2(Idx)
31643 ,p_reference_num_3 => l_array_reference_num_3(Idx)
31644 ,p_reference_num_4 => l_array_reference_num_4(Idx)
31645 ,p_reference_char_1 => l_array_reference_char_1(Idx)
31646 ,p_reference_char_2 => l_array_reference_char_2(Idx)
31647 ,p_reference_char_3 => l_array_reference_char_3(Idx)
31648 ,p_reference_char_4 => l_array_reference_char_4(Idx)
31649 ,p_reference_date_1 => l_array_reference_date_1(Idx)
31650 ,p_reference_date_2 => l_array_reference_date_2(Idx)
31651 ,p_reference_date_3 => l_array_reference_date_3(Idx)
31652 ,p_reference_date_4 => l_array_reference_date_4(Idx)
31653 ,p_event_created_by => l_array_event_created_by(Idx)
31654 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
31655 --
31656 END IF;
31657
31658
31659
31660 --
31661 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
31662
31663 l_acct_reversal_source := SUBSTR(NULL, 1,30);
31664
31665 IF l_continue_with_lines THEN
31666 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
31667 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
31668
31669 xla_accounting_err_pkg.build_message
31670 (p_appli_s_name => 'XLA'
31671 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
31672 ,p_token_1 => 'LINE_NUMBER'
31673 ,p_value_1 => l_array_extract_line_num(Idx)
31674 ,p_token_2 => 'PRODUCT_NAME'
31675 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
31676 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
31677 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
31678 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
31679
31680 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
31681 --
31682 -- following sets the accounting attributes needed to reverse
31683 -- accounting for a distributeion
31684 --
31685
31686 --
31687 -- 5217187
31688 --
31689 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
31690 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
31691 g_array_event(l_event_id).array_value_num('header_index'));
31692 --
31693 --
31694
31695 -- No reversal code generated
31696
31697 xla_ae_lines_pkg.SetAcctReversalAttrs
31698 (p_event_id => l_event_id
31699 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
31700 ,p_calculate_acctd_flag => l_calculate_acctd_flag
31701 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
31702 END IF;
31703
31704 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
31705 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
31706
31707 --
31708 AcctLineType_30 (
31709 p_application_id => p_application_id
31710 ,p_event_id => l_event_id
31711 ,p_calculate_acctd_flag => l_calculate_acctd_flag
31712 ,p_calculate_g_l_flag => l_calculate_g_l_flag
31713 ,p_actual_flag => l_actual_flag
31714 ,p_balance_type_code => l_balance_type_code
31715 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
31716
31717 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
31718 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
31719 , p_source_5 => l_array_source_5(Idx)
31720 , p_source_6 => l_array_source_6(Idx)
31721 , p_source_6_meaning => l_array_source_6_meaning(Idx)
31722 , p_source_7 => l_array_source_7(Idx)
31723 , p_source_8 => l_array_source_8(Idx)
31724 , p_source_9 => l_array_source_9(Idx)
31725 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
31726 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
31727 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
31731 l_actual_gain_loss_ref := l_gain_or_loss_ref;
31728 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
31729 );
31730 If(l_balance_type_code = 'A') THEN
31732 END IF;
31733
31734 --
31735
31736
31737 --
31738 AcctLineType_31 (
31739 p_application_id => p_application_id
31740 ,p_event_id => l_event_id
31741 ,p_calculate_acctd_flag => l_calculate_acctd_flag
31742 ,p_calculate_g_l_flag => l_calculate_g_l_flag
31743 ,p_actual_flag => l_actual_flag
31744 ,p_balance_type_code => l_balance_type_code
31745 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
31746
31747 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
31748 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
31749 , p_source_5 => l_array_source_5(Idx)
31750 , p_source_6 => l_array_source_6(Idx)
31751 , p_source_6_meaning => l_array_source_6_meaning(Idx)
31752 , p_source_7 => l_array_source_7(Idx)
31753 , p_source_8 => l_array_source_8(Idx)
31754 , p_source_9 => l_array_source_9(Idx)
31755 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
31756 , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
31757 , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
31758 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
31759 );
31760 If(l_balance_type_code = 'A') THEN
31761 l_actual_gain_loss_ref := l_gain_or_loss_ref;
31762 END IF;
31763
31764 --
31765
31766 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
31767 -- or secondary ledger that has different currency with primary
31768 -- or alc that is calculated by sla
31769 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
31770 (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'))
31771
31772 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
31773 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
31774 AND (l_actual_flag = 'A')) THEN
31775 XLA_AE_LINES_PKG.CreateGainOrLossLines(
31776 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
31777 ,p_application_id => p_application_id
31778 ,p_amb_context_code => 'DEFAULT'
31779 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
31780 ,p_event_class_code => C_EVENT_CLASS_CODE
31781 ,p_event_type_code => C_EVENT_TYPE_CODE
31782
31783 ,p_gain_ccid => -1
31784 ,p_loss_ccid => -1
31785
31786 ,p_actual_flag => l_actual_flag
31787 ,p_enc_flag => null
31788 ,p_actual_g_l_ref => l_actual_gain_loss_ref
31789 ,p_enc_g_l_ref => null
31790 );
31791 END IF;
31792 END IF;
31793 END IF;
31794
31795 ELSE
31796 --
31797 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
31798 --
31799 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
31800 trace
31801 (p_msg => 'Trancaction revesal option is Y'
31802 ,p_level => C_LEVEL_STATEMENT
31803 ,p_module => l_log_module);
31804 END IF;
31805 END IF;
31806
31807 END LOOP;
31808 l_result := XLA_AE_LINES_PKG.InsertLines ;
31809 end loop;
31810 close line_cur;
31811
31812
31813 --
31814 -- insert headers into xla_ae_headers_gt table
31815 --
31816 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
31817
31818 -- insert into errors table here.
31819
31820 END LOOP;
31821
31822 --
31823 -- 4865292
31824 --
31825 -- Compare g_hdr_extract_count with event count in
31826 -- CreateHeadersAndLines.
31827 --
31828 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
31829
31830 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
31831 trace (p_msg => '# rows extracted from header extract objects '
31832 || ' (running total): '
31833 || g_hdr_extract_count
31834 ,p_level => C_LEVEL_STATEMENT
31835 ,p_module => l_log_module);
31836 END IF;
31837
31838 CLOSE header_cur;
31839 --
31840
31841 --
31842 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31843 trace
31844 (p_msg => 'END of EventClass_45'
31845 ,p_level => C_LEVEL_PROCEDURE
31846 ,p_module => l_log_module);
31847 END IF;
31848 --
31849 RETURN l_result;
31850 EXCEPTION
31851 WHEN xla_exceptions_pkg.application_exception THEN
31852
31853 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
31854
31855
31856 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
31857
31858 RAISE;
31859 WHEN OTHERS THEN
31860 xla_exceptions_pkg.raise_message
31861 (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_45');
31862 END EventClass_45;
31863 --
31864
31865 --
31866 --+============================================+
31867 --| |
31868 --| PRIVATE FUNCTION |
31869 --| |
31870 --+============================================+
31871 --
31872 FUNCTION CreateHeadersAndLines
31873 (p_application_id IN NUMBER
31874 ,p_base_ledger_id IN NUMBER
31875 ,p_target_ledger_id IN NUMBER
31876 ,p_pad_start_date IN DATE
31877 ,p_pad_end_date IN DATE
31878 ,p_primary_ledger_id IN NUMBER)
31879 RETURN BOOLEAN IS
31883 l_language VARCHAR2(30);
31880 l_created BOOLEAN:=FALSE;
31881 l_event_id NUMBER;
31882 l_event_date DATE;
31884 l_currency_code VARCHAR2(30);
31885 l_sla_ledger_id NUMBER;
31886 l_log_module VARCHAR2(240);
31887
31888 BEGIN
31889 --
31890 IF g_log_enabled THEN
31891 l_log_module := C_DEFAULT_MODULE||'.CreateHeadersAndLines';
31892 END IF;
31893 --
31894 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31895 trace
31896 (p_msg => 'BEGIN of CreateHeadersAndLines'
31897 ,p_level => C_LEVEL_PROCEDURE
31898 ,p_module => l_log_module);
31899 END IF;
31900
31901 l_language := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
31902 l_currency_code := xla_ae_journal_entry_pkg.g_cache_ledgers_info.currency_code;
31903 l_sla_ledger_id := xla_ae_journal_entry_pkg.g_cache_ledgers_info.sla_ledger_id;
31904
31905 --
31906 -- initialize array of lines with NULL
31907 --
31908 xla_ae_lines_pkg.SetNullLine;
31909
31910 --
31911 -- initialize header extract count -- Bug 4865292
31912 --
31913 g_hdr_extract_count:= 0;
31914
31915
31916 l_created := EventClass_32(
31917 p_application_id => p_application_id
31918 , p_base_ledger_id => p_base_ledger_id
31919 , p_target_ledger_id => p_target_ledger_id
31920 , p_language => l_language
31921 , p_currency_code => l_currency_code
31922 , p_sla_ledger_id => l_sla_ledger_id
31923 , p_pad_start_date => p_pad_start_date
31924 , p_pad_end_date => p_pad_end_date
31925 , p_primary_ledger_id => p_primary_ledger_id
31926 );
31927
31928
31929
31930 IF ( g_diagnostics_mode ='Y' ) THEN
31931
31932 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
31933 trace
31934 (p_msg => 'CALL Transaction Objects Diagnostics'
31935 ,p_level => C_LEVEL_STATEMENT
31936 ,p_module => l_log_module);
31937
31938 END IF;
31939
31940 insert_sources_32(
31941 p_target_ledger_id => p_target_ledger_id
31942 , p_language => l_language
31943 , p_sla_ledger_id => l_sla_ledger_id
31944 , p_pad_start_date => p_pad_start_date
31945 , p_pad_end_date => p_pad_end_date
31946 );
31947
31948 END IF;
31949
31950 l_created := EventClass_33(
31951 p_application_id => p_application_id
31952 , p_base_ledger_id => p_base_ledger_id
31953 , p_target_ledger_id => p_target_ledger_id
31954 , p_language => l_language
31955 , p_currency_code => l_currency_code
31956 , p_sla_ledger_id => l_sla_ledger_id
31957 , p_pad_start_date => p_pad_start_date
31958 , p_pad_end_date => p_pad_end_date
31959 , p_primary_ledger_id => p_primary_ledger_id
31960 );
31961
31962
31963
31964 IF ( g_diagnostics_mode ='Y' ) THEN
31965
31966 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
31967 trace
31968 (p_msg => 'CALL Transaction Objects Diagnostics'
31969 ,p_level => C_LEVEL_STATEMENT
31970 ,p_module => l_log_module);
31971
31972 END IF;
31973
31974 insert_sources_33(
31975 p_target_ledger_id => p_target_ledger_id
31976 , p_language => l_language
31977 , p_sla_ledger_id => l_sla_ledger_id
31978 , p_pad_start_date => p_pad_start_date
31979 , p_pad_end_date => p_pad_end_date
31980 );
31981
31982 END IF;
31983
31984 l_created := EventClass_34(
31985 p_application_id => p_application_id
31986 , p_base_ledger_id => p_base_ledger_id
31987 , p_target_ledger_id => p_target_ledger_id
31988 , p_language => l_language
31989 , p_currency_code => l_currency_code
31990 , p_sla_ledger_id => l_sla_ledger_id
31991 , p_pad_start_date => p_pad_start_date
31992 , p_pad_end_date => p_pad_end_date
31993 , p_primary_ledger_id => p_primary_ledger_id
31994 );
31995
31996
31997
31998 IF ( g_diagnostics_mode ='Y' ) THEN
31999
32000 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32001 trace
32002 (p_msg => 'CALL Transaction Objects Diagnostics'
32003 ,p_level => C_LEVEL_STATEMENT
32004 ,p_module => l_log_module);
32005
32006 END IF;
32007
32008 insert_sources_34(
32009 p_target_ledger_id => p_target_ledger_id
32010 , p_language => l_language
32011 , p_sla_ledger_id => l_sla_ledger_id
32012 , p_pad_start_date => p_pad_start_date
32013 , p_pad_end_date => p_pad_end_date
32014 );
32015
32016 END IF;
32017
32018 l_created := EventClass_35(
32019 p_application_id => p_application_id
32020 , p_base_ledger_id => p_base_ledger_id
32021 , p_target_ledger_id => p_target_ledger_id
32022 , p_language => l_language
32023 , p_currency_code => l_currency_code
32024 , p_sla_ledger_id => l_sla_ledger_id
32025 , p_pad_start_date => p_pad_start_date
32026 , p_pad_end_date => p_pad_end_date
32027 , p_primary_ledger_id => p_primary_ledger_id
32028 );
32029
32030
32034 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32031
32032 IF ( g_diagnostics_mode ='Y' ) THEN
32033
32035 trace
32036 (p_msg => 'CALL Transaction Objects Diagnostics'
32037 ,p_level => C_LEVEL_STATEMENT
32038 ,p_module => l_log_module);
32039
32040 END IF;
32041
32042 insert_sources_35(
32043 p_target_ledger_id => p_target_ledger_id
32044 , p_language => l_language
32045 , p_sla_ledger_id => l_sla_ledger_id
32046 , p_pad_start_date => p_pad_start_date
32047 , p_pad_end_date => p_pad_end_date
32048 );
32049
32050 END IF;
32051
32052 l_created := EventClass_36(
32053 p_application_id => p_application_id
32054 , p_base_ledger_id => p_base_ledger_id
32055 , p_target_ledger_id => p_target_ledger_id
32056 , p_language => l_language
32057 , p_currency_code => l_currency_code
32058 , p_sla_ledger_id => l_sla_ledger_id
32059 , p_pad_start_date => p_pad_start_date
32060 , p_pad_end_date => p_pad_end_date
32061 , p_primary_ledger_id => p_primary_ledger_id
32062 );
32063
32064
32065
32066 IF ( g_diagnostics_mode ='Y' ) THEN
32067
32068 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32069 trace
32070 (p_msg => 'CALL Transaction Objects Diagnostics'
32071 ,p_level => C_LEVEL_STATEMENT
32072 ,p_module => l_log_module);
32073
32074 END IF;
32075
32076 insert_sources_36(
32077 p_target_ledger_id => p_target_ledger_id
32078 , p_language => l_language
32079 , p_sla_ledger_id => l_sla_ledger_id
32080 , p_pad_start_date => p_pad_start_date
32081 , p_pad_end_date => p_pad_end_date
32082 );
32083
32084 END IF;
32085
32086 l_created := EventClass_37(
32087 p_application_id => p_application_id
32088 , p_base_ledger_id => p_base_ledger_id
32089 , p_target_ledger_id => p_target_ledger_id
32090 , p_language => l_language
32091 , p_currency_code => l_currency_code
32092 , p_sla_ledger_id => l_sla_ledger_id
32093 , p_pad_start_date => p_pad_start_date
32094 , p_pad_end_date => p_pad_end_date
32095 , p_primary_ledger_id => p_primary_ledger_id
32096 );
32097
32098
32099
32100 IF ( g_diagnostics_mode ='Y' ) THEN
32101
32102 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32103 trace
32104 (p_msg => 'CALL Transaction Objects Diagnostics'
32105 ,p_level => C_LEVEL_STATEMENT
32106 ,p_module => l_log_module);
32107
32108 END IF;
32109
32110 insert_sources_37(
32111 p_target_ledger_id => p_target_ledger_id
32112 , p_language => l_language
32113 , p_sla_ledger_id => l_sla_ledger_id
32114 , p_pad_start_date => p_pad_start_date
32115 , p_pad_end_date => p_pad_end_date
32116 );
32117
32118 END IF;
32119
32120 l_created := EventClass_38(
32121 p_application_id => p_application_id
32122 , p_base_ledger_id => p_base_ledger_id
32123 , p_target_ledger_id => p_target_ledger_id
32124 , p_language => l_language
32125 , p_currency_code => l_currency_code
32126 , p_sla_ledger_id => l_sla_ledger_id
32127 , p_pad_start_date => p_pad_start_date
32128 , p_pad_end_date => p_pad_end_date
32129 , p_primary_ledger_id => p_primary_ledger_id
32130 );
32131
32132
32133
32134 IF ( g_diagnostics_mode ='Y' ) THEN
32135
32136 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32137 trace
32138 (p_msg => 'CALL Transaction Objects Diagnostics'
32139 ,p_level => C_LEVEL_STATEMENT
32140 ,p_module => l_log_module);
32141
32142 END IF;
32143
32144 insert_sources_38(
32145 p_target_ledger_id => p_target_ledger_id
32146 , p_language => l_language
32147 , p_sla_ledger_id => l_sla_ledger_id
32148 , p_pad_start_date => p_pad_start_date
32149 , p_pad_end_date => p_pad_end_date
32150 );
32151
32152 END IF;
32153
32154 l_created := EventClass_39(
32155 p_application_id => p_application_id
32156 , p_base_ledger_id => p_base_ledger_id
32157 , p_target_ledger_id => p_target_ledger_id
32158 , p_language => l_language
32159 , p_currency_code => l_currency_code
32160 , p_sla_ledger_id => l_sla_ledger_id
32161 , p_pad_start_date => p_pad_start_date
32162 , p_pad_end_date => p_pad_end_date
32163 , p_primary_ledger_id => p_primary_ledger_id
32164 );
32165
32166
32167
32168 IF ( g_diagnostics_mode ='Y' ) THEN
32169
32170 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32171 trace
32172 (p_msg => 'CALL Transaction Objects Diagnostics'
32173 ,p_level => C_LEVEL_STATEMENT
32174 ,p_module => l_log_module);
32175
32176 END IF;
32177
32178 insert_sources_39(
32182 , p_pad_start_date => p_pad_start_date
32179 p_target_ledger_id => p_target_ledger_id
32180 , p_language => l_language
32181 , p_sla_ledger_id => l_sla_ledger_id
32183 , p_pad_end_date => p_pad_end_date
32184 );
32185
32186 END IF;
32187
32188 l_created := EventClass_40(
32189 p_application_id => p_application_id
32190 , p_base_ledger_id => p_base_ledger_id
32191 , p_target_ledger_id => p_target_ledger_id
32192 , p_language => l_language
32193 , p_currency_code => l_currency_code
32194 , p_sla_ledger_id => l_sla_ledger_id
32195 , p_pad_start_date => p_pad_start_date
32196 , p_pad_end_date => p_pad_end_date
32197 , p_primary_ledger_id => p_primary_ledger_id
32198 );
32199
32200
32201
32202 IF ( g_diagnostics_mode ='Y' ) THEN
32203
32204 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32205 trace
32206 (p_msg => 'CALL Transaction Objects Diagnostics'
32207 ,p_level => C_LEVEL_STATEMENT
32208 ,p_module => l_log_module);
32209
32210 END IF;
32211
32212 insert_sources_40(
32213 p_target_ledger_id => p_target_ledger_id
32214 , p_language => l_language
32215 , p_sla_ledger_id => l_sla_ledger_id
32216 , p_pad_start_date => p_pad_start_date
32217 , p_pad_end_date => p_pad_end_date
32218 );
32219
32220 END IF;
32221
32222 l_created := EventClass_41(
32223 p_application_id => p_application_id
32224 , p_base_ledger_id => p_base_ledger_id
32225 , p_target_ledger_id => p_target_ledger_id
32226 , p_language => l_language
32227 , p_currency_code => l_currency_code
32228 , p_sla_ledger_id => l_sla_ledger_id
32229 , p_pad_start_date => p_pad_start_date
32230 , p_pad_end_date => p_pad_end_date
32231 , p_primary_ledger_id => p_primary_ledger_id
32232 );
32233
32234
32235
32236 IF ( g_diagnostics_mode ='Y' ) THEN
32237
32238 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32239 trace
32240 (p_msg => 'CALL Transaction Objects Diagnostics'
32241 ,p_level => C_LEVEL_STATEMENT
32242 ,p_module => l_log_module);
32243
32244 END IF;
32245
32246 insert_sources_41(
32247 p_target_ledger_id => p_target_ledger_id
32248 , p_language => l_language
32249 , p_sla_ledger_id => l_sla_ledger_id
32250 , p_pad_start_date => p_pad_start_date
32251 , p_pad_end_date => p_pad_end_date
32252 );
32253
32254 END IF;
32255
32256 l_created := EventClass_42(
32257 p_application_id => p_application_id
32258 , p_base_ledger_id => p_base_ledger_id
32259 , p_target_ledger_id => p_target_ledger_id
32260 , p_language => l_language
32261 , p_currency_code => l_currency_code
32262 , p_sla_ledger_id => l_sla_ledger_id
32263 , p_pad_start_date => p_pad_start_date
32264 , p_pad_end_date => p_pad_end_date
32265 , p_primary_ledger_id => p_primary_ledger_id
32266 );
32267
32268
32269
32270 IF ( g_diagnostics_mode ='Y' ) THEN
32271
32272 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32273 trace
32274 (p_msg => 'CALL Transaction Objects Diagnostics'
32275 ,p_level => C_LEVEL_STATEMENT
32276 ,p_module => l_log_module);
32277
32278 END IF;
32279
32280 insert_sources_42(
32281 p_target_ledger_id => p_target_ledger_id
32282 , p_language => l_language
32283 , p_sla_ledger_id => l_sla_ledger_id
32284 , p_pad_start_date => p_pad_start_date
32285 , p_pad_end_date => p_pad_end_date
32286 );
32287
32288 END IF;
32289
32290 l_created := EventClass_43(
32291 p_application_id => p_application_id
32292 , p_base_ledger_id => p_base_ledger_id
32293 , p_target_ledger_id => p_target_ledger_id
32294 , p_language => l_language
32295 , p_currency_code => l_currency_code
32296 , p_sla_ledger_id => l_sla_ledger_id
32297 , p_pad_start_date => p_pad_start_date
32298 , p_pad_end_date => p_pad_end_date
32299 , p_primary_ledger_id => p_primary_ledger_id
32300 );
32301
32302
32303
32304 IF ( g_diagnostics_mode ='Y' ) THEN
32305
32306 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32307 trace
32308 (p_msg => 'CALL Transaction Objects Diagnostics'
32309 ,p_level => C_LEVEL_STATEMENT
32310 ,p_module => l_log_module);
32311
32312 END IF;
32313
32314 insert_sources_43(
32315 p_target_ledger_id => p_target_ledger_id
32316 , p_language => l_language
32317 , p_sla_ledger_id => l_sla_ledger_id
32318 , p_pad_start_date => p_pad_start_date
32319 , p_pad_end_date => p_pad_end_date
32320 );
32321
32322 END IF;
32323
32324 l_created := EventClass_44(
32328 , p_language => l_language
32325 p_application_id => p_application_id
32326 , p_base_ledger_id => p_base_ledger_id
32327 , p_target_ledger_id => p_target_ledger_id
32329 , p_currency_code => l_currency_code
32330 , p_sla_ledger_id => l_sla_ledger_id
32331 , p_pad_start_date => p_pad_start_date
32332 , p_pad_end_date => p_pad_end_date
32333 , p_primary_ledger_id => p_primary_ledger_id
32334 );
32335
32336
32337
32338 IF ( g_diagnostics_mode ='Y' ) THEN
32339
32340 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32341 trace
32342 (p_msg => 'CALL Transaction Objects Diagnostics'
32343 ,p_level => C_LEVEL_STATEMENT
32344 ,p_module => l_log_module);
32345
32346 END IF;
32347
32348 insert_sources_44(
32349 p_target_ledger_id => p_target_ledger_id
32350 , p_language => l_language
32351 , p_sla_ledger_id => l_sla_ledger_id
32352 , p_pad_start_date => p_pad_start_date
32353 , p_pad_end_date => p_pad_end_date
32354 );
32355
32356 END IF;
32357
32358 l_created := EventClass_45(
32359 p_application_id => p_application_id
32360 , p_base_ledger_id => p_base_ledger_id
32361 , p_target_ledger_id => p_target_ledger_id
32362 , p_language => l_language
32363 , p_currency_code => l_currency_code
32364 , p_sla_ledger_id => l_sla_ledger_id
32365 , p_pad_start_date => p_pad_start_date
32366 , p_pad_end_date => p_pad_end_date
32367 , p_primary_ledger_id => p_primary_ledger_id
32368 );
32369
32370
32371
32372 IF ( g_diagnostics_mode ='Y' ) THEN
32373
32374 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32375 trace
32376 (p_msg => 'CALL Transaction Objects Diagnostics'
32377 ,p_level => C_LEVEL_STATEMENT
32378 ,p_module => l_log_module);
32379
32380 END IF;
32381
32382 insert_sources_45(
32383 p_target_ledger_id => p_target_ledger_id
32384 , p_language => l_language
32385 , p_sla_ledger_id => l_sla_ledger_id
32386 , p_pad_start_date => p_pad_start_date
32387 , p_pad_end_date => p_pad_end_date
32388 );
32389
32390 END IF;
32391
32392
32393 --
32394 -- Bug 4865292
32395 -- When the number of events and that of header extract do not match,
32396 -- set the no header extract flag to indicate there are some issues
32397 -- in header extract.
32398 --
32399 -- Event count context is set in xla_accounting_pkg.unit_processor.
32400 -- Build_Message for this error is called in xla_accounting_pkg.post_accounting
32401 -- to report it as a general error.
32402 --
32403 IF xla_context_pkg.get_event_count_context <> g_hdr_extract_count
32404 AND xla_context_pkg.get_event_nohdr_context <> 'Y' THEN
32405
32406 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32407 trace
32408 (p_msg => '# of extracted headers and events does not match'
32409 ,p_level => C_LEVEL_STATEMENT
32410 ,p_module => l_log_module);
32411
32412 trace
32413 (p_msg => '# of extracted headers: '
32414 ||g_hdr_extract_count
32415 ,p_level => C_LEVEL_STATEMENT
32416 ,p_module => l_log_module);
32417
32418 trace
32419 (p_msg => '# of events in xla_events_gt: '
32420 ||xla_context_pkg.get_event_count_context
32421 ,p_level => C_LEVEL_STATEMENT
32422 ,p_module => l_log_module);
32423
32424 trace
32425 (p_msg => 'Event No Header Extract Context: '
32426 ||xla_context_pkg.get_event_nohdr_context
32427 ,p_level => C_LEVEL_STATEMENT
32428 ,p_module => l_log_module);
32429
32430 END IF;
32431
32432
32433 xla_context_pkg.set_event_nohdr_context
32434 (p_nohdr_extract_flag => 'Y'
32435 ,p_client_id => sys_context('USERENV','CLIENT_IDENTIFIER'));
32436
32437 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32438 trace
32439 (p_msg => 'No Header Extract Flag is set to Y'
32440 ,p_level => C_LEVEL_STATEMENT
32441 ,p_module => l_log_module);
32442 END IF;
32443
32444 END IF;
32445
32446 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32447 trace
32448 (p_msg => 'END of CreateHeadersAndLines'
32449 ,p_level => C_LEVEL_PROCEDURE
32450 ,p_module => l_log_module);
32451 END IF;
32452
32453 RETURN l_created;
32454 EXCEPTION
32455 WHEN xla_exceptions_pkg.application_exception THEN
32456 RAISE;
32457 WHEN OTHERS THEN
32458 xla_exceptions_pkg.raise_message
32459 (p_location => 'XLA_00540_AAD_S_000014_PKG.CreateHeadersAndLines');
32460 END CreateHeadersAndLines;
32461 --
32462 --
32463
32464 --
32465 --+============================================+
32466 --| |
32467 --| PUBLIC FUNCTION |
32468 --| |
32469 --+============================================+
32470 --
32471 FUNCTION CreateJournalEntries
32472 (p_application_id IN NUMBER
32473 ,p_base_ledger_id IN NUMBER
32474 ,p_pad_start_date IN DATE
32478 l_log_module VARCHAR2(240);
32475 ,p_pad_end_date IN DATE
32476 ,p_primary_ledger_id IN NUMBER)
32477 RETURN NUMBER IS
32479 l_array_ledgers xla_accounting_cache_pkg.t_array_ledger_id;
32480 l_temp_result BOOLEAN;
32481 l_result NUMBER;
32482 BEGIN
32483 --
32484 IF g_log_enabled THEN
32485 l_log_module := C_DEFAULT_MODULE||'.CreateJournalEntries';
32486 END IF;
32487 --
32488 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32489 trace
32490 (p_msg => 'BEGIN of CreateJournalEntries'||
32491 ' - p_base_ledger_id = '||TO_CHAR(p_base_ledger_id)
32492 ,p_level => C_LEVEL_PROCEDURE
32493 ,p_module => l_log_module);
32494
32495 END IF;
32496
32497 --
32498 g_diagnostics_mode:= xla_accounting_engine_pkg.g_diagnostics_mode;
32499
32500 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32501 trace
32502 (p_msg => 'g_diagnostics_mode = '||g_diagnostics_mode
32503 ,p_level => C_LEVEL_STATEMENT
32504 ,p_module => l_log_module);
32505 END IF;
32506 --
32507 xla_ae_journal_entry_pkg.SetProductAcctDefinition
32508 (p_product_rule_code => 'OKL_DEFAULT'
32509 ,p_product_rule_type_code => 'S'
32510 ,p_product_rule_version => ''
32511 ,p_product_rule_name => 'Lease Default'
32512 ,p_amb_context_code => 'DEFAULT'
32513 );
32514
32515 l_array_ledgers :=
32516 xla_ae_journal_entry_pkg.GetAlternateCurrencyLedger
32517 (p_base_ledger_id => p_base_ledger_id);
32518
32519 FOR Idx IN 1 .. l_array_ledgers.COUNT LOOP
32520 l_temp_result :=
32521 XLA_AE_JOURNAL_ENTRY_PKG.GetLedgersInfo
32522 (p_application_id => p_application_id
32523 ,p_base_ledger_id => p_base_ledger_id
32524 ,p_target_ledger_id => l_array_ledgers(Idx)
32525 ,p_primary_ledger_id => p_primary_ledger_id
32526 ,p_pad_start_date => p_pad_start_date
32527 ,p_pad_end_date => p_pad_end_date);
32528
32529 l_temp_result :=
32530 l_temp_result AND
32531 CreateHeadersAndLines
32532 (p_application_id => p_application_id
32533 ,p_base_ledger_id => p_base_ledger_id
32534 ,p_target_ledger_id => l_array_ledgers(Idx)
32535 ,p_pad_start_date => p_pad_start_date
32536 ,p_pad_end_date => p_pad_end_date
32537 ,p_primary_ledger_id => p_primary_ledger_id
32538 );
32539 END LOOP;
32540
32541
32542 IF (g_diagnostics_mode = 'Y' AND
32543 C_LEVEL_UNEXPECTED >= g_log_level AND
32544 xla_environment_pkg.g_Req_Id IS NOT NULL ) THEN
32545
32546 xla_accounting_dump_pkg.acctg_event_extract_log(
32547 p_application_id => p_application_id
32548 ,p_request_id => xla_environment_pkg.g_Req_Id
32549 );
32550
32551 END IF;
32552
32553 CASE l_temp_result
32554 WHEN TRUE THEN l_result := 0;
32555 ELSE l_result := 2;
32556 END CASE;
32557
32558 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32559 trace
32560 (p_msg => 'return value. = '||TO_CHAR(l_result)
32561 ,p_level => C_LEVEL_PROCEDURE
32562 ,p_module => l_log_module);
32563 trace
32564 (p_msg => 'END of CreateJournalEntries '
32565 ,p_level => C_LEVEL_PROCEDURE
32566 ,p_module => l_log_module);
32567 END IF;
32568
32569 RETURN l_result;
32570 EXCEPTION
32571 WHEN xla_exceptions_pkg.application_exception THEN
32572 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32573 trace
32574 (p_msg => 'ERROR. = '||sqlerrm
32575 ,p_level => C_LEVEL_PROCEDURE
32576 ,p_module => l_log_module);
32577 END IF;
32578 RAISE;
32579 WHEN OTHERS THEN
32580 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32581 trace
32582 (p_msg => 'ERROR. = '||sqlerrm
32583 ,p_level => C_LEVEL_PROCEDURE
32584 ,p_module => l_log_module);
32585 END IF;
32586 xla_exceptions_pkg.raise_message
32587 (p_location => 'XLA_00540_AAD_S_000014_PKG.CreateJournalEntries');
32588 END CreateJournalEntries;
32589 --
32590 --=============================================================================
32591 --
32592 --
32593 --
32594 --
32595 --
32596 --
32597 --
32598 --
32599 --
32600 --
32601 --
32602 --
32603 --
32604 --
32605 --
32606 --
32607 --
32608 --
32609 --
32610 --
32611 --
32612 --
32613 --=============================================================================
32614 --=============================================================================
32615 -- *********** Initialization routine **********
32616 --=============================================================================
32617
32618 BEGIN
32619 g_log_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
32620 g_log_enabled := fnd_log.test
32621 (log_level => g_log_level
32622 ,module => C_DEFAULT_MODULE);
32623
32624 IF NOT g_log_enabled THEN
32625 g_log_level := C_LEVEL_LOG_DISABLED;
32626 END IF;
32627 --
32628 END XLA_00540_AAD_S_000014_PKG;
32629 --