[Home] [Help]
PACKAGE BODY: APPS.XLA_00260_AAD_S_000001_PKG
Source
1 PACKAGE BODY XLA_00260_AAD_S_000001_PKG AS
2 --
3 /*======================================================================+
4 | Copyright (c) 1997 Oracle Corporation |
5 | Redwood Shores, CA, USA |
6 | All rights reserved. |
7 +=======================================================================+
8 | Package Name |
9 | XLA_00260_AAD_S_000001_PKG |
10 | |
11 | DESCRIPTION |
12 | Package generated From Product Accounting Definition |
13 | Name : Cash Management Standard Accounting |
14 | Code : CE_STANDARD_ACCOUNTING |
15 | Owner : PRODUCT |
16 | Version : |
17 | AMB Context Code: DEFAULT |
18 | HISTORY |
19 | Generated at 03-01-2007 at 11:01:19 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_00260_AAD_S_000001_PKG';
82
83 C_CHAR CONSTANT VARCHAR2(30) := fnd_global.local_chr(12); -- 4219869 Business flow
84 C_NUM CONSTANT NUMBER := 9.99E125; -- 4219869 Business flow
85
86 g_log_level NUMBER;
87 g_log_enabled BOOLEAN;
88
89 PROCEDURE trace
90 (p_msg IN VARCHAR2
91 ,p_level IN NUMBER
92 ,p_module IN VARCHAR2 ) IS
93 BEGIN
94 ----------------------------------------------------------------------------
95 -- Following is for FND log.
96 ----------------------------------------------------------------------------
97 IF (p_msg IS NULL AND p_level >= g_log_level) THEN
98 fnd_log.message(p_level, p_module);
99 ELSIF p_level >= g_log_level THEN
100 fnd_log.string(p_level, p_module, p_msg);
101 END IF;
102
103 EXCEPTION
104 WHEN xla_exceptions_pkg.application_exception THEN
105 RAISE;
106 WHEN OTHERS THEN
110
107 xla_exceptions_pkg.raise_message
108 (p_location => 'XLA_00260_AAD_S_000001_PKG.trace');
109 END trace;
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
186 ,p_level => C_LEVEL_ERROR
183 IF (C_LEVEL_ERROR >= g_log_level) THEN
184 trace
185 (p_msg => 'ERROR: XLA_AP_NO_LOOKUP_MEANING'
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_00260_AAD_S_000001_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_00260_AAD_S_000001_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 --Cashflow Reference Text
241 , p_source_1 IN VARCHAR2
242 )
243 RETURN VARCHAR2
244 IS
245 l_component_type VARCHAR2(80) ;
246 l_component_code VARCHAR2(30) ;
247 l_component_type_code VARCHAR2(1) ;
248 l_component_appl_id INTEGER ;
249 l_amb_context_code VARCHAR2(30) ;
250 l_ledger_language VARCHAR2(30) ;
251 l_source VARCHAR2(1996) ;
252 l_description VARCHAR2(2000) ;
253 l_log_module VARCHAR2(240) ;
254 BEGIN
255 IF g_log_enabled THEN
256 l_log_module := C_DEFAULT_MODULE||'.Description_1';
257 END IF;
258 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
259 trace
260 (p_msg => 'BEGIN of Description_1'
261 ,p_level => C_LEVEL_PROCEDURE
262 ,p_module => l_log_module);
263 END IF;
264
265 l_ledger_language := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
266 l_component_type := 'AMB_DESCRIPTION';
267 l_component_code := 'BSL_HEADER_DESCRIPTION';
268 l_component_type_code := 'S';
269 l_component_appl_id := 260;
270 l_amb_context_code := 'DEFAULT';
271 l_source := NULL;
272 l_description := NULL;
273
274
275
276 l_source := SUBSTR(p_source_1,1,1996);
277 IF l_source IS NOT NULL THEN
278 l_description := SUBSTR(CONCAT(l_description,l_source),1,2000);
279 l_description := SUBSTR(CONCAT(l_description,' '),1,2000);
280 END IF;
281 l_description := SUBSTR(l_description,1,1996);
282 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
283 trace
284 (p_msg => 'END of Description_1'
285 ,p_level => C_LEVEL_PROCEDURE
286 ,p_module => l_log_module);
287
288 END IF;
289 RETURN l_description;
290
291 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
292 trace
293 (p_msg => 'END of Description_1'
294 ,p_level => C_LEVEL_PROCEDURE
295 ,p_module => l_log_module);
296 END IF;
297 RETURN NULL;
298 EXCEPTION
299 WHEN VALUE_ERROR THEN
300 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
304 ,p_module => l_log_module);
301 trace
302 (p_msg => 'ERROR: '||sqlerrm
303 ,p_level => C_LEVEL_EXCEPTION
305 END IF;
306 RAISE;
307 WHEN xla_exceptions_pkg.application_exception THEN
308 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
309 trace
310 (p_msg => 'ERROR: '||sqlerrm
311 ,p_level => C_LEVEL_EXCEPTION
312 ,p_module => l_log_module);
313 END IF;
314 RAISE;
315 WHEN OTHERS THEN
316 xla_exceptions_pkg.raise_message
317 (p_location => 'XLA_00260_AAD_S_000001_PKG.Description_1');
318 END Description_1;
319
320 ---------------------------------------
321 --
322 -- PRIVATE FUNCTION
323 -- Description_2
324 --
325 ---------------------------------------
326 FUNCTION Description_2 (
327 p_application_id IN NUMBER
328 , p_ae_header_id IN NUMBER DEFAULT NULL
329 --Cashflow Description
333 IS
330 , p_source_2 IN VARCHAR2
331 )
332 RETURN VARCHAR2
334 l_component_type VARCHAR2(80) ;
335 l_component_code VARCHAR2(30) ;
336 l_component_type_code VARCHAR2(1) ;
337 l_component_appl_id INTEGER ;
338 l_amb_context_code VARCHAR2(30) ;
339 l_ledger_language VARCHAR2(30) ;
340 l_source VARCHAR2(1996) ;
341 l_description VARCHAR2(2000) ;
342 l_log_module VARCHAR2(240) ;
343 BEGIN
344 IF g_log_enabled THEN
345 l_log_module := C_DEFAULT_MODULE||'.Description_2';
346 END IF;
347 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
348 trace
349 (p_msg => 'BEGIN of Description_2'
350 ,p_level => C_LEVEL_PROCEDURE
351 ,p_module => l_log_module);
352 END IF;
353
354 l_ledger_language := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
355 l_component_type := 'AMB_DESCRIPTION';
356 l_component_code := 'BSL_LINE_DESCRIPTION';
357 l_component_type_code := 'S';
358 l_component_appl_id := 260;
359 l_amb_context_code := 'DEFAULT';
360 l_source := NULL;
361 l_description := NULL;
362
363
364
365 l_source := SUBSTR(p_source_2,1,1996);
366 IF l_source IS NOT NULL THEN
367 l_description := SUBSTR(CONCAT(l_description,l_source),1,2000);
368 l_description := SUBSTR(CONCAT(l_description,' '),1,2000);
369 END IF;
370 l_description := SUBSTR(l_description,1,1996);
371 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
372 trace
373 (p_msg => 'END of Description_2'
374 ,p_level => C_LEVEL_PROCEDURE
375 ,p_module => l_log_module);
376
377 END IF;
378 RETURN l_description;
379
380 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
381 trace
385 END IF;
382 (p_msg => 'END of Description_2'
383 ,p_level => C_LEVEL_PROCEDURE
384 ,p_module => l_log_module);
386 RETURN NULL;
387 EXCEPTION
388 WHEN VALUE_ERROR THEN
389 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
390 trace
391 (p_msg => 'ERROR: '||sqlerrm
392 ,p_level => C_LEVEL_EXCEPTION
393 ,p_module => l_log_module);
394 END IF;
395 RAISE;
396 WHEN xla_exceptions_pkg.application_exception THEN
397 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
398 trace
399 (p_msg => 'ERROR: '||sqlerrm
400 ,p_level => C_LEVEL_EXCEPTION
401 ,p_module => l_log_module);
402 END IF;
403 RAISE;
404 WHEN OTHERS THEN
405 xla_exceptions_pkg.raise_message
406 (p_location => 'XLA_00260_AAD_S_000001_PKG.Description_2');
407 END Description_2;
408
409 ---------------------------------------
410 --
411 -- PRIVATE FUNCTION
412 -- AcctDerRule_3
413 --
414 ---------------------------------------
415 FUNCTION AcctDerRule_3 (
416 p_application_id IN NUMBER
417 , p_ae_header_id IN NUMBER
418 , p_side IN VARCHAR2
419 --Cashflow Bank Account Bank Charges Account
420 , p_source_3 IN NUMBER
421 , x_transaction_coa_id OUT NOCOPY NUMBER
422 , x_accounting_coa_id OUT NOCOPY NUMBER
423 , x_value_type_code OUT NOCOPY VARCHAR2
424 )
425 RETURN NUMBER
426 IS
427 l_component_type VARCHAR2(80) ;
428 l_component_code VARCHAR2(30) ;
429 l_component_type_code VARCHAR2(1) ;
430 l_component_appl_id INTEGER ;
431 l_amb_context_code VARCHAR2(30) ;
432 l_log_module VARCHAR2(240) ;
433 l_output_value NUMBER ;
434 BEGIN
435 IF g_log_enabled THEN
436 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_3';
437 END IF;
438 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
439 trace
440 (p_msg => 'BEGIN of AcctDerRule_3'
441 ,p_level => C_LEVEL_PROCEDURE
442 ,p_module => l_log_module);
443 END IF;
444 --
445 l_component_type := 'AMB_ADR';
446 l_component_code := 'CE_BANK_CHARGES';
447 l_component_type_code := 'S';
448 l_component_appl_id := 260;
449 l_amb_context_code := 'DEFAULT';
450 x_transaction_coa_id := null;
451 x_accounting_coa_id := null;
452 --
453
454 --
455 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
456 trace
460 END IF;
457 (p_msg => 'END of AcctDerRule_3'
458 ,p_level => C_LEVEL_PROCEDURE
459 ,p_module => l_log_module);
461 x_value_type_code := 'S';
462 l_output_value := TO_NUMBER(TO_NUMBER(p_source_3));
463 RETURN l_output_value;
464
465 --
466 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
467 trace
468 (p_msg => 'END of AcctDerRule_3(invalid)'
469 ,p_level => C_LEVEL_PROCEDURE
470 ,p_module => l_log_module);
471 END IF;
472 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
473 x_value_type_code := null;
474 l_output_value := null;
475 xla_accounting_err_pkg.build_message
476 (p_appli_s_name => 'XLA'
477 ,p_msg_name => 'XLA_AP_INVALID_ADR'
478 ,p_token_1 => 'COMPONENT_NAME'
479 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
480 l_component_type
481 , l_component_code
482 , l_component_type_code
483 , l_component_appl_id
484 , l_amb_context_code
485 )
486 ,p_token_2 => 'OWNER'
487 ,p_value_2 => xla_lookups_pkg.get_meaning(
491 ,p_token_3 => 'PAD_NAME'
488 'XLA_OWNER_TYPE'
489 ,l_component_type_code
490 )
495 'XLA_OWNER_TYPE'
492 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
493 ,p_token_4 => 'PAD_OWNER'
494 ,p_value_4 => xla_lookups_pkg.get_meaning(
496 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
497 )
498 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
499 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
500 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
501 ,p_ae_header_id => NULL
502 );
503 RETURN l_output_value;
504 EXCEPTION
505 WHEN xla_exceptions_pkg.application_exception THEN
506 RAISE;
507 WHEN OTHERS THEN
508 xla_exceptions_pkg.raise_message
509 (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctDerRule_3');
510 END AcctDerRule_3;
511 --
512
513 ---------------------------------------
514 --
515 -- PRIVATE FUNCTION
516 -- AcctDerRule_4
517 --
518 ---------------------------------------
519 FUNCTION AcctDerRule_4 (
520 p_application_id IN NUMBER
521 , p_ae_header_id IN NUMBER
522 , p_side IN VARCHAR2
523 --Cashflow Bank Account Bank Errors Account
524 , p_source_4 IN NUMBER
525 , x_transaction_coa_id OUT NOCOPY NUMBER
526 , x_accounting_coa_id OUT NOCOPY NUMBER
527 , x_value_type_code OUT NOCOPY VARCHAR2
528 )
529 RETURN NUMBER
530 IS
531 l_component_type VARCHAR2(80) ;
532 l_component_code VARCHAR2(30) ;
533 l_component_type_code VARCHAR2(1) ;
534 l_component_appl_id INTEGER ;
535 l_amb_context_code VARCHAR2(30) ;
536 l_log_module VARCHAR2(240) ;
537 l_output_value NUMBER ;
538 BEGIN
539 IF g_log_enabled THEN
540 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_4';
541 END IF;
542 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
543 trace
544 (p_msg => 'BEGIN of AcctDerRule_4'
545 ,p_level => C_LEVEL_PROCEDURE
546 ,p_module => l_log_module);
547 END IF;
548 --
549 l_component_type := 'AMB_ADR';
550 l_component_code := 'CE_BANK_ERRORS';
551 l_component_type_code := 'S';
552 l_component_appl_id := 260;
553 l_amb_context_code := 'DEFAULT';
554 x_transaction_coa_id := null;
555 x_accounting_coa_id := null;
556 --
557
558 --
559 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
560 trace
561 (p_msg => 'END of AcctDerRule_4'
562 ,p_level => C_LEVEL_PROCEDURE
563 ,p_module => l_log_module);
564 END IF;
565 x_value_type_code := 'S';
566 l_output_value := TO_NUMBER(TO_NUMBER(p_source_4));
567 RETURN l_output_value;
568
569 --
570 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
571 trace
572 (p_msg => 'END of AcctDerRule_4(invalid)'
573 ,p_level => C_LEVEL_PROCEDURE
574 ,p_module => l_log_module);
575 END IF;
576 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
577 x_value_type_code := null;
578 l_output_value := null;
579 xla_accounting_err_pkg.build_message
580 (p_appli_s_name => 'XLA'
581 ,p_msg_name => 'XLA_AP_INVALID_ADR'
582 ,p_token_1 => 'COMPONENT_NAME'
583 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
584 l_component_type
585 , l_component_code
586 , l_component_type_code
587 , l_component_appl_id
588 , l_amb_context_code
589 )
590 ,p_token_2 => 'OWNER'
591 ,p_value_2 => xla_lookups_pkg.get_meaning(
592 'XLA_OWNER_TYPE'
593 ,l_component_type_code
594 )
595 ,p_token_3 => 'PAD_NAME'
596 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
597 ,p_token_4 => 'PAD_OWNER'
598 ,p_value_4 => xla_lookups_pkg.get_meaning(
599 'XLA_OWNER_TYPE'
600 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
601 )
602 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
603 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
604 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
605 ,p_ae_header_id => NULL
606 );
607 RETURN l_output_value;
608 EXCEPTION
609 WHEN xla_exceptions_pkg.application_exception THEN
610 RAISE;
611 WHEN OTHERS THEN
612 xla_exceptions_pkg.raise_message
613 (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctDerRule_4');
614 END AcctDerRule_4;
615 --
616
617 ---------------------------------------
618 --
622 ---------------------------------------
619 -- PRIVATE FUNCTION
620 -- AcctDerRule_5
621 --
623 FUNCTION AcctDerRule_5 (
624 p_application_id IN NUMBER
625 , p_ae_header_id IN NUMBER
626 , p_side IN VARCHAR2
627 --Cashflow Bank Account Cash Account
628 , p_source_5 IN NUMBER
629 , x_transaction_coa_id OUT NOCOPY NUMBER
630 , x_accounting_coa_id OUT NOCOPY NUMBER
631 , x_value_type_code OUT NOCOPY VARCHAR2
632 )
633 RETURN NUMBER
634 IS
635 l_component_type VARCHAR2(80) ;
636 l_component_code VARCHAR2(30) ;
637 l_component_type_code VARCHAR2(1) ;
638 l_component_appl_id INTEGER ;
639 l_amb_context_code VARCHAR2(30) ;
640 l_log_module VARCHAR2(240) ;
641 l_output_value NUMBER ;
642 BEGIN
643 IF g_log_enabled THEN
644 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_5';
645 END IF;
646 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
647 trace
648 (p_msg => 'BEGIN of AcctDerRule_5'
649 ,p_level => C_LEVEL_PROCEDURE
650 ,p_module => l_log_module);
651 END IF;
652 --
653 l_component_type := 'AMB_ADR';
654 l_component_code := 'CE_CASH';
655 l_component_type_code := 'S';
656 l_component_appl_id := 260;
657 l_amb_context_code := 'DEFAULT';
658 x_transaction_coa_id := null;
659 x_accounting_coa_id := null;
660 --
661
662 --
663 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
664 trace
665 (p_msg => 'END of AcctDerRule_5'
666 ,p_level => C_LEVEL_PROCEDURE
667 ,p_module => l_log_module);
668 END IF;
669 x_value_type_code := 'S';
670 l_output_value := TO_NUMBER(TO_NUMBER(p_source_5));
671 RETURN l_output_value;
672
673 --
674 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
675 trace
676 (p_msg => 'END of AcctDerRule_5(invalid)'
677 ,p_level => C_LEVEL_PROCEDURE
678 ,p_module => l_log_module);
679 END IF;
680 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
681 x_value_type_code := null;
682 l_output_value := null;
683 xla_accounting_err_pkg.build_message
684 (p_appli_s_name => 'XLA'
685 ,p_msg_name => 'XLA_AP_INVALID_ADR'
686 ,p_token_1 => 'COMPONENT_NAME'
687 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
688 l_component_type
689 , l_component_code
690 , l_component_type_code
691 , l_component_appl_id
692 , l_amb_context_code
693 )
694 ,p_token_2 => 'OWNER'
695 ,p_value_2 => xla_lookups_pkg.get_meaning(
696 'XLA_OWNER_TYPE'
697 ,l_component_type_code
698 )
699 ,p_token_3 => 'PAD_NAME'
700 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
701 ,p_token_4 => 'PAD_OWNER'
702 ,p_value_4 => xla_lookups_pkg.get_meaning(
703 'XLA_OWNER_TYPE'
704 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
705 )
706 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
707 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
708 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
709 ,p_ae_header_id => NULL
710 );
711 RETURN l_output_value;
712 EXCEPTION
713 WHEN xla_exceptions_pkg.application_exception THEN
714 RAISE;
715 WHEN OTHERS THEN
716 xla_exceptions_pkg.raise_message
717 (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctDerRule_5');
718 END AcctDerRule_5;
719 --
720
721 ---------------------------------------
722 --
723 -- PRIVATE FUNCTION
724 -- AcctDerRule_6
725 --
726 ---------------------------------------
727 FUNCTION AcctDerRule_6 (
728 p_application_id IN NUMBER
729 , p_ae_header_id IN NUMBER
730 , p_side IN VARCHAR2
731 --Cashflow Bank Account FX Charges Account
732 , p_source_6 IN NUMBER
733 , x_transaction_coa_id OUT NOCOPY NUMBER
734 , x_accounting_coa_id OUT NOCOPY NUMBER
735 , x_value_type_code OUT NOCOPY VARCHAR2
736 )
737 RETURN NUMBER
738 IS
739 l_component_type VARCHAR2(80) ;
740 l_component_code VARCHAR2(30) ;
741 l_component_type_code VARCHAR2(1) ;
742 l_component_appl_id INTEGER ;
743 l_amb_context_code VARCHAR2(30) ;
744 l_log_module VARCHAR2(240) ;
745 l_output_value NUMBER ;
746 BEGIN
747 IF g_log_enabled THEN
748 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_6';
749 END IF;
750 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
751 trace
752 (p_msg => 'BEGIN of AcctDerRule_6'
753 ,p_level => C_LEVEL_PROCEDURE
757 l_component_type := 'AMB_ADR';
754 ,p_module => l_log_module);
755 END IF;
756 --
758 l_component_code := 'CE_FX_CHARGES';
759 l_component_type_code := 'S';
760 l_component_appl_id := 260;
761 l_amb_context_code := 'DEFAULT';
762 x_transaction_coa_id := null;
763 x_accounting_coa_id := null;
764 --
765
766 --
767 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
768 trace
769 (p_msg => 'END of AcctDerRule_6'
770 ,p_level => C_LEVEL_PROCEDURE
771 ,p_module => l_log_module);
772 END IF;
773 x_value_type_code := 'S';
774 l_output_value := TO_NUMBER(TO_NUMBER(p_source_6));
775 RETURN l_output_value;
776
777 --
778 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
779 trace
780 (p_msg => 'END of AcctDerRule_6(invalid)'
781 ,p_level => C_LEVEL_PROCEDURE
782 ,p_module => l_log_module);
783 END IF;
784 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
785 x_value_type_code := null;
786 l_output_value := null;
787 xla_accounting_err_pkg.build_message
788 (p_appli_s_name => 'XLA'
789 ,p_msg_name => 'XLA_AP_INVALID_ADR'
790 ,p_token_1 => 'COMPONENT_NAME'
791 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
792 l_component_type
793 , l_component_code
794 , l_component_type_code
795 , l_component_appl_id
796 , l_amb_context_code
797 )
798 ,p_token_2 => 'OWNER'
799 ,p_value_2 => xla_lookups_pkg.get_meaning(
800 'XLA_OWNER_TYPE'
801 ,l_component_type_code
802 )
803 ,p_token_3 => 'PAD_NAME'
804 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
805 ,p_token_4 => 'PAD_OWNER'
806 ,p_value_4 => xla_lookups_pkg.get_meaning(
807 'XLA_OWNER_TYPE'
808 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
809 )
810 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
811 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
812 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
813 ,p_ae_header_id => NULL
814 );
815 RETURN l_output_value;
816 EXCEPTION
817 WHEN xla_exceptions_pkg.application_exception THEN
818 RAISE;
819 WHEN OTHERS THEN
820 xla_exceptions_pkg.raise_message
821 (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctDerRule_6');
822 END AcctDerRule_6;
823 --
824
825 ---------------------------------------
826 --
827 -- PRIVATE FUNCTION
828 -- AcctDerRule_7
829 --
830 ---------------------------------------
831 FUNCTION AcctDerRule_7 (
832 p_application_id IN NUMBER
833 , p_ae_header_id IN NUMBER
834 , p_side IN VARCHAR2
835 --Cashflow Offset Account
836 , p_source_7 IN NUMBER
837 , x_transaction_coa_id OUT NOCOPY NUMBER
838 , x_accounting_coa_id OUT NOCOPY NUMBER
839 , x_value_type_code OUT NOCOPY VARCHAR2
840 )
841 RETURN NUMBER
842 IS
843 l_component_type VARCHAR2(80) ;
844 l_component_code VARCHAR2(30) ;
845 l_component_type_code VARCHAR2(1) ;
846 l_component_appl_id INTEGER ;
847 l_amb_context_code VARCHAR2(30) ;
848 l_log_module VARCHAR2(240) ;
849 l_output_value NUMBER ;
850 BEGIN
851 IF g_log_enabled THEN
852 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_7';
853 END IF;
854 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
855 trace
856 (p_msg => 'BEGIN of AcctDerRule_7'
857 ,p_level => C_LEVEL_PROCEDURE
858 ,p_module => l_log_module);
859 END IF;
860 --
861 l_component_type := 'AMB_ADR';
862 l_component_code := 'CE_OFFSET';
863 l_component_type_code := 'S';
864 l_component_appl_id := 260;
865 l_amb_context_code := 'DEFAULT';
866 x_transaction_coa_id := null;
867 x_accounting_coa_id := null;
868 --
869
870 --
871 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
872 trace
873 (p_msg => 'END of AcctDerRule_7'
874 ,p_level => C_LEVEL_PROCEDURE
875 ,p_module => l_log_module);
876 END IF;
877 x_value_type_code := 'S';
878 l_output_value := TO_NUMBER(TO_NUMBER(p_source_7));
879 RETURN l_output_value;
880
881 --
882 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
883 trace
884 (p_msg => 'END of AcctDerRule_7(invalid)'
885 ,p_level => C_LEVEL_PROCEDURE
886 ,p_module => l_log_module);
887 END IF;
888 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
889 x_value_type_code := null;
890 l_output_value := null;
894 ,p_token_1 => 'COMPONENT_NAME'
891 xla_accounting_err_pkg.build_message
892 (p_appli_s_name => 'XLA'
893 ,p_msg_name => 'XLA_AP_INVALID_ADR'
895 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
896 l_component_type
897 , l_component_code
898 , l_component_type_code
899 , l_component_appl_id
900 , l_amb_context_code
901 )
902 ,p_token_2 => 'OWNER'
903 ,p_value_2 => xla_lookups_pkg.get_meaning(
904 'XLA_OWNER_TYPE'
905 ,l_component_type_code
906 )
907 ,p_token_3 => 'PAD_NAME'
908 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
909 ,p_token_4 => 'PAD_OWNER'
910 ,p_value_4 => xla_lookups_pkg.get_meaning(
911 'XLA_OWNER_TYPE'
912 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
913 )
914 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
915 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
916 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
917 ,p_ae_header_id => NULL
918 );
919 RETURN l_output_value;
920 EXCEPTION
921 WHEN xla_exceptions_pkg.application_exception THEN
922 RAISE;
923 WHEN OTHERS THEN
924 xla_exceptions_pkg.raise_message
925 (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctDerRule_7');
926 END AcctDerRule_7;
927 --
928
929 ---------------------------------------
930 --
931 -- PRIVATE FUNCTION
932 -- AcctLineType_8
933 --
934 ---------------------------------------
935 PROCEDURE AcctLineType_8 (
936 p_application_id IN NUMBER
937 ,p_event_id IN NUMBER
938 ,p_calculate_acctd_flag IN VARCHAR2
939 ,p_calculate_g_l_flag IN VARCHAR2
940 ,p_actual_flag IN OUT VARCHAR2
941 ,p_balance_type_code OUT VARCHAR2
942 ,p_gain_or_loss_ref OUT VARCHAR2
943
944 --Cashflow Bank Account Bank Charges Account
945 , p_source_3 IN NUMBER
946 --Cashflow Cleared Bank Charge Amount
947 , p_source_8 IN NUMBER
948 --Reversal Indicator
949 , p_source_9 IN VARCHAR2
950 --Cashflow Number
951 , p_source_10 IN NUMBER
952 --Cashflow History Identifier
953 , p_source_11 IN VARCHAR2
954 --Distribution Link Type
955 , p_source_12 IN VARCHAR2
956 --Cashflow Bank Account Currency
957 , p_source_13 IN VARCHAR2
958 --Cashflow Cleared Exchange Rate Date
959 , p_source_14 IN DATE
960 --Cashflow Cleared Exchange Rate
961 , p_source_15 IN NUMBER
962 --Cashflow Cleared Exchange Rate Type
963 , p_source_16 IN VARCHAR2
964 --Reversal First Distribution Identifier
965 , p_source_17 IN NUMBER
966 --Reversal Second Distribution Identifier
967 , p_source_18 IN VARCHAR2
968 --Reversal Distribution Link Type
969 , p_source_19 IN VARCHAR2
970 )
971 IS
972
973 l_component_type VARCHAR2(80);
974 l_component_code VARCHAR2(30);
975 l_component_type_code VARCHAR2(1);
976 l_component_appl_id INTEGER;
977 l_amb_context_code VARCHAR2(30);
978 l_entity_code VARCHAR2(30);
979 l_event_class_code VARCHAR2(30);
980 l_ae_header_id NUMBER;
981 l_event_type_code VARCHAR2(30);
982 l_line_definition_code VARCHAR2(30);
983 l_line_definition_owner_code VARCHAR2(1);
984 --
985 -- adr variables
986 l_segment VARCHAR2(30);
987 l_ccid NUMBER;
988 l_adr_transaction_coa_id NUMBER;
989 l_adr_accounting_coa_id NUMBER;
990 l_adr_flexfield_segment_code VARCHAR2(30);
991 l_adr_flex_value_set_id NUMBER;
992 l_adr_value_type_code VARCHAR2(30);
993 l_adr_value_combination_id NUMBER;
994 l_adr_value_segment_code VARCHAR2(30);
995
996 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
997 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
998 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
999 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
1000
1001 -- 4262811 Variables ------------------------------------------------------------------------------------------
1002 l_entered_amt_idx NUMBER;
1003 l_accted_amt_idx NUMBER;
1004 l_acc_rev_flag VARCHAR2(1);
1005 l_accrual_line_num NUMBER;
1006 l_tmp_amt NUMBER;
1007 l_acc_rev_natural_side_code VARCHAR2(1);
1008
1009 l_num_entries NUMBER;
1010 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
1011 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
1012 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
1013 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
1017 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
1014 l_recog_line_1 NUMBER;
1015 l_recog_line_2 NUMBER;
1016
1018 l_bflow_applied_to_amt NUMBER; -- 5132302
1019 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
1020
1021 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
1022
1023 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
1024 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
1025
1026 ---------------------------------------------------------------------------------------------------------------
1027
1028
1029 --
1030 -- bulk performance
1031 --
1032 l_balance_type_code VARCHAR2(1);
1033 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
1034 l_log_module VARCHAR2(240);
1035
1036 --
1037 -- Upgrade strategy
1038 --
1039 l_actual_upg_option VARCHAR2(1);
1040 l_enc_upg_option VARCHAR2(1);
1041
1042 --
1043 BEGIN
1044 --
1045 IF g_log_enabled THEN
1046 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_8';
1047 END IF;
1048 --
1049 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1050
1051 trace
1052 (p_msg => 'BEGIN of AcctLineType_8'
1053 ,p_level => C_LEVEL_PROCEDURE
1054 ,p_module => l_log_module);
1055
1056 END IF;
1057 --
1058 l_component_type := 'AMB_JLT';
1059 l_component_code := 'BAT_BANK_CHARGES_CLEAR';
1060 l_component_type_code := 'S';
1061 l_component_appl_id := 260;
1062 l_amb_context_code := 'DEFAULT';
1063 l_entity_code := 'CE_CASHFLOWS';
1064 l_event_class_code := 'BAT_CLASS';
1065 l_event_type_code := 'CE_BAT_UNCLEARED';
1066 l_line_definition_owner_code := 'S';
1067 l_line_definition_code := 'BAT_UNCLR_DEFN';
1068 --
1069 l_balance_type_code := 'A';
1070 l_segment := NULL;
1071 l_ccid := NULL;
1072 l_adr_transaction_coa_id := NULL;
1073 l_adr_accounting_coa_id := NULL;
1074 l_adr_flexfield_segment_code := NULL;
1075 l_adr_flex_value_set_id := NULL;
1076 l_adr_value_type_code := NULL;
1077 l_adr_value_combination_id := NULL;
1078 l_adr_value_segment_code := NULL;
1079
1080 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
1081 l_bflow_class_code := ''; -- 4219869 Business Flow
1082 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
1083 l_budgetary_control_flag := 'N';
1084
1085 l_bflow_applied_to_amt_idx := NULL; -- 5132302
1086 l_bflow_applied_to_amt := NULL; -- 5132302
1087 l_entered_amt_idx := NULL; -- 4262811
1088 l_accted_amt_idx := NULL; -- 4262811
1089 l_acc_rev_flag := NULL; -- 4262811
1090 l_accrual_line_num := NULL; -- 4262811
1091 l_tmp_amt := NULL; -- 4262811
1092 --
1093
1094 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
1095 l_balance_type_code <> 'B' THEN
1096 IF p_source_8 IS NOT NULL
1097 THEN
1098
1099 --
1100 XLA_AE_LINES_PKG.SetNewLine;
1101
1102 p_balance_type_code := l_balance_type_code;
1103 -- set the flag so later we will know whether the gain loss line needs to be created
1104
1105 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
1106 p_actual_flag :='A';
1107 END IF;
1108
1109 --
1110 -- bulk performance
1111 --
1112 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
1113 p_header_num => 0); -- 4262811
1114 --
1115 -- set accounting line options
1116 --
1117 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
1118 p_natural_side_code => 'D'
1119 , p_gain_or_loss_flag => 'N'
1120 , p_gl_transfer_mode_code => 'D'
1121 , p_acct_entry_type_code => 'A'
1122 , p_switch_side_flag => 'Y'
1123 , p_merge_duplicate_code => 'N'
1124 );
1125 --
1126 l_acc_rev_natural_side_code := 'C'; -- 4262811
1127 --
1128 --
1129 -- set accounting line type info
1130 --
1131 xla_ae_lines_pkg.SetAcctLineType
1132 (p_component_type => l_component_type
1133 ,p_event_type_code => l_event_type_code
1134 ,p_line_definition_owner_code => l_line_definition_owner_code
1135 ,p_line_definition_code => l_line_definition_code
1136 ,p_accounting_line_code => l_component_code
1137 ,p_accounting_line_type_code => l_component_type_code
1138 ,p_accounting_line_appl_id => l_component_appl_id
1139 ,p_amb_context_code => l_amb_context_code
1140 ,p_entity_code => l_entity_code
1141 ,p_event_class_code => l_event_class_code);
1142 --
1143 -- set accounting class
1144 --
1145 xla_ae_lines_pkg.SetAcctClass(
1146 p_accounting_class_code => 'BANK_CHG'
1147 , p_ae_header_id => l_ae_header_id
1148 );
1149
1150 --
1151 -- set rounding class
1152 --
1153 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
1154 'BANK_CHG';
1155
1156 --
1157 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
1161 --
1158 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
1159 --
1160 -- bulk performance
1162 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
1163
1164 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
1165 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
1166
1167 -- 4955764
1168 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1169 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
1170
1171 -- 4458381 Public Sector Enh
1172
1173 --
1174 -- set accounting attributes for the line type
1175 --
1176 l_entered_amt_idx := 5;
1177 l_accted_amt_idx := NULL;
1178 l_bflow_applied_to_amt_idx := NULL; -- 5132302
1179 l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
1180 l_rec_acct_attrs.array_char_value(1) := p_source_9;
1181 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
1182 l_rec_acct_attrs.array_num_value(2) := to_char(p_source_10);
1183 l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
1184 l_rec_acct_attrs.array_char_value(3) := p_source_11;
1185 l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
1186 l_rec_acct_attrs.array_char_value(4) := p_source_12;
1187 l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
1188 l_rec_acct_attrs.array_num_value(5) := p_source_8;
1189 l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
1190 l_rec_acct_attrs.array_char_value(6) := p_source_13;
1191 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
1192 l_rec_acct_attrs.array_date_value(7) := p_source_14;
1193 l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
1194 l_rec_acct_attrs.array_num_value(8) := p_source_15;
1195 l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
1196 l_rec_acct_attrs.array_char_value(9) := p_source_16;
1197 l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
1198 l_rec_acct_attrs.array_num_value(10) := to_char(p_source_17);
1199 l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
1200 l_rec_acct_attrs.array_char_value(11) := p_source_18;
1201 l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
1202 l_rec_acct_attrs.array_char_value(12) := p_source_19;
1203
1204 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
1205 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
1206
1207 ---------------------------------------------------------------------------------------------------------------
1208 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
1209 ---------------------------------------------------------------------------------------------------------------
1210 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
1211
1212 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1213 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1214
1215 IF xla_accounting_cache_pkg.GetValueChar
1216 (p_source_code => 'LEDGER_CATEGORY_CODE'
1217 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
1218 AND l_bflow_method_code = 'PRIOR_ENTRY'
1219 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
1220 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
1221 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
1222 )
1223 THEN
1224 xla_ae_lines_pkg.BflowUpgEntry
1225 (p_business_method_code => l_bflow_method_code
1226 ,p_business_class_code => l_bflow_class_code
1227 ,p_balance_type => l_balance_type_code);
1228 ELSE
1229 NULL;
1230 -- No business flow processing for business flow method of NONE.
1231 END IF;
1232
1233 --
1234 -- call description
1235 --
1236 -- No description or it is inherited.
1237 --
1238 -- call ADRs
1239 -- Bug 4922099
1240 --
1241 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1242 (NVL(l_actual_upg_option, 'N') = 'O') OR
1243 (NVL(l_enc_upg_option, 'N') = 'O')
1244 )
1245 THEN
1246 NULL;
1247 --
1248 --
1249
1250 l_ccid := AcctDerRule_3(
1251 p_application_id => p_application_id
1252 , p_ae_header_id => l_ae_header_id
1253 , p_source_3 => p_source_3
1254 , x_transaction_coa_id => l_adr_transaction_coa_id
1255 , x_accounting_coa_id => l_adr_accounting_coa_id
1256 , x_value_type_code => l_adr_value_type_code
1257 , p_side => 'NA'
1258 );
1259
1260 xla_ae_lines_pkg.set_ccid(
1261 p_code_combination_id => l_ccid
1262 , p_value_type_code => l_adr_value_type_code
1263 , p_transaction_coa_id => l_adr_transaction_coa_id
1264 , p_accounting_coa_id => l_adr_accounting_coa_id
1265 , p_adr_code => 'CE_BANK_CHARGES'
1266 , p_adr_type_code => 'S'
1267 , p_component_type => l_component_type
1268 , p_component_code => l_component_code
1269 , p_component_type_code => l_component_type_code
1270 , p_component_appl_id => l_component_appl_id
1271 , p_amb_context_code => l_amb_context_code
1272 , p_side => 'NA'
1273 );
1274
1275
1276 --
1277 --
1278 END IF;
1279 --
1283 ) AND
1280 -- Bug 4922099
1281 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
1282 (NVL(l_enc_upg_option, 'N') = 'O')
1284 (l_bflow_method_code = 'PRIOR_ENTRY')
1285 )
1286 THEN
1287 IF
1288 --
1289 1 = 2
1290 --
1291 THEN
1292 xla_accounting_err_pkg.build_message
1293 (p_appli_s_name => 'XLA'
1294 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1295 ,p_token_1 => 'LINE_NUMBER'
1296 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
1297 ,p_token_2 => 'LINE_TYPE_NAME'
1298 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
1299 l_component_type
1300 ,l_component_code
1301 ,l_component_type_code
1302 ,l_component_appl_id
1303 ,l_amb_context_code
1304 ,l_entity_code
1305 ,l_event_class_code
1306 )
1307 ,p_token_3 => 'OWNER'
1308 ,p_value_3 => xla_lookups_pkg.get_meaning(
1309 p_lookup_type => 'XLA_OWNER_TYPE'
1310 ,p_lookup_code => l_component_type_code
1311 )
1312 ,p_token_4 => 'PRODUCT_NAME'
1313 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
1314 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
1315 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
1316 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
1317 ,p_ae_header_id => NULL
1318 );
1319
1320 IF (C_LEVEL_ERROR>= g_log_level) THEN
1321 trace
1322 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1323 ,p_level => C_LEVEL_ERROR
1324 ,p_module => l_log_module);
1325 END IF;
1326 END IF;
1327 END IF;
1328 --
1329 --
1330 ------------------------------------------------------------------------------------------------
1331 -- 4219869 Business Flow
1332 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
1333 -- Prior Entry. Currently, the following code is always generated.
1334 ------------------------------------------------------------------------------------------------
1335 XLA_AE_LINES_PKG.ValidateCurrentLine;
1336
1337 ------------------------------------------------------------------------------------
1338 -- 4219869 Business Flow
1339 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
1340 ------------------------------------------------------------------------------------
1341 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1342
1343 ----------------------------------------------------------------------------------
1344 -- 4219869 Business Flow
1345 -- Update journal entry status -- Need to generate this within IF <condition>
1346 ----------------------------------------------------------------------------------
1347 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1348 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
1349 ,p_balance_type_code => l_balance_type_code
1350 );
1351
1352 -------------------------------------------------------------------------------------------
1353 -- 4262811 - Generate the Accrual Reversal lines
1354 -------------------------------------------------------------------------------------------
1355 BEGIN
1356 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
1357 (g_array_event(p_event_id).array_value_num('header_index'));
1358 IF l_acc_rev_flag IS NULL THEN
1359 l_acc_rev_flag := 'N';
1360 END IF;
1361 EXCEPTION
1362 WHEN OTHERS THEN
1363 l_acc_rev_flag := 'N';
1364 END;
1365 --
1366 IF (l_acc_rev_flag = 'Y') THEN
1367
1368 -- 4645092 ------------------------------------------------------------------------------
1369 -- To allow MPA report to determine if it should generate report process
1370 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
1371 ------------------------------------------------------------------------------------------
1372
1373 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
1374 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
1375
1376 --
1377 -- Update the line information that should be overwritten
1378 --
1379 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
1380 p_header_num => 1);
1381 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
1382
1386 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
1383 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
1384
1385 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
1387 END IF;
1388
1389 --
1390 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
1391 --
1392 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
1393 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
1394 ELSE
1395 ---------------------------------------------------------------------------------------------------
1396 -- 4262811a Switch Sign
1397 ---------------------------------------------------------------------------------------------------
1398 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
1399 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1400 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1401 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1402 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1403 -- 5132302
1404 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
1405 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1406
1407 END IF;
1408
1409 -- 4955764
1410 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1411 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
1412
1413
1414 XLA_AE_LINES_PKG.ValidateCurrentLine;
1415 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1416
1417 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1418 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
1419 ,p_balance_type_code => l_balance_type_code);
1420
1421 END IF;
1422
1423 -----------------------------------------------------------------------------------------
1424 -- 4262811 Multiperiod Accounting
1425 -----------------------------------------------------------------------------------------
1426 -- No MPA option is assigned.
1427
1428
1429 END IF;
1430 END IF;
1431 --
1432
1433 --
1434 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1435 trace
1436 (p_msg => 'END of AcctLineType_8'
1437 ,p_level => C_LEVEL_PROCEDURE
1438 ,p_module => l_log_module);
1439 END IF;
1440 --
1441 EXCEPTION
1442 WHEN xla_exceptions_pkg.application_exception THEN
1443 RAISE;
1444 WHEN OTHERS THEN
1445 xla_exceptions_pkg.raise_message
1446 (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_8');
1447 END AcctLineType_8;
1448 --
1449
1450 ---------------------------------------
1451 --
1452 -- PRIVATE FUNCTION
1453 -- AcctLineType_9
1454 --
1455 ---------------------------------------
1456 PROCEDURE AcctLineType_9 (
1457 p_application_id IN NUMBER
1458 ,p_event_id IN NUMBER
1459 ,p_calculate_acctd_flag IN VARCHAR2
1460 ,p_calculate_g_l_flag IN VARCHAR2
1461 ,p_actual_flag IN OUT VARCHAR2
1462 ,p_balance_type_code OUT VARCHAR2
1463 ,p_gain_or_loss_ref OUT VARCHAR2
1464
1465 --Cashflow Bank Account Bank Charges Account
1466 , p_source_3 IN NUMBER
1467 --Cashflow Cleared Bank Charge Amount
1468 , p_source_8 IN NUMBER
1469 --Reversal Indicator
1470 , p_source_9 IN VARCHAR2
1471 --Cashflow Number
1472 , p_source_10 IN NUMBER
1473 --Cashflow History Identifier
1474 , p_source_11 IN VARCHAR2
1475 --Distribution Link Type
1476 , p_source_12 IN VARCHAR2
1477 --Cashflow Bank Account Currency
1478 , p_source_13 IN VARCHAR2
1479 --Cashflow Cleared Exchange Rate Date
1480 , p_source_14 IN DATE
1481 --Cashflow Cleared Exchange Rate
1482 , p_source_15 IN NUMBER
1483 --Cashflow Cleared Exchange Rate Type
1484 , p_source_16 IN VARCHAR2
1485 --Reversal First Distribution Identifier
1486 , p_source_17 IN NUMBER
1487 --Reversal Second Distribution Identifier
1488 , p_source_18 IN VARCHAR2
1489 --Reversal Distribution Link Type
1490 , p_source_19 IN VARCHAR2
1491 )
1492 IS
1493
1494 l_component_type VARCHAR2(80);
1495 l_component_code VARCHAR2(30);
1496 l_component_type_code VARCHAR2(1);
1497 l_component_appl_id INTEGER;
1498 l_amb_context_code VARCHAR2(30);
1499 l_entity_code VARCHAR2(30);
1500 l_event_class_code VARCHAR2(30);
1501 l_ae_header_id NUMBER;
1502 l_event_type_code VARCHAR2(30);
1503 l_line_definition_code VARCHAR2(30);
1504 l_line_definition_owner_code VARCHAR2(1);
1505 --
1506 -- adr variables
1507 l_segment VARCHAR2(30);
1508 l_ccid NUMBER;
1509 l_adr_transaction_coa_id NUMBER;
1510 l_adr_accounting_coa_id NUMBER;
1511 l_adr_flexfield_segment_code VARCHAR2(30);
1512 l_adr_flex_value_set_id NUMBER;
1513 l_adr_value_type_code VARCHAR2(30);
1514 l_adr_value_combination_id NUMBER;
1515 l_adr_value_segment_code VARCHAR2(30);
1516
1517 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
1521
1518 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
1519 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
1520 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
1522 -- 4262811 Variables ------------------------------------------------------------------------------------------
1523 l_entered_amt_idx NUMBER;
1524 l_accted_amt_idx NUMBER;
1525 l_acc_rev_flag VARCHAR2(1);
1526 l_accrual_line_num NUMBER;
1527 l_tmp_amt NUMBER;
1528 l_acc_rev_natural_side_code VARCHAR2(1);
1529
1530 l_num_entries NUMBER;
1531 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
1532 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
1533 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
1534 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
1535 l_recog_line_1 NUMBER;
1536 l_recog_line_2 NUMBER;
1537
1538 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
1539 l_bflow_applied_to_amt NUMBER; -- 5132302
1540 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
1541
1542 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
1543
1544 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
1545 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
1546
1547 ---------------------------------------------------------------------------------------------------------------
1548
1549
1550 --
1551 -- bulk performance
1552 --
1553 l_balance_type_code VARCHAR2(1);
1554 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
1555 l_log_module VARCHAR2(240);
1556
1557 --
1558 -- Upgrade strategy
1559 --
1560 l_actual_upg_option VARCHAR2(1);
1561 l_enc_upg_option VARCHAR2(1);
1562
1563 --
1564 BEGIN
1565 --
1566 IF g_log_enabled THEN
1567 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_9';
1568 END IF;
1569 --
1570 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1571
1572 trace
1573 (p_msg => 'BEGIN of AcctLineType_9'
1574 ,p_level => C_LEVEL_PROCEDURE
1575 ,p_module => l_log_module);
1576
1577 END IF;
1578 --
1579 l_component_type := 'AMB_JLT';
1580 l_component_code := 'BAT_BANK_CHARGES_CLEAR';
1581 l_component_type_code := 'S';
1582 l_component_appl_id := 260;
1583 l_amb_context_code := 'DEFAULT';
1584 l_entity_code := 'CE_CASHFLOWS';
1585 l_event_class_code := 'BAT_CLASS';
1586 l_event_type_code := 'CE_BAT_CLEARED';
1587 l_line_definition_owner_code := 'S';
1588 l_line_definition_code := 'BAT_CLR_DFN';
1589 --
1590 l_balance_type_code := 'A';
1591 l_segment := NULL;
1592 l_ccid := NULL;
1593 l_adr_transaction_coa_id := NULL;
1594 l_adr_accounting_coa_id := NULL;
1595 l_adr_flexfield_segment_code := NULL;
1596 l_adr_flex_value_set_id := NULL;
1597 l_adr_value_type_code := NULL;
1598 l_adr_value_combination_id := NULL;
1599 l_adr_value_segment_code := NULL;
1600
1601 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
1602 l_bflow_class_code := ''; -- 4219869 Business Flow
1603 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
1604 l_budgetary_control_flag := 'N';
1605
1606 l_bflow_applied_to_amt_idx := NULL; -- 5132302
1607 l_bflow_applied_to_amt := NULL; -- 5132302
1608 l_entered_amt_idx := NULL; -- 4262811
1609 l_accted_amt_idx := NULL; -- 4262811
1610 l_acc_rev_flag := NULL; -- 4262811
1611 l_accrual_line_num := NULL; -- 4262811
1612 l_tmp_amt := NULL; -- 4262811
1613 --
1614
1615 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
1616 l_balance_type_code <> 'B' THEN
1617 IF p_source_8 IS NOT NULL
1618 THEN
1619
1620 --
1621 XLA_AE_LINES_PKG.SetNewLine;
1622
1623 p_balance_type_code := l_balance_type_code;
1624 -- set the flag so later we will know whether the gain loss line needs to be created
1625
1626 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
1627 p_actual_flag :='A';
1628 END IF;
1629
1630 --
1631 -- bulk performance
1632 --
1633 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
1634 p_header_num => 0); -- 4262811
1635 --
1636 -- set accounting line options
1637 --
1638 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
1639 p_natural_side_code => 'D'
1640 , p_gain_or_loss_flag => 'N'
1641 , p_gl_transfer_mode_code => 'D'
1642 , p_acct_entry_type_code => 'A'
1643 , p_switch_side_flag => 'Y'
1644 , p_merge_duplicate_code => 'N'
1645 );
1646 --
1647 l_acc_rev_natural_side_code := 'C'; -- 4262811
1648 --
1649 --
1650 -- set accounting line type info
1651 --
1652 xla_ae_lines_pkg.SetAcctLineType
1653 (p_component_type => l_component_type
1654 ,p_event_type_code => l_event_type_code
1655 ,p_line_definition_owner_code => l_line_definition_owner_code
1656 ,p_line_definition_code => l_line_definition_code
1657 ,p_accounting_line_code => l_component_code
1661 ,p_entity_code => l_entity_code
1658 ,p_accounting_line_type_code => l_component_type_code
1659 ,p_accounting_line_appl_id => l_component_appl_id
1660 ,p_amb_context_code => l_amb_context_code
1662 ,p_event_class_code => l_event_class_code);
1663 --
1664 -- set accounting class
1665 --
1666 xla_ae_lines_pkg.SetAcctClass(
1667 p_accounting_class_code => 'BANK_CHG'
1668 , p_ae_header_id => l_ae_header_id
1669 );
1670
1671 --
1672 -- set rounding class
1673 --
1674 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
1675 'BANK_CHG';
1676
1677 --
1678 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
1679 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
1680 --
1681 -- bulk performance
1682 --
1683 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
1684
1685 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
1686 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
1687
1688 -- 4955764
1689 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1690 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
1691
1692 -- 4458381 Public Sector Enh
1693
1694 --
1695 -- set accounting attributes for the line type
1696 --
1697 l_entered_amt_idx := 5;
1698 l_accted_amt_idx := NULL;
1699 l_bflow_applied_to_amt_idx := NULL; -- 5132302
1700 l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
1701 l_rec_acct_attrs.array_char_value(1) := p_source_9;
1702 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
1703 l_rec_acct_attrs.array_num_value(2) := to_char(p_source_10);
1704 l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
1705 l_rec_acct_attrs.array_char_value(3) := p_source_11;
1706 l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
1707 l_rec_acct_attrs.array_char_value(4) := p_source_12;
1708 l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
1709 l_rec_acct_attrs.array_num_value(5) := p_source_8;
1710 l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
1711 l_rec_acct_attrs.array_char_value(6) := p_source_13;
1712 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
1713 l_rec_acct_attrs.array_date_value(7) := p_source_14;
1714 l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
1715 l_rec_acct_attrs.array_num_value(8) := p_source_15;
1716 l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
1717 l_rec_acct_attrs.array_char_value(9) := p_source_16;
1718 l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
1719 l_rec_acct_attrs.array_num_value(10) := to_char(p_source_17);
1720 l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
1721 l_rec_acct_attrs.array_char_value(11) := p_source_18;
1722 l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
1723 l_rec_acct_attrs.array_char_value(12) := p_source_19;
1724
1725 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
1726 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
1727
1728 ---------------------------------------------------------------------------------------------------------------
1729 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
1730 ---------------------------------------------------------------------------------------------------------------
1731 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
1732
1733 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1734 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1735
1736 IF xla_accounting_cache_pkg.GetValueChar
1737 (p_source_code => 'LEDGER_CATEGORY_CODE'
1738 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
1739 AND l_bflow_method_code = 'PRIOR_ENTRY'
1740 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
1741 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
1742 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
1743 )
1744 THEN
1745 xla_ae_lines_pkg.BflowUpgEntry
1746 (p_business_method_code => l_bflow_method_code
1747 ,p_business_class_code => l_bflow_class_code
1748 ,p_balance_type => l_balance_type_code);
1749 ELSE
1750 NULL;
1751 -- No business flow processing for business flow method of NONE.
1752 END IF;
1753
1754 --
1755 -- call description
1756 --
1757 -- No description or it is inherited.
1758 --
1759 -- call ADRs
1760 -- Bug 4922099
1761 --
1762 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1763 (NVL(l_actual_upg_option, 'N') = 'O') OR
1764 (NVL(l_enc_upg_option, 'N') = 'O')
1765 )
1766 THEN
1767 NULL;
1768 --
1769 --
1770
1771 l_ccid := AcctDerRule_3(
1772 p_application_id => p_application_id
1773 , p_ae_header_id => l_ae_header_id
1774 , p_source_3 => p_source_3
1775 , x_transaction_coa_id => l_adr_transaction_coa_id
1776 , x_accounting_coa_id => l_adr_accounting_coa_id
1777 , x_value_type_code => l_adr_value_type_code
1781 xla_ae_lines_pkg.set_ccid(
1778 , p_side => 'NA'
1779 );
1780
1782 p_code_combination_id => l_ccid
1783 , p_value_type_code => l_adr_value_type_code
1784 , p_transaction_coa_id => l_adr_transaction_coa_id
1785 , p_accounting_coa_id => l_adr_accounting_coa_id
1786 , p_adr_code => 'CE_BANK_CHARGES'
1787 , p_adr_type_code => 'S'
1788 , p_component_type => l_component_type
1789 , p_component_code => l_component_code
1790 , p_component_type_code => l_component_type_code
1791 , p_component_appl_id => l_component_appl_id
1792 , p_amb_context_code => l_amb_context_code
1793 , p_side => 'NA'
1794 );
1795
1796
1797 --
1798 --
1799 END IF;
1800 --
1801 -- Bug 4922099
1802 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
1803 (NVL(l_enc_upg_option, 'N') = 'O')
1804 ) AND
1805 (l_bflow_method_code = 'PRIOR_ENTRY')
1806 )
1807 THEN
1808 IF
1809 --
1810 1 = 2
1811 --
1812 THEN
1813 xla_accounting_err_pkg.build_message
1814 (p_appli_s_name => 'XLA'
1815 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1816 ,p_token_1 => 'LINE_NUMBER'
1817 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
1818 ,p_token_2 => 'LINE_TYPE_NAME'
1819 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
1820 l_component_type
1821 ,l_component_code
1822 ,l_component_type_code
1823 ,l_component_appl_id
1824 ,l_amb_context_code
1825 ,l_entity_code
1826 ,l_event_class_code
1827 )
1828 ,p_token_3 => 'OWNER'
1829 ,p_value_3 => xla_lookups_pkg.get_meaning(
1830 p_lookup_type => 'XLA_OWNER_TYPE'
1831 ,p_lookup_code => l_component_type_code
1832 )
1833 ,p_token_4 => 'PRODUCT_NAME'
1834 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
1835 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
1836 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
1837 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
1838 ,p_ae_header_id => NULL
1839 );
1840
1841 IF (C_LEVEL_ERROR>= g_log_level) THEN
1842 trace
1843 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1844 ,p_level => C_LEVEL_ERROR
1845 ,p_module => l_log_module);
1846 END IF;
1847 END IF;
1848 END IF;
1849 --
1850 --
1851 ------------------------------------------------------------------------------------------------
1852 -- 4219869 Business Flow
1853 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
1854 -- Prior Entry. Currently, the following code is always generated.
1855 ------------------------------------------------------------------------------------------------
1856 XLA_AE_LINES_PKG.ValidateCurrentLine;
1857
1858 ------------------------------------------------------------------------------------
1859 -- 4219869 Business Flow
1860 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
1861 ------------------------------------------------------------------------------------
1862 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1863
1864 ----------------------------------------------------------------------------------
1865 -- 4219869 Business Flow
1866 -- Update journal entry status -- Need to generate this within IF <condition>
1867 ----------------------------------------------------------------------------------
1868 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1869 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
1870 ,p_balance_type_code => l_balance_type_code
1871 );
1872
1873 -------------------------------------------------------------------------------------------
1874 -- 4262811 - Generate the Accrual Reversal lines
1875 -------------------------------------------------------------------------------------------
1876 BEGIN
1877 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
1878 (g_array_event(p_event_id).array_value_num('header_index'));
1879 IF l_acc_rev_flag IS NULL THEN
1880 l_acc_rev_flag := 'N';
1881 END IF;
1882 EXCEPTION
1883 WHEN OTHERS THEN
1884 l_acc_rev_flag := 'N';
1885 END;
1886 --
1890 -- To allow MPA report to determine if it should generate report process
1887 IF (l_acc_rev_flag = 'Y') THEN
1888
1889 -- 4645092 ------------------------------------------------------------------------------
1891 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
1892 ------------------------------------------------------------------------------------------
1893
1894 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
1895 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
1896
1897 --
1898 -- Update the line information that should be overwritten
1899 --
1900 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
1901 p_header_num => 1);
1902 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
1903
1904 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
1905
1906 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
1907 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
1908 END IF;
1909
1910 --
1911 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
1912 --
1913 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
1914 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
1915 ELSE
1916 ---------------------------------------------------------------------------------------------------
1917 -- 4262811a Switch Sign
1918 ---------------------------------------------------------------------------------------------------
1919 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
1920 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1921 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1922 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1923 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1924 -- 5132302
1925 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
1926 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1927
1928 END IF;
1929
1930 -- 4955764
1931 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1932 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
1933
1934
1935 XLA_AE_LINES_PKG.ValidateCurrentLine;
1936 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1937
1938 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1939 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
1940 ,p_balance_type_code => l_balance_type_code);
1941
1942 END IF;
1943
1944 -----------------------------------------------------------------------------------------
1945 -- 4262811 Multiperiod Accounting
1946 -----------------------------------------------------------------------------------------
1947 -- No MPA option is assigned.
1948
1949
1950 END IF;
1951 END IF;
1952 --
1953
1954 --
1955 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1956 trace
1957 (p_msg => 'END of AcctLineType_9'
1958 ,p_level => C_LEVEL_PROCEDURE
1959 ,p_module => l_log_module);
1960 END IF;
1961 --
1962 EXCEPTION
1963 WHEN xla_exceptions_pkg.application_exception THEN
1964 RAISE;
1965 WHEN OTHERS THEN
1966 xla_exceptions_pkg.raise_message
1967 (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_9');
1968 END AcctLineType_9;
1969 --
1970
1971 ---------------------------------------
1972 --
1973 -- PRIVATE FUNCTION
1974 -- AcctLineType_10
1975 --
1976 ---------------------------------------
1977 PROCEDURE AcctLineType_10 (
1978 p_application_id IN NUMBER
1979 ,p_event_id IN NUMBER
1980 ,p_calculate_acctd_flag IN VARCHAR2
1981 ,p_calculate_g_l_flag IN VARCHAR2
1982 ,p_actual_flag IN OUT VARCHAR2
1983 ,p_balance_type_code OUT VARCHAR2
1984 ,p_gain_or_loss_ref OUT VARCHAR2
1985
1986 --Cashflow Bank Account Bank Errors Account
1987 , p_source_4 IN NUMBER
1988 --Reversal Indicator
1989 , p_source_9 IN VARCHAR2
1990 --Cashflow Number
1991 , p_source_10 IN NUMBER
1992 --Cashflow History Identifier
1993 , p_source_11 IN VARCHAR2
1994 --Distribution Link Type
1995 , p_source_12 IN VARCHAR2
1996 --Cashflow Bank Account Currency
1997 , p_source_13 IN VARCHAR2
1998 --Cashflow Cleared Exchange Rate Date
1999 , p_source_14 IN DATE
2000 --Cashflow Cleared Exchange Rate
2001 , p_source_15 IN NUMBER
2002 --Cashflow Cleared Exchange Rate Type
2003 , p_source_16 IN VARCHAR2
2004 --Reversal First Distribution Identifier
2005 , p_source_17 IN NUMBER
2006 --Reversal Second Distribution Identifier
2007 , p_source_18 IN VARCHAR2
2008 --Reversal Distribution Link Type
2009 , p_source_19 IN VARCHAR2
2010 --Cashflow Cleared Bank Error Amount
2011 , p_source_20 IN NUMBER
2012 )
2013 IS
2014
2015 l_component_type VARCHAR2(80);
2016 l_component_code VARCHAR2(30);
2017 l_component_type_code VARCHAR2(1);
2018 l_component_appl_id INTEGER;
2019 l_amb_context_code VARCHAR2(30);
2023 l_event_type_code VARCHAR2(30);
2020 l_entity_code VARCHAR2(30);
2021 l_event_class_code VARCHAR2(30);
2022 l_ae_header_id NUMBER;
2024 l_line_definition_code VARCHAR2(30);
2025 l_line_definition_owner_code VARCHAR2(1);
2026 --
2027 -- adr variables
2028 l_segment VARCHAR2(30);
2029 l_ccid NUMBER;
2030 l_adr_transaction_coa_id NUMBER;
2031 l_adr_accounting_coa_id NUMBER;
2032 l_adr_flexfield_segment_code VARCHAR2(30);
2033 l_adr_flex_value_set_id NUMBER;
2034 l_adr_value_type_code VARCHAR2(30);
2035 l_adr_value_combination_id NUMBER;
2036 l_adr_value_segment_code VARCHAR2(30);
2037
2038 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
2039 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
2040 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
2041 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
2042
2043 -- 4262811 Variables ------------------------------------------------------------------------------------------
2044 l_entered_amt_idx NUMBER;
2045 l_accted_amt_idx NUMBER;
2046 l_acc_rev_flag VARCHAR2(1);
2047 l_accrual_line_num NUMBER;
2048 l_tmp_amt NUMBER;
2049 l_acc_rev_natural_side_code VARCHAR2(1);
2050
2051 l_num_entries NUMBER;
2052 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
2053 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
2054 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
2055 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
2056 l_recog_line_1 NUMBER;
2057 l_recog_line_2 NUMBER;
2058
2059 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
2060 l_bflow_applied_to_amt NUMBER; -- 5132302
2061 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
2062
2063 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
2064
2065 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
2066 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
2067
2068 ---------------------------------------------------------------------------------------------------------------
2069
2070
2071 --
2072 -- bulk performance
2073 --
2074 l_balance_type_code VARCHAR2(1);
2075 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
2076 l_log_module VARCHAR2(240);
2077
2078 --
2079 -- Upgrade strategy
2080 --
2081 l_actual_upg_option VARCHAR2(1);
2082 l_enc_upg_option VARCHAR2(1);
2083
2084 --
2085 BEGIN
2086 --
2087 IF g_log_enabled THEN
2088 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_10';
2089 END IF;
2090 --
2091 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2092
2093 trace
2094 (p_msg => 'BEGIN of AcctLineType_10'
2095 ,p_level => C_LEVEL_PROCEDURE
2096 ,p_module => l_log_module);
2097
2098 END IF;
2099 --
2100 l_component_type := 'AMB_JLT';
2101 l_component_code := 'BAT_BANK_ERRORS_CLEAR';
2102 l_component_type_code := 'S';
2103 l_component_appl_id := 260;
2104 l_amb_context_code := 'DEFAULT';
2105 l_entity_code := 'CE_CASHFLOWS';
2106 l_event_class_code := 'BAT_CLASS';
2107 l_event_type_code := 'CE_BAT_UNCLEARED';
2108 l_line_definition_owner_code := 'S';
2109 l_line_definition_code := 'BAT_UNCLR_DEFN';
2110 --
2111 l_balance_type_code := 'A';
2112 l_segment := NULL;
2113 l_ccid := NULL;
2114 l_adr_transaction_coa_id := NULL;
2115 l_adr_accounting_coa_id := NULL;
2116 l_adr_flexfield_segment_code := NULL;
2117 l_adr_flex_value_set_id := NULL;
2118 l_adr_value_type_code := NULL;
2119 l_adr_value_combination_id := NULL;
2120 l_adr_value_segment_code := NULL;
2121
2122 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
2123 l_bflow_class_code := ''; -- 4219869 Business Flow
2124 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
2125 l_budgetary_control_flag := 'N';
2126
2127 l_bflow_applied_to_amt_idx := NULL; -- 5132302
2128 l_bflow_applied_to_amt := NULL; -- 5132302
2129 l_entered_amt_idx := NULL; -- 4262811
2130 l_accted_amt_idx := NULL; -- 4262811
2131 l_acc_rev_flag := NULL; -- 4262811
2132 l_accrual_line_num := NULL; -- 4262811
2133 l_tmp_amt := NULL; -- 4262811
2134 --
2135
2136 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
2137 l_balance_type_code <> 'B' THEN
2138 IF p_source_20 IS NOT NULL
2139 THEN
2140
2141 --
2142 XLA_AE_LINES_PKG.SetNewLine;
2143
2144 p_balance_type_code := l_balance_type_code;
2145 -- set the flag so later we will know whether the gain loss line needs to be created
2146
2147 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
2148 p_actual_flag :='A';
2149 END IF;
2150
2151 --
2152 -- bulk performance
2153 --
2154 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
2155 p_header_num => 0); -- 4262811
2156 --
2157 -- set accounting line options
2158 --
2159 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
2160 p_natural_side_code => 'D'
2164 , p_switch_side_flag => 'Y'
2161 , p_gain_or_loss_flag => 'N'
2162 , p_gl_transfer_mode_code => 'D'
2163 , p_acct_entry_type_code => 'A'
2165 , p_merge_duplicate_code => 'N'
2166 );
2167 --
2168 l_acc_rev_natural_side_code := 'C'; -- 4262811
2169 --
2170 --
2171 -- set accounting line type info
2172 --
2173 xla_ae_lines_pkg.SetAcctLineType
2174 (p_component_type => l_component_type
2175 ,p_event_type_code => l_event_type_code
2176 ,p_line_definition_owner_code => l_line_definition_owner_code
2177 ,p_line_definition_code => l_line_definition_code
2178 ,p_accounting_line_code => l_component_code
2179 ,p_accounting_line_type_code => l_component_type_code
2180 ,p_accounting_line_appl_id => l_component_appl_id
2181 ,p_amb_context_code => l_amb_context_code
2182 ,p_entity_code => l_entity_code
2183 ,p_event_class_code => l_event_class_code);
2184 --
2185 -- set accounting class
2186 --
2187 xla_ae_lines_pkg.SetAcctClass(
2188 p_accounting_class_code => 'BANK_ERROR'
2189 , p_ae_header_id => l_ae_header_id
2190 );
2191
2192 --
2193 -- set rounding class
2194 --
2195 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2196 'BANK_ERROR';
2197
2198 --
2199 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2200 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2201 --
2202 -- bulk performance
2203 --
2204 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2205
2206 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2207 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2208
2209 -- 4955764
2210 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2211 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2212
2213 -- 4458381 Public Sector Enh
2214
2215 --
2216 -- set accounting attributes for the line type
2217 --
2218 l_entered_amt_idx := 5;
2219 l_accted_amt_idx := NULL;
2220 l_bflow_applied_to_amt_idx := NULL; -- 5132302
2221 l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
2222 l_rec_acct_attrs.array_char_value(1) := p_source_9;
2223 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
2224 l_rec_acct_attrs.array_num_value(2) := to_char(p_source_10);
2225 l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
2226 l_rec_acct_attrs.array_char_value(3) := p_source_11;
2227 l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
2228 l_rec_acct_attrs.array_char_value(4) := p_source_12;
2229 l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
2230 l_rec_acct_attrs.array_num_value(5) := p_source_20;
2231 l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
2232 l_rec_acct_attrs.array_char_value(6) := p_source_13;
2233 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
2234 l_rec_acct_attrs.array_date_value(7) := p_source_14;
2235 l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
2236 l_rec_acct_attrs.array_num_value(8) := p_source_15;
2237 l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
2238 l_rec_acct_attrs.array_char_value(9) := p_source_16;
2239 l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
2240 l_rec_acct_attrs.array_num_value(10) := to_char(p_source_17);
2241 l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
2242 l_rec_acct_attrs.array_char_value(11) := p_source_18;
2243 l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
2244 l_rec_acct_attrs.array_char_value(12) := p_source_19;
2245
2246 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2247 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2248
2249 ---------------------------------------------------------------------------------------------------------------
2250 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
2251 ---------------------------------------------------------------------------------------------------------------
2252 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
2253
2254 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2255 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2256
2257 IF xla_accounting_cache_pkg.GetValueChar
2258 (p_source_code => 'LEDGER_CATEGORY_CODE'
2259 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
2260 AND l_bflow_method_code = 'PRIOR_ENTRY'
2261 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
2262 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
2263 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
2264 )
2265 THEN
2266 xla_ae_lines_pkg.BflowUpgEntry
2267 (p_business_method_code => l_bflow_method_code
2268 ,p_business_class_code => l_bflow_class_code
2269 ,p_balance_type => l_balance_type_code);
2270 ELSE
2271 NULL;
2272 -- No business flow processing for business flow method of NONE.
2273 END IF;
2274
2275 --
2276 -- call description
2277 --
2281 -- Bug 4922099
2278 -- No description or it is inherited.
2279 --
2280 -- call ADRs
2282 --
2283 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2284 (NVL(l_actual_upg_option, 'N') = 'O') OR
2285 (NVL(l_enc_upg_option, 'N') = 'O')
2286 )
2287 THEN
2288 NULL;
2289 --
2290 --
2291
2292 l_ccid := AcctDerRule_4(
2293 p_application_id => p_application_id
2294 , p_ae_header_id => l_ae_header_id
2295 , p_source_4 => p_source_4
2296 , x_transaction_coa_id => l_adr_transaction_coa_id
2297 , x_accounting_coa_id => l_adr_accounting_coa_id
2298 , x_value_type_code => l_adr_value_type_code
2299 , p_side => 'NA'
2300 );
2301
2302 xla_ae_lines_pkg.set_ccid(
2303 p_code_combination_id => l_ccid
2304 , p_value_type_code => l_adr_value_type_code
2305 , p_transaction_coa_id => l_adr_transaction_coa_id
2306 , p_accounting_coa_id => l_adr_accounting_coa_id
2307 , p_adr_code => 'CE_BANK_ERRORS'
2308 , p_adr_type_code => 'S'
2309 , p_component_type => l_component_type
2310 , p_component_code => l_component_code
2311 , p_component_type_code => l_component_type_code
2312 , p_component_appl_id => l_component_appl_id
2313 , p_amb_context_code => l_amb_context_code
2314 , p_side => 'NA'
2315 );
2316
2317
2318 --
2319 --
2320 END IF;
2321 --
2322 -- Bug 4922099
2323 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
2324 (NVL(l_enc_upg_option, 'N') = 'O')
2325 ) AND
2326 (l_bflow_method_code = 'PRIOR_ENTRY')
2327 )
2328 THEN
2329 IF
2330 --
2331 1 = 2
2332 --
2333 THEN
2334 xla_accounting_err_pkg.build_message
2335 (p_appli_s_name => 'XLA'
2336 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2337 ,p_token_1 => 'LINE_NUMBER'
2338 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
2339 ,p_token_2 => 'LINE_TYPE_NAME'
2340 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
2341 l_component_type
2342 ,l_component_code
2343 ,l_component_type_code
2344 ,l_component_appl_id
2345 ,l_amb_context_code
2346 ,l_entity_code
2347 ,l_event_class_code
2348 )
2349 ,p_token_3 => 'OWNER'
2350 ,p_value_3 => xla_lookups_pkg.get_meaning(
2351 p_lookup_type => 'XLA_OWNER_TYPE'
2352 ,p_lookup_code => l_component_type_code
2353 )
2354 ,p_token_4 => 'PRODUCT_NAME'
2355 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
2356 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2357 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2358 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2359 ,p_ae_header_id => NULL
2360 );
2361
2362 IF (C_LEVEL_ERROR>= g_log_level) THEN
2363 trace
2364 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2365 ,p_level => C_LEVEL_ERROR
2366 ,p_module => l_log_module);
2367 END IF;
2368 END IF;
2369 END IF;
2370 --
2371 --
2372 ------------------------------------------------------------------------------------------------
2373 -- 4219869 Business Flow
2374 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
2375 -- Prior Entry. Currently, the following code is always generated.
2376 ------------------------------------------------------------------------------------------------
2377 XLA_AE_LINES_PKG.ValidateCurrentLine;
2378
2379 ------------------------------------------------------------------------------------
2380 -- 4219869 Business Flow
2381 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
2382 ------------------------------------------------------------------------------------
2383 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2384
2385 ----------------------------------------------------------------------------------
2386 -- 4219869 Business Flow
2387 -- Update journal entry status -- Need to generate this within IF <condition>
2388 ----------------------------------------------------------------------------------
2389 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2393
2390 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
2391 ,p_balance_type_code => l_balance_type_code
2392 );
2394 -------------------------------------------------------------------------------------------
2395 -- 4262811 - Generate the Accrual Reversal lines
2396 -------------------------------------------------------------------------------------------
2397 BEGIN
2398 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
2399 (g_array_event(p_event_id).array_value_num('header_index'));
2400 IF l_acc_rev_flag IS NULL THEN
2401 l_acc_rev_flag := 'N';
2402 END IF;
2403 EXCEPTION
2404 WHEN OTHERS THEN
2405 l_acc_rev_flag := 'N';
2406 END;
2407 --
2408 IF (l_acc_rev_flag = 'Y') THEN
2409
2410 -- 4645092 ------------------------------------------------------------------------------
2411 -- To allow MPA report to determine if it should generate report process
2412 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
2413 ------------------------------------------------------------------------------------------
2414
2415 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
2416 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
2417
2418 --
2419 -- Update the line information that should be overwritten
2420 --
2421 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
2422 p_header_num => 1);
2423 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
2424
2425 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
2426
2427 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
2428 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
2429 END IF;
2430
2431 --
2432 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
2433 --
2434 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
2435 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
2436 ELSE
2437 ---------------------------------------------------------------------------------------------------
2438 -- 4262811a Switch Sign
2439 ---------------------------------------------------------------------------------------------------
2440 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
2441 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2442 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2443 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2444 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2445 -- 5132302
2446 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
2447 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2448
2449 END IF;
2450
2451 -- 4955764
2452 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2453 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
2454
2455
2456 XLA_AE_LINES_PKG.ValidateCurrentLine;
2457 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2458
2459 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2460 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
2461 ,p_balance_type_code => l_balance_type_code);
2462
2463 END IF;
2464
2465 -----------------------------------------------------------------------------------------
2466 -- 4262811 Multiperiod Accounting
2467 -----------------------------------------------------------------------------------------
2468 -- No MPA option is assigned.
2469
2470
2471 END IF;
2472 END IF;
2473 --
2474
2475 --
2476 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2477 trace
2478 (p_msg => 'END of AcctLineType_10'
2479 ,p_level => C_LEVEL_PROCEDURE
2480 ,p_module => l_log_module);
2481 END IF;
2482 --
2483 EXCEPTION
2484 WHEN xla_exceptions_pkg.application_exception THEN
2485 RAISE;
2486 WHEN OTHERS THEN
2487 xla_exceptions_pkg.raise_message
2488 (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_10');
2489 END AcctLineType_10;
2490 --
2491
2492 ---------------------------------------
2493 --
2494 -- PRIVATE FUNCTION
2495 -- AcctLineType_11
2496 --
2497 ---------------------------------------
2498 PROCEDURE AcctLineType_11 (
2499 p_application_id IN NUMBER
2500 ,p_event_id IN NUMBER
2501 ,p_calculate_acctd_flag IN VARCHAR2
2502 ,p_calculate_g_l_flag IN VARCHAR2
2503 ,p_actual_flag IN OUT VARCHAR2
2504 ,p_balance_type_code OUT VARCHAR2
2505 ,p_gain_or_loss_ref OUT VARCHAR2
2506
2507 --Cashflow Bank Account Bank Errors Account
2508 , p_source_4 IN NUMBER
2509 --Reversal Indicator
2510 , p_source_9 IN VARCHAR2
2511 --Cashflow Number
2512 , p_source_10 IN NUMBER
2513 --Cashflow History Identifier
2514 , p_source_11 IN VARCHAR2
2515 --Distribution Link Type
2516 , p_source_12 IN VARCHAR2
2517 --Cashflow Bank Account Currency
2518 , p_source_13 IN VARCHAR2
2519 --Cashflow Cleared Exchange Rate Date
2523 --Cashflow Cleared Exchange Rate Type
2520 , p_source_14 IN DATE
2521 --Cashflow Cleared Exchange Rate
2522 , p_source_15 IN NUMBER
2524 , p_source_16 IN VARCHAR2
2525 --Reversal First Distribution Identifier
2526 , p_source_17 IN NUMBER
2527 --Reversal Second Distribution Identifier
2528 , p_source_18 IN VARCHAR2
2529 --Reversal Distribution Link Type
2530 , p_source_19 IN VARCHAR2
2531 --Cashflow Cleared Bank Error Amount
2532 , p_source_20 IN NUMBER
2533 )
2534 IS
2535
2536 l_component_type VARCHAR2(80);
2537 l_component_code VARCHAR2(30);
2538 l_component_type_code VARCHAR2(1);
2539 l_component_appl_id INTEGER;
2540 l_amb_context_code VARCHAR2(30);
2541 l_entity_code VARCHAR2(30);
2542 l_event_class_code VARCHAR2(30);
2543 l_ae_header_id NUMBER;
2544 l_event_type_code VARCHAR2(30);
2545 l_line_definition_code VARCHAR2(30);
2546 l_line_definition_owner_code VARCHAR2(1);
2547 --
2548 -- adr variables
2549 l_segment VARCHAR2(30);
2550 l_ccid NUMBER;
2551 l_adr_transaction_coa_id NUMBER;
2552 l_adr_accounting_coa_id NUMBER;
2553 l_adr_flexfield_segment_code VARCHAR2(30);
2554 l_adr_flex_value_set_id NUMBER;
2555 l_adr_value_type_code VARCHAR2(30);
2556 l_adr_value_combination_id NUMBER;
2557 l_adr_value_segment_code VARCHAR2(30);
2558
2559 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
2560 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
2561 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
2562 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
2563
2564 -- 4262811 Variables ------------------------------------------------------------------------------------------
2565 l_entered_amt_idx NUMBER;
2566 l_accted_amt_idx NUMBER;
2567 l_acc_rev_flag VARCHAR2(1);
2568 l_accrual_line_num NUMBER;
2569 l_tmp_amt NUMBER;
2570 l_acc_rev_natural_side_code VARCHAR2(1);
2571
2572 l_num_entries NUMBER;
2573 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
2574 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
2575 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
2576 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
2577 l_recog_line_1 NUMBER;
2578 l_recog_line_2 NUMBER;
2579
2580 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
2581 l_bflow_applied_to_amt NUMBER; -- 5132302
2582 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
2583
2584 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
2585
2586 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
2587 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
2588
2589 ---------------------------------------------------------------------------------------------------------------
2590
2591
2592 --
2593 -- bulk performance
2594 --
2595 l_balance_type_code VARCHAR2(1);
2596 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
2597 l_log_module VARCHAR2(240);
2598
2599 --
2600 -- Upgrade strategy
2601 --
2602 l_actual_upg_option VARCHAR2(1);
2603 l_enc_upg_option VARCHAR2(1);
2604
2605 --
2606 BEGIN
2607 --
2608 IF g_log_enabled THEN
2609 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_11';
2610 END IF;
2611 --
2612 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2613
2614 trace
2615 (p_msg => 'BEGIN of AcctLineType_11'
2616 ,p_level => C_LEVEL_PROCEDURE
2617 ,p_module => l_log_module);
2618
2619 END IF;
2620 --
2621 l_component_type := 'AMB_JLT';
2622 l_component_code := 'BAT_BANK_ERRORS_CLEAR';
2623 l_component_type_code := 'S';
2624 l_component_appl_id := 260;
2625 l_amb_context_code := 'DEFAULT';
2626 l_entity_code := 'CE_CASHFLOWS';
2627 l_event_class_code := 'BAT_CLASS';
2628 l_event_type_code := 'CE_BAT_CLEARED';
2629 l_line_definition_owner_code := 'S';
2630 l_line_definition_code := 'BAT_CLR_DFN';
2631 --
2632 l_balance_type_code := 'A';
2633 l_segment := NULL;
2634 l_ccid := NULL;
2635 l_adr_transaction_coa_id := NULL;
2636 l_adr_accounting_coa_id := NULL;
2637 l_adr_flexfield_segment_code := NULL;
2638 l_adr_flex_value_set_id := NULL;
2639 l_adr_value_type_code := NULL;
2640 l_adr_value_combination_id := NULL;
2641 l_adr_value_segment_code := NULL;
2642
2643 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
2644 l_bflow_class_code := ''; -- 4219869 Business Flow
2645 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
2646 l_budgetary_control_flag := 'N';
2647
2648 l_bflow_applied_to_amt_idx := NULL; -- 5132302
2649 l_bflow_applied_to_amt := NULL; -- 5132302
2650 l_entered_amt_idx := NULL; -- 4262811
2651 l_accted_amt_idx := NULL; -- 4262811
2652 l_acc_rev_flag := NULL; -- 4262811
2653 l_accrual_line_num := NULL; -- 4262811
2654 l_tmp_amt := NULL; -- 4262811
2655 --
2656
2657 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
2661
2658 l_balance_type_code <> 'B' THEN
2659 IF p_source_20 IS NOT NULL
2660 THEN
2662 --
2663 XLA_AE_LINES_PKG.SetNewLine;
2664
2665 p_balance_type_code := l_balance_type_code;
2666 -- set the flag so later we will know whether the gain loss line needs to be created
2667
2668 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
2669 p_actual_flag :='A';
2670 END IF;
2671
2672 --
2673 -- bulk performance
2674 --
2675 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
2676 p_header_num => 0); -- 4262811
2677 --
2678 -- set accounting line options
2679 --
2680 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
2681 p_natural_side_code => 'D'
2682 , p_gain_or_loss_flag => 'N'
2683 , p_gl_transfer_mode_code => 'D'
2684 , p_acct_entry_type_code => 'A'
2685 , p_switch_side_flag => 'Y'
2686 , p_merge_duplicate_code => 'N'
2687 );
2688 --
2689 l_acc_rev_natural_side_code := 'C'; -- 4262811
2690 --
2691 --
2692 -- set accounting line type info
2693 --
2694 xla_ae_lines_pkg.SetAcctLineType
2695 (p_component_type => l_component_type
2696 ,p_event_type_code => l_event_type_code
2697 ,p_line_definition_owner_code => l_line_definition_owner_code
2698 ,p_line_definition_code => l_line_definition_code
2699 ,p_accounting_line_code => l_component_code
2700 ,p_accounting_line_type_code => l_component_type_code
2701 ,p_accounting_line_appl_id => l_component_appl_id
2702 ,p_amb_context_code => l_amb_context_code
2703 ,p_entity_code => l_entity_code
2704 ,p_event_class_code => l_event_class_code);
2705 --
2706 -- set accounting class
2707 --
2708 xla_ae_lines_pkg.SetAcctClass(
2709 p_accounting_class_code => 'BANK_ERROR'
2710 , p_ae_header_id => l_ae_header_id
2711 );
2712
2713 --
2714 -- set rounding class
2715 --
2716 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2717 'BANK_ERROR';
2718
2719 --
2720 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2721 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2722 --
2723 -- bulk performance
2724 --
2725 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2726
2727 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2728 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2729
2730 -- 4955764
2731 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2732 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2733
2734 -- 4458381 Public Sector Enh
2735
2736 --
2737 -- set accounting attributes for the line type
2738 --
2739 l_entered_amt_idx := 5;
2740 l_accted_amt_idx := NULL;
2741 l_bflow_applied_to_amt_idx := NULL; -- 5132302
2742 l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
2743 l_rec_acct_attrs.array_char_value(1) := p_source_9;
2744 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
2745 l_rec_acct_attrs.array_num_value(2) := to_char(p_source_10);
2746 l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
2747 l_rec_acct_attrs.array_char_value(3) := p_source_11;
2748 l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
2749 l_rec_acct_attrs.array_char_value(4) := p_source_12;
2750 l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
2751 l_rec_acct_attrs.array_num_value(5) := p_source_20;
2752 l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
2753 l_rec_acct_attrs.array_char_value(6) := p_source_13;
2754 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
2755 l_rec_acct_attrs.array_date_value(7) := p_source_14;
2756 l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
2757 l_rec_acct_attrs.array_num_value(8) := p_source_15;
2758 l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
2759 l_rec_acct_attrs.array_char_value(9) := p_source_16;
2760 l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
2761 l_rec_acct_attrs.array_num_value(10) := to_char(p_source_17);
2762 l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
2763 l_rec_acct_attrs.array_char_value(11) := p_source_18;
2764 l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
2765 l_rec_acct_attrs.array_char_value(12) := p_source_19;
2766
2767 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2768 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2769
2770 ---------------------------------------------------------------------------------------------------------------
2771 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
2772 ---------------------------------------------------------------------------------------------------------------
2773 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
2774
2775 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2776 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2777
2778 IF xla_accounting_cache_pkg.GetValueChar
2782 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
2779 (p_source_code => 'LEDGER_CATEGORY_CODE'
2780 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
2781 AND l_bflow_method_code = 'PRIOR_ENTRY'
2783 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
2784 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
2785 )
2786 THEN
2787 xla_ae_lines_pkg.BflowUpgEntry
2788 (p_business_method_code => l_bflow_method_code
2789 ,p_business_class_code => l_bflow_class_code
2790 ,p_balance_type => l_balance_type_code);
2791 ELSE
2792 NULL;
2793 -- No business flow processing for business flow method of NONE.
2794 END IF;
2795
2796 --
2797 -- call description
2798 --
2799 -- No description or it is inherited.
2800 --
2801 -- call ADRs
2802 -- Bug 4922099
2803 --
2804 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2805 (NVL(l_actual_upg_option, 'N') = 'O') OR
2806 (NVL(l_enc_upg_option, 'N') = 'O')
2807 )
2808 THEN
2809 NULL;
2810 --
2811 --
2812
2813 l_ccid := AcctDerRule_4(
2814 p_application_id => p_application_id
2815 , p_ae_header_id => l_ae_header_id
2816 , p_source_4 => p_source_4
2817 , x_transaction_coa_id => l_adr_transaction_coa_id
2818 , x_accounting_coa_id => l_adr_accounting_coa_id
2819 , x_value_type_code => l_adr_value_type_code
2820 , p_side => 'NA'
2821 );
2822
2823 xla_ae_lines_pkg.set_ccid(
2824 p_code_combination_id => l_ccid
2825 , p_value_type_code => l_adr_value_type_code
2826 , p_transaction_coa_id => l_adr_transaction_coa_id
2827 , p_accounting_coa_id => l_adr_accounting_coa_id
2828 , p_adr_code => 'CE_BANK_ERRORS'
2829 , p_adr_type_code => 'S'
2830 , p_component_type => l_component_type
2831 , p_component_code => l_component_code
2832 , p_component_type_code => l_component_type_code
2833 , p_component_appl_id => l_component_appl_id
2834 , p_amb_context_code => l_amb_context_code
2835 , p_side => 'NA'
2836 );
2837
2838
2839 --
2840 --
2841 END IF;
2842 --
2843 -- Bug 4922099
2844 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
2845 (NVL(l_enc_upg_option, 'N') = 'O')
2846 ) AND
2847 (l_bflow_method_code = 'PRIOR_ENTRY')
2848 )
2849 THEN
2850 IF
2851 --
2852 1 = 2
2853 --
2854 THEN
2855 xla_accounting_err_pkg.build_message
2856 (p_appli_s_name => 'XLA'
2857 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2858 ,p_token_1 => 'LINE_NUMBER'
2859 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
2860 ,p_token_2 => 'LINE_TYPE_NAME'
2861 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
2862 l_component_type
2863 ,l_component_code
2864 ,l_component_type_code
2865 ,l_component_appl_id
2866 ,l_amb_context_code
2867 ,l_entity_code
2868 ,l_event_class_code
2869 )
2870 ,p_token_3 => 'OWNER'
2871 ,p_value_3 => xla_lookups_pkg.get_meaning(
2872 p_lookup_type => 'XLA_OWNER_TYPE'
2873 ,p_lookup_code => l_component_type_code
2874 )
2875 ,p_token_4 => 'PRODUCT_NAME'
2876 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
2877 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2878 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2879 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2880 ,p_ae_header_id => NULL
2881 );
2882
2883 IF (C_LEVEL_ERROR>= g_log_level) THEN
2884 trace
2885 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2886 ,p_level => C_LEVEL_ERROR
2887 ,p_module => l_log_module);
2888 END IF;
2889 END IF;
2890 END IF;
2891 --
2892 --
2893 ------------------------------------------------------------------------------------------------
2894 -- 4219869 Business Flow
2895 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
2896 -- Prior Entry. Currently, the following code is always generated.
2900 ------------------------------------------------------------------------------------
2897 ------------------------------------------------------------------------------------------------
2898 XLA_AE_LINES_PKG.ValidateCurrentLine;
2899
2901 -- 4219869 Business Flow
2902 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
2903 ------------------------------------------------------------------------------------
2904 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2905
2906 ----------------------------------------------------------------------------------
2907 -- 4219869 Business Flow
2908 -- Update journal entry status -- Need to generate this within IF <condition>
2909 ----------------------------------------------------------------------------------
2910 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2911 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
2912 ,p_balance_type_code => l_balance_type_code
2913 );
2914
2915 -------------------------------------------------------------------------------------------
2916 -- 4262811 - Generate the Accrual Reversal lines
2917 -------------------------------------------------------------------------------------------
2918 BEGIN
2919 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
2920 (g_array_event(p_event_id).array_value_num('header_index'));
2921 IF l_acc_rev_flag IS NULL THEN
2922 l_acc_rev_flag := 'N';
2923 END IF;
2924 EXCEPTION
2925 WHEN OTHERS THEN
2926 l_acc_rev_flag := 'N';
2927 END;
2928 --
2929 IF (l_acc_rev_flag = 'Y') THEN
2930
2931 -- 4645092 ------------------------------------------------------------------------------
2932 -- To allow MPA report to determine if it should generate report process
2933 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
2934 ------------------------------------------------------------------------------------------
2935
2936 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
2937 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
2938
2939 --
2940 -- Update the line information that should be overwritten
2941 --
2942 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
2943 p_header_num => 1);
2944 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
2945
2946 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
2947
2948 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
2949 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
2950 END IF;
2951
2952 --
2953 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
2954 --
2955 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
2956 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
2957 ELSE
2958 ---------------------------------------------------------------------------------------------------
2959 -- 4262811a Switch Sign
2960 ---------------------------------------------------------------------------------------------------
2961 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
2962 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2963 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2964 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2965 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2966 -- 5132302
2967 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
2968 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2969
2970 END IF;
2971
2972 -- 4955764
2973 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2974 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
2975
2976
2977 XLA_AE_LINES_PKG.ValidateCurrentLine;
2978 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2979
2980 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2981 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
2982 ,p_balance_type_code => l_balance_type_code);
2983
2984 END IF;
2985
2986 -----------------------------------------------------------------------------------------
2987 -- 4262811 Multiperiod Accounting
2988 -----------------------------------------------------------------------------------------
2989 -- No MPA option is assigned.
2990
2991
2992 END IF;
2993 END IF;
2994 --
2995
2996 --
2997 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2998 trace
2999 (p_msg => 'END of AcctLineType_11'
3000 ,p_level => C_LEVEL_PROCEDURE
3001 ,p_module => l_log_module);
3002 END IF;
3003 --
3004 EXCEPTION
3005 WHEN xla_exceptions_pkg.application_exception THEN
3006 RAISE;
3007 WHEN OTHERS THEN
3008 xla_exceptions_pkg.raise_message
3009 (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_11');
3010 END AcctLineType_11;
3011 --
3012
3013 ---------------------------------------
3014 --
3015 -- PRIVATE FUNCTION
3016 -- AcctLineType_12
3017 --
3018 ---------------------------------------
3022 ,p_calculate_acctd_flag IN VARCHAR2
3019 PROCEDURE AcctLineType_12 (
3020 p_application_id IN NUMBER
3021 ,p_event_id IN NUMBER
3023 ,p_calculate_g_l_flag IN VARCHAR2
3024 ,p_actual_flag IN OUT VARCHAR2
3025 ,p_balance_type_code OUT VARCHAR2
3026 ,p_gain_or_loss_ref OUT VARCHAR2
3027
3028 --Cashflow Bank Account FX Charges Account
3029 , p_source_6 IN NUMBER
3030 --Reversal Indicator
3031 , p_source_9 IN VARCHAR2
3032 --Cashflow Number
3033 , p_source_10 IN NUMBER
3034 --Cashflow History Identifier
3035 , p_source_11 IN VARCHAR2
3036 --Distribution Link Type
3037 , p_source_12 IN VARCHAR2
3038 --Cashflow Bank Account Currency
3039 , p_source_13 IN VARCHAR2
3040 --Cashflow Cleared Exchange Rate Date
3041 , p_source_14 IN DATE
3042 --Cashflow Cleared Exchange Rate
3043 , p_source_15 IN NUMBER
3044 --Cashflow Cleared Exchange Rate Type
3045 , p_source_16 IN VARCHAR2
3046 --Reversal First Distribution Identifier
3047 , p_source_17 IN NUMBER
3048 --Reversal Second Distribution Identifier
3049 , p_source_18 IN VARCHAR2
3050 --Reversal Distribution Link Type
3051 , p_source_19 IN VARCHAR2
3052 --Cashflow Cleared FX Charge Amount
3053 , p_source_21 IN NUMBER
3054 )
3055 IS
3056
3057 l_component_type VARCHAR2(80);
3058 l_component_code VARCHAR2(30);
3059 l_component_type_code VARCHAR2(1);
3060 l_component_appl_id INTEGER;
3061 l_amb_context_code VARCHAR2(30);
3062 l_entity_code VARCHAR2(30);
3063 l_event_class_code VARCHAR2(30);
3064 l_ae_header_id NUMBER;
3065 l_event_type_code VARCHAR2(30);
3066 l_line_definition_code VARCHAR2(30);
3067 l_line_definition_owner_code VARCHAR2(1);
3068 --
3069 -- adr variables
3070 l_segment VARCHAR2(30);
3071 l_ccid NUMBER;
3072 l_adr_transaction_coa_id NUMBER;
3073 l_adr_accounting_coa_id NUMBER;
3074 l_adr_flexfield_segment_code VARCHAR2(30);
3075 l_adr_flex_value_set_id NUMBER;
3076 l_adr_value_type_code VARCHAR2(30);
3077 l_adr_value_combination_id NUMBER;
3078 l_adr_value_segment_code VARCHAR2(30);
3079
3080 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
3081 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
3082 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
3083 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
3084
3085 -- 4262811 Variables ------------------------------------------------------------------------------------------
3086 l_entered_amt_idx NUMBER;
3087 l_accted_amt_idx NUMBER;
3088 l_acc_rev_flag VARCHAR2(1);
3089 l_accrual_line_num NUMBER;
3090 l_tmp_amt NUMBER;
3091 l_acc_rev_natural_side_code VARCHAR2(1);
3092
3093 l_num_entries NUMBER;
3094 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
3095 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
3096 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
3097 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
3098 l_recog_line_1 NUMBER;
3099 l_recog_line_2 NUMBER;
3100
3101 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
3102 l_bflow_applied_to_amt NUMBER; -- 5132302
3103 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
3104
3105 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3106
3107 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
3108 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
3109
3110 ---------------------------------------------------------------------------------------------------------------
3111
3112
3113 --
3114 -- bulk performance
3115 --
3116 l_balance_type_code VARCHAR2(1);
3117 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
3118 l_log_module VARCHAR2(240);
3119
3120 --
3121 -- Upgrade strategy
3122 --
3123 l_actual_upg_option VARCHAR2(1);
3124 l_enc_upg_option VARCHAR2(1);
3125
3126 --
3127 BEGIN
3128 --
3129 IF g_log_enabled THEN
3130 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_12';
3131 END IF;
3132 --
3133 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3134
3135 trace
3136 (p_msg => 'BEGIN of AcctLineType_12'
3137 ,p_level => C_LEVEL_PROCEDURE
3138 ,p_module => l_log_module);
3139
3140 END IF;
3141 --
3142 l_component_type := 'AMB_JLT';
3143 l_component_code := 'BAT_FX_CHARGES_CLEAR';
3144 l_component_type_code := 'S';
3145 l_component_appl_id := 260;
3146 l_amb_context_code := 'DEFAULT';
3147 l_entity_code := 'CE_CASHFLOWS';
3148 l_event_class_code := 'BAT_CLASS';
3149 l_event_type_code := 'CE_BAT_UNCLEARED';
3150 l_line_definition_owner_code := 'S';
3151 l_line_definition_code := 'BAT_UNCLR_DEFN';
3152 --
3153 l_balance_type_code := 'A';
3154 l_segment := NULL;
3155 l_ccid := NULL;
3156 l_adr_transaction_coa_id := NULL;
3157 l_adr_accounting_coa_id := NULL;
3158 l_adr_flexfield_segment_code := NULL;
3159 l_adr_flex_value_set_id := NULL;
3160 l_adr_value_type_code := NULL;
3161 l_adr_value_combination_id := NULL;
3165 l_bflow_class_code := ''; -- 4219869 Business Flow
3162 l_adr_value_segment_code := NULL;
3163
3164 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
3166 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
3167 l_budgetary_control_flag := 'N';
3168
3169 l_bflow_applied_to_amt_idx := NULL; -- 5132302
3170 l_bflow_applied_to_amt := NULL; -- 5132302
3171 l_entered_amt_idx := NULL; -- 4262811
3172 l_accted_amt_idx := NULL; -- 4262811
3173 l_acc_rev_flag := NULL; -- 4262811
3174 l_accrual_line_num := NULL; -- 4262811
3175 l_tmp_amt := NULL; -- 4262811
3176 --
3177
3178 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3179 l_balance_type_code <> 'B' THEN
3180 IF p_source_21 IS NOT NULL
3181 THEN
3182
3183 --
3184 XLA_AE_LINES_PKG.SetNewLine;
3185
3186 p_balance_type_code := l_balance_type_code;
3187 -- set the flag so later we will know whether the gain loss line needs to be created
3188
3189 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3190 p_actual_flag :='A';
3191 END IF;
3192
3193 --
3194 -- bulk performance
3195 --
3196 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3197 p_header_num => 0); -- 4262811
3198 --
3199 -- set accounting line options
3200 --
3201 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3202 p_natural_side_code => 'D'
3203 , p_gain_or_loss_flag => 'N'
3204 , p_gl_transfer_mode_code => 'D'
3205 , p_acct_entry_type_code => 'A'
3206 , p_switch_side_flag => 'Y'
3207 , p_merge_duplicate_code => 'N'
3208 );
3209 --
3210 l_acc_rev_natural_side_code := 'C'; -- 4262811
3211 --
3212 --
3213 -- set accounting line type info
3214 --
3215 xla_ae_lines_pkg.SetAcctLineType
3216 (p_component_type => l_component_type
3217 ,p_event_type_code => l_event_type_code
3218 ,p_line_definition_owner_code => l_line_definition_owner_code
3219 ,p_line_definition_code => l_line_definition_code
3220 ,p_accounting_line_code => l_component_code
3221 ,p_accounting_line_type_code => l_component_type_code
3222 ,p_accounting_line_appl_id => l_component_appl_id
3223 ,p_amb_context_code => l_amb_context_code
3224 ,p_entity_code => l_entity_code
3225 ,p_event_class_code => l_event_class_code);
3226 --
3227 -- set accounting class
3228 --
3229 xla_ae_lines_pkg.SetAcctClass(
3230 p_accounting_class_code => 'BANK_ERROR'
3231 , p_ae_header_id => l_ae_header_id
3232 );
3233
3234 --
3235 -- set rounding class
3236 --
3237 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3238 'BANK_ERROR';
3239
3240 --
3241 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3242 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3243 --
3244 -- bulk performance
3245 --
3246 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3247
3248 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3249 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3250
3251 -- 4955764
3252 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3253 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3254
3255 -- 4458381 Public Sector Enh
3256
3257 --
3258 -- set accounting attributes for the line type
3259 --
3260 l_entered_amt_idx := 5;
3261 l_accted_amt_idx := NULL;
3262 l_bflow_applied_to_amt_idx := NULL; -- 5132302
3263 l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
3264 l_rec_acct_attrs.array_char_value(1) := p_source_9;
3265 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
3266 l_rec_acct_attrs.array_num_value(2) := to_char(p_source_10);
3267 l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
3268 l_rec_acct_attrs.array_char_value(3) := p_source_11;
3269 l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
3270 l_rec_acct_attrs.array_char_value(4) := p_source_12;
3271 l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
3272 l_rec_acct_attrs.array_num_value(5) := p_source_21;
3273 l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
3274 l_rec_acct_attrs.array_char_value(6) := p_source_13;
3275 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
3276 l_rec_acct_attrs.array_date_value(7) := p_source_14;
3277 l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
3278 l_rec_acct_attrs.array_num_value(8) := p_source_15;
3279 l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
3280 l_rec_acct_attrs.array_char_value(9) := p_source_16;
3281 l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
3282 l_rec_acct_attrs.array_num_value(10) := to_char(p_source_17);
3283 l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
3284 l_rec_acct_attrs.array_char_value(11) := p_source_18;
3285 l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
3286 l_rec_acct_attrs.array_char_value(12) := p_source_19;
3287
3288 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3292 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3289 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3290
3291 ---------------------------------------------------------------------------------------------------------------
3293 ---------------------------------------------------------------------------------------------------------------
3294 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3295
3296 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3297 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3298
3299 IF xla_accounting_cache_pkg.GetValueChar
3300 (p_source_code => 'LEDGER_CATEGORY_CODE'
3301 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3302 AND l_bflow_method_code = 'PRIOR_ENTRY'
3303 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3304 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3305 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3306 )
3307 THEN
3308 xla_ae_lines_pkg.BflowUpgEntry
3309 (p_business_method_code => l_bflow_method_code
3310 ,p_business_class_code => l_bflow_class_code
3311 ,p_balance_type => l_balance_type_code);
3312 ELSE
3313 NULL;
3314 -- No business flow processing for business flow method of NONE.
3315 END IF;
3316
3317 --
3318 -- call description
3319 --
3320 -- No description or it is inherited.
3321 --
3322 -- call ADRs
3323 -- Bug 4922099
3324 --
3325 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3326 (NVL(l_actual_upg_option, 'N') = 'O') OR
3327 (NVL(l_enc_upg_option, 'N') = 'O')
3328 )
3329 THEN
3330 NULL;
3331 --
3332 --
3333
3334 l_ccid := AcctDerRule_6(
3335 p_application_id => p_application_id
3336 , p_ae_header_id => l_ae_header_id
3337 , p_source_6 => p_source_6
3338 , x_transaction_coa_id => l_adr_transaction_coa_id
3339 , x_accounting_coa_id => l_adr_accounting_coa_id
3340 , x_value_type_code => l_adr_value_type_code
3341 , p_side => 'NA'
3342 );
3343
3344 xla_ae_lines_pkg.set_ccid(
3345 p_code_combination_id => l_ccid
3346 , p_value_type_code => l_adr_value_type_code
3347 , p_transaction_coa_id => l_adr_transaction_coa_id
3348 , p_accounting_coa_id => l_adr_accounting_coa_id
3349 , p_adr_code => 'CE_FX_CHARGES'
3350 , p_adr_type_code => 'S'
3351 , p_component_type => l_component_type
3352 , p_component_code => l_component_code
3353 , p_component_type_code => l_component_type_code
3354 , p_component_appl_id => l_component_appl_id
3355 , p_amb_context_code => l_amb_context_code
3356 , p_side => 'NA'
3357 );
3358
3359
3360 --
3361 --
3362 END IF;
3363 --
3364 -- Bug 4922099
3365 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
3366 (NVL(l_enc_upg_option, 'N') = 'O')
3367 ) AND
3368 (l_bflow_method_code = 'PRIOR_ENTRY')
3369 )
3370 THEN
3371 IF
3372 --
3373 1 = 2
3374 --
3375 THEN
3376 xla_accounting_err_pkg.build_message
3377 (p_appli_s_name => 'XLA'
3378 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3379 ,p_token_1 => 'LINE_NUMBER'
3380 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
3381 ,p_token_2 => 'LINE_TYPE_NAME'
3382 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
3383 l_component_type
3384 ,l_component_code
3385 ,l_component_type_code
3386 ,l_component_appl_id
3387 ,l_amb_context_code
3388 ,l_entity_code
3389 ,l_event_class_code
3390 )
3391 ,p_token_3 => 'OWNER'
3392 ,p_value_3 => xla_lookups_pkg.get_meaning(
3393 p_lookup_type => 'XLA_OWNER_TYPE'
3394 ,p_lookup_code => l_component_type_code
3395 )
3396 ,p_token_4 => 'PRODUCT_NAME'
3397 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
3398 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3399 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
3400 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3404 IF (C_LEVEL_ERROR>= g_log_level) THEN
3401 ,p_ae_header_id => NULL
3402 );
3403
3405 trace
3406 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3407 ,p_level => C_LEVEL_ERROR
3408 ,p_module => l_log_module);
3409 END IF;
3410 END IF;
3411 END IF;
3412 --
3413 --
3414 ------------------------------------------------------------------------------------------------
3415 -- 4219869 Business Flow
3416 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
3417 -- Prior Entry. Currently, the following code is always generated.
3418 ------------------------------------------------------------------------------------------------
3419 XLA_AE_LINES_PKG.ValidateCurrentLine;
3420
3421 ------------------------------------------------------------------------------------
3422 -- 4219869 Business Flow
3423 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
3424 ------------------------------------------------------------------------------------
3425 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3426
3427 ----------------------------------------------------------------------------------
3428 -- 4219869 Business Flow
3429 -- Update journal entry status -- Need to generate this within IF <condition>
3430 ----------------------------------------------------------------------------------
3431 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3432 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
3433 ,p_balance_type_code => l_balance_type_code
3434 );
3435
3436 -------------------------------------------------------------------------------------------
3437 -- 4262811 - Generate the Accrual Reversal lines
3438 -------------------------------------------------------------------------------------------
3439 BEGIN
3440 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3441 (g_array_event(p_event_id).array_value_num('header_index'));
3442 IF l_acc_rev_flag IS NULL THEN
3443 l_acc_rev_flag := 'N';
3444 END IF;
3445 EXCEPTION
3446 WHEN OTHERS THEN
3447 l_acc_rev_flag := 'N';
3448 END;
3449 --
3450 IF (l_acc_rev_flag = 'Y') THEN
3451
3452 -- 4645092 ------------------------------------------------------------------------------
3453 -- To allow MPA report to determine if it should generate report process
3454 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3455 ------------------------------------------------------------------------------------------
3456
3457 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3458 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3459
3460 --
3461 -- Update the line information that should be overwritten
3462 --
3463 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3464 p_header_num => 1);
3465 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
3466
3467 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3468
3469 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
3470 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3471 END IF;
3472
3473 --
3474 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3475 --
3476 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3477 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
3478 ELSE
3479 ---------------------------------------------------------------------------------------------------
3480 -- 4262811a Switch Sign
3481 ---------------------------------------------------------------------------------------------------
3482 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
3483 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3484 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3485 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3486 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3487 -- 5132302
3488 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3489 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3490
3491 END IF;
3492
3493 -- 4955764
3494 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3495 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3496
3497
3498 XLA_AE_LINES_PKG.ValidateCurrentLine;
3499 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3500
3501 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3502 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3503 ,p_balance_type_code => l_balance_type_code);
3504
3505 END IF;
3506
3507 -----------------------------------------------------------------------------------------
3508 -- 4262811 Multiperiod Accounting
3509 -----------------------------------------------------------------------------------------
3510 -- No MPA option is assigned.
3511
3512
3513 END IF;
3514 END IF;
3518 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3515 --
3516
3517 --
3519 trace
3520 (p_msg => 'END of AcctLineType_12'
3521 ,p_level => C_LEVEL_PROCEDURE
3522 ,p_module => l_log_module);
3523 END IF;
3524 --
3525 EXCEPTION
3526 WHEN xla_exceptions_pkg.application_exception THEN
3527 RAISE;
3528 WHEN OTHERS THEN
3529 xla_exceptions_pkg.raise_message
3530 (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_12');
3531 END AcctLineType_12;
3532 --
3533
3534 ---------------------------------------
3535 --
3536 -- PRIVATE FUNCTION
3537 -- AcctLineType_13
3538 --
3539 ---------------------------------------
3540 PROCEDURE AcctLineType_13 (
3541 p_application_id IN NUMBER
3542 ,p_event_id IN NUMBER
3543 ,p_calculate_acctd_flag IN VARCHAR2
3544 ,p_calculate_g_l_flag IN VARCHAR2
3545 ,p_actual_flag IN OUT VARCHAR2
3546 ,p_balance_type_code OUT VARCHAR2
3547 ,p_gain_or_loss_ref OUT VARCHAR2
3548
3549 --Cashflow Bank Account FX Charges Account
3550 , p_source_6 IN NUMBER
3551 --Reversal Indicator
3552 , p_source_9 IN VARCHAR2
3553 --Cashflow Number
3554 , p_source_10 IN NUMBER
3555 --Cashflow History Identifier
3556 , p_source_11 IN VARCHAR2
3557 --Distribution Link Type
3558 , p_source_12 IN VARCHAR2
3559 --Cashflow Bank Account Currency
3560 , p_source_13 IN VARCHAR2
3561 --Cashflow Cleared Exchange Rate Date
3562 , p_source_14 IN DATE
3563 --Cashflow Cleared Exchange Rate
3564 , p_source_15 IN NUMBER
3565 --Cashflow Cleared Exchange Rate Type
3566 , p_source_16 IN VARCHAR2
3567 --Reversal First Distribution Identifier
3568 , p_source_17 IN NUMBER
3569 --Reversal Second Distribution Identifier
3570 , p_source_18 IN VARCHAR2
3571 --Reversal Distribution Link Type
3572 , p_source_19 IN VARCHAR2
3573 --Cashflow Cleared FX Charge Amount
3574 , p_source_21 IN NUMBER
3575 )
3576 IS
3577
3578 l_component_type VARCHAR2(80);
3579 l_component_code VARCHAR2(30);
3580 l_component_type_code VARCHAR2(1);
3581 l_component_appl_id INTEGER;
3582 l_amb_context_code VARCHAR2(30);
3583 l_entity_code VARCHAR2(30);
3584 l_event_class_code VARCHAR2(30);
3585 l_ae_header_id NUMBER;
3586 l_event_type_code VARCHAR2(30);
3587 l_line_definition_code VARCHAR2(30);
3588 l_line_definition_owner_code VARCHAR2(1);
3589 --
3590 -- adr variables
3591 l_segment VARCHAR2(30);
3592 l_ccid NUMBER;
3593 l_adr_transaction_coa_id NUMBER;
3594 l_adr_accounting_coa_id NUMBER;
3595 l_adr_flexfield_segment_code VARCHAR2(30);
3596 l_adr_flex_value_set_id NUMBER;
3597 l_adr_value_type_code VARCHAR2(30);
3598 l_adr_value_combination_id NUMBER;
3599 l_adr_value_segment_code VARCHAR2(30);
3600
3601 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
3602 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
3603 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
3604 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
3605
3606 -- 4262811 Variables ------------------------------------------------------------------------------------------
3607 l_entered_amt_idx NUMBER;
3608 l_accted_amt_idx NUMBER;
3609 l_acc_rev_flag VARCHAR2(1);
3610 l_accrual_line_num NUMBER;
3611 l_tmp_amt NUMBER;
3612 l_acc_rev_natural_side_code VARCHAR2(1);
3613
3614 l_num_entries NUMBER;
3615 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
3616 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
3617 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
3618 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
3619 l_recog_line_1 NUMBER;
3620 l_recog_line_2 NUMBER;
3621
3622 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
3623 l_bflow_applied_to_amt NUMBER; -- 5132302
3624 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
3625
3626 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3627
3628 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
3629 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
3630
3631 ---------------------------------------------------------------------------------------------------------------
3632
3633
3634 --
3635 -- bulk performance
3636 --
3637 l_balance_type_code VARCHAR2(1);
3638 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
3639 l_log_module VARCHAR2(240);
3640
3641 --
3642 -- Upgrade strategy
3643 --
3644 l_actual_upg_option VARCHAR2(1);
3645 l_enc_upg_option VARCHAR2(1);
3646
3647 --
3648 BEGIN
3649 --
3650 IF g_log_enabled THEN
3651 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_13';
3652 END IF;
3653 --
3654 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3655
3656 trace
3657 (p_msg => 'BEGIN of AcctLineType_13'
3658 ,p_level => C_LEVEL_PROCEDURE
3659 ,p_module => l_log_module);
3660
3661 END IF;
3662 --
3663 l_component_type := 'AMB_JLT';
3664 l_component_code := 'BAT_FX_CHARGES_CLEAR';
3665 l_component_type_code := 'S';
3669 l_event_class_code := 'BAT_CLASS';
3666 l_component_appl_id := 260;
3667 l_amb_context_code := 'DEFAULT';
3668 l_entity_code := 'CE_CASHFLOWS';
3670 l_event_type_code := 'CE_BAT_CLEARED';
3671 l_line_definition_owner_code := 'S';
3672 l_line_definition_code := 'BAT_CLR_DFN';
3673 --
3674 l_balance_type_code := 'A';
3675 l_segment := NULL;
3676 l_ccid := NULL;
3677 l_adr_transaction_coa_id := NULL;
3678 l_adr_accounting_coa_id := NULL;
3679 l_adr_flexfield_segment_code := NULL;
3680 l_adr_flex_value_set_id := NULL;
3681 l_adr_value_type_code := NULL;
3682 l_adr_value_combination_id := NULL;
3683 l_adr_value_segment_code := NULL;
3684
3685 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
3686 l_bflow_class_code := ''; -- 4219869 Business Flow
3687 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
3688 l_budgetary_control_flag := 'N';
3689
3690 l_bflow_applied_to_amt_idx := NULL; -- 5132302
3691 l_bflow_applied_to_amt := NULL; -- 5132302
3692 l_entered_amt_idx := NULL; -- 4262811
3693 l_accted_amt_idx := NULL; -- 4262811
3694 l_acc_rev_flag := NULL; -- 4262811
3695 l_accrual_line_num := NULL; -- 4262811
3696 l_tmp_amt := NULL; -- 4262811
3697 --
3698
3699 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3700 l_balance_type_code <> 'B' THEN
3701 IF p_source_21 IS NOT NULL
3702 THEN
3703
3704 --
3705 XLA_AE_LINES_PKG.SetNewLine;
3706
3707 p_balance_type_code := l_balance_type_code;
3708 -- set the flag so later we will know whether the gain loss line needs to be created
3709
3710 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3711 p_actual_flag :='A';
3712 END IF;
3713
3714 --
3715 -- bulk performance
3716 --
3717 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3718 p_header_num => 0); -- 4262811
3719 --
3720 -- set accounting line options
3721 --
3722 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3723 p_natural_side_code => 'D'
3724 , p_gain_or_loss_flag => 'N'
3725 , p_gl_transfer_mode_code => 'D'
3726 , p_acct_entry_type_code => 'A'
3727 , p_switch_side_flag => 'Y'
3728 , p_merge_duplicate_code => 'N'
3729 );
3730 --
3731 l_acc_rev_natural_side_code := 'C'; -- 4262811
3732 --
3733 --
3734 -- set accounting line type info
3735 --
3736 xla_ae_lines_pkg.SetAcctLineType
3737 (p_component_type => l_component_type
3738 ,p_event_type_code => l_event_type_code
3739 ,p_line_definition_owner_code => l_line_definition_owner_code
3740 ,p_line_definition_code => l_line_definition_code
3741 ,p_accounting_line_code => l_component_code
3742 ,p_accounting_line_type_code => l_component_type_code
3743 ,p_accounting_line_appl_id => l_component_appl_id
3744 ,p_amb_context_code => l_amb_context_code
3745 ,p_entity_code => l_entity_code
3746 ,p_event_class_code => l_event_class_code);
3747 --
3748 -- set accounting class
3749 --
3750 xla_ae_lines_pkg.SetAcctClass(
3751 p_accounting_class_code => 'BANK_ERROR'
3752 , p_ae_header_id => l_ae_header_id
3753 );
3754
3755 --
3756 -- set rounding class
3757 --
3758 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3759 'BANK_ERROR';
3760
3761 --
3762 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3763 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3764 --
3765 -- bulk performance
3766 --
3767 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3768
3769 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3770 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3771
3772 -- 4955764
3773 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3774 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3775
3776 -- 4458381 Public Sector Enh
3777
3778 --
3779 -- set accounting attributes for the line type
3780 --
3781 l_entered_amt_idx := 5;
3782 l_accted_amt_idx := NULL;
3783 l_bflow_applied_to_amt_idx := NULL; -- 5132302
3784 l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
3785 l_rec_acct_attrs.array_char_value(1) := p_source_9;
3786 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
3787 l_rec_acct_attrs.array_num_value(2) := to_char(p_source_10);
3788 l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
3789 l_rec_acct_attrs.array_char_value(3) := p_source_11;
3790 l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
3791 l_rec_acct_attrs.array_char_value(4) := p_source_12;
3792 l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
3793 l_rec_acct_attrs.array_num_value(5) := p_source_21;
3794 l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
3795 l_rec_acct_attrs.array_char_value(6) := p_source_13;
3796 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
3800 l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
3797 l_rec_acct_attrs.array_date_value(7) := p_source_14;
3798 l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
3799 l_rec_acct_attrs.array_num_value(8) := p_source_15;
3801 l_rec_acct_attrs.array_char_value(9) := p_source_16;
3802 l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
3803 l_rec_acct_attrs.array_num_value(10) := to_char(p_source_17);
3804 l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
3805 l_rec_acct_attrs.array_char_value(11) := p_source_18;
3806 l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
3807 l_rec_acct_attrs.array_char_value(12) := p_source_19;
3808
3809 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3810 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3811
3812 ---------------------------------------------------------------------------------------------------------------
3813 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3814 ---------------------------------------------------------------------------------------------------------------
3815 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3816
3817 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3818 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3819
3820 IF xla_accounting_cache_pkg.GetValueChar
3821 (p_source_code => 'LEDGER_CATEGORY_CODE'
3822 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3823 AND l_bflow_method_code = 'PRIOR_ENTRY'
3824 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3825 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3826 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3827 )
3828 THEN
3829 xla_ae_lines_pkg.BflowUpgEntry
3830 (p_business_method_code => l_bflow_method_code
3831 ,p_business_class_code => l_bflow_class_code
3832 ,p_balance_type => l_balance_type_code);
3833 ELSE
3834 NULL;
3835 -- No business flow processing for business flow method of NONE.
3836 END IF;
3837
3838 --
3839 -- call description
3840 --
3841 -- No description or it is inherited.
3842 --
3843 -- call ADRs
3844 -- Bug 4922099
3845 --
3846 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3847 (NVL(l_actual_upg_option, 'N') = 'O') OR
3848 (NVL(l_enc_upg_option, 'N') = 'O')
3849 )
3850 THEN
3851 NULL;
3852 --
3853 --
3854
3855 l_ccid := AcctDerRule_6(
3856 p_application_id => p_application_id
3857 , p_ae_header_id => l_ae_header_id
3858 , p_source_6 => p_source_6
3859 , x_transaction_coa_id => l_adr_transaction_coa_id
3860 , x_accounting_coa_id => l_adr_accounting_coa_id
3861 , x_value_type_code => l_adr_value_type_code
3862 , p_side => 'NA'
3863 );
3864
3865 xla_ae_lines_pkg.set_ccid(
3866 p_code_combination_id => l_ccid
3867 , p_value_type_code => l_adr_value_type_code
3868 , p_transaction_coa_id => l_adr_transaction_coa_id
3869 , p_accounting_coa_id => l_adr_accounting_coa_id
3870 , p_adr_code => 'CE_FX_CHARGES'
3871 , p_adr_type_code => 'S'
3872 , p_component_type => l_component_type
3873 , p_component_code => l_component_code
3874 , p_component_type_code => l_component_type_code
3875 , p_component_appl_id => l_component_appl_id
3876 , p_amb_context_code => l_amb_context_code
3877 , p_side => 'NA'
3878 );
3879
3880
3881 --
3882 --
3883 END IF;
3884 --
3885 -- Bug 4922099
3886 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
3887 (NVL(l_enc_upg_option, 'N') = 'O')
3888 ) AND
3889 (l_bflow_method_code = 'PRIOR_ENTRY')
3890 )
3891 THEN
3892 IF
3893 --
3894 1 = 2
3895 --
3896 THEN
3897 xla_accounting_err_pkg.build_message
3898 (p_appli_s_name => 'XLA'
3899 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3900 ,p_token_1 => 'LINE_NUMBER'
3901 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
3902 ,p_token_2 => 'LINE_TYPE_NAME'
3903 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
3904 l_component_type
3905 ,l_component_code
3906 ,l_component_type_code
3907 ,l_component_appl_id
3908 ,l_amb_context_code
3909 ,l_entity_code
3910 ,l_event_class_code
3911 )
3912 ,p_token_3 => 'OWNER'
3913 ,p_value_3 => xla_lookups_pkg.get_meaning(
3917 ,p_token_4 => 'PRODUCT_NAME'
3914 p_lookup_type => 'XLA_OWNER_TYPE'
3915 ,p_lookup_code => l_component_type_code
3916 )
3918 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
3919 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3920 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
3921 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3922 ,p_ae_header_id => NULL
3923 );
3924
3925 IF (C_LEVEL_ERROR>= g_log_level) THEN
3926 trace
3927 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3928 ,p_level => C_LEVEL_ERROR
3929 ,p_module => l_log_module);
3930 END IF;
3931 END IF;
3932 END IF;
3933 --
3934 --
3935 ------------------------------------------------------------------------------------------------
3936 -- 4219869 Business Flow
3937 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
3938 -- Prior Entry. Currently, the following code is always generated.
3939 ------------------------------------------------------------------------------------------------
3940 XLA_AE_LINES_PKG.ValidateCurrentLine;
3941
3942 ------------------------------------------------------------------------------------
3943 -- 4219869 Business Flow
3944 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
3945 ------------------------------------------------------------------------------------
3946 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3947
3948 ----------------------------------------------------------------------------------
3949 -- 4219869 Business Flow
3950 -- Update journal entry status -- Need to generate this within IF <condition>
3951 ----------------------------------------------------------------------------------
3952 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3953 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
3954 ,p_balance_type_code => l_balance_type_code
3955 );
3956
3957 -------------------------------------------------------------------------------------------
3958 -- 4262811 - Generate the Accrual Reversal lines
3959 -------------------------------------------------------------------------------------------
3960 BEGIN
3961 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3962 (g_array_event(p_event_id).array_value_num('header_index'));
3963 IF l_acc_rev_flag IS NULL THEN
3964 l_acc_rev_flag := 'N';
3965 END IF;
3966 EXCEPTION
3967 WHEN OTHERS THEN
3968 l_acc_rev_flag := 'N';
3969 END;
3970 --
3971 IF (l_acc_rev_flag = 'Y') THEN
3972
3973 -- 4645092 ------------------------------------------------------------------------------
3974 -- To allow MPA report to determine if it should generate report process
3975 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3976 ------------------------------------------------------------------------------------------
3977
3978 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3979 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3980
3981 --
3982 -- Update the line information that should be overwritten
3983 --
3984 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3985 p_header_num => 1);
3986 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
3987
3988 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3989
3990 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
3991 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3992 END IF;
3993
3994 --
3995 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3996 --
3997 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3998 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
3999 ELSE
4000 ---------------------------------------------------------------------------------------------------
4001 -- 4262811a Switch Sign
4002 ---------------------------------------------------------------------------------------------------
4003 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
4004 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4005 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4006 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4007 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4008 -- 5132302
4009 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4010 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4011
4012 END IF;
4013
4014 -- 4955764
4015 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4019 XLA_AE_LINES_PKG.ValidateCurrentLine;
4016 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4017
4018
4020 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4021
4022 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4023 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4024 ,p_balance_type_code => l_balance_type_code);
4025
4026 END IF;
4027
4028 -----------------------------------------------------------------------------------------
4029 -- 4262811 Multiperiod Accounting
4030 -----------------------------------------------------------------------------------------
4031 -- No MPA option is assigned.
4032
4033
4034 END IF;
4035 END IF;
4036 --
4037
4038 --
4039 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4040 trace
4041 (p_msg => 'END of AcctLineType_13'
4042 ,p_level => C_LEVEL_PROCEDURE
4043 ,p_module => l_log_module);
4044 END IF;
4045 --
4046 EXCEPTION
4047 WHEN xla_exceptions_pkg.application_exception THEN
4048 RAISE;
4049 WHEN OTHERS THEN
4050 xla_exceptions_pkg.raise_message
4051 (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_13');
4052 END AcctLineType_13;
4053 --
4054
4055 ---------------------------------------
4056 --
4057 -- PRIVATE FUNCTION
4058 -- AcctLineType_14
4059 --
4060 ---------------------------------------
4061 PROCEDURE AcctLineType_14 (
4062 p_application_id IN NUMBER
4063 ,p_event_id IN NUMBER
4064 ,p_calculate_acctd_flag IN VARCHAR2
4065 ,p_calculate_g_l_flag IN VARCHAR2
4066 ,p_actual_flag IN OUT VARCHAR2
4067 ,p_balance_type_code OUT VARCHAR2
4068 ,p_gain_or_loss_ref OUT VARCHAR2
4069
4070 --Cashflow Bank Account Cash Account
4071 , p_source_5 IN NUMBER
4072 --Reversal Indicator
4073 , p_source_9 IN VARCHAR2
4074 --Cashflow Number
4075 , p_source_10 IN NUMBER
4076 --Cashflow History Identifier
4077 , p_source_11 IN VARCHAR2
4078 --Distribution Link Type
4079 , p_source_12 IN VARCHAR2
4080 --Cashflow Bank Account Currency
4081 , p_source_13 IN VARCHAR2
4082 --Cashflow Cleared Exchange Rate Date
4083 , p_source_14 IN DATE
4084 --Cashflow Cleared Exchange Rate
4085 , p_source_15 IN NUMBER
4086 --Cashflow Cleared Exchange Rate Type
4087 , p_source_16 IN VARCHAR2
4088 --Reversal First Distribution Identifier
4089 , p_source_17 IN NUMBER
4090 --Reversal Second Distribution Identifier
4091 , p_source_18 IN VARCHAR2
4092 --Reversal Distribution Link Type
4093 , p_source_19 IN VARCHAR2
4094 --Cashflow Direction
4095 , p_source_22 IN VARCHAR2
4096 , p_source_22_meaning IN VARCHAR2
4097 --Cashflow Cleared Amount
4098 , p_source_23 IN NUMBER
4099 )
4100 IS
4101
4102 l_component_type VARCHAR2(80);
4103 l_component_code VARCHAR2(30);
4104 l_component_type_code VARCHAR2(1);
4105 l_component_appl_id INTEGER;
4106 l_amb_context_code VARCHAR2(30);
4107 l_entity_code VARCHAR2(30);
4108 l_event_class_code VARCHAR2(30);
4109 l_ae_header_id NUMBER;
4110 l_event_type_code VARCHAR2(30);
4111 l_line_definition_code VARCHAR2(30);
4112 l_line_definition_owner_code VARCHAR2(1);
4113 --
4114 -- adr variables
4115 l_segment VARCHAR2(30);
4116 l_ccid NUMBER;
4117 l_adr_transaction_coa_id NUMBER;
4118 l_adr_accounting_coa_id NUMBER;
4119 l_adr_flexfield_segment_code VARCHAR2(30);
4120 l_adr_flex_value_set_id NUMBER;
4121 l_adr_value_type_code VARCHAR2(30);
4122 l_adr_value_combination_id NUMBER;
4123 l_adr_value_segment_code VARCHAR2(30);
4124
4125 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
4126 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
4127 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
4128 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
4129
4130 -- 4262811 Variables ------------------------------------------------------------------------------------------
4131 l_entered_amt_idx NUMBER;
4132 l_accted_amt_idx NUMBER;
4133 l_acc_rev_flag VARCHAR2(1);
4134 l_accrual_line_num NUMBER;
4135 l_tmp_amt NUMBER;
4136 l_acc_rev_natural_side_code VARCHAR2(1);
4137
4138 l_num_entries NUMBER;
4139 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
4140 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
4141 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
4142 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
4143 l_recog_line_1 NUMBER;
4144 l_recog_line_2 NUMBER;
4145
4146 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
4147 l_bflow_applied_to_amt NUMBER; -- 5132302
4148 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
4149
4150 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4151
4152 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
4153 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
4154
4155 ---------------------------------------------------------------------------------------------------------------
4156
4157
4158 --
4159 -- bulk performance
4163 l_log_module VARCHAR2(240);
4160 --
4161 l_balance_type_code VARCHAR2(1);
4162 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
4164
4165 --
4166 -- Upgrade strategy
4167 --
4168 l_actual_upg_option VARCHAR2(1);
4169 l_enc_upg_option VARCHAR2(1);
4170
4171 --
4172 BEGIN
4173 --
4174 IF g_log_enabled THEN
4175 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_14';
4176 END IF;
4177 --
4178 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4179
4180 trace
4181 (p_msg => 'BEGIN of AcctLineType_14'
4182 ,p_level => C_LEVEL_PROCEDURE
4183 ,p_module => l_log_module);
4184
4185 END IF;
4186 --
4187 l_component_type := 'AMB_JLT';
4188 l_component_code := 'BAT_PAYMENT_CASH_CR';
4189 l_component_type_code := 'S';
4190 l_component_appl_id := 260;
4191 l_amb_context_code := 'DEFAULT';
4192 l_entity_code := 'CE_CASHFLOWS';
4193 l_event_class_code := 'BAT_CLASS';
4194 l_event_type_code := 'CE_BAT_UNCLEARED';
4195 l_line_definition_owner_code := 'S';
4196 l_line_definition_code := 'BAT_UNCLR_DEFN';
4197 --
4198 l_balance_type_code := 'A';
4199 l_segment := NULL;
4200 l_ccid := NULL;
4201 l_adr_transaction_coa_id := NULL;
4202 l_adr_accounting_coa_id := NULL;
4203 l_adr_flexfield_segment_code := NULL;
4204 l_adr_flex_value_set_id := NULL;
4205 l_adr_value_type_code := NULL;
4206 l_adr_value_combination_id := NULL;
4207 l_adr_value_segment_code := NULL;
4208
4209 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
4210 l_bflow_class_code := ''; -- 4219869 Business Flow
4211 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
4212 l_budgetary_control_flag := 'N';
4213
4214 l_bflow_applied_to_amt_idx := NULL; -- 5132302
4215 l_bflow_applied_to_amt := NULL; -- 5132302
4216 l_entered_amt_idx := NULL; -- 4262811
4217 l_accted_amt_idx := NULL; -- 4262811
4218 l_acc_rev_flag := NULL; -- 4262811
4219 l_accrual_line_num := NULL; -- 4262811
4220 l_tmp_amt := NULL; -- 4262811
4221 --
4222
4223 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4224 l_balance_type_code <> 'B' THEN
4225 IF NVL(p_source_22,'
4226 ') = 'PAYMENT'
4227 THEN
4228
4229 --
4230 XLA_AE_LINES_PKG.SetNewLine;
4231
4232 p_balance_type_code := l_balance_type_code;
4233 -- set the flag so later we will know whether the gain loss line needs to be created
4234
4235 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4236 p_actual_flag :='A';
4237 END IF;
4238
4239 --
4240 -- bulk performance
4241 --
4242 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4243 p_header_num => 0); -- 4262811
4244 --
4245 -- set accounting line options
4246 --
4247 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4248 p_natural_side_code => 'C'
4249 , p_gain_or_loss_flag => 'N'
4250 , p_gl_transfer_mode_code => 'D'
4251 , p_acct_entry_type_code => 'A'
4252 , p_switch_side_flag => 'Y'
4253 , p_merge_duplicate_code => 'N'
4254 );
4255 --
4256 l_acc_rev_natural_side_code := 'D'; -- 4262811
4257 --
4258 --
4259 -- set accounting line type info
4260 --
4261 xla_ae_lines_pkg.SetAcctLineType
4262 (p_component_type => l_component_type
4263 ,p_event_type_code => l_event_type_code
4264 ,p_line_definition_owner_code => l_line_definition_owner_code
4265 ,p_line_definition_code => l_line_definition_code
4266 ,p_accounting_line_code => l_component_code
4267 ,p_accounting_line_type_code => l_component_type_code
4268 ,p_accounting_line_appl_id => l_component_appl_id
4269 ,p_amb_context_code => l_amb_context_code
4270 ,p_entity_code => l_entity_code
4271 ,p_event_class_code => l_event_class_code);
4272 --
4273 -- set accounting class
4274 --
4275 xla_ae_lines_pkg.SetAcctClass(
4276 p_accounting_class_code => 'CASH'
4277 , p_ae_header_id => l_ae_header_id
4278 );
4279
4280 --
4281 -- set rounding class
4282 --
4283 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4284 'CASH';
4285
4286 --
4287 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4288 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4289 --
4290 -- bulk performance
4291 --
4292 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4293
4294 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4295 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4296
4297 -- 4955764
4298 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4299 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4300
4301 -- 4458381 Public Sector Enh
4302
4303 --
4304 -- set accounting attributes for the line type
4305 --
4306 l_entered_amt_idx := 5;
4307 l_accted_amt_idx := NULL;
4311 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
4308 l_bflow_applied_to_amt_idx := NULL; -- 5132302
4309 l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
4310 l_rec_acct_attrs.array_char_value(1) := p_source_9;
4312 l_rec_acct_attrs.array_num_value(2) := to_char(p_source_10);
4313 l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
4314 l_rec_acct_attrs.array_char_value(3) := p_source_11;
4315 l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
4316 l_rec_acct_attrs.array_char_value(4) := p_source_12;
4317 l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
4318 l_rec_acct_attrs.array_num_value(5) := p_source_23;
4319 l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
4320 l_rec_acct_attrs.array_char_value(6) := p_source_13;
4321 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
4322 l_rec_acct_attrs.array_date_value(7) := p_source_14;
4323 l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
4324 l_rec_acct_attrs.array_num_value(8) := p_source_15;
4325 l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
4326 l_rec_acct_attrs.array_char_value(9) := p_source_16;
4327 l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
4328 l_rec_acct_attrs.array_num_value(10) := to_char(p_source_17);
4329 l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
4330 l_rec_acct_attrs.array_char_value(11) := p_source_18;
4331 l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
4332 l_rec_acct_attrs.array_char_value(12) := p_source_19;
4333
4334 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4335 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4336
4337 ---------------------------------------------------------------------------------------------------------------
4338 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4339 ---------------------------------------------------------------------------------------------------------------
4340 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4341
4342 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4343 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4344
4345 IF xla_accounting_cache_pkg.GetValueChar
4346 (p_source_code => 'LEDGER_CATEGORY_CODE'
4347 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4348 AND l_bflow_method_code = 'PRIOR_ENTRY'
4349 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4350 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4351 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4352 )
4353 THEN
4354 xla_ae_lines_pkg.BflowUpgEntry
4355 (p_business_method_code => l_bflow_method_code
4356 ,p_business_class_code => l_bflow_class_code
4357 ,p_balance_type => l_balance_type_code);
4358 ELSE
4359 NULL;
4360 -- No business flow processing for business flow method of NONE.
4361 END IF;
4362
4363 --
4364 -- call description
4365 --
4366 -- No description or it is inherited.
4367 --
4368 -- call ADRs
4369 -- Bug 4922099
4370 --
4371 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4372 (NVL(l_actual_upg_option, 'N') = 'O') OR
4373 (NVL(l_enc_upg_option, 'N') = 'O')
4374 )
4375 THEN
4376 NULL;
4377 --
4378 --
4379
4380 l_ccid := AcctDerRule_5(
4381 p_application_id => p_application_id
4382 , p_ae_header_id => l_ae_header_id
4383 , p_source_5 => p_source_5
4384 , x_transaction_coa_id => l_adr_transaction_coa_id
4385 , x_accounting_coa_id => l_adr_accounting_coa_id
4386 , x_value_type_code => l_adr_value_type_code
4387 , p_side => 'NA'
4388 );
4389
4390 xla_ae_lines_pkg.set_ccid(
4391 p_code_combination_id => l_ccid
4392 , p_value_type_code => l_adr_value_type_code
4393 , p_transaction_coa_id => l_adr_transaction_coa_id
4394 , p_accounting_coa_id => l_adr_accounting_coa_id
4395 , p_adr_code => 'CE_CASH'
4396 , p_adr_type_code => 'S'
4397 , p_component_type => l_component_type
4398 , p_component_code => l_component_code
4399 , p_component_type_code => l_component_type_code
4400 , p_component_appl_id => l_component_appl_id
4401 , p_amb_context_code => l_amb_context_code
4402 , p_side => 'NA'
4403 );
4404
4405
4406 --
4407 --
4408 END IF;
4409 --
4410 -- Bug 4922099
4411 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4412 (NVL(l_enc_upg_option, 'N') = 'O')
4413 ) AND
4414 (l_bflow_method_code = 'PRIOR_ENTRY')
4415 )
4416 THEN
4417 IF
4418 --
4419 1 = 2
4420 --
4421 THEN
4422 xla_accounting_err_pkg.build_message
4423 (p_appli_s_name => 'XLA'
4424 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4425 ,p_token_1 => 'LINE_NUMBER'
4426 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
4427 ,p_token_2 => 'LINE_TYPE_NAME'
4431 ,l_component_type_code
4428 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
4429 l_component_type
4430 ,l_component_code
4432 ,l_component_appl_id
4433 ,l_amb_context_code
4434 ,l_entity_code
4435 ,l_event_class_code
4436 )
4437 ,p_token_3 => 'OWNER'
4438 ,p_value_3 => xla_lookups_pkg.get_meaning(
4439 p_lookup_type => 'XLA_OWNER_TYPE'
4440 ,p_lookup_code => l_component_type_code
4441 )
4442 ,p_token_4 => 'PRODUCT_NAME'
4443 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4444 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4445 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4446 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4447 ,p_ae_header_id => NULL
4448 );
4449
4450 IF (C_LEVEL_ERROR>= g_log_level) THEN
4451 trace
4452 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4453 ,p_level => C_LEVEL_ERROR
4454 ,p_module => l_log_module);
4455 END IF;
4456 END IF;
4457 END IF;
4458 --
4459 --
4460 ------------------------------------------------------------------------------------------------
4461 -- 4219869 Business Flow
4462 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4463 -- Prior Entry. Currently, the following code is always generated.
4464 ------------------------------------------------------------------------------------------------
4465 XLA_AE_LINES_PKG.ValidateCurrentLine;
4466
4467 ------------------------------------------------------------------------------------
4468 -- 4219869 Business Flow
4469 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4470 ------------------------------------------------------------------------------------
4471 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4472
4473 ----------------------------------------------------------------------------------
4474 -- 4219869 Business Flow
4475 -- Update journal entry status -- Need to generate this within IF <condition>
4476 ----------------------------------------------------------------------------------
4477 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4478 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4479 ,p_balance_type_code => l_balance_type_code
4480 );
4481
4482 -------------------------------------------------------------------------------------------
4483 -- 4262811 - Generate the Accrual Reversal lines
4484 -------------------------------------------------------------------------------------------
4485 BEGIN
4486 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4487 (g_array_event(p_event_id).array_value_num('header_index'));
4488 IF l_acc_rev_flag IS NULL THEN
4489 l_acc_rev_flag := 'N';
4490 END IF;
4491 EXCEPTION
4492 WHEN OTHERS THEN
4493 l_acc_rev_flag := 'N';
4494 END;
4495 --
4496 IF (l_acc_rev_flag = 'Y') THEN
4497
4498 -- 4645092 ------------------------------------------------------------------------------
4499 -- To allow MPA report to determine if it should generate report process
4500 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4501 ------------------------------------------------------------------------------------------
4502
4503 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4504 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4505
4506 --
4507 -- Update the line information that should be overwritten
4508 --
4509 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4510 p_header_num => 1);
4511 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
4512
4513 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4514
4515 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
4516 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4517 END IF;
4518
4519 --
4520 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4521 --
4522 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4523 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
4524 ELSE
4525 ---------------------------------------------------------------------------------------------------
4526 -- 4262811a Switch Sign
4530 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4527 ---------------------------------------------------------------------------------------------------
4528 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
4529 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4531 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4532 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4533 -- 5132302
4534 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4535 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4536
4537 END IF;
4538
4539 -- 4955764
4540 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4541 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4542
4543
4544 XLA_AE_LINES_PKG.ValidateCurrentLine;
4545 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4546
4547 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4548 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4549 ,p_balance_type_code => l_balance_type_code);
4550
4551 END IF;
4552
4553 -----------------------------------------------------------------------------------------
4554 -- 4262811 Multiperiod Accounting
4555 -----------------------------------------------------------------------------------------
4556 -- No MPA option is assigned.
4557
4558
4559 END IF;
4560 END IF;
4561 --
4562
4563 --
4564 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4565 trace
4566 (p_msg => 'END of AcctLineType_14'
4567 ,p_level => C_LEVEL_PROCEDURE
4568 ,p_module => l_log_module);
4569 END IF;
4570 --
4571 EXCEPTION
4572 WHEN xla_exceptions_pkg.application_exception THEN
4573 RAISE;
4574 WHEN OTHERS THEN
4575 xla_exceptions_pkg.raise_message
4576 (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_14');
4577 END AcctLineType_14;
4578 --
4579
4580 ---------------------------------------
4581 --
4582 -- PRIVATE FUNCTION
4583 -- AcctLineType_15
4584 --
4585 ---------------------------------------
4586 PROCEDURE AcctLineType_15 (
4587 p_application_id IN NUMBER
4588 ,p_event_id IN NUMBER
4589 ,p_calculate_acctd_flag IN VARCHAR2
4590 ,p_calculate_g_l_flag IN VARCHAR2
4591 ,p_actual_flag IN OUT VARCHAR2
4592 ,p_balance_type_code OUT VARCHAR2
4593 ,p_gain_or_loss_ref OUT VARCHAR2
4594
4595 --Cashflow Bank Account Cash Account
4596 , p_source_5 IN NUMBER
4597 --Reversal Indicator
4598 , p_source_9 IN VARCHAR2
4599 --Cashflow Number
4600 , p_source_10 IN NUMBER
4601 --Cashflow History Identifier
4602 , p_source_11 IN VARCHAR2
4603 --Distribution Link Type
4604 , p_source_12 IN VARCHAR2
4605 --Cashflow Bank Account Currency
4606 , p_source_13 IN VARCHAR2
4607 --Cashflow Cleared Exchange Rate Date
4608 , p_source_14 IN DATE
4609 --Cashflow Cleared Exchange Rate
4610 , p_source_15 IN NUMBER
4611 --Cashflow Cleared Exchange Rate Type
4612 , p_source_16 IN VARCHAR2
4613 --Reversal First Distribution Identifier
4614 , p_source_17 IN NUMBER
4615 --Reversal Second Distribution Identifier
4616 , p_source_18 IN VARCHAR2
4617 --Reversal Distribution Link Type
4618 , p_source_19 IN VARCHAR2
4619 --Cashflow Direction
4620 , p_source_22 IN VARCHAR2
4621 , p_source_22_meaning IN VARCHAR2
4622 --Cashflow Cleared Amount
4623 , p_source_23 IN NUMBER
4624 )
4625 IS
4626
4627 l_component_type VARCHAR2(80);
4628 l_component_code VARCHAR2(30);
4629 l_component_type_code VARCHAR2(1);
4630 l_component_appl_id INTEGER;
4631 l_amb_context_code VARCHAR2(30);
4632 l_entity_code VARCHAR2(30);
4633 l_event_class_code VARCHAR2(30);
4634 l_ae_header_id NUMBER;
4635 l_event_type_code VARCHAR2(30);
4636 l_line_definition_code VARCHAR2(30);
4637 l_line_definition_owner_code VARCHAR2(1);
4638 --
4639 -- adr variables
4640 l_segment VARCHAR2(30);
4641 l_ccid NUMBER;
4642 l_adr_transaction_coa_id NUMBER;
4643 l_adr_accounting_coa_id NUMBER;
4644 l_adr_flexfield_segment_code VARCHAR2(30);
4645 l_adr_flex_value_set_id NUMBER;
4646 l_adr_value_type_code VARCHAR2(30);
4647 l_adr_value_combination_id NUMBER;
4648 l_adr_value_segment_code VARCHAR2(30);
4649
4650 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
4651 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
4652 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
4653 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
4654
4655 -- 4262811 Variables ------------------------------------------------------------------------------------------
4656 l_entered_amt_idx NUMBER;
4657 l_accted_amt_idx NUMBER;
4658 l_acc_rev_flag VARCHAR2(1);
4659 l_accrual_line_num NUMBER;
4660 l_tmp_amt NUMBER;
4661 l_acc_rev_natural_side_code VARCHAR2(1);
4662
4663 l_num_entries NUMBER;
4664 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
4668 l_recog_line_1 NUMBER;
4665 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
4666 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
4667 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
4669 l_recog_line_2 NUMBER;
4670
4671 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
4672 l_bflow_applied_to_amt NUMBER; -- 5132302
4673 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
4674
4675 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4676
4677 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
4678 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
4679
4680 ---------------------------------------------------------------------------------------------------------------
4681
4682
4683 --
4684 -- bulk performance
4685 --
4686 l_balance_type_code VARCHAR2(1);
4687 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
4688 l_log_module VARCHAR2(240);
4689
4690 --
4691 -- Upgrade strategy
4692 --
4693 l_actual_upg_option VARCHAR2(1);
4694 l_enc_upg_option VARCHAR2(1);
4695
4696 --
4697 BEGIN
4698 --
4699 IF g_log_enabled THEN
4700 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_15';
4701 END IF;
4702 --
4703 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4704
4705 trace
4706 (p_msg => 'BEGIN of AcctLineType_15'
4707 ,p_level => C_LEVEL_PROCEDURE
4708 ,p_module => l_log_module);
4709
4710 END IF;
4711 --
4712 l_component_type := 'AMB_JLT';
4713 l_component_code := 'BAT_PAYMENT_CASH_CR';
4714 l_component_type_code := 'S';
4715 l_component_appl_id := 260;
4716 l_amb_context_code := 'DEFAULT';
4717 l_entity_code := 'CE_CASHFLOWS';
4718 l_event_class_code := 'BAT_CLASS';
4719 l_event_type_code := 'CE_BAT_CLEARED';
4720 l_line_definition_owner_code := 'S';
4721 l_line_definition_code := 'BAT_CLR_DFN';
4722 --
4723 l_balance_type_code := 'A';
4724 l_segment := NULL;
4725 l_ccid := NULL;
4726 l_adr_transaction_coa_id := NULL;
4727 l_adr_accounting_coa_id := NULL;
4728 l_adr_flexfield_segment_code := NULL;
4729 l_adr_flex_value_set_id := NULL;
4730 l_adr_value_type_code := NULL;
4731 l_adr_value_combination_id := NULL;
4732 l_adr_value_segment_code := NULL;
4733
4734 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
4735 l_bflow_class_code := ''; -- 4219869 Business Flow
4736 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
4737 l_budgetary_control_flag := 'N';
4738
4739 l_bflow_applied_to_amt_idx := NULL; -- 5132302
4740 l_bflow_applied_to_amt := NULL; -- 5132302
4741 l_entered_amt_idx := NULL; -- 4262811
4742 l_accted_amt_idx := NULL; -- 4262811
4743 l_acc_rev_flag := NULL; -- 4262811
4744 l_accrual_line_num := NULL; -- 4262811
4745 l_tmp_amt := NULL; -- 4262811
4746 --
4747
4748 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4749 l_balance_type_code <> 'B' THEN
4750 IF NVL(p_source_22,'
4751 ') = 'PAYMENT'
4752 THEN
4753
4754 --
4755 XLA_AE_LINES_PKG.SetNewLine;
4756
4757 p_balance_type_code := l_balance_type_code;
4758 -- set the flag so later we will know whether the gain loss line needs to be created
4759
4760 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4761 p_actual_flag :='A';
4762 END IF;
4763
4764 --
4765 -- bulk performance
4766 --
4767 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4768 p_header_num => 0); -- 4262811
4769 --
4770 -- set accounting line options
4771 --
4772 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4773 p_natural_side_code => 'C'
4774 , p_gain_or_loss_flag => 'N'
4775 , p_gl_transfer_mode_code => 'D'
4776 , p_acct_entry_type_code => 'A'
4777 , p_switch_side_flag => 'Y'
4778 , p_merge_duplicate_code => 'N'
4779 );
4780 --
4781 l_acc_rev_natural_side_code := 'D'; -- 4262811
4782 --
4783 --
4784 -- set accounting line type info
4785 --
4786 xla_ae_lines_pkg.SetAcctLineType
4787 (p_component_type => l_component_type
4788 ,p_event_type_code => l_event_type_code
4789 ,p_line_definition_owner_code => l_line_definition_owner_code
4790 ,p_line_definition_code => l_line_definition_code
4791 ,p_accounting_line_code => l_component_code
4792 ,p_accounting_line_type_code => l_component_type_code
4793 ,p_accounting_line_appl_id => l_component_appl_id
4794 ,p_amb_context_code => l_amb_context_code
4795 ,p_entity_code => l_entity_code
4796 ,p_event_class_code => l_event_class_code);
4797 --
4798 -- set accounting class
4799 --
4800 xla_ae_lines_pkg.SetAcctClass(
4801 p_accounting_class_code => 'CASH'
4802 , p_ae_header_id => l_ae_header_id
4803 );
4804
4805 --
4806 -- set rounding class
4807 --
4808 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4809 'CASH';
4813 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4810
4811 --
4812 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4814 --
4815 -- bulk performance
4816 --
4817 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4818
4819 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4820 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4821
4822 -- 4955764
4823 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4824 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4825
4826 -- 4458381 Public Sector Enh
4827
4828 --
4829 -- set accounting attributes for the line type
4830 --
4831 l_entered_amt_idx := 5;
4832 l_accted_amt_idx := NULL;
4833 l_bflow_applied_to_amt_idx := NULL; -- 5132302
4834 l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
4835 l_rec_acct_attrs.array_char_value(1) := p_source_9;
4836 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
4837 l_rec_acct_attrs.array_num_value(2) := to_char(p_source_10);
4838 l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
4839 l_rec_acct_attrs.array_char_value(3) := p_source_11;
4840 l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
4841 l_rec_acct_attrs.array_char_value(4) := p_source_12;
4842 l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
4843 l_rec_acct_attrs.array_num_value(5) := p_source_23;
4844 l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
4845 l_rec_acct_attrs.array_char_value(6) := p_source_13;
4846 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
4847 l_rec_acct_attrs.array_date_value(7) := p_source_14;
4848 l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
4849 l_rec_acct_attrs.array_num_value(8) := p_source_15;
4850 l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
4851 l_rec_acct_attrs.array_char_value(9) := p_source_16;
4852 l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
4853 l_rec_acct_attrs.array_num_value(10) := to_char(p_source_17);
4854 l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
4855 l_rec_acct_attrs.array_char_value(11) := p_source_18;
4856 l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
4857 l_rec_acct_attrs.array_char_value(12) := p_source_19;
4858
4859 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4860 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4861
4862 ---------------------------------------------------------------------------------------------------------------
4863 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4864 ---------------------------------------------------------------------------------------------------------------
4865 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4866
4867 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4868 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4869
4870 IF xla_accounting_cache_pkg.GetValueChar
4871 (p_source_code => 'LEDGER_CATEGORY_CODE'
4872 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4873 AND l_bflow_method_code = 'PRIOR_ENTRY'
4874 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4875 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4876 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4877 )
4878 THEN
4879 xla_ae_lines_pkg.BflowUpgEntry
4880 (p_business_method_code => l_bflow_method_code
4881 ,p_business_class_code => l_bflow_class_code
4882 ,p_balance_type => l_balance_type_code);
4883 ELSE
4884 NULL;
4885 -- No business flow processing for business flow method of NONE.
4886 END IF;
4887
4888 --
4889 -- call description
4890 --
4891 -- No description or it is inherited.
4892 --
4893 -- call ADRs
4894 -- Bug 4922099
4895 --
4896 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4897 (NVL(l_actual_upg_option, 'N') = 'O') OR
4898 (NVL(l_enc_upg_option, 'N') = 'O')
4899 )
4900 THEN
4901 NULL;
4902 --
4903 --
4904
4905 l_ccid := AcctDerRule_5(
4906 p_application_id => p_application_id
4907 , p_ae_header_id => l_ae_header_id
4908 , p_source_5 => p_source_5
4909 , x_transaction_coa_id => l_adr_transaction_coa_id
4910 , x_accounting_coa_id => l_adr_accounting_coa_id
4911 , x_value_type_code => l_adr_value_type_code
4912 , p_side => 'NA'
4913 );
4914
4915 xla_ae_lines_pkg.set_ccid(
4916 p_code_combination_id => l_ccid
4917 , p_value_type_code => l_adr_value_type_code
4918 , p_transaction_coa_id => l_adr_transaction_coa_id
4919 , p_accounting_coa_id => l_adr_accounting_coa_id
4920 , p_adr_code => 'CE_CASH'
4921 , p_adr_type_code => 'S'
4922 , p_component_type => l_component_type
4923 , p_component_code => l_component_code
4924 , p_component_type_code => l_component_type_code
4925 , p_component_appl_id => l_component_appl_id
4926 , p_amb_context_code => l_amb_context_code
4930
4927 , p_side => 'NA'
4928 );
4929
4931 --
4932 --
4933 END IF;
4934 --
4935 -- Bug 4922099
4936 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4937 (NVL(l_enc_upg_option, 'N') = 'O')
4938 ) AND
4939 (l_bflow_method_code = 'PRIOR_ENTRY')
4940 )
4941 THEN
4942 IF
4943 --
4944 1 = 2
4945 --
4946 THEN
4947 xla_accounting_err_pkg.build_message
4948 (p_appli_s_name => 'XLA'
4949 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4950 ,p_token_1 => 'LINE_NUMBER'
4951 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
4952 ,p_token_2 => 'LINE_TYPE_NAME'
4953 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
4954 l_component_type
4955 ,l_component_code
4956 ,l_component_type_code
4957 ,l_component_appl_id
4958 ,l_amb_context_code
4959 ,l_entity_code
4960 ,l_event_class_code
4961 )
4962 ,p_token_3 => 'OWNER'
4963 ,p_value_3 => xla_lookups_pkg.get_meaning(
4964 p_lookup_type => 'XLA_OWNER_TYPE'
4965 ,p_lookup_code => l_component_type_code
4966 )
4967 ,p_token_4 => 'PRODUCT_NAME'
4968 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4969 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4970 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4971 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4972 ,p_ae_header_id => NULL
4973 );
4974
4975 IF (C_LEVEL_ERROR>= g_log_level) THEN
4976 trace
4977 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4978 ,p_level => C_LEVEL_ERROR
4979 ,p_module => l_log_module);
4980 END IF;
4981 END IF;
4982 END IF;
4983 --
4984 --
4985 ------------------------------------------------------------------------------------------------
4986 -- 4219869 Business Flow
4987 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4988 -- Prior Entry. Currently, the following code is always generated.
4989 ------------------------------------------------------------------------------------------------
4990 XLA_AE_LINES_PKG.ValidateCurrentLine;
4991
4992 ------------------------------------------------------------------------------------
4993 -- 4219869 Business Flow
4994 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4995 ------------------------------------------------------------------------------------
4996 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4997
4998 ----------------------------------------------------------------------------------
4999 -- 4219869 Business Flow
5000 -- Update journal entry status -- Need to generate this within IF <condition>
5001 ----------------------------------------------------------------------------------
5002 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5003 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5004 ,p_balance_type_code => l_balance_type_code
5005 );
5006
5007 -------------------------------------------------------------------------------------------
5008 -- 4262811 - Generate the Accrual Reversal lines
5009 -------------------------------------------------------------------------------------------
5010 BEGIN
5011 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5012 (g_array_event(p_event_id).array_value_num('header_index'));
5013 IF l_acc_rev_flag IS NULL THEN
5014 l_acc_rev_flag := 'N';
5015 END IF;
5016 EXCEPTION
5017 WHEN OTHERS THEN
5018 l_acc_rev_flag := 'N';
5019 END;
5020 --
5021 IF (l_acc_rev_flag = 'Y') THEN
5022
5023 -- 4645092 ------------------------------------------------------------------------------
5024 -- To allow MPA report to determine if it should generate report process
5025 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5026 ------------------------------------------------------------------------------------------
5027
5028 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5029 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5030
5031 --
5032 -- Update the line information that should be overwritten
5033 --
5034 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5035 p_header_num => 1);
5039
5036 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
5037
5038 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5040 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
5041 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5042 END IF;
5043
5044 --
5045 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5046 --
5047 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5048 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
5049 ELSE
5050 ---------------------------------------------------------------------------------------------------
5051 -- 4262811a Switch Sign
5052 ---------------------------------------------------------------------------------------------------
5053 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
5054 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5055 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5056 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5057 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5058 -- 5132302
5059 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5060 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5061
5062 END IF;
5063
5064 -- 4955764
5065 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5066 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5067
5068
5069 XLA_AE_LINES_PKG.ValidateCurrentLine;
5070 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5071
5072 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5073 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5074 ,p_balance_type_code => l_balance_type_code);
5075
5076 END IF;
5077
5078 -----------------------------------------------------------------------------------------
5079 -- 4262811 Multiperiod Accounting
5080 -----------------------------------------------------------------------------------------
5081 -- No MPA option is assigned.
5082
5083
5084 END IF;
5085 END IF;
5086 --
5087
5088 --
5089 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5090 trace
5091 (p_msg => 'END of AcctLineType_15'
5092 ,p_level => C_LEVEL_PROCEDURE
5093 ,p_module => l_log_module);
5094 END IF;
5095 --
5096 EXCEPTION
5097 WHEN xla_exceptions_pkg.application_exception THEN
5098 RAISE;
5099 WHEN OTHERS THEN
5100 xla_exceptions_pkg.raise_message
5101 (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_15');
5102 END AcctLineType_15;
5103 --
5104
5105 ---------------------------------------
5106 --
5107 -- PRIVATE FUNCTION
5108 -- AcctLineType_16
5109 --
5110 ---------------------------------------
5111 PROCEDURE AcctLineType_16 (
5112 p_application_id IN NUMBER
5113 ,p_event_id IN NUMBER
5114 ,p_calculate_acctd_flag IN VARCHAR2
5115 ,p_calculate_g_l_flag IN VARCHAR2
5116 ,p_actual_flag IN OUT VARCHAR2
5117 ,p_balance_type_code OUT VARCHAR2
5118 ,p_gain_or_loss_ref OUT VARCHAR2
5119
5120 --Cashflow Offset Account
5121 , p_source_7 IN NUMBER
5122 --Reversal Indicator
5123 , p_source_9 IN VARCHAR2
5124 --Cashflow Number
5125 , p_source_10 IN NUMBER
5126 --Cashflow History Identifier
5127 , p_source_11 IN VARCHAR2
5128 --Distribution Link Type
5129 , p_source_12 IN VARCHAR2
5130 --Reversal First Distribution Identifier
5131 , p_source_17 IN NUMBER
5132 --Reversal Second Distribution Identifier
5133 , p_source_18 IN VARCHAR2
5134 --Reversal Distribution Link Type
5135 , p_source_19 IN VARCHAR2
5136 --Cashflow Direction
5137 , p_source_22 IN VARCHAR2
5138 , p_source_22_meaning IN VARCHAR2
5139 --Cashflow Amount
5140 , p_source_24 IN NUMBER
5141 --Cashflow Currency
5142 , p_source_25 IN VARCHAR2
5143 --Cashflow Exchange Date
5144 , p_source_26 IN DATE
5145 --Cashflow Exchange Rate
5146 , p_source_27 IN NUMBER
5147 --Cashflow Exchange Rate Type
5148 , p_source_28 IN VARCHAR2
5149 )
5150 IS
5151
5152 l_component_type VARCHAR2(80);
5153 l_component_code VARCHAR2(30);
5154 l_component_type_code VARCHAR2(1);
5155 l_component_appl_id INTEGER;
5156 l_amb_context_code VARCHAR2(30);
5157 l_entity_code VARCHAR2(30);
5158 l_event_class_code VARCHAR2(30);
5159 l_ae_header_id NUMBER;
5160 l_event_type_code VARCHAR2(30);
5161 l_line_definition_code VARCHAR2(30);
5162 l_line_definition_owner_code VARCHAR2(1);
5163 --
5164 -- adr variables
5165 l_segment VARCHAR2(30);
5166 l_ccid NUMBER;
5167 l_adr_transaction_coa_id NUMBER;
5168 l_adr_accounting_coa_id NUMBER;
5169 l_adr_flexfield_segment_code VARCHAR2(30);
5170 l_adr_flex_value_set_id NUMBER;
5171 l_adr_value_type_code VARCHAR2(30);
5172 l_adr_value_combination_id NUMBER;
5176 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
5173 l_adr_value_segment_code VARCHAR2(30);
5174
5175 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
5177 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
5178 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
5179
5180 -- 4262811 Variables ------------------------------------------------------------------------------------------
5181 l_entered_amt_idx NUMBER;
5182 l_accted_amt_idx NUMBER;
5183 l_acc_rev_flag VARCHAR2(1);
5184 l_accrual_line_num NUMBER;
5185 l_tmp_amt NUMBER;
5186 l_acc_rev_natural_side_code VARCHAR2(1);
5187
5188 l_num_entries NUMBER;
5189 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
5190 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
5191 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
5192 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
5193 l_recog_line_1 NUMBER;
5194 l_recog_line_2 NUMBER;
5195
5196 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
5197 l_bflow_applied_to_amt NUMBER; -- 5132302
5198 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
5199
5200 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5201
5202 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
5203 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
5204
5205 ---------------------------------------------------------------------------------------------------------------
5206
5207
5208 --
5209 -- bulk performance
5210 --
5211 l_balance_type_code VARCHAR2(1);
5212 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
5213 l_log_module VARCHAR2(240);
5214
5215 --
5216 -- Upgrade strategy
5217 --
5218 l_actual_upg_option VARCHAR2(1);
5219 l_enc_upg_option VARCHAR2(1);
5220
5221 --
5222 BEGIN
5223 --
5224 IF g_log_enabled THEN
5225 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_16';
5226 END IF;
5227 --
5228 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5229
5230 trace
5231 (p_msg => 'BEGIN of AcctLineType_16'
5232 ,p_level => C_LEVEL_PROCEDURE
5233 ,p_module => l_log_module);
5234
5235 END IF;
5236 --
5237 l_component_type := 'AMB_JLT';
5238 l_component_code := 'BAT_PAYMENT_OFFSET_DR';
5239 l_component_type_code := 'S';
5240 l_component_appl_id := 260;
5241 l_amb_context_code := 'DEFAULT';
5242 l_entity_code := 'CE_CASHFLOWS';
5243 l_event_class_code := 'BAT_CLASS';
5244 l_event_type_code := 'CE_BAT_CLEARED';
5245 l_line_definition_owner_code := 'S';
5246 l_line_definition_code := 'BAT_CLR_DFN';
5247 --
5248 l_balance_type_code := 'A';
5249 l_segment := NULL;
5250 l_ccid := NULL;
5251 l_adr_transaction_coa_id := NULL;
5252 l_adr_accounting_coa_id := NULL;
5253 l_adr_flexfield_segment_code := NULL;
5254 l_adr_flex_value_set_id := NULL;
5255 l_adr_value_type_code := NULL;
5256 l_adr_value_combination_id := NULL;
5257 l_adr_value_segment_code := NULL;
5258
5259 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
5260 l_bflow_class_code := ''; -- 4219869 Business Flow
5261 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
5262 l_budgetary_control_flag := 'N';
5263
5264 l_bflow_applied_to_amt_idx := NULL; -- 5132302
5265 l_bflow_applied_to_amt := NULL; -- 5132302
5266 l_entered_amt_idx := NULL; -- 4262811
5267 l_accted_amt_idx := NULL; -- 4262811
5268 l_acc_rev_flag := NULL; -- 4262811
5269 l_accrual_line_num := NULL; -- 4262811
5270 l_tmp_amt := NULL; -- 4262811
5271 --
5272
5273 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5274 l_balance_type_code <> 'B' THEN
5275 IF NVL(p_source_22,'
5276 ') = 'PAYMENT'
5277 THEN
5278
5279 --
5280 XLA_AE_LINES_PKG.SetNewLine;
5281
5282 p_balance_type_code := l_balance_type_code;
5283 -- set the flag so later we will know whether the gain loss line needs to be created
5284
5285 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5286 p_actual_flag :='A';
5287 END IF;
5288
5289 --
5290 -- bulk performance
5291 --
5292 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5293 p_header_num => 0); -- 4262811
5294 --
5295 -- set accounting line options
5296 --
5297 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5298 p_natural_side_code => 'D'
5299 , p_gain_or_loss_flag => 'N'
5300 , p_gl_transfer_mode_code => 'D'
5301 , p_acct_entry_type_code => 'A'
5302 , p_switch_side_flag => 'Y'
5303 , p_merge_duplicate_code => 'N'
5304 );
5305 --
5306 l_acc_rev_natural_side_code := 'C'; -- 4262811
5307 --
5308 --
5309 -- set accounting line type info
5310 --
5311 xla_ae_lines_pkg.SetAcctLineType
5312 (p_component_type => l_component_type
5313 ,p_event_type_code => l_event_type_code
5314 ,p_line_definition_owner_code => l_line_definition_owner_code
5318 ,p_accounting_line_appl_id => l_component_appl_id
5315 ,p_line_definition_code => l_line_definition_code
5316 ,p_accounting_line_code => l_component_code
5317 ,p_accounting_line_type_code => l_component_type_code
5319 ,p_amb_context_code => l_amb_context_code
5320 ,p_entity_code => l_entity_code
5321 ,p_event_class_code => l_event_class_code);
5322 --
5323 -- set accounting class
5324 --
5325 xla_ae_lines_pkg.SetAcctClass(
5326 p_accounting_class_code => 'MISCELLANEOUS EXPENSE'
5327 , p_ae_header_id => l_ae_header_id
5328 );
5329
5330 --
5331 -- set rounding class
5332 --
5333 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5334 'MISCELLANEOUS EXPENSE';
5335
5336 --
5337 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5338 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5339 --
5340 -- bulk performance
5341 --
5342 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5343
5344 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5345 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5346
5347 -- 4955764
5348 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5349 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5350
5351 -- 4458381 Public Sector Enh
5352
5353 --
5354 -- set accounting attributes for the line type
5355 --
5356 l_entered_amt_idx := 5;
5357 l_accted_amt_idx := NULL;
5358 l_bflow_applied_to_amt_idx := NULL; -- 5132302
5359 l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
5360 l_rec_acct_attrs.array_char_value(1) := p_source_9;
5361 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
5362 l_rec_acct_attrs.array_num_value(2) := to_char(p_source_10);
5363 l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
5364 l_rec_acct_attrs.array_char_value(3) := p_source_11;
5365 l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
5366 l_rec_acct_attrs.array_char_value(4) := p_source_12;
5367 l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
5368 l_rec_acct_attrs.array_num_value(5) := p_source_24;
5369 l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
5370 l_rec_acct_attrs.array_char_value(6) := p_source_25;
5371 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
5372 l_rec_acct_attrs.array_date_value(7) := p_source_26;
5373 l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
5374 l_rec_acct_attrs.array_num_value(8) := p_source_27;
5375 l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
5376 l_rec_acct_attrs.array_char_value(9) := p_source_28;
5377 l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
5378 l_rec_acct_attrs.array_num_value(10) := to_char(p_source_17);
5379 l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
5380 l_rec_acct_attrs.array_char_value(11) := p_source_18;
5381 l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
5382 l_rec_acct_attrs.array_char_value(12) := p_source_19;
5383
5384 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5385 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5386
5387 ---------------------------------------------------------------------------------------------------------------
5388 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5389 ---------------------------------------------------------------------------------------------------------------
5390 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5391
5392 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5393 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5394
5395 IF xla_accounting_cache_pkg.GetValueChar
5396 (p_source_code => 'LEDGER_CATEGORY_CODE'
5397 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5398 AND l_bflow_method_code = 'PRIOR_ENTRY'
5399 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5400 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5401 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5402 )
5403 THEN
5404 xla_ae_lines_pkg.BflowUpgEntry
5405 (p_business_method_code => l_bflow_method_code
5406 ,p_business_class_code => l_bflow_class_code
5407 ,p_balance_type => l_balance_type_code);
5408 ELSE
5409 NULL;
5410 -- No business flow processing for business flow method of NONE.
5411 END IF;
5412
5413 --
5414 -- call description
5415 --
5416 -- No description or it is inherited.
5417 --
5418 -- call ADRs
5419 -- Bug 4922099
5420 --
5421 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5422 (NVL(l_actual_upg_option, 'N') = 'O') OR
5423 (NVL(l_enc_upg_option, 'N') = 'O')
5424 )
5425 THEN
5426 NULL;
5427 --
5428 --
5429
5430 l_ccid := AcctDerRule_7(
5431 p_application_id => p_application_id
5432 , p_ae_header_id => l_ae_header_id
5433 , p_source_7 => p_source_7
5434 , x_transaction_coa_id => l_adr_transaction_coa_id
5438 );
5435 , x_accounting_coa_id => l_adr_accounting_coa_id
5436 , x_value_type_code => l_adr_value_type_code
5437 , p_side => 'NA'
5439
5440 xla_ae_lines_pkg.set_ccid(
5441 p_code_combination_id => l_ccid
5442 , p_value_type_code => l_adr_value_type_code
5443 , p_transaction_coa_id => l_adr_transaction_coa_id
5444 , p_accounting_coa_id => l_adr_accounting_coa_id
5445 , p_adr_code => 'CE_OFFSET'
5446 , p_adr_type_code => 'S'
5447 , p_component_type => l_component_type
5448 , p_component_code => l_component_code
5449 , p_component_type_code => l_component_type_code
5450 , p_component_appl_id => l_component_appl_id
5451 , p_amb_context_code => l_amb_context_code
5452 , p_side => 'NA'
5453 );
5454
5455
5456 --
5457 --
5458 END IF;
5459 --
5460 -- Bug 4922099
5461 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5462 (NVL(l_enc_upg_option, 'N') = 'O')
5463 ) AND
5464 (l_bflow_method_code = 'PRIOR_ENTRY')
5465 )
5466 THEN
5467 IF
5468 --
5469 1 = 2
5470 --
5471 THEN
5472 xla_accounting_err_pkg.build_message
5473 (p_appli_s_name => 'XLA'
5474 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5475 ,p_token_1 => 'LINE_NUMBER'
5476 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
5477 ,p_token_2 => 'LINE_TYPE_NAME'
5478 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
5479 l_component_type
5480 ,l_component_code
5481 ,l_component_type_code
5482 ,l_component_appl_id
5483 ,l_amb_context_code
5484 ,l_entity_code
5485 ,l_event_class_code
5486 )
5487 ,p_token_3 => 'OWNER'
5488 ,p_value_3 => xla_lookups_pkg.get_meaning(
5489 p_lookup_type => 'XLA_OWNER_TYPE'
5490 ,p_lookup_code => l_component_type_code
5491 )
5492 ,p_token_4 => 'PRODUCT_NAME'
5493 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5494 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5495 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5496 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5497 ,p_ae_header_id => NULL
5498 );
5499
5500 IF (C_LEVEL_ERROR>= g_log_level) THEN
5501 trace
5502 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5503 ,p_level => C_LEVEL_ERROR
5504 ,p_module => l_log_module);
5505 END IF;
5506 END IF;
5507 END IF;
5508 --
5509 --
5510 ------------------------------------------------------------------------------------------------
5511 -- 4219869 Business Flow
5512 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5513 -- Prior Entry. Currently, the following code is always generated.
5514 ------------------------------------------------------------------------------------------------
5515 XLA_AE_LINES_PKG.ValidateCurrentLine;
5516
5517 ------------------------------------------------------------------------------------
5518 -- 4219869 Business Flow
5519 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5520 ------------------------------------------------------------------------------------
5521 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5522
5523 ----------------------------------------------------------------------------------
5524 -- 4219869 Business Flow
5525 -- Update journal entry status -- Need to generate this within IF <condition>
5526 ----------------------------------------------------------------------------------
5527 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5528 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5529 ,p_balance_type_code => l_balance_type_code
5530 );
5531
5532 -------------------------------------------------------------------------------------------
5533 -- 4262811 - Generate the Accrual Reversal lines
5534 -------------------------------------------------------------------------------------------
5535 BEGIN
5536 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5537 (g_array_event(p_event_id).array_value_num('header_index'));
5538 IF l_acc_rev_flag IS NULL THEN
5539 l_acc_rev_flag := 'N';
5540 END IF;
5541 EXCEPTION
5545 --
5542 WHEN OTHERS THEN
5543 l_acc_rev_flag := 'N';
5544 END;
5546 IF (l_acc_rev_flag = 'Y') THEN
5547
5548 -- 4645092 ------------------------------------------------------------------------------
5549 -- To allow MPA report to determine if it should generate report process
5550 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5551 ------------------------------------------------------------------------------------------
5552
5553 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5554 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5555
5556 --
5557 -- Update the line information that should be overwritten
5558 --
5559 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5560 p_header_num => 1);
5561 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
5562
5563 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5564
5565 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
5566 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5567 END IF;
5568
5569 --
5570 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5571 --
5572 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5573 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
5574 ELSE
5575 ---------------------------------------------------------------------------------------------------
5576 -- 4262811a Switch Sign
5577 ---------------------------------------------------------------------------------------------------
5578 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
5579 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5580 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5581 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5582 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5583 -- 5132302
5584 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5585 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5586
5587 END IF;
5588
5589 -- 4955764
5590 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5591 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5592
5593
5594 XLA_AE_LINES_PKG.ValidateCurrentLine;
5595 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5596
5597 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5598 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5599 ,p_balance_type_code => l_balance_type_code);
5600
5601 END IF;
5602
5603 -----------------------------------------------------------------------------------------
5604 -- 4262811 Multiperiod Accounting
5605 -----------------------------------------------------------------------------------------
5606 -- No MPA option is assigned.
5607
5608
5609 END IF;
5610 END IF;
5611 --
5612
5613 --
5614 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5615 trace
5616 (p_msg => 'END of AcctLineType_16'
5617 ,p_level => C_LEVEL_PROCEDURE
5618 ,p_module => l_log_module);
5619 END IF;
5620 --
5621 EXCEPTION
5622 WHEN xla_exceptions_pkg.application_exception THEN
5623 RAISE;
5624 WHEN OTHERS THEN
5625 xla_exceptions_pkg.raise_message
5626 (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_16');
5627 END AcctLineType_16;
5628 --
5629
5630 ---------------------------------------
5631 --
5632 -- PRIVATE FUNCTION
5633 -- AcctLineType_17
5634 --
5635 ---------------------------------------
5636 PROCEDURE AcctLineType_17 (
5637 p_application_id IN NUMBER
5638 ,p_event_id IN NUMBER
5639 ,p_calculate_acctd_flag IN VARCHAR2
5640 ,p_calculate_g_l_flag IN VARCHAR2
5641 ,p_actual_flag IN OUT VARCHAR2
5642 ,p_balance_type_code OUT VARCHAR2
5643 ,p_gain_or_loss_ref OUT VARCHAR2
5644
5645 --Cashflow Offset Account
5646 , p_source_7 IN NUMBER
5647 --Reversal Indicator
5648 , p_source_9 IN VARCHAR2
5649 --Cashflow Number
5650 , p_source_10 IN NUMBER
5651 --Cashflow History Identifier
5652 , p_source_11 IN VARCHAR2
5653 --Distribution Link Type
5654 , p_source_12 IN VARCHAR2
5655 --Reversal First Distribution Identifier
5656 , p_source_17 IN NUMBER
5657 --Reversal Second Distribution Identifier
5658 , p_source_18 IN VARCHAR2
5659 --Reversal Distribution Link Type
5660 , p_source_19 IN VARCHAR2
5661 --Cashflow Direction
5662 , p_source_22 IN VARCHAR2
5663 , p_source_22_meaning IN VARCHAR2
5664 --Cashflow Amount
5665 , p_source_24 IN NUMBER
5666 --Cashflow Currency
5667 , p_source_25 IN VARCHAR2
5668 --Cashflow Exchange Date
5669 , p_source_26 IN DATE
5670 --Cashflow Exchange Rate
5671 , p_source_27 IN NUMBER
5672 --Cashflow Exchange Rate Type
5673 , p_source_28 IN VARCHAR2
5674 )
5675 IS
5676
5677 l_component_type VARCHAR2(80);
5681 l_amb_context_code VARCHAR2(30);
5678 l_component_code VARCHAR2(30);
5679 l_component_type_code VARCHAR2(1);
5680 l_component_appl_id INTEGER;
5682 l_entity_code VARCHAR2(30);
5683 l_event_class_code VARCHAR2(30);
5684 l_ae_header_id NUMBER;
5685 l_event_type_code VARCHAR2(30);
5686 l_line_definition_code VARCHAR2(30);
5687 l_line_definition_owner_code VARCHAR2(1);
5688 --
5689 -- adr variables
5690 l_segment VARCHAR2(30);
5691 l_ccid NUMBER;
5692 l_adr_transaction_coa_id NUMBER;
5693 l_adr_accounting_coa_id NUMBER;
5694 l_adr_flexfield_segment_code VARCHAR2(30);
5695 l_adr_flex_value_set_id NUMBER;
5696 l_adr_value_type_code VARCHAR2(30);
5697 l_adr_value_combination_id NUMBER;
5698 l_adr_value_segment_code VARCHAR2(30);
5699
5700 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
5701 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
5702 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
5703 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
5704
5705 -- 4262811 Variables ------------------------------------------------------------------------------------------
5706 l_entered_amt_idx NUMBER;
5707 l_accted_amt_idx NUMBER;
5708 l_acc_rev_flag VARCHAR2(1);
5709 l_accrual_line_num NUMBER;
5710 l_tmp_amt NUMBER;
5711 l_acc_rev_natural_side_code VARCHAR2(1);
5712
5713 l_num_entries NUMBER;
5714 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
5715 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
5716 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
5717 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
5718 l_recog_line_1 NUMBER;
5719 l_recog_line_2 NUMBER;
5720
5721 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
5722 l_bflow_applied_to_amt NUMBER; -- 5132302
5723 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
5724
5725 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5726
5727 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
5728 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
5729
5730 ---------------------------------------------------------------------------------------------------------------
5731
5732
5733 --
5734 -- bulk performance
5735 --
5736 l_balance_type_code VARCHAR2(1);
5737 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
5738 l_log_module VARCHAR2(240);
5739
5740 --
5741 -- Upgrade strategy
5742 --
5743 l_actual_upg_option VARCHAR2(1);
5744 l_enc_upg_option VARCHAR2(1);
5745
5746 --
5747 BEGIN
5748 --
5749 IF g_log_enabled THEN
5750 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_17';
5751 END IF;
5752 --
5753 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5754
5755 trace
5756 (p_msg => 'BEGIN of AcctLineType_17'
5757 ,p_level => C_LEVEL_PROCEDURE
5758 ,p_module => l_log_module);
5759
5760 END IF;
5761 --
5762 l_component_type := 'AMB_JLT';
5763 l_component_code := 'BAT_PAYMENT_OFFSET_DR';
5764 l_component_type_code := 'S';
5765 l_component_appl_id := 260;
5766 l_amb_context_code := 'DEFAULT';
5767 l_entity_code := 'CE_CASHFLOWS';
5768 l_event_class_code := 'BAT_CLASS';
5769 l_event_type_code := 'CE_BAT_UNCLEARED';
5770 l_line_definition_owner_code := 'S';
5771 l_line_definition_code := 'BAT_UNCLR_DEFN';
5772 --
5773 l_balance_type_code := 'A';
5774 l_segment := NULL;
5775 l_ccid := NULL;
5776 l_adr_transaction_coa_id := NULL;
5777 l_adr_accounting_coa_id := NULL;
5778 l_adr_flexfield_segment_code := NULL;
5779 l_adr_flex_value_set_id := NULL;
5780 l_adr_value_type_code := NULL;
5781 l_adr_value_combination_id := NULL;
5782 l_adr_value_segment_code := NULL;
5783
5784 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
5785 l_bflow_class_code := ''; -- 4219869 Business Flow
5786 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
5787 l_budgetary_control_flag := 'N';
5788
5789 l_bflow_applied_to_amt_idx := NULL; -- 5132302
5790 l_bflow_applied_to_amt := NULL; -- 5132302
5791 l_entered_amt_idx := NULL; -- 4262811
5792 l_accted_amt_idx := NULL; -- 4262811
5793 l_acc_rev_flag := NULL; -- 4262811
5794 l_accrual_line_num := NULL; -- 4262811
5795 l_tmp_amt := NULL; -- 4262811
5796 --
5797
5798 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5799 l_balance_type_code <> 'B' THEN
5800 IF NVL(p_source_22,'
5801 ') = 'PAYMENT'
5802 THEN
5803
5804 --
5805 XLA_AE_LINES_PKG.SetNewLine;
5806
5807 p_balance_type_code := l_balance_type_code;
5808 -- set the flag so later we will know whether the gain loss line needs to be created
5809
5810 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5811 p_actual_flag :='A';
5812 END IF;
5813
5814 --
5815 -- bulk performance
5816 --
5817 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5821 --
5818 p_header_num => 0); -- 4262811
5819 --
5820 -- set accounting line options
5822 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5823 p_natural_side_code => 'D'
5824 , p_gain_or_loss_flag => 'N'
5825 , p_gl_transfer_mode_code => 'D'
5826 , p_acct_entry_type_code => 'A'
5827 , p_switch_side_flag => 'Y'
5828 , p_merge_duplicate_code => 'N'
5829 );
5830 --
5831 l_acc_rev_natural_side_code := 'C'; -- 4262811
5832 --
5833 --
5834 -- set accounting line type info
5835 --
5836 xla_ae_lines_pkg.SetAcctLineType
5837 (p_component_type => l_component_type
5838 ,p_event_type_code => l_event_type_code
5839 ,p_line_definition_owner_code => l_line_definition_owner_code
5840 ,p_line_definition_code => l_line_definition_code
5841 ,p_accounting_line_code => l_component_code
5842 ,p_accounting_line_type_code => l_component_type_code
5843 ,p_accounting_line_appl_id => l_component_appl_id
5844 ,p_amb_context_code => l_amb_context_code
5845 ,p_entity_code => l_entity_code
5846 ,p_event_class_code => l_event_class_code);
5847 --
5848 -- set accounting class
5849 --
5850 xla_ae_lines_pkg.SetAcctClass(
5851 p_accounting_class_code => 'MISCELLANEOUS EXPENSE'
5852 , p_ae_header_id => l_ae_header_id
5853 );
5854
5855 --
5856 -- set rounding class
5857 --
5858 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5859 'MISCELLANEOUS EXPENSE';
5860
5861 --
5862 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5863 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5864 --
5865 -- bulk performance
5866 --
5867 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5868
5869 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5870 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5871
5872 -- 4955764
5873 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5874 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5875
5876 -- 4458381 Public Sector Enh
5877
5878 --
5879 -- set accounting attributes for the line type
5880 --
5881 l_entered_amt_idx := 5;
5882 l_accted_amt_idx := NULL;
5883 l_bflow_applied_to_amt_idx := NULL; -- 5132302
5884 l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
5885 l_rec_acct_attrs.array_char_value(1) := p_source_9;
5886 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
5887 l_rec_acct_attrs.array_num_value(2) := to_char(p_source_10);
5888 l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
5889 l_rec_acct_attrs.array_char_value(3) := p_source_11;
5890 l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
5891 l_rec_acct_attrs.array_char_value(4) := p_source_12;
5892 l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
5893 l_rec_acct_attrs.array_num_value(5) := p_source_24;
5894 l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
5895 l_rec_acct_attrs.array_char_value(6) := p_source_25;
5896 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
5897 l_rec_acct_attrs.array_date_value(7) := p_source_26;
5898 l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
5899 l_rec_acct_attrs.array_num_value(8) := p_source_27;
5900 l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
5901 l_rec_acct_attrs.array_char_value(9) := p_source_28;
5902 l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
5903 l_rec_acct_attrs.array_num_value(10) := to_char(p_source_17);
5904 l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
5905 l_rec_acct_attrs.array_char_value(11) := p_source_18;
5906 l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
5907 l_rec_acct_attrs.array_char_value(12) := p_source_19;
5908
5909 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5910 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5911
5912 ---------------------------------------------------------------------------------------------------------------
5913 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5914 ---------------------------------------------------------------------------------------------------------------
5915 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5916
5917 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5918 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5919
5920 IF xla_accounting_cache_pkg.GetValueChar
5921 (p_source_code => 'LEDGER_CATEGORY_CODE'
5922 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5923 AND l_bflow_method_code = 'PRIOR_ENTRY'
5924 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5925 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5926 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5927 )
5928 THEN
5929 xla_ae_lines_pkg.BflowUpgEntry
5930 (p_business_method_code => l_bflow_method_code
5931 ,p_business_class_code => l_bflow_class_code
5935 -- No business flow processing for business flow method of NONE.
5932 ,p_balance_type => l_balance_type_code);
5933 ELSE
5934 NULL;
5936 END IF;
5937
5938 --
5939 -- call description
5940 --
5941 -- No description or it is inherited.
5942 --
5943 -- call ADRs
5944 -- Bug 4922099
5945 --
5946 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5947 (NVL(l_actual_upg_option, 'N') = 'O') OR
5948 (NVL(l_enc_upg_option, 'N') = 'O')
5949 )
5950 THEN
5951 NULL;
5952 --
5953 --
5954
5955 l_ccid := AcctDerRule_7(
5956 p_application_id => p_application_id
5957 , p_ae_header_id => l_ae_header_id
5958 , p_source_7 => p_source_7
5959 , x_transaction_coa_id => l_adr_transaction_coa_id
5960 , x_accounting_coa_id => l_adr_accounting_coa_id
5961 , x_value_type_code => l_adr_value_type_code
5962 , p_side => 'NA'
5963 );
5964
5965 xla_ae_lines_pkg.set_ccid(
5966 p_code_combination_id => l_ccid
5967 , p_value_type_code => l_adr_value_type_code
5968 , p_transaction_coa_id => l_adr_transaction_coa_id
5969 , p_accounting_coa_id => l_adr_accounting_coa_id
5970 , p_adr_code => 'CE_OFFSET'
5971 , p_adr_type_code => 'S'
5972 , p_component_type => l_component_type
5973 , p_component_code => l_component_code
5974 , p_component_type_code => l_component_type_code
5975 , p_component_appl_id => l_component_appl_id
5976 , p_amb_context_code => l_amb_context_code
5977 , p_side => 'NA'
5978 );
5979
5980
5981 --
5982 --
5983 END IF;
5984 --
5985 -- Bug 4922099
5986 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5987 (NVL(l_enc_upg_option, 'N') = 'O')
5988 ) AND
5989 (l_bflow_method_code = 'PRIOR_ENTRY')
5990 )
5991 THEN
5992 IF
5993 --
5994 1 = 2
5995 --
5996 THEN
5997 xla_accounting_err_pkg.build_message
5998 (p_appli_s_name => 'XLA'
5999 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6000 ,p_token_1 => 'LINE_NUMBER'
6001 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
6002 ,p_token_2 => 'LINE_TYPE_NAME'
6003 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
6004 l_component_type
6005 ,l_component_code
6006 ,l_component_type_code
6007 ,l_component_appl_id
6008 ,l_amb_context_code
6009 ,l_entity_code
6010 ,l_event_class_code
6011 )
6012 ,p_token_3 => 'OWNER'
6013 ,p_value_3 => xla_lookups_pkg.get_meaning(
6014 p_lookup_type => 'XLA_OWNER_TYPE'
6015 ,p_lookup_code => l_component_type_code
6016 )
6017 ,p_token_4 => 'PRODUCT_NAME'
6018 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6019 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6020 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6021 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6022 ,p_ae_header_id => NULL
6023 );
6024
6025 IF (C_LEVEL_ERROR>= g_log_level) THEN
6026 trace
6027 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6028 ,p_level => C_LEVEL_ERROR
6029 ,p_module => l_log_module);
6030 END IF;
6031 END IF;
6032 END IF;
6033 --
6034 --
6035 ------------------------------------------------------------------------------------------------
6036 -- 4219869 Business Flow
6037 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6038 -- Prior Entry. Currently, the following code is always generated.
6039 ------------------------------------------------------------------------------------------------
6040 XLA_AE_LINES_PKG.ValidateCurrentLine;
6041
6042 ------------------------------------------------------------------------------------
6043 -- 4219869 Business Flow
6044 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6045 ------------------------------------------------------------------------------------
6046 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6047
6048 ----------------------------------------------------------------------------------
6049 -- 4219869 Business Flow
6053 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6050 -- Update journal entry status -- Need to generate this within IF <condition>
6051 ----------------------------------------------------------------------------------
6052 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6054 ,p_balance_type_code => l_balance_type_code
6055 );
6056
6057 -------------------------------------------------------------------------------------------
6058 -- 4262811 - Generate the Accrual Reversal lines
6059 -------------------------------------------------------------------------------------------
6060 BEGIN
6061 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6062 (g_array_event(p_event_id).array_value_num('header_index'));
6063 IF l_acc_rev_flag IS NULL THEN
6064 l_acc_rev_flag := 'N';
6065 END IF;
6066 EXCEPTION
6067 WHEN OTHERS THEN
6068 l_acc_rev_flag := 'N';
6069 END;
6070 --
6071 IF (l_acc_rev_flag = 'Y') THEN
6072
6073 -- 4645092 ------------------------------------------------------------------------------
6074 -- To allow MPA report to determine if it should generate report process
6075 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6076 ------------------------------------------------------------------------------------------
6077
6078 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6079 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6080
6081 --
6082 -- Update the line information that should be overwritten
6083 --
6084 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6085 p_header_num => 1);
6086 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
6087
6088 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6089
6090 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
6091 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6092 END IF;
6093
6094 --
6095 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6096 --
6097 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6098 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
6099 ELSE
6100 ---------------------------------------------------------------------------------------------------
6101 -- 4262811a Switch Sign
6102 ---------------------------------------------------------------------------------------------------
6103 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
6104 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6105 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6106 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6107 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6108 -- 5132302
6109 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6110 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6111
6112 END IF;
6113
6114 -- 4955764
6115 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6116 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6117
6118
6119 XLA_AE_LINES_PKG.ValidateCurrentLine;
6120 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6121
6122 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6123 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6124 ,p_balance_type_code => l_balance_type_code);
6125
6126 END IF;
6127
6128 -----------------------------------------------------------------------------------------
6129 -- 4262811 Multiperiod Accounting
6130 -----------------------------------------------------------------------------------------
6131 -- No MPA option is assigned.
6132
6133
6134 END IF;
6135 END IF;
6136 --
6137
6138 --
6139 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6140 trace
6141 (p_msg => 'END of AcctLineType_17'
6142 ,p_level => C_LEVEL_PROCEDURE
6143 ,p_module => l_log_module);
6144 END IF;
6145 --
6146 EXCEPTION
6147 WHEN xla_exceptions_pkg.application_exception THEN
6148 RAISE;
6149 WHEN OTHERS THEN
6150 xla_exceptions_pkg.raise_message
6151 (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_17');
6152 END AcctLineType_17;
6153 --
6154
6155 ---------------------------------------
6156 --
6157 -- PRIVATE FUNCTION
6158 -- AcctLineType_18
6159 --
6160 ---------------------------------------
6161 PROCEDURE AcctLineType_18 (
6162 p_application_id IN NUMBER
6163 ,p_event_id IN NUMBER
6164 ,p_calculate_acctd_flag IN VARCHAR2
6165 ,p_calculate_g_l_flag IN VARCHAR2
6166 ,p_actual_flag IN OUT VARCHAR2
6167 ,p_balance_type_code OUT VARCHAR2
6168 ,p_gain_or_loss_ref OUT VARCHAR2
6169
6170 --Cashflow Bank Account Cash Account
6171 , p_source_5 IN NUMBER
6172 --Reversal Indicator
6173 , p_source_9 IN VARCHAR2
6174 --Cashflow Number
6175 , p_source_10 IN NUMBER
6176 --Cashflow History Identifier
6180 --Cashflow Bank Account Currency
6177 , p_source_11 IN VARCHAR2
6178 --Distribution Link Type
6179 , p_source_12 IN VARCHAR2
6181 , p_source_13 IN VARCHAR2
6182 --Cashflow Cleared Exchange Rate Date
6183 , p_source_14 IN DATE
6184 --Cashflow Cleared Exchange Rate
6185 , p_source_15 IN NUMBER
6186 --Cashflow Cleared Exchange Rate Type
6187 , p_source_16 IN VARCHAR2
6188 --Reversal First Distribution Identifier
6189 , p_source_17 IN NUMBER
6190 --Reversal Second Distribution Identifier
6191 , p_source_18 IN VARCHAR2
6192 --Reversal Distribution Link Type
6193 , p_source_19 IN VARCHAR2
6194 --Cashflow Direction
6195 , p_source_22 IN VARCHAR2
6196 , p_source_22_meaning IN VARCHAR2
6197 --Cashflow Cleared Amount
6198 , p_source_23 IN NUMBER
6199 )
6200 IS
6201
6202 l_component_type VARCHAR2(80);
6203 l_component_code VARCHAR2(30);
6204 l_component_type_code VARCHAR2(1);
6205 l_component_appl_id INTEGER;
6206 l_amb_context_code VARCHAR2(30);
6207 l_entity_code VARCHAR2(30);
6208 l_event_class_code VARCHAR2(30);
6209 l_ae_header_id NUMBER;
6210 l_event_type_code VARCHAR2(30);
6211 l_line_definition_code VARCHAR2(30);
6212 l_line_definition_owner_code VARCHAR2(1);
6213 --
6214 -- adr variables
6215 l_segment VARCHAR2(30);
6216 l_ccid NUMBER;
6217 l_adr_transaction_coa_id NUMBER;
6218 l_adr_accounting_coa_id NUMBER;
6219 l_adr_flexfield_segment_code VARCHAR2(30);
6220 l_adr_flex_value_set_id NUMBER;
6221 l_adr_value_type_code VARCHAR2(30);
6222 l_adr_value_combination_id NUMBER;
6223 l_adr_value_segment_code VARCHAR2(30);
6224
6225 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
6226 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
6227 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
6228 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
6229
6230 -- 4262811 Variables ------------------------------------------------------------------------------------------
6231 l_entered_amt_idx NUMBER;
6232 l_accted_amt_idx NUMBER;
6233 l_acc_rev_flag VARCHAR2(1);
6234 l_accrual_line_num NUMBER;
6235 l_tmp_amt NUMBER;
6236 l_acc_rev_natural_side_code VARCHAR2(1);
6237
6238 l_num_entries NUMBER;
6239 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
6240 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
6241 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
6242 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
6243 l_recog_line_1 NUMBER;
6244 l_recog_line_2 NUMBER;
6245
6246 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
6247 l_bflow_applied_to_amt NUMBER; -- 5132302
6248 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
6249
6250 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6251
6252 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
6253 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
6254
6255 ---------------------------------------------------------------------------------------------------------------
6256
6257
6258 --
6259 -- bulk performance
6260 --
6261 l_balance_type_code VARCHAR2(1);
6262 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
6263 l_log_module VARCHAR2(240);
6264
6265 --
6266 -- Upgrade strategy
6267 --
6268 l_actual_upg_option VARCHAR2(1);
6269 l_enc_upg_option VARCHAR2(1);
6270
6271 --
6272 BEGIN
6273 --
6274 IF g_log_enabled THEN
6275 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_18';
6276 END IF;
6277 --
6278 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6279
6280 trace
6281 (p_msg => 'BEGIN of AcctLineType_18'
6282 ,p_level => C_LEVEL_PROCEDURE
6283 ,p_module => l_log_module);
6284
6285 END IF;
6286 --
6287 l_component_type := 'AMB_JLT';
6288 l_component_code := 'BAT_RECEIPT_CASH_DR';
6289 l_component_type_code := 'S';
6290 l_component_appl_id := 260;
6291 l_amb_context_code := 'DEFAULT';
6292 l_entity_code := 'CE_CASHFLOWS';
6293 l_event_class_code := 'BAT_CLASS';
6294 l_event_type_code := 'CE_BAT_CLEARED';
6295 l_line_definition_owner_code := 'S';
6296 l_line_definition_code := 'BAT_CLR_DFN';
6297 --
6298 l_balance_type_code := 'A';
6299 l_segment := NULL;
6300 l_ccid := NULL;
6301 l_adr_transaction_coa_id := NULL;
6302 l_adr_accounting_coa_id := NULL;
6303 l_adr_flexfield_segment_code := NULL;
6304 l_adr_flex_value_set_id := NULL;
6305 l_adr_value_type_code := NULL;
6306 l_adr_value_combination_id := NULL;
6307 l_adr_value_segment_code := NULL;
6308
6309 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
6310 l_bflow_class_code := ''; -- 4219869 Business Flow
6311 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
6312 l_budgetary_control_flag := 'N';
6313
6314 l_bflow_applied_to_amt_idx := NULL; -- 5132302
6315 l_bflow_applied_to_amt := NULL; -- 5132302
6316 l_entered_amt_idx := NULL; -- 4262811
6317 l_accted_amt_idx := NULL; -- 4262811
6321 --
6318 l_acc_rev_flag := NULL; -- 4262811
6319 l_accrual_line_num := NULL; -- 4262811
6320 l_tmp_amt := NULL; -- 4262811
6322
6323 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6324 l_balance_type_code <> 'B' THEN
6325 IF NVL(p_source_22,'
6326 ') = 'RECEIPT'
6327 THEN
6328
6329 --
6330 XLA_AE_LINES_PKG.SetNewLine;
6331
6332 p_balance_type_code := l_balance_type_code;
6333 -- set the flag so later we will know whether the gain loss line needs to be created
6334
6335 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6336 p_actual_flag :='A';
6337 END IF;
6338
6339 --
6340 -- bulk performance
6341 --
6342 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6343 p_header_num => 0); -- 4262811
6344 --
6345 -- set accounting line options
6346 --
6347 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6348 p_natural_side_code => 'D'
6349 , p_gain_or_loss_flag => 'N'
6350 , p_gl_transfer_mode_code => 'D'
6351 , p_acct_entry_type_code => 'A'
6352 , p_switch_side_flag => 'Y'
6353 , p_merge_duplicate_code => 'N'
6354 );
6355 --
6356 l_acc_rev_natural_side_code := 'C'; -- 4262811
6357 --
6358 --
6359 -- set accounting line type info
6360 --
6361 xla_ae_lines_pkg.SetAcctLineType
6362 (p_component_type => l_component_type
6363 ,p_event_type_code => l_event_type_code
6364 ,p_line_definition_owner_code => l_line_definition_owner_code
6365 ,p_line_definition_code => l_line_definition_code
6366 ,p_accounting_line_code => l_component_code
6367 ,p_accounting_line_type_code => l_component_type_code
6368 ,p_accounting_line_appl_id => l_component_appl_id
6369 ,p_amb_context_code => l_amb_context_code
6370 ,p_entity_code => l_entity_code
6371 ,p_event_class_code => l_event_class_code);
6372 --
6373 -- set accounting class
6374 --
6375 xla_ae_lines_pkg.SetAcctClass(
6376 p_accounting_class_code => 'CASH'
6377 , p_ae_header_id => l_ae_header_id
6378 );
6379
6380 --
6381 -- set rounding class
6382 --
6383 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6384 'CASH';
6385
6386 --
6387 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6388 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6389 --
6390 -- bulk performance
6391 --
6392 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6393
6394 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6395 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6396
6397 -- 4955764
6398 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6399 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6400
6401 -- 4458381 Public Sector Enh
6402
6403 --
6404 -- set accounting attributes for the line type
6405 --
6406 l_entered_amt_idx := 5;
6407 l_accted_amt_idx := NULL;
6408 l_bflow_applied_to_amt_idx := NULL; -- 5132302
6409 l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
6410 l_rec_acct_attrs.array_char_value(1) := p_source_9;
6411 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
6412 l_rec_acct_attrs.array_num_value(2) := to_char(p_source_10);
6413 l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
6414 l_rec_acct_attrs.array_char_value(3) := p_source_11;
6415 l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
6416 l_rec_acct_attrs.array_char_value(4) := p_source_12;
6417 l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
6418 l_rec_acct_attrs.array_num_value(5) := p_source_23;
6419 l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
6420 l_rec_acct_attrs.array_char_value(6) := p_source_13;
6421 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
6422 l_rec_acct_attrs.array_date_value(7) := p_source_14;
6423 l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
6424 l_rec_acct_attrs.array_num_value(8) := p_source_15;
6425 l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
6426 l_rec_acct_attrs.array_char_value(9) := p_source_16;
6427 l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
6428 l_rec_acct_attrs.array_num_value(10) := to_char(p_source_17);
6429 l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
6430 l_rec_acct_attrs.array_char_value(11) := p_source_18;
6431 l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
6432 l_rec_acct_attrs.array_char_value(12) := p_source_19;
6433
6434 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6435 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6436
6437 ---------------------------------------------------------------------------------------------------------------
6438 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6439 ---------------------------------------------------------------------------------------------------------------
6440 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6444
6441
6442 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6443 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6445 IF xla_accounting_cache_pkg.GetValueChar
6446 (p_source_code => 'LEDGER_CATEGORY_CODE'
6447 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6448 AND l_bflow_method_code = 'PRIOR_ENTRY'
6449 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6450 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6451 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6452 )
6453 THEN
6454 xla_ae_lines_pkg.BflowUpgEntry
6455 (p_business_method_code => l_bflow_method_code
6456 ,p_business_class_code => l_bflow_class_code
6457 ,p_balance_type => l_balance_type_code);
6458 ELSE
6459 NULL;
6460 -- No business flow processing for business flow method of NONE.
6461 END IF;
6462
6463 --
6464 -- call description
6465 --
6466 -- No description or it is inherited.
6467 --
6468 -- call ADRs
6469 -- Bug 4922099
6470 --
6471 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6472 (NVL(l_actual_upg_option, 'N') = 'O') OR
6473 (NVL(l_enc_upg_option, 'N') = 'O')
6474 )
6475 THEN
6476 NULL;
6477 --
6478 --
6479
6480 l_ccid := AcctDerRule_5(
6481 p_application_id => p_application_id
6482 , p_ae_header_id => l_ae_header_id
6483 , p_source_5 => p_source_5
6484 , x_transaction_coa_id => l_adr_transaction_coa_id
6485 , x_accounting_coa_id => l_adr_accounting_coa_id
6486 , x_value_type_code => l_adr_value_type_code
6487 , p_side => 'NA'
6488 );
6489
6490 xla_ae_lines_pkg.set_ccid(
6491 p_code_combination_id => l_ccid
6492 , p_value_type_code => l_adr_value_type_code
6493 , p_transaction_coa_id => l_adr_transaction_coa_id
6494 , p_accounting_coa_id => l_adr_accounting_coa_id
6495 , p_adr_code => 'CE_CASH'
6496 , p_adr_type_code => 'S'
6497 , p_component_type => l_component_type
6498 , p_component_code => l_component_code
6499 , p_component_type_code => l_component_type_code
6500 , p_component_appl_id => l_component_appl_id
6501 , p_amb_context_code => l_amb_context_code
6502 , p_side => 'NA'
6503 );
6504
6505
6506 --
6507 --
6508 END IF;
6509 --
6510 -- Bug 4922099
6511 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6512 (NVL(l_enc_upg_option, 'N') = 'O')
6513 ) AND
6514 (l_bflow_method_code = 'PRIOR_ENTRY')
6515 )
6516 THEN
6517 IF
6518 --
6519 1 = 2
6520 --
6521 THEN
6522 xla_accounting_err_pkg.build_message
6523 (p_appli_s_name => 'XLA'
6524 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6525 ,p_token_1 => 'LINE_NUMBER'
6526 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
6527 ,p_token_2 => 'LINE_TYPE_NAME'
6528 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
6529 l_component_type
6530 ,l_component_code
6531 ,l_component_type_code
6532 ,l_component_appl_id
6533 ,l_amb_context_code
6534 ,l_entity_code
6535 ,l_event_class_code
6536 )
6537 ,p_token_3 => 'OWNER'
6538 ,p_value_3 => xla_lookups_pkg.get_meaning(
6539 p_lookup_type => 'XLA_OWNER_TYPE'
6540 ,p_lookup_code => l_component_type_code
6541 )
6542 ,p_token_4 => 'PRODUCT_NAME'
6543 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6544 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6545 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6546 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6547 ,p_ae_header_id => NULL
6548 );
6549
6550 IF (C_LEVEL_ERROR>= g_log_level) THEN
6551 trace
6552 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6553 ,p_level => C_LEVEL_ERROR
6554 ,p_module => l_log_module);
6555 END IF;
6556 END IF;
6557 END IF;
6558 --
6559 --
6563 -- Prior Entry. Currently, the following code is always generated.
6560 ------------------------------------------------------------------------------------------------
6561 -- 4219869 Business Flow
6562 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6564 ------------------------------------------------------------------------------------------------
6565 XLA_AE_LINES_PKG.ValidateCurrentLine;
6566
6567 ------------------------------------------------------------------------------------
6568 -- 4219869 Business Flow
6569 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6570 ------------------------------------------------------------------------------------
6571 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6572
6573 ----------------------------------------------------------------------------------
6574 -- 4219869 Business Flow
6575 -- Update journal entry status -- Need to generate this within IF <condition>
6576 ----------------------------------------------------------------------------------
6577 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6578 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6579 ,p_balance_type_code => l_balance_type_code
6580 );
6581
6582 -------------------------------------------------------------------------------------------
6583 -- 4262811 - Generate the Accrual Reversal lines
6584 -------------------------------------------------------------------------------------------
6585 BEGIN
6586 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6587 (g_array_event(p_event_id).array_value_num('header_index'));
6588 IF l_acc_rev_flag IS NULL THEN
6589 l_acc_rev_flag := 'N';
6590 END IF;
6591 EXCEPTION
6592 WHEN OTHERS THEN
6593 l_acc_rev_flag := 'N';
6594 END;
6595 --
6596 IF (l_acc_rev_flag = 'Y') THEN
6597
6598 -- 4645092 ------------------------------------------------------------------------------
6599 -- To allow MPA report to determine if it should generate report process
6600 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6601 ------------------------------------------------------------------------------------------
6602
6603 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6604 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6605
6606 --
6607 -- Update the line information that should be overwritten
6608 --
6609 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6610 p_header_num => 1);
6611 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
6612
6613 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6614
6615 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
6616 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6617 END IF;
6618
6619 --
6620 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6621 --
6622 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6623 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
6624 ELSE
6625 ---------------------------------------------------------------------------------------------------
6626 -- 4262811a Switch Sign
6627 ---------------------------------------------------------------------------------------------------
6628 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
6629 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6630 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6631 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6632 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6633 -- 5132302
6634 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6635 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6636
6637 END IF;
6638
6639 -- 4955764
6640 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6641 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6642
6643
6644 XLA_AE_LINES_PKG.ValidateCurrentLine;
6645 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6646
6647 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6648 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6649 ,p_balance_type_code => l_balance_type_code);
6650
6651 END IF;
6652
6653 -----------------------------------------------------------------------------------------
6654 -- 4262811 Multiperiod Accounting
6655 -----------------------------------------------------------------------------------------
6656 -- No MPA option is assigned.
6657
6658
6659 END IF;
6660 END IF;
6661 --
6662
6663 --
6664 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6665 trace
6666 (p_msg => 'END of AcctLineType_18'
6667 ,p_level => C_LEVEL_PROCEDURE
6668 ,p_module => l_log_module);
6669 END IF;
6670 --
6671 EXCEPTION
6672 WHEN xla_exceptions_pkg.application_exception THEN
6673 RAISE;
6674 WHEN OTHERS THEN
6675 xla_exceptions_pkg.raise_message
6679
6676 (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_18');
6677 END AcctLineType_18;
6678 --
6680 ---------------------------------------
6681 --
6682 -- PRIVATE FUNCTION
6683 -- AcctLineType_19
6684 --
6685 ---------------------------------------
6686 PROCEDURE AcctLineType_19 (
6687 p_application_id IN NUMBER
6688 ,p_event_id IN NUMBER
6689 ,p_calculate_acctd_flag IN VARCHAR2
6690 ,p_calculate_g_l_flag IN VARCHAR2
6691 ,p_actual_flag IN OUT VARCHAR2
6692 ,p_balance_type_code OUT VARCHAR2
6693 ,p_gain_or_loss_ref OUT VARCHAR2
6694
6695 --Cashflow Bank Account Cash Account
6696 , p_source_5 IN NUMBER
6697 --Reversal Indicator
6698 , p_source_9 IN VARCHAR2
6699 --Cashflow Number
6700 , p_source_10 IN NUMBER
6701 --Cashflow History Identifier
6702 , p_source_11 IN VARCHAR2
6703 --Distribution Link Type
6704 , p_source_12 IN VARCHAR2
6705 --Cashflow Bank Account Currency
6706 , p_source_13 IN VARCHAR2
6707 --Cashflow Cleared Exchange Rate Date
6708 , p_source_14 IN DATE
6709 --Cashflow Cleared Exchange Rate
6710 , p_source_15 IN NUMBER
6711 --Cashflow Cleared Exchange Rate Type
6712 , p_source_16 IN VARCHAR2
6713 --Reversal First Distribution Identifier
6714 , p_source_17 IN NUMBER
6715 --Reversal Second Distribution Identifier
6716 , p_source_18 IN VARCHAR2
6717 --Reversal Distribution Link Type
6718 , p_source_19 IN VARCHAR2
6719 --Cashflow Direction
6720 , p_source_22 IN VARCHAR2
6721 , p_source_22_meaning IN VARCHAR2
6722 --Cashflow Cleared Amount
6723 , p_source_23 IN NUMBER
6724 )
6725 IS
6726
6727 l_component_type VARCHAR2(80);
6728 l_component_code VARCHAR2(30);
6729 l_component_type_code VARCHAR2(1);
6730 l_component_appl_id INTEGER;
6731 l_amb_context_code VARCHAR2(30);
6732 l_entity_code VARCHAR2(30);
6733 l_event_class_code VARCHAR2(30);
6734 l_ae_header_id NUMBER;
6735 l_event_type_code VARCHAR2(30);
6736 l_line_definition_code VARCHAR2(30);
6737 l_line_definition_owner_code VARCHAR2(1);
6738 --
6739 -- adr variables
6740 l_segment VARCHAR2(30);
6741 l_ccid NUMBER;
6742 l_adr_transaction_coa_id NUMBER;
6743 l_adr_accounting_coa_id NUMBER;
6744 l_adr_flexfield_segment_code VARCHAR2(30);
6745 l_adr_flex_value_set_id NUMBER;
6746 l_adr_value_type_code VARCHAR2(30);
6747 l_adr_value_combination_id NUMBER;
6748 l_adr_value_segment_code VARCHAR2(30);
6749
6750 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
6751 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
6752 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
6753 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
6754
6755 -- 4262811 Variables ------------------------------------------------------------------------------------------
6756 l_entered_amt_idx NUMBER;
6757 l_accted_amt_idx NUMBER;
6758 l_acc_rev_flag VARCHAR2(1);
6759 l_accrual_line_num NUMBER;
6760 l_tmp_amt NUMBER;
6761 l_acc_rev_natural_side_code VARCHAR2(1);
6762
6763 l_num_entries NUMBER;
6764 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
6765 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
6766 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
6767 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
6768 l_recog_line_1 NUMBER;
6769 l_recog_line_2 NUMBER;
6770
6771 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
6772 l_bflow_applied_to_amt NUMBER; -- 5132302
6773 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
6774
6775 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6776
6777 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
6778 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
6779
6780 ---------------------------------------------------------------------------------------------------------------
6781
6782
6783 --
6784 -- bulk performance
6785 --
6786 l_balance_type_code VARCHAR2(1);
6787 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
6788 l_log_module VARCHAR2(240);
6789
6790 --
6791 -- Upgrade strategy
6792 --
6793 l_actual_upg_option VARCHAR2(1);
6794 l_enc_upg_option VARCHAR2(1);
6795
6796 --
6797 BEGIN
6798 --
6799 IF g_log_enabled THEN
6800 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_19';
6801 END IF;
6802 --
6803 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6804
6805 trace
6806 (p_msg => 'BEGIN of AcctLineType_19'
6807 ,p_level => C_LEVEL_PROCEDURE
6808 ,p_module => l_log_module);
6809
6810 END IF;
6811 --
6812 l_component_type := 'AMB_JLT';
6813 l_component_code := 'BAT_RECEIPT_CASH_DR';
6814 l_component_type_code := 'S';
6815 l_component_appl_id := 260;
6816 l_amb_context_code := 'DEFAULT';
6817 l_entity_code := 'CE_CASHFLOWS';
6818 l_event_class_code := 'BAT_CLASS';
6819 l_event_type_code := 'CE_BAT_UNCLEARED';
6820 l_line_definition_owner_code := 'S';
6821 l_line_definition_code := 'BAT_UNCLR_DEFN';
6822 --
6826 l_adr_transaction_coa_id := NULL;
6823 l_balance_type_code := 'A';
6824 l_segment := NULL;
6825 l_ccid := NULL;
6827 l_adr_accounting_coa_id := NULL;
6828 l_adr_flexfield_segment_code := NULL;
6829 l_adr_flex_value_set_id := NULL;
6830 l_adr_value_type_code := NULL;
6831 l_adr_value_combination_id := NULL;
6832 l_adr_value_segment_code := NULL;
6833
6834 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
6835 l_bflow_class_code := ''; -- 4219869 Business Flow
6836 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
6837 l_budgetary_control_flag := 'N';
6838
6839 l_bflow_applied_to_amt_idx := NULL; -- 5132302
6840 l_bflow_applied_to_amt := NULL; -- 5132302
6841 l_entered_amt_idx := NULL; -- 4262811
6842 l_accted_amt_idx := NULL; -- 4262811
6843 l_acc_rev_flag := NULL; -- 4262811
6844 l_accrual_line_num := NULL; -- 4262811
6845 l_tmp_amt := NULL; -- 4262811
6846 --
6847
6848 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6849 l_balance_type_code <> 'B' THEN
6850 IF NVL(p_source_22,'
6851 ') = 'RECEIPT'
6852 THEN
6853
6854 --
6855 XLA_AE_LINES_PKG.SetNewLine;
6856
6857 p_balance_type_code := l_balance_type_code;
6858 -- set the flag so later we will know whether the gain loss line needs to be created
6859
6860 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6861 p_actual_flag :='A';
6862 END IF;
6863
6864 --
6865 -- bulk performance
6866 --
6867 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6868 p_header_num => 0); -- 4262811
6869 --
6870 -- set accounting line options
6871 --
6872 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6873 p_natural_side_code => 'D'
6874 , p_gain_or_loss_flag => 'N'
6875 , p_gl_transfer_mode_code => 'D'
6876 , p_acct_entry_type_code => 'A'
6877 , p_switch_side_flag => 'Y'
6878 , p_merge_duplicate_code => 'N'
6879 );
6880 --
6881 l_acc_rev_natural_side_code := 'C'; -- 4262811
6882 --
6883 --
6884 -- set accounting line type info
6885 --
6886 xla_ae_lines_pkg.SetAcctLineType
6887 (p_component_type => l_component_type
6888 ,p_event_type_code => l_event_type_code
6889 ,p_line_definition_owner_code => l_line_definition_owner_code
6890 ,p_line_definition_code => l_line_definition_code
6891 ,p_accounting_line_code => l_component_code
6892 ,p_accounting_line_type_code => l_component_type_code
6893 ,p_accounting_line_appl_id => l_component_appl_id
6894 ,p_amb_context_code => l_amb_context_code
6895 ,p_entity_code => l_entity_code
6896 ,p_event_class_code => l_event_class_code);
6897 --
6898 -- set accounting class
6899 --
6900 xla_ae_lines_pkg.SetAcctClass(
6901 p_accounting_class_code => 'CASH'
6902 , p_ae_header_id => l_ae_header_id
6903 );
6904
6905 --
6906 -- set rounding class
6907 --
6908 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6909 'CASH';
6910
6911 --
6912 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6913 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6914 --
6915 -- bulk performance
6916 --
6917 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6918
6919 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6920 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6921
6922 -- 4955764
6923 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6924 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6925
6926 -- 4458381 Public Sector Enh
6927
6928 --
6929 -- set accounting attributes for the line type
6930 --
6931 l_entered_amt_idx := 5;
6932 l_accted_amt_idx := NULL;
6933 l_bflow_applied_to_amt_idx := NULL; -- 5132302
6934 l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
6935 l_rec_acct_attrs.array_char_value(1) := p_source_9;
6936 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
6937 l_rec_acct_attrs.array_num_value(2) := to_char(p_source_10);
6938 l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
6939 l_rec_acct_attrs.array_char_value(3) := p_source_11;
6940 l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
6941 l_rec_acct_attrs.array_char_value(4) := p_source_12;
6942 l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
6943 l_rec_acct_attrs.array_num_value(5) := p_source_23;
6944 l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
6945 l_rec_acct_attrs.array_char_value(6) := p_source_13;
6946 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
6947 l_rec_acct_attrs.array_date_value(7) := p_source_14;
6948 l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
6949 l_rec_acct_attrs.array_num_value(8) := p_source_15;
6950 l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
6951 l_rec_acct_attrs.array_char_value(9) := p_source_16;
6952 l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
6956 l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
6953 l_rec_acct_attrs.array_num_value(10) := to_char(p_source_17);
6954 l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
6955 l_rec_acct_attrs.array_char_value(11) := p_source_18;
6957 l_rec_acct_attrs.array_char_value(12) := p_source_19;
6958
6959 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6960 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6961
6962 ---------------------------------------------------------------------------------------------------------------
6963 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6964 ---------------------------------------------------------------------------------------------------------------
6965 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6966
6967 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6968 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6969
6970 IF xla_accounting_cache_pkg.GetValueChar
6971 (p_source_code => 'LEDGER_CATEGORY_CODE'
6972 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6973 AND l_bflow_method_code = 'PRIOR_ENTRY'
6974 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6975 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6976 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6977 )
6978 THEN
6979 xla_ae_lines_pkg.BflowUpgEntry
6980 (p_business_method_code => l_bflow_method_code
6981 ,p_business_class_code => l_bflow_class_code
6982 ,p_balance_type => l_balance_type_code);
6983 ELSE
6984 NULL;
6985 -- No business flow processing for business flow method of NONE.
6986 END IF;
6987
6988 --
6989 -- call description
6990 --
6991 -- No description or it is inherited.
6992 --
6993 -- call ADRs
6994 -- Bug 4922099
6995 --
6996 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6997 (NVL(l_actual_upg_option, 'N') = 'O') OR
6998 (NVL(l_enc_upg_option, 'N') = 'O')
6999 )
7000 THEN
7001 NULL;
7002 --
7003 --
7004
7005 l_ccid := AcctDerRule_5(
7006 p_application_id => p_application_id
7007 , p_ae_header_id => l_ae_header_id
7008 , p_source_5 => p_source_5
7009 , x_transaction_coa_id => l_adr_transaction_coa_id
7010 , x_accounting_coa_id => l_adr_accounting_coa_id
7011 , x_value_type_code => l_adr_value_type_code
7012 , p_side => 'NA'
7013 );
7014
7015 xla_ae_lines_pkg.set_ccid(
7016 p_code_combination_id => l_ccid
7017 , p_value_type_code => l_adr_value_type_code
7018 , p_transaction_coa_id => l_adr_transaction_coa_id
7019 , p_accounting_coa_id => l_adr_accounting_coa_id
7020 , p_adr_code => 'CE_CASH'
7021 , p_adr_type_code => 'S'
7022 , p_component_type => l_component_type
7023 , p_component_code => l_component_code
7024 , p_component_type_code => l_component_type_code
7025 , p_component_appl_id => l_component_appl_id
7026 , p_amb_context_code => l_amb_context_code
7027 , p_side => 'NA'
7028 );
7029
7030
7031 --
7032 --
7033 END IF;
7034 --
7035 -- Bug 4922099
7036 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7037 (NVL(l_enc_upg_option, 'N') = 'O')
7038 ) AND
7039 (l_bflow_method_code = 'PRIOR_ENTRY')
7040 )
7041 THEN
7042 IF
7043 --
7044 1 = 2
7045 --
7046 THEN
7047 xla_accounting_err_pkg.build_message
7048 (p_appli_s_name => 'XLA'
7049 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7050 ,p_token_1 => 'LINE_NUMBER'
7051 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
7052 ,p_token_2 => 'LINE_TYPE_NAME'
7053 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
7054 l_component_type
7055 ,l_component_code
7056 ,l_component_type_code
7057 ,l_component_appl_id
7058 ,l_amb_context_code
7059 ,l_entity_code
7060 ,l_event_class_code
7061 )
7062 ,p_token_3 => 'OWNER'
7063 ,p_value_3 => xla_lookups_pkg.get_meaning(
7064 p_lookup_type => 'XLA_OWNER_TYPE'
7065 ,p_lookup_code => l_component_type_code
7066 )
7067 ,p_token_4 => 'PRODUCT_NAME'
7071 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7068 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7069 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7070 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7072 ,p_ae_header_id => NULL
7073 );
7074
7075 IF (C_LEVEL_ERROR>= g_log_level) THEN
7076 trace
7077 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7078 ,p_level => C_LEVEL_ERROR
7079 ,p_module => l_log_module);
7080 END IF;
7081 END IF;
7082 END IF;
7083 --
7084 --
7085 ------------------------------------------------------------------------------------------------
7086 -- 4219869 Business Flow
7087 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7088 -- Prior Entry. Currently, the following code is always generated.
7089 ------------------------------------------------------------------------------------------------
7090 XLA_AE_LINES_PKG.ValidateCurrentLine;
7091
7092 ------------------------------------------------------------------------------------
7093 -- 4219869 Business Flow
7094 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7095 ------------------------------------------------------------------------------------
7096 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7097
7098 ----------------------------------------------------------------------------------
7099 -- 4219869 Business Flow
7100 -- Update journal entry status -- Need to generate this within IF <condition>
7101 ----------------------------------------------------------------------------------
7102 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7103 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7104 ,p_balance_type_code => l_balance_type_code
7105 );
7106
7107 -------------------------------------------------------------------------------------------
7108 -- 4262811 - Generate the Accrual Reversal lines
7109 -------------------------------------------------------------------------------------------
7110 BEGIN
7111 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7112 (g_array_event(p_event_id).array_value_num('header_index'));
7113 IF l_acc_rev_flag IS NULL THEN
7114 l_acc_rev_flag := 'N';
7115 END IF;
7116 EXCEPTION
7117 WHEN OTHERS THEN
7118 l_acc_rev_flag := 'N';
7119 END;
7120 --
7121 IF (l_acc_rev_flag = 'Y') THEN
7122
7123 -- 4645092 ------------------------------------------------------------------------------
7124 -- To allow MPA report to determine if it should generate report process
7125 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7126 ------------------------------------------------------------------------------------------
7127
7128 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7129 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7130
7131 --
7132 -- Update the line information that should be overwritten
7133 --
7134 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7135 p_header_num => 1);
7136 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
7137
7138 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7139
7140 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
7141 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7142 END IF;
7143
7144 --
7145 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7146 --
7147 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7148 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
7149 ELSE
7150 ---------------------------------------------------------------------------------------------------
7151 -- 4262811a Switch Sign
7152 ---------------------------------------------------------------------------------------------------
7153 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
7154 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7155 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7156 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7157 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7158 -- 5132302
7159 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7160 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7161
7162 END IF;
7163
7164 -- 4955764
7165 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7166 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7167
7168
7169 XLA_AE_LINES_PKG.ValidateCurrentLine;
7170 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7171
7172 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7176 END IF;
7173 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7174 ,p_balance_type_code => l_balance_type_code);
7175
7177
7178 -----------------------------------------------------------------------------------------
7179 -- 4262811 Multiperiod Accounting
7180 -----------------------------------------------------------------------------------------
7181 -- No MPA option is assigned.
7182
7183
7184 END IF;
7185 END IF;
7186 --
7187
7188 --
7189 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7190 trace
7191 (p_msg => 'END of AcctLineType_19'
7192 ,p_level => C_LEVEL_PROCEDURE
7193 ,p_module => l_log_module);
7194 END IF;
7195 --
7196 EXCEPTION
7197 WHEN xla_exceptions_pkg.application_exception THEN
7198 RAISE;
7199 WHEN OTHERS THEN
7200 xla_exceptions_pkg.raise_message
7201 (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_19');
7202 END AcctLineType_19;
7203 --
7204
7205 ---------------------------------------
7206 --
7207 -- PRIVATE FUNCTION
7208 -- AcctLineType_20
7209 --
7210 ---------------------------------------
7211 PROCEDURE AcctLineType_20 (
7212 p_application_id IN NUMBER
7213 ,p_event_id IN NUMBER
7214 ,p_calculate_acctd_flag IN VARCHAR2
7215 ,p_calculate_g_l_flag IN VARCHAR2
7216 ,p_actual_flag IN OUT VARCHAR2
7217 ,p_balance_type_code OUT VARCHAR2
7218 ,p_gain_or_loss_ref OUT VARCHAR2
7219
7220 --Cashflow Offset Account
7221 , p_source_7 IN NUMBER
7222 --Reversal Indicator
7223 , p_source_9 IN VARCHAR2
7224 --Cashflow Number
7225 , p_source_10 IN NUMBER
7226 --Cashflow History Identifier
7227 , p_source_11 IN VARCHAR2
7228 --Distribution Link Type
7229 , p_source_12 IN VARCHAR2
7230 --Reversal First Distribution Identifier
7231 , p_source_17 IN NUMBER
7232 --Reversal Second Distribution Identifier
7233 , p_source_18 IN VARCHAR2
7234 --Reversal Distribution Link Type
7235 , p_source_19 IN VARCHAR2
7236 --Cashflow Direction
7237 , p_source_22 IN VARCHAR2
7238 , p_source_22_meaning IN VARCHAR2
7239 --Cashflow Amount
7240 , p_source_24 IN NUMBER
7241 --Cashflow Currency
7242 , p_source_25 IN VARCHAR2
7243 --Cashflow Exchange Date
7244 , p_source_26 IN DATE
7245 --Cashflow Exchange Rate
7246 , p_source_27 IN NUMBER
7247 --Cashflow Exchange Rate Type
7248 , p_source_28 IN VARCHAR2
7249 )
7250 IS
7251
7252 l_component_type VARCHAR2(80);
7253 l_component_code VARCHAR2(30);
7254 l_component_type_code VARCHAR2(1);
7255 l_component_appl_id INTEGER;
7256 l_amb_context_code VARCHAR2(30);
7257 l_entity_code VARCHAR2(30);
7258 l_event_class_code VARCHAR2(30);
7259 l_ae_header_id NUMBER;
7260 l_event_type_code VARCHAR2(30);
7261 l_line_definition_code VARCHAR2(30);
7262 l_line_definition_owner_code VARCHAR2(1);
7263 --
7264 -- adr variables
7265 l_segment VARCHAR2(30);
7266 l_ccid NUMBER;
7267 l_adr_transaction_coa_id NUMBER;
7268 l_adr_accounting_coa_id NUMBER;
7269 l_adr_flexfield_segment_code VARCHAR2(30);
7270 l_adr_flex_value_set_id NUMBER;
7271 l_adr_value_type_code VARCHAR2(30);
7272 l_adr_value_combination_id NUMBER;
7273 l_adr_value_segment_code VARCHAR2(30);
7274
7275 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
7276 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
7277 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
7278 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
7279
7280 -- 4262811 Variables ------------------------------------------------------------------------------------------
7281 l_entered_amt_idx NUMBER;
7282 l_accted_amt_idx NUMBER;
7283 l_acc_rev_flag VARCHAR2(1);
7284 l_accrual_line_num NUMBER;
7285 l_tmp_amt NUMBER;
7286 l_acc_rev_natural_side_code VARCHAR2(1);
7287
7288 l_num_entries NUMBER;
7289 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
7290 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
7291 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
7292 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
7293 l_recog_line_1 NUMBER;
7294 l_recog_line_2 NUMBER;
7295
7296 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
7297 l_bflow_applied_to_amt NUMBER; -- 5132302
7298 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
7299
7300 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7301
7302 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
7303 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
7304
7305 ---------------------------------------------------------------------------------------------------------------
7306
7307
7308 --
7309 -- bulk performance
7310 --
7311 l_balance_type_code VARCHAR2(1);
7312 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
7313 l_log_module VARCHAR2(240);
7314
7315 --
7316 -- Upgrade strategy
7317 --
7318 l_actual_upg_option VARCHAR2(1);
7319 l_enc_upg_option VARCHAR2(1);
7320
7321 --
7325 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_20';
7322 BEGIN
7323 --
7324 IF g_log_enabled THEN
7326 END IF;
7327 --
7328 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7329
7330 trace
7331 (p_msg => 'BEGIN of AcctLineType_20'
7332 ,p_level => C_LEVEL_PROCEDURE
7333 ,p_module => l_log_module);
7334
7335 END IF;
7336 --
7337 l_component_type := 'AMB_JLT';
7338 l_component_code := 'BAT_RECEIPT_OFFSET_CR';
7339 l_component_type_code := 'S';
7340 l_component_appl_id := 260;
7341 l_amb_context_code := 'DEFAULT';
7342 l_entity_code := 'CE_CASHFLOWS';
7343 l_event_class_code := 'BAT_CLASS';
7344 l_event_type_code := 'CE_BAT_CLEARED';
7345 l_line_definition_owner_code := 'S';
7346 l_line_definition_code := 'BAT_CLR_DFN';
7347 --
7348 l_balance_type_code := 'A';
7349 l_segment := NULL;
7350 l_ccid := NULL;
7351 l_adr_transaction_coa_id := NULL;
7352 l_adr_accounting_coa_id := NULL;
7353 l_adr_flexfield_segment_code := NULL;
7354 l_adr_flex_value_set_id := NULL;
7355 l_adr_value_type_code := NULL;
7356 l_adr_value_combination_id := NULL;
7357 l_adr_value_segment_code := NULL;
7358
7359 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
7360 l_bflow_class_code := ''; -- 4219869 Business Flow
7361 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
7362 l_budgetary_control_flag := 'N';
7363
7364 l_bflow_applied_to_amt_idx := NULL; -- 5132302
7365 l_bflow_applied_to_amt := NULL; -- 5132302
7366 l_entered_amt_idx := NULL; -- 4262811
7367 l_accted_amt_idx := NULL; -- 4262811
7368 l_acc_rev_flag := NULL; -- 4262811
7369 l_accrual_line_num := NULL; -- 4262811
7370 l_tmp_amt := NULL; -- 4262811
7371 --
7372
7373 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7374 l_balance_type_code <> 'B' THEN
7375 IF NVL(p_source_22,'
7376 ') = 'RECEIPT'
7377 THEN
7378
7379 --
7380 XLA_AE_LINES_PKG.SetNewLine;
7381
7382 p_balance_type_code := l_balance_type_code;
7383 -- set the flag so later we will know whether the gain loss line needs to be created
7384
7385 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7386 p_actual_flag :='A';
7387 END IF;
7388
7389 --
7390 -- bulk performance
7391 --
7392 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7393 p_header_num => 0); -- 4262811
7394 --
7395 -- set accounting line options
7396 --
7397 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7398 p_natural_side_code => 'C'
7399 , p_gain_or_loss_flag => 'N'
7400 , p_gl_transfer_mode_code => 'D'
7401 , p_acct_entry_type_code => 'A'
7402 , p_switch_side_flag => 'Y'
7403 , p_merge_duplicate_code => 'N'
7404 );
7405 --
7406 l_acc_rev_natural_side_code := 'D'; -- 4262811
7407 --
7408 --
7409 -- set accounting line type info
7410 --
7411 xla_ae_lines_pkg.SetAcctLineType
7412 (p_component_type => l_component_type
7413 ,p_event_type_code => l_event_type_code
7414 ,p_line_definition_owner_code => l_line_definition_owner_code
7415 ,p_line_definition_code => l_line_definition_code
7416 ,p_accounting_line_code => l_component_code
7417 ,p_accounting_line_type_code => l_component_type_code
7418 ,p_accounting_line_appl_id => l_component_appl_id
7419 ,p_amb_context_code => l_amb_context_code
7420 ,p_entity_code => l_entity_code
7421 ,p_event_class_code => l_event_class_code);
7422 --
7423 -- set accounting class
7424 --
7425 xla_ae_lines_pkg.SetAcctClass(
7426 p_accounting_class_code => 'MISC_CASH'
7427 , p_ae_header_id => l_ae_header_id
7428 );
7429
7430 --
7431 -- set rounding class
7432 --
7433 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7434 'MISC_CASH';
7435
7436 --
7437 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7438 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7439 --
7440 -- bulk performance
7441 --
7442 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7443
7444 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7445 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7446
7447 -- 4955764
7448 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7449 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7450
7451 -- 4458381 Public Sector Enh
7452
7453 --
7454 -- set accounting attributes for the line type
7455 --
7456 l_entered_amt_idx := 5;
7457 l_accted_amt_idx := NULL;
7458 l_bflow_applied_to_amt_idx := NULL; -- 5132302
7459 l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
7460 l_rec_acct_attrs.array_char_value(1) := p_source_9;
7461 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
7462 l_rec_acct_attrs.array_num_value(2) := to_char(p_source_10);
7466 l_rec_acct_attrs.array_char_value(4) := p_source_12;
7463 l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
7464 l_rec_acct_attrs.array_char_value(3) := p_source_11;
7465 l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
7467 l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
7468 l_rec_acct_attrs.array_num_value(5) := p_source_24;
7469 l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
7470 l_rec_acct_attrs.array_char_value(6) := p_source_25;
7471 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
7472 l_rec_acct_attrs.array_date_value(7) := p_source_26;
7473 l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
7474 l_rec_acct_attrs.array_num_value(8) := p_source_27;
7475 l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
7476 l_rec_acct_attrs.array_char_value(9) := p_source_28;
7477 l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
7478 l_rec_acct_attrs.array_num_value(10) := to_char(p_source_17);
7479 l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
7480 l_rec_acct_attrs.array_char_value(11) := p_source_18;
7481 l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
7482 l_rec_acct_attrs.array_char_value(12) := p_source_19;
7483
7484 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7485 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7486
7487 ---------------------------------------------------------------------------------------------------------------
7488 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7489 ---------------------------------------------------------------------------------------------------------------
7490 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7491
7492 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7493 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7494
7495 IF xla_accounting_cache_pkg.GetValueChar
7496 (p_source_code => 'LEDGER_CATEGORY_CODE'
7497 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7498 AND l_bflow_method_code = 'PRIOR_ENTRY'
7499 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7500 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7501 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7502 )
7503 THEN
7504 xla_ae_lines_pkg.BflowUpgEntry
7505 (p_business_method_code => l_bflow_method_code
7506 ,p_business_class_code => l_bflow_class_code
7507 ,p_balance_type => l_balance_type_code);
7508 ELSE
7509 NULL;
7510 -- No business flow processing for business flow method of NONE.
7511 END IF;
7512
7513 --
7514 -- call description
7515 --
7516 -- No description or it is inherited.
7517 --
7518 -- call ADRs
7519 -- Bug 4922099
7520 --
7521 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7522 (NVL(l_actual_upg_option, 'N') = 'O') OR
7523 (NVL(l_enc_upg_option, 'N') = 'O')
7524 )
7525 THEN
7526 NULL;
7527 --
7528 --
7529
7530 l_ccid := AcctDerRule_7(
7531 p_application_id => p_application_id
7532 , p_ae_header_id => l_ae_header_id
7533 , p_source_7 => p_source_7
7534 , x_transaction_coa_id => l_adr_transaction_coa_id
7535 , x_accounting_coa_id => l_adr_accounting_coa_id
7536 , x_value_type_code => l_adr_value_type_code
7537 , p_side => 'NA'
7538 );
7539
7540 xla_ae_lines_pkg.set_ccid(
7541 p_code_combination_id => l_ccid
7542 , p_value_type_code => l_adr_value_type_code
7543 , p_transaction_coa_id => l_adr_transaction_coa_id
7544 , p_accounting_coa_id => l_adr_accounting_coa_id
7545 , p_adr_code => 'CE_OFFSET'
7546 , p_adr_type_code => 'S'
7547 , p_component_type => l_component_type
7548 , p_component_code => l_component_code
7549 , p_component_type_code => l_component_type_code
7550 , p_component_appl_id => l_component_appl_id
7551 , p_amb_context_code => l_amb_context_code
7552 , p_side => 'NA'
7553 );
7554
7555
7556 --
7557 --
7558 END IF;
7559 --
7560 -- Bug 4922099
7561 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7562 (NVL(l_enc_upg_option, 'N') = 'O')
7563 ) AND
7564 (l_bflow_method_code = 'PRIOR_ENTRY')
7565 )
7566 THEN
7567 IF
7568 --
7569 1 = 2
7570 --
7571 THEN
7572 xla_accounting_err_pkg.build_message
7573 (p_appli_s_name => 'XLA'
7574 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7575 ,p_token_1 => 'LINE_NUMBER'
7576 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
7577 ,p_token_2 => 'LINE_TYPE_NAME'
7578 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
7579 l_component_type
7580 ,l_component_code
7581 ,l_component_type_code
7585 ,l_event_class_code
7582 ,l_component_appl_id
7583 ,l_amb_context_code
7584 ,l_entity_code
7586 )
7587 ,p_token_3 => 'OWNER'
7588 ,p_value_3 => xla_lookups_pkg.get_meaning(
7589 p_lookup_type => 'XLA_OWNER_TYPE'
7590 ,p_lookup_code => l_component_type_code
7591 )
7592 ,p_token_4 => 'PRODUCT_NAME'
7593 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7594 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7595 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7596 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7597 ,p_ae_header_id => NULL
7598 );
7599
7600 IF (C_LEVEL_ERROR>= g_log_level) THEN
7601 trace
7602 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7603 ,p_level => C_LEVEL_ERROR
7604 ,p_module => l_log_module);
7605 END IF;
7606 END IF;
7607 END IF;
7608 --
7609 --
7610 ------------------------------------------------------------------------------------------------
7611 -- 4219869 Business Flow
7612 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7613 -- Prior Entry. Currently, the following code is always generated.
7614 ------------------------------------------------------------------------------------------------
7615 XLA_AE_LINES_PKG.ValidateCurrentLine;
7616
7617 ------------------------------------------------------------------------------------
7618 -- 4219869 Business Flow
7619 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7620 ------------------------------------------------------------------------------------
7621 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7622
7623 ----------------------------------------------------------------------------------
7624 -- 4219869 Business Flow
7625 -- Update journal entry status -- Need to generate this within IF <condition>
7626 ----------------------------------------------------------------------------------
7627 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7628 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7629 ,p_balance_type_code => l_balance_type_code
7630 );
7631
7632 -------------------------------------------------------------------------------------------
7633 -- 4262811 - Generate the Accrual Reversal lines
7634 -------------------------------------------------------------------------------------------
7635 BEGIN
7636 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7637 (g_array_event(p_event_id).array_value_num('header_index'));
7638 IF l_acc_rev_flag IS NULL THEN
7639 l_acc_rev_flag := 'N';
7640 END IF;
7641 EXCEPTION
7642 WHEN OTHERS THEN
7643 l_acc_rev_flag := 'N';
7644 END;
7645 --
7646 IF (l_acc_rev_flag = 'Y') THEN
7647
7648 -- 4645092 ------------------------------------------------------------------------------
7649 -- To allow MPA report to determine if it should generate report process
7650 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7651 ------------------------------------------------------------------------------------------
7652
7653 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7654 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7655
7656 --
7657 -- Update the line information that should be overwritten
7658 --
7659 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7660 p_header_num => 1);
7661 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
7662
7663 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7664
7665 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
7666 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7667 END IF;
7668
7669 --
7670 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7671 --
7672 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7673 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
7674 ELSE
7675 ---------------------------------------------------------------------------------------------------
7676 -- 4262811a Switch Sign
7677 ---------------------------------------------------------------------------------------------------
7678 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
7679 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7680 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7684 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7681 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7682 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7683 -- 5132302
7685 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7686
7687 END IF;
7688
7689 -- 4955764
7690 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7691 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7692
7693
7694 XLA_AE_LINES_PKG.ValidateCurrentLine;
7695 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7696
7697 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7698 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7699 ,p_balance_type_code => l_balance_type_code);
7700
7701 END IF;
7702
7703 -----------------------------------------------------------------------------------------
7704 -- 4262811 Multiperiod Accounting
7705 -----------------------------------------------------------------------------------------
7706 -- No MPA option is assigned.
7707
7708
7709 END IF;
7710 END IF;
7711 --
7712
7713 --
7714 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7715 trace
7716 (p_msg => 'END of AcctLineType_20'
7717 ,p_level => C_LEVEL_PROCEDURE
7718 ,p_module => l_log_module);
7719 END IF;
7720 --
7721 EXCEPTION
7722 WHEN xla_exceptions_pkg.application_exception THEN
7723 RAISE;
7724 WHEN OTHERS THEN
7725 xla_exceptions_pkg.raise_message
7726 (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_20');
7727 END AcctLineType_20;
7728 --
7729
7730 ---------------------------------------
7731 --
7732 -- PRIVATE FUNCTION
7733 -- AcctLineType_21
7734 --
7735 ---------------------------------------
7736 PROCEDURE AcctLineType_21 (
7737 p_application_id IN NUMBER
7738 ,p_event_id IN NUMBER
7739 ,p_calculate_acctd_flag IN VARCHAR2
7740 ,p_calculate_g_l_flag IN VARCHAR2
7741 ,p_actual_flag IN OUT VARCHAR2
7742 ,p_balance_type_code OUT VARCHAR2
7743 ,p_gain_or_loss_ref OUT VARCHAR2
7744
7745 --Cashflow Offset Account
7746 , p_source_7 IN NUMBER
7747 --Reversal Indicator
7748 , p_source_9 IN VARCHAR2
7749 --Cashflow Number
7750 , p_source_10 IN NUMBER
7751 --Cashflow History Identifier
7752 , p_source_11 IN VARCHAR2
7753 --Distribution Link Type
7754 , p_source_12 IN VARCHAR2
7755 --Reversal First Distribution Identifier
7756 , p_source_17 IN NUMBER
7757 --Reversal Second Distribution Identifier
7758 , p_source_18 IN VARCHAR2
7759 --Reversal Distribution Link Type
7760 , p_source_19 IN VARCHAR2
7761 --Cashflow Direction
7762 , p_source_22 IN VARCHAR2
7763 , p_source_22_meaning IN VARCHAR2
7764 --Cashflow Amount
7765 , p_source_24 IN NUMBER
7766 --Cashflow Currency
7767 , p_source_25 IN VARCHAR2
7768 --Cashflow Exchange Date
7769 , p_source_26 IN DATE
7770 --Cashflow Exchange Rate
7771 , p_source_27 IN NUMBER
7772 --Cashflow Exchange Rate Type
7773 , p_source_28 IN VARCHAR2
7774 )
7775 IS
7776
7777 l_component_type VARCHAR2(80);
7778 l_component_code VARCHAR2(30);
7779 l_component_type_code VARCHAR2(1);
7780 l_component_appl_id INTEGER;
7781 l_amb_context_code VARCHAR2(30);
7782 l_entity_code VARCHAR2(30);
7783 l_event_class_code VARCHAR2(30);
7784 l_ae_header_id NUMBER;
7785 l_event_type_code VARCHAR2(30);
7786 l_line_definition_code VARCHAR2(30);
7787 l_line_definition_owner_code VARCHAR2(1);
7788 --
7789 -- adr variables
7790 l_segment VARCHAR2(30);
7791 l_ccid NUMBER;
7792 l_adr_transaction_coa_id NUMBER;
7793 l_adr_accounting_coa_id NUMBER;
7794 l_adr_flexfield_segment_code VARCHAR2(30);
7795 l_adr_flex_value_set_id NUMBER;
7796 l_adr_value_type_code VARCHAR2(30);
7797 l_adr_value_combination_id NUMBER;
7798 l_adr_value_segment_code VARCHAR2(30);
7799
7800 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
7801 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
7802 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
7803 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
7804
7805 -- 4262811 Variables ------------------------------------------------------------------------------------------
7806 l_entered_amt_idx NUMBER;
7807 l_accted_amt_idx NUMBER;
7808 l_acc_rev_flag VARCHAR2(1);
7809 l_accrual_line_num NUMBER;
7810 l_tmp_amt NUMBER;
7811 l_acc_rev_natural_side_code VARCHAR2(1);
7812
7813 l_num_entries NUMBER;
7814 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
7815 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
7816 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
7817 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
7818 l_recog_line_1 NUMBER;
7819 l_recog_line_2 NUMBER;
7820
7821 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
7822 l_bflow_applied_to_amt NUMBER; -- 5132302
7826
7823 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
7824
7825 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7827 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
7828 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
7829
7830 ---------------------------------------------------------------------------------------------------------------
7831
7832
7833 --
7834 -- bulk performance
7835 --
7836 l_balance_type_code VARCHAR2(1);
7837 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
7838 l_log_module VARCHAR2(240);
7839
7840 --
7841 -- Upgrade strategy
7842 --
7843 l_actual_upg_option VARCHAR2(1);
7844 l_enc_upg_option VARCHAR2(1);
7845
7846 --
7847 BEGIN
7848 --
7849 IF g_log_enabled THEN
7850 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_21';
7851 END IF;
7852 --
7853 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7854
7855 trace
7856 (p_msg => 'BEGIN of AcctLineType_21'
7857 ,p_level => C_LEVEL_PROCEDURE
7858 ,p_module => l_log_module);
7859
7860 END IF;
7861 --
7862 l_component_type := 'AMB_JLT';
7863 l_component_code := 'BAT_RECEIPT_OFFSET_CR';
7864 l_component_type_code := 'S';
7865 l_component_appl_id := 260;
7866 l_amb_context_code := 'DEFAULT';
7867 l_entity_code := 'CE_CASHFLOWS';
7868 l_event_class_code := 'BAT_CLASS';
7869 l_event_type_code := 'CE_BAT_UNCLEARED';
7870 l_line_definition_owner_code := 'S';
7871 l_line_definition_code := 'BAT_UNCLR_DEFN';
7872 --
7873 l_balance_type_code := 'A';
7874 l_segment := NULL;
7875 l_ccid := NULL;
7876 l_adr_transaction_coa_id := NULL;
7877 l_adr_accounting_coa_id := NULL;
7878 l_adr_flexfield_segment_code := NULL;
7879 l_adr_flex_value_set_id := NULL;
7880 l_adr_value_type_code := NULL;
7881 l_adr_value_combination_id := NULL;
7882 l_adr_value_segment_code := NULL;
7883
7884 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
7885 l_bflow_class_code := ''; -- 4219869 Business Flow
7886 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
7887 l_budgetary_control_flag := 'N';
7888
7889 l_bflow_applied_to_amt_idx := NULL; -- 5132302
7890 l_bflow_applied_to_amt := NULL; -- 5132302
7891 l_entered_amt_idx := NULL; -- 4262811
7892 l_accted_amt_idx := NULL; -- 4262811
7893 l_acc_rev_flag := NULL; -- 4262811
7894 l_accrual_line_num := NULL; -- 4262811
7895 l_tmp_amt := NULL; -- 4262811
7896 --
7897
7898 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7899 l_balance_type_code <> 'B' THEN
7900 IF NVL(p_source_22,'
7901 ') = 'RECEIPT'
7902 THEN
7903
7904 --
7905 XLA_AE_LINES_PKG.SetNewLine;
7906
7907 p_balance_type_code := l_balance_type_code;
7908 -- set the flag so later we will know whether the gain loss line needs to be created
7909
7910 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7911 p_actual_flag :='A';
7912 END IF;
7913
7914 --
7915 -- bulk performance
7916 --
7917 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7918 p_header_num => 0); -- 4262811
7919 --
7920 -- set accounting line options
7921 --
7922 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7923 p_natural_side_code => 'C'
7924 , p_gain_or_loss_flag => 'N'
7925 , p_gl_transfer_mode_code => 'D'
7926 , p_acct_entry_type_code => 'A'
7927 , p_switch_side_flag => 'Y'
7928 , p_merge_duplicate_code => 'N'
7929 );
7930 --
7931 l_acc_rev_natural_side_code := 'D'; -- 4262811
7932 --
7933 --
7934 -- set accounting line type info
7935 --
7936 xla_ae_lines_pkg.SetAcctLineType
7937 (p_component_type => l_component_type
7938 ,p_event_type_code => l_event_type_code
7939 ,p_line_definition_owner_code => l_line_definition_owner_code
7940 ,p_line_definition_code => l_line_definition_code
7941 ,p_accounting_line_code => l_component_code
7942 ,p_accounting_line_type_code => l_component_type_code
7943 ,p_accounting_line_appl_id => l_component_appl_id
7944 ,p_amb_context_code => l_amb_context_code
7945 ,p_entity_code => l_entity_code
7946 ,p_event_class_code => l_event_class_code);
7947 --
7948 -- set accounting class
7949 --
7950 xla_ae_lines_pkg.SetAcctClass(
7951 p_accounting_class_code => 'MISC_CASH'
7952 , p_ae_header_id => l_ae_header_id
7953 );
7954
7955 --
7956 -- set rounding class
7957 --
7958 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7959 'MISC_CASH';
7960
7961 --
7962 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7963 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7964 --
7965 -- bulk performance
7966 --
7967 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7968
7972 -- 4955764
7969 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7970 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7971
7973 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7974 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7975
7976 -- 4458381 Public Sector Enh
7977
7978 --
7979 -- set accounting attributes for the line type
7980 --
7981 l_entered_amt_idx := 5;
7982 l_accted_amt_idx := NULL;
7983 l_bflow_applied_to_amt_idx := NULL; -- 5132302
7984 l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
7985 l_rec_acct_attrs.array_char_value(1) := p_source_9;
7986 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
7987 l_rec_acct_attrs.array_num_value(2) := to_char(p_source_10);
7988 l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
7989 l_rec_acct_attrs.array_char_value(3) := p_source_11;
7990 l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
7991 l_rec_acct_attrs.array_char_value(4) := p_source_12;
7992 l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
7993 l_rec_acct_attrs.array_num_value(5) := p_source_24;
7994 l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
7995 l_rec_acct_attrs.array_char_value(6) := p_source_25;
7996 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
7997 l_rec_acct_attrs.array_date_value(7) := p_source_26;
7998 l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
7999 l_rec_acct_attrs.array_num_value(8) := p_source_27;
8000 l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
8001 l_rec_acct_attrs.array_char_value(9) := p_source_28;
8002 l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
8003 l_rec_acct_attrs.array_num_value(10) := to_char(p_source_17);
8004 l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
8005 l_rec_acct_attrs.array_char_value(11) := p_source_18;
8006 l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
8007 l_rec_acct_attrs.array_char_value(12) := p_source_19;
8008
8009 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8010 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8011
8012 ---------------------------------------------------------------------------------------------------------------
8013 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8014 ---------------------------------------------------------------------------------------------------------------
8015 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8016
8017 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8018 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8019
8020 IF xla_accounting_cache_pkg.GetValueChar
8021 (p_source_code => 'LEDGER_CATEGORY_CODE'
8022 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8023 AND l_bflow_method_code = 'PRIOR_ENTRY'
8024 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8025 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8026 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8027 )
8028 THEN
8029 xla_ae_lines_pkg.BflowUpgEntry
8030 (p_business_method_code => l_bflow_method_code
8031 ,p_business_class_code => l_bflow_class_code
8032 ,p_balance_type => l_balance_type_code);
8033 ELSE
8034 NULL;
8035 -- No business flow processing for business flow method of NONE.
8036 END IF;
8037
8038 --
8039 -- call description
8040 --
8041 -- No description or it is inherited.
8042 --
8043 -- call ADRs
8044 -- Bug 4922099
8045 --
8046 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8047 (NVL(l_actual_upg_option, 'N') = 'O') OR
8048 (NVL(l_enc_upg_option, 'N') = 'O')
8049 )
8050 THEN
8051 NULL;
8052 --
8053 --
8054
8055 l_ccid := AcctDerRule_7(
8056 p_application_id => p_application_id
8057 , p_ae_header_id => l_ae_header_id
8058 , p_source_7 => p_source_7
8059 , x_transaction_coa_id => l_adr_transaction_coa_id
8060 , x_accounting_coa_id => l_adr_accounting_coa_id
8061 , x_value_type_code => l_adr_value_type_code
8062 , p_side => 'NA'
8063 );
8064
8065 xla_ae_lines_pkg.set_ccid(
8066 p_code_combination_id => l_ccid
8067 , p_value_type_code => l_adr_value_type_code
8068 , p_transaction_coa_id => l_adr_transaction_coa_id
8069 , p_accounting_coa_id => l_adr_accounting_coa_id
8070 , p_adr_code => 'CE_OFFSET'
8071 , p_adr_type_code => 'S'
8072 , p_component_type => l_component_type
8073 , p_component_code => l_component_code
8074 , p_component_type_code => l_component_type_code
8075 , p_component_appl_id => l_component_appl_id
8076 , p_amb_context_code => l_amb_context_code
8077 , p_side => 'NA'
8078 );
8079
8080
8081 --
8082 --
8083 END IF;
8084 --
8085 -- Bug 4922099
8086 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8087 (NVL(l_enc_upg_option, 'N') = 'O')
8088 ) AND
8089 (l_bflow_method_code = 'PRIOR_ENTRY')
8090 )
8091 THEN
8092 IF
8093 --
8097 xla_accounting_err_pkg.build_message
8094 1 = 2
8095 --
8096 THEN
8098 (p_appli_s_name => 'XLA'
8099 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8100 ,p_token_1 => 'LINE_NUMBER'
8101 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
8102 ,p_token_2 => 'LINE_TYPE_NAME'
8103 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
8104 l_component_type
8105 ,l_component_code
8106 ,l_component_type_code
8107 ,l_component_appl_id
8108 ,l_amb_context_code
8109 ,l_entity_code
8110 ,l_event_class_code
8111 )
8112 ,p_token_3 => 'OWNER'
8113 ,p_value_3 => xla_lookups_pkg.get_meaning(
8114 p_lookup_type => 'XLA_OWNER_TYPE'
8115 ,p_lookup_code => l_component_type_code
8116 )
8117 ,p_token_4 => 'PRODUCT_NAME'
8118 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8119 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8120 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8121 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8122 ,p_ae_header_id => NULL
8123 );
8124
8125 IF (C_LEVEL_ERROR>= g_log_level) THEN
8126 trace
8127 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8128 ,p_level => C_LEVEL_ERROR
8129 ,p_module => l_log_module);
8130 END IF;
8131 END IF;
8132 END IF;
8133 --
8134 --
8135 ------------------------------------------------------------------------------------------------
8136 -- 4219869 Business Flow
8137 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8138 -- Prior Entry. Currently, the following code is always generated.
8139 ------------------------------------------------------------------------------------------------
8140 XLA_AE_LINES_PKG.ValidateCurrentLine;
8141
8142 ------------------------------------------------------------------------------------
8143 -- 4219869 Business Flow
8144 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8145 ------------------------------------------------------------------------------------
8146 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8147
8148 ----------------------------------------------------------------------------------
8149 -- 4219869 Business Flow
8150 -- Update journal entry status -- Need to generate this within IF <condition>
8151 ----------------------------------------------------------------------------------
8152 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8153 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8154 ,p_balance_type_code => l_balance_type_code
8155 );
8156
8157 -------------------------------------------------------------------------------------------
8158 -- 4262811 - Generate the Accrual Reversal lines
8159 -------------------------------------------------------------------------------------------
8160 BEGIN
8161 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8162 (g_array_event(p_event_id).array_value_num('header_index'));
8163 IF l_acc_rev_flag IS NULL THEN
8164 l_acc_rev_flag := 'N';
8165 END IF;
8166 EXCEPTION
8167 WHEN OTHERS THEN
8168 l_acc_rev_flag := 'N';
8169 END;
8170 --
8171 IF (l_acc_rev_flag = 'Y') THEN
8172
8173 -- 4645092 ------------------------------------------------------------------------------
8174 -- To allow MPA report to determine if it should generate report process
8175 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8176 ------------------------------------------------------------------------------------------
8177
8178 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8179 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8180
8181 --
8182 -- Update the line information that should be overwritten
8183 --
8184 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8185 p_header_num => 1);
8186 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
8187
8188 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8189
8190 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
8191 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8192 END IF;
8193
8194 --
8198 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
8195 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8196 --
8197 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8199 ELSE
8200 ---------------------------------------------------------------------------------------------------
8201 -- 4262811a Switch Sign
8202 ---------------------------------------------------------------------------------------------------
8203 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
8204 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8205 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8206 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8207 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8208 -- 5132302
8209 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8210 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8211
8212 END IF;
8213
8214 -- 4955764
8215 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8216 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8217
8218
8219 XLA_AE_LINES_PKG.ValidateCurrentLine;
8220 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8221
8222 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8223 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8224 ,p_balance_type_code => l_balance_type_code);
8225
8226 END IF;
8227
8228 -----------------------------------------------------------------------------------------
8229 -- 4262811 Multiperiod Accounting
8230 -----------------------------------------------------------------------------------------
8231 -- No MPA option is assigned.
8232
8233
8234 END IF;
8235 END IF;
8236 --
8237
8238 --
8239 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8240 trace
8241 (p_msg => 'END of AcctLineType_21'
8242 ,p_level => C_LEVEL_PROCEDURE
8243 ,p_module => l_log_module);
8244 END IF;
8245 --
8246 EXCEPTION
8247 WHEN xla_exceptions_pkg.application_exception THEN
8248 RAISE;
8249 WHEN OTHERS THEN
8250 xla_exceptions_pkg.raise_message
8251 (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_21');
8252 END AcctLineType_21;
8253 --
8254
8255 ---------------------------------------
8256 --
8257 -- PRIVATE FUNCTION
8258 -- AcctLineType_22
8259 --
8260 ---------------------------------------
8261 PROCEDURE AcctLineType_22 (
8262 p_application_id IN NUMBER
8263 ,p_event_id IN NUMBER
8264 ,p_calculate_acctd_flag IN VARCHAR2
8265 ,p_calculate_g_l_flag IN VARCHAR2
8266 ,p_actual_flag IN OUT VARCHAR2
8267 ,p_balance_type_code OUT VARCHAR2
8268 ,p_gain_or_loss_ref OUT VARCHAR2
8269
8270 --Cashflow Description
8271 , p_source_2 IN VARCHAR2
8272 --Cashflow Bank Account Cash Account
8273 , p_source_5 IN NUMBER
8274 --Reversal Indicator
8275 , p_source_9 IN VARCHAR2
8276 --Cashflow Number
8277 , p_source_10 IN NUMBER
8278 --Cashflow History Identifier
8279 , p_source_11 IN VARCHAR2
8280 --Distribution Link Type
8281 , p_source_12 IN VARCHAR2
8282 --Cashflow Bank Account Currency
8283 , p_source_13 IN VARCHAR2
8284 --Cashflow Cleared Exchange Rate Date
8285 , p_source_14 IN DATE
8286 --Cashflow Cleared Exchange Rate
8287 , p_source_15 IN NUMBER
8288 --Cashflow Cleared Exchange Rate Type
8289 , p_source_16 IN VARCHAR2
8290 --Reversal First Distribution Identifier
8291 , p_source_17 IN NUMBER
8292 --Reversal Second Distribution Identifier
8293 , p_source_18 IN VARCHAR2
8294 --Reversal Distribution Link Type
8295 , p_source_19 IN VARCHAR2
8296 --Cashflow Direction
8297 , p_source_22 IN VARCHAR2
8298 , p_source_22_meaning IN VARCHAR2
8299 --Cashflow Cleared Amount
8300 , p_source_23 IN NUMBER
8301 )
8302 IS
8303
8304 l_component_type VARCHAR2(80);
8305 l_component_code VARCHAR2(30);
8306 l_component_type_code VARCHAR2(1);
8307 l_component_appl_id INTEGER;
8308 l_amb_context_code VARCHAR2(30);
8309 l_entity_code VARCHAR2(30);
8310 l_event_class_code VARCHAR2(30);
8311 l_ae_header_id NUMBER;
8312 l_event_type_code VARCHAR2(30);
8313 l_line_definition_code VARCHAR2(30);
8314 l_line_definition_owner_code VARCHAR2(1);
8315 --
8316 -- adr variables
8317 l_segment VARCHAR2(30);
8318 l_ccid NUMBER;
8319 l_adr_transaction_coa_id NUMBER;
8320 l_adr_accounting_coa_id NUMBER;
8321 l_adr_flexfield_segment_code VARCHAR2(30);
8322 l_adr_flex_value_set_id NUMBER;
8323 l_adr_value_type_code VARCHAR2(30);
8324 l_adr_value_combination_id NUMBER;
8325 l_adr_value_segment_code VARCHAR2(30);
8326
8327 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
8328 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
8329 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
8330 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
8334 l_accted_amt_idx NUMBER;
8331
8332 -- 4262811 Variables ------------------------------------------------------------------------------------------
8333 l_entered_amt_idx NUMBER;
8335 l_acc_rev_flag VARCHAR2(1);
8336 l_accrual_line_num NUMBER;
8337 l_tmp_amt NUMBER;
8338 l_acc_rev_natural_side_code VARCHAR2(1);
8339
8340 l_num_entries NUMBER;
8341 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
8342 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
8343 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
8344 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
8345 l_recog_line_1 NUMBER;
8346 l_recog_line_2 NUMBER;
8347
8348 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
8349 l_bflow_applied_to_amt NUMBER; -- 5132302
8350 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
8351
8352 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8353
8354 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
8355 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
8356
8357 ---------------------------------------------------------------------------------------------------------------
8358
8359
8360 --
8361 -- bulk performance
8362 --
8363 l_balance_type_code VARCHAR2(1);
8364 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
8365 l_log_module VARCHAR2(240);
8366
8367 --
8368 -- Upgrade strategy
8369 --
8370 l_actual_upg_option VARCHAR2(1);
8371 l_enc_upg_option VARCHAR2(1);
8372
8373 --
8374 BEGIN
8375 --
8376 IF g_log_enabled THEN
8377 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_22';
8378 END IF;
8379 --
8380 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8381
8382 trace
8383 (p_msg => 'BEGIN of AcctLineType_22'
8384 ,p_level => C_LEVEL_PROCEDURE
8385 ,p_module => l_log_module);
8386
8387 END IF;
8388 --
8389 l_component_type := 'AMB_JLT';
8390 l_component_code := 'BSL_PAYMENT_CASH_CR';
8391 l_component_type_code := 'S';
8392 l_component_appl_id := 260;
8393 l_amb_context_code := 'DEFAULT';
8394 l_entity_code := 'CE_CASHFLOWS';
8395 l_event_class_code := 'STMT_CLASS';
8396 l_event_type_code := 'STMT_CLASS_ALL';
8397 l_line_definition_owner_code := 'S';
8398 l_line_definition_code := 'BSL_LINES_DEFN';
8399 --
8400 l_balance_type_code := 'A';
8401 l_segment := NULL;
8402 l_ccid := NULL;
8403 l_adr_transaction_coa_id := NULL;
8404 l_adr_accounting_coa_id := NULL;
8405 l_adr_flexfield_segment_code := NULL;
8406 l_adr_flex_value_set_id := NULL;
8407 l_adr_value_type_code := NULL;
8408 l_adr_value_combination_id := NULL;
8409 l_adr_value_segment_code := NULL;
8410
8411 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
8412 l_bflow_class_code := ''; -- 4219869 Business Flow
8413 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
8414 l_budgetary_control_flag := 'N';
8415
8416 l_bflow_applied_to_amt_idx := NULL; -- 5132302
8417 l_bflow_applied_to_amt := NULL; -- 5132302
8418 l_entered_amt_idx := NULL; -- 4262811
8419 l_accted_amt_idx := NULL; -- 4262811
8420 l_acc_rev_flag := NULL; -- 4262811
8421 l_accrual_line_num := NULL; -- 4262811
8422 l_tmp_amt := NULL; -- 4262811
8423 --
8424
8425 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8426 l_balance_type_code <> 'B' THEN
8427 IF NVL(p_source_22,'
8428 ') = 'PAYMENT'
8429 THEN
8430
8431 --
8432 XLA_AE_LINES_PKG.SetNewLine;
8433
8434 p_balance_type_code := l_balance_type_code;
8435 -- set the flag so later we will know whether the gain loss line needs to be created
8436
8437 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8438 p_actual_flag :='A';
8439 END IF;
8440
8441 --
8442 -- bulk performance
8443 --
8444 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8445 p_header_num => 0); -- 4262811
8446 --
8447 -- set accounting line options
8448 --
8449 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8450 p_natural_side_code => 'C'
8451 , p_gain_or_loss_flag => 'N'
8452 , p_gl_transfer_mode_code => 'D'
8453 , p_acct_entry_type_code => 'A'
8454 , p_switch_side_flag => 'Y'
8455 , p_merge_duplicate_code => 'N'
8456 );
8457 --
8458 l_acc_rev_natural_side_code := 'D'; -- 4262811
8459 --
8460 --
8461 -- set accounting line type info
8462 --
8463 xla_ae_lines_pkg.SetAcctLineType
8464 (p_component_type => l_component_type
8465 ,p_event_type_code => l_event_type_code
8466 ,p_line_definition_owner_code => l_line_definition_owner_code
8467 ,p_line_definition_code => l_line_definition_code
8468 ,p_accounting_line_code => l_component_code
8469 ,p_accounting_line_type_code => l_component_type_code
8470 ,p_accounting_line_appl_id => l_component_appl_id
8471 ,p_amb_context_code => l_amb_context_code
8475 -- set accounting class
8472 ,p_entity_code => l_entity_code
8473 ,p_event_class_code => l_event_class_code);
8474 --
8476 --
8477 xla_ae_lines_pkg.SetAcctClass(
8478 p_accounting_class_code => 'CASH'
8479 , p_ae_header_id => l_ae_header_id
8480 );
8481
8482 --
8483 -- set rounding class
8484 --
8485 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
8486 'CASH';
8487
8488 --
8489 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
8490 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
8491 --
8492 -- bulk performance
8493 --
8494 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
8495
8496 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
8497 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
8498
8499 -- 4955764
8500 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8501 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
8502
8503 -- 4458381 Public Sector Enh
8504
8505 --
8506 -- set accounting attributes for the line type
8507 --
8508 l_entered_amt_idx := 5;
8509 l_accted_amt_idx := NULL;
8510 l_bflow_applied_to_amt_idx := NULL; -- 5132302
8511 l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
8512 l_rec_acct_attrs.array_char_value(1) := p_source_9;
8513 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
8514 l_rec_acct_attrs.array_num_value(2) := to_char(p_source_10);
8515 l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
8516 l_rec_acct_attrs.array_char_value(3) := p_source_11;
8517 l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
8518 l_rec_acct_attrs.array_char_value(4) := p_source_12;
8519 l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
8520 l_rec_acct_attrs.array_num_value(5) := p_source_23;
8521 l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
8522 l_rec_acct_attrs.array_char_value(6) := p_source_13;
8523 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
8524 l_rec_acct_attrs.array_date_value(7) := p_source_14;
8525 l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
8526 l_rec_acct_attrs.array_num_value(8) := p_source_15;
8527 l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
8528 l_rec_acct_attrs.array_char_value(9) := p_source_16;
8529 l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
8530 l_rec_acct_attrs.array_num_value(10) := to_char(p_source_17);
8531 l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
8532 l_rec_acct_attrs.array_char_value(11) := p_source_18;
8533 l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
8534 l_rec_acct_attrs.array_char_value(12) := p_source_19;
8535
8536 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8537 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8538
8539 ---------------------------------------------------------------------------------------------------------------
8540 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8541 ---------------------------------------------------------------------------------------------------------------
8542 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8543
8544 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8545 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8546
8547 IF xla_accounting_cache_pkg.GetValueChar
8548 (p_source_code => 'LEDGER_CATEGORY_CODE'
8549 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8550 AND l_bflow_method_code = 'PRIOR_ENTRY'
8551 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8552 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8553 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8554 )
8555 THEN
8556 xla_ae_lines_pkg.BflowUpgEntry
8557 (p_business_method_code => l_bflow_method_code
8558 ,p_business_class_code => l_bflow_class_code
8559 ,p_balance_type => l_balance_type_code);
8560 ELSE
8561 NULL;
8562 -- No business flow processing for business flow method of NONE.
8563 END IF;
8564
8565 --
8566 -- call description
8567 --
8568
8569 xla_ae_lines_pkg.SetLineDescription(
8570 p_ae_header_id => l_ae_header_id
8571 ,p_description => Description_2 (
8572 p_application_id => p_application_id
8573 , p_ae_header_id => l_ae_header_id
8574 , p_source_2 => p_source_2
8575 )
8576 );
8577
8578
8579 --
8580 -- call ADRs
8581 -- Bug 4922099
8582 --
8583 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8584 (NVL(l_actual_upg_option, 'N') = 'O') OR
8585 (NVL(l_enc_upg_option, 'N') = 'O')
8586 )
8587 THEN
8588 NULL;
8589 --
8590 --
8591
8592 l_ccid := AcctDerRule_5(
8593 p_application_id => p_application_id
8594 , p_ae_header_id => l_ae_header_id
8595 , p_source_5 => p_source_5
8596 , x_transaction_coa_id => l_adr_transaction_coa_id
8600 );
8597 , x_accounting_coa_id => l_adr_accounting_coa_id
8598 , x_value_type_code => l_adr_value_type_code
8599 , p_side => 'NA'
8601
8602 xla_ae_lines_pkg.set_ccid(
8603 p_code_combination_id => l_ccid
8604 , p_value_type_code => l_adr_value_type_code
8605 , p_transaction_coa_id => l_adr_transaction_coa_id
8606 , p_accounting_coa_id => l_adr_accounting_coa_id
8607 , p_adr_code => 'CE_CASH'
8608 , p_adr_type_code => 'S'
8609 , p_component_type => l_component_type
8610 , p_component_code => l_component_code
8611 , p_component_type_code => l_component_type_code
8612 , p_component_appl_id => l_component_appl_id
8613 , p_amb_context_code => l_amb_context_code
8614 , p_side => 'NA'
8615 );
8616
8617
8618 --
8619 --
8620 END IF;
8621 --
8622 -- Bug 4922099
8623 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8624 (NVL(l_enc_upg_option, 'N') = 'O')
8625 ) AND
8626 (l_bflow_method_code = 'PRIOR_ENTRY')
8627 )
8628 THEN
8629 IF
8630 --
8631 1 = 2
8632 --
8633 THEN
8634 xla_accounting_err_pkg.build_message
8635 (p_appli_s_name => 'XLA'
8636 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8637 ,p_token_1 => 'LINE_NUMBER'
8638 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
8639 ,p_token_2 => 'LINE_TYPE_NAME'
8640 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
8641 l_component_type
8642 ,l_component_code
8643 ,l_component_type_code
8644 ,l_component_appl_id
8645 ,l_amb_context_code
8646 ,l_entity_code
8647 ,l_event_class_code
8648 )
8649 ,p_token_3 => 'OWNER'
8650 ,p_value_3 => xla_lookups_pkg.get_meaning(
8651 p_lookup_type => 'XLA_OWNER_TYPE'
8652 ,p_lookup_code => l_component_type_code
8653 )
8654 ,p_token_4 => 'PRODUCT_NAME'
8655 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8656 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8657 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8658 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8659 ,p_ae_header_id => NULL
8660 );
8661
8662 IF (C_LEVEL_ERROR>= g_log_level) THEN
8663 trace
8664 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8665 ,p_level => C_LEVEL_ERROR
8666 ,p_module => l_log_module);
8667 END IF;
8668 END IF;
8669 END IF;
8670 --
8671 --
8672 ------------------------------------------------------------------------------------------------
8673 -- 4219869 Business Flow
8674 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8675 -- Prior Entry. Currently, the following code is always generated.
8676 ------------------------------------------------------------------------------------------------
8677 XLA_AE_LINES_PKG.ValidateCurrentLine;
8678
8679 ------------------------------------------------------------------------------------
8680 -- 4219869 Business Flow
8681 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8682 ------------------------------------------------------------------------------------
8683 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8684
8685 ----------------------------------------------------------------------------------
8686 -- 4219869 Business Flow
8687 -- Update journal entry status -- Need to generate this within IF <condition>
8688 ----------------------------------------------------------------------------------
8689 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8690 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8691 ,p_balance_type_code => l_balance_type_code
8692 );
8693
8694 -------------------------------------------------------------------------------------------
8695 -- 4262811 - Generate the Accrual Reversal lines
8696 -------------------------------------------------------------------------------------------
8697 BEGIN
8698 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8699 (g_array_event(p_event_id).array_value_num('header_index'));
8700 IF l_acc_rev_flag IS NULL THEN
8701 l_acc_rev_flag := 'N';
8702 END IF;
8703 EXCEPTION
8707 --
8704 WHEN OTHERS THEN
8705 l_acc_rev_flag := 'N';
8706 END;
8708 IF (l_acc_rev_flag = 'Y') THEN
8709
8710 -- 4645092 ------------------------------------------------------------------------------
8711 -- To allow MPA report to determine if it should generate report process
8712 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8713 ------------------------------------------------------------------------------------------
8714
8715 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8716 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8717
8718 --
8719 -- Update the line information that should be overwritten
8720 --
8721 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8722 p_header_num => 1);
8723 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
8724
8725 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8726
8727 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
8728 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8729 END IF;
8730
8731 --
8732 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8733 --
8734 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8735 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
8736 ELSE
8737 ---------------------------------------------------------------------------------------------------
8738 -- 4262811a Switch Sign
8739 ---------------------------------------------------------------------------------------------------
8740 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
8741 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8742 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8743 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8744 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8745 -- 5132302
8746 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8747 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8748
8749 END IF;
8750
8751 -- 4955764
8752 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8753 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8754
8755
8756 XLA_AE_LINES_PKG.ValidateCurrentLine;
8757 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8758
8759 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8760 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8761 ,p_balance_type_code => l_balance_type_code);
8762
8763 END IF;
8764
8765 -----------------------------------------------------------------------------------------
8766 -- 4262811 Multiperiod Accounting
8767 -----------------------------------------------------------------------------------------
8768 -- No MPA option is assigned.
8769
8770
8771 END IF;
8772 END IF;
8773 --
8774
8775 --
8776 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8777 trace
8778 (p_msg => 'END of AcctLineType_22'
8779 ,p_level => C_LEVEL_PROCEDURE
8780 ,p_module => l_log_module);
8781 END IF;
8782 --
8783 EXCEPTION
8784 WHEN xla_exceptions_pkg.application_exception THEN
8785 RAISE;
8786 WHEN OTHERS THEN
8787 xla_exceptions_pkg.raise_message
8788 (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_22');
8789 END AcctLineType_22;
8790 --
8791
8792 ---------------------------------------
8793 --
8794 -- PRIVATE FUNCTION
8795 -- AcctLineType_23
8796 --
8797 ---------------------------------------
8798 PROCEDURE AcctLineType_23 (
8799 p_application_id IN NUMBER
8800 ,p_event_id IN NUMBER
8801 ,p_calculate_acctd_flag IN VARCHAR2
8802 ,p_calculate_g_l_flag IN VARCHAR2
8803 ,p_actual_flag IN OUT VARCHAR2
8804 ,p_balance_type_code OUT VARCHAR2
8805 ,p_gain_or_loss_ref OUT VARCHAR2
8806
8807 --Cashflow Description
8808 , p_source_2 IN VARCHAR2
8809 --Cashflow Offset Account
8810 , p_source_7 IN NUMBER
8811 --Reversal Indicator
8812 , p_source_9 IN VARCHAR2
8813 --Cashflow Number
8814 , p_source_10 IN NUMBER
8815 --Cashflow History Identifier
8816 , p_source_11 IN VARCHAR2
8817 --Distribution Link Type
8818 , p_source_12 IN VARCHAR2
8819 --Cashflow Bank Account Currency
8820 , p_source_13 IN VARCHAR2
8821 --Cashflow Cleared Exchange Rate Date
8822 , p_source_14 IN DATE
8823 --Cashflow Cleared Exchange Rate
8824 , p_source_15 IN NUMBER
8825 --Cashflow Cleared Exchange Rate Type
8826 , p_source_16 IN VARCHAR2
8827 --Reversal First Distribution Identifier
8828 , p_source_17 IN NUMBER
8829 --Reversal Second Distribution Identifier
8830 , p_source_18 IN VARCHAR2
8831 --Reversal Distribution Link Type
8832 , p_source_19 IN VARCHAR2
8833 --Cashflow Direction
8834 , p_source_22 IN VARCHAR2
8835 , p_source_22_meaning IN VARCHAR2
8836 --Cashflow Cleared Amount
8837 , p_source_23 IN NUMBER
8841 l_component_type VARCHAR2(80);
8838 )
8839 IS
8840
8842 l_component_code VARCHAR2(30);
8843 l_component_type_code VARCHAR2(1);
8844 l_component_appl_id INTEGER;
8845 l_amb_context_code VARCHAR2(30);
8846 l_entity_code VARCHAR2(30);
8847 l_event_class_code VARCHAR2(30);
8848 l_ae_header_id NUMBER;
8849 l_event_type_code VARCHAR2(30);
8850 l_line_definition_code VARCHAR2(30);
8851 l_line_definition_owner_code VARCHAR2(1);
8852 --
8853 -- adr variables
8854 l_segment VARCHAR2(30);
8855 l_ccid NUMBER;
8856 l_adr_transaction_coa_id NUMBER;
8857 l_adr_accounting_coa_id NUMBER;
8858 l_adr_flexfield_segment_code VARCHAR2(30);
8859 l_adr_flex_value_set_id NUMBER;
8860 l_adr_value_type_code VARCHAR2(30);
8861 l_adr_value_combination_id NUMBER;
8862 l_adr_value_segment_code VARCHAR2(30);
8863
8864 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
8865 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
8866 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
8867 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
8868
8869 -- 4262811 Variables ------------------------------------------------------------------------------------------
8870 l_entered_amt_idx NUMBER;
8871 l_accted_amt_idx NUMBER;
8872 l_acc_rev_flag VARCHAR2(1);
8873 l_accrual_line_num NUMBER;
8874 l_tmp_amt NUMBER;
8875 l_acc_rev_natural_side_code VARCHAR2(1);
8876
8877 l_num_entries NUMBER;
8878 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
8879 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
8880 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
8881 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
8882 l_recog_line_1 NUMBER;
8883 l_recog_line_2 NUMBER;
8884
8885 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
8886 l_bflow_applied_to_amt NUMBER; -- 5132302
8887 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
8888
8889 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8890
8891 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
8892 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
8893
8894 ---------------------------------------------------------------------------------------------------------------
8895
8896
8897 --
8898 -- bulk performance
8899 --
8900 l_balance_type_code VARCHAR2(1);
8901 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
8902 l_log_module VARCHAR2(240);
8903
8904 --
8905 -- Upgrade strategy
8906 --
8907 l_actual_upg_option VARCHAR2(1);
8908 l_enc_upg_option VARCHAR2(1);
8909
8910 --
8911 BEGIN
8912 --
8913 IF g_log_enabled THEN
8914 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_23';
8915 END IF;
8916 --
8917 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8918
8919 trace
8920 (p_msg => 'BEGIN of AcctLineType_23'
8921 ,p_level => C_LEVEL_PROCEDURE
8922 ,p_module => l_log_module);
8923
8924 END IF;
8925 --
8926 l_component_type := 'AMB_JLT';
8927 l_component_code := 'BSL_PAYMENT_OFFSET_DR';
8928 l_component_type_code := 'S';
8929 l_component_appl_id := 260;
8930 l_amb_context_code := 'DEFAULT';
8931 l_entity_code := 'CE_CASHFLOWS';
8932 l_event_class_code := 'STMT_CLASS';
8933 l_event_type_code := 'STMT_CLASS_ALL';
8934 l_line_definition_owner_code := 'S';
8935 l_line_definition_code := 'BSL_LINES_DEFN';
8936 --
8937 l_balance_type_code := 'A';
8938 l_segment := NULL;
8939 l_ccid := NULL;
8940 l_adr_transaction_coa_id := NULL;
8941 l_adr_accounting_coa_id := NULL;
8942 l_adr_flexfield_segment_code := NULL;
8943 l_adr_flex_value_set_id := NULL;
8944 l_adr_value_type_code := NULL;
8945 l_adr_value_combination_id := NULL;
8946 l_adr_value_segment_code := NULL;
8947
8948 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
8949 l_bflow_class_code := ''; -- 4219869 Business Flow
8950 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
8951 l_budgetary_control_flag := 'N';
8952
8953 l_bflow_applied_to_amt_idx := NULL; -- 5132302
8954 l_bflow_applied_to_amt := NULL; -- 5132302
8955 l_entered_amt_idx := NULL; -- 4262811
8956 l_accted_amt_idx := NULL; -- 4262811
8957 l_acc_rev_flag := NULL; -- 4262811
8958 l_accrual_line_num := NULL; -- 4262811
8959 l_tmp_amt := NULL; -- 4262811
8960 --
8961
8962 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8963 l_balance_type_code <> 'B' THEN
8964 IF NVL(p_source_22,'
8965 ') = 'PAYMENT'
8966 THEN
8967
8968 --
8969 XLA_AE_LINES_PKG.SetNewLine;
8970
8971 p_balance_type_code := l_balance_type_code;
8972 -- set the flag so later we will know whether the gain loss line needs to be created
8973
8974 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8975 p_actual_flag :='A';
8976 END IF;
8977
8978 --
8979 -- bulk performance
8980 --
8984 -- set accounting line options
8981 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8982 p_header_num => 0); -- 4262811
8983 --
8985 --
8986 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8987 p_natural_side_code => 'D'
8988 , p_gain_or_loss_flag => 'N'
8989 , p_gl_transfer_mode_code => 'D'
8990 , p_acct_entry_type_code => 'A'
8991 , p_switch_side_flag => 'Y'
8992 , p_merge_duplicate_code => 'N'
8993 );
8994 --
8995 l_acc_rev_natural_side_code := 'C'; -- 4262811
8996 --
8997 --
8998 -- set accounting line type info
8999 --
9000 xla_ae_lines_pkg.SetAcctLineType
9001 (p_component_type => l_component_type
9002 ,p_event_type_code => l_event_type_code
9003 ,p_line_definition_owner_code => l_line_definition_owner_code
9004 ,p_line_definition_code => l_line_definition_code
9005 ,p_accounting_line_code => l_component_code
9006 ,p_accounting_line_type_code => l_component_type_code
9007 ,p_accounting_line_appl_id => l_component_appl_id
9008 ,p_amb_context_code => l_amb_context_code
9009 ,p_entity_code => l_entity_code
9010 ,p_event_class_code => l_event_class_code);
9011 --
9012 -- set accounting class
9013 --
9014 xla_ae_lines_pkg.SetAcctClass(
9015 p_accounting_class_code => 'MISCELLANEOUS EXPENSE'
9016 , p_ae_header_id => l_ae_header_id
9017 );
9018
9019 --
9020 -- set rounding class
9021 --
9022 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9023 'CASH';
9024
9025 --
9026 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9027 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9028 --
9029 -- bulk performance
9030 --
9031 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9032
9033 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9034 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9035
9036 -- 4955764
9037 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9038 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9039
9040 -- 4458381 Public Sector Enh
9041
9042 --
9043 -- set accounting attributes for the line type
9044 --
9045 l_entered_amt_idx := 5;
9046 l_accted_amt_idx := NULL;
9047 l_bflow_applied_to_amt_idx := NULL; -- 5132302
9048 l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
9049 l_rec_acct_attrs.array_char_value(1) := p_source_9;
9050 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
9051 l_rec_acct_attrs.array_num_value(2) := to_char(p_source_10);
9052 l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
9053 l_rec_acct_attrs.array_char_value(3) := p_source_11;
9054 l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
9055 l_rec_acct_attrs.array_char_value(4) := p_source_12;
9056 l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
9057 l_rec_acct_attrs.array_num_value(5) := p_source_23;
9058 l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
9059 l_rec_acct_attrs.array_char_value(6) := p_source_13;
9060 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
9061 l_rec_acct_attrs.array_date_value(7) := p_source_14;
9062 l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
9063 l_rec_acct_attrs.array_num_value(8) := p_source_15;
9064 l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
9065 l_rec_acct_attrs.array_char_value(9) := p_source_16;
9066 l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
9067 l_rec_acct_attrs.array_num_value(10) := to_char(p_source_17);
9068 l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
9069 l_rec_acct_attrs.array_char_value(11) := p_source_18;
9070 l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
9071 l_rec_acct_attrs.array_char_value(12) := p_source_19;
9072
9073 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9074 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9075
9076 ---------------------------------------------------------------------------------------------------------------
9077 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9078 ---------------------------------------------------------------------------------------------------------------
9079 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9080
9081 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9082 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9083
9084 IF xla_accounting_cache_pkg.GetValueChar
9085 (p_source_code => 'LEDGER_CATEGORY_CODE'
9086 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9087 AND l_bflow_method_code = 'PRIOR_ENTRY'
9088 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9089 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9090 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9091 )
9092 THEN
9093 xla_ae_lines_pkg.BflowUpgEntry
9094 (p_business_method_code => l_bflow_method_code
9098 NULL;
9095 ,p_business_class_code => l_bflow_class_code
9096 ,p_balance_type => l_balance_type_code);
9097 ELSE
9099 -- No business flow processing for business flow method of NONE.
9100 END IF;
9101
9102 --
9103 -- call description
9104 --
9105
9106 xla_ae_lines_pkg.SetLineDescription(
9107 p_ae_header_id => l_ae_header_id
9108 ,p_description => Description_2 (
9109 p_application_id => p_application_id
9110 , p_ae_header_id => l_ae_header_id
9111 , p_source_2 => p_source_2
9112 )
9113 );
9114
9115
9116 --
9117 -- call ADRs
9118 -- Bug 4922099
9119 --
9120 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9121 (NVL(l_actual_upg_option, 'N') = 'O') OR
9122 (NVL(l_enc_upg_option, 'N') = 'O')
9123 )
9124 THEN
9125 NULL;
9126 --
9127 --
9128
9129 l_ccid := AcctDerRule_7(
9130 p_application_id => p_application_id
9131 , p_ae_header_id => l_ae_header_id
9132 , p_source_7 => p_source_7
9133 , x_transaction_coa_id => l_adr_transaction_coa_id
9134 , x_accounting_coa_id => l_adr_accounting_coa_id
9135 , x_value_type_code => l_adr_value_type_code
9136 , p_side => 'NA'
9137 );
9138
9139 xla_ae_lines_pkg.set_ccid(
9140 p_code_combination_id => l_ccid
9141 , p_value_type_code => l_adr_value_type_code
9142 , p_transaction_coa_id => l_adr_transaction_coa_id
9143 , p_accounting_coa_id => l_adr_accounting_coa_id
9144 , p_adr_code => 'CE_OFFSET'
9145 , p_adr_type_code => 'S'
9146 , p_component_type => l_component_type
9147 , p_component_code => l_component_code
9148 , p_component_type_code => l_component_type_code
9149 , p_component_appl_id => l_component_appl_id
9150 , p_amb_context_code => l_amb_context_code
9151 , p_side => 'NA'
9152 );
9153
9154
9155 --
9156 --
9157 END IF;
9158 --
9159 -- Bug 4922099
9160 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9161 (NVL(l_enc_upg_option, 'N') = 'O')
9162 ) AND
9163 (l_bflow_method_code = 'PRIOR_ENTRY')
9164 )
9165 THEN
9166 IF
9167 --
9168 1 = 2
9169 --
9170 THEN
9171 xla_accounting_err_pkg.build_message
9172 (p_appli_s_name => 'XLA'
9173 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9174 ,p_token_1 => 'LINE_NUMBER'
9175 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
9176 ,p_token_2 => 'LINE_TYPE_NAME'
9177 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
9178 l_component_type
9179 ,l_component_code
9180 ,l_component_type_code
9181 ,l_component_appl_id
9182 ,l_amb_context_code
9183 ,l_entity_code
9184 ,l_event_class_code
9185 )
9186 ,p_token_3 => 'OWNER'
9187 ,p_value_3 => xla_lookups_pkg.get_meaning(
9188 p_lookup_type => 'XLA_OWNER_TYPE'
9189 ,p_lookup_code => l_component_type_code
9190 )
9191 ,p_token_4 => 'PRODUCT_NAME'
9192 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9193 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9194 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9195 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9196 ,p_ae_header_id => NULL
9197 );
9198
9199 IF (C_LEVEL_ERROR>= g_log_level) THEN
9200 trace
9201 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9202 ,p_level => C_LEVEL_ERROR
9203 ,p_module => l_log_module);
9204 END IF;
9205 END IF;
9206 END IF;
9207 --
9208 --
9209 ------------------------------------------------------------------------------------------------
9210 -- 4219869 Business Flow
9211 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9212 -- Prior Entry. Currently, the following code is always generated.
9213 ------------------------------------------------------------------------------------------------
9214 XLA_AE_LINES_PKG.ValidateCurrentLine;
9215
9216 ------------------------------------------------------------------------------------
9217 -- 4219869 Business Flow
9221
9218 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9219 ------------------------------------------------------------------------------------
9220 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9222 ----------------------------------------------------------------------------------
9223 -- 4219869 Business Flow
9224 -- Update journal entry status -- Need to generate this within IF <condition>
9225 ----------------------------------------------------------------------------------
9226 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9227 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9228 ,p_balance_type_code => l_balance_type_code
9229 );
9230
9231 -------------------------------------------------------------------------------------------
9232 -- 4262811 - Generate the Accrual Reversal lines
9233 -------------------------------------------------------------------------------------------
9234 BEGIN
9235 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9236 (g_array_event(p_event_id).array_value_num('header_index'));
9237 IF l_acc_rev_flag IS NULL THEN
9238 l_acc_rev_flag := 'N';
9239 END IF;
9240 EXCEPTION
9241 WHEN OTHERS THEN
9242 l_acc_rev_flag := 'N';
9243 END;
9244 --
9245 IF (l_acc_rev_flag = 'Y') THEN
9246
9247 -- 4645092 ------------------------------------------------------------------------------
9248 -- To allow MPA report to determine if it should generate report process
9249 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9250 ------------------------------------------------------------------------------------------
9251
9252 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9253 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9254
9255 --
9256 -- Update the line information that should be overwritten
9257 --
9258 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9259 p_header_num => 1);
9260 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
9261
9262 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9263
9264 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
9265 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9266 END IF;
9267
9268 --
9269 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9270 --
9271 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9272 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
9273 ELSE
9274 ---------------------------------------------------------------------------------------------------
9275 -- 4262811a Switch Sign
9276 ---------------------------------------------------------------------------------------------------
9277 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
9278 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9279 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9280 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9281 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9282 -- 5132302
9283 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9284 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9285
9286 END IF;
9287
9288 -- 4955764
9289 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9290 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9291
9292
9293 XLA_AE_LINES_PKG.ValidateCurrentLine;
9294 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9295
9296 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9297 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9298 ,p_balance_type_code => l_balance_type_code);
9299
9300 END IF;
9301
9302 -----------------------------------------------------------------------------------------
9303 -- 4262811 Multiperiod Accounting
9304 -----------------------------------------------------------------------------------------
9305 -- No MPA option is assigned.
9306
9307
9308 END IF;
9309 END IF;
9310 --
9311
9312 --
9313 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9314 trace
9315 (p_msg => 'END of AcctLineType_23'
9316 ,p_level => C_LEVEL_PROCEDURE
9317 ,p_module => l_log_module);
9318 END IF;
9319 --
9320 EXCEPTION
9321 WHEN xla_exceptions_pkg.application_exception THEN
9322 RAISE;
9323 WHEN OTHERS THEN
9324 xla_exceptions_pkg.raise_message
9325 (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_23');
9326 END AcctLineType_23;
9327 --
9328
9329 ---------------------------------------
9330 --
9331 -- PRIVATE FUNCTION
9332 -- AcctLineType_24
9333 --
9334 ---------------------------------------
9335 PROCEDURE AcctLineType_24 (
9336 p_application_id IN NUMBER
9337 ,p_event_id IN NUMBER
9338 ,p_calculate_acctd_flag IN VARCHAR2
9339 ,p_calculate_g_l_flag IN VARCHAR2
9340 ,p_actual_flag IN OUT VARCHAR2
9341 ,p_balance_type_code OUT VARCHAR2
9342 ,p_gain_or_loss_ref OUT VARCHAR2
9343
9344 --Cashflow Description
9345 , p_source_2 IN VARCHAR2
9346 --Cashflow Bank Account Cash Account
9347 , p_source_5 IN NUMBER
9348 --Reversal Indicator
9349 , p_source_9 IN VARCHAR2
9350 --Cashflow Number
9351 , p_source_10 IN NUMBER
9355 , p_source_12 IN VARCHAR2
9352 --Cashflow History Identifier
9353 , p_source_11 IN VARCHAR2
9354 --Distribution Link Type
9356 --Cashflow Bank Account Currency
9357 , p_source_13 IN VARCHAR2
9358 --Cashflow Cleared Exchange Rate Date
9359 , p_source_14 IN DATE
9360 --Cashflow Cleared Exchange Rate
9361 , p_source_15 IN NUMBER
9362 --Cashflow Cleared Exchange Rate Type
9363 , p_source_16 IN VARCHAR2
9364 --Reversal First Distribution Identifier
9365 , p_source_17 IN NUMBER
9366 --Reversal Second Distribution Identifier
9367 , p_source_18 IN VARCHAR2
9368 --Reversal Distribution Link Type
9369 , p_source_19 IN VARCHAR2
9370 --Cashflow Direction
9371 , p_source_22 IN VARCHAR2
9372 , p_source_22_meaning IN VARCHAR2
9373 --Cashflow Cleared Amount
9374 , p_source_23 IN NUMBER
9375 )
9376 IS
9377
9378 l_component_type VARCHAR2(80);
9379 l_component_code VARCHAR2(30);
9380 l_component_type_code VARCHAR2(1);
9381 l_component_appl_id INTEGER;
9382 l_amb_context_code VARCHAR2(30);
9383 l_entity_code VARCHAR2(30);
9384 l_event_class_code VARCHAR2(30);
9385 l_ae_header_id NUMBER;
9386 l_event_type_code VARCHAR2(30);
9387 l_line_definition_code VARCHAR2(30);
9388 l_line_definition_owner_code VARCHAR2(1);
9389 --
9390 -- adr variables
9391 l_segment VARCHAR2(30);
9392 l_ccid NUMBER;
9393 l_adr_transaction_coa_id NUMBER;
9394 l_adr_accounting_coa_id NUMBER;
9395 l_adr_flexfield_segment_code VARCHAR2(30);
9396 l_adr_flex_value_set_id NUMBER;
9397 l_adr_value_type_code VARCHAR2(30);
9398 l_adr_value_combination_id NUMBER;
9399 l_adr_value_segment_code VARCHAR2(30);
9400
9401 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
9402 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
9403 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
9404 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
9405
9406 -- 4262811 Variables ------------------------------------------------------------------------------------------
9407 l_entered_amt_idx NUMBER;
9408 l_accted_amt_idx NUMBER;
9409 l_acc_rev_flag VARCHAR2(1);
9410 l_accrual_line_num NUMBER;
9411 l_tmp_amt NUMBER;
9412 l_acc_rev_natural_side_code VARCHAR2(1);
9413
9414 l_num_entries NUMBER;
9415 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
9416 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
9417 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
9418 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
9419 l_recog_line_1 NUMBER;
9420 l_recog_line_2 NUMBER;
9421
9422 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
9423 l_bflow_applied_to_amt NUMBER; -- 5132302
9424 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
9425
9426 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9427
9428 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
9429 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
9430
9431 ---------------------------------------------------------------------------------------------------------------
9432
9433
9434 --
9435 -- bulk performance
9436 --
9437 l_balance_type_code VARCHAR2(1);
9438 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
9439 l_log_module VARCHAR2(240);
9440
9441 --
9442 -- Upgrade strategy
9443 --
9444 l_actual_upg_option VARCHAR2(1);
9445 l_enc_upg_option VARCHAR2(1);
9446
9447 --
9448 BEGIN
9449 --
9450 IF g_log_enabled THEN
9451 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_24';
9452 END IF;
9453 --
9454 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9455
9456 trace
9457 (p_msg => 'BEGIN of AcctLineType_24'
9458 ,p_level => C_LEVEL_PROCEDURE
9459 ,p_module => l_log_module);
9460
9461 END IF;
9462 --
9463 l_component_type := 'AMB_JLT';
9464 l_component_code := 'BSL_RECEIPT_CASH_DR';
9465 l_component_type_code := 'S';
9466 l_component_appl_id := 260;
9467 l_amb_context_code := 'DEFAULT';
9468 l_entity_code := 'CE_CASHFLOWS';
9469 l_event_class_code := 'STMT_CLASS';
9470 l_event_type_code := 'STMT_CLASS_ALL';
9471 l_line_definition_owner_code := 'S';
9472 l_line_definition_code := 'BSL_LINES_DEFN';
9473 --
9474 l_balance_type_code := 'A';
9475 l_segment := NULL;
9476 l_ccid := NULL;
9477 l_adr_transaction_coa_id := NULL;
9478 l_adr_accounting_coa_id := NULL;
9479 l_adr_flexfield_segment_code := NULL;
9480 l_adr_flex_value_set_id := NULL;
9481 l_adr_value_type_code := NULL;
9482 l_adr_value_combination_id := NULL;
9483 l_adr_value_segment_code := NULL;
9484
9485 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
9486 l_bflow_class_code := ''; -- 4219869 Business Flow
9487 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
9488 l_budgetary_control_flag := 'N';
9489
9490 l_bflow_applied_to_amt_idx := NULL; -- 5132302
9491 l_bflow_applied_to_amt := NULL; -- 5132302
9492 l_entered_amt_idx := NULL; -- 4262811
9496 l_tmp_amt := NULL; -- 4262811
9493 l_accted_amt_idx := NULL; -- 4262811
9494 l_acc_rev_flag := NULL; -- 4262811
9495 l_accrual_line_num := NULL; -- 4262811
9497 --
9498
9499 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9500 l_balance_type_code <> 'B' THEN
9501 IF NVL(p_source_22,'
9502 ') = 'RECEIPT'
9503 THEN
9504
9505 --
9506 XLA_AE_LINES_PKG.SetNewLine;
9507
9508 p_balance_type_code := l_balance_type_code;
9509 -- set the flag so later we will know whether the gain loss line needs to be created
9510
9511 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9512 p_actual_flag :='A';
9513 END IF;
9514
9515 --
9516 -- bulk performance
9517 --
9518 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9519 p_header_num => 0); -- 4262811
9520 --
9521 -- set accounting line options
9522 --
9523 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9524 p_natural_side_code => 'D'
9525 , p_gain_or_loss_flag => 'N'
9526 , p_gl_transfer_mode_code => 'D'
9527 , p_acct_entry_type_code => 'A'
9528 , p_switch_side_flag => 'Y'
9529 , p_merge_duplicate_code => 'N'
9530 );
9531 --
9532 l_acc_rev_natural_side_code := 'C'; -- 4262811
9533 --
9534 --
9535 -- set accounting line type info
9536 --
9537 xla_ae_lines_pkg.SetAcctLineType
9538 (p_component_type => l_component_type
9539 ,p_event_type_code => l_event_type_code
9540 ,p_line_definition_owner_code => l_line_definition_owner_code
9541 ,p_line_definition_code => l_line_definition_code
9542 ,p_accounting_line_code => l_component_code
9543 ,p_accounting_line_type_code => l_component_type_code
9544 ,p_accounting_line_appl_id => l_component_appl_id
9545 ,p_amb_context_code => l_amb_context_code
9546 ,p_entity_code => l_entity_code
9547 ,p_event_class_code => l_event_class_code);
9548 --
9549 -- set accounting class
9550 --
9551 xla_ae_lines_pkg.SetAcctClass(
9552 p_accounting_class_code => 'CASH'
9553 , p_ae_header_id => l_ae_header_id
9554 );
9555
9556 --
9557 -- set rounding class
9558 --
9559 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9560 'CASH';
9561
9562 --
9563 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9564 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9565 --
9566 -- bulk performance
9567 --
9568 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9569
9570 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9571 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9572
9573 -- 4955764
9574 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9575 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9576
9577 -- 4458381 Public Sector Enh
9578
9579 --
9580 -- set accounting attributes for the line type
9581 --
9582 l_entered_amt_idx := 5;
9583 l_accted_amt_idx := NULL;
9584 l_bflow_applied_to_amt_idx := NULL; -- 5132302
9585 l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
9586 l_rec_acct_attrs.array_char_value(1) := p_source_9;
9587 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
9588 l_rec_acct_attrs.array_num_value(2) := to_char(p_source_10);
9589 l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
9590 l_rec_acct_attrs.array_char_value(3) := p_source_11;
9591 l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
9592 l_rec_acct_attrs.array_char_value(4) := p_source_12;
9593 l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
9594 l_rec_acct_attrs.array_num_value(5) := p_source_23;
9595 l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
9596 l_rec_acct_attrs.array_char_value(6) := p_source_13;
9597 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
9598 l_rec_acct_attrs.array_date_value(7) := p_source_14;
9599 l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
9600 l_rec_acct_attrs.array_num_value(8) := p_source_15;
9601 l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
9602 l_rec_acct_attrs.array_char_value(9) := p_source_16;
9603 l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
9604 l_rec_acct_attrs.array_num_value(10) := to_char(p_source_17);
9605 l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
9606 l_rec_acct_attrs.array_char_value(11) := p_source_18;
9607 l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
9608 l_rec_acct_attrs.array_char_value(12) := p_source_19;
9609
9610 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9611 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9612
9613 ---------------------------------------------------------------------------------------------------------------
9614 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9615 ---------------------------------------------------------------------------------------------------------------
9619 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9616 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9617
9618 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9620
9621 IF xla_accounting_cache_pkg.GetValueChar
9622 (p_source_code => 'LEDGER_CATEGORY_CODE'
9623 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9624 AND l_bflow_method_code = 'PRIOR_ENTRY'
9625 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9626 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9627 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9628 )
9629 THEN
9630 xla_ae_lines_pkg.BflowUpgEntry
9631 (p_business_method_code => l_bflow_method_code
9632 ,p_business_class_code => l_bflow_class_code
9633 ,p_balance_type => l_balance_type_code);
9634 ELSE
9635 NULL;
9636 -- No business flow processing for business flow method of NONE.
9637 END IF;
9638
9639 --
9640 -- call description
9641 --
9642
9643 xla_ae_lines_pkg.SetLineDescription(
9644 p_ae_header_id => l_ae_header_id
9645 ,p_description => Description_2 (
9646 p_application_id => p_application_id
9647 , p_ae_header_id => l_ae_header_id
9648 , p_source_2 => p_source_2
9649 )
9650 );
9651
9652
9653 --
9654 -- call ADRs
9655 -- Bug 4922099
9656 --
9657 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9658 (NVL(l_actual_upg_option, 'N') = 'O') OR
9659 (NVL(l_enc_upg_option, 'N') = 'O')
9660 )
9661 THEN
9662 NULL;
9663 --
9664 --
9665
9666 l_ccid := AcctDerRule_5(
9667 p_application_id => p_application_id
9668 , p_ae_header_id => l_ae_header_id
9669 , p_source_5 => p_source_5
9670 , x_transaction_coa_id => l_adr_transaction_coa_id
9671 , x_accounting_coa_id => l_adr_accounting_coa_id
9672 , x_value_type_code => l_adr_value_type_code
9673 , p_side => 'NA'
9674 );
9675
9676 xla_ae_lines_pkg.set_ccid(
9677 p_code_combination_id => l_ccid
9678 , p_value_type_code => l_adr_value_type_code
9679 , p_transaction_coa_id => l_adr_transaction_coa_id
9680 , p_accounting_coa_id => l_adr_accounting_coa_id
9681 , p_adr_code => 'CE_CASH'
9682 , p_adr_type_code => 'S'
9683 , p_component_type => l_component_type
9684 , p_component_code => l_component_code
9685 , p_component_type_code => l_component_type_code
9686 , p_component_appl_id => l_component_appl_id
9687 , p_amb_context_code => l_amb_context_code
9688 , p_side => 'NA'
9689 );
9690
9691
9692 --
9693 --
9694 END IF;
9695 --
9696 -- Bug 4922099
9697 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9698 (NVL(l_enc_upg_option, 'N') = 'O')
9699 ) AND
9700 (l_bflow_method_code = 'PRIOR_ENTRY')
9701 )
9702 THEN
9703 IF
9704 --
9705 1 = 2
9706 --
9707 THEN
9708 xla_accounting_err_pkg.build_message
9709 (p_appli_s_name => 'XLA'
9710 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9711 ,p_token_1 => 'LINE_NUMBER'
9712 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
9713 ,p_token_2 => 'LINE_TYPE_NAME'
9714 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
9715 l_component_type
9716 ,l_component_code
9717 ,l_component_type_code
9718 ,l_component_appl_id
9719 ,l_amb_context_code
9720 ,l_entity_code
9721 ,l_event_class_code
9722 )
9723 ,p_token_3 => 'OWNER'
9724 ,p_value_3 => xla_lookups_pkg.get_meaning(
9725 p_lookup_type => 'XLA_OWNER_TYPE'
9726 ,p_lookup_code => l_component_type_code
9727 )
9728 ,p_token_4 => 'PRODUCT_NAME'
9729 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9730 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9731 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9732 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9733 ,p_ae_header_id => NULL
9734 );
9735
9739 ,p_level => C_LEVEL_ERROR
9736 IF (C_LEVEL_ERROR>= g_log_level) THEN
9737 trace
9738 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9740 ,p_module => l_log_module);
9741 END IF;
9742 END IF;
9743 END IF;
9744 --
9745 --
9746 ------------------------------------------------------------------------------------------------
9747 -- 4219869 Business Flow
9748 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9749 -- Prior Entry. Currently, the following code is always generated.
9750 ------------------------------------------------------------------------------------------------
9751 XLA_AE_LINES_PKG.ValidateCurrentLine;
9752
9753 ------------------------------------------------------------------------------------
9754 -- 4219869 Business Flow
9755 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9756 ------------------------------------------------------------------------------------
9757 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9758
9759 ----------------------------------------------------------------------------------
9760 -- 4219869 Business Flow
9761 -- Update journal entry status -- Need to generate this within IF <condition>
9762 ----------------------------------------------------------------------------------
9763 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9764 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9765 ,p_balance_type_code => l_balance_type_code
9766 );
9767
9768 -------------------------------------------------------------------------------------------
9769 -- 4262811 - Generate the Accrual Reversal lines
9770 -------------------------------------------------------------------------------------------
9771 BEGIN
9772 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9773 (g_array_event(p_event_id).array_value_num('header_index'));
9774 IF l_acc_rev_flag IS NULL THEN
9775 l_acc_rev_flag := 'N';
9776 END IF;
9777 EXCEPTION
9778 WHEN OTHERS THEN
9779 l_acc_rev_flag := 'N';
9780 END;
9781 --
9782 IF (l_acc_rev_flag = 'Y') THEN
9783
9784 -- 4645092 ------------------------------------------------------------------------------
9785 -- To allow MPA report to determine if it should generate report process
9786 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9787 ------------------------------------------------------------------------------------------
9788
9789 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9790 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9791
9792 --
9793 -- Update the line information that should be overwritten
9794 --
9795 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9796 p_header_num => 1);
9797 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
9798
9799 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9800
9801 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
9802 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9803 END IF;
9804
9805 --
9806 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9807 --
9808 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9809 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
9810 ELSE
9811 ---------------------------------------------------------------------------------------------------
9812 -- 4262811a Switch Sign
9813 ---------------------------------------------------------------------------------------------------
9814 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
9815 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9816 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9817 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9818 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9819 -- 5132302
9820 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9821 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9822
9823 END IF;
9824
9825 -- 4955764
9826 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9827 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9828
9829
9830 XLA_AE_LINES_PKG.ValidateCurrentLine;
9831 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9832
9833 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9834 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9835 ,p_balance_type_code => l_balance_type_code);
9836
9837 END IF;
9838
9839 -----------------------------------------------------------------------------------------
9840 -- 4262811 Multiperiod Accounting
9841 -----------------------------------------------------------------------------------------
9842 -- No MPA option is assigned.
9843
9844
9845 END IF;
9846 END IF;
9847 --
9848
9849 --
9850 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9851 trace
9855 END IF;
9852 (p_msg => 'END of AcctLineType_24'
9853 ,p_level => C_LEVEL_PROCEDURE
9854 ,p_module => l_log_module);
9856 --
9857 EXCEPTION
9858 WHEN xla_exceptions_pkg.application_exception THEN
9859 RAISE;
9860 WHEN OTHERS THEN
9861 xla_exceptions_pkg.raise_message
9862 (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_24');
9863 END AcctLineType_24;
9864 --
9865
9866 ---------------------------------------
9867 --
9868 -- PRIVATE FUNCTION
9869 -- AcctLineType_25
9870 --
9871 ---------------------------------------
9872 PROCEDURE AcctLineType_25 (
9873 p_application_id IN NUMBER
9874 ,p_event_id IN NUMBER
9875 ,p_calculate_acctd_flag IN VARCHAR2
9876 ,p_calculate_g_l_flag IN VARCHAR2
9877 ,p_actual_flag IN OUT VARCHAR2
9878 ,p_balance_type_code OUT VARCHAR2
9879 ,p_gain_or_loss_ref OUT VARCHAR2
9880
9881 --Cashflow Description
9882 , p_source_2 IN VARCHAR2
9883 --Cashflow Offset Account
9884 , p_source_7 IN NUMBER
9885 --Reversal Indicator
9886 , p_source_9 IN VARCHAR2
9887 --Cashflow Number
9888 , p_source_10 IN NUMBER
9889 --Cashflow History Identifier
9890 , p_source_11 IN VARCHAR2
9891 --Distribution Link Type
9892 , p_source_12 IN VARCHAR2
9893 --Cashflow Bank Account Currency
9894 , p_source_13 IN VARCHAR2
9895 --Cashflow Cleared Exchange Rate Date
9896 , p_source_14 IN DATE
9897 --Cashflow Cleared Exchange Rate
9898 , p_source_15 IN NUMBER
9899 --Cashflow Cleared Exchange Rate Type
9900 , p_source_16 IN VARCHAR2
9901 --Reversal First Distribution Identifier
9902 , p_source_17 IN NUMBER
9903 --Reversal Second Distribution Identifier
9904 , p_source_18 IN VARCHAR2
9905 --Reversal Distribution Link Type
9906 , p_source_19 IN VARCHAR2
9907 --Cashflow Direction
9908 , p_source_22 IN VARCHAR2
9909 , p_source_22_meaning IN VARCHAR2
9910 --Cashflow Cleared Amount
9911 , p_source_23 IN NUMBER
9912 )
9913 IS
9914
9915 l_component_type VARCHAR2(80);
9916 l_component_code VARCHAR2(30);
9917 l_component_type_code VARCHAR2(1);
9918 l_component_appl_id INTEGER;
9919 l_amb_context_code VARCHAR2(30);
9920 l_entity_code VARCHAR2(30);
9921 l_event_class_code VARCHAR2(30);
9922 l_ae_header_id NUMBER;
9923 l_event_type_code VARCHAR2(30);
9924 l_line_definition_code VARCHAR2(30);
9925 l_line_definition_owner_code VARCHAR2(1);
9926 --
9927 -- adr variables
9928 l_segment VARCHAR2(30);
9929 l_ccid NUMBER;
9930 l_adr_transaction_coa_id NUMBER;
9931 l_adr_accounting_coa_id NUMBER;
9932 l_adr_flexfield_segment_code VARCHAR2(30);
9933 l_adr_flex_value_set_id NUMBER;
9934 l_adr_value_type_code VARCHAR2(30);
9935 l_adr_value_combination_id NUMBER;
9936 l_adr_value_segment_code VARCHAR2(30);
9937
9938 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
9939 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
9940 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
9941 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
9942
9943 -- 4262811 Variables ------------------------------------------------------------------------------------------
9944 l_entered_amt_idx NUMBER;
9945 l_accted_amt_idx NUMBER;
9946 l_acc_rev_flag VARCHAR2(1);
9947 l_accrual_line_num NUMBER;
9948 l_tmp_amt NUMBER;
9949 l_acc_rev_natural_side_code VARCHAR2(1);
9950
9951 l_num_entries NUMBER;
9952 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
9953 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
9954 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
9955 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
9956 l_recog_line_1 NUMBER;
9957 l_recog_line_2 NUMBER;
9958
9959 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
9960 l_bflow_applied_to_amt NUMBER; -- 5132302
9961 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
9962
9963 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9964
9965 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
9966 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
9967
9968 ---------------------------------------------------------------------------------------------------------------
9969
9970
9971 --
9972 -- bulk performance
9973 --
9974 l_balance_type_code VARCHAR2(1);
9975 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
9976 l_log_module VARCHAR2(240);
9977
9978 --
9979 -- Upgrade strategy
9980 --
9981 l_actual_upg_option VARCHAR2(1);
9982 l_enc_upg_option VARCHAR2(1);
9983
9984 --
9985 BEGIN
9986 --
9987 IF g_log_enabled THEN
9988 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_25';
9989 END IF;
9990 --
9991 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9992
9993 trace
9994 (p_msg => 'BEGIN of AcctLineType_25'
9995 ,p_level => C_LEVEL_PROCEDURE
9996 ,p_module => l_log_module);
9997
9998 END IF;
9999 --
10000 l_component_type := 'AMB_JLT';
10004 l_amb_context_code := 'DEFAULT';
10001 l_component_code := 'BSL_RECEIPT_OFFSET_CR';
10002 l_component_type_code := 'S';
10003 l_component_appl_id := 260;
10005 l_entity_code := 'CE_CASHFLOWS';
10006 l_event_class_code := 'STMT_CLASS';
10007 l_event_type_code := 'STMT_CLASS_ALL';
10008 l_line_definition_owner_code := 'S';
10009 l_line_definition_code := 'BSL_LINES_DEFN';
10010 --
10011 l_balance_type_code := 'A';
10012 l_segment := NULL;
10013 l_ccid := NULL;
10014 l_adr_transaction_coa_id := NULL;
10015 l_adr_accounting_coa_id := NULL;
10016 l_adr_flexfield_segment_code := NULL;
10017 l_adr_flex_value_set_id := NULL;
10018 l_adr_value_type_code := NULL;
10019 l_adr_value_combination_id := NULL;
10020 l_adr_value_segment_code := NULL;
10021
10022 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
10023 l_bflow_class_code := ''; -- 4219869 Business Flow
10024 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
10025 l_budgetary_control_flag := 'N';
10026
10027 l_bflow_applied_to_amt_idx := NULL; -- 5132302
10028 l_bflow_applied_to_amt := NULL; -- 5132302
10029 l_entered_amt_idx := NULL; -- 4262811
10030 l_accted_amt_idx := NULL; -- 4262811
10031 l_acc_rev_flag := NULL; -- 4262811
10032 l_accrual_line_num := NULL; -- 4262811
10033 l_tmp_amt := NULL; -- 4262811
10034 --
10035
10036 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10037 l_balance_type_code <> 'B' THEN
10038 IF NVL(p_source_22,'
10039 ') = 'RECEIPT'
10040 THEN
10041
10042 --
10043 XLA_AE_LINES_PKG.SetNewLine;
10044
10045 p_balance_type_code := l_balance_type_code;
10046 -- set the flag so later we will know whether the gain loss line needs to be created
10047
10048 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
10049 p_actual_flag :='A';
10050 END IF;
10051
10052 --
10053 -- bulk performance
10054 --
10055 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
10056 p_header_num => 0); -- 4262811
10057 --
10058 -- set accounting line options
10059 --
10060 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
10061 p_natural_side_code => 'C'
10062 , p_gain_or_loss_flag => 'N'
10063 , p_gl_transfer_mode_code => 'D'
10064 , p_acct_entry_type_code => 'A'
10065 , p_switch_side_flag => 'Y'
10066 , p_merge_duplicate_code => 'N'
10067 );
10068 --
10069 l_acc_rev_natural_side_code := 'D'; -- 4262811
10070 --
10071 --
10072 -- set accounting line type info
10073 --
10074 xla_ae_lines_pkg.SetAcctLineType
10075 (p_component_type => l_component_type
10076 ,p_event_type_code => l_event_type_code
10077 ,p_line_definition_owner_code => l_line_definition_owner_code
10078 ,p_line_definition_code => l_line_definition_code
10079 ,p_accounting_line_code => l_component_code
10080 ,p_accounting_line_type_code => l_component_type_code
10081 ,p_accounting_line_appl_id => l_component_appl_id
10082 ,p_amb_context_code => l_amb_context_code
10083 ,p_entity_code => l_entity_code
10084 ,p_event_class_code => l_event_class_code);
10085 --
10086 -- set accounting class
10087 --
10088 xla_ae_lines_pkg.SetAcctClass(
10089 p_accounting_class_code => 'MISC_CASH'
10090 , p_ae_header_id => l_ae_header_id
10091 );
10092
10093 --
10094 -- set rounding class
10095 --
10096 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
10097 'CASH';
10098
10099 --
10100 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
10101 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
10102 --
10103 -- bulk performance
10104 --
10105 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
10106
10107 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
10108 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10109
10110 -- 4955764
10111 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10112 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
10113
10114 -- 4458381 Public Sector Enh
10115
10116 --
10117 -- set accounting attributes for the line type
10118 --
10119 l_entered_amt_idx := 5;
10120 l_accted_amt_idx := NULL;
10121 l_bflow_applied_to_amt_idx := NULL; -- 5132302
10122 l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
10123 l_rec_acct_attrs.array_char_value(1) := p_source_9;
10124 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
10125 l_rec_acct_attrs.array_num_value(2) := to_char(p_source_10);
10126 l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
10127 l_rec_acct_attrs.array_char_value(3) := p_source_11;
10128 l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
10129 l_rec_acct_attrs.array_char_value(4) := p_source_12;
10130 l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
10131 l_rec_acct_attrs.array_num_value(5) := p_source_23;
10135 l_rec_acct_attrs.array_date_value(7) := p_source_14;
10132 l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
10133 l_rec_acct_attrs.array_char_value(6) := p_source_13;
10134 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
10136 l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
10137 l_rec_acct_attrs.array_num_value(8) := p_source_15;
10138 l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
10139 l_rec_acct_attrs.array_char_value(9) := p_source_16;
10140 l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
10141 l_rec_acct_attrs.array_num_value(10) := to_char(p_source_17);
10142 l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
10143 l_rec_acct_attrs.array_char_value(11) := p_source_18;
10144 l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
10145 l_rec_acct_attrs.array_char_value(12) := p_source_19;
10146
10147 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10148 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10149
10150 ---------------------------------------------------------------------------------------------------------------
10151 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10152 ---------------------------------------------------------------------------------------------------------------
10153 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10154
10155 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10156 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10157
10158 IF xla_accounting_cache_pkg.GetValueChar
10159 (p_source_code => 'LEDGER_CATEGORY_CODE'
10160 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10161 AND l_bflow_method_code = 'PRIOR_ENTRY'
10162 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10163 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10164 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10165 )
10166 THEN
10167 xla_ae_lines_pkg.BflowUpgEntry
10168 (p_business_method_code => l_bflow_method_code
10169 ,p_business_class_code => l_bflow_class_code
10170 ,p_balance_type => l_balance_type_code);
10171 ELSE
10172 NULL;
10173 -- No business flow processing for business flow method of NONE.
10174 END IF;
10175
10176 --
10177 -- call description
10178 --
10179
10180 xla_ae_lines_pkg.SetLineDescription(
10181 p_ae_header_id => l_ae_header_id
10182 ,p_description => Description_2 (
10183 p_application_id => p_application_id
10184 , p_ae_header_id => l_ae_header_id
10185 , p_source_2 => p_source_2
10186 )
10187 );
10188
10189
10190 --
10191 -- call ADRs
10192 -- Bug 4922099
10193 --
10194 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10195 (NVL(l_actual_upg_option, 'N') = 'O') OR
10196 (NVL(l_enc_upg_option, 'N') = 'O')
10197 )
10198 THEN
10199 NULL;
10200 --
10201 --
10202
10203 l_ccid := AcctDerRule_7(
10204 p_application_id => p_application_id
10205 , p_ae_header_id => l_ae_header_id
10206 , p_source_7 => p_source_7
10207 , x_transaction_coa_id => l_adr_transaction_coa_id
10208 , x_accounting_coa_id => l_adr_accounting_coa_id
10209 , x_value_type_code => l_adr_value_type_code
10210 , p_side => 'NA'
10211 );
10212
10213 xla_ae_lines_pkg.set_ccid(
10214 p_code_combination_id => l_ccid
10215 , p_value_type_code => l_adr_value_type_code
10216 , p_transaction_coa_id => l_adr_transaction_coa_id
10217 , p_accounting_coa_id => l_adr_accounting_coa_id
10218 , p_adr_code => 'CE_OFFSET'
10219 , p_adr_type_code => 'S'
10220 , p_component_type => l_component_type
10221 , p_component_code => l_component_code
10222 , p_component_type_code => l_component_type_code
10223 , p_component_appl_id => l_component_appl_id
10224 , p_amb_context_code => l_amb_context_code
10225 , p_side => 'NA'
10226 );
10227
10228
10229 --
10230 --
10231 END IF;
10232 --
10233 -- Bug 4922099
10234 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10235 (NVL(l_enc_upg_option, 'N') = 'O')
10236 ) AND
10237 (l_bflow_method_code = 'PRIOR_ENTRY')
10238 )
10239 THEN
10240 IF
10241 --
10242 1 = 2
10243 --
10244 THEN
10245 xla_accounting_err_pkg.build_message
10246 (p_appli_s_name => 'XLA'
10247 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10248 ,p_token_1 => 'LINE_NUMBER'
10249 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
10250 ,p_token_2 => 'LINE_TYPE_NAME'
10251 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
10252 l_component_type
10253 ,l_component_code
10254 ,l_component_type_code
10258 ,l_event_class_code
10255 ,l_component_appl_id
10256 ,l_amb_context_code
10257 ,l_entity_code
10259 )
10260 ,p_token_3 => 'OWNER'
10261 ,p_value_3 => xla_lookups_pkg.get_meaning(
10262 p_lookup_type => 'XLA_OWNER_TYPE'
10263 ,p_lookup_code => l_component_type_code
10264 )
10265 ,p_token_4 => 'PRODUCT_NAME'
10266 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10267 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10268 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10269 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10270 ,p_ae_header_id => NULL
10271 );
10272
10273 IF (C_LEVEL_ERROR>= g_log_level) THEN
10274 trace
10275 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10276 ,p_level => C_LEVEL_ERROR
10277 ,p_module => l_log_module);
10278 END IF;
10279 END IF;
10280 END IF;
10281 --
10282 --
10283 ------------------------------------------------------------------------------------------------
10284 -- 4219869 Business Flow
10285 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10286 -- Prior Entry. Currently, the following code is always generated.
10287 ------------------------------------------------------------------------------------------------
10288 XLA_AE_LINES_PKG.ValidateCurrentLine;
10289
10290 ------------------------------------------------------------------------------------
10291 -- 4219869 Business Flow
10292 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10293 ------------------------------------------------------------------------------------
10294 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10295
10296 ----------------------------------------------------------------------------------
10297 -- 4219869 Business Flow
10298 -- Update journal entry status -- Need to generate this within IF <condition>
10299 ----------------------------------------------------------------------------------
10300 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10301 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10302 ,p_balance_type_code => l_balance_type_code
10303 );
10304
10305 -------------------------------------------------------------------------------------------
10306 -- 4262811 - Generate the Accrual Reversal lines
10307 -------------------------------------------------------------------------------------------
10308 BEGIN
10309 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10310 (g_array_event(p_event_id).array_value_num('header_index'));
10311 IF l_acc_rev_flag IS NULL THEN
10312 l_acc_rev_flag := 'N';
10313 END IF;
10314 EXCEPTION
10315 WHEN OTHERS THEN
10316 l_acc_rev_flag := 'N';
10317 END;
10318 --
10319 IF (l_acc_rev_flag = 'Y') THEN
10320
10321 -- 4645092 ------------------------------------------------------------------------------
10322 -- To allow MPA report to determine if it should generate report process
10323 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10324 ------------------------------------------------------------------------------------------
10325
10326 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10327 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10328
10329 --
10330 -- Update the line information that should be overwritten
10331 --
10332 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10333 p_header_num => 1);
10334 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
10335
10336 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10337
10338 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
10339 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10340 END IF;
10341
10342 --
10343 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10344 --
10345 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10346 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
10347 ELSE
10348 ---------------------------------------------------------------------------------------------------
10349 -- 4262811a Switch Sign
10350 ---------------------------------------------------------------------------------------------------
10351 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
10352 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10356 -- 5132302
10353 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10354 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10355 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10357 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10358 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10359
10360 END IF;
10361
10362 -- 4955764
10363 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10364 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10365
10366
10367 XLA_AE_LINES_PKG.ValidateCurrentLine;
10368 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10369
10370 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10371 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10372 ,p_balance_type_code => l_balance_type_code);
10373
10374 END IF;
10375
10376 -----------------------------------------------------------------------------------------
10377 -- 4262811 Multiperiod Accounting
10378 -----------------------------------------------------------------------------------------
10379 -- No MPA option is assigned.
10380
10381
10382 END IF;
10383 END IF;
10384 --
10385
10386 --
10387 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10388 trace
10389 (p_msg => 'END of AcctLineType_25'
10390 ,p_level => C_LEVEL_PROCEDURE
10391 ,p_module => l_log_module);
10392 END IF;
10393 --
10394 EXCEPTION
10395 WHEN xla_exceptions_pkg.application_exception THEN
10396 RAISE;
10397 WHEN OTHERS THEN
10398 xla_exceptions_pkg.raise_message
10399 (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_25');
10400 END AcctLineType_25;
10401 --
10402
10403 ---------------------------------------
10404 --
10405 -- PRIVATE PROCEDURE
10406 -- insert_sources_26
10407 --
10408 ----------------------------------------
10409 --
10410 PROCEDURE insert_sources_26(
10411 p_target_ledger_id IN NUMBER
10412 , p_language IN VARCHAR2
10413 , p_sla_ledger_id IN NUMBER
10414 , p_pad_start_date IN DATE
10415 , p_pad_end_date IN DATE
10416 )
10417 IS
10418
10419 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'CE_BAT_CLEARED';
10420 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'BAT_CLASS';
10421 p_apps_owner VARCHAR2(30);
10422 l_log_module VARCHAR2(240);
10423 BEGIN
10424 IF g_log_enabled THEN
10425 l_log_module := C_DEFAULT_MODULE||'.insert_sources_26';
10426 END IF;
10427 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10428
10429 trace
10430 (p_msg => 'BEGIN of insert_sources_26'
10431 ,p_level => C_LEVEL_PROCEDURE
10432 ,p_module => l_log_module);
10433
10434 END IF;
10435
10436 -- select APPS owner
10437 SELECT oracle_username
10438 INTO p_apps_owner
10439 FROM fnd_oracle_userid
10440 WHERE read_only_flag = 'U'
10441 ;
10442
10443 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
10444 trace
10445 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
10446 ' - p_language = '||p_language||
10447 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
10448 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
10449 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
10450 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
10451 ,p_level => C_LEVEL_STATEMENT
10452 ,p_module => l_log_module);
10453 END IF;
10454
10455
10456 --
10457 INSERT INTO xla_diag_sources --hdr1
10458 (
10459 event_id
10460 , ledger_id
10461 , sla_ledger_id
10462 , description_language
10463 , object_name
10464 , object_type_code
10465 , line_number
10466 , source_application_id
10467 , source_type_code
10468 , source_code
10469 , source_value
10470 , source_meaning
10471 , created_by
10472 , creation_date
10473 , last_update_date
10474 , last_updated_by
10475 , last_update_login
10476 , program_update_date
10477 , program_application_id
10478 , program_id
10479 , request_id
10480 )
10481 SELECT
10482 event_id
10483 , p_target_ledger_id
10484 , p_sla_ledger_id
10485 , p_language
10486 , object_name
10487 , object_type_code
10488 , line_number
10489 , source_application_id
10490 , source_type_code
10491 , source_code
10492 , SUBSTR(source_value ,1,1996)
10493 , SUBSTR(source_meaning,1,200)
10494 , xla_environment_pkg.g_Usr_Id
10495 , TRUNC(SYSDATE)
10496 , TRUNC(SYSDATE)
10497 , xla_environment_pkg.g_Usr_Id
10498 , xla_environment_pkg.g_Login_Id
10499 , TRUNC(SYSDATE)
10500 , xla_environment_pkg.g_Prog_Appl_Id
10501 , xla_environment_pkg.g_Prog_Id
10502 , xla_environment_pkg.g_Req_Id
10503 FROM (
10504 SELECT xet.event_id event_id
10505 , 0 line_number
10506 , CASE r
10510 WHEN 4 THEN 'CE_XLA_EXT_HEADERS_V'
10507 WHEN 1 THEN 'CE_XLA_EXT_HEADERS_V'
10508 WHEN 2 THEN 'CE_XLA_EXT_HEADERS_V'
10509 WHEN 3 THEN 'CE_XLA_EXT_HEADERS_V'
10511 WHEN 5 THEN 'CE_XLA_EXT_HEADERS_V'
10512 WHEN 6 THEN 'CE_XLA_EXT_HEADERS_V'
10513 WHEN 7 THEN 'CE_XLA_EXT_HEADERS_V'
10514 WHEN 8 THEN 'CE_XLA_EXT_HEADERS_V'
10515 WHEN 9 THEN 'CE_XLA_EXT_HEADERS_V'
10516 WHEN 10 THEN 'CE_XLA_EXT_HEADERS_V'
10517 WHEN 11 THEN 'CE_XLA_EXT_HEADERS_V'
10518 WHEN 12 THEN 'CE_XLA_EXT_HEADERS_V'
10519 WHEN 13 THEN 'CE_XLA_EXT_HEADERS_V'
10520 WHEN 14 THEN 'CE_XLA_EXT_HEADERS_V'
10521 WHEN 15 THEN 'CE_XLA_EXT_HEADERS_V'
10522 WHEN 16 THEN 'CE_XLA_EXT_HEADERS_V'
10523 WHEN 17 THEN 'CE_XLA_EXT_HEADERS_V'
10524 WHEN 18 THEN 'CE_XLA_EXT_HEADERS_V'
10525 WHEN 19 THEN 'CE_XLA_EXT_HEADERS_V'
10526 WHEN 20 THEN 'CE_XLA_EXT_HEADERS_V'
10527 WHEN 21 THEN 'CE_XLA_EXT_HEADERS_V'
10528 WHEN 22 THEN 'CE_XLA_EXT_HEADERS_V'
10529 WHEN 23 THEN 'CE_XLA_EXT_HEADERS_V'
10530 WHEN 24 THEN 'CE_XLA_EXT_HEADERS_V'
10531 WHEN 25 THEN 'CE_XLA_EXT_HEADERS_V'
10532 WHEN 26 THEN 'CE_XLA_EXT_HEADERS_V'
10533 WHEN 27 THEN 'CE_XLA_EXT_HEADERS_V'
10534
10535 ELSE null
10536 END object_name
10537 , CASE r
10538 WHEN 1 THEN 'HEADER'
10539 WHEN 2 THEN 'HEADER'
10540 WHEN 3 THEN 'HEADER'
10541 WHEN 4 THEN 'HEADER'
10542 WHEN 5 THEN 'HEADER'
10543 WHEN 6 THEN 'HEADER'
10544 WHEN 7 THEN 'HEADER'
10545 WHEN 8 THEN 'HEADER'
10546 WHEN 9 THEN 'HEADER'
10547 WHEN 10 THEN 'HEADER'
10548 WHEN 11 THEN 'HEADER'
10549 WHEN 12 THEN 'HEADER'
10550 WHEN 13 THEN 'HEADER'
10551 WHEN 14 THEN 'HEADER'
10552 WHEN 15 THEN 'HEADER'
10553 WHEN 16 THEN 'HEADER'
10554 WHEN 17 THEN 'HEADER'
10555 WHEN 18 THEN 'HEADER'
10556 WHEN 19 THEN 'HEADER'
10557 WHEN 20 THEN 'HEADER'
10558 WHEN 21 THEN 'HEADER'
10559 WHEN 22 THEN 'HEADER'
10560 WHEN 23 THEN 'HEADER'
10561 WHEN 24 THEN 'HEADER'
10562 WHEN 25 THEN 'HEADER'
10563 WHEN 26 THEN 'HEADER'
10564 WHEN 27 THEN 'HEADER'
10565
10566 ELSE null
10567 END object_type_code
10568 , CASE r
10569 WHEN 1 THEN '260'
10570 WHEN 2 THEN '260'
10571 WHEN 3 THEN '260'
10572 WHEN 4 THEN '260'
10573 WHEN 5 THEN '260'
10574 WHEN 6 THEN '260'
10575 WHEN 7 THEN '260'
10576 WHEN 8 THEN '260'
10577 WHEN 9 THEN '260'
10578 WHEN 10 THEN '260'
10579 WHEN 11 THEN '260'
10580 WHEN 12 THEN '260'
10581 WHEN 13 THEN '260'
10582 WHEN 14 THEN '260'
10583 WHEN 15 THEN '260'
10584 WHEN 16 THEN '260'
10585 WHEN 17 THEN '260'
10586 WHEN 18 THEN '260'
10587 WHEN 19 THEN '260'
10588 WHEN 20 THEN '260'
10589 WHEN 21 THEN '260'
10590 WHEN 22 THEN '260'
10591 WHEN 23 THEN '260'
10592 WHEN 24 THEN '260'
10593 WHEN 25 THEN '260'
10594 WHEN 26 THEN '260'
10595 WHEN 27 THEN '260'
10596
10597 ELSE null
10598 END source_application_id
10599 , 'S' source_type_code
10600 , CASE r
10601 WHEN 1 THEN 'CF_BA_BANK_CHARGE_CCID'
10602 WHEN 2 THEN 'CF_BA_BANK_ERROR_CCID'
10603 WHEN 3 THEN 'CF_BA_CASH_ACCT_CCID'
10604 WHEN 4 THEN 'CF_BA_FX_CHARGE_CCID'
10605 WHEN 5 THEN 'CF_OFFSET_CCID'
10606 WHEN 6 THEN 'CF_CLEARED_CHARGE_AMOUNT'
10607 WHEN 7 THEN 'REVERSAL_INDICATOR'
10608 WHEN 8 THEN 'CASHFLOW_NUMBER'
10609 WHEN 9 THEN 'CASHFLOW_HIST_IDENTIFIER'
10610 WHEN 10 THEN 'DISTRIBUTION_TYPE'
10611 WHEN 11 THEN 'CF_BA_CURRENCY'
10612 WHEN 12 THEN 'CF_CLEARED_EXCHANGE_DATE'
10613 WHEN 13 THEN 'CF_CLEARED_EXCHANGE_RATE'
10614 WHEN 14 THEN 'CF_CLEARED_EXC_RATE_TYPE'
10615 WHEN 15 THEN 'REVERSAL_FIRST_DIST_ID'
10616 WHEN 16 THEN 'REVERSAL_SECOND_DIST_ID'
10617 WHEN 17 THEN 'REVERSAL_DIST_TYPE'
10618 WHEN 18 THEN 'CF_CLEARED_ERROR_AMOUNT'
10619 WHEN 19 THEN 'CF_FX_CHARGE_AMOUNT'
10620 WHEN 20 THEN 'CF_DIRECTION'
10621 WHEN 21 THEN 'CF_CLEARED_AMOUNT'
10622 WHEN 22 THEN 'CF_AMOUNT'
10623 WHEN 23 THEN 'CF_CURRENCY'
10624 WHEN 24 THEN 'CF_EXCHANGE_DATE'
10625 WHEN 25 THEN 'CF_EXCHANGE_RATE'
10626 WHEN 26 THEN 'CF_EXCHANGE_RATE_TYPE'
10627 WHEN 27 THEN 'ACCOUNTING_DATE'
10628
10629 ELSE null
10633 WHEN 2 THEN TO_CHAR(h1.CF_BA_BANK_ERROR_CCID)
10630 END source_code
10631 , CASE r
10632 WHEN 1 THEN TO_CHAR(h1.CF_BA_BANK_CHARGE_CCID)
10634 WHEN 3 THEN TO_CHAR(h1.CF_BA_CASH_ACCT_CCID)
10635 WHEN 4 THEN TO_CHAR(h1.CF_BA_FX_CHARGE_CCID)
10636 WHEN 5 THEN TO_CHAR(h1.CF_OFFSET_CCID)
10637 WHEN 6 THEN TO_CHAR(h1.CF_CLEARED_CHARGE_AMOUNT)
10638 WHEN 7 THEN TO_CHAR(h1.REVERSAL_INDICATOR)
10639 WHEN 8 THEN TO_CHAR(h1.CASHFLOW_NUMBER)
10640 WHEN 9 THEN TO_CHAR(h1.CASHFLOW_HIST_IDENTIFIER)
10641 WHEN 10 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
10642 WHEN 11 THEN TO_CHAR(h1.CF_BA_CURRENCY)
10643 WHEN 12 THEN TO_CHAR(h1.CF_CLEARED_EXCHANGE_DATE)
10644 WHEN 13 THEN TO_CHAR(h1.CF_CLEARED_EXCHANGE_RATE)
10645 WHEN 14 THEN TO_CHAR(h1.CF_CLEARED_EXC_RATE_TYPE)
10646 WHEN 15 THEN TO_CHAR(h1.REVERSAL_FIRST_DIST_ID)
10647 WHEN 16 THEN TO_CHAR(h1.REVERSAL_SECOND_DIST_ID)
10648 WHEN 17 THEN TO_CHAR(h1.REVERSAL_DIST_TYPE)
10649 WHEN 18 THEN TO_CHAR(h1.CF_CLEARED_ERROR_AMOUNT)
10650 WHEN 19 THEN TO_CHAR(h1.CF_FX_CHARGE_AMOUNT)
10651 WHEN 20 THEN TO_CHAR(h1.CF_DIRECTION)
10652 WHEN 21 THEN TO_CHAR(h1.CF_CLEARED_AMOUNT)
10653 WHEN 22 THEN TO_CHAR(h1.CF_AMOUNT)
10654 WHEN 23 THEN TO_CHAR(h1.CF_CURRENCY)
10655 WHEN 24 THEN TO_CHAR(h1.CF_EXCHANGE_DATE)
10656 WHEN 25 THEN TO_CHAR(h1.CF_EXCHANGE_RATE)
10657 WHEN 26 THEN TO_CHAR(h1.CF_EXCHANGE_RATE_TYPE)
10658 WHEN 27 THEN TO_CHAR(h1.ACCOUNTING_DATE)
10659
10660 ELSE null
10661 END source_value
10662 , CASE r
10663 WHEN 20 THEN fvl22.meaning
10664
10665 ELSE null
10666 END source_meaning
10667 FROM xla_events_gt xet
10668 , CE_XLA_EXT_HEADERS_V h1
10669 , fnd_lookup_values fvl22
10670 ,(select rownum r from all_objects where rownum <= 27 and owner = p_apps_owner)
10671 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
10672 AND xet.event_type_code = C_EVENT_TYPE_CODE
10673 AND h1.event_id = xet.event_id
10674 AND fvl22.lookup_type(+) = 'CE_CASHFLOW_DIRECTION'
10675 AND fvl22.lookup_code(+) = h1.CF_DIRECTION
10676 AND fvl22.view_application_id(+) = 260
10677 AND fvl22.language(+) = USERENV('LANG')
10678
10679 )
10680 ;
10681 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
10682
10683 trace
10684 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
10685 ,p_level => C_LEVEL_STATEMENT
10686 ,p_module => l_log_module);
10687
10688 END IF;
10689 --
10690
10691
10692
10693
10694 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10695 trace
10696 (p_msg => 'END of insert_sources_26'
10697 ,p_level => C_LEVEL_PROCEDURE
10698 ,p_module => l_log_module);
10699 END IF;
10700 EXCEPTION
10701 WHEN xla_exceptions_pkg.application_exception THEN
10702 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
10703 trace
10704 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
10705 ,p_level => C_LEVEL_EXCEPTION
10706 ,p_module => l_log_module);
10707 END IF;
10708 RAISE;
10709 WHEN OTHERS THEN
10710 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
10711 trace
10712 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
10713 ,p_level => C_LEVEL_EXCEPTION
10714 ,p_module => l_log_module);
10715 END IF;
10716 xla_exceptions_pkg.raise_message
10717 (p_location => 'XLA_00260_AAD_S_000001_PKG.insert_sources_26');
10718 END insert_sources_26;
10719 --
10720
10721 ---------------------------------------
10722 --
10723 -- PRIVATE FUNCTION
10724 -- EventType_26
10725 --
10726 ----------------------------------------
10727 --
10728 FUNCTION EventType_26
10729 (p_application_id IN NUMBER
10730 ,p_base_ledger_id IN NUMBER
10731 ,p_target_ledger_id IN NUMBER
10732 ,p_language IN VARCHAR2
10733 ,p_currency_code IN VARCHAR2
10734 ,p_sla_ledger_id IN NUMBER
10735 ,p_pad_start_date IN DATE
10736 ,p_pad_end_date IN DATE
10737 ,p_primary_ledger_id IN NUMBER)
10738 RETURN BOOLEAN IS
10739 --
10740 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'CE_BAT_CLEARED';
10741 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'BAT_CLASS';
10742
10743 l_calculate_acctd_flag VARCHAR2(1) :='Y';
10744 l_calculate_g_l_flag VARCHAR2(1) :='Y';
10745 --
10746 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
10747 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
10748 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
10749 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
10750 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
10751 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
10752 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
10753 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
10754 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
10755 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
10759 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
10756 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
10757 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
10758 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
10760 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
10761 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
10762 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
10763 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
10764 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
10765 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
10766 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
10767 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
10768 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
10769 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
10770
10771 l_event_id NUMBER;
10772 l_previous_event_id NUMBER;
10773 l_first_event_id NUMBER;
10774 l_last_event_id NUMBER;
10775
10776 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
10777 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
10778 --
10779 --
10780 l_result BOOLEAN := TRUE;
10781 l_rows NUMBER := 1000;
10782 l_event_type_name VARCHAR2(80) := 'Bank Account Transfer Cleared';
10783 l_event_class_name VARCHAR2(80) := 'Bank Account Transfers';
10784 l_description VARCHAR2(4000);
10785 l_transaction_reversal NUMBER;
10786 l_ae_header_id NUMBER;
10787 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
10788 l_log_module VARCHAR2(240);
10789 --
10790 l_acct_reversal_source VARCHAR2(30);
10791 l_trx_reversal_source VARCHAR2(30);
10792
10793 l_continue_with_lines BOOLEAN := TRUE;
10794 --
10795 l_acc_rev_gl_date_source DATE; -- 4262811
10796 --
10797 type t_array_event_id is table of number index by binary_integer;
10798
10799 l_rec_array_event t_rec_array_event;
10800 l_null_rec_array_event t_rec_array_event;
10801 l_array_ae_header_id xla_number_array_type;
10802 l_actual_flag VARCHAR2(1) := NULL;
10803 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
10804 l_balance_type_code VARCHAR2(1) :=NULL;
10805 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
10806
10807 --
10808 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
10809 --
10810
10811 TYPE t_array_source_3 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_BA_BANK_CHARGE_CCID%TYPE INDEX BY BINARY_INTEGER;
10812 TYPE t_array_source_4 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_BA_BANK_ERROR_CCID%TYPE INDEX BY BINARY_INTEGER;
10813 TYPE t_array_source_5 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_BA_CASH_ACCT_CCID%TYPE INDEX BY BINARY_INTEGER;
10814 TYPE t_array_source_6 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_BA_FX_CHARGE_CCID%TYPE INDEX BY BINARY_INTEGER;
10815 TYPE t_array_source_7 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_OFFSET_CCID%TYPE INDEX BY BINARY_INTEGER;
10816 TYPE t_array_source_8 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_CHARGE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
10817 TYPE t_array_source_9 IS TABLE OF CE_XLA_EXT_HEADERS_V.REVERSAL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
10818 TYPE t_array_source_10 IS TABLE OF CE_XLA_EXT_HEADERS_V.CASHFLOW_NUMBER%TYPE INDEX BY BINARY_INTEGER;
10819 TYPE t_array_source_11 IS TABLE OF CE_XLA_EXT_HEADERS_V.CASHFLOW_HIST_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
10820 TYPE t_array_source_12 IS TABLE OF CE_XLA_EXT_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
10821 TYPE t_array_source_13 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_BA_CURRENCY%TYPE INDEX BY BINARY_INTEGER;
10822 TYPE t_array_source_14 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_EXCHANGE_DATE%TYPE INDEX BY BINARY_INTEGER;
10823 TYPE t_array_source_15 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
10824 TYPE t_array_source_16 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_EXC_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
10825 TYPE t_array_source_17 IS TABLE OF CE_XLA_EXT_HEADERS_V.REVERSAL_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
10826 TYPE t_array_source_18 IS TABLE OF CE_XLA_EXT_HEADERS_V.REVERSAL_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
10827 TYPE t_array_source_19 IS TABLE OF CE_XLA_EXT_HEADERS_V.REVERSAL_DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
10828 TYPE t_array_source_20 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_ERROR_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
10829 TYPE t_array_source_21 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_FX_CHARGE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
10830 TYPE t_array_source_22 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_DIRECTION%TYPE INDEX BY BINARY_INTEGER;
10831 TYPE t_array_source_23 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
10832 TYPE t_array_source_24 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
10833 TYPE t_array_source_25 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CURRENCY%TYPE INDEX BY BINARY_INTEGER;
10834 TYPE t_array_source_26 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_EXCHANGE_DATE%TYPE INDEX BY BINARY_INTEGER;
10835 TYPE t_array_source_27 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
10836 TYPE t_array_source_28 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
10837 TYPE t_array_source_29 IS TABLE OF CE_XLA_EXT_HEADERS_V.ACCOUNTING_DATE%TYPE INDEX BY BINARY_INTEGER;
10838
10839
10840 l_array_source_3 t_array_source_3;
10841 l_array_source_4 t_array_source_4;
10842 l_array_source_5 t_array_source_5;
10843 l_array_source_6 t_array_source_6;
10844 l_array_source_7 t_array_source_7;
10845 l_array_source_8 t_array_source_8;
10849 l_array_source_12 t_array_source_12;
10846 l_array_source_9 t_array_source_9;
10847 l_array_source_10 t_array_source_10;
10848 l_array_source_11 t_array_source_11;
10850 l_array_source_13 t_array_source_13;
10851 l_array_source_14 t_array_source_14;
10852 l_array_source_15 t_array_source_15;
10853 l_array_source_16 t_array_source_16;
10854 l_array_source_17 t_array_source_17;
10855 l_array_source_18 t_array_source_18;
10856 l_array_source_19 t_array_source_19;
10857 l_array_source_20 t_array_source_20;
10858 l_array_source_21 t_array_source_21;
10859 l_array_source_22 t_array_source_22;
10860 l_array_source_22_meaning t_array_lookup_meaning;
10861 l_array_source_23 t_array_source_23;
10862 l_array_source_24 t_array_source_24;
10863 l_array_source_25 t_array_source_25;
10864 l_array_source_26 t_array_source_26;
10865 l_array_source_27 t_array_source_27;
10866 l_array_source_28 t_array_source_28;
10867 l_array_source_29 t_array_source_29;
10868
10869
10870 --
10871 CURSOR header_cur
10872 IS
10873 SELECT /*+ leading(xet) cardinality(xet,1) */
10874 -- Event Type Code: CE_BAT_CLEARED
10875 -- Event Class Code: BAT_CLASS
10876 xet.entity_id
10877 , xet.legal_entity_id
10878 , xet.entity_code
10879 , xet.transaction_number
10880 , xet.event_id
10881 , xet.event_class_code
10882 , xet.event_type_code
10883 , xet.event_number
10884 , xet.event_date
10885 , xet.transaction_date
10886 , xet.reference_num_1
10887 , xet.reference_num_2
10888 , xet.reference_num_3
10889 , xet.reference_num_4
10890 , xet.reference_char_1
10891 , xet.reference_char_2
10892 , xet.reference_char_3
10893 , xet.reference_char_4
10894 , xet.reference_date_1
10895 , xet.reference_date_2
10896 , xet.reference_date_3
10897 , xet.reference_date_4
10898 , xet.event_created_by
10899 , xet.budgetary_control_flag
10900 , h1.CF_BA_BANK_CHARGE_CCID source_3
10901 , h1.CF_BA_BANK_ERROR_CCID source_4
10902 , h1.CF_BA_CASH_ACCT_CCID source_5
10903 , h1.CF_BA_FX_CHARGE_CCID source_6
10904 , h1.CF_OFFSET_CCID source_7
10905 , h1.CF_CLEARED_CHARGE_AMOUNT source_8
10906 , h1.REVERSAL_INDICATOR source_9
10907 , h1.CASHFLOW_NUMBER source_10
10908 , h1.CASHFLOW_HIST_IDENTIFIER source_11
10909 , h1.DISTRIBUTION_TYPE source_12
10910 , h1.CF_BA_CURRENCY source_13
10911 , h1.CF_CLEARED_EXCHANGE_DATE source_14
10912 , h1.CF_CLEARED_EXCHANGE_RATE source_15
10913 , h1.CF_CLEARED_EXC_RATE_TYPE source_16
10914 , h1.REVERSAL_FIRST_DIST_ID source_17
10915 , h1.REVERSAL_SECOND_DIST_ID source_18
10916 , h1.REVERSAL_DIST_TYPE source_19
10917 , h1.CF_CLEARED_ERROR_AMOUNT source_20
10918 , h1.CF_FX_CHARGE_AMOUNT source_21
10919 , h1.CF_DIRECTION source_22
10920 , fvl22.meaning source_22_meaning
10921 , h1.CF_CLEARED_AMOUNT source_23
10922 , h1.CF_AMOUNT source_24
10923 , h1.CF_CURRENCY source_25
10924 , h1.CF_EXCHANGE_DATE source_26
10925 , h1.CF_EXCHANGE_RATE source_27
10926 , h1.CF_EXCHANGE_RATE_TYPE source_28
10927 , h1.ACCOUNTING_DATE source_29
10928 FROM xla_events_gt xet
10929 , CE_XLA_EXT_HEADERS_V h1
10930 , fnd_lookup_values fvl22
10931 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
10932 and xet.event_type_code = C_EVENT_TYPE_CODE
10933 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
10934 AND fvl22.lookup_type(+) = 'CE_CASHFLOW_DIRECTION'
10935 AND fvl22.lookup_code(+) = h1.CF_DIRECTION
10936 AND fvl22.view_application_id(+) = 260
10937 AND fvl22.language(+) = USERENV('LANG')
10938
10939 ORDER BY event_id
10940 ;
10941
10942
10943 --
10944 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
10945 IS
10946 SELECT /*+ leading(xet) cardinality(xet,1) */
10947 -- Event Type Code: CE_BAT_CLEARED
10948 -- Event Class Code: BAT_CLASS
10949 xet.entity_id
10950 ,xet.legal_entity_id
10951 ,xet.entity_code
10952 ,xet.transaction_number
10953 ,xet.event_id
10954 ,xet.event_class_code
10955 ,xet.event_type_code
10956 ,xet.event_number
10957 ,xet.event_date
10958 ,xet.transaction_date
10959 ,xet.reference_num_1
10960 ,xet.reference_num_2
10961 ,xet.reference_num_3
10962 ,xet.reference_num_4
10963 ,xet.reference_char_1
10964 ,xet.reference_char_2
10965 ,xet.reference_char_3
10966 ,xet.reference_char_4
10967 ,xet.reference_date_1
10968 ,xet.reference_date_2
10969 ,xet.reference_date_3
10970 ,xet.reference_date_4
10971 ,xet.event_created_by
10972 ,xet.budgetary_control_flag , 0
10973 FROM xla_events_gt xet
10974 WHERE xet.event_id between x_first_event_id and x_last_event_id
10975 and xet.event_date between p_pad_start_date and p_pad_end_date
10976 and xet.event_type_code = C_EVENT_TYPE_CODE
10977 and xet.event_status_code <> 'N' ;
10978
10979 --
10980 BEGIN
10981 IF g_log_enabled THEN
10982 l_log_module := C_DEFAULT_MODULE||'.EventType_26';
10983 END IF;
10984 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10985 trace
10986 (p_msg => 'BEGIN of EventType_26'
10987 ,p_level => C_LEVEL_PROCEDURE
10988 ,p_module => l_log_module);
10989 END IF;
10990
10991 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
10992 trace
10993 (p_msg => 'p_application_id = '||p_application_id||
10994 ' - p_base_ledger_id = '||p_base_ledger_id||
10998 ' - p_sla_ledger_id = '||p_sla_ledger_id
10995 ' - p_target_ledger_id = '||p_target_ledger_id||
10996 ' - p_language = '||p_language||
10997 ' - p_currency_code = '||p_currency_code||
10999 ,p_level => C_LEVEL_STATEMENT
11000 ,p_module => l_log_module);
11001 END IF;
11002 --
11003 -- initialze arrays
11004 --
11005 g_array_event.DELETE;
11006 l_rec_array_event := l_null_rec_array_event;
11007 --
11008 --------------------------------------
11009 -- 4262811 Initialze MPA Line Number
11010 --------------------------------------
11011 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
11012
11013 --
11014
11015 --
11016 OPEN header_cur;
11017 --
11018 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11019 trace
11020 (p_msg => 'SQL - FETCH header_cur'
11021 ,p_level => C_LEVEL_STATEMENT
11022 ,p_module => l_log_module);
11023 END IF;
11024 --
11025 LOOP
11026 FETCH header_cur BULK COLLECT INTO
11027 l_array_entity_id
11028 , l_array_legal_entity_id
11029 , l_array_entity_code
11030 , l_array_transaction_num
11031 , l_array_event_id
11032 , l_array_class_code
11033 , l_array_event_type
11034 , l_array_event_number
11035 , l_array_event_date
11036 , l_array_transaction_date
11037 , l_array_reference_num_1
11038 , l_array_reference_num_2
11039 , l_array_reference_num_3
11040 , l_array_reference_num_4
11041 , l_array_reference_char_1
11042 , l_array_reference_char_2
11043 , l_array_reference_char_3
11044 , l_array_reference_char_4
11045 , l_array_reference_date_1
11046 , l_array_reference_date_2
11047 , l_array_reference_date_3
11048 , l_array_reference_date_4
11049 , l_array_event_created_by
11050 , l_array_budgetary_control_flag
11051 , l_array_source_3
11052 , l_array_source_4
11053 , l_array_source_5
11054 , l_array_source_6
11055 , l_array_source_7
11056 , l_array_source_8
11057 , l_array_source_9
11058 , l_array_source_10
11059 , l_array_source_11
11060 , l_array_source_12
11061 , l_array_source_13
11062 , l_array_source_14
11063 , l_array_source_15
11064 , l_array_source_16
11065 , l_array_source_17
11066 , l_array_source_18
11067 , l_array_source_19
11068 , l_array_source_20
11069 , l_array_source_21
11070 , l_array_source_22
11071 , l_array_source_22_meaning
11072 , l_array_source_23
11073 , l_array_source_24
11074 , l_array_source_25
11075 , l_array_source_26
11076 , l_array_source_27
11077 , l_array_source_28
11078 , l_array_source_29
11079 LIMIT l_rows;
11080 --
11081 IF (C_LEVEL_EVENT >= g_log_level) THEN
11082 trace
11083 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
11084 ,p_level => C_LEVEL_EVENT
11085 ,p_module => l_log_module);
11086 END IF;
11087 --
11088 EXIT WHEN l_array_entity_id.COUNT = 0;
11089
11090 -- initialize arrays
11091 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
11092 XLA_AE_LINES_PKG.g_rec_lines := NULL;
11093
11094 --
11095 -- Bug 4458708
11096 --
11097 XLA_AE_LINES_PKG.g_LineNumber := 0;
11098
11099
11100 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
11101 g_last_hdr_idx := l_array_event_id.LAST;
11102 --
11103 -- loop for the headers. Each iteration is for each header extract row
11104 -- fetched in header cursor
11105 --
11106 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
11107
11108 --
11109 -- set event info as cache for other routines to refer event attributes
11110 --
11111 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
11112 (p_application_id => p_application_id
11113 ,p_primary_ledger_id => p_primary_ledger_id
11114 ,p_base_ledger_id => p_base_ledger_id
11115 ,p_target_ledger_id => p_target_ledger_id
11116 ,p_entity_id => l_array_entity_id(hdr_idx)
11117 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
11118 ,p_entity_code => l_array_entity_code(hdr_idx)
11119 ,p_transaction_num => l_array_transaction_num(hdr_idx)
11120 ,p_event_id => l_array_event_id(hdr_idx)
11121 ,p_event_class_code => l_array_class_code(hdr_idx)
11122 ,p_event_type_code => l_array_event_type(hdr_idx)
11123 ,p_event_number => l_array_event_number(hdr_idx)
11124 ,p_event_date => l_array_event_date(hdr_idx)
11125 ,p_transaction_date => l_array_transaction_date(hdr_idx)
11126 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
11127 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
11128 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
11129 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
11130 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
11131 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
11132 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
11133 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
11134 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
11135 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
11136 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
11137 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
11138 ,p_event_created_by => l_array_event_created_by(hdr_idx)
11142 -- set the status of entry to C_VALID (0)
11139 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
11140
11141 --
11143 --
11144 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
11145
11146 --
11147 -- initialize a row for ae header
11148 --
11149 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
11150
11151 l_event_id := l_array_event_id(hdr_idx);
11152
11153 --
11154 -- storing the hdr_idx for event. May be used by line cursor.
11155 --
11156 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
11157
11158 --
11159 -- store sources from header extract. This can be improved to
11160 -- store only those sources from header extract that may be used in lines
11161 --
11162
11163 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
11164 g_array_event(l_event_id).array_value_num('source_4') := l_array_source_4(hdr_idx);
11165 g_array_event(l_event_id).array_value_num('source_5') := l_array_source_5(hdr_idx);
11166 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
11167 g_array_event(l_event_id).array_value_num('source_7') := l_array_source_7(hdr_idx);
11168 g_array_event(l_event_id).array_value_num('source_8') := l_array_source_8(hdr_idx);
11169 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
11170 g_array_event(l_event_id).array_value_num('source_10') := l_array_source_10(hdr_idx);
11171 g_array_event(l_event_id).array_value_char('source_11') := l_array_source_11(hdr_idx);
11172 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
11173 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
11174 g_array_event(l_event_id).array_value_date('source_14') := l_array_source_14(hdr_idx);
11175 g_array_event(l_event_id).array_value_num('source_15') := l_array_source_15(hdr_idx);
11176 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
11177 g_array_event(l_event_id).array_value_num('source_17') := l_array_source_17(hdr_idx);
11178 g_array_event(l_event_id).array_value_char('source_18') := l_array_source_18(hdr_idx);
11179 g_array_event(l_event_id).array_value_char('source_19') := l_array_source_19(hdr_idx);
11180 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
11181 g_array_event(l_event_id).array_value_num('source_21') := l_array_source_21(hdr_idx);
11182 g_array_event(l_event_id).array_value_char('source_22') := l_array_source_22(hdr_idx);
11183 g_array_event(l_event_id).array_value_char('source_22_meaning') := l_array_source_22_meaning(hdr_idx);
11184 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
11185 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
11186 g_array_event(l_event_id).array_value_char('source_25') := l_array_source_25(hdr_idx);
11187 g_array_event(l_event_id).array_value_date('source_26') := l_array_source_26(hdr_idx);
11188 g_array_event(l_event_id).array_value_num('source_27') := l_array_source_27(hdr_idx);
11189 g_array_event(l_event_id).array_value_char('source_28') := l_array_source_28(hdr_idx);
11190 g_array_event(l_event_id).array_value_date('source_29') := l_array_source_29(hdr_idx);
11191
11192 --
11193 -- initilaize the status of ae headers for diffrent balance types
11194 -- the status is initialised to C_NOT_CREATED (2)
11195 --
11196 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
11197 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
11198 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
11199
11200 --
11201 -- call api to validate and store accounting attributes for header
11202 --
11203
11204 ------------------------------------------------------------
11205 -- Accrual Reversal : to get date for Standard Source (NONE)
11206 ------------------------------------------------------------
11207 l_acc_rev_gl_date_source := NULL;
11208
11209 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
11210 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_29');
11211
11212
11213 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
11214
11215 XLA_AE_HEADER_PKG.SetJeCategoryName;
11216
11217 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
11218 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
11219 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
11220 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
11221 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
11222
11223
11224
11225
11226 --
11227 --accounting attribute enhancement, bug 3612931
11228 --
11229 l_trx_reversal_source := SUBSTR(NULL, 1,30);
11230
11231 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
11232 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
11233
11234 xla_accounting_err_pkg.build_message
11235 (p_appli_s_name => 'XLA'
11236 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
11237 ,p_token_1 => 'ACCT_ATTR_NAME'
11238 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
11239 ,p_token_2 => 'PRODUCT_NAME'
11240 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
11241 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
11242 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
11243 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
11244
11245 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
11246 --
11250 xla_ae_lines_pkg.SetTrxReversalAttrs
11247 -- following sets the accounting attributes needed to reverse
11248 -- accounting for a distributeion
11249 --
11251 (p_event_id => l_event_id
11252 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
11253 ,p_trx_reversal_source => l_trx_reversal_source);
11254
11255 END IF;
11256
11257
11258 ----------------------------------------------------------------
11259 -- 4262811 - update the header statuses to invalid in need be
11260 ----------------------------------------------------------------
11261 --
11262 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
11263
11264
11265 -----------------------------------------------
11266 -- No accrual reversal for the event class/type
11267 -----------------------------------------------
11268 ----------------------------------------------------------------
11269
11270 --
11271 -- this ends the header loop iteration for one bulk fetch
11272 --
11273 END LOOP;
11274
11275 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
11276 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
11277
11278 --
11279 -- insert dummy rows into lines gt table that were created due to
11280 -- transaction reversals
11281 --
11282 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
11283 l_result := XLA_AE_LINES_PKG.InsertLines;
11284 END IF;
11285
11286 --
11287 -- reset the temp_line_num for each set of events fetched from header
11288 -- cursor rather than doing it for each new event in line cursor
11289 -- Bug 3939231
11290 --
11291 xla_ae_lines_pkg.g_temp_line_num := 0;
11292
11293
11294
11295 --
11296 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
11297 --
11298 --
11299 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11300
11301 trace
11302 (p_msg => 'SQL - FETCH line_cur'
11303 ,p_level => C_LEVEL_STATEMENT
11304 ,p_module => l_log_module);
11305
11306 END IF;
11307 --
11308 --
11309 LOOP
11310 --
11311 FETCH line_cur BULK COLLECT INTO
11312 l_array_entity_id
11313 , l_array_legal_entity_id
11314 , l_array_entity_code
11315 , l_array_transaction_num
11316 , l_array_event_id
11317 , l_array_class_code
11318 , l_array_event_type
11319 , l_array_event_number
11320 , l_array_event_date
11321 , l_array_transaction_date
11322 , l_array_reference_num_1
11323 , l_array_reference_num_2
11324 , l_array_reference_num_3
11325 , l_array_reference_num_4
11326 , l_array_reference_char_1
11327 , l_array_reference_char_2
11328 , l_array_reference_char_3
11329 , l_array_reference_char_4
11330 , l_array_reference_date_1
11331 , l_array_reference_date_2
11332 , l_array_reference_date_3
11333 , l_array_reference_date_4
11334 , l_array_event_created_by
11335 , l_array_budgetary_control_flag
11336 , l_array_extract_line_num
11337 LIMIT l_rows;
11338
11339 --
11340 IF (C_LEVEL_EVENT >= g_log_level) THEN
11341 trace
11342 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
11343 ,p_level => C_LEVEL_EVENT
11344 ,p_module => l_log_module);
11345 END IF;
11346 --
11347 EXIT WHEN l_array_entity_id.count = 0;
11348
11349 XLA_AE_LINES_PKG.g_rec_lines := null;
11350
11351 --
11352 -- Bug 4458708
11353 --
11354 XLA_AE_LINES_PKG.g_LineNumber := 0;
11355 --
11356 --
11357
11358 FOR Idx IN 1..l_array_event_id.count LOOP
11359 --
11360 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
11361 --
11362 l_event_id := l_array_event_id(idx); -- 5648433
11363
11364 --
11365 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
11366 --
11367
11368 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
11369 (g_array_event(l_event_id).array_value_num('header_index'))
11370 ,'N'
11371 ) <> 'Y'
11372 THEN
11373 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11374 trace
11375 (p_msg => 'Trancaction revesal option is not Y '
11376 ,p_level => C_LEVEL_STATEMENT
11377 ,p_module => l_log_module);
11378 END IF;
11379
11380 --
11381 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
11382 --
11383 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
11384 --
11385 -- set event info as cache for other routines to refer event attributes
11386 --
11387
11388 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
11389 l_previous_event_id := l_event_id;
11390
11391 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
11392 (p_application_id => p_application_id
11393 ,p_primary_ledger_id => p_primary_ledger_id
11394 ,p_base_ledger_id => p_base_ledger_id
11395 ,p_target_ledger_id => p_target_ledger_id
11396 ,p_entity_id => l_array_entity_id(Idx)
11397 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
11398 ,p_entity_code => l_array_entity_code(Idx)
11399 ,p_transaction_num => l_array_transaction_num(Idx)
11400 ,p_event_id => l_array_event_id(Idx)
11401 ,p_event_class_code => l_array_class_code(Idx)
11402 ,p_event_type_code => l_array_event_type(Idx)
11406 ,p_reference_num_1 => l_array_reference_num_1(Idx)
11403 ,p_event_number => l_array_event_number(Idx)
11404 ,p_event_date => l_array_event_date(Idx)
11405 ,p_transaction_date => l_array_transaction_date(Idx)
11407 ,p_reference_num_2 => l_array_reference_num_2(Idx)
11408 ,p_reference_num_3 => l_array_reference_num_3(Idx)
11409 ,p_reference_num_4 => l_array_reference_num_4(Idx)
11410 ,p_reference_char_1 => l_array_reference_char_1(Idx)
11411 ,p_reference_char_2 => l_array_reference_char_2(Idx)
11412 ,p_reference_char_3 => l_array_reference_char_3(Idx)
11413 ,p_reference_char_4 => l_array_reference_char_4(Idx)
11414 ,p_reference_date_1 => l_array_reference_date_1(Idx)
11415 ,p_reference_date_2 => l_array_reference_date_2(Idx)
11416 ,p_reference_date_3 => l_array_reference_date_3(Idx)
11417 ,p_reference_date_4 => l_array_reference_date_4(Idx)
11418 ,p_event_created_by => l_array_event_created_by(Idx)
11419 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
11420 --
11421 END IF;
11422
11423
11424
11425 --
11426 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
11427
11428 l_acct_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_9'), 1,30);
11429
11430 IF l_continue_with_lines THEN
11431 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
11432 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
11433
11434 xla_accounting_err_pkg.build_message
11435 (p_appli_s_name => 'XLA'
11436 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
11437 ,p_token_1 => 'LINE_NUMBER'
11438 ,p_value_1 => l_array_extract_line_num(Idx)
11439 ,p_token_2 => 'PRODUCT_NAME'
11440 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
11441 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
11442 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
11443 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
11444
11445 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
11446 --
11447 -- following sets the accounting attributes needed to reverse
11448 -- accounting for a distributeion
11449 --
11450
11451 --
11452 -- 5217187
11453 --
11454 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
11455 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
11456 g_array_event(l_event_id).array_value_num('header_index'));
11457 --
11458 --
11459
11460 l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
11461 l_rec_rev_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_9');
11462 l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
11463 l_rec_rev_acct_attrs.array_num_value(3) := g_array_event(l_event_id).array_value_num('source_10');
11464 l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_IDENTIFIER_2';
11465 l_rec_rev_acct_attrs.array_char_value(4) := g_array_event(l_event_id).array_value_char('source_11');
11466 l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'DISTRIBUTION_TYPE';
11467 l_rec_rev_acct_attrs.array_char_value(5) := g_array_event(l_event_id).array_value_char('source_12');
11468 l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'REVERSED_DISTRIBUTION_ID1';
11469 l_rec_rev_acct_attrs.array_num_value(6) := g_array_event(l_event_id).array_value_num('source_17');
11470 l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'REVERSED_DISTRIBUTION_ID2';
11471 l_rec_rev_acct_attrs.array_char_value(7) := g_array_event(l_event_id).array_value_char('source_18');
11472 l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'REVERSED_DISTRIBUTION_TYPE';
11473 l_rec_rev_acct_attrs.array_char_value(8) := g_array_event(l_event_id).array_value_char('source_19');
11474
11475
11476 xla_ae_lines_pkg.SetAcctReversalAttrs
11477 (p_event_id => l_event_id
11478 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
11479 ,p_calculate_acctd_flag => l_calculate_acctd_flag
11480 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
11481 END IF;
11482
11483 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
11484 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
11485
11486 --
11487 AcctLineType_9 (
11488 p_application_id => p_application_id
11489 ,p_event_id => l_event_id
11490 ,p_calculate_acctd_flag => l_calculate_acctd_flag
11491 ,p_calculate_g_l_flag => l_calculate_g_l_flag
11492 ,p_actual_flag => l_actual_flag
11493 ,p_balance_type_code => l_balance_type_code
11494 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
11495
11496 , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
11497 , p_source_8 => g_array_event(l_event_id).array_value_num('source_8')
11498 , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
11499 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
11500 , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
11501 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
11502 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
11503 , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
11504 , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
11505 , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
11506 , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
11510 If(l_balance_type_code = 'A') THEN
11507 , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
11508 , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
11509 );
11511 l_actual_gain_loss_ref := l_gain_or_loss_ref;
11512 END IF;
11513
11514 --
11515
11516
11517 --
11518 AcctLineType_11 (
11519 p_application_id => p_application_id
11520 ,p_event_id => l_event_id
11521 ,p_calculate_acctd_flag => l_calculate_acctd_flag
11522 ,p_calculate_g_l_flag => l_calculate_g_l_flag
11523 ,p_actual_flag => l_actual_flag
11524 ,p_balance_type_code => l_balance_type_code
11525 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
11526
11527 , p_source_4 => g_array_event(l_event_id).array_value_num('source_4')
11528 , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
11529 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
11530 , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
11531 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
11532 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
11533 , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
11534 , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
11535 , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
11536 , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
11537 , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
11538 , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
11539 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
11540 );
11541 If(l_balance_type_code = 'A') THEN
11542 l_actual_gain_loss_ref := l_gain_or_loss_ref;
11543 END IF;
11544
11545 --
11546
11547
11548 --
11549 AcctLineType_13 (
11550 p_application_id => p_application_id
11551 ,p_event_id => l_event_id
11552 ,p_calculate_acctd_flag => l_calculate_acctd_flag
11553 ,p_calculate_g_l_flag => l_calculate_g_l_flag
11554 ,p_actual_flag => l_actual_flag
11555 ,p_balance_type_code => l_balance_type_code
11556 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
11557
11558 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
11559 , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
11560 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
11561 , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
11562 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
11563 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
11564 , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
11565 , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
11566 , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
11567 , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
11568 , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
11569 , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
11570 , p_source_21 => g_array_event(l_event_id).array_value_num('source_21')
11571 );
11572 If(l_balance_type_code = 'A') THEN
11573 l_actual_gain_loss_ref := l_gain_or_loss_ref;
11574 END IF;
11575
11576 --
11577
11578
11579 --
11580 AcctLineType_15 (
11581 p_application_id => p_application_id
11582 ,p_event_id => l_event_id
11583 ,p_calculate_acctd_flag => l_calculate_acctd_flag
11584 ,p_calculate_g_l_flag => l_calculate_g_l_flag
11585 ,p_actual_flag => l_actual_flag
11586 ,p_balance_type_code => l_balance_type_code
11587 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
11588
11589 , p_source_5 => g_array_event(l_event_id).array_value_num('source_5')
11590 , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
11591 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
11592 , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
11593 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
11594 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
11595 , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
11596 , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
11597 , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
11598 , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
11599 , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
11600 , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
11601 , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
11602 , p_source_22_meaning => g_array_event(l_event_id).array_value_char('source_22_meaning')
11603 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
11604 );
11605 If(l_balance_type_code = 'A') THEN
11606 l_actual_gain_loss_ref := l_gain_or_loss_ref;
11607 END IF;
11608
11609 --
11610
11611
11612 --
11613 AcctLineType_16 (
11614 p_application_id => p_application_id
11615 ,p_event_id => l_event_id
11616 ,p_calculate_acctd_flag => l_calculate_acctd_flag
11617 ,p_calculate_g_l_flag => l_calculate_g_l_flag
11618 ,p_actual_flag => l_actual_flag
11619 ,p_balance_type_code => l_balance_type_code
11620 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
11621
11622 , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
11623 , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
11624 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
11625 , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
11626 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
11627 , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
11628 , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
11632 , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
11629 , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
11630 , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
11631 , p_source_22_meaning => g_array_event(l_event_id).array_value_char('source_22_meaning')
11633 , p_source_25 => g_array_event(l_event_id).array_value_char('source_25')
11634 , p_source_26 => g_array_event(l_event_id).array_value_date('source_26')
11635 , p_source_27 => g_array_event(l_event_id).array_value_num('source_27')
11636 , p_source_28 => g_array_event(l_event_id).array_value_char('source_28')
11637 );
11638 If(l_balance_type_code = 'A') THEN
11639 l_actual_gain_loss_ref := l_gain_or_loss_ref;
11640 END IF;
11641
11642 --
11643
11644
11645 --
11646 AcctLineType_18 (
11647 p_application_id => p_application_id
11648 ,p_event_id => l_event_id
11649 ,p_calculate_acctd_flag => l_calculate_acctd_flag
11650 ,p_calculate_g_l_flag => l_calculate_g_l_flag
11651 ,p_actual_flag => l_actual_flag
11652 ,p_balance_type_code => l_balance_type_code
11653 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
11654
11655 , p_source_5 => g_array_event(l_event_id).array_value_num('source_5')
11656 , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
11657 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
11658 , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
11659 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
11660 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
11661 , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
11662 , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
11663 , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
11664 , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
11665 , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
11666 , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
11667 , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
11668 , p_source_22_meaning => g_array_event(l_event_id).array_value_char('source_22_meaning')
11669 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
11670 );
11671 If(l_balance_type_code = 'A') THEN
11672 l_actual_gain_loss_ref := l_gain_or_loss_ref;
11673 END IF;
11674
11675 --
11676
11677
11678 --
11679 AcctLineType_20 (
11680 p_application_id => p_application_id
11681 ,p_event_id => l_event_id
11682 ,p_calculate_acctd_flag => l_calculate_acctd_flag
11683 ,p_calculate_g_l_flag => l_calculate_g_l_flag
11684 ,p_actual_flag => l_actual_flag
11685 ,p_balance_type_code => l_balance_type_code
11686 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
11687
11688 , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
11689 , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
11690 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
11691 , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
11692 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
11693 , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
11694 , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
11695 , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
11696 , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
11697 , p_source_22_meaning => g_array_event(l_event_id).array_value_char('source_22_meaning')
11698 , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
11699 , p_source_25 => g_array_event(l_event_id).array_value_char('source_25')
11700 , p_source_26 => g_array_event(l_event_id).array_value_date('source_26')
11701 , p_source_27 => g_array_event(l_event_id).array_value_num('source_27')
11702 , p_source_28 => g_array_event(l_event_id).array_value_char('source_28')
11703 );
11704 If(l_balance_type_code = 'A') THEN
11705 l_actual_gain_loss_ref := l_gain_or_loss_ref;
11706 END IF;
11707
11708 --
11709
11710 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
11711 -- or secondary ledger that has different currency with primary
11712 -- or alc that is calculated by sla
11713 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
11714 (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'))
11715
11716 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
11717 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
11718 AND (l_actual_flag = 'A')) THEN
11719 XLA_AE_LINES_PKG.CreateGainOrLossLines(
11720 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
11721 ,p_application_id => p_application_id
11722 ,p_amb_context_code => 'DEFAULT'
11723 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
11724 ,p_event_class_code => C_EVENT_CLASS_CODE
11725 ,p_event_type_code => C_EVENT_TYPE_CODE
11726
11727 ,p_gain_ccid => -1
11728 ,p_loss_ccid => -1
11729
11730 ,p_actual_flag => l_actual_flag
11731 ,p_enc_flag => null
11732 ,p_actual_g_l_ref => l_actual_gain_loss_ref
11733 ,p_enc_g_l_ref => null
11734 );
11735 END IF;
11736 END IF;
11737 END IF;
11738
11739 ELSE
11740 --
11741 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
11742 --
11743 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11744 trace
11745 (p_msg => 'Trancaction revesal option is Y'
11749 END IF;
11746 ,p_level => C_LEVEL_STATEMENT
11747 ,p_module => l_log_module);
11748 END IF;
11750
11751 END LOOP;
11752 l_result := XLA_AE_LINES_PKG.InsertLines ;
11753 end loop;
11754 close line_cur;
11755
11756
11757 --
11758 -- insert headers into xla_ae_headers_gt table
11759 --
11760 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
11761
11762 -- insert into errors table here.
11763
11764 END LOOP;
11765
11766 --
11767 -- 4865292
11768 --
11769 -- Compare g_hdr_extract_count with event count in
11770 -- CreateHeadersAndLines.
11771 --
11772 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
11773
11774 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11775 trace (p_msg => '# rows extracted from header extract objects '
11776 || ' (running total): '
11777 || g_hdr_extract_count
11778 ,p_level => C_LEVEL_STATEMENT
11779 ,p_module => l_log_module);
11780 END IF;
11781
11782 CLOSE header_cur;
11783 --
11784
11785 --
11786 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11787 trace
11788 (p_msg => 'END of EventType_26'
11789 ,p_level => C_LEVEL_PROCEDURE
11790 ,p_module => l_log_module);
11791 END IF;
11792 --
11793 RETURN l_result;
11794 EXCEPTION
11795 WHEN xla_exceptions_pkg.application_exception THEN
11796
11797 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
11798
11799
11800 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
11801
11802 RAISE;
11803 WHEN OTHERS THEN
11804 xla_exceptions_pkg.raise_message
11805 (p_location => 'XLA_00260_AAD_S_000001_PKG.EventType_26');
11806 END EventType_26;
11807 --
11808
11809 ---------------------------------------
11810 --
11811 -- PRIVATE PROCEDURE
11812 -- insert_sources_27
11813 --
11814 ----------------------------------------
11815 --
11816 PROCEDURE insert_sources_27(
11817 p_target_ledger_id IN NUMBER
11818 , p_language IN VARCHAR2
11819 , p_sla_ledger_id IN NUMBER
11820 , p_pad_start_date IN DATE
11821 , p_pad_end_date IN DATE
11822 )
11823 IS
11824
11825 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'CE_BAT_UNCLEARED';
11826 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'BAT_CLASS';
11827 p_apps_owner VARCHAR2(30);
11828 l_log_module VARCHAR2(240);
11829 BEGIN
11830 IF g_log_enabled THEN
11831 l_log_module := C_DEFAULT_MODULE||'.insert_sources_27';
11832 END IF;
11833 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11834
11835 trace
11836 (p_msg => 'BEGIN of insert_sources_27'
11837 ,p_level => C_LEVEL_PROCEDURE
11838 ,p_module => l_log_module);
11839
11840 END IF;
11841
11842 -- select APPS owner
11843 SELECT oracle_username
11844 INTO p_apps_owner
11845 FROM fnd_oracle_userid
11846 WHERE read_only_flag = 'U'
11847 ;
11848
11849 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11850 trace
11851 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
11852 ' - p_language = '||p_language||
11853 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
11854 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
11855 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
11856 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
11857 ,p_level => C_LEVEL_STATEMENT
11858 ,p_module => l_log_module);
11859 END IF;
11860
11861
11862 --
11863 INSERT INTO xla_diag_sources --hdr1
11864 (
11865 event_id
11866 , ledger_id
11867 , sla_ledger_id
11868 , description_language
11869 , object_name
11870 , object_type_code
11871 , line_number
11872 , source_application_id
11873 , source_type_code
11874 , source_code
11875 , source_value
11876 , source_meaning
11877 , created_by
11878 , creation_date
11879 , last_update_date
11880 , last_updated_by
11881 , last_update_login
11882 , program_update_date
11883 , program_application_id
11884 , program_id
11885 , request_id
11886 )
11887 SELECT
11888 event_id
11889 , p_target_ledger_id
11890 , p_sla_ledger_id
11891 , p_language
11892 , object_name
11893 , object_type_code
11894 , line_number
11895 , source_application_id
11896 , source_type_code
11897 , source_code
11898 , SUBSTR(source_value ,1,1996)
11899 , SUBSTR(source_meaning,1,200)
11900 , xla_environment_pkg.g_Usr_Id
11901 , TRUNC(SYSDATE)
11902 , TRUNC(SYSDATE)
11903 , xla_environment_pkg.g_Usr_Id
11904 , xla_environment_pkg.g_Login_Id
11905 , TRUNC(SYSDATE)
11906 , xla_environment_pkg.g_Prog_Appl_Id
11907 , xla_environment_pkg.g_Prog_Id
11908 , xla_environment_pkg.g_Req_Id
11909 FROM (
11910 SELECT xet.event_id event_id
11911 , 0 line_number
11912 , CASE r
11913 WHEN 1 THEN 'CE_XLA_EXT_HEADERS_V'
11914 WHEN 2 THEN 'CE_XLA_EXT_HEADERS_V'
11915 WHEN 3 THEN 'CE_XLA_EXT_HEADERS_V'
11916 WHEN 4 THEN 'CE_XLA_EXT_HEADERS_V'
11920 WHEN 8 THEN 'CE_XLA_EXT_HEADERS_V'
11917 WHEN 5 THEN 'CE_XLA_EXT_HEADERS_V'
11918 WHEN 6 THEN 'CE_XLA_EXT_HEADERS_V'
11919 WHEN 7 THEN 'CE_XLA_EXT_HEADERS_V'
11921 WHEN 9 THEN 'CE_XLA_EXT_HEADERS_V'
11922 WHEN 10 THEN 'CE_XLA_EXT_HEADERS_V'
11923 WHEN 11 THEN 'CE_XLA_EXT_HEADERS_V'
11924 WHEN 12 THEN 'CE_XLA_EXT_HEADERS_V'
11925 WHEN 13 THEN 'CE_XLA_EXT_HEADERS_V'
11926 WHEN 14 THEN 'CE_XLA_EXT_HEADERS_V'
11927 WHEN 15 THEN 'CE_XLA_EXT_HEADERS_V'
11928 WHEN 16 THEN 'CE_XLA_EXT_HEADERS_V'
11929 WHEN 17 THEN 'CE_XLA_EXT_HEADERS_V'
11930 WHEN 18 THEN 'CE_XLA_EXT_HEADERS_V'
11931 WHEN 19 THEN 'CE_XLA_EXT_HEADERS_V'
11932 WHEN 20 THEN 'CE_XLA_EXT_HEADERS_V'
11933 WHEN 21 THEN 'CE_XLA_EXT_HEADERS_V'
11934 WHEN 22 THEN 'CE_XLA_EXT_HEADERS_V'
11935 WHEN 23 THEN 'CE_XLA_EXT_HEADERS_V'
11936 WHEN 24 THEN 'CE_XLA_EXT_HEADERS_V'
11937 WHEN 25 THEN 'CE_XLA_EXT_HEADERS_V'
11938 WHEN 26 THEN 'CE_XLA_EXT_HEADERS_V'
11939 WHEN 27 THEN 'CE_XLA_EXT_HEADERS_V'
11940
11941 ELSE null
11942 END object_name
11943 , CASE r
11944 WHEN 1 THEN 'HEADER'
11945 WHEN 2 THEN 'HEADER'
11946 WHEN 3 THEN 'HEADER'
11947 WHEN 4 THEN 'HEADER'
11948 WHEN 5 THEN 'HEADER'
11949 WHEN 6 THEN 'HEADER'
11950 WHEN 7 THEN 'HEADER'
11951 WHEN 8 THEN 'HEADER'
11952 WHEN 9 THEN 'HEADER'
11953 WHEN 10 THEN 'HEADER'
11954 WHEN 11 THEN 'HEADER'
11955 WHEN 12 THEN 'HEADER'
11956 WHEN 13 THEN 'HEADER'
11957 WHEN 14 THEN 'HEADER'
11958 WHEN 15 THEN 'HEADER'
11959 WHEN 16 THEN 'HEADER'
11960 WHEN 17 THEN 'HEADER'
11961 WHEN 18 THEN 'HEADER'
11962 WHEN 19 THEN 'HEADER'
11963 WHEN 20 THEN 'HEADER'
11964 WHEN 21 THEN 'HEADER'
11965 WHEN 22 THEN 'HEADER'
11966 WHEN 23 THEN 'HEADER'
11967 WHEN 24 THEN 'HEADER'
11968 WHEN 25 THEN 'HEADER'
11969 WHEN 26 THEN 'HEADER'
11970 WHEN 27 THEN 'HEADER'
11971
11972 ELSE null
11973 END object_type_code
11974 , CASE r
11975 WHEN 1 THEN '260'
11976 WHEN 2 THEN '260'
11977 WHEN 3 THEN '260'
11978 WHEN 4 THEN '260'
11979 WHEN 5 THEN '260'
11980 WHEN 6 THEN '260'
11981 WHEN 7 THEN '260'
11982 WHEN 8 THEN '260'
11983 WHEN 9 THEN '260'
11984 WHEN 10 THEN '260'
11985 WHEN 11 THEN '260'
11986 WHEN 12 THEN '260'
11987 WHEN 13 THEN '260'
11988 WHEN 14 THEN '260'
11989 WHEN 15 THEN '260'
11990 WHEN 16 THEN '260'
11991 WHEN 17 THEN '260'
11992 WHEN 18 THEN '260'
11993 WHEN 19 THEN '260'
11994 WHEN 20 THEN '260'
11995 WHEN 21 THEN '260'
11996 WHEN 22 THEN '260'
11997 WHEN 23 THEN '260'
11998 WHEN 24 THEN '260'
11999 WHEN 25 THEN '260'
12000 WHEN 26 THEN '260'
12001 WHEN 27 THEN '260'
12002
12003 ELSE null
12004 END source_application_id
12005 , 'S' source_type_code
12006 , CASE r
12007 WHEN 1 THEN 'CF_BA_BANK_CHARGE_CCID'
12008 WHEN 2 THEN 'CF_BA_BANK_ERROR_CCID'
12009 WHEN 3 THEN 'CF_BA_CASH_ACCT_CCID'
12010 WHEN 4 THEN 'CF_BA_FX_CHARGE_CCID'
12011 WHEN 5 THEN 'CF_OFFSET_CCID'
12012 WHEN 6 THEN 'CF_CLEARED_CHARGE_AMOUNT'
12013 WHEN 7 THEN 'REVERSAL_INDICATOR'
12014 WHEN 8 THEN 'CASHFLOW_NUMBER'
12015 WHEN 9 THEN 'CASHFLOW_HIST_IDENTIFIER'
12016 WHEN 10 THEN 'DISTRIBUTION_TYPE'
12017 WHEN 11 THEN 'CF_BA_CURRENCY'
12018 WHEN 12 THEN 'CF_CLEARED_EXCHANGE_DATE'
12019 WHEN 13 THEN 'CF_CLEARED_EXCHANGE_RATE'
12020 WHEN 14 THEN 'CF_CLEARED_EXC_RATE_TYPE'
12021 WHEN 15 THEN 'REVERSAL_FIRST_DIST_ID'
12022 WHEN 16 THEN 'REVERSAL_SECOND_DIST_ID'
12023 WHEN 17 THEN 'REVERSAL_DIST_TYPE'
12024 WHEN 18 THEN 'CF_CLEARED_ERROR_AMOUNT'
12025 WHEN 19 THEN 'CF_FX_CHARGE_AMOUNT'
12026 WHEN 20 THEN 'CF_DIRECTION'
12027 WHEN 21 THEN 'CF_CLEARED_AMOUNT'
12028 WHEN 22 THEN 'CF_AMOUNT'
12029 WHEN 23 THEN 'CF_CURRENCY'
12030 WHEN 24 THEN 'CF_EXCHANGE_DATE'
12031 WHEN 25 THEN 'CF_EXCHANGE_RATE'
12032 WHEN 26 THEN 'CF_EXCHANGE_RATE_TYPE'
12033 WHEN 27 THEN 'ACCOUNTING_DATE'
12034
12035 ELSE null
12036 END source_code
12037 , CASE r
12038 WHEN 1 THEN TO_CHAR(h1.CF_BA_BANK_CHARGE_CCID)
12039 WHEN 2 THEN TO_CHAR(h1.CF_BA_BANK_ERROR_CCID)
12043 WHEN 6 THEN TO_CHAR(h1.CF_CLEARED_CHARGE_AMOUNT)
12040 WHEN 3 THEN TO_CHAR(h1.CF_BA_CASH_ACCT_CCID)
12041 WHEN 4 THEN TO_CHAR(h1.CF_BA_FX_CHARGE_CCID)
12042 WHEN 5 THEN TO_CHAR(h1.CF_OFFSET_CCID)
12044 WHEN 7 THEN TO_CHAR(h1.REVERSAL_INDICATOR)
12045 WHEN 8 THEN TO_CHAR(h1.CASHFLOW_NUMBER)
12046 WHEN 9 THEN TO_CHAR(h1.CASHFLOW_HIST_IDENTIFIER)
12047 WHEN 10 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
12048 WHEN 11 THEN TO_CHAR(h1.CF_BA_CURRENCY)
12049 WHEN 12 THEN TO_CHAR(h1.CF_CLEARED_EXCHANGE_DATE)
12050 WHEN 13 THEN TO_CHAR(h1.CF_CLEARED_EXCHANGE_RATE)
12051 WHEN 14 THEN TO_CHAR(h1.CF_CLEARED_EXC_RATE_TYPE)
12052 WHEN 15 THEN TO_CHAR(h1.REVERSAL_FIRST_DIST_ID)
12053 WHEN 16 THEN TO_CHAR(h1.REVERSAL_SECOND_DIST_ID)
12054 WHEN 17 THEN TO_CHAR(h1.REVERSAL_DIST_TYPE)
12055 WHEN 18 THEN TO_CHAR(h1.CF_CLEARED_ERROR_AMOUNT)
12056 WHEN 19 THEN TO_CHAR(h1.CF_FX_CHARGE_AMOUNT)
12057 WHEN 20 THEN TO_CHAR(h1.CF_DIRECTION)
12058 WHEN 21 THEN TO_CHAR(h1.CF_CLEARED_AMOUNT)
12059 WHEN 22 THEN TO_CHAR(h1.CF_AMOUNT)
12060 WHEN 23 THEN TO_CHAR(h1.CF_CURRENCY)
12061 WHEN 24 THEN TO_CHAR(h1.CF_EXCHANGE_DATE)
12062 WHEN 25 THEN TO_CHAR(h1.CF_EXCHANGE_RATE)
12063 WHEN 26 THEN TO_CHAR(h1.CF_EXCHANGE_RATE_TYPE)
12064 WHEN 27 THEN TO_CHAR(h1.ACCOUNTING_DATE)
12065
12066 ELSE null
12067 END source_value
12068 , CASE r
12069 WHEN 20 THEN fvl22.meaning
12070
12071 ELSE null
12072 END source_meaning
12073 FROM xla_events_gt xet
12074 , CE_XLA_EXT_HEADERS_V h1
12075 , fnd_lookup_values fvl22
12076 ,(select rownum r from all_objects where rownum <= 27 and owner = p_apps_owner)
12077 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
12078 AND xet.event_type_code = C_EVENT_TYPE_CODE
12079 AND h1.event_id = xet.event_id
12080 AND fvl22.lookup_type(+) = 'CE_CASHFLOW_DIRECTION'
12081 AND fvl22.lookup_code(+) = h1.CF_DIRECTION
12082 AND fvl22.view_application_id(+) = 260
12083 AND fvl22.language(+) = USERENV('LANG')
12084
12085 )
12086 ;
12087 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12088
12089 trace
12090 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
12091 ,p_level => C_LEVEL_STATEMENT
12092 ,p_module => l_log_module);
12093
12094 END IF;
12095 --
12096
12097
12098
12099
12100 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12101 trace
12102 (p_msg => 'END of insert_sources_27'
12103 ,p_level => C_LEVEL_PROCEDURE
12104 ,p_module => l_log_module);
12105 END IF;
12106 EXCEPTION
12107 WHEN xla_exceptions_pkg.application_exception THEN
12108 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
12109 trace
12110 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
12111 ,p_level => C_LEVEL_EXCEPTION
12112 ,p_module => l_log_module);
12113 END IF;
12114 RAISE;
12115 WHEN OTHERS THEN
12116 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
12117 trace
12118 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
12119 ,p_level => C_LEVEL_EXCEPTION
12120 ,p_module => l_log_module);
12121 END IF;
12122 xla_exceptions_pkg.raise_message
12123 (p_location => 'XLA_00260_AAD_S_000001_PKG.insert_sources_27');
12124 END insert_sources_27;
12125 --
12126
12127 ---------------------------------------
12128 --
12129 -- PRIVATE FUNCTION
12130 -- EventType_27
12131 --
12132 ----------------------------------------
12133 --
12134 FUNCTION EventType_27
12135 (p_application_id IN NUMBER
12136 ,p_base_ledger_id IN NUMBER
12137 ,p_target_ledger_id IN NUMBER
12138 ,p_language IN VARCHAR2
12139 ,p_currency_code IN VARCHAR2
12140 ,p_sla_ledger_id IN NUMBER
12141 ,p_pad_start_date IN DATE
12142 ,p_pad_end_date IN DATE
12143 ,p_primary_ledger_id IN NUMBER)
12144 RETURN BOOLEAN IS
12145 --
12146 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'CE_BAT_UNCLEARED';
12147 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'BAT_CLASS';
12148
12149 l_calculate_acctd_flag VARCHAR2(1) :='Y';
12150 l_calculate_g_l_flag VARCHAR2(1) :='Y';
12151 --
12152 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
12153 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
12154 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12155 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
12156 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
12157 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12158 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12159 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
12160 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
12161 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
12162 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
12163 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
12164 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
12168 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
12165 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
12166 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
12167 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
12169 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
12170 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
12171 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
12172 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
12173 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
12174 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
12175 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12176
12177 l_event_id NUMBER;
12178 l_previous_event_id NUMBER;
12179 l_first_event_id NUMBER;
12180 l_last_event_id NUMBER;
12181
12182 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
12183 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
12184 --
12185 --
12186 l_result BOOLEAN := TRUE;
12187 l_rows NUMBER := 1000;
12188 l_event_type_name VARCHAR2(80) := 'Bank Account Transfer Uncleared';
12189 l_event_class_name VARCHAR2(80) := 'Bank Account Transfers';
12190 l_description VARCHAR2(4000);
12191 l_transaction_reversal NUMBER;
12192 l_ae_header_id NUMBER;
12193 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
12194 l_log_module VARCHAR2(240);
12195 --
12196 l_acct_reversal_source VARCHAR2(30);
12197 l_trx_reversal_source VARCHAR2(30);
12198
12199 l_continue_with_lines BOOLEAN := TRUE;
12200 --
12201 l_acc_rev_gl_date_source DATE; -- 4262811
12202 --
12203 type t_array_event_id is table of number index by binary_integer;
12204
12205 l_rec_array_event t_rec_array_event;
12206 l_null_rec_array_event t_rec_array_event;
12207 l_array_ae_header_id xla_number_array_type;
12208 l_actual_flag VARCHAR2(1) := NULL;
12209 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
12210 l_balance_type_code VARCHAR2(1) :=NULL;
12211 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
12212
12213 --
12214 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
12215 --
12216
12217 TYPE t_array_source_3 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_BA_BANK_CHARGE_CCID%TYPE INDEX BY BINARY_INTEGER;
12218 TYPE t_array_source_4 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_BA_BANK_ERROR_CCID%TYPE INDEX BY BINARY_INTEGER;
12219 TYPE t_array_source_5 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_BA_CASH_ACCT_CCID%TYPE INDEX BY BINARY_INTEGER;
12220 TYPE t_array_source_6 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_BA_FX_CHARGE_CCID%TYPE INDEX BY BINARY_INTEGER;
12221 TYPE t_array_source_7 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_OFFSET_CCID%TYPE INDEX BY BINARY_INTEGER;
12222 TYPE t_array_source_8 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_CHARGE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
12223 TYPE t_array_source_9 IS TABLE OF CE_XLA_EXT_HEADERS_V.REVERSAL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
12224 TYPE t_array_source_10 IS TABLE OF CE_XLA_EXT_HEADERS_V.CASHFLOW_NUMBER%TYPE INDEX BY BINARY_INTEGER;
12225 TYPE t_array_source_11 IS TABLE OF CE_XLA_EXT_HEADERS_V.CASHFLOW_HIST_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
12226 TYPE t_array_source_12 IS TABLE OF CE_XLA_EXT_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
12227 TYPE t_array_source_13 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_BA_CURRENCY%TYPE INDEX BY BINARY_INTEGER;
12228 TYPE t_array_source_14 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_EXCHANGE_DATE%TYPE INDEX BY BINARY_INTEGER;
12229 TYPE t_array_source_15 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
12230 TYPE t_array_source_16 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_EXC_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
12231 TYPE t_array_source_17 IS TABLE OF CE_XLA_EXT_HEADERS_V.REVERSAL_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
12232 TYPE t_array_source_18 IS TABLE OF CE_XLA_EXT_HEADERS_V.REVERSAL_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
12233 TYPE t_array_source_19 IS TABLE OF CE_XLA_EXT_HEADERS_V.REVERSAL_DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
12234 TYPE t_array_source_20 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_ERROR_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
12235 TYPE t_array_source_21 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_FX_CHARGE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
12236 TYPE t_array_source_22 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_DIRECTION%TYPE INDEX BY BINARY_INTEGER;
12237 TYPE t_array_source_23 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
12238 TYPE t_array_source_24 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
12239 TYPE t_array_source_25 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CURRENCY%TYPE INDEX BY BINARY_INTEGER;
12240 TYPE t_array_source_26 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_EXCHANGE_DATE%TYPE INDEX BY BINARY_INTEGER;
12241 TYPE t_array_source_27 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
12242 TYPE t_array_source_28 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
12243 TYPE t_array_source_29 IS TABLE OF CE_XLA_EXT_HEADERS_V.ACCOUNTING_DATE%TYPE INDEX BY BINARY_INTEGER;
12244
12245
12246 l_array_source_3 t_array_source_3;
12247 l_array_source_4 t_array_source_4;
12248 l_array_source_5 t_array_source_5;
12249 l_array_source_6 t_array_source_6;
12250 l_array_source_7 t_array_source_7;
12251 l_array_source_8 t_array_source_8;
12252 l_array_source_9 t_array_source_9;
12253 l_array_source_10 t_array_source_10;
12254 l_array_source_11 t_array_source_11;
12255 l_array_source_12 t_array_source_12;
12259 l_array_source_16 t_array_source_16;
12256 l_array_source_13 t_array_source_13;
12257 l_array_source_14 t_array_source_14;
12258 l_array_source_15 t_array_source_15;
12260 l_array_source_17 t_array_source_17;
12261 l_array_source_18 t_array_source_18;
12262 l_array_source_19 t_array_source_19;
12263 l_array_source_20 t_array_source_20;
12264 l_array_source_21 t_array_source_21;
12265 l_array_source_22 t_array_source_22;
12266 l_array_source_22_meaning t_array_lookup_meaning;
12267 l_array_source_23 t_array_source_23;
12268 l_array_source_24 t_array_source_24;
12269 l_array_source_25 t_array_source_25;
12270 l_array_source_26 t_array_source_26;
12271 l_array_source_27 t_array_source_27;
12272 l_array_source_28 t_array_source_28;
12273 l_array_source_29 t_array_source_29;
12274
12275
12276 --
12277 CURSOR header_cur
12278 IS
12279 SELECT /*+ leading(xet) cardinality(xet,1) */
12280 -- Event Type Code: CE_BAT_UNCLEARED
12281 -- Event Class Code: BAT_CLASS
12282 xet.entity_id
12283 , xet.legal_entity_id
12284 , xet.entity_code
12285 , xet.transaction_number
12286 , xet.event_id
12287 , xet.event_class_code
12288 , xet.event_type_code
12289 , xet.event_number
12290 , xet.event_date
12291 , xet.transaction_date
12292 , xet.reference_num_1
12293 , xet.reference_num_2
12294 , xet.reference_num_3
12295 , xet.reference_num_4
12296 , xet.reference_char_1
12297 , xet.reference_char_2
12298 , xet.reference_char_3
12299 , xet.reference_char_4
12300 , xet.reference_date_1
12301 , xet.reference_date_2
12302 , xet.reference_date_3
12303 , xet.reference_date_4
12304 , xet.event_created_by
12305 , xet.budgetary_control_flag
12306 , h1.CF_BA_BANK_CHARGE_CCID source_3
12307 , h1.CF_BA_BANK_ERROR_CCID source_4
12308 , h1.CF_BA_CASH_ACCT_CCID source_5
12309 , h1.CF_BA_FX_CHARGE_CCID source_6
12310 , h1.CF_OFFSET_CCID source_7
12311 , h1.CF_CLEARED_CHARGE_AMOUNT source_8
12312 , h1.REVERSAL_INDICATOR source_9
12313 , h1.CASHFLOW_NUMBER source_10
12314 , h1.CASHFLOW_HIST_IDENTIFIER source_11
12315 , h1.DISTRIBUTION_TYPE source_12
12316 , h1.CF_BA_CURRENCY source_13
12317 , h1.CF_CLEARED_EXCHANGE_DATE source_14
12318 , h1.CF_CLEARED_EXCHANGE_RATE source_15
12319 , h1.CF_CLEARED_EXC_RATE_TYPE source_16
12320 , h1.REVERSAL_FIRST_DIST_ID source_17
12321 , h1.REVERSAL_SECOND_DIST_ID source_18
12322 , h1.REVERSAL_DIST_TYPE source_19
12323 , h1.CF_CLEARED_ERROR_AMOUNT source_20
12324 , h1.CF_FX_CHARGE_AMOUNT source_21
12325 , h1.CF_DIRECTION source_22
12326 , fvl22.meaning source_22_meaning
12327 , h1.CF_CLEARED_AMOUNT source_23
12328 , h1.CF_AMOUNT source_24
12329 , h1.CF_CURRENCY source_25
12330 , h1.CF_EXCHANGE_DATE source_26
12331 , h1.CF_EXCHANGE_RATE source_27
12332 , h1.CF_EXCHANGE_RATE_TYPE source_28
12333 , h1.ACCOUNTING_DATE source_29
12334 FROM xla_events_gt xet
12335 , CE_XLA_EXT_HEADERS_V h1
12336 , fnd_lookup_values fvl22
12337 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
12338 and xet.event_type_code = C_EVENT_TYPE_CODE
12339 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
12340 AND fvl22.lookup_type(+) = 'CE_CASHFLOW_DIRECTION'
12341 AND fvl22.lookup_code(+) = h1.CF_DIRECTION
12342 AND fvl22.view_application_id(+) = 260
12343 AND fvl22.language(+) = USERENV('LANG')
12344
12345 ORDER BY event_id
12346 ;
12347
12348
12349 --
12350 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
12351 IS
12352 SELECT /*+ leading(xet) cardinality(xet,1) */
12353 -- Event Type Code: CE_BAT_UNCLEARED
12354 -- Event Class Code: BAT_CLASS
12355 xet.entity_id
12356 ,xet.legal_entity_id
12357 ,xet.entity_code
12358 ,xet.transaction_number
12359 ,xet.event_id
12360 ,xet.event_class_code
12361 ,xet.event_type_code
12362 ,xet.event_number
12363 ,xet.event_date
12364 ,xet.transaction_date
12365 ,xet.reference_num_1
12366 ,xet.reference_num_2
12367 ,xet.reference_num_3
12368 ,xet.reference_num_4
12369 ,xet.reference_char_1
12370 ,xet.reference_char_2
12371 ,xet.reference_char_3
12372 ,xet.reference_char_4
12373 ,xet.reference_date_1
12374 ,xet.reference_date_2
12375 ,xet.reference_date_3
12376 ,xet.reference_date_4
12377 ,xet.event_created_by
12378 ,xet.budgetary_control_flag , 0
12379 FROM xla_events_gt xet
12380 WHERE xet.event_id between x_first_event_id and x_last_event_id
12381 and xet.event_date between p_pad_start_date and p_pad_end_date
12382 and xet.event_type_code = C_EVENT_TYPE_CODE
12383 and xet.event_status_code <> 'N' ;
12384
12385 --
12386 BEGIN
12387 IF g_log_enabled THEN
12388 l_log_module := C_DEFAULT_MODULE||'.EventType_27';
12389 END IF;
12390 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12391 trace
12392 (p_msg => 'BEGIN of EventType_27'
12393 ,p_level => C_LEVEL_PROCEDURE
12394 ,p_module => l_log_module);
12395 END IF;
12396
12397 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12398 trace
12399 (p_msg => 'p_application_id = '||p_application_id||
12400 ' - p_base_ledger_id = '||p_base_ledger_id||
12401 ' - p_target_ledger_id = '||p_target_ledger_id||
12402 ' - p_language = '||p_language||
12403 ' - p_currency_code = '||p_currency_code||
12407 END IF;
12404 ' - p_sla_ledger_id = '||p_sla_ledger_id
12405 ,p_level => C_LEVEL_STATEMENT
12406 ,p_module => l_log_module);
12408 --
12409 -- initialze arrays
12410 --
12411 g_array_event.DELETE;
12412 l_rec_array_event := l_null_rec_array_event;
12413 --
12414 --------------------------------------
12415 -- 4262811 Initialze MPA Line Number
12416 --------------------------------------
12417 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
12418
12419 --
12420
12421 --
12422 OPEN header_cur;
12423 --
12424 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12425 trace
12426 (p_msg => 'SQL - FETCH header_cur'
12427 ,p_level => C_LEVEL_STATEMENT
12428 ,p_module => l_log_module);
12429 END IF;
12430 --
12431 LOOP
12432 FETCH header_cur BULK COLLECT INTO
12433 l_array_entity_id
12434 , l_array_legal_entity_id
12435 , l_array_entity_code
12436 , l_array_transaction_num
12437 , l_array_event_id
12438 , l_array_class_code
12439 , l_array_event_type
12440 , l_array_event_number
12441 , l_array_event_date
12442 , l_array_transaction_date
12443 , l_array_reference_num_1
12444 , l_array_reference_num_2
12445 , l_array_reference_num_3
12446 , l_array_reference_num_4
12447 , l_array_reference_char_1
12448 , l_array_reference_char_2
12449 , l_array_reference_char_3
12450 , l_array_reference_char_4
12451 , l_array_reference_date_1
12452 , l_array_reference_date_2
12453 , l_array_reference_date_3
12454 , l_array_reference_date_4
12455 , l_array_event_created_by
12456 , l_array_budgetary_control_flag
12457 , l_array_source_3
12458 , l_array_source_4
12459 , l_array_source_5
12460 , l_array_source_6
12461 , l_array_source_7
12462 , l_array_source_8
12463 , l_array_source_9
12464 , l_array_source_10
12465 , l_array_source_11
12466 , l_array_source_12
12467 , l_array_source_13
12468 , l_array_source_14
12469 , l_array_source_15
12470 , l_array_source_16
12471 , l_array_source_17
12472 , l_array_source_18
12473 , l_array_source_19
12474 , l_array_source_20
12475 , l_array_source_21
12476 , l_array_source_22
12477 , l_array_source_22_meaning
12478 , l_array_source_23
12479 , l_array_source_24
12480 , l_array_source_25
12481 , l_array_source_26
12482 , l_array_source_27
12483 , l_array_source_28
12484 , l_array_source_29
12485 LIMIT l_rows;
12486 --
12487 IF (C_LEVEL_EVENT >= g_log_level) THEN
12488 trace
12489 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
12490 ,p_level => C_LEVEL_EVENT
12491 ,p_module => l_log_module);
12492 END IF;
12493 --
12494 EXIT WHEN l_array_entity_id.COUNT = 0;
12495
12496 -- initialize arrays
12497 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
12498 XLA_AE_LINES_PKG.g_rec_lines := NULL;
12499
12500 --
12501 -- Bug 4458708
12502 --
12503 XLA_AE_LINES_PKG.g_LineNumber := 0;
12504
12505
12506 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
12507 g_last_hdr_idx := l_array_event_id.LAST;
12508 --
12509 -- loop for the headers. Each iteration is for each header extract row
12510 -- fetched in header cursor
12511 --
12512 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
12513
12514 --
12515 -- set event info as cache for other routines to refer event attributes
12516 --
12517 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
12518 (p_application_id => p_application_id
12519 ,p_primary_ledger_id => p_primary_ledger_id
12520 ,p_base_ledger_id => p_base_ledger_id
12521 ,p_target_ledger_id => p_target_ledger_id
12522 ,p_entity_id => l_array_entity_id(hdr_idx)
12523 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
12524 ,p_entity_code => l_array_entity_code(hdr_idx)
12525 ,p_transaction_num => l_array_transaction_num(hdr_idx)
12526 ,p_event_id => l_array_event_id(hdr_idx)
12527 ,p_event_class_code => l_array_class_code(hdr_idx)
12528 ,p_event_type_code => l_array_event_type(hdr_idx)
12529 ,p_event_number => l_array_event_number(hdr_idx)
12530 ,p_event_date => l_array_event_date(hdr_idx)
12531 ,p_transaction_date => l_array_transaction_date(hdr_idx)
12532 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
12533 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
12534 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
12535 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
12536 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
12537 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
12538 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
12539 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
12540 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
12541 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
12542 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
12543 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
12544 ,p_event_created_by => l_array_event_created_by(hdr_idx)
12545 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
12546
12547 --
12548 -- set the status of entry to C_VALID (0)
12549 --
12553 -- initialize a row for ae header
12550 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
12551
12552 --
12554 --
12555 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
12556
12557 l_event_id := l_array_event_id(hdr_idx);
12558
12559 --
12560 -- storing the hdr_idx for event. May be used by line cursor.
12561 --
12562 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
12563
12564 --
12565 -- store sources from header extract. This can be improved to
12566 -- store only those sources from header extract that may be used in lines
12567 --
12568
12569 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
12570 g_array_event(l_event_id).array_value_num('source_4') := l_array_source_4(hdr_idx);
12571 g_array_event(l_event_id).array_value_num('source_5') := l_array_source_5(hdr_idx);
12572 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
12573 g_array_event(l_event_id).array_value_num('source_7') := l_array_source_7(hdr_idx);
12574 g_array_event(l_event_id).array_value_num('source_8') := l_array_source_8(hdr_idx);
12575 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
12576 g_array_event(l_event_id).array_value_num('source_10') := l_array_source_10(hdr_idx);
12577 g_array_event(l_event_id).array_value_char('source_11') := l_array_source_11(hdr_idx);
12578 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
12579 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
12580 g_array_event(l_event_id).array_value_date('source_14') := l_array_source_14(hdr_idx);
12581 g_array_event(l_event_id).array_value_num('source_15') := l_array_source_15(hdr_idx);
12582 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
12583 g_array_event(l_event_id).array_value_num('source_17') := l_array_source_17(hdr_idx);
12584 g_array_event(l_event_id).array_value_char('source_18') := l_array_source_18(hdr_idx);
12585 g_array_event(l_event_id).array_value_char('source_19') := l_array_source_19(hdr_idx);
12586 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
12587 g_array_event(l_event_id).array_value_num('source_21') := l_array_source_21(hdr_idx);
12588 g_array_event(l_event_id).array_value_char('source_22') := l_array_source_22(hdr_idx);
12589 g_array_event(l_event_id).array_value_char('source_22_meaning') := l_array_source_22_meaning(hdr_idx);
12590 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
12591 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
12592 g_array_event(l_event_id).array_value_char('source_25') := l_array_source_25(hdr_idx);
12593 g_array_event(l_event_id).array_value_date('source_26') := l_array_source_26(hdr_idx);
12594 g_array_event(l_event_id).array_value_num('source_27') := l_array_source_27(hdr_idx);
12595 g_array_event(l_event_id).array_value_char('source_28') := l_array_source_28(hdr_idx);
12596 g_array_event(l_event_id).array_value_date('source_29') := l_array_source_29(hdr_idx);
12597
12598 --
12599 -- initilaize the status of ae headers for diffrent balance types
12600 -- the status is initialised to C_NOT_CREATED (2)
12601 --
12602 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
12603 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
12604 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
12605
12606 --
12607 -- call api to validate and store accounting attributes for header
12608 --
12609
12610 ------------------------------------------------------------
12611 -- Accrual Reversal : to get date for Standard Source (NONE)
12612 ------------------------------------------------------------
12613 l_acc_rev_gl_date_source := NULL;
12614
12615 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
12616 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_29');
12617
12618
12619 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
12620
12621 XLA_AE_HEADER_PKG.SetJeCategoryName;
12622
12623 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
12624 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
12625 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
12626 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
12627 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
12628
12629
12630
12631
12632 --
12633 --accounting attribute enhancement, bug 3612931
12634 --
12635 l_trx_reversal_source := SUBSTR(NULL, 1,30);
12636
12637 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
12638 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
12639
12640 xla_accounting_err_pkg.build_message
12641 (p_appli_s_name => 'XLA'
12642 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
12643 ,p_token_1 => 'ACCT_ATTR_NAME'
12644 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
12645 ,p_token_2 => 'PRODUCT_NAME'
12646 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
12647 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
12648 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
12649 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
12650
12651 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
12652 --
12653 -- following sets the accounting attributes needed to reverse
12654 -- accounting for a distributeion
12655 --
12656 xla_ae_lines_pkg.SetTrxReversalAttrs
12660
12657 (p_event_id => l_event_id
12658 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
12659 ,p_trx_reversal_source => l_trx_reversal_source);
12661 END IF;
12662
12663
12664 ----------------------------------------------------------------
12665 -- 4262811 - update the header statuses to invalid in need be
12666 ----------------------------------------------------------------
12667 --
12668 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
12669
12670
12671 -----------------------------------------------
12672 -- No accrual reversal for the event class/type
12673 -----------------------------------------------
12674 ----------------------------------------------------------------
12675
12676 --
12677 -- this ends the header loop iteration for one bulk fetch
12678 --
12679 END LOOP;
12680
12681 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
12682 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
12683
12684 --
12685 -- insert dummy rows into lines gt table that were created due to
12686 -- transaction reversals
12687 --
12688 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
12689 l_result := XLA_AE_LINES_PKG.InsertLines;
12690 END IF;
12691
12692 --
12693 -- reset the temp_line_num for each set of events fetched from header
12694 -- cursor rather than doing it for each new event in line cursor
12695 -- Bug 3939231
12696 --
12697 xla_ae_lines_pkg.g_temp_line_num := 0;
12698
12699
12700
12701 --
12702 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
12703 --
12704 --
12705 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12706
12707 trace
12708 (p_msg => 'SQL - FETCH line_cur'
12709 ,p_level => C_LEVEL_STATEMENT
12710 ,p_module => l_log_module);
12711
12712 END IF;
12713 --
12714 --
12715 LOOP
12716 --
12717 FETCH line_cur BULK COLLECT INTO
12718 l_array_entity_id
12719 , l_array_legal_entity_id
12720 , l_array_entity_code
12721 , l_array_transaction_num
12722 , l_array_event_id
12723 , l_array_class_code
12724 , l_array_event_type
12725 , l_array_event_number
12726 , l_array_event_date
12727 , l_array_transaction_date
12728 , l_array_reference_num_1
12729 , l_array_reference_num_2
12730 , l_array_reference_num_3
12731 , l_array_reference_num_4
12732 , l_array_reference_char_1
12733 , l_array_reference_char_2
12734 , l_array_reference_char_3
12735 , l_array_reference_char_4
12736 , l_array_reference_date_1
12737 , l_array_reference_date_2
12738 , l_array_reference_date_3
12739 , l_array_reference_date_4
12740 , l_array_event_created_by
12741 , l_array_budgetary_control_flag
12742 , l_array_extract_line_num
12743 LIMIT l_rows;
12744
12745 --
12746 IF (C_LEVEL_EVENT >= g_log_level) THEN
12747 trace
12748 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
12749 ,p_level => C_LEVEL_EVENT
12750 ,p_module => l_log_module);
12751 END IF;
12752 --
12753 EXIT WHEN l_array_entity_id.count = 0;
12754
12755 XLA_AE_LINES_PKG.g_rec_lines := null;
12756
12757 --
12758 -- Bug 4458708
12759 --
12760 XLA_AE_LINES_PKG.g_LineNumber := 0;
12761 --
12762 --
12763
12764 FOR Idx IN 1..l_array_event_id.count LOOP
12765 --
12766 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
12767 --
12768 l_event_id := l_array_event_id(idx); -- 5648433
12769
12770 --
12771 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
12772 --
12773
12774 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
12775 (g_array_event(l_event_id).array_value_num('header_index'))
12776 ,'N'
12777 ) <> 'Y'
12778 THEN
12779 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12780 trace
12781 (p_msg => 'Trancaction revesal option is not Y '
12782 ,p_level => C_LEVEL_STATEMENT
12783 ,p_module => l_log_module);
12784 END IF;
12785
12786 --
12787 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
12788 --
12789 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
12790 --
12791 -- set event info as cache for other routines to refer event attributes
12792 --
12793
12794 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
12795 l_previous_event_id := l_event_id;
12796
12797 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
12798 (p_application_id => p_application_id
12799 ,p_primary_ledger_id => p_primary_ledger_id
12800 ,p_base_ledger_id => p_base_ledger_id
12801 ,p_target_ledger_id => p_target_ledger_id
12802 ,p_entity_id => l_array_entity_id(Idx)
12803 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
12804 ,p_entity_code => l_array_entity_code(Idx)
12805 ,p_transaction_num => l_array_transaction_num(Idx)
12806 ,p_event_id => l_array_event_id(Idx)
12807 ,p_event_class_code => l_array_class_code(Idx)
12808 ,p_event_type_code => l_array_event_type(Idx)
12809 ,p_event_number => l_array_event_number(Idx)
12810 ,p_event_date => l_array_event_date(Idx)
12811 ,p_transaction_date => l_array_transaction_date(Idx)
12815 ,p_reference_num_4 => l_array_reference_num_4(Idx)
12812 ,p_reference_num_1 => l_array_reference_num_1(Idx)
12813 ,p_reference_num_2 => l_array_reference_num_2(Idx)
12814 ,p_reference_num_3 => l_array_reference_num_3(Idx)
12816 ,p_reference_char_1 => l_array_reference_char_1(Idx)
12817 ,p_reference_char_2 => l_array_reference_char_2(Idx)
12818 ,p_reference_char_3 => l_array_reference_char_3(Idx)
12819 ,p_reference_char_4 => l_array_reference_char_4(Idx)
12820 ,p_reference_date_1 => l_array_reference_date_1(Idx)
12821 ,p_reference_date_2 => l_array_reference_date_2(Idx)
12822 ,p_reference_date_3 => l_array_reference_date_3(Idx)
12823 ,p_reference_date_4 => l_array_reference_date_4(Idx)
12824 ,p_event_created_by => l_array_event_created_by(Idx)
12825 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
12826 --
12827 END IF;
12828
12829
12830
12831 --
12832 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
12833
12834 l_acct_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_9'), 1,30);
12835
12836 IF l_continue_with_lines THEN
12837 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
12838 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
12839
12840 xla_accounting_err_pkg.build_message
12841 (p_appli_s_name => 'XLA'
12842 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
12843 ,p_token_1 => 'LINE_NUMBER'
12844 ,p_value_1 => l_array_extract_line_num(Idx)
12845 ,p_token_2 => 'PRODUCT_NAME'
12846 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
12847 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
12848 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
12849 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
12850
12851 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
12852 --
12853 -- following sets the accounting attributes needed to reverse
12854 -- accounting for a distributeion
12855 --
12856
12857 --
12858 -- 5217187
12859 --
12860 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
12861 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
12862 g_array_event(l_event_id).array_value_num('header_index'));
12863 --
12864 --
12865
12866 l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
12867 l_rec_rev_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_9');
12868 l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
12869 l_rec_rev_acct_attrs.array_num_value(3) := g_array_event(l_event_id).array_value_num('source_10');
12870 l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_IDENTIFIER_2';
12871 l_rec_rev_acct_attrs.array_char_value(4) := g_array_event(l_event_id).array_value_char('source_11');
12872 l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'DISTRIBUTION_TYPE';
12873 l_rec_rev_acct_attrs.array_char_value(5) := g_array_event(l_event_id).array_value_char('source_12');
12874 l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'REVERSED_DISTRIBUTION_ID1';
12875 l_rec_rev_acct_attrs.array_num_value(6) := g_array_event(l_event_id).array_value_num('source_17');
12876 l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'REVERSED_DISTRIBUTION_ID2';
12877 l_rec_rev_acct_attrs.array_char_value(7) := g_array_event(l_event_id).array_value_char('source_18');
12878 l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'REVERSED_DISTRIBUTION_TYPE';
12879 l_rec_rev_acct_attrs.array_char_value(8) := g_array_event(l_event_id).array_value_char('source_19');
12880
12881
12882 xla_ae_lines_pkg.SetAcctReversalAttrs
12883 (p_event_id => l_event_id
12884 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
12885 ,p_calculate_acctd_flag => l_calculate_acctd_flag
12886 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
12887 END IF;
12888
12889 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
12890 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
12891
12892 --
12893 AcctLineType_8 (
12894 p_application_id => p_application_id
12895 ,p_event_id => l_event_id
12896 ,p_calculate_acctd_flag => l_calculate_acctd_flag
12897 ,p_calculate_g_l_flag => l_calculate_g_l_flag
12898 ,p_actual_flag => l_actual_flag
12899 ,p_balance_type_code => l_balance_type_code
12900 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
12901
12902 , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
12903 , p_source_8 => g_array_event(l_event_id).array_value_num('source_8')
12904 , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
12905 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
12906 , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
12907 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
12908 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
12909 , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
12910 , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
12911 , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
12912 , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
12913 , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
12914 , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
12915 );
12916 If(l_balance_type_code = 'A') THEN
12920 --
12917 l_actual_gain_loss_ref := l_gain_or_loss_ref;
12918 END IF;
12919
12921
12922
12923 --
12924 AcctLineType_10 (
12925 p_application_id => p_application_id
12926 ,p_event_id => l_event_id
12927 ,p_calculate_acctd_flag => l_calculate_acctd_flag
12928 ,p_calculate_g_l_flag => l_calculate_g_l_flag
12929 ,p_actual_flag => l_actual_flag
12930 ,p_balance_type_code => l_balance_type_code
12931 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
12932
12933 , p_source_4 => g_array_event(l_event_id).array_value_num('source_4')
12934 , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
12935 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
12936 , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
12937 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
12938 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
12939 , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
12940 , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
12941 , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
12942 , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
12943 , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
12944 , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
12945 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
12946 );
12947 If(l_balance_type_code = 'A') THEN
12948 l_actual_gain_loss_ref := l_gain_or_loss_ref;
12949 END IF;
12950
12951 --
12952
12953
12954 --
12955 AcctLineType_12 (
12956 p_application_id => p_application_id
12957 ,p_event_id => l_event_id
12958 ,p_calculate_acctd_flag => l_calculate_acctd_flag
12959 ,p_calculate_g_l_flag => l_calculate_g_l_flag
12960 ,p_actual_flag => l_actual_flag
12961 ,p_balance_type_code => l_balance_type_code
12962 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
12963
12964 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
12965 , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
12966 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
12967 , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
12968 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
12969 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
12970 , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
12971 , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
12972 , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
12973 , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
12974 , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
12975 , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
12976 , p_source_21 => g_array_event(l_event_id).array_value_num('source_21')
12977 );
12978 If(l_balance_type_code = 'A') THEN
12979 l_actual_gain_loss_ref := l_gain_or_loss_ref;
12980 END IF;
12981
12982 --
12983
12984
12985 --
12986 AcctLineType_14 (
12987 p_application_id => p_application_id
12988 ,p_event_id => l_event_id
12989 ,p_calculate_acctd_flag => l_calculate_acctd_flag
12990 ,p_calculate_g_l_flag => l_calculate_g_l_flag
12991 ,p_actual_flag => l_actual_flag
12992 ,p_balance_type_code => l_balance_type_code
12993 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
12994
12995 , p_source_5 => g_array_event(l_event_id).array_value_num('source_5')
12996 , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
12997 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
12998 , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
12999 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
13000 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
13001 , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
13002 , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
13003 , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
13004 , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
13005 , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
13006 , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
13007 , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
13008 , p_source_22_meaning => g_array_event(l_event_id).array_value_char('source_22_meaning')
13009 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
13010 );
13011 If(l_balance_type_code = 'A') THEN
13012 l_actual_gain_loss_ref := l_gain_or_loss_ref;
13013 END IF;
13014
13015 --
13016
13017
13018 --
13019 AcctLineType_17 (
13020 p_application_id => p_application_id
13021 ,p_event_id => l_event_id
13022 ,p_calculate_acctd_flag => l_calculate_acctd_flag
13023 ,p_calculate_g_l_flag => l_calculate_g_l_flag
13024 ,p_actual_flag => l_actual_flag
13025 ,p_balance_type_code => l_balance_type_code
13026 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
13027
13028 , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
13029 , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
13030 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
13031 , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
13032 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
13033 , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
13034 , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
13035 , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
13036 , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
13040 , p_source_26 => g_array_event(l_event_id).array_value_date('source_26')
13037 , p_source_22_meaning => g_array_event(l_event_id).array_value_char('source_22_meaning')
13038 , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
13039 , p_source_25 => g_array_event(l_event_id).array_value_char('source_25')
13041 , p_source_27 => g_array_event(l_event_id).array_value_num('source_27')
13042 , p_source_28 => g_array_event(l_event_id).array_value_char('source_28')
13043 );
13044 If(l_balance_type_code = 'A') THEN
13045 l_actual_gain_loss_ref := l_gain_or_loss_ref;
13046 END IF;
13047
13048 --
13049
13050
13051 --
13052 AcctLineType_19 (
13053 p_application_id => p_application_id
13054 ,p_event_id => l_event_id
13055 ,p_calculate_acctd_flag => l_calculate_acctd_flag
13056 ,p_calculate_g_l_flag => l_calculate_g_l_flag
13057 ,p_actual_flag => l_actual_flag
13058 ,p_balance_type_code => l_balance_type_code
13059 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
13060
13061 , p_source_5 => g_array_event(l_event_id).array_value_num('source_5')
13062 , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
13063 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
13064 , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
13065 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
13066 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
13067 , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
13068 , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
13069 , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
13070 , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
13071 , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
13072 , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
13073 , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
13074 , p_source_22_meaning => g_array_event(l_event_id).array_value_char('source_22_meaning')
13075 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
13076 );
13077 If(l_balance_type_code = 'A') THEN
13078 l_actual_gain_loss_ref := l_gain_or_loss_ref;
13079 END IF;
13080
13081 --
13082
13083
13084 --
13085 AcctLineType_21 (
13086 p_application_id => p_application_id
13087 ,p_event_id => l_event_id
13088 ,p_calculate_acctd_flag => l_calculate_acctd_flag
13089 ,p_calculate_g_l_flag => l_calculate_g_l_flag
13090 ,p_actual_flag => l_actual_flag
13091 ,p_balance_type_code => l_balance_type_code
13092 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
13093
13094 , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
13095 , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
13096 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
13097 , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
13098 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
13099 , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
13100 , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
13101 , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
13102 , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
13103 , p_source_22_meaning => g_array_event(l_event_id).array_value_char('source_22_meaning')
13104 , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
13105 , p_source_25 => g_array_event(l_event_id).array_value_char('source_25')
13106 , p_source_26 => g_array_event(l_event_id).array_value_date('source_26')
13107 , p_source_27 => g_array_event(l_event_id).array_value_num('source_27')
13108 , p_source_28 => g_array_event(l_event_id).array_value_char('source_28')
13109 );
13110 If(l_balance_type_code = 'A') THEN
13111 l_actual_gain_loss_ref := l_gain_or_loss_ref;
13112 END IF;
13113
13114 --
13115
13116 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
13117 -- or secondary ledger that has different currency with primary
13118 -- or alc that is calculated by sla
13119 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
13120 (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'))
13121
13122 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
13123 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
13124 AND (l_actual_flag = 'A')) THEN
13125 XLA_AE_LINES_PKG.CreateGainOrLossLines(
13126 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
13127 ,p_application_id => p_application_id
13128 ,p_amb_context_code => 'DEFAULT'
13129 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
13130 ,p_event_class_code => C_EVENT_CLASS_CODE
13131 ,p_event_type_code => C_EVENT_TYPE_CODE
13132
13133 ,p_gain_ccid => -1
13134 ,p_loss_ccid => -1
13135
13136 ,p_actual_flag => l_actual_flag
13137 ,p_enc_flag => null
13138 ,p_actual_g_l_ref => l_actual_gain_loss_ref
13139 ,p_enc_g_l_ref => null
13140 );
13141 END IF;
13142 END IF;
13143 END IF;
13144
13145 ELSE
13146 --
13147 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
13148 --
13149 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13150 trace
13151 (p_msg => 'Trancaction revesal option is Y'
13152 ,p_level => C_LEVEL_STATEMENT
13153 ,p_module => l_log_module);
13154 END IF;
13155 END IF;
13159 end loop;
13156
13157 END LOOP;
13158 l_result := XLA_AE_LINES_PKG.InsertLines ;
13160 close line_cur;
13161
13162
13163 --
13164 -- insert headers into xla_ae_headers_gt table
13165 --
13166 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
13167
13168 -- insert into errors table here.
13169
13170 END LOOP;
13171
13172 --
13173 -- 4865292
13174 --
13175 -- Compare g_hdr_extract_count with event count in
13176 -- CreateHeadersAndLines.
13177 --
13178 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
13179
13180 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13181 trace (p_msg => '# rows extracted from header extract objects '
13182 || ' (running total): '
13183 || g_hdr_extract_count
13184 ,p_level => C_LEVEL_STATEMENT
13185 ,p_module => l_log_module);
13186 END IF;
13187
13188 CLOSE header_cur;
13189 --
13190
13191 --
13192 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13193 trace
13194 (p_msg => 'END of EventType_27'
13195 ,p_level => C_LEVEL_PROCEDURE
13196 ,p_module => l_log_module);
13197 END IF;
13198 --
13199 RETURN l_result;
13200 EXCEPTION
13201 WHEN xla_exceptions_pkg.application_exception THEN
13202
13203 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
13204
13205
13206 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
13207
13208 RAISE;
13209 WHEN OTHERS THEN
13210 xla_exceptions_pkg.raise_message
13211 (p_location => 'XLA_00260_AAD_S_000001_PKG.EventType_27');
13212 END EventType_27;
13213 --
13214
13215 ---------------------------------------
13216 --
13217 -- PRIVATE PROCEDURE
13218 -- insert_sources_28
13219 --
13220 ----------------------------------------
13221 --
13222 PROCEDURE insert_sources_28(
13223 p_target_ledger_id IN NUMBER
13224 , p_language IN VARCHAR2
13225 , p_sla_ledger_id IN NUMBER
13226 , p_pad_start_date IN DATE
13227 , p_pad_end_date IN DATE
13228 )
13229 IS
13230
13231 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'STMT_CLASS_ALL';
13232 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'STMT_CLASS';
13233 p_apps_owner VARCHAR2(30);
13234 l_log_module VARCHAR2(240);
13235 BEGIN
13236 IF g_log_enabled THEN
13237 l_log_module := C_DEFAULT_MODULE||'.insert_sources_28';
13238 END IF;
13239 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13240
13241 trace
13242 (p_msg => 'BEGIN of insert_sources_28'
13243 ,p_level => C_LEVEL_PROCEDURE
13244 ,p_module => l_log_module);
13245
13246 END IF;
13247
13248 -- select APPS owner
13249 SELECT oracle_username
13250 INTO p_apps_owner
13251 FROM fnd_oracle_userid
13252 WHERE read_only_flag = 'U'
13253 ;
13254
13255 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13256 trace
13257 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
13258 ' - p_language = '||p_language||
13259 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
13260 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
13261 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
13262 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
13263 ,p_level => C_LEVEL_STATEMENT
13264 ,p_module => l_log_module);
13265 END IF;
13266
13267
13268 --
13269 INSERT INTO xla_diag_sources --hdr2
13270 (
13271 event_id
13272 , ledger_id
13273 , sla_ledger_id
13274 , description_language
13275 , object_name
13276 , object_type_code
13277 , line_number
13278 , source_application_id
13279 , source_type_code
13280 , source_code
13281 , source_value
13282 , source_meaning
13283 , created_by
13284 , creation_date
13285 , last_update_date
13286 , last_updated_by
13287 , last_update_login
13288 , program_update_date
13289 , program_application_id
13290 , program_id
13291 , request_id
13292 )
13293 SELECT
13294 event_id
13295 , p_target_ledger_id
13296 , p_sla_ledger_id
13297 , p_language
13298 , object_name
13299 , object_type_code
13300 , line_number
13301 , source_application_id
13302 , source_type_code
13303 , source_code
13304 , SUBSTR(source_value ,1,1996)
13305 , SUBSTR(source_meaning ,1,200)
13306 , xla_environment_pkg.g_Usr_Id
13307 , TRUNC(SYSDATE)
13308 , TRUNC(SYSDATE)
13309 , xla_environment_pkg.g_Usr_Id
13310 , xla_environment_pkg.g_Login_Id
13311 , TRUNC(SYSDATE)
13312 , xla_environment_pkg.g_Prog_Appl_Id
13313 , xla_environment_pkg.g_Prog_Id
13314 , xla_environment_pkg.g_Req_Id
13315 FROM (
13316 SELECT xet.event_id event_id
13317 , 0 line_number
13318 , CASE r
13319 WHEN 1 THEN 'CE_XLA_EXT_HEADERS_V'
13320 WHEN 2 THEN 'CE_XLA_EXT_HEADERS_V'
13321 WHEN 3 THEN 'CE_XLA_EXT_HEADERS_V'
13322 WHEN 4 THEN 'CE_XLA_EXT_HEADERS_V'
13323 WHEN 5 THEN 'CE_XLA_EXT_HEADERS_V'
13324 WHEN 6 THEN 'CE_XLA_EXT_HEADERS_V'
13328 WHEN 10 THEN 'CE_XLA_EXT_HEADERS_V'
13325 WHEN 7 THEN 'CE_XLA_EXT_HEADERS_V'
13326 WHEN 8 THEN 'CE_XLA_EXT_HEADERS_V'
13327 WHEN 9 THEN 'CE_XLA_EXT_HEADERS_V'
13329 WHEN 11 THEN 'CE_XLA_EXT_HEADERS_V'
13330 WHEN 12 THEN 'CE_XLA_EXT_HEADERS_V'
13331 WHEN 13 THEN 'CE_XLA_EXT_HEADERS_V'
13332 WHEN 14 THEN 'CE_XLA_EXT_HEADERS_V'
13333 WHEN 15 THEN 'CE_XLA_EXT_HEADERS_V'
13334 WHEN 16 THEN 'CE_XLA_EXT_HEADERS_V'
13335 WHEN 17 THEN 'CE_XLA_EXT_HEADERS_V'
13336 WHEN 18 THEN 'CE_XLA_EXT_HEADERS_V'
13337
13338 ELSE null
13339 END object_name
13340 , CASE r
13341 WHEN 1 THEN 'HEADER'
13342 WHEN 2 THEN 'HEADER'
13343 WHEN 3 THEN 'HEADER'
13344 WHEN 4 THEN 'HEADER'
13345 WHEN 5 THEN 'HEADER'
13346 WHEN 6 THEN 'HEADER'
13347 WHEN 7 THEN 'HEADER'
13348 WHEN 8 THEN 'HEADER'
13349 WHEN 9 THEN 'HEADER'
13350 WHEN 10 THEN 'HEADER'
13351 WHEN 11 THEN 'HEADER'
13352 WHEN 12 THEN 'HEADER'
13353 WHEN 13 THEN 'HEADER'
13354 WHEN 14 THEN 'HEADER'
13355 WHEN 15 THEN 'HEADER'
13356 WHEN 16 THEN 'HEADER'
13357 WHEN 17 THEN 'HEADER'
13358 WHEN 18 THEN 'HEADER'
13359
13360 ELSE null
13361 END object_type_code
13362 , CASE r
13363 WHEN 1 THEN '260'
13364 WHEN 2 THEN '260'
13365 WHEN 3 THEN '260'
13366 WHEN 4 THEN '260'
13367 WHEN 5 THEN '260'
13368 WHEN 6 THEN '260'
13369 WHEN 7 THEN '260'
13370 WHEN 8 THEN '260'
13371 WHEN 9 THEN '260'
13372 WHEN 10 THEN '260'
13373 WHEN 11 THEN '260'
13374 WHEN 12 THEN '260'
13375 WHEN 13 THEN '260'
13376 WHEN 14 THEN '260'
13377 WHEN 15 THEN '260'
13378 WHEN 16 THEN '260'
13379 WHEN 17 THEN '260'
13380 WHEN 18 THEN '260'
13381
13382 ELSE null
13383 END source_application_id
13384 , 'S' source_type_code
13385 , CASE r
13386 WHEN 1 THEN 'CF_REFERENCE_TEXT'
13387 WHEN 2 THEN 'CF_DESCRIPTION'
13388 WHEN 3 THEN 'CF_BA_CASH_ACCT_CCID'
13389 WHEN 4 THEN 'CF_OFFSET_CCID'
13390 WHEN 5 THEN 'REVERSAL_INDICATOR'
13391 WHEN 6 THEN 'CASHFLOW_NUMBER'
13392 WHEN 7 THEN 'CASHFLOW_HIST_IDENTIFIER'
13393 WHEN 8 THEN 'DISTRIBUTION_TYPE'
13394 WHEN 9 THEN 'CF_BA_CURRENCY'
13395 WHEN 10 THEN 'CF_CLEARED_EXCHANGE_DATE'
13396 WHEN 11 THEN 'CF_CLEARED_EXCHANGE_RATE'
13397 WHEN 12 THEN 'CF_CLEARED_EXC_RATE_TYPE'
13398 WHEN 13 THEN 'REVERSAL_FIRST_DIST_ID'
13399 WHEN 14 THEN 'REVERSAL_SECOND_DIST_ID'
13400 WHEN 15 THEN 'REVERSAL_DIST_TYPE'
13401 WHEN 16 THEN 'CF_DIRECTION'
13402 WHEN 17 THEN 'CF_CLEARED_AMOUNT'
13403 WHEN 18 THEN 'ACCOUNTING_DATE'
13404
13405 ELSE null
13406 END source_code
13407 , CASE r
13408 WHEN 1 THEN TO_CHAR(h1.CF_REFERENCE_TEXT)
13409 WHEN 2 THEN TO_CHAR(h1.CF_DESCRIPTION)
13410 WHEN 3 THEN TO_CHAR(h1.CF_BA_CASH_ACCT_CCID)
13411 WHEN 4 THEN TO_CHAR(h1.CF_OFFSET_CCID)
13412 WHEN 5 THEN TO_CHAR(h1.REVERSAL_INDICATOR)
13413 WHEN 6 THEN TO_CHAR(h1.CASHFLOW_NUMBER)
13414 WHEN 7 THEN TO_CHAR(h1.CASHFLOW_HIST_IDENTIFIER)
13415 WHEN 8 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
13416 WHEN 9 THEN TO_CHAR(h1.CF_BA_CURRENCY)
13417 WHEN 10 THEN TO_CHAR(h1.CF_CLEARED_EXCHANGE_DATE)
13418 WHEN 11 THEN TO_CHAR(h1.CF_CLEARED_EXCHANGE_RATE)
13419 WHEN 12 THEN TO_CHAR(h1.CF_CLEARED_EXC_RATE_TYPE)
13420 WHEN 13 THEN TO_CHAR(h1.REVERSAL_FIRST_DIST_ID)
13421 WHEN 14 THEN TO_CHAR(h1.REVERSAL_SECOND_DIST_ID)
13422 WHEN 15 THEN TO_CHAR(h1.REVERSAL_DIST_TYPE)
13423 WHEN 16 THEN TO_CHAR(h1.CF_DIRECTION)
13424 WHEN 17 THEN TO_CHAR(h1.CF_CLEARED_AMOUNT)
13425 WHEN 18 THEN TO_CHAR(h1.ACCOUNTING_DATE)
13426
13427 ELSE null
13428 END source_value
13429 , CASE r
13430 WHEN 16 THEN fvl22.meaning
13431
13432 ELSE null
13433 END source_meaning
13434 FROM xla_events_gt xet
13435 , CE_XLA_EXT_HEADERS_V h1
13436 , fnd_lookup_values fvl22
13437 ,(select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
13438 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
13439 AND xet.event_class_code = C_EVENT_CLASS_CODE
13440 AND h1.event_id = xet.event_id
13441 AND fvl22.lookup_type(+) = 'CE_CASHFLOW_DIRECTION'
13442 AND fvl22.lookup_code(+) = h1.CF_DIRECTION
13443 AND fvl22.view_application_id(+) = 260
13444 AND fvl22.language(+) = USERENV('LANG')
13445
13446 )
13450
13447 ;
13448 --
13449 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13451 trace
13452 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
13453 ,p_level => C_LEVEL_STATEMENT
13454 ,p_module => l_log_module);
13455
13456 END IF;
13457 --
13458
13459
13460
13461
13462 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13463 trace
13464 (p_msg => 'END of insert_sources_28'
13465 ,p_level => C_LEVEL_PROCEDURE
13466 ,p_module => l_log_module);
13467 END IF;
13468 EXCEPTION
13469 WHEN xla_exceptions_pkg.application_exception THEN
13470 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
13471 trace
13472 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
13473 ,p_level => C_LEVEL_EXCEPTION
13474 ,p_module => l_log_module);
13475 END IF;
13476 RAISE;
13477 WHEN OTHERS THEN
13478 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
13479 trace
13480 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
13481 ,p_level => C_LEVEL_EXCEPTION
13482 ,p_module => l_log_module);
13483 END IF;
13484 xla_exceptions_pkg.raise_message
13485 (p_location => 'XLA_00260_AAD_S_000001_PKG.insert_sources_28');
13486 END insert_sources_28;
13487 --
13488
13489 ---------------------------------------
13490 --
13491 -- PRIVATE FUNCTION
13492 -- EventClass_28
13493 --
13494 ----------------------------------------
13495 --
13496 FUNCTION EventClass_28
13497 (p_application_id IN NUMBER
13498 ,p_base_ledger_id IN NUMBER
13499 ,p_target_ledger_id IN NUMBER
13500 ,p_language IN VARCHAR2
13501 ,p_currency_code IN VARCHAR2
13502 ,p_sla_ledger_id IN NUMBER
13503 ,p_pad_start_date IN DATE
13504 ,p_pad_end_date IN DATE
13505 ,p_primary_ledger_id IN NUMBER)
13506 RETURN BOOLEAN IS
13507 --
13508 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'STMT_CLASS_ALL';
13509 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'STMT_CLASS';
13510
13511 l_calculate_acctd_flag VARCHAR2(1) :='Y';
13512 l_calculate_g_l_flag VARCHAR2(1) :='Y';
13513 --
13514 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
13515 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
13516 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13517 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
13518 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
13519 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13520 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13521 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
13522 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
13523 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
13524 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
13525 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
13526 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
13527 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
13528 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
13529 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
13530 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
13531 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
13532 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
13533 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
13534 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
13535 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
13536 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
13537 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13538
13539 l_event_id NUMBER;
13540 l_previous_event_id NUMBER;
13541 l_first_event_id NUMBER;
13542 l_last_event_id NUMBER;
13543
13544 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
13545 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
13546 --
13547 --
13548 l_result BOOLEAN := TRUE;
13549 l_rows NUMBER := 1000;
13550 l_event_type_name VARCHAR2(80) := 'All';
13551 l_event_class_name VARCHAR2(80) := 'Bank Statement Cashflows';
13552 l_description VARCHAR2(4000);
13553 l_transaction_reversal NUMBER;
13554 l_ae_header_id NUMBER;
13555 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
13556 l_log_module VARCHAR2(240);
13557 --
13558 l_acct_reversal_source VARCHAR2(30);
13559 l_trx_reversal_source VARCHAR2(30);
13560
13561 l_continue_with_lines BOOLEAN := TRUE;
13562 --
13563 l_acc_rev_gl_date_source DATE; -- 4262811
13564 --
13565 type t_array_event_id is table of number index by binary_integer;
13566
13567 l_rec_array_event t_rec_array_event;
13568 l_null_rec_array_event t_rec_array_event;
13569 l_array_ae_header_id xla_number_array_type;
13570 l_actual_flag VARCHAR2(1) := NULL;
13571 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
13572 l_balance_type_code VARCHAR2(1) :=NULL;
13576 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
13573 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
13574
13575 --
13577 --
13578
13579 TYPE t_array_source_1 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_REFERENCE_TEXT%TYPE INDEX BY BINARY_INTEGER;
13580 TYPE t_array_source_2 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
13581 TYPE t_array_source_5 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_BA_CASH_ACCT_CCID%TYPE INDEX BY BINARY_INTEGER;
13582 TYPE t_array_source_7 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_OFFSET_CCID%TYPE INDEX BY BINARY_INTEGER;
13583 TYPE t_array_source_9 IS TABLE OF CE_XLA_EXT_HEADERS_V.REVERSAL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
13584 TYPE t_array_source_10 IS TABLE OF CE_XLA_EXT_HEADERS_V.CASHFLOW_NUMBER%TYPE INDEX BY BINARY_INTEGER;
13585 TYPE t_array_source_11 IS TABLE OF CE_XLA_EXT_HEADERS_V.CASHFLOW_HIST_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
13586 TYPE t_array_source_12 IS TABLE OF CE_XLA_EXT_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
13587 TYPE t_array_source_13 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_BA_CURRENCY%TYPE INDEX BY BINARY_INTEGER;
13588 TYPE t_array_source_14 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_EXCHANGE_DATE%TYPE INDEX BY BINARY_INTEGER;
13589 TYPE t_array_source_15 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
13590 TYPE t_array_source_16 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_EXC_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
13591 TYPE t_array_source_17 IS TABLE OF CE_XLA_EXT_HEADERS_V.REVERSAL_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
13592 TYPE t_array_source_18 IS TABLE OF CE_XLA_EXT_HEADERS_V.REVERSAL_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
13593 TYPE t_array_source_19 IS TABLE OF CE_XLA_EXT_HEADERS_V.REVERSAL_DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
13594 TYPE t_array_source_22 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_DIRECTION%TYPE INDEX BY BINARY_INTEGER;
13595 TYPE t_array_source_23 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
13596 TYPE t_array_source_29 IS TABLE OF CE_XLA_EXT_HEADERS_V.ACCOUNTING_DATE%TYPE INDEX BY BINARY_INTEGER;
13597
13598
13599 l_array_source_1 t_array_source_1;
13600 l_array_source_2 t_array_source_2;
13601 l_array_source_5 t_array_source_5;
13602 l_array_source_7 t_array_source_7;
13603 l_array_source_9 t_array_source_9;
13604 l_array_source_10 t_array_source_10;
13605 l_array_source_11 t_array_source_11;
13606 l_array_source_12 t_array_source_12;
13607 l_array_source_13 t_array_source_13;
13608 l_array_source_14 t_array_source_14;
13609 l_array_source_15 t_array_source_15;
13610 l_array_source_16 t_array_source_16;
13611 l_array_source_17 t_array_source_17;
13612 l_array_source_18 t_array_source_18;
13613 l_array_source_19 t_array_source_19;
13614 l_array_source_22 t_array_source_22;
13615 l_array_source_22_meaning t_array_lookup_meaning;
13616 l_array_source_23 t_array_source_23;
13617 l_array_source_29 t_array_source_29;
13618
13619
13620 --
13621 CURSOR header_cur
13622 IS
13623 SELECT /*+ leading(xet) cardinality(xet,1) */
13624 -- Event Class Code: STMT_CLASS
13625 xet.entity_id
13626 ,xet.legal_entity_id
13627 ,xet.entity_code
13628 ,xet.transaction_number
13629 ,xet.event_id
13630 ,xet.event_class_code
13631 ,xet.event_type_code
13632 ,xet.event_number
13633 ,xet.event_date
13634 ,xet.transaction_date
13635 ,xet.reference_num_1
13636 ,xet.reference_num_2
13637 ,xet.reference_num_3
13638 ,xet.reference_num_4
13639 ,xet.reference_char_1
13640 ,xet.reference_char_2
13641 ,xet.reference_char_3
13642 ,xet.reference_char_4
13643 ,xet.reference_date_1
13644 ,xet.reference_date_2
13645 ,xet.reference_date_3
13646 ,xet.reference_date_4
13647 ,xet.event_created_by
13648 ,xet.budgetary_control_flag
13649 , h1.CF_REFERENCE_TEXT source_1
13650 , h1.CF_DESCRIPTION source_2
13651 , h1.CF_BA_CASH_ACCT_CCID source_5
13652 , h1.CF_OFFSET_CCID source_7
13653 , h1.REVERSAL_INDICATOR source_9
13654 , h1.CASHFLOW_NUMBER source_10
13655 , h1.CASHFLOW_HIST_IDENTIFIER source_11
13656 , h1.DISTRIBUTION_TYPE source_12
13657 , h1.CF_BA_CURRENCY source_13
13658 , h1.CF_CLEARED_EXCHANGE_DATE source_14
13659 , h1.CF_CLEARED_EXCHANGE_RATE source_15
13660 , h1.CF_CLEARED_EXC_RATE_TYPE source_16
13661 , h1.REVERSAL_FIRST_DIST_ID source_17
13662 , h1.REVERSAL_SECOND_DIST_ID source_18
13663 , h1.REVERSAL_DIST_TYPE source_19
13664 , h1.CF_DIRECTION source_22
13665 , fvl22.meaning source_22_meaning
13666 , h1.CF_CLEARED_AMOUNT source_23
13667 , h1.ACCOUNTING_DATE source_29
13668 FROM xla_events_gt xet
13669 , CE_XLA_EXT_HEADERS_V h1
13670 , fnd_lookup_values fvl22
13671 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
13672 and xet.event_class_code = C_EVENT_CLASS_CODE
13673 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
13674 AND fvl22.lookup_type(+) = 'CE_CASHFLOW_DIRECTION'
13675 AND fvl22.lookup_code(+) = h1.CF_DIRECTION
13676 AND fvl22.view_application_id(+) = 260
13677 AND fvl22.language(+) = USERENV('LANG')
13678
13679 ORDER BY event_id
13680 ;
13681
13682
13683 --
13684 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
13685 IS
13686 SELECT /*+ leading(xet) cardinality(xet,1) */
13687 -- Event Class Code: STMT_CLASS
13688 xet.entity_id
13689 ,xet.legal_entity_id
13690 ,xet.entity_code
13691 ,xet.transaction_number
13692 ,xet.event_id
13693 ,xet.event_class_code
13694 ,xet.event_type_code
13695 ,xet.event_number
13696 ,xet.event_date
13700 ,xet.reference_num_3
13697 ,xet.transaction_date
13698 ,xet.reference_num_1
13699 ,xet.reference_num_2
13701 ,xet.reference_num_4
13702 ,xet.reference_char_1
13703 ,xet.reference_char_2
13704 ,xet.reference_char_3
13705 ,xet.reference_char_4
13706 ,xet.reference_date_1
13707 ,xet.reference_date_2
13708 ,xet.reference_date_3
13709 ,xet.reference_date_4
13710 ,xet.event_created_by
13711 ,xet.budgetary_control_flag
13712 , 0
13713 FROM xla_events_gt xet
13714 WHERE xet.event_id between x_first_event_id and x_last_event_id
13715 and xet.event_date between p_pad_start_date and p_pad_end_date
13716 and xet.event_class_code = C_EVENT_CLASS_CODE
13717 and xet.event_status_code <> 'N' ;
13718
13719 --
13720 BEGIN
13721 IF g_log_enabled THEN
13722 l_log_module := C_DEFAULT_MODULE||'.EventClass_28';
13723 END IF;
13724 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13725 trace
13726 (p_msg => 'BEGIN of EventClass_28'
13727 ,p_level => C_LEVEL_PROCEDURE
13728 ,p_module => l_log_module);
13729 END IF;
13730
13731 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13732 trace
13733 (p_msg => 'p_application_id = '||p_application_id||
13734 ' - p_base_ledger_id = '||p_base_ledger_id||
13735 ' - p_target_ledger_id = '||p_target_ledger_id||
13736 ' - p_language = '||p_language||
13737 ' - p_currency_code = '||p_currency_code||
13738 ' - p_sla_ledger_id = '||p_sla_ledger_id
13739 ,p_level => C_LEVEL_STATEMENT
13740 ,p_module => l_log_module);
13741 END IF;
13742 --
13743 -- initialze arrays
13744 --
13745 g_array_event.DELETE;
13746 l_rec_array_event := l_null_rec_array_event;
13747 --
13748 --------------------------------------
13749 -- 4262811 Initialze MPA Line Number
13750 --------------------------------------
13751 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
13752
13753 --
13754
13755 --
13756 OPEN header_cur;
13757 --
13758 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13759 trace
13760 (p_msg => 'SQL - FETCH header_cur'
13761 ,p_level => C_LEVEL_STATEMENT
13762 ,p_module => l_log_module);
13763 END IF;
13764 --
13765 LOOP
13766 FETCH header_cur BULK COLLECT INTO
13767 l_array_entity_id
13768 , l_array_legal_entity_id
13769 , l_array_entity_code
13770 , l_array_transaction_num
13771 , l_array_event_id
13772 , l_array_class_code
13773 , l_array_event_type
13774 , l_array_event_number
13775 , l_array_event_date
13776 , l_array_transaction_date
13777 , l_array_reference_num_1
13778 , l_array_reference_num_2
13779 , l_array_reference_num_3
13780 , l_array_reference_num_4
13781 , l_array_reference_char_1
13782 , l_array_reference_char_2
13783 , l_array_reference_char_3
13784 , l_array_reference_char_4
13785 , l_array_reference_date_1
13786 , l_array_reference_date_2
13787 , l_array_reference_date_3
13788 , l_array_reference_date_4
13789 , l_array_event_created_by
13790 , l_array_budgetary_control_flag
13791 , l_array_source_1
13792 , l_array_source_2
13793 , l_array_source_5
13794 , l_array_source_7
13795 , l_array_source_9
13796 , l_array_source_10
13797 , l_array_source_11
13798 , l_array_source_12
13799 , l_array_source_13
13800 , l_array_source_14
13801 , l_array_source_15
13802 , l_array_source_16
13803 , l_array_source_17
13804 , l_array_source_18
13805 , l_array_source_19
13806 , l_array_source_22
13807 , l_array_source_22_meaning
13808 , l_array_source_23
13809 , l_array_source_29
13810 LIMIT l_rows;
13811 --
13812 IF (C_LEVEL_EVENT >= g_log_level) THEN
13813 trace
13814 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
13815 ,p_level => C_LEVEL_EVENT
13816 ,p_module => l_log_module);
13817 END IF;
13818 --
13819 EXIT WHEN l_array_entity_id.COUNT = 0;
13820
13821 -- initialize arrays
13822 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
13823 XLA_AE_LINES_PKG.g_rec_lines := NULL;
13824
13825 --
13826 -- Bug 4458708
13827 --
13828 XLA_AE_LINES_PKG.g_LineNumber := 0;
13829
13830
13831 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
13832 g_last_hdr_idx := l_array_event_id.LAST;
13833 --
13834 -- loop for the headers. Each iteration is for each header extract row
13835 -- fetched in header cursor
13836 --
13837 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
13838
13839 --
13840 -- set event info as cache for other routines to refer event attributes
13841 --
13842 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
13843 (p_application_id => p_application_id
13844 ,p_primary_ledger_id => p_primary_ledger_id
13845 ,p_base_ledger_id => p_base_ledger_id
13846 ,p_target_ledger_id => p_target_ledger_id
13847 ,p_entity_id => l_array_entity_id(hdr_idx)
13848 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
13849 ,p_entity_code => l_array_entity_code(hdr_idx)
13850 ,p_transaction_num => l_array_transaction_num(hdr_idx)
13851 ,p_event_id => l_array_event_id(hdr_idx)
13852 ,p_event_class_code => l_array_class_code(hdr_idx)
13853 ,p_event_type_code => l_array_event_type(hdr_idx)
13857 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
13854 ,p_event_number => l_array_event_number(hdr_idx)
13855 ,p_event_date => l_array_event_date(hdr_idx)
13856 ,p_transaction_date => l_array_transaction_date(hdr_idx)
13858 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
13859 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
13860 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
13861 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
13862 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
13863 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
13864 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
13865 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
13866 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
13867 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
13868 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
13869 ,p_event_created_by => l_array_event_created_by(hdr_idx)
13870 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
13871
13872 --
13873 -- set the status of entry to C_VALID (0)
13874 --
13875 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
13876
13877 --
13878 -- initialize a row for ae header
13879 --
13880 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
13881
13882 l_event_id := l_array_event_id(hdr_idx);
13883
13884 --
13885 -- storing the hdr_idx for event. May be used by line cursor.
13886 --
13887 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
13888
13889 --
13890 -- store sources from header extract. This can be improved to
13891 -- store only those sources from header extract that may be used in lines
13892 --
13893
13894 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
13895 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
13896 g_array_event(l_event_id).array_value_num('source_5') := l_array_source_5(hdr_idx);
13897 g_array_event(l_event_id).array_value_num('source_7') := l_array_source_7(hdr_idx);
13898 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
13899 g_array_event(l_event_id).array_value_num('source_10') := l_array_source_10(hdr_idx);
13900 g_array_event(l_event_id).array_value_char('source_11') := l_array_source_11(hdr_idx);
13901 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
13902 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
13903 g_array_event(l_event_id).array_value_date('source_14') := l_array_source_14(hdr_idx);
13904 g_array_event(l_event_id).array_value_num('source_15') := l_array_source_15(hdr_idx);
13905 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
13906 g_array_event(l_event_id).array_value_num('source_17') := l_array_source_17(hdr_idx);
13907 g_array_event(l_event_id).array_value_char('source_18') := l_array_source_18(hdr_idx);
13908 g_array_event(l_event_id).array_value_char('source_19') := l_array_source_19(hdr_idx);
13909 g_array_event(l_event_id).array_value_char('source_22') := l_array_source_22(hdr_idx);
13910 g_array_event(l_event_id).array_value_char('source_22_meaning') := l_array_source_22_meaning(hdr_idx);
13911 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
13912 g_array_event(l_event_id).array_value_date('source_29') := l_array_source_29(hdr_idx);
13913
13914 --
13915 -- initilaize the status of ae headers for diffrent balance types
13916 -- the status is initialised to C_NOT_CREATED (2)
13917 --
13918 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
13919 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
13920 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
13921
13922 --
13923 -- call api to validate and store accounting attributes for header
13924 --
13925
13926 ------------------------------------------------------------
13927 -- Accrual Reversal : to get date for Standard Source (NONE)
13928 ------------------------------------------------------------
13929 l_acc_rev_gl_date_source := NULL;
13930
13931 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
13932 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_29');
13933
13934
13935 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
13936
13937 XLA_AE_HEADER_PKG.SetJeCategoryName;
13938
13939 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
13940 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
13941 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
13942 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
13943 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
13944
13945
13946 --
13947 xla_ae_header_pkg.SetHdrDescription(
13948 p_description => Description_1 (
13949 p_application_id => p_application_id
13950 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
13951 )
13952 );
13953 --
13954
13955
13956
13957 --
13958 --accounting attribute enhancement, bug 3612931
13959 --
13960 l_trx_reversal_source := SUBSTR(NULL, 1,30);
13961
13962 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
13963 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
13964
13965 xla_accounting_err_pkg.build_message
13966 (p_appli_s_name => 'XLA'
13967 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
13971 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
13968 ,p_token_1 => 'ACCT_ATTR_NAME'
13969 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
13970 ,p_token_2 => 'PRODUCT_NAME'
13972 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
13973 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
13974 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
13975
13976 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
13977 --
13978 -- following sets the accounting attributes needed to reverse
13979 -- accounting for a distributeion
13980 --
13981 xla_ae_lines_pkg.SetTrxReversalAttrs
13982 (p_event_id => l_event_id
13983 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
13984 ,p_trx_reversal_source => l_trx_reversal_source);
13985
13986 END IF;
13987
13988
13989 ----------------------------------------------------------------
13990 -- 4262811 - update the header statuses to invalid in need be
13991 ----------------------------------------------------------------
13992 --
13993 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
13994
13995
13996 -----------------------------------------------
13997 -- No accrual reversal for the event class/type
13998 -----------------------------------------------
13999 ----------------------------------------------------------------
14000
14001 --
14002 -- this ends the header loop iteration for one bulk fetch
14003 --
14004 END LOOP;
14005
14006 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
14007 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
14008
14009 --
14010 -- insert dummy rows into lines gt table that were created due to
14011 -- transaction reversals
14012 --
14013 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
14014 l_result := XLA_AE_LINES_PKG.InsertLines;
14015 END IF;
14016
14017 --
14018 -- reset the temp_line_num for each set of events fetched from header
14019 -- cursor rather than doing it for each new event in line cursor
14020 -- Bug 3939231
14021 --
14022 xla_ae_lines_pkg.g_temp_line_num := 0;
14023
14024
14025
14026 --
14027 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
14028 --
14029 --
14030 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14031
14032 trace
14033 (p_msg => 'SQL - FETCH line_cur'
14034 ,p_level => C_LEVEL_STATEMENT
14035 ,p_module => l_log_module);
14036
14037 END IF;
14038 --
14039 --
14040 LOOP
14041 --
14042 FETCH line_cur BULK COLLECT INTO
14043 l_array_entity_id
14044 , l_array_legal_entity_id
14045 , l_array_entity_code
14046 , l_array_transaction_num
14047 , l_array_event_id
14048 , l_array_class_code
14049 , l_array_event_type
14050 , l_array_event_number
14051 , l_array_event_date
14052 , l_array_transaction_date
14053 , l_array_reference_num_1
14054 , l_array_reference_num_2
14055 , l_array_reference_num_3
14056 , l_array_reference_num_4
14057 , l_array_reference_char_1
14058 , l_array_reference_char_2
14059 , l_array_reference_char_3
14060 , l_array_reference_char_4
14061 , l_array_reference_date_1
14062 , l_array_reference_date_2
14063 , l_array_reference_date_3
14064 , l_array_reference_date_4
14065 , l_array_event_created_by
14066 , l_array_budgetary_control_flag
14067 , l_array_extract_line_num
14068 LIMIT l_rows;
14069
14070 --
14071 IF (C_LEVEL_EVENT >= g_log_level) THEN
14072 trace
14073 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
14074 ,p_level => C_LEVEL_EVENT
14075 ,p_module => l_log_module);
14076 END IF;
14077 --
14078 EXIT WHEN l_array_entity_id.count = 0;
14079
14080 XLA_AE_LINES_PKG.g_rec_lines := null;
14081
14082 --
14083 -- Bug 4458708
14084 --
14085 XLA_AE_LINES_PKG.g_LineNumber := 0;
14086 --
14087 --
14088
14089 FOR Idx IN 1..l_array_event_id.count LOOP
14090 --
14091 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
14092 --
14093 l_event_id := l_array_event_id(idx); -- 5648433
14094
14095 --
14096 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
14097 --
14098
14099 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
14100 (g_array_event(l_event_id).array_value_num('header_index'))
14101 ,'N'
14102 ) <> 'Y'
14103 THEN
14104 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14105 trace
14106 (p_msg => 'Trancaction revesal option is not Y '
14107 ,p_level => C_LEVEL_STATEMENT
14108 ,p_module => l_log_module);
14109 END IF;
14110
14111 --
14112 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
14113 --
14114 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
14115 --
14116 -- set event info as cache for other routines to refer event attributes
14117 --
14118
14119 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
14120 l_previous_event_id := l_event_id;
14121
14122 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
14123 (p_application_id => p_application_id
14127 ,p_entity_id => l_array_entity_id(Idx)
14124 ,p_primary_ledger_id => p_primary_ledger_id
14125 ,p_base_ledger_id => p_base_ledger_id
14126 ,p_target_ledger_id => p_target_ledger_id
14128 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
14129 ,p_entity_code => l_array_entity_code(Idx)
14130 ,p_transaction_num => l_array_transaction_num(Idx)
14131 ,p_event_id => l_array_event_id(Idx)
14132 ,p_event_class_code => l_array_class_code(Idx)
14133 ,p_event_type_code => l_array_event_type(Idx)
14134 ,p_event_number => l_array_event_number(Idx)
14135 ,p_event_date => l_array_event_date(Idx)
14136 ,p_transaction_date => l_array_transaction_date(Idx)
14137 ,p_reference_num_1 => l_array_reference_num_1(Idx)
14138 ,p_reference_num_2 => l_array_reference_num_2(Idx)
14139 ,p_reference_num_3 => l_array_reference_num_3(Idx)
14140 ,p_reference_num_4 => l_array_reference_num_4(Idx)
14141 ,p_reference_char_1 => l_array_reference_char_1(Idx)
14142 ,p_reference_char_2 => l_array_reference_char_2(Idx)
14143 ,p_reference_char_3 => l_array_reference_char_3(Idx)
14144 ,p_reference_char_4 => l_array_reference_char_4(Idx)
14145 ,p_reference_date_1 => l_array_reference_date_1(Idx)
14146 ,p_reference_date_2 => l_array_reference_date_2(Idx)
14147 ,p_reference_date_3 => l_array_reference_date_3(Idx)
14148 ,p_reference_date_4 => l_array_reference_date_4(Idx)
14149 ,p_event_created_by => l_array_event_created_by(Idx)
14150 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
14151 --
14152 END IF;
14153
14154
14155
14156 --
14157 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
14158
14159 l_acct_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_9'), 1,30);
14160
14161 IF l_continue_with_lines THEN
14162 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
14163 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
14164
14165 xla_accounting_err_pkg.build_message
14166 (p_appli_s_name => 'XLA'
14167 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
14168 ,p_token_1 => 'LINE_NUMBER'
14169 ,p_value_1 => l_array_extract_line_num(Idx)
14170 ,p_token_2 => 'PRODUCT_NAME'
14171 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
14172 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
14173 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
14174 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
14175
14176 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
14177 --
14178 -- following sets the accounting attributes needed to reverse
14179 -- accounting for a distributeion
14180 --
14181
14182 --
14183 -- 5217187
14184 --
14185 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
14186 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
14187 g_array_event(l_event_id).array_value_num('header_index'));
14188 --
14189 --
14190
14191 l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
14192 l_rec_rev_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_9');
14193 l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
14194 l_rec_rev_acct_attrs.array_num_value(3) := g_array_event(l_event_id).array_value_num('source_10');
14195 l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_IDENTIFIER_2';
14196 l_rec_rev_acct_attrs.array_char_value(4) := g_array_event(l_event_id).array_value_char('source_11');
14197 l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'DISTRIBUTION_TYPE';
14198 l_rec_rev_acct_attrs.array_char_value(5) := g_array_event(l_event_id).array_value_char('source_12');
14199 l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'REVERSED_DISTRIBUTION_ID1';
14200 l_rec_rev_acct_attrs.array_num_value(6) := g_array_event(l_event_id).array_value_num('source_17');
14201 l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'REVERSED_DISTRIBUTION_ID2';
14202 l_rec_rev_acct_attrs.array_char_value(7) := g_array_event(l_event_id).array_value_char('source_18');
14203 l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'REVERSED_DISTRIBUTION_TYPE';
14204 l_rec_rev_acct_attrs.array_char_value(8) := g_array_event(l_event_id).array_value_char('source_19');
14205
14206
14207 xla_ae_lines_pkg.SetAcctReversalAttrs
14208 (p_event_id => l_event_id
14209 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
14210 ,p_calculate_acctd_flag => l_calculate_acctd_flag
14211 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
14212 END IF;
14213
14214 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
14215 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
14216
14217 --
14218 AcctLineType_22 (
14219 p_application_id => p_application_id
14220 ,p_event_id => l_event_id
14221 ,p_calculate_acctd_flag => l_calculate_acctd_flag
14222 ,p_calculate_g_l_flag => l_calculate_g_l_flag
14223 ,p_actual_flag => l_actual_flag
14224 ,p_balance_type_code => l_balance_type_code
14225 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
14226
14227 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
14228 , p_source_5 => g_array_event(l_event_id).array_value_num('source_5')
14229 , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
14233 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
14230 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
14231 , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
14232 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
14234 , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
14235 , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
14236 , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
14237 , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
14238 , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
14239 , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
14240 , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
14241 , p_source_22_meaning => g_array_event(l_event_id).array_value_char('source_22_meaning')
14242 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
14243 );
14244 If(l_balance_type_code = 'A') THEN
14245 l_actual_gain_loss_ref := l_gain_or_loss_ref;
14246 END IF;
14247
14248 --
14249
14250
14251 --
14252 AcctLineType_23 (
14253 p_application_id => p_application_id
14254 ,p_event_id => l_event_id
14255 ,p_calculate_acctd_flag => l_calculate_acctd_flag
14256 ,p_calculate_g_l_flag => l_calculate_g_l_flag
14257 ,p_actual_flag => l_actual_flag
14258 ,p_balance_type_code => l_balance_type_code
14259 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
14260
14261 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
14262 , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
14263 , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
14264 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
14265 , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
14266 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
14267 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
14268 , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
14269 , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
14270 , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
14271 , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
14272 , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
14273 , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
14274 , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
14275 , p_source_22_meaning => g_array_event(l_event_id).array_value_char('source_22_meaning')
14276 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
14277 );
14278 If(l_balance_type_code = 'A') THEN
14279 l_actual_gain_loss_ref := l_gain_or_loss_ref;
14280 END IF;
14281
14282 --
14283
14284
14285 --
14286 AcctLineType_24 (
14287 p_application_id => p_application_id
14288 ,p_event_id => l_event_id
14289 ,p_calculate_acctd_flag => l_calculate_acctd_flag
14290 ,p_calculate_g_l_flag => l_calculate_g_l_flag
14291 ,p_actual_flag => l_actual_flag
14292 ,p_balance_type_code => l_balance_type_code
14293 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
14294
14295 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
14296 , p_source_5 => g_array_event(l_event_id).array_value_num('source_5')
14297 , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
14298 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
14299 , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
14300 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
14301 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
14302 , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
14303 , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
14304 , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
14305 , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
14306 , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
14307 , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
14308 , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
14309 , p_source_22_meaning => g_array_event(l_event_id).array_value_char('source_22_meaning')
14310 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
14311 );
14312 If(l_balance_type_code = 'A') THEN
14313 l_actual_gain_loss_ref := l_gain_or_loss_ref;
14314 END IF;
14315
14316 --
14317
14318
14319 --
14320 AcctLineType_25 (
14321 p_application_id => p_application_id
14322 ,p_event_id => l_event_id
14323 ,p_calculate_acctd_flag => l_calculate_acctd_flag
14324 ,p_calculate_g_l_flag => l_calculate_g_l_flag
14325 ,p_actual_flag => l_actual_flag
14326 ,p_balance_type_code => l_balance_type_code
14327 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
14328
14329 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
14330 , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
14331 , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
14332 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
14333 , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
14334 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
14335 , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
14336 , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
14337 , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
14338 , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
14339 , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
14340 , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
14344 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
14341 , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
14342 , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
14343 , p_source_22_meaning => g_array_event(l_event_id).array_value_char('source_22_meaning')
14345 );
14346 If(l_balance_type_code = 'A') THEN
14347 l_actual_gain_loss_ref := l_gain_or_loss_ref;
14348 END IF;
14349
14350 --
14351
14352 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
14353 -- or secondary ledger that has different currency with primary
14354 -- or alc that is calculated by sla
14355 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
14356 (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'))
14357
14358 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
14359 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
14360 AND (l_actual_flag = 'A')) THEN
14361 XLA_AE_LINES_PKG.CreateGainOrLossLines(
14362 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
14363 ,p_application_id => p_application_id
14364 ,p_amb_context_code => 'DEFAULT'
14365 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
14366 ,p_event_class_code => C_EVENT_CLASS_CODE
14367 ,p_event_type_code => C_EVENT_TYPE_CODE
14368
14369 ,p_gain_ccid => -1
14370 ,p_loss_ccid => -1
14371
14372 ,p_actual_flag => l_actual_flag
14373 ,p_enc_flag => null
14374 ,p_actual_g_l_ref => l_actual_gain_loss_ref
14375 ,p_enc_g_l_ref => null
14376 );
14377 END IF;
14378 END IF;
14379 END IF;
14380
14381 ELSE
14382 --
14383 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
14384 --
14385 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14386 trace
14387 (p_msg => 'Trancaction revesal option is Y'
14388 ,p_level => C_LEVEL_STATEMENT
14389 ,p_module => l_log_module);
14390 END IF;
14391 END IF;
14392
14393 END LOOP;
14394 l_result := XLA_AE_LINES_PKG.InsertLines ;
14395 end loop;
14396 close line_cur;
14397
14398
14399 --
14400 -- insert headers into xla_ae_headers_gt table
14401 --
14402 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
14403
14404 -- insert into errors table here.
14405
14406 END LOOP;
14407
14408 --
14409 -- 4865292
14410 --
14411 -- Compare g_hdr_extract_count with event count in
14412 -- CreateHeadersAndLines.
14413 --
14414 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
14415
14416 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14417 trace (p_msg => '# rows extracted from header extract objects '
14418 || ' (running total): '
14419 || g_hdr_extract_count
14420 ,p_level => C_LEVEL_STATEMENT
14421 ,p_module => l_log_module);
14422 END IF;
14423
14424 CLOSE header_cur;
14425 --
14426
14427 --
14428 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14429 trace
14430 (p_msg => 'END of EventClass_28'
14431 ,p_level => C_LEVEL_PROCEDURE
14432 ,p_module => l_log_module);
14433 END IF;
14434 --
14435 RETURN l_result;
14436 EXCEPTION
14437 WHEN xla_exceptions_pkg.application_exception THEN
14438
14439 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
14440
14441
14442 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
14443
14444 RAISE;
14445 WHEN OTHERS THEN
14446 xla_exceptions_pkg.raise_message
14447 (p_location => 'XLA_00260_AAD_S_000001_PKG.EventClass_28');
14448 END EventClass_28;
14449 --
14450
14451 --
14452 --+============================================+
14453 --| |
14454 --| PRIVATE FUNCTION |
14455 --| |
14456 --+============================================+
14457 --
14458 FUNCTION CreateHeadersAndLines
14459 (p_application_id IN NUMBER
14460 ,p_base_ledger_id IN NUMBER
14461 ,p_target_ledger_id IN NUMBER
14462 ,p_pad_start_date IN DATE
14463 ,p_pad_end_date IN DATE
14464 ,p_primary_ledger_id IN NUMBER)
14465 RETURN BOOLEAN IS
14466 l_created BOOLEAN:=FALSE;
14467 l_event_id NUMBER;
14468 l_event_date DATE;
14469 l_language VARCHAR2(30);
14470 l_currency_code VARCHAR2(30);
14471 l_sla_ledger_id NUMBER;
14472 l_log_module VARCHAR2(240);
14473
14474 BEGIN
14475 --
14476 IF g_log_enabled THEN
14477 l_log_module := C_DEFAULT_MODULE||'.CreateHeadersAndLines';
14478 END IF;
14479 --
14480 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14481 trace
14482 (p_msg => 'BEGIN of CreateHeadersAndLines'
14483 ,p_level => C_LEVEL_PROCEDURE
14484 ,p_module => l_log_module);
14485 END IF;
14486
14487 l_language := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
14488 l_currency_code := xla_ae_journal_entry_pkg.g_cache_ledgers_info.currency_code;
14489 l_sla_ledger_id := xla_ae_journal_entry_pkg.g_cache_ledgers_info.sla_ledger_id;
14490
14491 --
14492 -- initialize array of lines with NULL
14493 --
14497 -- initialize header extract count -- Bug 4865292
14494 xla_ae_lines_pkg.SetNullLine;
14495
14496 --
14498 --
14499 g_hdr_extract_count:= 0;
14500
14501
14502 l_created := EventType_26(
14503 p_application_id => p_application_id
14504 , p_base_ledger_id => p_base_ledger_id
14505 , p_target_ledger_id => p_target_ledger_id
14506 , p_language => l_language
14507 , p_currency_code => l_currency_code
14508 , p_sla_ledger_id => l_sla_ledger_id
14509 , p_pad_start_date => p_pad_start_date
14510 , p_pad_end_date => p_pad_end_date
14511 , p_primary_ledger_id => p_primary_ledger_id
14512 );
14513
14514
14515
14516 IF ( g_diagnostics_mode ='Y' ) THEN
14517
14518 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14519 trace
14520 (p_msg => 'CALL Transaction Objects Diagnostics'
14521 ,p_level => C_LEVEL_STATEMENT
14522 ,p_module => l_log_module);
14523
14524 END IF;
14525
14526 insert_sources_26(
14527 p_target_ledger_id => p_target_ledger_id
14528 , p_language => l_language
14529 , p_sla_ledger_id => l_sla_ledger_id
14530 , p_pad_start_date => p_pad_start_date
14531 , p_pad_end_date => p_pad_end_date
14532 );
14533
14534 END IF;
14535
14536 l_created := EventType_27(
14537 p_application_id => p_application_id
14538 , p_base_ledger_id => p_base_ledger_id
14539 , p_target_ledger_id => p_target_ledger_id
14540 , p_language => l_language
14541 , p_currency_code => l_currency_code
14542 , p_sla_ledger_id => l_sla_ledger_id
14543 , p_pad_start_date => p_pad_start_date
14544 , p_pad_end_date => p_pad_end_date
14545 , p_primary_ledger_id => p_primary_ledger_id
14546 );
14547
14548
14549
14550 IF ( g_diagnostics_mode ='Y' ) THEN
14551
14552 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14553 trace
14554 (p_msg => 'CALL Transaction Objects Diagnostics'
14555 ,p_level => C_LEVEL_STATEMENT
14556 ,p_module => l_log_module);
14557
14558 END IF;
14559
14560 insert_sources_27(
14561 p_target_ledger_id => p_target_ledger_id
14562 , p_language => l_language
14563 , p_sla_ledger_id => l_sla_ledger_id
14564 , p_pad_start_date => p_pad_start_date
14565 , p_pad_end_date => p_pad_end_date
14566 );
14567
14568 END IF;
14569
14570 l_created := EventClass_28(
14571 p_application_id => p_application_id
14572 , p_base_ledger_id => p_base_ledger_id
14573 , p_target_ledger_id => p_target_ledger_id
14574 , p_language => l_language
14575 , p_currency_code => l_currency_code
14576 , p_sla_ledger_id => l_sla_ledger_id
14577 , p_pad_start_date => p_pad_start_date
14578 , p_pad_end_date => p_pad_end_date
14579 , p_primary_ledger_id => p_primary_ledger_id
14580 );
14581
14582
14583
14584 IF ( g_diagnostics_mode ='Y' ) THEN
14585
14586 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14587 trace
14588 (p_msg => 'CALL Transaction Objects Diagnostics'
14589 ,p_level => C_LEVEL_STATEMENT
14590 ,p_module => l_log_module);
14591
14592 END IF;
14593
14594 insert_sources_28(
14595 p_target_ledger_id => p_target_ledger_id
14596 , p_language => l_language
14597 , p_sla_ledger_id => l_sla_ledger_id
14598 , p_pad_start_date => p_pad_start_date
14599 , p_pad_end_date => p_pad_end_date
14600 );
14601
14602 END IF;
14603
14604
14605 --
14606 -- Bug 4865292
14607 -- When the number of events and that of header extract do not match,
14608 -- set the no header extract flag to indicate there are some issues
14609 -- in header extract.
14610 --
14611 -- Event count context is set in xla_accounting_pkg.unit_processor.
14612 -- Build_Message for this error is called in xla_accounting_pkg.post_accounting
14613 -- to report it as a general error.
14614 --
14615 IF xla_context_pkg.get_event_count_context <> g_hdr_extract_count
14616 AND xla_context_pkg.get_event_nohdr_context <> 'Y' THEN
14617
14618 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14619 trace
14620 (p_msg => '# of extracted headers and events does not match'
14621 ,p_level => C_LEVEL_STATEMENT
14622 ,p_module => l_log_module);
14623
14624 trace
14625 (p_msg => '# of extracted headers: '
14626 ||g_hdr_extract_count
14627 ,p_level => C_LEVEL_STATEMENT
14628 ,p_module => l_log_module);
14629
14630 trace
14631 (p_msg => '# of events in xla_events_gt: '
14632 ||xla_context_pkg.get_event_count_context
14633 ,p_level => C_LEVEL_STATEMENT
14634 ,p_module => l_log_module);
14635
14636 trace
14637 (p_msg => 'Event No Header Extract Context: '
14638 ||xla_context_pkg.get_event_nohdr_context
14639 ,p_level => C_LEVEL_STATEMENT
14640 ,p_module => l_log_module);
14641
14645 xla_context_pkg.set_event_nohdr_context
14642 END IF;
14643
14644
14646 (p_nohdr_extract_flag => 'Y'
14647 ,p_client_id => sys_context('USERENV','CLIENT_IDENTIFIER'));
14648
14649 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14650 trace
14651 (p_msg => 'No Header Extract Flag is set to Y'
14652 ,p_level => C_LEVEL_STATEMENT
14653 ,p_module => l_log_module);
14654 END IF;
14655
14656 END IF;
14657
14658 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14659 trace
14660 (p_msg => 'END of CreateHeadersAndLines'
14661 ,p_level => C_LEVEL_PROCEDURE
14662 ,p_module => l_log_module);
14663 END IF;
14664
14665 RETURN l_created;
14666 EXCEPTION
14667 WHEN xla_exceptions_pkg.application_exception THEN
14668 RAISE;
14669 WHEN OTHERS THEN
14670 xla_exceptions_pkg.raise_message
14671 (p_location => 'XLA_00260_AAD_S_000001_PKG.CreateHeadersAndLines');
14672 END CreateHeadersAndLines;
14673 --
14674 --
14675
14676 --
14677 --+============================================+
14678 --| |
14679 --| PUBLIC FUNCTION |
14680 --| |
14681 --+============================================+
14682 --
14683 FUNCTION CreateJournalEntries
14684 (p_application_id IN NUMBER
14685 ,p_base_ledger_id IN NUMBER
14686 ,p_pad_start_date IN DATE
14687 ,p_pad_end_date IN DATE
14688 ,p_primary_ledger_id IN NUMBER)
14689 RETURN NUMBER IS
14690 l_log_module VARCHAR2(240);
14691 l_array_ledgers xla_accounting_cache_pkg.t_array_ledger_id;
14692 l_temp_result BOOLEAN;
14693 l_result NUMBER;
14694 BEGIN
14695 --
14696 IF g_log_enabled THEN
14697 l_log_module := C_DEFAULT_MODULE||'.CreateJournalEntries';
14698 END IF;
14699 --
14700 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14701 trace
14702 (p_msg => 'BEGIN of CreateJournalEntries'||
14703 ' - p_base_ledger_id = '||TO_CHAR(p_base_ledger_id)
14704 ,p_level => C_LEVEL_PROCEDURE
14705 ,p_module => l_log_module);
14706
14707 END IF;
14708
14709 --
14710 g_diagnostics_mode:= xla_accounting_engine_pkg.g_diagnostics_mode;
14711
14712 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14713 trace
14714 (p_msg => 'g_diagnostics_mode = '||g_diagnostics_mode
14715 ,p_level => C_LEVEL_STATEMENT
14716 ,p_module => l_log_module);
14717 END IF;
14718 --
14719 xla_ae_journal_entry_pkg.SetProductAcctDefinition
14720 (p_product_rule_code => 'CE_STANDARD_ACCOUNTING'
14721 ,p_product_rule_type_code => 'S'
14722 ,p_product_rule_version => ''
14723 ,p_product_rule_name => 'Cash Management Standard Accounting'
14724 ,p_amb_context_code => 'DEFAULT'
14725 );
14726
14727 l_array_ledgers :=
14728 xla_ae_journal_entry_pkg.GetAlternateCurrencyLedger
14729 (p_base_ledger_id => p_base_ledger_id);
14730
14731 FOR Idx IN 1 .. l_array_ledgers.COUNT LOOP
14732 l_temp_result :=
14733 XLA_AE_JOURNAL_ENTRY_PKG.GetLedgersInfo
14734 (p_application_id => p_application_id
14735 ,p_base_ledger_id => p_base_ledger_id
14736 ,p_target_ledger_id => l_array_ledgers(Idx)
14737 ,p_primary_ledger_id => p_primary_ledger_id
14738 ,p_pad_start_date => p_pad_start_date
14739 ,p_pad_end_date => p_pad_end_date);
14740
14741 l_temp_result :=
14742 l_temp_result AND
14743 CreateHeadersAndLines
14744 (p_application_id => p_application_id
14745 ,p_base_ledger_id => p_base_ledger_id
14746 ,p_target_ledger_id => l_array_ledgers(Idx)
14747 ,p_pad_start_date => p_pad_start_date
14748 ,p_pad_end_date => p_pad_end_date
14749 ,p_primary_ledger_id => p_primary_ledger_id
14750 );
14751 END LOOP;
14752
14753
14754 IF (g_diagnostics_mode = 'Y' AND
14755 C_LEVEL_UNEXPECTED >= g_log_level AND
14756 xla_environment_pkg.g_Req_Id IS NOT NULL ) THEN
14757
14758 xla_accounting_dump_pkg.acctg_event_extract_log(
14759 p_application_id => p_application_id
14760 ,p_request_id => xla_environment_pkg.g_Req_Id
14761 );
14762
14763 END IF;
14764
14765 CASE l_temp_result
14766 WHEN TRUE THEN l_result := 0;
14767 ELSE l_result := 2;
14768 END CASE;
14769
14770 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14771 trace
14772 (p_msg => 'return value. = '||TO_CHAR(l_result)
14773 ,p_level => C_LEVEL_PROCEDURE
14774 ,p_module => l_log_module);
14775 trace
14776 (p_msg => 'END of CreateJournalEntries '
14777 ,p_level => C_LEVEL_PROCEDURE
14778 ,p_module => l_log_module);
14779 END IF;
14780
14781 RETURN l_result;
14782 EXCEPTION
14783 WHEN xla_exceptions_pkg.application_exception THEN
14784 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14785 trace
14786 (p_msg => 'ERROR. = '||sqlerrm
14787 ,p_level => C_LEVEL_PROCEDURE
14788 ,p_module => l_log_module);
14789 END IF;
14790 RAISE;
14791 WHEN OTHERS THEN
14792 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14793 trace
14794 (p_msg => 'ERROR. = '||sqlerrm
14795 ,p_level => C_LEVEL_PROCEDURE
14796 ,p_module => l_log_module);
14797 END IF;
14798 xla_exceptions_pkg.raise_message
14802 --=============================================================================
14799 (p_location => 'XLA_00260_AAD_S_000001_PKG.CreateJournalEntries');
14800 END CreateJournalEntries;
14801 --
14803 --
14804 --
14805 --
14806 --
14807 --
14808 --
14809 --
14810 --
14811 --
14812 --
14813 --
14814 --
14815 --
14816 --
14817 --
14818 --
14819 --
14820 --
14821 --
14822 --
14823 --
14824 --
14825 --=============================================================================
14826 --=============================================================================
14827 -- *********** Initialization routine **********
14828 --=============================================================================
14829
14830 BEGIN
14831 g_log_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
14832 g_log_enabled := fnd_log.test
14833 (log_level => g_log_level
14834 ,module => C_DEFAULT_MODULE);
14835
14836 IF NOT g_log_enabled THEN
14837 g_log_level := C_LEVEL_LOG_DISABLED;
14838 END IF;
14839 --
14840 END XLA_00260_AAD_S_000001_PKG;
14841 --