[Home] [Help]
PACKAGE BODY: APPS.XLA_00206_AAD_S_000004_PKG
Source
1 PACKAGE BODY XLA_00206_AAD_S_000004_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_00206_AAD_S_000004_PKG |
10 | |
11 | DESCRIPTION |
12 | Package generated From Product Accounting Definition |
13 | Name : Loans US Federal |
14 | Code : LNS_US_FEDERAL |
15 | Owner : PRODUCT |
16 | Version : |
17 | AMB Context Code: DEFAULT |
18 | HISTORY |
19 | Generated at 06-11-2008 at 02:11:35 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_00206_AAD_S_000004_PKG';
82
83 C_CHAR CONSTANT VARCHAR2(30) := fnd_global.local_chr(12); -- 4219869 Business flow
84 C_NUM CONSTANT NUMBER := 9.99E125; -- 4219869 Business flow
85
86 g_log_level NUMBER;
87 g_log_enabled BOOLEAN;
88
89 PROCEDURE trace
90 (p_msg IN VARCHAR2
91 ,p_level IN NUMBER
92 ,p_module IN VARCHAR2 ) IS
93 BEGIN
94 ----------------------------------------------------------------------------
95 -- Following is for FND log.
96 ----------------------------------------------------------------------------
97 IF (p_msg IS NULL AND p_level >= g_log_level) THEN
98 fnd_log.message(p_level, p_module);
99 ELSIF p_level >= g_log_level THEN
100 fnd_log.string(p_level, p_module, p_msg);
101 END IF;
102
103 EXCEPTION
104 WHEN xla_exceptions_pkg.application_exception THEN
105 RAISE;
106 WHEN OTHERS THEN
107 xla_exceptions_pkg.raise_message
108 (p_location => 'XLA_00206_AAD_S_000004_PKG.trace');
109 END trace;
110
111 --
112 --+============================================+
113 --| |
114 --| PRIVATE PROCEDURES/FUNCTIONS |
115 --| |
116 --+============================================+
117 --
118
119 --
120 /*======================================================================+
121 | |
122 | Private Function |
123 | ValidateLookupMeaning |
124 | |
125 +======================================================================*/
126 FUNCTION ValidateLookupMeaning(
127 p_meaning IN VARCHAR2
128 , p_lookup_code IN VARCHAR2
129 , p_lookup_type IN VARCHAR2
130 , p_source_code IN VARCHAR2
131 , p_source_type_code IN VARCHAR2
132 , p_source_application_id IN INTEGER
133 )
134 RETURN VARCHAR2
135 IS
136 l_log_module VARCHAR2(240);
137 BEGIN
138 IF g_log_enabled THEN
139 l_log_module := C_DEFAULT_MODULE||'.ValidateLookupMeaning';
140 END IF;
141 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
142 trace
143 (p_msg => 'BEGIN of ValidateLookupMeaning'
144 ,p_level => C_LEVEL_PROCEDURE
145 ,p_module => l_log_module);
146 END IF;
147 --
148 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149 trace
150 (p_msg => 'p_source_code = '|| p_source_code||
151 ' - p_source_type_code = '|| p_source_type_code||
152 ' - p_source_application_id = '|| p_source_application_id||
153 ' - p_lookup_code = '|| p_lookup_code||
154 ' - p_lookup_type = '|| p_lookup_type||
155 ' - p_meaning = '|| p_meaning
156 ,p_level => C_LEVEL_PROCEDURE
157 ,p_module => l_log_module);
158
159 END IF;
160
161 IF p_lookup_code IS NOT NULL AND p_meaning IS NULL THEN
162 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
163 xla_accounting_err_pkg. build_message
164 (p_appli_s_name => 'XLA'
165 ,p_msg_name => 'XLA_AP_NO_LOOKUP_MEANING'
166 ,p_token_1 => 'SOURCE_NAME'
167 ,p_value_1 => xla_ae_sources_pkg.GetSourceName(
168 p_source_code
169 , p_source_type_code
170 , p_source_application_id
171 )
172 ,p_token_2 => 'LOOKUP_CODE'
173 ,p_value_2 => p_lookup_code
174 ,p_token_3 => 'LOOKUP_TYPE'
175 ,p_value_3 => p_lookup_type
176 ,p_token_4 => 'PRODUCT_NAME'
177 ,p_value_4 => xla_ae_journal_entry_pkg.g_cache_event.application_name
178 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
179 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
180 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
181 );
182
183 IF (C_LEVEL_ERROR >= g_log_level) THEN
184 trace
185 (p_msg => 'ERROR: XLA_AP_NO_LOOKUP_MEANING'
186 ,p_level => C_LEVEL_ERROR
187 ,p_module => l_log_module);
188 END IF;
189 END IF;
190
191 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192 trace
193 (p_msg => 'END of ValidateLookupMeaning'
194 ,p_level => C_LEVEL_PROCEDURE
195 ,p_module => l_log_module);
196 END IF;
197 RETURN p_meaning;
198 EXCEPTION
199 WHEN xla_exceptions_pkg.application_exception THEN
200 RETURN p_meaning;
201 WHEN OTHERS THEN
202 xla_exceptions_pkg.raise_message
203 (p_location => 'XLA_00206_AAD_S_000004_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_00206_AAD_S_000004_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 --Loan Class
241 , p_source_1 IN VARCHAR2
242 , p_source_1_meaning IN VARCHAR2
243 --Loan Type
244 , p_source_2 IN VARCHAR2
245 --Loan Number
246 , p_source_3 IN VARCHAR2
247 )
248 RETURN VARCHAR2
249 IS
250 l_component_type VARCHAR2(80) ;
251 l_component_code VARCHAR2(30) ;
252 l_component_type_code VARCHAR2(1) ;
253 l_component_appl_id INTEGER ;
254 l_amb_context_code VARCHAR2(30) ;
255 l_ledger_language VARCHAR2(30) ;
256 l_source VARCHAR2(1996) ;
257 l_description VARCHAR2(2000) ;
258 l_log_module VARCHAR2(240) ;
259 BEGIN
260 IF g_log_enabled THEN
261 l_log_module := C_DEFAULT_MODULE||'.Description_1';
262 END IF;
263 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
264 trace
265 (p_msg => 'BEGIN of Description_1'
266 ,p_level => C_LEVEL_PROCEDURE
267 ,p_module => l_log_module);
268 END IF;
269
270 l_ledger_language := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
271 l_component_type := 'AMB_DESCRIPTION';
272 l_component_code := 'LNS_HEADER_DESCRIPTION';
273 l_component_type_code := 'S';
274 l_component_appl_id := 206;
275 l_amb_context_code := 'DEFAULT';
276 l_source := NULL;
277 l_description := NULL;
278
279
280
281 IF
282 l_ledger_language = 'US' THEN
283 l_description := SUBSTR(CONCAT(l_description,'Loan Class'),1,2000);
284 l_description := SUBSTR(CONCAT(l_description,' '),1,2000);
285 END IF;
286 IF
287 l_ledger_language = 'US' THEN
288 l_description := SUBSTR(CONCAT(l_description,':'),1,2000);
289 l_description := SUBSTR(CONCAT(l_description,' '),1,2000);
290 END IF;
291 l_source := SUBSTR(
292 ValidateLookupMeaning(
293 p_meaning => p_source_1_meaning
294 , p_lookup_code => TO_CHAR(p_source_1)
295 , p_lookup_type => 'LOAN_CLASS'
296 , p_source_code => 'LOAN_CLASS_CODE'
297 , p_source_type_code => 'S'
298 , p_source_application_id => 206
299 )
300 ,1,1996);
301 IF l_source IS NOT NULL THEN
302 l_description := SUBSTR(CONCAT(l_description,l_source),1,2000);
303 l_description := SUBSTR(CONCAT(l_description,' '),1,2000);
304 END IF;
305 IF
306 l_ledger_language = 'US' THEN
307 l_description := SUBSTR(CONCAT(l_description,' Loan Type'),1,2000);
308 l_description := SUBSTR(CONCAT(l_description,' '),1,2000);
309 END IF;
310 IF
311 l_ledger_language = 'US' THEN
312 l_description := SUBSTR(CONCAT(l_description,':'),1,2000);
313 l_description := SUBSTR(CONCAT(l_description,' '),1,2000);
314 END IF;
315 l_source := SUBSTR(p_source_2,1,1996);
316 IF l_source IS NOT NULL THEN
317 l_description := SUBSTR(CONCAT(l_description,l_source),1,2000);
321 l_ledger_language = 'US' THEN
318 l_description := SUBSTR(CONCAT(l_description,' '),1,2000);
319 END IF;
320 IF
322 l_description := SUBSTR(CONCAT(l_description,' Loan Number'),1,2000);
323 l_description := SUBSTR(CONCAT(l_description,' '),1,2000);
324 END IF;
325 IF
326 l_ledger_language = 'US' THEN
327 l_description := SUBSTR(CONCAT(l_description,' :'),1,2000);
328 l_description := SUBSTR(CONCAT(l_description,' '),1,2000);
329 END IF;
330 l_source := SUBSTR(p_source_3,1,1996);
331 IF l_source IS NOT NULL THEN
332 l_description := SUBSTR(CONCAT(l_description,l_source),1,2000);
333 l_description := SUBSTR(CONCAT(l_description,' '),1,2000);
334 END IF;
335 l_description := SUBSTR(l_description,1,1996);
336 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
337 trace
338 (p_msg => 'END of Description_1'
339 ,p_level => C_LEVEL_PROCEDURE
340 ,p_module => l_log_module);
341
342 END IF;
343 RETURN l_description;
344
345 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
346 trace
347 (p_msg => 'END of Description_1'
348 ,p_level => C_LEVEL_PROCEDURE
349 ,p_module => l_log_module);
350 END IF;
351 RETURN NULL;
352 EXCEPTION
353 WHEN VALUE_ERROR THEN
354 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
355 trace
356 (p_msg => 'ERROR: '||sqlerrm
357 ,p_level => C_LEVEL_EXCEPTION
358 ,p_module => l_log_module);
359 END IF;
360 RAISE;
361 WHEN xla_exceptions_pkg.application_exception THEN
362 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
363 trace
364 (p_msg => 'ERROR: '||sqlerrm
365 ,p_level => C_LEVEL_EXCEPTION
366 ,p_module => l_log_module);
367 END IF;
368 RAISE;
369 WHEN OTHERS THEN
370 xla_exceptions_pkg.raise_message
371 (p_location => 'XLA_00206_AAD_S_000004_PKG.Description_1');
372 END Description_1;
373
374 ---------------------------------------
375 --
376 -- PRIVATE FUNCTION
377 -- Description_2
378 --
379 ---------------------------------------
380 FUNCTION Description_2 (
381 p_application_id IN NUMBER
382 , p_ae_header_id IN NUMBER DEFAULT NULL
383 --Account Name
384 , p_source_4 IN VARCHAR2
385 , p_source_4_meaning IN VARCHAR2
386 )
387 RETURN VARCHAR2
388 IS
389 l_component_type VARCHAR2(80) ;
390 l_component_code VARCHAR2(30) ;
391 l_component_type_code VARCHAR2(1) ;
392 l_component_appl_id INTEGER ;
393 l_amb_context_code VARCHAR2(30) ;
394 l_ledger_language VARCHAR2(30) ;
395 l_source VARCHAR2(1996) ;
396 l_description VARCHAR2(2000) ;
397 l_log_module VARCHAR2(240) ;
398 BEGIN
399 IF g_log_enabled THEN
400 l_log_module := C_DEFAULT_MODULE||'.Description_2';
401 END IF;
402 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
403 trace
404 (p_msg => 'BEGIN of Description_2'
405 ,p_level => C_LEVEL_PROCEDURE
406 ,p_module => l_log_module);
407 END IF;
408
409 l_ledger_language := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
410 l_component_type := 'AMB_DESCRIPTION';
411 l_component_code := 'LNS_LINE_DESCRIPTION';
412 l_component_type_code := 'S';
413 l_component_appl_id := 206;
414 l_amb_context_code := 'DEFAULT';
415 l_source := NULL;
416 l_description := NULL;
417
418
419
420 IF
421 l_ledger_language = 'US' THEN
422 l_description := SUBSTR(CONCAT(l_description,'Distribution Account Type'),1,2000);
423 l_description := SUBSTR(CONCAT(l_description,' '),1,2000);
424 END IF;
425 IF
426 l_ledger_language = 'US' THEN
427 l_description := SUBSTR(CONCAT(l_description,':'),1,2000);
428 l_description := SUBSTR(CONCAT(l_description,' '),1,2000);
429 END IF;
430 l_source := SUBSTR(
431 ValidateLookupMeaning(
432 p_meaning => p_source_4_meaning
433 , p_lookup_code => TO_CHAR(p_source_4)
434 , p_lookup_type => 'LOAN_DISTRIBUTION_ACCOUNTS'
435 , p_source_code => 'ACCOUNT_NAME'
436 , p_source_type_code => 'S'
437 , p_source_application_id => 206
438 )
439 ,1,1996);
440 IF l_source IS NOT NULL THEN
441 l_description := SUBSTR(CONCAT(l_description,l_source),1,2000);
442 l_description := SUBSTR(CONCAT(l_description,' '),1,2000);
443 END IF;
444 l_description := SUBSTR(l_description,1,1996);
445 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
446 trace
447 (p_msg => 'END of Description_2'
448 ,p_level => C_LEVEL_PROCEDURE
449 ,p_module => l_log_module);
450
451 END IF;
452 RETURN l_description;
453
454 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
455 trace
456 (p_msg => 'END of Description_2'
457 ,p_level => C_LEVEL_PROCEDURE
458 ,p_module => l_log_module);
459 END IF;
463 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
460 RETURN NULL;
461 EXCEPTION
462 WHEN VALUE_ERROR THEN
464 trace
465 (p_msg => 'ERROR: '||sqlerrm
466 ,p_level => C_LEVEL_EXCEPTION
467 ,p_module => l_log_module);
468 END IF;
469 RAISE;
470 WHEN xla_exceptions_pkg.application_exception THEN
471 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
472 trace
473 (p_msg => 'ERROR: '||sqlerrm
474 ,p_level => C_LEVEL_EXCEPTION
475 ,p_module => l_log_module);
476 END IF;
477 RAISE;
478 WHEN OTHERS THEN
479 xla_exceptions_pkg.raise_message
480 (p_location => 'XLA_00206_AAD_S_000004_PKG.Description_2');
481 END Description_2;
482
483 ---------------------------------------
484 --
485 -- PRIVATE FUNCTION
486 -- AcctDerRule_3
487 --
488 ---------------------------------------
489 FUNCTION AcctDerRule_3 (
490 p_application_id IN NUMBER
491 , p_ae_header_id IN NUMBER
492 , p_side IN VARCHAR2
493 --Code Combination ID
494 , p_source_5 IN NUMBER
495 , x_transaction_coa_id OUT NOCOPY NUMBER
496 , x_accounting_coa_id OUT NOCOPY NUMBER
497 , x_value_type_code OUT NOCOPY VARCHAR2
498 )
499 RETURN NUMBER
500 IS
501 l_component_type VARCHAR2(80) ;
502 l_component_code VARCHAR2(30) ;
503 l_component_type_code VARCHAR2(1) ;
504 l_component_appl_id INTEGER ;
505 l_amb_context_code VARCHAR2(30) ;
506 l_log_module VARCHAR2(240) ;
507 l_output_value NUMBER ;
508 BEGIN
509 IF g_log_enabled THEN
510 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_3';
511 END IF;
512 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
513 trace
514 (p_msg => 'BEGIN of AcctDerRule_3'
515 ,p_level => C_LEVEL_PROCEDURE
516 ,p_module => l_log_module);
517 END IF;
518 --
519 l_component_type := 'AMB_ADR';
520 l_component_code := 'LNS_DIST_CCID';
521 l_component_type_code := 'S';
522 l_component_appl_id := 206;
523 l_amb_context_code := 'DEFAULT';
524 x_transaction_coa_id := null;
525 x_accounting_coa_id := null;
526 --
527
528 --
529 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
530 trace
531 (p_msg => 'END of AcctDerRule_3'
532 ,p_level => C_LEVEL_PROCEDURE
533 ,p_module => l_log_module);
534 END IF;
535 x_value_type_code := 'S';
536 l_output_value := TO_NUMBER(TO_NUMBER(p_source_5));
537 RETURN l_output_value;
538
539 --
540 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
541 trace
542 (p_msg => 'END of AcctDerRule_3(invalid)'
543 ,p_level => C_LEVEL_PROCEDURE
544 ,p_module => l_log_module);
545 END IF;
546 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
547 x_value_type_code := null;
548 l_output_value := null;
549 xla_accounting_err_pkg.build_message
550 (p_appli_s_name => 'XLA'
551 ,p_msg_name => 'XLA_AP_INVALID_ADR'
552 ,p_token_1 => 'COMPONENT_NAME'
553 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
554 l_component_type
555 , l_component_code
556 , l_component_type_code
557 , l_component_appl_id
558 , l_amb_context_code
559 )
560 ,p_token_2 => 'OWNER'
561 ,p_value_2 => xla_lookups_pkg.get_meaning(
562 'XLA_OWNER_TYPE'
563 ,l_component_type_code
564 )
565 ,p_token_3 => 'PAD_NAME'
566 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
567 ,p_token_4 => 'PAD_OWNER'
568 ,p_value_4 => xla_lookups_pkg.get_meaning(
569 'XLA_OWNER_TYPE'
570 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
571 )
572 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
573 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
574 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
575 ,p_ae_header_id => NULL
576 );
577 RETURN l_output_value;
578 EXCEPTION
579 WHEN xla_exceptions_pkg.application_exception THEN
580 RAISE;
581 WHEN OTHERS THEN
582 xla_exceptions_pkg.raise_message
583 (p_location => 'XLA_00206_AAD_S_000004_PKG.AcctDerRule_3');
584 END AcctDerRule_3;
585 --
586
590 -- AcctLineType_4
587 ---------------------------------------
588 --
589 -- PRIVATE FUNCTION
591 --
592 ---------------------------------------
593 PROCEDURE AcctLineType_4 (
594 p_application_id IN NUMBER
595 ,p_event_id IN NUMBER
596 ,p_calculate_acctd_flag IN VARCHAR2
597 ,p_calculate_g_l_flag IN VARCHAR2
598 ,p_actual_flag IN OUT VARCHAR2
599 ,p_balance_type_code OUT VARCHAR2
600 ,p_gain_or_loss_ref OUT VARCHAR2
601
602 --Account Name
603 , p_source_4 IN VARCHAR2
604 , p_source_4_meaning IN VARCHAR2
605 --Code Combination ID
606 , p_source_5 IN NUMBER
607 --Account Type
608 , p_source_6 IN VARCHAR2
609 , p_source_6_meaning IN VARCHAR2
610 --Distribution Line Type
611 , p_source_7 IN VARCHAR2
612 --EVENT_TYPE
613 , p_source_8 IN VARCHAR2
614 , p_source_8_meaning IN VARCHAR2
615 --Disbursement Status
616 , p_source_9 IN VARCHAR2
617 --Status
618 , p_source_10 IN VARCHAR2
619 , p_source_10_meaning IN VARCHAR2
620 --Distribution ID
621 , p_source_11 IN NUMBER
622 --Distribution Type
623 , p_source_12 IN VARCHAR2
624 , p_source_12_meaning IN VARCHAR2
625 --Distribution Amount
626 , p_source_13 IN NUMBER
627 --Currency
628 , p_source_14 IN VARCHAR2
629 , p_source_14_meaning IN VARCHAR2
630 --EXCHANGE_DATE
631 , p_source_15 IN DATE
632 --EXCHANGE_RATE
633 , p_source_16 IN NUMBER
634 --EXCHANGE_RATE_TYPE
635 , p_source_17 IN VARCHAR2
636 )
637 IS
638
639 l_component_type VARCHAR2(80);
640 l_component_code VARCHAR2(30);
641 l_component_type_code VARCHAR2(1);
642 l_component_appl_id INTEGER;
643 l_amb_context_code VARCHAR2(30);
644 l_entity_code VARCHAR2(30);
645 l_event_class_code VARCHAR2(30);
646 l_ae_header_id NUMBER;
647 l_event_type_code VARCHAR2(30);
648 l_line_definition_code VARCHAR2(30);
649 l_line_definition_owner_code VARCHAR2(1);
650 --
651 -- adr variables
652 l_segment VARCHAR2(30);
653 l_ccid NUMBER;
654 l_adr_transaction_coa_id NUMBER;
655 l_adr_accounting_coa_id NUMBER;
656 l_adr_flexfield_segment_code VARCHAR2(30);
657 l_adr_flex_value_set_id NUMBER;
658 l_adr_value_type_code VARCHAR2(30);
659 l_adr_value_combination_id NUMBER;
660 l_adr_value_segment_code VARCHAR2(30);
661
662 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
663 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
664 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
665 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
666
667 -- 4262811 Variables ------------------------------------------------------------------------------------------
668 l_entered_amt_idx NUMBER;
669 l_accted_amt_idx NUMBER;
670 l_acc_rev_flag VARCHAR2(1);
671 l_accrual_line_num NUMBER;
672 l_tmp_amt NUMBER;
673 l_acc_rev_natural_side_code VARCHAR2(1);
674
675 l_num_entries NUMBER;
676 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
677 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
678 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
679 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
680 l_recog_line_1 NUMBER;
681 l_recog_line_2 NUMBER;
682
683 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
684 l_bflow_applied_to_amt NUMBER; -- 5132302
685 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
686
687 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
688
689 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
690 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
691
692 ---------------------------------------------------------------------------------------------------------------
693
694
695 --
696 -- bulk performance
697 --
698 l_balance_type_code VARCHAR2(1);
699 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
700 l_log_module VARCHAR2(240);
701
702 --
703 -- Upgrade strategy
704 --
705 l_actual_upg_option VARCHAR2(1);
706 l_enc_upg_option VARCHAR2(1);
707
708 --
709 BEGIN
710 --
711 IF g_log_enabled THEN
712 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_4';
713 END IF;
714 --
715 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
716
717 trace
718 (p_msg => 'BEGIN of AcctLineType_4'
719 ,p_level => C_LEVEL_PROCEDURE
720 ,p_module => l_log_module);
721
722 END IF;
723 --
724 l_component_type := 'AMB_JLT';
728 l_amb_context_code := 'DEFAULT';
725 l_component_code := 'DIRECT_LOAN_PAYABLE';
726 l_component_type_code := 'S';
727 l_component_appl_id := 206;
729 l_entity_code := 'LOANS';
730 l_event_class_code := 'DIRECT';
731 l_event_type_code := 'DISBURSEMENT_FUNDED';
732 l_line_definition_owner_code := 'S';
733 l_line_definition_code := 'FED_LNS_DISBURSEMENT';
734 --
735 l_balance_type_code := 'A';
736 l_segment := NULL;
737 l_ccid := NULL;
738 l_adr_transaction_coa_id := NULL;
739 l_adr_accounting_coa_id := NULL;
740 l_adr_flexfield_segment_code := NULL;
741 l_adr_flex_value_set_id := NULL;
742 l_adr_value_type_code := NULL;
743 l_adr_value_combination_id := NULL;
744 l_adr_value_segment_code := NULL;
745
746 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
747 l_bflow_class_code := ''; -- 4219869 Business Flow
748 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
749 l_budgetary_control_flag := 'N';
750
751 l_bflow_applied_to_amt_idx := NULL; -- 5132302
752 l_bflow_applied_to_amt := NULL; -- 5132302
753 l_entered_amt_idx := NULL; -- 4262811
754 l_accted_amt_idx := NULL; -- 4262811
755 l_acc_rev_flag := NULL; -- 4262811
756 l_accrual_line_num := NULL; -- 4262811
757 l_tmp_amt := NULL; -- 4262811
758 --
759
760 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
761 l_balance_type_code <> 'B' THEN
762 IF NVL(p_source_4,'
763 ') = 'LOAN_PAYABLE' AND
764 NVL(p_source_6,'
765 ') = 'CR' AND
766 NVL(p_source_7,'
767 ') = 'CLEAR' AND
768 NVL(p_source_8,'
769 ') = 'DISBURSEMENT_FUNDED' AND
770 NVL(p_source_9,'
771 ') = 'FULLY_FUNDED' AND
772 (NVL(p_source_10,'
773 ') = 'ACTIVE' OR
774 NVL(p_source_10,'
775 ') = 'CANCELLED' OR
776 NVL(p_source_10,'
777 ') = 'DELINQUENT' OR
778 NVL(p_source_10,'
779 ') = 'DEFAULT' OR
780 NVL(p_source_10,'
781 ') = 'PAIDOFF')
782 THEN
783
784 --
785 XLA_AE_LINES_PKG.SetNewLine;
786
787 p_balance_type_code := l_balance_type_code;
788 -- set the flag so later we will know whether the gain loss line needs to be created
789
790 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
791 p_actual_flag :='A';
792 END IF;
793
794 --
795 -- bulk performance
796 --
797 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
798 p_header_num => 0); -- 4262811
799 --
800 -- set accounting line options
801 --
802 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
803 p_natural_side_code => 'C'
804 , p_gain_or_loss_flag => 'N'
805 , p_gl_transfer_mode_code => 'S'
806 , p_acct_entry_type_code => 'A'
807 , p_switch_side_flag => 'N'
808 , p_merge_duplicate_code => 'W'
809 );
810 --
811 l_acc_rev_natural_side_code := 'D'; -- 4262811
812 --
813 --
814 -- set accounting line type info
815 --
816 xla_ae_lines_pkg.SetAcctLineType
817 (p_component_type => l_component_type
818 ,p_event_type_code => l_event_type_code
819 ,p_line_definition_owner_code => l_line_definition_owner_code
820 ,p_line_definition_code => l_line_definition_code
821 ,p_accounting_line_code => l_component_code
822 ,p_accounting_line_type_code => l_component_type_code
823 ,p_accounting_line_appl_id => l_component_appl_id
824 ,p_amb_context_code => l_amb_context_code
825 ,p_entity_code => l_entity_code
826 ,p_event_class_code => l_event_class_code);
827 --
828 -- set accounting class
829 --
830 xla_ae_lines_pkg.SetAcctClass(
831 p_accounting_class_code => 'LOAN_PAYABLE'
832 , p_ae_header_id => l_ae_header_id
833 );
834
835 --
836 -- set rounding class
837 --
838 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
839 'LOAN_PAYABLE';
840
841 --
842 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
843 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
844 --
845 -- bulk performance
846 --
847 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
848
849 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
850 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
851
852 -- 4955764
853 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
854 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
855
856 -- 4458381 Public Sector Enh
857
858 --
859 -- set accounting attributes for the line type
860 --
864 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
861 l_entered_amt_idx := 3;
862 l_accted_amt_idx := 8;
863 l_bflow_applied_to_amt_idx := NULL; -- 5132302
865 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
866 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
867 l_rec_acct_attrs.array_char_value(2) := p_source_12;
868 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
869 l_rec_acct_attrs.array_num_value(3) := p_source_13;
870 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
871 l_rec_acct_attrs.array_char_value(4) := p_source_14;
872 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
873 l_rec_acct_attrs.array_date_value(5) := p_source_15;
874 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
875 l_rec_acct_attrs.array_num_value(6) := p_source_16;
876 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
877 l_rec_acct_attrs.array_char_value(7) := p_source_17;
878 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
879 l_rec_acct_attrs.array_num_value(8) := p_source_13;
880
881 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
882 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
883
884 ---------------------------------------------------------------------------------------------------------------
885 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
886 ---------------------------------------------------------------------------------------------------------------
887 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
888
889 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
890 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
891
892 IF xla_accounting_cache_pkg.GetValueChar
893 (p_source_code => 'LEDGER_CATEGORY_CODE'
894 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
895 AND l_bflow_method_code = 'PRIOR_ENTRY'
896 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
897 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
898 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
899 )
900 THEN
901 xla_ae_lines_pkg.BflowUpgEntry
902 (p_business_method_code => l_bflow_method_code
903 ,p_business_class_code => l_bflow_class_code
904 ,p_balance_type => l_balance_type_code);
905 ELSE
906 NULL;
907 -- No business flow processing for business flow method of NONE.
908 END IF;
909
910 --
911 -- call analytical criteria
912 --
913
914 --
915 -- call description
916 --
917
918 xla_ae_lines_pkg.SetLineDescription(
919 p_ae_header_id => l_ae_header_id
920 ,p_description => Description_2 (
921 p_application_id => p_application_id
922 , p_ae_header_id => l_ae_header_id
923 , p_source_4 => p_source_4
924 , p_source_4_meaning => p_source_4_meaning
925 )
926 );
927
928
929 --
930 -- call ADRs
931 -- Bug 4922099
932 --
933 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
934 (NVL(l_actual_upg_option, 'N') = 'O') OR
935 (NVL(l_enc_upg_option, 'N') = 'O')
936 )
937 THEN
938 NULL;
939 --
940 --
941
942 l_ccid := AcctDerRule_3(
943 p_application_id => p_application_id
944 , p_ae_header_id => l_ae_header_id
945 , p_source_5 => p_source_5
946 , x_transaction_coa_id => l_adr_transaction_coa_id
947 , x_accounting_coa_id => l_adr_accounting_coa_id
948 , x_value_type_code => l_adr_value_type_code
949 , p_side => 'NA'
950 );
951
952 xla_ae_lines_pkg.set_ccid(
953 p_code_combination_id => l_ccid
954 , p_value_type_code => l_adr_value_type_code
955 , p_transaction_coa_id => l_adr_transaction_coa_id
956 , p_accounting_coa_id => l_adr_accounting_coa_id
957 , p_adr_code => 'LNS_DIST_CCID'
958 , p_adr_type_code => 'S'
959 , p_component_type => l_component_type
960 , p_component_code => l_component_code
961 , p_component_type_code => l_component_type_code
962 , p_component_appl_id => l_component_appl_id
963 , p_amb_context_code => l_amb_context_code
964 , p_side => 'NA'
965 );
966
967
968 --
969 --
970 END IF;
971 --
972 -- Bug 4922099
973 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
974 (NVL(l_enc_upg_option, 'N') = 'O')
975 ) AND
976 (l_bflow_method_code = 'PRIOR_ENTRY')
977 )
978 THEN
979 IF
980 --
981 1 = 2
982 --
983 THEN
984 xla_accounting_err_pkg.build_message
988 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
985 (p_appli_s_name => 'XLA'
986 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
987 ,p_token_1 => 'LINE_NUMBER'
989 ,p_token_2 => 'LINE_TYPE_NAME'
990 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
991 l_component_type
992 ,l_component_code
993 ,l_component_type_code
994 ,l_component_appl_id
995 ,l_amb_context_code
996 ,l_entity_code
997 ,l_event_class_code
998 )
999 ,p_token_3 => 'OWNER'
1000 ,p_value_3 => xla_lookups_pkg.get_meaning(
1001 p_lookup_type => 'XLA_OWNER_TYPE'
1002 ,p_lookup_code => l_component_type_code
1003 )
1004 ,p_token_4 => 'PRODUCT_NAME'
1005 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
1006 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
1007 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
1008 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
1009 ,p_ae_header_id => NULL
1010 );
1011
1012 IF (C_LEVEL_ERROR>= g_log_level) THEN
1013 trace
1014 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1015 ,p_level => C_LEVEL_ERROR
1016 ,p_module => l_log_module);
1017 END IF;
1018 END IF;
1019 END IF;
1020 --
1021 --
1022 ------------------------------------------------------------------------------------------------
1023 -- 4219869 Business Flow
1024 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
1025 -- Prior Entry. Currently, the following code is always generated.
1026 ------------------------------------------------------------------------------------------------
1027 XLA_AE_LINES_PKG.ValidateCurrentLine;
1028
1029 ------------------------------------------------------------------------------------
1030 -- 4219869 Business Flow
1031 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
1032 ------------------------------------------------------------------------------------
1033 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1034
1035 ----------------------------------------------------------------------------------
1036 -- 4219869 Business Flow
1037 -- Update journal entry status -- Need to generate this within IF <condition>
1038 ----------------------------------------------------------------------------------
1039 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1040 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
1041 ,p_balance_type_code => l_balance_type_code
1042 );
1043
1044 -------------------------------------------------------------------------------------------
1045 -- 4262811 - Generate the Accrual Reversal lines
1046 -------------------------------------------------------------------------------------------
1047 BEGIN
1048 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
1049 (g_array_event(p_event_id).array_value_num('header_index'));
1050 IF l_acc_rev_flag IS NULL THEN
1051 l_acc_rev_flag := 'N';
1052 END IF;
1053 EXCEPTION
1054 WHEN OTHERS THEN
1055 l_acc_rev_flag := 'N';
1056 END;
1057 --
1058 IF (l_acc_rev_flag = 'Y') THEN
1059
1060 -- 4645092 ------------------------------------------------------------------------------
1061 -- To allow MPA report to determine if it should generate report process
1062 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
1063 ------------------------------------------------------------------------------------------
1064
1065 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
1066 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
1067
1068 --
1069 -- Update the line information that should be overwritten
1070 --
1071 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
1072 p_header_num => 1);
1073 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
1074
1078 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
1075 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
1076
1077 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
1079 END IF;
1080
1081 --
1082 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
1083 --
1084 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
1085 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
1086 ELSE
1087 ---------------------------------------------------------------------------------------------------
1088 -- 4262811a Switch Sign
1089 ---------------------------------------------------------------------------------------------------
1090 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
1091 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1092 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1093 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1094 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1095 -- 5132302
1096 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
1097 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1098
1099 END IF;
1100
1101 -- 4955764
1102 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1103 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
1104
1105
1106 XLA_AE_LINES_PKG.ValidateCurrentLine;
1107 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1108
1109 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1110 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
1111 ,p_balance_type_code => l_balance_type_code);
1112
1113 END IF;
1114
1115 -----------------------------------------------------------------------------------------
1116 -- 4262811 Multiperiod Accounting
1117 -----------------------------------------------------------------------------------------
1118 -- No MPA option is assigned.
1119
1120
1121 END IF;
1122 END IF;
1123 --
1124
1125 --
1126 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1127 trace
1128 (p_msg => 'END of AcctLineType_4'
1129 ,p_level => C_LEVEL_PROCEDURE
1130 ,p_module => l_log_module);
1131 END IF;
1132 --
1133 EXCEPTION
1134 WHEN xla_exceptions_pkg.application_exception THEN
1135 RAISE;
1136 WHEN OTHERS THEN
1137 xla_exceptions_pkg.raise_message
1138 (p_location => 'XLA_00206_AAD_S_000004_PKG.AcctLineType_4');
1139 END AcctLineType_4;
1140 --
1141
1142 ---------------------------------------
1143 --
1144 -- PRIVATE FUNCTION
1145 -- AcctLineType_5
1146 --
1147 ---------------------------------------
1148 PROCEDURE AcctLineType_5 (
1149 p_application_id IN NUMBER
1150 ,p_event_id IN NUMBER
1151 ,p_calculate_acctd_flag IN VARCHAR2
1152 ,p_calculate_g_l_flag IN VARCHAR2
1153 ,p_actual_flag IN OUT VARCHAR2
1154 ,p_balance_type_code OUT VARCHAR2
1155 ,p_gain_or_loss_ref OUT VARCHAR2
1156
1157 --Account Name
1158 , p_source_4 IN VARCHAR2
1159 , p_source_4_meaning IN VARCHAR2
1160 --Code Combination ID
1161 , p_source_5 IN NUMBER
1162 --Account Type
1163 , p_source_6 IN VARCHAR2
1164 , p_source_6_meaning IN VARCHAR2
1165 --Distribution Line Type
1166 , p_source_7 IN VARCHAR2
1167 --EVENT_TYPE
1168 , p_source_8 IN VARCHAR2
1169 , p_source_8_meaning IN VARCHAR2
1170 --Disbursement Status
1171 , p_source_9 IN VARCHAR2
1172 --Status
1173 , p_source_10 IN VARCHAR2
1174 , p_source_10_meaning IN VARCHAR2
1175 --Distribution ID
1176 , p_source_11 IN NUMBER
1177 --Distribution Type
1178 , p_source_12 IN VARCHAR2
1179 , p_source_12_meaning IN VARCHAR2
1180 --Distribution Amount
1181 , p_source_13 IN NUMBER
1182 --Currency
1183 , p_source_14 IN VARCHAR2
1184 , p_source_14_meaning IN VARCHAR2
1185 --EXCHANGE_DATE
1186 , p_source_15 IN DATE
1187 --EXCHANGE_RATE
1188 , p_source_16 IN NUMBER
1189 --EXCHANGE_RATE_TYPE
1190 , p_source_17 IN VARCHAR2
1191 )
1192 IS
1193
1194 l_component_type VARCHAR2(80);
1195 l_component_code VARCHAR2(30);
1196 l_component_type_code VARCHAR2(1);
1197 l_component_appl_id INTEGER;
1198 l_amb_context_code VARCHAR2(30);
1199 l_entity_code VARCHAR2(30);
1200 l_event_class_code VARCHAR2(30);
1201 l_ae_header_id NUMBER;
1202 l_event_type_code VARCHAR2(30);
1203 l_line_definition_code VARCHAR2(30);
1207 l_segment VARCHAR2(30);
1204 l_line_definition_owner_code VARCHAR2(1);
1205 --
1206 -- adr variables
1208 l_ccid NUMBER;
1209 l_adr_transaction_coa_id NUMBER;
1210 l_adr_accounting_coa_id NUMBER;
1211 l_adr_flexfield_segment_code VARCHAR2(30);
1212 l_adr_flex_value_set_id NUMBER;
1213 l_adr_value_type_code VARCHAR2(30);
1214 l_adr_value_combination_id NUMBER;
1215 l_adr_value_segment_code VARCHAR2(30);
1216
1217 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
1218 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
1219 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
1220 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
1221
1222 -- 4262811 Variables ------------------------------------------------------------------------------------------
1223 l_entered_amt_idx NUMBER;
1224 l_accted_amt_idx NUMBER;
1225 l_acc_rev_flag VARCHAR2(1);
1226 l_accrual_line_num NUMBER;
1227 l_tmp_amt NUMBER;
1228 l_acc_rev_natural_side_code VARCHAR2(1);
1229
1230 l_num_entries NUMBER;
1231 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
1232 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
1233 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
1234 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
1235 l_recog_line_1 NUMBER;
1236 l_recog_line_2 NUMBER;
1237
1238 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
1239 l_bflow_applied_to_amt NUMBER; -- 5132302
1240 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
1241
1242 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
1243
1244 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
1245 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
1246
1247 ---------------------------------------------------------------------------------------------------------------
1248
1249
1250 --
1251 -- bulk performance
1252 --
1253 l_balance_type_code VARCHAR2(1);
1254 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
1255 l_log_module VARCHAR2(240);
1256
1257 --
1258 -- Upgrade strategy
1259 --
1260 l_actual_upg_option VARCHAR2(1);
1261 l_enc_upg_option VARCHAR2(1);
1262
1263 --
1264 BEGIN
1265 --
1266 IF g_log_enabled THEN
1267 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_5';
1268 END IF;
1269 --
1270 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1271
1272 trace
1273 (p_msg => 'BEGIN of AcctLineType_5'
1274 ,p_level => C_LEVEL_PROCEDURE
1275 ,p_module => l_log_module);
1276
1277 END IF;
1278 --
1279 l_component_type := 'AMB_JLT';
1280 l_component_code := 'DIRECT_LOAN_RECEIVABLE';
1281 l_component_type_code := 'S';
1282 l_component_appl_id := 206;
1283 l_amb_context_code := 'DEFAULT';
1284 l_entity_code := 'LOANS';
1285 l_event_class_code := 'DIRECT';
1286 l_event_type_code := 'DISBURSEMENT_FUNDED';
1287 l_line_definition_owner_code := 'S';
1288 l_line_definition_code := 'FED_LNS_DISBURSEMENT';
1289 --
1290 l_balance_type_code := 'A';
1291 l_segment := NULL;
1292 l_ccid := NULL;
1293 l_adr_transaction_coa_id := NULL;
1294 l_adr_accounting_coa_id := NULL;
1295 l_adr_flexfield_segment_code := NULL;
1296 l_adr_flex_value_set_id := NULL;
1297 l_adr_value_type_code := NULL;
1298 l_adr_value_combination_id := NULL;
1299 l_adr_value_segment_code := NULL;
1300
1301 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
1302 l_bflow_class_code := ''; -- 4219869 Business Flow
1303 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
1304 l_budgetary_control_flag := 'N';
1305
1306 l_bflow_applied_to_amt_idx := NULL; -- 5132302
1307 l_bflow_applied_to_amt := NULL; -- 5132302
1308 l_entered_amt_idx := NULL; -- 4262811
1309 l_accted_amt_idx := NULL; -- 4262811
1310 l_acc_rev_flag := NULL; -- 4262811
1311 l_accrual_line_num := NULL; -- 4262811
1312 l_tmp_amt := NULL; -- 4262811
1313 --
1314
1315 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
1316 l_balance_type_code <> 'B' THEN
1317 IF NVL(p_source_4,'
1318 ') = 'LOAN_RECEIVABLE' AND
1319 NVL(p_source_6,'
1320 ') = 'DR' AND
1321 NVL(p_source_9,'
1322 ') = 'FULLY_FUNDED' AND
1323 NVL(p_source_7,'
1324 ') = 'ORIG' AND
1325 NVL(p_source_8,'
1326 ') = 'DISBURSEMENT_FUNDED' AND
1327 (NVL(p_source_10,'
1328 ') = 'ACTIVE' OR
1329 NVL(p_source_10,'
1330 ') = 'CANCELLED' OR
1331 NVL(p_source_10,'
1332 ') = 'DELINQUENT' OR
1333 NVL(p_source_10,'
1334 ') = 'DEFAULT' OR
1335 NVL(p_source_10,'
1339 --
1336 ') = 'PAIDOFF')
1337 THEN
1338
1340 XLA_AE_LINES_PKG.SetNewLine;
1341
1342 p_balance_type_code := l_balance_type_code;
1343 -- set the flag so later we will know whether the gain loss line needs to be created
1344
1345 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
1346 p_actual_flag :='A';
1347 END IF;
1348
1349 --
1350 -- bulk performance
1351 --
1352 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
1353 p_header_num => 0); -- 4262811
1354 --
1355 -- set accounting line options
1356 --
1357 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
1358 p_natural_side_code => 'D'
1359 , p_gain_or_loss_flag => 'N'
1360 , p_gl_transfer_mode_code => 'S'
1361 , p_acct_entry_type_code => 'A'
1362 , p_switch_side_flag => 'N'
1363 , p_merge_duplicate_code => 'W'
1364 );
1365 --
1366 l_acc_rev_natural_side_code := 'C'; -- 4262811
1367 --
1368 --
1369 -- set accounting line type info
1370 --
1371 xla_ae_lines_pkg.SetAcctLineType
1372 (p_component_type => l_component_type
1373 ,p_event_type_code => l_event_type_code
1374 ,p_line_definition_owner_code => l_line_definition_owner_code
1375 ,p_line_definition_code => l_line_definition_code
1376 ,p_accounting_line_code => l_component_code
1377 ,p_accounting_line_type_code => l_component_type_code
1378 ,p_accounting_line_appl_id => l_component_appl_id
1379 ,p_amb_context_code => l_amb_context_code
1380 ,p_entity_code => l_entity_code
1381 ,p_event_class_code => l_event_class_code);
1382 --
1383 -- set accounting class
1384 --
1385 xla_ae_lines_pkg.SetAcctClass(
1386 p_accounting_class_code => 'LOAN_RECEIVABLE'
1387 , p_ae_header_id => l_ae_header_id
1388 );
1389
1390 --
1391 -- set rounding class
1392 --
1393 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
1394 'LOAN_RECEIVABLE';
1395
1396 --
1397 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
1398 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
1399 --
1400 -- bulk performance
1401 --
1402 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
1403
1404 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
1405 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
1406
1407 -- 4955764
1408 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1409 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
1410
1411 -- 4458381 Public Sector Enh
1412
1413 --
1414 -- set accounting attributes for the line type
1415 --
1416 l_entered_amt_idx := 3;
1417 l_accted_amt_idx := 8;
1418 l_bflow_applied_to_amt_idx := NULL; -- 5132302
1419 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
1420 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
1421 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
1422 l_rec_acct_attrs.array_char_value(2) := p_source_12;
1423 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
1424 l_rec_acct_attrs.array_num_value(3) := p_source_13;
1425 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
1426 l_rec_acct_attrs.array_char_value(4) := p_source_14;
1427 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
1428 l_rec_acct_attrs.array_date_value(5) := p_source_15;
1429 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
1430 l_rec_acct_attrs.array_num_value(6) := p_source_16;
1431 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
1432 l_rec_acct_attrs.array_char_value(7) := p_source_17;
1433 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
1434 l_rec_acct_attrs.array_num_value(8) := p_source_13;
1435
1436 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
1437 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
1438
1439 ---------------------------------------------------------------------------------------------------------------
1440 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
1441 ---------------------------------------------------------------------------------------------------------------
1442 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
1443
1444 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1445 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1446
1447 IF xla_accounting_cache_pkg.GetValueChar
1448 (p_source_code => 'LEDGER_CATEGORY_CODE'
1449 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
1453 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
1450 AND l_bflow_method_code = 'PRIOR_ENTRY'
1451 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
1452 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
1454 )
1455 THEN
1456 xla_ae_lines_pkg.BflowUpgEntry
1457 (p_business_method_code => l_bflow_method_code
1458 ,p_business_class_code => l_bflow_class_code
1459 ,p_balance_type => l_balance_type_code);
1460 ELSE
1461 NULL;
1462 -- No business flow processing for business flow method of NONE.
1463 END IF;
1464
1465 --
1466 -- call analytical criteria
1467 --
1468
1469 --
1470 -- call description
1471 --
1472
1473 xla_ae_lines_pkg.SetLineDescription(
1474 p_ae_header_id => l_ae_header_id
1475 ,p_description => Description_2 (
1476 p_application_id => p_application_id
1477 , p_ae_header_id => l_ae_header_id
1478 , p_source_4 => p_source_4
1479 , p_source_4_meaning => p_source_4_meaning
1480 )
1481 );
1482
1483
1484 --
1485 -- call ADRs
1486 -- Bug 4922099
1487 --
1488 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1489 (NVL(l_actual_upg_option, 'N') = 'O') OR
1490 (NVL(l_enc_upg_option, 'N') = 'O')
1491 )
1492 THEN
1493 NULL;
1494 --
1495 --
1496
1497 l_ccid := AcctDerRule_3(
1498 p_application_id => p_application_id
1499 , p_ae_header_id => l_ae_header_id
1500 , p_source_5 => p_source_5
1501 , x_transaction_coa_id => l_adr_transaction_coa_id
1502 , x_accounting_coa_id => l_adr_accounting_coa_id
1503 , x_value_type_code => l_adr_value_type_code
1504 , p_side => 'NA'
1505 );
1506
1507 xla_ae_lines_pkg.set_ccid(
1508 p_code_combination_id => l_ccid
1509 , p_value_type_code => l_adr_value_type_code
1510 , p_transaction_coa_id => l_adr_transaction_coa_id
1511 , p_accounting_coa_id => l_adr_accounting_coa_id
1512 , p_adr_code => 'LNS_DIST_CCID'
1513 , p_adr_type_code => 'S'
1514 , p_component_type => l_component_type
1515 , p_component_code => l_component_code
1516 , p_component_type_code => l_component_type_code
1517 , p_component_appl_id => l_component_appl_id
1518 , p_amb_context_code => l_amb_context_code
1519 , p_side => 'NA'
1520 );
1521
1522
1523 --
1524 --
1525 END IF;
1526 --
1527 -- Bug 4922099
1528 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
1529 (NVL(l_enc_upg_option, 'N') = 'O')
1530 ) AND
1531 (l_bflow_method_code = 'PRIOR_ENTRY')
1532 )
1533 THEN
1534 IF
1535 --
1536 1 = 2
1537 --
1538 THEN
1539 xla_accounting_err_pkg.build_message
1540 (p_appli_s_name => 'XLA'
1541 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1542 ,p_token_1 => 'LINE_NUMBER'
1543 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
1544 ,p_token_2 => 'LINE_TYPE_NAME'
1545 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
1546 l_component_type
1547 ,l_component_code
1548 ,l_component_type_code
1549 ,l_component_appl_id
1550 ,l_amb_context_code
1551 ,l_entity_code
1552 ,l_event_class_code
1553 )
1554 ,p_token_3 => 'OWNER'
1555 ,p_value_3 => xla_lookups_pkg.get_meaning(
1556 p_lookup_type => 'XLA_OWNER_TYPE'
1557 ,p_lookup_code => l_component_type_code
1558 )
1559 ,p_token_4 => 'PRODUCT_NAME'
1560 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
1561 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
1562 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
1563 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
1564 ,p_ae_header_id => NULL
1565 );
1566
1570 ,p_level => C_LEVEL_ERROR
1567 IF (C_LEVEL_ERROR>= g_log_level) THEN
1568 trace
1569 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1571 ,p_module => l_log_module);
1572 END IF;
1573 END IF;
1574 END IF;
1575 --
1576 --
1577 ------------------------------------------------------------------------------------------------
1578 -- 4219869 Business Flow
1579 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
1580 -- Prior Entry. Currently, the following code is always generated.
1581 ------------------------------------------------------------------------------------------------
1582 XLA_AE_LINES_PKG.ValidateCurrentLine;
1583
1584 ------------------------------------------------------------------------------------
1585 -- 4219869 Business Flow
1586 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
1587 ------------------------------------------------------------------------------------
1588 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1589
1590 ----------------------------------------------------------------------------------
1591 -- 4219869 Business Flow
1592 -- Update journal entry status -- Need to generate this within IF <condition>
1593 ----------------------------------------------------------------------------------
1594 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1595 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
1596 ,p_balance_type_code => l_balance_type_code
1597 );
1598
1599 -------------------------------------------------------------------------------------------
1600 -- 4262811 - Generate the Accrual Reversal lines
1601 -------------------------------------------------------------------------------------------
1602 BEGIN
1603 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
1604 (g_array_event(p_event_id).array_value_num('header_index'));
1605 IF l_acc_rev_flag IS NULL THEN
1606 l_acc_rev_flag := 'N';
1607 END IF;
1608 EXCEPTION
1609 WHEN OTHERS THEN
1610 l_acc_rev_flag := 'N';
1611 END;
1612 --
1613 IF (l_acc_rev_flag = 'Y') THEN
1614
1615 -- 4645092 ------------------------------------------------------------------------------
1616 -- To allow MPA report to determine if it should generate report process
1617 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
1618 ------------------------------------------------------------------------------------------
1619
1620 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
1621 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
1622
1623 --
1624 -- Update the line information that should be overwritten
1625 --
1626 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
1627 p_header_num => 1);
1628 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
1629
1630 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
1631
1632 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
1633 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
1634 END IF;
1635
1636 --
1637 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
1638 --
1639 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
1640 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
1641 ELSE
1642 ---------------------------------------------------------------------------------------------------
1643 -- 4262811a Switch Sign
1644 ---------------------------------------------------------------------------------------------------
1645 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
1646 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1647 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1648 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1649 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1650 -- 5132302
1651 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
1652 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1653
1654 END IF;
1655
1656 -- 4955764
1657 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1658 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
1659
1660
1661 XLA_AE_LINES_PKG.ValidateCurrentLine;
1662 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1663
1664 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1665 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
1666 ,p_balance_type_code => l_balance_type_code);
1670 -----------------------------------------------------------------------------------------
1667
1668 END IF;
1669
1671 -- 4262811 Multiperiod Accounting
1672 -----------------------------------------------------------------------------------------
1673 -- No MPA option is assigned.
1674
1675
1676 END IF;
1677 END IF;
1678 --
1679
1680 --
1681 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1682 trace
1683 (p_msg => 'END of AcctLineType_5'
1684 ,p_level => C_LEVEL_PROCEDURE
1685 ,p_module => l_log_module);
1686 END IF;
1687 --
1688 EXCEPTION
1689 WHEN xla_exceptions_pkg.application_exception THEN
1690 RAISE;
1691 WHEN OTHERS THEN
1692 xla_exceptions_pkg.raise_message
1693 (p_location => 'XLA_00206_AAD_S_000004_PKG.AcctLineType_5');
1694 END AcctLineType_5;
1695 --
1696
1697 ---------------------------------------
1698 --
1699 -- PRIVATE FUNCTION
1700 -- AcctLineType_6
1701 --
1702 ---------------------------------------
1703 PROCEDURE AcctLineType_6 (
1704 p_application_id IN NUMBER
1705 ,p_event_id IN NUMBER
1706 ,p_calculate_acctd_flag IN VARCHAR2
1707 ,p_calculate_g_l_flag IN VARCHAR2
1708 ,p_actual_flag IN OUT VARCHAR2
1709 ,p_balance_type_code OUT VARCHAR2
1710 ,p_gain_or_loss_ref OUT VARCHAR2
1711
1712 --Account Name
1713 , p_source_4 IN VARCHAR2
1714 , p_source_4_meaning IN VARCHAR2
1715 --Code Combination ID
1716 , p_source_5 IN NUMBER
1717 --Account Type
1718 , p_source_6 IN VARCHAR2
1719 , p_source_6_meaning IN VARCHAR2
1720 --Distribution Line Type
1721 , p_source_7 IN VARCHAR2
1722 --Status
1723 , p_source_10 IN VARCHAR2
1724 , p_source_10_meaning IN VARCHAR2
1725 --Distribution ID
1726 , p_source_11 IN NUMBER
1727 --Distribution Amount
1728 , p_source_13 IN NUMBER
1729 --Currency
1730 , p_source_14 IN VARCHAR2
1731 , p_source_14_meaning IN VARCHAR2
1732 --EXCHANGE_DATE
1733 , p_source_15 IN DATE
1734 --EXCHANGE_RATE
1735 , p_source_16 IN NUMBER
1736 --EXCHANGE_RATE_TYPE
1737 , p_source_17 IN VARCHAR2
1738 )
1739 IS
1740
1741 l_component_type VARCHAR2(80);
1742 l_component_code VARCHAR2(30);
1743 l_component_type_code VARCHAR2(1);
1744 l_component_appl_id INTEGER;
1745 l_amb_context_code VARCHAR2(30);
1746 l_entity_code VARCHAR2(30);
1747 l_event_class_code VARCHAR2(30);
1748 l_ae_header_id NUMBER;
1749 l_event_type_code VARCHAR2(30);
1750 l_line_definition_code VARCHAR2(30);
1751 l_line_definition_owner_code VARCHAR2(1);
1752 --
1753 -- adr variables
1754 l_segment VARCHAR2(30);
1755 l_ccid NUMBER;
1756 l_adr_transaction_coa_id NUMBER;
1757 l_adr_accounting_coa_id NUMBER;
1758 l_adr_flexfield_segment_code VARCHAR2(30);
1759 l_adr_flex_value_set_id NUMBER;
1760 l_adr_value_type_code VARCHAR2(30);
1761 l_adr_value_combination_id NUMBER;
1762 l_adr_value_segment_code VARCHAR2(30);
1763
1764 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
1765 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
1766 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
1767 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
1768
1769 -- 4262811 Variables ------------------------------------------------------------------------------------------
1770 l_entered_amt_idx NUMBER;
1771 l_accted_amt_idx NUMBER;
1772 l_acc_rev_flag VARCHAR2(1);
1773 l_accrual_line_num NUMBER;
1774 l_tmp_amt NUMBER;
1775 l_acc_rev_natural_side_code VARCHAR2(1);
1776
1777 l_num_entries NUMBER;
1778 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
1779 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
1780 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
1781 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
1782 l_recog_line_1 NUMBER;
1783 l_recog_line_2 NUMBER;
1784
1785 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
1786 l_bflow_applied_to_amt NUMBER; -- 5132302
1787 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
1788
1789 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
1790
1791 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
1792 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
1793
1794 ---------------------------------------------------------------------------------------------------------------
1795
1796
1797 --
1798 -- bulk performance
1799 --
1800 l_balance_type_code VARCHAR2(1);
1801 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
1802 l_log_module VARCHAR2(240);
1803
1804 --
1805 -- Upgrade strategy
1806 --
1807 l_actual_upg_option VARCHAR2(1);
1808 l_enc_upg_option VARCHAR2(1);
1809
1810 --
1811 BEGIN
1815 END IF;
1812 --
1813 IF g_log_enabled THEN
1814 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_6';
1816 --
1817 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1818
1819 trace
1820 (p_msg => 'BEGIN of AcctLineType_6'
1821 ,p_level => C_LEVEL_PROCEDURE
1822 ,p_module => l_log_module);
1823
1824 END IF;
1825 --
1826 l_component_type := 'AMB_JLT';
1827 l_component_code := 'ERS_LOAN_CLEARING';
1828 l_component_type_code := 'S';
1829 l_component_appl_id := 206;
1830 l_amb_context_code := 'DEFAULT';
1831 l_entity_code := 'LOANS';
1832 l_event_class_code := 'ERS';
1833 l_event_type_code := 'ERS_ALL';
1834 l_line_definition_owner_code := 'S';
1835 l_line_definition_code := 'LNS_STANDARD_ACCRUAL_ERS_LOAN';
1836 --
1837 l_balance_type_code := 'A';
1838 l_segment := NULL;
1839 l_ccid := NULL;
1840 l_adr_transaction_coa_id := NULL;
1841 l_adr_accounting_coa_id := NULL;
1842 l_adr_flexfield_segment_code := NULL;
1843 l_adr_flex_value_set_id := NULL;
1844 l_adr_value_type_code := NULL;
1845 l_adr_value_combination_id := NULL;
1846 l_adr_value_segment_code := NULL;
1847
1848 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
1849 l_bflow_class_code := ''; -- 4219869 Business Flow
1850 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
1851 l_budgetary_control_flag := 'N';
1852
1853 l_bflow_applied_to_amt_idx := NULL; -- 5132302
1854 l_bflow_applied_to_amt := NULL; -- 5132302
1855 l_entered_amt_idx := NULL; -- 4262811
1856 l_accted_amt_idx := NULL; -- 4262811
1857 l_acc_rev_flag := NULL; -- 4262811
1858 l_accrual_line_num := NULL; -- 4262811
1859 l_tmp_amt := NULL; -- 4262811
1860 --
1861
1862 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
1863 l_balance_type_code <> 'B' THEN
1864 IF NVL(p_source_4,'
1865 ') = 'LOAN_CLEARING' AND
1866 NVL(p_source_6,'
1867 ') = 'CR' AND
1868 (NVL(p_source_10,'
1869 ') = 'ACTIVE' OR
1870 NVL(p_source_10,'
1871 ') = 'DEFAULT' OR
1872 NVL(p_source_10,'
1873 ') = 'DELINQUENT' OR
1874 NVL(p_source_10,'
1875 ') = 'PAIDOFF')
1876 THEN
1877
1878 --
1879 XLA_AE_LINES_PKG.SetNewLine;
1880
1881 p_balance_type_code := l_balance_type_code;
1882 -- set the flag so later we will know whether the gain loss line needs to be created
1883
1884 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
1885 p_actual_flag :='A';
1886 END IF;
1887
1888 --
1889 -- bulk performance
1890 --
1891 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
1892 p_header_num => 0); -- 4262811
1893 --
1894 -- set accounting line options
1895 --
1896 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
1897 p_natural_side_code => 'C'
1898 , p_gain_or_loss_flag => 'N'
1899 , p_gl_transfer_mode_code => 'S'
1900 , p_acct_entry_type_code => 'A'
1901 , p_switch_side_flag => 'N'
1902 , p_merge_duplicate_code => 'W'
1903 );
1904 --
1905 l_acc_rev_natural_side_code := 'D'; -- 4262811
1906 --
1907 --
1908 -- set accounting line type info
1909 --
1910 xla_ae_lines_pkg.SetAcctLineType
1911 (p_component_type => l_component_type
1912 ,p_event_type_code => l_event_type_code
1913 ,p_line_definition_owner_code => l_line_definition_owner_code
1914 ,p_line_definition_code => l_line_definition_code
1915 ,p_accounting_line_code => l_component_code
1916 ,p_accounting_line_type_code => l_component_type_code
1917 ,p_accounting_line_appl_id => l_component_appl_id
1918 ,p_amb_context_code => l_amb_context_code
1919 ,p_entity_code => l_entity_code
1920 ,p_event_class_code => l_event_class_code);
1921 --
1922 -- set accounting class
1923 --
1924 xla_ae_lines_pkg.SetAcctClass(
1925 p_accounting_class_code => 'LOAN_CLEARING'
1926 , p_ae_header_id => l_ae_header_id
1927 );
1928
1929 --
1930 -- set rounding class
1931 --
1932 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
1933 'LOAN_CLEARING';
1934
1935 --
1936 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
1937 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
1938 --
1939 -- bulk performance
1940 --
1941 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
1942
1943 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
1944 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
1945
1946 -- 4955764
1950 -- 4458381 Public Sector Enh
1947 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1948 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
1949
1951
1952 --
1953 -- set accounting attributes for the line type
1954 --
1955 l_entered_amt_idx := 3;
1956 l_accted_amt_idx := 8;
1957 l_bflow_applied_to_amt_idx := NULL; -- 5132302
1958 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
1959 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
1960 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
1961 l_rec_acct_attrs.array_char_value(2) := p_source_7;
1962 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
1963 l_rec_acct_attrs.array_num_value(3) := p_source_13;
1964 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
1965 l_rec_acct_attrs.array_char_value(4) := p_source_14;
1966 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
1967 l_rec_acct_attrs.array_date_value(5) := p_source_15;
1968 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
1969 l_rec_acct_attrs.array_num_value(6) := p_source_16;
1970 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
1971 l_rec_acct_attrs.array_char_value(7) := p_source_17;
1972 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
1973 l_rec_acct_attrs.array_num_value(8) := p_source_13;
1974
1975 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
1976 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
1977
1978 ---------------------------------------------------------------------------------------------------------------
1979 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
1980 ---------------------------------------------------------------------------------------------------------------
1981 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
1982
1983 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1984 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1985
1986 IF xla_accounting_cache_pkg.GetValueChar
1987 (p_source_code => 'LEDGER_CATEGORY_CODE'
1988 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
1989 AND l_bflow_method_code = 'PRIOR_ENTRY'
1990 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
1991 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
1992 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
1993 )
1994 THEN
1995 xla_ae_lines_pkg.BflowUpgEntry
1996 (p_business_method_code => l_bflow_method_code
1997 ,p_business_class_code => l_bflow_class_code
1998 ,p_balance_type => l_balance_type_code);
1999 ELSE
2000 NULL;
2001 -- No business flow processing for business flow method of NONE.
2002 END IF;
2003
2004 --
2005 -- call analytical criteria
2006 --
2007
2008 --
2009 -- call description
2010 --
2011
2012 xla_ae_lines_pkg.SetLineDescription(
2013 p_ae_header_id => l_ae_header_id
2014 ,p_description => Description_2 (
2015 p_application_id => p_application_id
2016 , p_ae_header_id => l_ae_header_id
2017 , p_source_4 => p_source_4
2018 , p_source_4_meaning => p_source_4_meaning
2019 )
2020 );
2021
2022
2023 --
2024 -- call ADRs
2025 -- Bug 4922099
2026 --
2027 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2028 (NVL(l_actual_upg_option, 'N') = 'O') OR
2029 (NVL(l_enc_upg_option, 'N') = 'O')
2030 )
2031 THEN
2032 NULL;
2033 --
2034 --
2035
2036 l_ccid := AcctDerRule_3(
2037 p_application_id => p_application_id
2038 , p_ae_header_id => l_ae_header_id
2039 , p_source_5 => p_source_5
2040 , x_transaction_coa_id => l_adr_transaction_coa_id
2041 , x_accounting_coa_id => l_adr_accounting_coa_id
2042 , x_value_type_code => l_adr_value_type_code
2043 , p_side => 'NA'
2044 );
2045
2046 xla_ae_lines_pkg.set_ccid(
2047 p_code_combination_id => l_ccid
2048 , p_value_type_code => l_adr_value_type_code
2049 , p_transaction_coa_id => l_adr_transaction_coa_id
2050 , p_accounting_coa_id => l_adr_accounting_coa_id
2051 , p_adr_code => 'LNS_DIST_CCID'
2052 , p_adr_type_code => 'S'
2053 , p_component_type => l_component_type
2054 , p_component_code => l_component_code
2055 , p_component_type_code => l_component_type_code
2056 , p_component_appl_id => l_component_appl_id
2057 , p_amb_context_code => l_amb_context_code
2058 , p_side => 'NA'
2059 );
2060
2061
2062 --
2063 --
2064 END IF;
2065 --
2066 -- Bug 4922099
2067 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
2068 (NVL(l_enc_upg_option, 'N') = 'O')
2069 ) AND
2070 (l_bflow_method_code = 'PRIOR_ENTRY')
2074 --
2071 )
2072 THEN
2073 IF
2075 1 = 2
2076 --
2077 THEN
2078 xla_accounting_err_pkg.build_message
2079 (p_appli_s_name => 'XLA'
2080 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2081 ,p_token_1 => 'LINE_NUMBER'
2082 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
2083 ,p_token_2 => 'LINE_TYPE_NAME'
2084 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
2085 l_component_type
2086 ,l_component_code
2087 ,l_component_type_code
2088 ,l_component_appl_id
2089 ,l_amb_context_code
2090 ,l_entity_code
2091 ,l_event_class_code
2092 )
2093 ,p_token_3 => 'OWNER'
2094 ,p_value_3 => xla_lookups_pkg.get_meaning(
2095 p_lookup_type => 'XLA_OWNER_TYPE'
2096 ,p_lookup_code => l_component_type_code
2097 )
2098 ,p_token_4 => 'PRODUCT_NAME'
2099 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
2100 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2101 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2102 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2103 ,p_ae_header_id => NULL
2104 );
2105
2106 IF (C_LEVEL_ERROR>= g_log_level) THEN
2107 trace
2108 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2109 ,p_level => C_LEVEL_ERROR
2110 ,p_module => l_log_module);
2111 END IF;
2112 END IF;
2113 END IF;
2114 --
2115 --
2116 ------------------------------------------------------------------------------------------------
2117 -- 4219869 Business Flow
2118 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
2119 -- Prior Entry. Currently, the following code is always generated.
2120 ------------------------------------------------------------------------------------------------
2121 XLA_AE_LINES_PKG.ValidateCurrentLine;
2122
2123 ------------------------------------------------------------------------------------
2124 -- 4219869 Business Flow
2125 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
2126 ------------------------------------------------------------------------------------
2127 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2128
2129 ----------------------------------------------------------------------------------
2130 -- 4219869 Business Flow
2131 -- Update journal entry status -- Need to generate this within IF <condition>
2132 ----------------------------------------------------------------------------------
2133 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2134 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
2135 ,p_balance_type_code => l_balance_type_code
2136 );
2137
2138 -------------------------------------------------------------------------------------------
2139 -- 4262811 - Generate the Accrual Reversal lines
2140 -------------------------------------------------------------------------------------------
2141 BEGIN
2142 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
2143 (g_array_event(p_event_id).array_value_num('header_index'));
2144 IF l_acc_rev_flag IS NULL THEN
2145 l_acc_rev_flag := 'N';
2146 END IF;
2147 EXCEPTION
2148 WHEN OTHERS THEN
2149 l_acc_rev_flag := 'N';
2150 END;
2151 --
2152 IF (l_acc_rev_flag = 'Y') THEN
2153
2154 -- 4645092 ------------------------------------------------------------------------------
2155 -- To allow MPA report to determine if it should generate report process
2156 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
2157 ------------------------------------------------------------------------------------------
2158
2159 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
2160 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
2161
2162 --
2163 -- Update the line information that should be overwritten
2164 --
2165 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
2169 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
2166 p_header_num => 1);
2167 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
2168
2170
2171 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
2172 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
2173 END IF;
2174
2175 --
2176 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
2177 --
2178 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
2179 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
2180 ELSE
2181 ---------------------------------------------------------------------------------------------------
2182 -- 4262811a Switch Sign
2183 ---------------------------------------------------------------------------------------------------
2184 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
2185 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2186 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2187 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2188 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2189 -- 5132302
2190 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
2191 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2192
2193 END IF;
2194
2195 -- 4955764
2196 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2197 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
2198
2199
2200 XLA_AE_LINES_PKG.ValidateCurrentLine;
2201 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2202
2203 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2204 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
2205 ,p_balance_type_code => l_balance_type_code);
2206
2207 END IF;
2208
2209 -----------------------------------------------------------------------------------------
2210 -- 4262811 Multiperiod Accounting
2211 -----------------------------------------------------------------------------------------
2212 -- No MPA option is assigned.
2213
2214
2215 END IF;
2216 END IF;
2217 --
2218
2219 --
2220 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2221 trace
2222 (p_msg => 'END of AcctLineType_6'
2223 ,p_level => C_LEVEL_PROCEDURE
2224 ,p_module => l_log_module);
2225 END IF;
2226 --
2227 EXCEPTION
2228 WHEN xla_exceptions_pkg.application_exception THEN
2229 RAISE;
2230 WHEN OTHERS THEN
2231 xla_exceptions_pkg.raise_message
2232 (p_location => 'XLA_00206_AAD_S_000004_PKG.AcctLineType_6');
2233 END AcctLineType_6;
2234 --
2235
2236 ---------------------------------------
2237 --
2238 -- PRIVATE FUNCTION
2239 -- AcctLineType_7
2240 --
2241 ---------------------------------------
2242 PROCEDURE AcctLineType_7 (
2243 p_application_id IN NUMBER
2244 ,p_event_id IN NUMBER
2245 ,p_calculate_acctd_flag IN VARCHAR2
2246 ,p_calculate_g_l_flag IN VARCHAR2
2247 ,p_actual_flag IN OUT VARCHAR2
2248 ,p_balance_type_code OUT VARCHAR2
2249 ,p_gain_or_loss_ref OUT VARCHAR2
2250
2251 --Account Name
2252 , p_source_4 IN VARCHAR2
2253 , p_source_4_meaning IN VARCHAR2
2254 --Code Combination ID
2255 , p_source_5 IN NUMBER
2256 --Account Type
2257 , p_source_6 IN VARCHAR2
2258 , p_source_6_meaning IN VARCHAR2
2259 --Distribution Line Type
2260 , p_source_7 IN VARCHAR2
2261 --Status
2262 , p_source_10 IN VARCHAR2
2263 , p_source_10_meaning IN VARCHAR2
2264 --Distribution ID
2265 , p_source_11 IN NUMBER
2266 --Distribution Amount
2267 , p_source_13 IN NUMBER
2268 --Currency
2269 , p_source_14 IN VARCHAR2
2270 , p_source_14_meaning IN VARCHAR2
2271 --EXCHANGE_DATE
2272 , p_source_15 IN DATE
2273 --EXCHANGE_RATE
2274 , p_source_16 IN NUMBER
2275 --EXCHANGE_RATE_TYPE
2276 , p_source_17 IN VARCHAR2
2277 )
2278 IS
2279
2280 l_component_type VARCHAR2(80);
2281 l_component_code VARCHAR2(30);
2282 l_component_type_code VARCHAR2(1);
2283 l_component_appl_id INTEGER;
2284 l_amb_context_code VARCHAR2(30);
2285 l_entity_code VARCHAR2(30);
2286 l_event_class_code VARCHAR2(30);
2287 l_ae_header_id NUMBER;
2288 l_event_type_code VARCHAR2(30);
2289 l_line_definition_code VARCHAR2(30);
2290 l_line_definition_owner_code VARCHAR2(1);
2291 --
2292 -- adr variables
2296 l_adr_accounting_coa_id NUMBER;
2293 l_segment VARCHAR2(30);
2294 l_ccid NUMBER;
2295 l_adr_transaction_coa_id NUMBER;
2297 l_adr_flexfield_segment_code VARCHAR2(30);
2298 l_adr_flex_value_set_id NUMBER;
2299 l_adr_value_type_code VARCHAR2(30);
2300 l_adr_value_combination_id NUMBER;
2301 l_adr_value_segment_code VARCHAR2(30);
2302
2303 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
2304 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
2305 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
2306 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
2307
2308 -- 4262811 Variables ------------------------------------------------------------------------------------------
2309 l_entered_amt_idx NUMBER;
2310 l_accted_amt_idx NUMBER;
2311 l_acc_rev_flag VARCHAR2(1);
2312 l_accrual_line_num NUMBER;
2313 l_tmp_amt NUMBER;
2314 l_acc_rev_natural_side_code VARCHAR2(1);
2315
2316 l_num_entries NUMBER;
2317 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
2318 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
2319 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
2320 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
2321 l_recog_line_1 NUMBER;
2322 l_recog_line_2 NUMBER;
2323
2324 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
2325 l_bflow_applied_to_amt NUMBER; -- 5132302
2326 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
2327
2328 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
2329
2330 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
2331 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
2332
2333 ---------------------------------------------------------------------------------------------------------------
2334
2335
2336 --
2337 -- bulk performance
2338 --
2339 l_balance_type_code VARCHAR2(1);
2340 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
2341 l_log_module VARCHAR2(240);
2342
2343 --
2344 -- Upgrade strategy
2345 --
2346 l_actual_upg_option VARCHAR2(1);
2347 l_enc_upg_option VARCHAR2(1);
2348
2349 --
2350 BEGIN
2351 --
2352 IF g_log_enabled THEN
2353 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_7';
2354 END IF;
2355 --
2356 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2357
2358 trace
2359 (p_msg => 'BEGIN of AcctLineType_7'
2360 ,p_level => C_LEVEL_PROCEDURE
2361 ,p_module => l_log_module);
2362
2363 END IF;
2364 --
2365 l_component_type := 'AMB_JLT';
2366 l_component_code := 'ERS_LOAN_RECEIVABLE';
2367 l_component_type_code := 'S';
2368 l_component_appl_id := 206;
2369 l_amb_context_code := 'DEFAULT';
2370 l_entity_code := 'LOANS';
2371 l_event_class_code := 'ERS';
2372 l_event_type_code := 'ERS_ALL';
2373 l_line_definition_owner_code := 'S';
2374 l_line_definition_code := 'LNS_STANDARD_ACCRUAL_ERS_LOAN';
2375 --
2376 l_balance_type_code := 'A';
2377 l_segment := NULL;
2378 l_ccid := NULL;
2379 l_adr_transaction_coa_id := NULL;
2380 l_adr_accounting_coa_id := NULL;
2381 l_adr_flexfield_segment_code := NULL;
2382 l_adr_flex_value_set_id := NULL;
2383 l_adr_value_type_code := NULL;
2384 l_adr_value_combination_id := NULL;
2385 l_adr_value_segment_code := NULL;
2386
2387 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
2388 l_bflow_class_code := ''; -- 4219869 Business Flow
2389 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
2390 l_budgetary_control_flag := 'N';
2391
2392 l_bflow_applied_to_amt_idx := NULL; -- 5132302
2393 l_bflow_applied_to_amt := NULL; -- 5132302
2394 l_entered_amt_idx := NULL; -- 4262811
2395 l_accted_amt_idx := NULL; -- 4262811
2396 l_acc_rev_flag := NULL; -- 4262811
2397 l_accrual_line_num := NULL; -- 4262811
2398 l_tmp_amt := NULL; -- 4262811
2399 --
2400
2401 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
2402 l_balance_type_code <> 'B' THEN
2403 IF NVL(p_source_4,'
2404 ') = 'LOAN_RECEIVABLE' AND
2405 NVL(p_source_6,'
2406 ') = 'DR' AND
2407 (NVL(p_source_10,'
2408 ') = 'ACTIVE' OR
2409 NVL(p_source_10,'
2410 ') = 'DEFAULT' OR
2411 NVL(p_source_10,'
2412 ') = 'DELINQUENT' OR
2413 NVL(p_source_10,'
2414 ') = 'PAIDOFF')
2415 THEN
2416
2417 --
2418 XLA_AE_LINES_PKG.SetNewLine;
2419
2420 p_balance_type_code := l_balance_type_code;
2421 -- set the flag so later we will know whether the gain loss line needs to be created
2422
2423 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
2424 p_actual_flag :='A';
2425 END IF;
2426
2430 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
2427 --
2428 -- bulk performance
2429 --
2431 p_header_num => 0); -- 4262811
2432 --
2433 -- set accounting line options
2434 --
2435 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
2436 p_natural_side_code => 'D'
2437 , p_gain_or_loss_flag => 'N'
2438 , p_gl_transfer_mode_code => 'S'
2439 , p_acct_entry_type_code => 'A'
2440 , p_switch_side_flag => 'N'
2441 , p_merge_duplicate_code => 'W'
2442 );
2443 --
2444 l_acc_rev_natural_side_code := 'C'; -- 4262811
2445 --
2446 --
2447 -- set accounting line type info
2448 --
2449 xla_ae_lines_pkg.SetAcctLineType
2450 (p_component_type => l_component_type
2451 ,p_event_type_code => l_event_type_code
2452 ,p_line_definition_owner_code => l_line_definition_owner_code
2453 ,p_line_definition_code => l_line_definition_code
2454 ,p_accounting_line_code => l_component_code
2455 ,p_accounting_line_type_code => l_component_type_code
2456 ,p_accounting_line_appl_id => l_component_appl_id
2457 ,p_amb_context_code => l_amb_context_code
2458 ,p_entity_code => l_entity_code
2459 ,p_event_class_code => l_event_class_code);
2460 --
2461 -- set accounting class
2462 --
2463 xla_ae_lines_pkg.SetAcctClass(
2464 p_accounting_class_code => 'LOAN_RECEIVABLE'
2465 , p_ae_header_id => l_ae_header_id
2466 );
2467
2468 --
2469 -- set rounding class
2470 --
2471 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2472 'LOAN_RECEIVABLE';
2473
2474 --
2475 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2476 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2477 --
2478 -- bulk performance
2479 --
2480 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2481
2482 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2483 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2484
2485 -- 4955764
2486 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2487 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2488
2489 -- 4458381 Public Sector Enh
2490
2491 --
2492 -- set accounting attributes for the line type
2493 --
2494 l_entered_amt_idx := 3;
2495 l_accted_amt_idx := 8;
2496 l_bflow_applied_to_amt_idx := NULL; -- 5132302
2497 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
2498 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
2499 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
2500 l_rec_acct_attrs.array_char_value(2) := p_source_7;
2501 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
2502 l_rec_acct_attrs.array_num_value(3) := p_source_13;
2503 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
2504 l_rec_acct_attrs.array_char_value(4) := p_source_14;
2505 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
2506 l_rec_acct_attrs.array_date_value(5) := p_source_15;
2507 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
2508 l_rec_acct_attrs.array_num_value(6) := p_source_16;
2509 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
2510 l_rec_acct_attrs.array_char_value(7) := p_source_17;
2511 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
2512 l_rec_acct_attrs.array_num_value(8) := p_source_13;
2513
2514 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2515 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2516
2517 ---------------------------------------------------------------------------------------------------------------
2518 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
2519 ---------------------------------------------------------------------------------------------------------------
2520 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
2521
2522 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2523 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2524
2525 IF xla_accounting_cache_pkg.GetValueChar
2526 (p_source_code => 'LEDGER_CATEGORY_CODE'
2527 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
2528 AND l_bflow_method_code = 'PRIOR_ENTRY'
2529 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
2530 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
2531 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
2532 )
2533 THEN
2534 xla_ae_lines_pkg.BflowUpgEntry
2538 ELSE
2535 (p_business_method_code => l_bflow_method_code
2536 ,p_business_class_code => l_bflow_class_code
2537 ,p_balance_type => l_balance_type_code);
2539 NULL;
2540 -- No business flow processing for business flow method of NONE.
2541 END IF;
2542
2543 --
2544 -- call analytical criteria
2545 --
2546
2547 --
2548 -- call description
2549 --
2550
2551 xla_ae_lines_pkg.SetLineDescription(
2552 p_ae_header_id => l_ae_header_id
2553 ,p_description => Description_2 (
2554 p_application_id => p_application_id
2555 , p_ae_header_id => l_ae_header_id
2556 , p_source_4 => p_source_4
2557 , p_source_4_meaning => p_source_4_meaning
2558 )
2559 );
2560
2561
2562 --
2563 -- call ADRs
2564 -- Bug 4922099
2565 --
2566 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2567 (NVL(l_actual_upg_option, 'N') = 'O') OR
2568 (NVL(l_enc_upg_option, 'N') = 'O')
2569 )
2570 THEN
2571 NULL;
2572 --
2573 --
2574
2575 l_ccid := AcctDerRule_3(
2576 p_application_id => p_application_id
2577 , p_ae_header_id => l_ae_header_id
2578 , p_source_5 => p_source_5
2579 , x_transaction_coa_id => l_adr_transaction_coa_id
2580 , x_accounting_coa_id => l_adr_accounting_coa_id
2581 , x_value_type_code => l_adr_value_type_code
2582 , p_side => 'NA'
2583 );
2584
2585 xla_ae_lines_pkg.set_ccid(
2586 p_code_combination_id => l_ccid
2587 , p_value_type_code => l_adr_value_type_code
2588 , p_transaction_coa_id => l_adr_transaction_coa_id
2589 , p_accounting_coa_id => l_adr_accounting_coa_id
2590 , p_adr_code => 'LNS_DIST_CCID'
2591 , p_adr_type_code => 'S'
2592 , p_component_type => l_component_type
2593 , p_component_code => l_component_code
2594 , p_component_type_code => l_component_type_code
2595 , p_component_appl_id => l_component_appl_id
2596 , p_amb_context_code => l_amb_context_code
2597 , p_side => 'NA'
2598 );
2599
2600
2601 --
2602 --
2603 END IF;
2604 --
2605 -- Bug 4922099
2606 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
2607 (NVL(l_enc_upg_option, 'N') = 'O')
2608 ) AND
2609 (l_bflow_method_code = 'PRIOR_ENTRY')
2610 )
2611 THEN
2612 IF
2613 --
2614 1 = 2
2615 --
2616 THEN
2617 xla_accounting_err_pkg.build_message
2618 (p_appli_s_name => 'XLA'
2619 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2620 ,p_token_1 => 'LINE_NUMBER'
2621 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
2622 ,p_token_2 => 'LINE_TYPE_NAME'
2623 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
2624 l_component_type
2625 ,l_component_code
2626 ,l_component_type_code
2627 ,l_component_appl_id
2628 ,l_amb_context_code
2629 ,l_entity_code
2630 ,l_event_class_code
2631 )
2632 ,p_token_3 => 'OWNER'
2633 ,p_value_3 => xla_lookups_pkg.get_meaning(
2634 p_lookup_type => 'XLA_OWNER_TYPE'
2635 ,p_lookup_code => l_component_type_code
2636 )
2637 ,p_token_4 => 'PRODUCT_NAME'
2638 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
2639 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2640 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2641 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2642 ,p_ae_header_id => NULL
2643 );
2644
2645 IF (C_LEVEL_ERROR>= g_log_level) THEN
2646 trace
2647 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2648 ,p_level => C_LEVEL_ERROR
2649 ,p_module => l_log_module);
2650 END IF;
2651 END IF;
2652 END IF;
2653 --
2654 --
2658 -- Prior Entry. Currently, the following code is always generated.
2655 ------------------------------------------------------------------------------------------------
2656 -- 4219869 Business Flow
2657 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
2659 ------------------------------------------------------------------------------------------------
2660 XLA_AE_LINES_PKG.ValidateCurrentLine;
2661
2662 ------------------------------------------------------------------------------------
2663 -- 4219869 Business Flow
2664 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
2665 ------------------------------------------------------------------------------------
2666 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2667
2668 ----------------------------------------------------------------------------------
2669 -- 4219869 Business Flow
2670 -- Update journal entry status -- Need to generate this within IF <condition>
2671 ----------------------------------------------------------------------------------
2672 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2673 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
2674 ,p_balance_type_code => l_balance_type_code
2675 );
2676
2677 -------------------------------------------------------------------------------------------
2678 -- 4262811 - Generate the Accrual Reversal lines
2679 -------------------------------------------------------------------------------------------
2680 BEGIN
2681 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
2682 (g_array_event(p_event_id).array_value_num('header_index'));
2683 IF l_acc_rev_flag IS NULL THEN
2684 l_acc_rev_flag := 'N';
2685 END IF;
2686 EXCEPTION
2687 WHEN OTHERS THEN
2688 l_acc_rev_flag := 'N';
2689 END;
2690 --
2691 IF (l_acc_rev_flag = 'Y') THEN
2692
2693 -- 4645092 ------------------------------------------------------------------------------
2694 -- To allow MPA report to determine if it should generate report process
2695 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
2696 ------------------------------------------------------------------------------------------
2697
2698 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
2699 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
2700
2701 --
2702 -- Update the line information that should be overwritten
2703 --
2704 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
2705 p_header_num => 1);
2706 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
2707
2708 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
2709
2710 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
2711 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
2712 END IF;
2713
2714 --
2715 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
2716 --
2717 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
2718 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
2719 ELSE
2720 ---------------------------------------------------------------------------------------------------
2721 -- 4262811a Switch Sign
2722 ---------------------------------------------------------------------------------------------------
2723 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
2724 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2725 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2726 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2727 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2728 -- 5132302
2729 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
2730 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2731
2732 END IF;
2733
2734 -- 4955764
2735 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2736 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
2737
2738
2739 XLA_AE_LINES_PKG.ValidateCurrentLine;
2740 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2741
2742 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2743 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
2744 ,p_balance_type_code => l_balance_type_code);
2745
2746 END IF;
2747
2748 -----------------------------------------------------------------------------------------
2749 -- 4262811 Multiperiod Accounting
2750 -----------------------------------------------------------------------------------------
2751 -- No MPA option is assigned.
2752
2753
2754 END IF;
2755 END IF;
2756 --
2757
2758 --
2762 ,p_level => C_LEVEL_PROCEDURE
2759 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2760 trace
2761 (p_msg => 'END of AcctLineType_7'
2763 ,p_module => l_log_module);
2764 END IF;
2765 --
2766 EXCEPTION
2767 WHEN xla_exceptions_pkg.application_exception THEN
2768 RAISE;
2769 WHEN OTHERS THEN
2770 xla_exceptions_pkg.raise_message
2771 (p_location => 'XLA_00206_AAD_S_000004_PKG.AcctLineType_7');
2772 END AcctLineType_7;
2773 --
2774
2775 ---------------------------------------
2776 --
2777 -- PRIVATE PROCEDURE
2778 -- insert_sources_8
2779 --
2780 ----------------------------------------
2781 --
2782 PROCEDURE insert_sources_8(
2783 p_target_ledger_id IN NUMBER
2784 , p_language IN VARCHAR2
2785 , p_sla_ledger_id IN NUMBER
2786 , p_pad_start_date IN DATE
2787 , p_pad_end_date IN DATE
2788 )
2789 IS
2790
2791 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'DIRECT_LOAN_APPROVED';
2792 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DIRECT';
2793 p_apps_owner VARCHAR2(30);
2794 l_log_module VARCHAR2(240);
2795 BEGIN
2796 IF g_log_enabled THEN
2797 l_log_module := C_DEFAULT_MODULE||'.insert_sources_8';
2798 END IF;
2799 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2800
2801 trace
2802 (p_msg => 'BEGIN of insert_sources_8'
2803 ,p_level => C_LEVEL_PROCEDURE
2804 ,p_module => l_log_module);
2805
2806 END IF;
2807
2808 -- select APPS owner
2809 SELECT oracle_username
2810 INTO p_apps_owner
2811 FROM fnd_oracle_userid
2812 WHERE read_only_flag = 'U'
2813 ;
2814
2815 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2816 trace
2817 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
2818 ' - p_language = '||p_language||
2819 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
2820 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
2821 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
2822 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
2823 ,p_level => C_LEVEL_STATEMENT
2824 ,p_module => l_log_module);
2825 END IF;
2826
2827
2828 --
2829 INSERT INTO xla_diag_sources --hdr1
2830 (
2831 event_id
2832 , ledger_id
2833 , sla_ledger_id
2834 , description_language
2835 , object_name
2836 , object_type_code
2837 , line_number
2838 , source_application_id
2839 , source_type_code
2840 , source_code
2841 , source_value
2842 , source_meaning
2843 , created_by
2844 , creation_date
2845 , last_update_date
2846 , last_updated_by
2847 , last_update_login
2848 , program_update_date
2849 , program_application_id
2850 , program_id
2851 , request_id
2852 )
2853 SELECT
2854 event_id
2855 , p_target_ledger_id
2856 , p_sla_ledger_id
2857 , p_language
2858 , object_name
2859 , object_type_code
2860 , line_number
2861 , source_application_id
2862 , source_type_code
2863 , source_code
2864 , SUBSTR(source_value ,1,1996)
2865 , SUBSTR(source_meaning,1,200)
2866 , xla_environment_pkg.g_Usr_Id
2867 , TRUNC(SYSDATE)
2868 , TRUNC(SYSDATE)
2869 , xla_environment_pkg.g_Usr_Id
2870 , xla_environment_pkg.g_Login_Id
2871 , TRUNC(SYSDATE)
2872 , xla_environment_pkg.g_Prog_Appl_Id
2873 , xla_environment_pkg.g_Prog_Id
2874 , xla_environment_pkg.g_Req_Id
2875 FROM (
2876 SELECT xet.event_id event_id
2877 , 0 line_number
2878 , CASE r
2879 WHEN 1 THEN 'LNS_LOAN_HEADERS_EXT_V'
2880 WHEN 2 THEN 'LNS_LOAN_HEADERS_EXT_V'
2881 WHEN 3 THEN 'LNS_LOAN_HEADERS_EXT_V'
2882 WHEN 4 THEN 'LNS_LOAN_HEADERS_EXT_V'
2883
2884 ELSE null
2885 END object_name
2886 , CASE r
2887 WHEN 1 THEN 'HEADER'
2888 WHEN 2 THEN 'HEADER'
2889 WHEN 3 THEN 'HEADER'
2890 WHEN 4 THEN 'HEADER'
2891
2892 ELSE null
2893 END object_type_code
2894 , CASE r
2895 WHEN 1 THEN '206'
2896 WHEN 2 THEN '206'
2897 WHEN 3 THEN '206'
2898 WHEN 4 THEN '206'
2899
2900 ELSE null
2901 END source_application_id
2902 , 'S' source_type_code
2903 , CASE r
2904 WHEN 1 THEN 'LOAN_CLASS_CODE'
2905 WHEN 2 THEN 'LOAN_TYPE'
2906 WHEN 3 THEN 'LOAN_NUMBER'
2910 END source_code
2907 WHEN 4 THEN 'GL_DATE'
2908
2909 ELSE null
2911 , CASE r
2912 WHEN 1 THEN TO_CHAR(h1.LOAN_CLASS_CODE)
2913 WHEN 2 THEN TO_CHAR(h1.LOAN_TYPE)
2914 WHEN 3 THEN TO_CHAR(h1.LOAN_NUMBER)
2915 WHEN 4 THEN TO_CHAR(h1.GL_DATE)
2916
2917 ELSE null
2918 END source_value
2919 , CASE r
2920 WHEN 1 THEN fvl1.meaning
2921
2922 ELSE null
2923 END source_meaning
2924 FROM xla_events_gt xet
2925 , LNS_LOAN_HEADERS_EXT_V h1
2926 , fnd_lookup_values fvl1
2927 ,(select rownum r from all_objects where rownum <= 4 and owner = p_apps_owner)
2928 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
2929 AND xet.event_type_code = C_EVENT_TYPE_CODE
2930 AND h1.event_id = xet.event_id
2931 AND fvl1.lookup_type(+) = 'LOAN_CLASS'
2932 AND fvl1.lookup_code(+) = h1.LOAN_CLASS_CODE
2933 AND fvl1.view_application_id(+) = 206
2934 AND fvl1.language(+) = USERENV('LANG')
2935
2936 )
2937 ;
2938 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2939
2940 trace
2941 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
2942 ,p_level => C_LEVEL_STATEMENT
2943 ,p_module => l_log_module);
2944
2945 END IF;
2946 --
2947
2948
2949
2950
2951 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2952 trace
2953 (p_msg => 'END of insert_sources_8'
2954 ,p_level => C_LEVEL_PROCEDURE
2955 ,p_module => l_log_module);
2956 END IF;
2957 EXCEPTION
2958 WHEN xla_exceptions_pkg.application_exception THEN
2959 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2960 trace
2961 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
2962 ,p_level => C_LEVEL_EXCEPTION
2963 ,p_module => l_log_module);
2964 END IF;
2965 RAISE;
2966 WHEN OTHERS THEN
2967 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2968 trace
2969 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
2970 ,p_level => C_LEVEL_EXCEPTION
2971 ,p_module => l_log_module);
2972 END IF;
2973 xla_exceptions_pkg.raise_message
2974 (p_location => 'XLA_00206_AAD_S_000004_PKG.insert_sources_8');
2975 END insert_sources_8;
2976 --
2977
2978 ---------------------------------------
2979 --
2980 -- PRIVATE FUNCTION
2981 -- EventType_8
2982 --
2983 ----------------------------------------
2984 --
2985 FUNCTION EventType_8
2986 (p_application_id IN NUMBER
2987 ,p_base_ledger_id IN NUMBER
2988 ,p_target_ledger_id IN NUMBER
2989 ,p_language IN VARCHAR2
2990 ,p_currency_code IN VARCHAR2
2991 ,p_sla_ledger_id IN NUMBER
2992 ,p_pad_start_date IN DATE
2993 ,p_pad_end_date IN DATE
2994 ,p_primary_ledger_id IN NUMBER)
2995 RETURN BOOLEAN IS
2996 --
2997 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'DIRECT_LOAN_APPROVED';
2998 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DIRECT';
2999
3000 l_calculate_acctd_flag VARCHAR2(1) :='Y';
3001 l_calculate_g_l_flag VARCHAR2(1) :='Y';
3002 --
3003 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
3004 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
3005 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
3006 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
3007 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
3008 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
3009 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
3010 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
3011 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
3012 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
3013 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
3014 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
3015 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
3016 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
3017 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
3018 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
3019 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
3020 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
3021 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
3022 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
3023 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
3024 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
3025 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
3026 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
3027
3031 l_last_event_id NUMBER;
3028 l_event_id NUMBER;
3029 l_previous_event_id NUMBER;
3030 l_first_event_id NUMBER;
3032
3033 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
3034 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
3035 --
3036 --
3037 l_result BOOLEAN := TRUE;
3038 l_rows NUMBER := 1000;
3039 l_event_type_name VARCHAR2(80) := 'Direct Loan Approved';
3040 l_event_class_name VARCHAR2(80) := 'Direct Loan';
3041 l_description VARCHAR2(4000);
3042 l_transaction_reversal NUMBER;
3043 l_ae_header_id NUMBER;
3044 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
3045 l_log_module VARCHAR2(240);
3046 --
3047 l_acct_reversal_source VARCHAR2(30);
3048 l_trx_reversal_source VARCHAR2(30);
3049
3050 l_continue_with_lines BOOLEAN := TRUE;
3051 --
3052 l_acc_rev_gl_date_source DATE; -- 4262811
3053 --
3054 type t_array_event_id is table of number index by binary_integer;
3055
3056 l_rec_array_event t_rec_array_event;
3057 l_null_rec_array_event t_rec_array_event;
3058 l_array_ae_header_id xla_number_array_type;
3059 l_actual_flag VARCHAR2(1) := NULL;
3060 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
3061 l_balance_type_code VARCHAR2(1) :=NULL;
3062 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
3063
3064 --
3065 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
3066 --
3067
3068 TYPE t_array_source_1 IS TABLE OF LNS_LOAN_HEADERS_EXT_V.LOAN_CLASS_CODE%TYPE INDEX BY BINARY_INTEGER;
3069 TYPE t_array_source_2 IS TABLE OF LNS_LOAN_HEADERS_EXT_V.LOAN_TYPE%TYPE INDEX BY BINARY_INTEGER;
3070 TYPE t_array_source_3 IS TABLE OF LNS_LOAN_HEADERS_EXT_V.LOAN_NUMBER%TYPE INDEX BY BINARY_INTEGER;
3071 TYPE t_array_source_18 IS TABLE OF LNS_LOAN_HEADERS_EXT_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
3072
3073
3074 l_array_source_1 t_array_source_1;
3075 l_array_source_1_meaning t_array_lookup_meaning;
3076 l_array_source_2 t_array_source_2;
3077 l_array_source_3 t_array_source_3;
3078 l_array_source_18 t_array_source_18;
3079
3080
3081 --
3082 CURSOR header_cur
3083 IS
3084 SELECT /*+ leading(xet) cardinality(xet,1) */
3085 -- Event Type Code: DIRECT_LOAN_APPROVED
3086 -- Event Class Code: DIRECT
3087 xet.entity_id
3088 , xet.legal_entity_id
3089 , xet.entity_code
3090 , xet.transaction_number
3091 , xet.event_id
3092 , xet.event_class_code
3093 , xet.event_type_code
3094 , xet.event_number
3095 , xet.event_date
3096 , xet.transaction_date
3097 , xet.reference_num_1
3098 , xet.reference_num_2
3099 , xet.reference_num_3
3100 , xet.reference_num_4
3101 , xet.reference_char_1
3102 , xet.reference_char_2
3103 , xet.reference_char_3
3104 , xet.reference_char_4
3105 , xet.reference_date_1
3106 , xet.reference_date_2
3107 , xet.reference_date_3
3108 , xet.reference_date_4
3109 , xet.event_created_by
3110 , xet.budgetary_control_flag
3111 , h1.LOAN_CLASS_CODE source_1
3112 , fvl1.meaning source_1_meaning
3113 , h1.LOAN_TYPE source_2
3114 , h1.LOAN_NUMBER source_3
3115 , h1.GL_DATE source_18
3116 FROM xla_events_gt xet
3117 , LNS_LOAN_HEADERS_EXT_V h1
3118 , fnd_lookup_values fvl1
3119 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
3120 and xet.event_type_code = C_EVENT_TYPE_CODE
3121 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
3122 AND fvl1.lookup_type(+) = 'LOAN_CLASS'
3123 AND fvl1.lookup_code(+) = h1.LOAN_CLASS_CODE
3124 AND fvl1.view_application_id(+) = 206
3125 AND fvl1.language(+) = USERENV('LANG')
3126
3127 ORDER BY event_id
3128 ;
3129
3130
3131 --
3132 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
3133 IS
3134 SELECT /*+ leading(xet) cardinality(xet,1) */
3135 -- Event Type Code: DIRECT_LOAN_APPROVED
3136 -- Event Class Code: DIRECT
3137 xet.entity_id
3138 ,xet.legal_entity_id
3139 ,xet.entity_code
3140 ,xet.transaction_number
3141 ,xet.event_id
3142 ,xet.event_class_code
3143 ,xet.event_type_code
3144 ,xet.event_number
3145 ,xet.event_date
3146 ,xet.transaction_date
3147 ,xet.reference_num_1
3148 ,xet.reference_num_2
3149 ,xet.reference_num_3
3150 ,xet.reference_num_4
3151 ,xet.reference_char_1
3152 ,xet.reference_char_2
3153 ,xet.reference_char_3
3154 ,xet.reference_char_4
3155 ,xet.reference_date_1
3156 ,xet.reference_date_2
3157 ,xet.reference_date_3
3158 ,xet.reference_date_4
3159 ,xet.event_created_by
3160 ,xet.budgetary_control_flag , 0
3161 FROM xla_events_gt xet
3162 WHERE xet.event_id between x_first_event_id and x_last_event_id
3163 and xet.event_date between p_pad_start_date and p_pad_end_date
3164 and xet.event_type_code = C_EVENT_TYPE_CODE
3165 and xet.event_status_code <> 'N' ;
3166
3167 --
3171 END IF;
3168 BEGIN
3169 IF g_log_enabled THEN
3170 l_log_module := C_DEFAULT_MODULE||'.EventType_8';
3172 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3173 trace
3174 (p_msg => 'BEGIN of EventType_8'
3175 ,p_level => C_LEVEL_PROCEDURE
3176 ,p_module => l_log_module);
3177 END IF;
3178
3179 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3180 trace
3181 (p_msg => 'p_application_id = '||p_application_id||
3182 ' - p_base_ledger_id = '||p_base_ledger_id||
3183 ' - p_target_ledger_id = '||p_target_ledger_id||
3184 ' - p_language = '||p_language||
3185 ' - p_currency_code = '||p_currency_code||
3186 ' - p_sla_ledger_id = '||p_sla_ledger_id
3187 ,p_level => C_LEVEL_STATEMENT
3188 ,p_module => l_log_module);
3189 END IF;
3190 --
3191 -- initialze arrays
3192 --
3193 g_array_event.DELETE;
3194 l_rec_array_event := l_null_rec_array_event;
3195 --
3196 --------------------------------------
3197 -- 4262811 Initialze MPA Line Number
3198 --------------------------------------
3199 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
3200
3201 --
3202
3203 --
3204 OPEN header_cur;
3205 --
3206 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3207 trace
3208 (p_msg => 'SQL - FETCH header_cur'
3209 ,p_level => C_LEVEL_STATEMENT
3210 ,p_module => l_log_module);
3211 END IF;
3212 --
3213 LOOP
3214 FETCH header_cur BULK COLLECT INTO
3215 l_array_entity_id
3216 , l_array_legal_entity_id
3217 , l_array_entity_code
3218 , l_array_transaction_num
3219 , l_array_event_id
3220 , l_array_class_code
3221 , l_array_event_type
3222 , l_array_event_number
3223 , l_array_event_date
3224 , l_array_transaction_date
3225 , l_array_reference_num_1
3226 , l_array_reference_num_2
3227 , l_array_reference_num_3
3228 , l_array_reference_num_4
3229 , l_array_reference_char_1
3230 , l_array_reference_char_2
3231 , l_array_reference_char_3
3232 , l_array_reference_char_4
3233 , l_array_reference_date_1
3234 , l_array_reference_date_2
3235 , l_array_reference_date_3
3236 , l_array_reference_date_4
3237 , l_array_event_created_by
3238 , l_array_budgetary_control_flag
3239 , l_array_source_1
3240 , l_array_source_1_meaning
3241 , l_array_source_2
3242 , l_array_source_3
3243 , l_array_source_18
3244 LIMIT l_rows;
3245 --
3246 IF (C_LEVEL_EVENT >= g_log_level) THEN
3247 trace
3248 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
3249 ,p_level => C_LEVEL_EVENT
3250 ,p_module => l_log_module);
3251 END IF;
3252 --
3253 EXIT WHEN l_array_entity_id.COUNT = 0;
3254
3255 -- initialize arrays
3256 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
3257 XLA_AE_LINES_PKG.g_rec_lines := NULL;
3258
3259 --
3260 -- Bug 4458708
3261 --
3262 XLA_AE_LINES_PKG.g_LineNumber := 0;
3263
3264
3265 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
3266 g_last_hdr_idx := l_array_event_id.LAST;
3267 --
3268 -- loop for the headers. Each iteration is for each header extract row
3269 -- fetched in header cursor
3270 --
3271 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
3272
3273 --
3274 -- set event info as cache for other routines to refer event attributes
3275 --
3276 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
3277 (p_application_id => p_application_id
3278 ,p_primary_ledger_id => p_primary_ledger_id
3279 ,p_base_ledger_id => p_base_ledger_id
3280 ,p_target_ledger_id => p_target_ledger_id
3281 ,p_entity_id => l_array_entity_id(hdr_idx)
3282 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
3283 ,p_entity_code => l_array_entity_code(hdr_idx)
3284 ,p_transaction_num => l_array_transaction_num(hdr_idx)
3285 ,p_event_id => l_array_event_id(hdr_idx)
3286 ,p_event_class_code => l_array_class_code(hdr_idx)
3287 ,p_event_type_code => l_array_event_type(hdr_idx)
3288 ,p_event_number => l_array_event_number(hdr_idx)
3289 ,p_event_date => l_array_event_date(hdr_idx)
3290 ,p_transaction_date => l_array_transaction_date(hdr_idx)
3291 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
3292 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
3293 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
3294 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
3295 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
3296 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
3297 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
3298 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
3299 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
3300 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
3301 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
3302 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
3303 ,p_event_created_by => l_array_event_created_by(hdr_idx)
3307 -- set the status of entry to C_VALID (0)
3304 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
3305
3306 --
3308 --
3309 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
3310
3311 --
3312 -- initialize a row for ae header
3313 --
3314 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
3315
3316 l_event_id := l_array_event_id(hdr_idx);
3317
3318 --
3319 -- storing the hdr_idx for event. May be used by line cursor.
3320 --
3321 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
3322
3323 --
3324 -- store sources from header extract. This can be improved to
3325 -- store only those sources from header extract that may be used in lines
3326 --
3327
3328 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
3329 g_array_event(l_event_id).array_value_char('source_1_meaning') := l_array_source_1_meaning(hdr_idx);
3330 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
3331 g_array_event(l_event_id).array_value_char('source_3') := l_array_source_3(hdr_idx);
3332 g_array_event(l_event_id).array_value_date('source_18') := l_array_source_18(hdr_idx);
3333
3334 --
3335 -- initilaize the status of ae headers for diffrent balance types
3336 -- the status is initialised to C_NOT_CREATED (2)
3337 --
3338 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
3339 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
3340 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
3341
3342 --
3343 -- call api to validate and store accounting attributes for header
3344 --
3345
3346 ------------------------------------------------------------
3347 -- Accrual Reversal : to get date for Standard Source (NONE)
3348 ------------------------------------------------------------
3349 l_acc_rev_gl_date_source := NULL;
3350
3351 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
3352 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_18');
3353
3354
3355 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
3356
3357 XLA_AE_HEADER_PKG.SetJeCategoryName;
3358
3359 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
3360 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
3361 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
3362 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
3363 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
3364
3365
3366 --
3367 xla_ae_header_pkg.SetHdrDescription(
3368 p_description => Description_1 (
3369 p_application_id => p_application_id
3370 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
3371 , p_source_1_meaning => g_array_event(l_event_id).array_value_char('source_1_meaning')
3372 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
3373 , p_source_3 => g_array_event(l_event_id).array_value_char('source_3')
3374 )
3375 );
3376 --
3377
3378 -- No header level analytical criteria
3379
3380 --
3381 --accounting attribute enhancement, bug 3612931
3382 --
3383 l_trx_reversal_source := SUBSTR(NULL, 1,30);
3384
3385 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
3386 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
3387
3388 xla_accounting_err_pkg.build_message
3389 (p_appli_s_name => 'XLA'
3390 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
3391 ,p_token_1 => 'ACCT_ATTR_NAME'
3392 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
3393 ,p_token_2 => 'PRODUCT_NAME'
3394 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
3395 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3396 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
3397 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
3398
3399 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
3400 --
3401 -- following sets the accounting attributes needed to reverse
3402 -- accounting for a distributeion
3403 --
3404 xla_ae_lines_pkg.SetTrxReversalAttrs
3405 (p_event_id => l_event_id
3406 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
3407 ,p_trx_reversal_source => l_trx_reversal_source);
3408
3409 END IF;
3410
3411
3412 ----------------------------------------------------------------
3413 -- 4262811 - update the header statuses to invalid in need be
3414 ----------------------------------------------------------------
3415 --
3416 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
3417
3418
3419 -----------------------------------------------
3420 -- No accrual reversal for the event class/type
3421 -----------------------------------------------
3422 ----------------------------------------------------------------
3423
3424 --
3425 -- this ends the header loop iteration for one bulk fetch
3426 --
3427 END LOOP;
3428
3432 --
3429 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
3430 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
3431
3433 -- insert dummy rows into lines gt table that were created due to
3434 -- transaction reversals
3435 --
3436 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
3437 l_result := XLA_AE_LINES_PKG.InsertLines;
3438 END IF;
3439
3440 --
3441 -- reset the temp_line_num for each set of events fetched from header
3442 -- cursor rather than doing it for each new event in line cursor
3443 -- Bug 3939231
3444 --
3445 xla_ae_lines_pkg.g_temp_line_num := 0;
3446
3447
3448
3449 --
3450 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
3451 --
3452 --
3453 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3454
3455 trace
3456 (p_msg => 'SQL - FETCH line_cur'
3457 ,p_level => C_LEVEL_STATEMENT
3458 ,p_module => l_log_module);
3459
3460 END IF;
3461 --
3462 --
3463 LOOP
3464 --
3465 FETCH line_cur BULK COLLECT INTO
3466 l_array_entity_id
3467 , l_array_legal_entity_id
3468 , l_array_entity_code
3469 , l_array_transaction_num
3470 , l_array_event_id
3471 , l_array_class_code
3472 , l_array_event_type
3473 , l_array_event_number
3474 , l_array_event_date
3475 , l_array_transaction_date
3476 , l_array_reference_num_1
3477 , l_array_reference_num_2
3478 , l_array_reference_num_3
3479 , l_array_reference_num_4
3480 , l_array_reference_char_1
3481 , l_array_reference_char_2
3482 , l_array_reference_char_3
3483 , l_array_reference_char_4
3484 , l_array_reference_date_1
3485 , l_array_reference_date_2
3486 , l_array_reference_date_3
3487 , l_array_reference_date_4
3488 , l_array_event_created_by
3489 , l_array_budgetary_control_flag
3490 , l_array_extract_line_num
3491 LIMIT l_rows;
3492
3493 --
3494 IF (C_LEVEL_EVENT >= g_log_level) THEN
3495 trace
3496 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
3497 ,p_level => C_LEVEL_EVENT
3498 ,p_module => l_log_module);
3499 END IF;
3500 --
3501 EXIT WHEN l_array_entity_id.count = 0;
3502
3503 XLA_AE_LINES_PKG.g_rec_lines := null;
3504
3505 --
3506 -- Bug 4458708
3507 --
3508 XLA_AE_LINES_PKG.g_LineNumber := 0;
3509 --
3510 --
3511
3512 FOR Idx IN 1..l_array_event_id.count LOOP
3513 --
3514 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
3515 --
3516 l_event_id := l_array_event_id(idx); -- 5648433
3517
3518 --
3519 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
3520 --
3521
3522 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
3523 (g_array_event(l_event_id).array_value_num('header_index'))
3524 ,'N'
3525 ) <> 'Y'
3526 THEN
3527 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3528 trace
3529 (p_msg => 'Trancaction revesal option is not Y '
3530 ,p_level => C_LEVEL_STATEMENT
3531 ,p_module => l_log_module);
3532 END IF;
3533
3534 --
3535 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
3536 --
3537 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
3538 --
3539 -- set event info as cache for other routines to refer event attributes
3540 --
3541
3542 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
3543 l_previous_event_id := l_event_id;
3544
3545 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
3546 (p_application_id => p_application_id
3547 ,p_primary_ledger_id => p_primary_ledger_id
3548 ,p_base_ledger_id => p_base_ledger_id
3549 ,p_target_ledger_id => p_target_ledger_id
3550 ,p_entity_id => l_array_entity_id(Idx)
3551 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
3552 ,p_entity_code => l_array_entity_code(Idx)
3553 ,p_transaction_num => l_array_transaction_num(Idx)
3554 ,p_event_id => l_array_event_id(Idx)
3555 ,p_event_class_code => l_array_class_code(Idx)
3556 ,p_event_type_code => l_array_event_type(Idx)
3557 ,p_event_number => l_array_event_number(Idx)
3558 ,p_event_date => l_array_event_date(Idx)
3559 ,p_transaction_date => l_array_transaction_date(Idx)
3560 ,p_reference_num_1 => l_array_reference_num_1(Idx)
3561 ,p_reference_num_2 => l_array_reference_num_2(Idx)
3562 ,p_reference_num_3 => l_array_reference_num_3(Idx)
3563 ,p_reference_num_4 => l_array_reference_num_4(Idx)
3564 ,p_reference_char_1 => l_array_reference_char_1(Idx)
3565 ,p_reference_char_2 => l_array_reference_char_2(Idx)
3566 ,p_reference_char_3 => l_array_reference_char_3(Idx)
3567 ,p_reference_char_4 => l_array_reference_char_4(Idx)
3568 ,p_reference_date_1 => l_array_reference_date_1(Idx)
3572 ,p_event_created_by => l_array_event_created_by(Idx)
3569 ,p_reference_date_2 => l_array_reference_date_2(Idx)
3570 ,p_reference_date_3 => l_array_reference_date_3(Idx)
3571 ,p_reference_date_4 => l_array_reference_date_4(Idx)
3573 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
3574 --
3575 END IF;
3576
3577
3578
3579 --
3580 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
3581
3582 l_acct_reversal_source := SUBSTR(NULL, 1,30);
3583
3584 IF l_continue_with_lines THEN
3585 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
3586 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
3587
3588 xla_accounting_err_pkg.build_message
3589 (p_appli_s_name => 'XLA'
3590 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
3591 ,p_token_1 => 'LINE_NUMBER'
3592 ,p_value_1 => l_array_extract_line_num(Idx)
3593 ,p_token_2 => 'PRODUCT_NAME'
3594 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
3595 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3596 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
3597 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
3598
3599 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
3600 --
3601 -- following sets the accounting attributes needed to reverse
3602 -- accounting for a distributeion
3603 --
3604
3605 --
3606 -- 5217187
3607 --
3608 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
3609 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
3610 g_array_event(l_event_id).array_value_num('header_index'));
3611 --
3612 --
3613
3614 -- No reversal code generated
3615
3616 xla_ae_lines_pkg.SetAcctReversalAttrs
3617 (p_event_id => l_event_id
3618 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
3619 ,p_calculate_acctd_flag => l_calculate_acctd_flag
3620 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
3621 END IF;
3622
3623 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
3624 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
3625 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
3626 -- or secondary ledger that has different currency with primary
3627 -- or alc that is calculated by sla
3628 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
3629 (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'))
3630
3631 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
3632 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
3633 AND (l_actual_flag = 'A')) THEN
3634 XLA_AE_LINES_PKG.CreateGainOrLossLines(
3635 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
3636 ,p_application_id => p_application_id
3637 ,p_amb_context_code => 'DEFAULT'
3638 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
3639 ,p_event_class_code => C_EVENT_CLASS_CODE
3640 ,p_event_type_code => C_EVENT_TYPE_CODE
3641
3642 ,p_gain_ccid => -1
3643 ,p_loss_ccid => -1
3644
3645 ,p_actual_flag => l_actual_flag
3646 ,p_enc_flag => null
3647 ,p_actual_g_l_ref => l_actual_gain_loss_ref
3648 ,p_enc_g_l_ref => null
3649 );
3650 END IF;
3651 END IF;
3652 END IF;
3653
3654 ELSE
3655 --
3656 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
3657 --
3658 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3659 trace
3660 (p_msg => 'Trancaction revesal option is Y'
3661 ,p_level => C_LEVEL_STATEMENT
3662 ,p_module => l_log_module);
3663 END IF;
3664 END IF;
3665
3666 END LOOP;
3667 l_result := XLA_AE_LINES_PKG.InsertLines ;
3668 end loop;
3669 close line_cur;
3670
3671
3672 --
3673 -- insert headers into xla_ae_headers_gt table
3674 --
3675 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
3676
3677 -- insert into errors table here.
3678
3679 END LOOP;
3680
3681 --
3682 -- 4865292
3683 --
3684 -- Compare g_hdr_extract_count with event count in
3685 -- CreateHeadersAndLines.
3686 --
3687 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
3688
3689 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3690 trace (p_msg => '# rows extracted from header extract objects '
3691 || ' (running total): '
3692 || g_hdr_extract_count
3693 ,p_level => C_LEVEL_STATEMENT
3694 ,p_module => l_log_module);
3695 END IF;
3696
3697 CLOSE header_cur;
3701 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3698 --
3699
3700 --
3702 trace
3703 (p_msg => 'END of EventType_8'
3704 ,p_level => C_LEVEL_PROCEDURE
3705 ,p_module => l_log_module);
3706 END IF;
3707 --
3708 RETURN l_result;
3709 EXCEPTION
3710 WHEN xla_exceptions_pkg.application_exception THEN
3711
3712 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
3713
3714
3715 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
3716
3717 RAISE;
3718 WHEN OTHERS THEN
3719 xla_exceptions_pkg.raise_message
3720 (p_location => 'XLA_00206_AAD_S_000004_PKG.EventType_8');
3721 END EventType_8;
3722 --
3723
3724 ---------------------------------------
3725 --
3726 -- PRIVATE PROCEDURE
3727 -- insert_sources_9
3728 --
3729 ----------------------------------------
3730 --
3731 PROCEDURE insert_sources_9(
3732 p_target_ledger_id IN NUMBER
3733 , p_language IN VARCHAR2
3734 , p_sla_ledger_id IN NUMBER
3735 , p_pad_start_date IN DATE
3736 , p_pad_end_date IN DATE
3737 )
3738 IS
3739
3740 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'DISBURSEMENT_FUNDED';
3741 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DIRECT';
3742 p_apps_owner VARCHAR2(30);
3743 l_log_module VARCHAR2(240);
3744 BEGIN
3745 IF g_log_enabled THEN
3746 l_log_module := C_DEFAULT_MODULE||'.insert_sources_9';
3747 END IF;
3748 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3749
3750 trace
3751 (p_msg => 'BEGIN of insert_sources_9'
3752 ,p_level => C_LEVEL_PROCEDURE
3753 ,p_module => l_log_module);
3754
3755 END IF;
3756
3757 -- select APPS owner
3758 SELECT oracle_username
3759 INTO p_apps_owner
3760 FROM fnd_oracle_userid
3761 WHERE read_only_flag = 'U'
3762 ;
3763
3764 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3765 trace
3766 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
3767 ' - p_language = '||p_language||
3768 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
3769 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
3770 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
3771 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
3772 ,p_level => C_LEVEL_STATEMENT
3773 ,p_module => l_log_module);
3774 END IF;
3775
3776
3777 --
3778 INSERT INTO xla_diag_sources --hdr1
3779 (
3780 event_id
3781 , ledger_id
3782 , sla_ledger_id
3783 , description_language
3784 , object_name
3785 , object_type_code
3786 , line_number
3787 , source_application_id
3788 , source_type_code
3789 , source_code
3790 , source_value
3791 , source_meaning
3792 , created_by
3793 , creation_date
3794 , last_update_date
3795 , last_updated_by
3796 , last_update_login
3797 , program_update_date
3798 , program_application_id
3799 , program_id
3800 , request_id
3801 )
3802 SELECT
3803 event_id
3804 , p_target_ledger_id
3805 , p_sla_ledger_id
3806 , p_language
3807 , object_name
3808 , object_type_code
3809 , line_number
3810 , source_application_id
3811 , source_type_code
3812 , source_code
3813 , SUBSTR(source_value ,1,1996)
3814 , SUBSTR(source_meaning,1,200)
3815 , xla_environment_pkg.g_Usr_Id
3816 , TRUNC(SYSDATE)
3817 , TRUNC(SYSDATE)
3818 , xla_environment_pkg.g_Usr_Id
3819 , xla_environment_pkg.g_Login_Id
3820 , TRUNC(SYSDATE)
3821 , xla_environment_pkg.g_Prog_Appl_Id
3822 , xla_environment_pkg.g_Prog_Id
3823 , xla_environment_pkg.g_Req_Id
3824 FROM (
3825 SELECT xet.event_id event_id
3826 , 0 line_number
3827 , CASE r
3828 WHEN 1 THEN 'LNS_LOAN_HEADERS_EXT_V'
3829 WHEN 2 THEN 'LNS_LOAN_HEADERS_EXT_V'
3830 WHEN 3 THEN 'LNS_LOAN_HEADERS_EXT_V'
3831 WHEN 4 THEN 'LNS_LOAN_HEADERS_EXT_V'
3832 WHEN 5 THEN 'LNS_LOAN_HEADERS_EXT_V'
3833 WHEN 6 THEN 'LNS_LOAN_HEADERS_EXT_V'
3834 WHEN 7 THEN 'LNS_LOAN_HEADERS_EXT_V'
3835 WHEN 8 THEN 'LNS_LOAN_HEADERS_EXT_V'
3836 WHEN 9 THEN 'LNS_LOAN_HEADERS_EXT_V'
3837
3838 ELSE null
3839 END object_name
3840 , CASE r
3841 WHEN 1 THEN 'HEADER'
3842 WHEN 2 THEN 'HEADER'
3843 WHEN 3 THEN 'HEADER'
3844 WHEN 4 THEN 'HEADER'
3845 WHEN 5 THEN 'HEADER'
3846 WHEN 6 THEN 'HEADER'
3847 WHEN 7 THEN 'HEADER'
3851 ELSE null
3848 WHEN 8 THEN 'HEADER'
3849 WHEN 9 THEN 'HEADER'
3850
3852 END object_type_code
3853 , CASE r
3854 WHEN 1 THEN '206'
3855 WHEN 2 THEN '206'
3856 WHEN 3 THEN '206'
3857 WHEN 4 THEN '206'
3858 WHEN 5 THEN '206'
3859 WHEN 6 THEN '206'
3860 WHEN 7 THEN '206'
3861 WHEN 8 THEN '206'
3862 WHEN 9 THEN '206'
3863
3864 ELSE null
3865 END source_application_id
3866 , 'S' source_type_code
3867 , CASE r
3868 WHEN 1 THEN 'LOAN_CLASS_CODE'
3869 WHEN 2 THEN 'LOAN_TYPE'
3870 WHEN 3 THEN 'LOAN_NUMBER'
3871 WHEN 4 THEN 'LOAN_STATUS'
3872 WHEN 5 THEN 'LOAN_CURRENCY'
3873 WHEN 6 THEN 'EXCHANGE_DATE'
3874 WHEN 7 THEN 'EXCHANGE_RATE'
3875 WHEN 8 THEN 'EXCHANGE_RATE_TYPE'
3876 WHEN 9 THEN 'GL_DATE'
3877
3878 ELSE null
3879 END source_code
3880 , CASE r
3881 WHEN 1 THEN TO_CHAR(h2.LOAN_CLASS_CODE)
3882 WHEN 2 THEN TO_CHAR(h2.LOAN_TYPE)
3883 WHEN 3 THEN TO_CHAR(h2.LOAN_NUMBER)
3884 WHEN 4 THEN TO_CHAR(h2.LOAN_STATUS)
3885 WHEN 5 THEN TO_CHAR(h2.LOAN_CURRENCY)
3886 WHEN 6 THEN TO_CHAR(h2.EXCHANGE_DATE)
3887 WHEN 7 THEN TO_CHAR(h2.EXCHANGE_RATE)
3888 WHEN 8 THEN TO_CHAR(h2.EXCHANGE_RATE_TYPE)
3889 WHEN 9 THEN TO_CHAR(h2.GL_DATE)
3890
3891 ELSE null
3892 END source_value
3893 , CASE r
3894 WHEN 1 THEN fvl1.meaning
3895 WHEN 4 THEN fvl10.meaning
3896 WHEN 5 THEN fvl14.meaning
3897
3898 ELSE null
3899 END source_meaning
3900 FROM xla_events_gt xet
3901 , LNS_LOAN_HEADERS_EXT_V h2
3902 , fnd_lookup_values fvl1
3903 , fnd_lookup_values fvl10
3904 , fnd_lookup_values fvl14
3905 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
3906 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
3907 AND xet.event_type_code = C_EVENT_TYPE_CODE
3908 AND h2.event_id = xet.event_id
3909 AND fvl1.lookup_type(+) = 'LOAN_CLASS'
3910 AND fvl1.lookup_code(+) = h2.LOAN_CLASS_CODE
3911 AND fvl1.view_application_id(+) = 206
3912 AND fvl1.language(+) = USERENV('LANG')
3913 AND fvl10.lookup_type(+) = 'LOAN_STATUS'
3914 AND fvl10.lookup_code(+) = h2.LOAN_STATUS
3915 AND fvl10.view_application_id(+) = 206
3916 AND fvl10.language(+) = USERENV('LANG')
3917 AND fvl14.lookup_type(+) = 'CURRENCY_CODE'
3918 AND fvl14.lookup_code(+) = h2.LOAN_CURRENCY
3919 AND fvl14.view_application_id(+) = 101
3920 AND fvl14.language(+) = USERENV('LANG')
3921
3922 )
3923 ;
3924 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3925
3926 trace
3927 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
3928 ,p_level => C_LEVEL_STATEMENT
3929 ,p_module => l_log_module);
3930
3931 END IF;
3932 --
3933
3934
3935
3936 --
3937 INSERT INTO xla_diag_sources --line1
3938 (
3939 event_id
3940 , ledger_id
3941 , sla_ledger_id
3942 , description_language
3943 , object_name
3944 , object_type_code
3945 , line_number
3946 , source_application_id
3947 , source_type_code
3948 , source_code
3949 , source_value
3950 , source_meaning
3951 , created_by
3952 , creation_date
3953 , last_update_date
3954 , last_updated_by
3955 , last_update_login
3956 , program_update_date
3957 , program_application_id
3958 , program_id
3959 , request_id
3960 )
3961 SELECT event_id
3962 , p_target_ledger_id
3963 , p_sla_ledger_id
3964 , p_language
3965 , object_name
3966 , object_type_code
3967 , line_number
3968 , source_application_id
3969 , source_type_code
3970 , source_code
3971 , SUBSTR(source_value,1,1996)
3972 , SUBSTR(source_meaning,1,200)
3973 , xla_environment_pkg.g_Usr_Id
3974 , TRUNC(SYSDATE)
3975 , TRUNC(SYSDATE)
3976 , xla_environment_pkg.g_Usr_Id
3977 , xla_environment_pkg.g_Login_Id
3978 , TRUNC(SYSDATE)
3979 , xla_environment_pkg.g_Prog_Appl_Id
3980 , xla_environment_pkg.g_Prog_Id
3981 , xla_environment_pkg.g_Req_Id
3982 FROM (
3983 SELECT xet.event_id event_id
3984 , l1.line_number line_number
3985 , CASE r
3986 WHEN 1 THEN 'LNS_LOAN_DETAILS_EXT_V'
3987 WHEN 2 THEN 'LNS_LOAN_DETAILS_EXT_V'
3991 WHEN 6 THEN 'LNS_LOAN_DETAILS_EXT_V'
3988 WHEN 3 THEN 'LNS_LOAN_DETAILS_EXT_V'
3989 WHEN 4 THEN 'LNS_LOAN_DETAILS_EXT_V'
3990 WHEN 5 THEN 'LNS_LOAN_DETAILS_EXT_V'
3992 WHEN 7 THEN 'LNS_LOAN_DETAILS_EXT_V'
3993 WHEN 8 THEN 'LNS_LOAN_DETAILS_EXT_V'
3994 WHEN 9 THEN 'LNS_LOAN_DETAILS_EXT_V'
3995
3996 ELSE null
3997 END object_name
3998 , CASE r
3999 WHEN 1 THEN 'LINE'
4000 WHEN 2 THEN 'LINE'
4001 WHEN 3 THEN 'LINE'
4002 WHEN 4 THEN 'LINE'
4003 WHEN 5 THEN 'LINE'
4004 WHEN 6 THEN 'LINE'
4005 WHEN 7 THEN 'LINE'
4006 WHEN 8 THEN 'LINE'
4007 WHEN 9 THEN 'LINE'
4008
4009 ELSE null
4010 END object_type_code
4011 , CASE r
4012 WHEN 1 THEN '206'
4013 WHEN 2 THEN '206'
4014 WHEN 3 THEN '206'
4015 WHEN 4 THEN '206'
4016 WHEN 5 THEN '206'
4017 WHEN 6 THEN '206'
4018 WHEN 7 THEN '206'
4019 WHEN 8 THEN '206'
4020 WHEN 9 THEN '206'
4021
4022 ELSE null
4023 END source_application_id
4024 , 'S' source_type_code
4025 , CASE r
4026 WHEN 1 THEN 'ACCOUNT_NAME'
4027 WHEN 2 THEN 'CODE_COMBINATION_ID'
4028 WHEN 3 THEN 'ACCOUNT_TYPE'
4029 WHEN 4 THEN 'LINE_TYPE'
4030 WHEN 5 THEN 'EVENT_TYPE'
4031 WHEN 6 THEN 'DISBURSEMENT_STATUS'
4032 WHEN 7 THEN 'DISTRIBUTION_ID'
4033 WHEN 8 THEN 'DISTRIBUTION_TYPE'
4034 WHEN 9 THEN 'DISTRIBUTION_AMOUNT'
4035
4036 ELSE null
4037 END source_code
4038 , CASE r
4039 WHEN 1 THEN TO_CHAR(l1.ACCOUNT_NAME)
4040 WHEN 2 THEN TO_CHAR(l1.CODE_COMBINATION_ID)
4041 WHEN 3 THEN TO_CHAR(l1.ACCOUNT_TYPE)
4042 WHEN 4 THEN TO_CHAR(l1.LINE_TYPE)
4043 WHEN 5 THEN TO_CHAR(l1.EVENT_TYPE)
4044 WHEN 6 THEN TO_CHAR(l1.DISBURSEMENT_STATUS)
4045 WHEN 7 THEN TO_CHAR(l1.DISTRIBUTION_ID)
4046 WHEN 8 THEN TO_CHAR(l1.DISTRIBUTION_TYPE)
4047 WHEN 9 THEN TO_CHAR(l1.DISTRIBUTION_AMOUNT)
4048
4049 ELSE null
4050 END source_value
4051 , CASE r
4052 WHEN 1 THEN fvl4.meaning
4053 WHEN 3 THEN fvl6.meaning
4054 WHEN 5 THEN fvl8.meaning
4055 WHEN 8 THEN fvl12.meaning
4056
4057 ELSE null
4058 END source_meaning
4059 FROM xla_events_gt xet
4060 , LNS_LOAN_DETAILS_EXT_V l1
4061 , fnd_lookup_values fvl4
4062 , fnd_lookup_values fvl6
4063 , fnd_lookup_values fvl8
4064 , fnd_lookup_values fvl12
4065 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
4066 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
4067 AND xet.event_type_code = C_EVENT_TYPE_CODE
4068 AND l1.event_id = xet.event_id
4069 AND fvl4.lookup_type(+) = 'LOAN_DISTRIBUTION_ACCOUNTS'
4070 AND fvl4.lookup_code(+) = l1.ACCOUNT_NAME
4071 AND fvl4.view_application_id(+) = 206
4072 AND fvl4.language(+) = USERENV('LANG')
4073 AND fvl6.lookup_type(+) = 'LOAN_DISTRIBUTION_ACCOUNT_DRCR'
4074 AND fvl6.lookup_code(+) = l1.ACCOUNT_TYPE
4075 AND fvl6.view_application_id(+) = 206
4076 AND fvl6.language(+) = USERENV('LANG')
4077 AND fvl8.lookup_type(+) = 'LOAN_ACCOUNTING_EVENT'
4078 AND fvl8.lookup_code(+) = l1.EVENT_TYPE
4079 AND fvl8.view_application_id(+) = 206
4080 AND fvl8.language(+) = USERENV('LANG')
4081 AND fvl12.lookup_type(+) = 'LOAN_DISTRIBUTION_ACCOUNT_DRCR'
4082 AND fvl12.lookup_code(+) = l1.DISTRIBUTION_TYPE
4083 AND fvl12.view_application_id(+) = 206
4084 AND fvl12.language(+) = USERENV('LANG')
4085
4086 )
4087 ;
4088 --
4089 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
4090
4091 trace
4092 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
4093 ,p_level => C_LEVEL_STATEMENT
4094 ,p_module => l_log_module);
4095
4096 END IF;
4097
4098
4099 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4100 trace
4101 (p_msg => 'END of insert_sources_9'
4102 ,p_level => C_LEVEL_PROCEDURE
4103 ,p_module => l_log_module);
4104 END IF;
4105 EXCEPTION
4106 WHEN xla_exceptions_pkg.application_exception THEN
4107 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
4108 trace
4109 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
4110 ,p_level => C_LEVEL_EXCEPTION
4114 WHEN OTHERS THEN
4111 ,p_module => l_log_module);
4112 END IF;
4113 RAISE;
4115 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
4116 trace
4117 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
4118 ,p_level => C_LEVEL_EXCEPTION
4119 ,p_module => l_log_module);
4120 END IF;
4121 xla_exceptions_pkg.raise_message
4122 (p_location => 'XLA_00206_AAD_S_000004_PKG.insert_sources_9');
4123 END insert_sources_9;
4124 --
4125
4126 ---------------------------------------
4127 --
4128 -- PRIVATE FUNCTION
4129 -- EventType_9
4130 --
4131 ----------------------------------------
4132 --
4133 FUNCTION EventType_9
4134 (p_application_id IN NUMBER
4135 ,p_base_ledger_id IN NUMBER
4136 ,p_target_ledger_id IN NUMBER
4137 ,p_language IN VARCHAR2
4138 ,p_currency_code IN VARCHAR2
4139 ,p_sla_ledger_id IN NUMBER
4140 ,p_pad_start_date IN DATE
4141 ,p_pad_end_date IN DATE
4142 ,p_primary_ledger_id IN NUMBER)
4143 RETURN BOOLEAN IS
4144 --
4145 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'DISBURSEMENT_FUNDED';
4146 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DIRECT';
4147
4148 l_calculate_acctd_flag VARCHAR2(1) :='Y';
4149 l_calculate_g_l_flag VARCHAR2(1) :='Y';
4150 --
4151 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
4152 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
4153 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
4154 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4155 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
4156 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
4157 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
4158 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
4159 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
4160 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
4161 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
4162 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
4163 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
4164 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
4165 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4166 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4167 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4168 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4169 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
4170 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
4171 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
4172 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
4173 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
4174 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
4175
4176 l_event_id NUMBER;
4177 l_previous_event_id NUMBER;
4178 l_first_event_id NUMBER;
4179 l_last_event_id NUMBER;
4180
4181 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
4182 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
4183 --
4184 --
4185 l_result BOOLEAN := TRUE;
4186 l_rows NUMBER := 1000;
4187 l_event_type_name VARCHAR2(80) := 'Disbursement Funded';
4188 l_event_class_name VARCHAR2(80) := 'Direct Loan';
4189 l_description VARCHAR2(4000);
4190 l_transaction_reversal NUMBER;
4191 l_ae_header_id NUMBER;
4192 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
4193 l_log_module VARCHAR2(240);
4194 --
4195 l_acct_reversal_source VARCHAR2(30);
4196 l_trx_reversal_source VARCHAR2(30);
4197
4198 l_continue_with_lines BOOLEAN := TRUE;
4199 --
4200 l_acc_rev_gl_date_source DATE; -- 4262811
4201 --
4202 type t_array_event_id is table of number index by binary_integer;
4203
4204 l_rec_array_event t_rec_array_event;
4205 l_null_rec_array_event t_rec_array_event;
4206 l_array_ae_header_id xla_number_array_type;
4207 l_actual_flag VARCHAR2(1) := NULL;
4208 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
4209 l_balance_type_code VARCHAR2(1) :=NULL;
4210 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
4211
4212 --
4213 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
4214 --
4215
4216 TYPE t_array_source_1 IS TABLE OF LNS_LOAN_HEADERS_EXT_V.LOAN_CLASS_CODE%TYPE INDEX BY BINARY_INTEGER;
4217 TYPE t_array_source_2 IS TABLE OF LNS_LOAN_HEADERS_EXT_V.LOAN_TYPE%TYPE INDEX BY BINARY_INTEGER;
4218 TYPE t_array_source_3 IS TABLE OF LNS_LOAN_HEADERS_EXT_V.LOAN_NUMBER%TYPE INDEX BY BINARY_INTEGER;
4219 TYPE t_array_source_10 IS TABLE OF LNS_LOAN_HEADERS_EXT_V.LOAN_STATUS%TYPE INDEX BY BINARY_INTEGER;
4223 TYPE t_array_source_17 IS TABLE OF LNS_LOAN_HEADERS_EXT_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
4220 TYPE t_array_source_14 IS TABLE OF LNS_LOAN_HEADERS_EXT_V.LOAN_CURRENCY%TYPE INDEX BY BINARY_INTEGER;
4221 TYPE t_array_source_15 IS TABLE OF LNS_LOAN_HEADERS_EXT_V.EXCHANGE_DATE%TYPE INDEX BY BINARY_INTEGER;
4222 TYPE t_array_source_16 IS TABLE OF LNS_LOAN_HEADERS_EXT_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
4224 TYPE t_array_source_18 IS TABLE OF LNS_LOAN_HEADERS_EXT_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
4225
4226 TYPE t_array_source_4 IS TABLE OF LNS_LOAN_DETAILS_EXT_V.ACCOUNT_NAME%TYPE INDEX BY BINARY_INTEGER;
4227 TYPE t_array_source_5 IS TABLE OF LNS_LOAN_DETAILS_EXT_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
4228 TYPE t_array_source_6 IS TABLE OF LNS_LOAN_DETAILS_EXT_V.ACCOUNT_TYPE%TYPE INDEX BY BINARY_INTEGER;
4229 TYPE t_array_source_7 IS TABLE OF LNS_LOAN_DETAILS_EXT_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
4230 TYPE t_array_source_8 IS TABLE OF LNS_LOAN_DETAILS_EXT_V.EVENT_TYPE%TYPE INDEX BY BINARY_INTEGER;
4231 TYPE t_array_source_9 IS TABLE OF LNS_LOAN_DETAILS_EXT_V.DISBURSEMENT_STATUS%TYPE INDEX BY BINARY_INTEGER;
4232 TYPE t_array_source_11 IS TABLE OF LNS_LOAN_DETAILS_EXT_V.DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
4233 TYPE t_array_source_12 IS TABLE OF LNS_LOAN_DETAILS_EXT_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
4234 TYPE t_array_source_13 IS TABLE OF LNS_LOAN_DETAILS_EXT_V.DISTRIBUTION_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
4235
4236 l_array_source_1 t_array_source_1;
4237 l_array_source_1_meaning t_array_lookup_meaning;
4238 l_array_source_2 t_array_source_2;
4239 l_array_source_3 t_array_source_3;
4240 l_array_source_10 t_array_source_10;
4241 l_array_source_10_meaning t_array_lookup_meaning;
4242 l_array_source_14 t_array_source_14;
4243 l_array_source_14_meaning t_array_lookup_meaning;
4244 l_array_source_15 t_array_source_15;
4245 l_array_source_16 t_array_source_16;
4246 l_array_source_17 t_array_source_17;
4247 l_array_source_18 t_array_source_18;
4248
4249 l_array_source_4 t_array_source_4;
4250 l_array_source_4_meaning t_array_lookup_meaning;
4251 l_array_source_5 t_array_source_5;
4252 l_array_source_6 t_array_source_6;
4253 l_array_source_6_meaning t_array_lookup_meaning;
4254 l_array_source_7 t_array_source_7;
4255 l_array_source_8 t_array_source_8;
4256 l_array_source_8_meaning t_array_lookup_meaning;
4257 l_array_source_9 t_array_source_9;
4258 l_array_source_11 t_array_source_11;
4259 l_array_source_12 t_array_source_12;
4260 l_array_source_12_meaning t_array_lookup_meaning;
4261 l_array_source_13 t_array_source_13;
4262
4263 --
4264 CURSOR header_cur
4265 IS
4266 SELECT /*+ leading(xet) cardinality(xet,1) */
4267 -- Event Type Code: DISBURSEMENT_FUNDED
4268 -- Event Class Code: DIRECT
4269 xet.entity_id
4270 , xet.legal_entity_id
4271 , xet.entity_code
4272 , xet.transaction_number
4273 , xet.event_id
4274 , xet.event_class_code
4275 , xet.event_type_code
4276 , xet.event_number
4277 , xet.event_date
4278 , xet.transaction_date
4279 , xet.reference_num_1
4280 , xet.reference_num_2
4281 , xet.reference_num_3
4282 , xet.reference_num_4
4283 , xet.reference_char_1
4284 , xet.reference_char_2
4285 , xet.reference_char_3
4286 , xet.reference_char_4
4287 , xet.reference_date_1
4288 , xet.reference_date_2
4289 , xet.reference_date_3
4290 , xet.reference_date_4
4291 , xet.event_created_by
4292 , xet.budgetary_control_flag
4293 , h2.LOAN_CLASS_CODE source_1
4294 , fvl1.meaning source_1_meaning
4295 , h2.LOAN_TYPE source_2
4296 , h2.LOAN_NUMBER source_3
4297 , h2.LOAN_STATUS source_10
4298 , fvl10.meaning source_10_meaning
4299 , h2.LOAN_CURRENCY source_14
4300 , fvl14.meaning source_14_meaning
4301 , h2.EXCHANGE_DATE source_15
4302 , h2.EXCHANGE_RATE source_16
4303 , h2.EXCHANGE_RATE_TYPE source_17
4304 , h2.GL_DATE source_18
4305 FROM xla_events_gt xet
4306 , LNS_LOAN_HEADERS_EXT_V h2
4307 , fnd_lookup_values fvl1
4308 , fnd_lookup_values fvl10
4309 , fnd_lookup_values fvl14
4310 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
4311 and xet.event_type_code = C_EVENT_TYPE_CODE
4312 and xet.event_status_code <> 'N' AND h2.event_id = xet.event_id
4313 AND fvl1.lookup_type(+) = 'LOAN_CLASS'
4314 AND fvl1.lookup_code(+) = h2.LOAN_CLASS_CODE
4315 AND fvl1.view_application_id(+) = 206
4316 AND fvl1.language(+) = USERENV('LANG')
4317 AND fvl10.lookup_type(+) = 'LOAN_STATUS'
4318 AND fvl10.lookup_code(+) = h2.LOAN_STATUS
4319 AND fvl10.view_application_id(+) = 206
4320 AND fvl10.language(+) = USERENV('LANG')
4321 AND fvl14.lookup_type(+) = 'CURRENCY_CODE'
4322 AND fvl14.lookup_code(+) = h2.LOAN_CURRENCY
4323 AND fvl14.view_application_id(+) = 101
4324 AND fvl14.language(+) = USERENV('LANG')
4325
4326 ORDER BY event_id
4327 ;
4328
4329
4330 --
4331 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
4332 IS
4333 SELECT /*+ leading(xet) cardinality(xet,1) */
4334 -- Event Type Code: DISBURSEMENT_FUNDED
4335 -- Event Class Code: DIRECT
4336 xet.entity_id
4337 ,xet.legal_entity_id
4341 ,xet.event_class_code
4338 ,xet.entity_code
4339 ,xet.transaction_number
4340 ,xet.event_id
4342 ,xet.event_type_code
4343 ,xet.event_number
4344 ,xet.event_date
4345 ,xet.transaction_date
4346 ,xet.reference_num_1
4347 ,xet.reference_num_2
4348 ,xet.reference_num_3
4349 ,xet.reference_num_4
4350 ,xet.reference_char_1
4351 ,xet.reference_char_2
4352 ,xet.reference_char_3
4353 ,xet.reference_char_4
4354 ,xet.reference_date_1
4355 ,xet.reference_date_2
4356 ,xet.reference_date_3
4357 ,xet.reference_date_4
4358 ,xet.event_created_by
4359 ,xet.budgetary_control_flag , l1.LINE_NUMBER
4360 , l1.ACCOUNT_NAME source_4
4361 , fvl4.meaning source_4_meaning
4362 , l1.CODE_COMBINATION_ID source_5
4363 , l1.ACCOUNT_TYPE source_6
4364 , fvl6.meaning source_6_meaning
4365 , l1.LINE_TYPE source_7
4366 , l1.EVENT_TYPE source_8
4367 , fvl8.meaning source_8_meaning
4368 , l1.DISBURSEMENT_STATUS source_9
4369 , l1.DISTRIBUTION_ID source_11
4370 , l1.DISTRIBUTION_TYPE source_12
4371 , fvl12.meaning source_12_meaning
4372 , l1.DISTRIBUTION_AMOUNT source_13
4373 FROM xla_events_gt xet
4374 , LNS_LOAN_DETAILS_EXT_V l1
4375 , fnd_lookup_values fvl4
4376 , fnd_lookup_values fvl6
4377 , fnd_lookup_values fvl8
4378 , fnd_lookup_values fvl12
4379 WHERE xet.event_id between x_first_event_id and x_last_event_id
4380 and xet.event_date between p_pad_start_date and p_pad_end_date
4381 and xet.event_type_code = C_EVENT_TYPE_CODE
4382 and xet.event_status_code <> 'N' AND l1.event_id = xet.event_id
4383 AND fvl4.lookup_type(+) = 'LOAN_DISTRIBUTION_ACCOUNTS'
4384 AND fvl4.lookup_code(+) = l1.ACCOUNT_NAME
4385 AND fvl4.view_application_id(+) = 206
4386 AND fvl4.language(+) = USERENV('LANG')
4387 AND fvl6.lookup_type(+) = 'LOAN_DISTRIBUTION_ACCOUNT_DRCR'
4388 AND fvl6.lookup_code(+) = l1.ACCOUNT_TYPE
4389 AND fvl6.view_application_id(+) = 206
4390 AND fvl6.language(+) = USERENV('LANG')
4391 AND fvl8.lookup_type(+) = 'LOAN_ACCOUNTING_EVENT'
4392 AND fvl8.lookup_code(+) = l1.EVENT_TYPE
4393 AND fvl8.view_application_id(+) = 206
4394 AND fvl8.language(+) = USERENV('LANG')
4395 AND fvl12.lookup_type(+) = 'LOAN_DISTRIBUTION_ACCOUNT_DRCR'
4396 AND fvl12.lookup_code(+) = l1.DISTRIBUTION_TYPE
4397 AND fvl12.view_application_id(+) = 206
4398 AND fvl12.language(+) = USERENV('LANG')
4399 ;
4400
4401 --
4402 BEGIN
4403 IF g_log_enabled THEN
4404 l_log_module := C_DEFAULT_MODULE||'.EventType_9';
4405 END IF;
4406 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4407 trace
4408 (p_msg => 'BEGIN of EventType_9'
4409 ,p_level => C_LEVEL_PROCEDURE
4410 ,p_module => l_log_module);
4411 END IF;
4412
4413 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
4414 trace
4415 (p_msg => 'p_application_id = '||p_application_id||
4416 ' - p_base_ledger_id = '||p_base_ledger_id||
4417 ' - p_target_ledger_id = '||p_target_ledger_id||
4418 ' - p_language = '||p_language||
4419 ' - p_currency_code = '||p_currency_code||
4420 ' - p_sla_ledger_id = '||p_sla_ledger_id
4421 ,p_level => C_LEVEL_STATEMENT
4422 ,p_module => l_log_module);
4423 END IF;
4424 --
4425 -- initialze arrays
4426 --
4427 g_array_event.DELETE;
4428 l_rec_array_event := l_null_rec_array_event;
4429 --
4430 --------------------------------------
4431 -- 4262811 Initialze MPA Line Number
4432 --------------------------------------
4433 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
4434
4435 --
4436
4437 --
4438 OPEN header_cur;
4439 --
4440 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
4441 trace
4442 (p_msg => 'SQL - FETCH header_cur'
4443 ,p_level => C_LEVEL_STATEMENT
4444 ,p_module => l_log_module);
4445 END IF;
4446 --
4447 LOOP
4448 FETCH header_cur BULK COLLECT INTO
4449 l_array_entity_id
4450 , l_array_legal_entity_id
4451 , l_array_entity_code
4452 , l_array_transaction_num
4453 , l_array_event_id
4454 , l_array_class_code
4455 , l_array_event_type
4456 , l_array_event_number
4457 , l_array_event_date
4458 , l_array_transaction_date
4459 , l_array_reference_num_1
4460 , l_array_reference_num_2
4461 , l_array_reference_num_3
4462 , l_array_reference_num_4
4463 , l_array_reference_char_1
4464 , l_array_reference_char_2
4465 , l_array_reference_char_3
4466 , l_array_reference_char_4
4467 , l_array_reference_date_1
4468 , l_array_reference_date_2
4469 , l_array_reference_date_3
4470 , l_array_reference_date_4
4471 , l_array_event_created_by
4472 , l_array_budgetary_control_flag
4473 , l_array_source_1
4474 , l_array_source_1_meaning
4475 , l_array_source_2
4476 , l_array_source_3
4477 , l_array_source_10
4478 , l_array_source_10_meaning
4479 , l_array_source_14
4480 , l_array_source_14_meaning
4484 , l_array_source_18
4481 , l_array_source_15
4482 , l_array_source_16
4483 , l_array_source_17
4485 LIMIT l_rows;
4486 --
4487 IF (C_LEVEL_EVENT >= g_log_level) THEN
4488 trace
4489 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
4490 ,p_level => C_LEVEL_EVENT
4491 ,p_module => l_log_module);
4492 END IF;
4493 --
4494 EXIT WHEN l_array_entity_id.COUNT = 0;
4495
4496 -- initialize arrays
4497 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
4498 XLA_AE_LINES_PKG.g_rec_lines := NULL;
4499
4500 --
4501 -- Bug 4458708
4502 --
4503 XLA_AE_LINES_PKG.g_LineNumber := 0;
4504
4505
4506 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
4507 g_last_hdr_idx := l_array_event_id.LAST;
4508 --
4509 -- loop for the headers. Each iteration is for each header extract row
4510 -- fetched in header cursor
4511 --
4512 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
4513
4514 --
4515 -- set event info as cache for other routines to refer event attributes
4516 --
4517 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
4518 (p_application_id => p_application_id
4519 ,p_primary_ledger_id => p_primary_ledger_id
4520 ,p_base_ledger_id => p_base_ledger_id
4521 ,p_target_ledger_id => p_target_ledger_id
4522 ,p_entity_id => l_array_entity_id(hdr_idx)
4523 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
4524 ,p_entity_code => l_array_entity_code(hdr_idx)
4525 ,p_transaction_num => l_array_transaction_num(hdr_idx)
4526 ,p_event_id => l_array_event_id(hdr_idx)
4527 ,p_event_class_code => l_array_class_code(hdr_idx)
4528 ,p_event_type_code => l_array_event_type(hdr_idx)
4529 ,p_event_number => l_array_event_number(hdr_idx)
4530 ,p_event_date => l_array_event_date(hdr_idx)
4531 ,p_transaction_date => l_array_transaction_date(hdr_idx)
4532 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
4533 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
4534 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
4535 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
4536 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
4537 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
4538 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
4539 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
4540 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
4541 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
4542 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
4543 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
4544 ,p_event_created_by => l_array_event_created_by(hdr_idx)
4545 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
4546
4547 --
4548 -- set the status of entry to C_VALID (0)
4549 --
4550 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
4551
4552 --
4553 -- initialize a row for ae header
4554 --
4555 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
4556
4557 l_event_id := l_array_event_id(hdr_idx);
4558
4559 --
4560 -- storing the hdr_idx for event. May be used by line cursor.
4561 --
4562 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
4563
4564 --
4565 -- store sources from header extract. This can be improved to
4566 -- store only those sources from header extract that may be used in lines
4567 --
4568
4569 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
4570 g_array_event(l_event_id).array_value_char('source_1_meaning') := l_array_source_1_meaning(hdr_idx);
4571 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
4572 g_array_event(l_event_id).array_value_char('source_3') := l_array_source_3(hdr_idx);
4573 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
4574 g_array_event(l_event_id).array_value_char('source_10_meaning') := l_array_source_10_meaning(hdr_idx);
4575 g_array_event(l_event_id).array_value_char('source_14') := l_array_source_14(hdr_idx);
4576 g_array_event(l_event_id).array_value_char('source_14_meaning') := l_array_source_14_meaning(hdr_idx);
4577 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
4578 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
4579 g_array_event(l_event_id).array_value_char('source_17') := l_array_source_17(hdr_idx);
4580 g_array_event(l_event_id).array_value_date('source_18') := l_array_source_18(hdr_idx);
4581
4582 --
4583 -- initilaize the status of ae headers for diffrent balance types
4584 -- the status is initialised to C_NOT_CREATED (2)
4585 --
4586 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
4587 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
4588 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
4589
4590 --
4591 -- call api to validate and store accounting attributes for header
4592 --
4593
4594 ------------------------------------------------------------
4595 -- Accrual Reversal : to get date for Standard Source (NONE)
4599 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
4596 ------------------------------------------------------------
4597 l_acc_rev_gl_date_source := NULL;
4598
4600 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_18');
4601
4602
4603 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
4604
4605 XLA_AE_HEADER_PKG.SetJeCategoryName;
4606
4607 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
4608 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
4609 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
4610 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
4611 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
4612
4613
4614 --
4615 xla_ae_header_pkg.SetHdrDescription(
4616 p_description => Description_1 (
4617 p_application_id => p_application_id
4618 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
4619 , p_source_1_meaning => g_array_event(l_event_id).array_value_char('source_1_meaning')
4620 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
4621 , p_source_3 => g_array_event(l_event_id).array_value_char('source_3')
4622 )
4623 );
4624 --
4625
4626 -- No header level analytical criteria
4627
4628 --
4629 --accounting attribute enhancement, bug 3612931
4630 --
4631 l_trx_reversal_source := SUBSTR(NULL, 1,30);
4632
4633 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
4634 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
4635
4636 xla_accounting_err_pkg.build_message
4637 (p_appli_s_name => 'XLA'
4638 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
4639 ,p_token_1 => 'ACCT_ATTR_NAME'
4640 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
4641 ,p_token_2 => 'PRODUCT_NAME'
4642 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
4643 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4644 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
4645 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
4646
4647 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
4648 --
4649 -- following sets the accounting attributes needed to reverse
4650 -- accounting for a distributeion
4651 --
4652 xla_ae_lines_pkg.SetTrxReversalAttrs
4653 (p_event_id => l_event_id
4654 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
4655 ,p_trx_reversal_source => l_trx_reversal_source);
4656
4657 END IF;
4658
4659
4660 ----------------------------------------------------------------
4661 -- 4262811 - update the header statuses to invalid in need be
4662 ----------------------------------------------------------------
4663 --
4664 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
4665
4666
4667 -----------------------------------------------
4668 -- No accrual reversal for the event class/type
4669 -----------------------------------------------
4670 ----------------------------------------------------------------
4671
4672 --
4673 -- this ends the header loop iteration for one bulk fetch
4674 --
4675 END LOOP;
4676
4677 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
4678 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
4679
4680 --
4681 -- insert dummy rows into lines gt table that were created due to
4682 -- transaction reversals
4683 --
4684 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
4685 l_result := XLA_AE_LINES_PKG.InsertLines;
4686 END IF;
4687
4688 --
4689 -- reset the temp_line_num for each set of events fetched from header
4690 -- cursor rather than doing it for each new event in line cursor
4691 -- Bug 3939231
4692 --
4693 xla_ae_lines_pkg.g_temp_line_num := 0;
4694
4695
4696
4697 --
4698 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
4699 --
4700 --
4701 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
4702
4703 trace
4704 (p_msg => 'SQL - FETCH line_cur'
4705 ,p_level => C_LEVEL_STATEMENT
4706 ,p_module => l_log_module);
4707
4708 END IF;
4709 --
4710 --
4711 LOOP
4712 --
4713 FETCH line_cur BULK COLLECT INTO
4714 l_array_entity_id
4715 , l_array_legal_entity_id
4716 , l_array_entity_code
4717 , l_array_transaction_num
4718 , l_array_event_id
4719 , l_array_class_code
4720 , l_array_event_type
4721 , l_array_event_number
4722 , l_array_event_date
4723 , l_array_transaction_date
4724 , l_array_reference_num_1
4725 , l_array_reference_num_2
4726 , l_array_reference_num_3
4727 , l_array_reference_num_4
4728 , l_array_reference_char_1
4729 , l_array_reference_char_2
4730 , l_array_reference_char_3
4734 , l_array_reference_date_3
4731 , l_array_reference_char_4
4732 , l_array_reference_date_1
4733 , l_array_reference_date_2
4735 , l_array_reference_date_4
4736 , l_array_event_created_by
4737 , l_array_budgetary_control_flag
4738 , l_array_extract_line_num
4739 , l_array_source_4
4740 , l_array_source_4_meaning
4741 , l_array_source_5
4742 , l_array_source_6
4743 , l_array_source_6_meaning
4744 , l_array_source_7
4745 , l_array_source_8
4746 , l_array_source_8_meaning
4747 , l_array_source_9
4748 , l_array_source_11
4749 , l_array_source_12
4750 , l_array_source_12_meaning
4751 , l_array_source_13
4752 LIMIT l_rows;
4753
4754 --
4755 IF (C_LEVEL_EVENT >= g_log_level) THEN
4756 trace
4757 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
4758 ,p_level => C_LEVEL_EVENT
4759 ,p_module => l_log_module);
4760 END IF;
4761 --
4762 EXIT WHEN l_array_entity_id.count = 0;
4763
4764 XLA_AE_LINES_PKG.g_rec_lines := null;
4765
4766 --
4767 -- Bug 4458708
4768 --
4769 XLA_AE_LINES_PKG.g_LineNumber := 0;
4770 --
4771 --
4772
4773 FOR Idx IN 1..l_array_event_id.count LOOP
4774 --
4775 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
4776 --
4777 l_event_id := l_array_event_id(idx); -- 5648433
4778
4779 --
4780 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
4781 --
4782
4783 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
4784 (g_array_event(l_event_id).array_value_num('header_index'))
4785 ,'N'
4786 ) <> 'Y'
4787 THEN
4788 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
4789 trace
4790 (p_msg => 'Trancaction revesal option is not Y '
4791 ,p_level => C_LEVEL_STATEMENT
4792 ,p_module => l_log_module);
4793 END IF;
4794
4795 --
4796 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
4797 --
4798 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
4799 --
4800 -- set event info as cache for other routines to refer event attributes
4801 --
4802
4803 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
4804 l_previous_event_id := l_event_id;
4805
4806 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
4807 (p_application_id => p_application_id
4808 ,p_primary_ledger_id => p_primary_ledger_id
4809 ,p_base_ledger_id => p_base_ledger_id
4810 ,p_target_ledger_id => p_target_ledger_id
4811 ,p_entity_id => l_array_entity_id(Idx)
4812 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
4813 ,p_entity_code => l_array_entity_code(Idx)
4814 ,p_transaction_num => l_array_transaction_num(Idx)
4815 ,p_event_id => l_array_event_id(Idx)
4816 ,p_event_class_code => l_array_class_code(Idx)
4817 ,p_event_type_code => l_array_event_type(Idx)
4818 ,p_event_number => l_array_event_number(Idx)
4819 ,p_event_date => l_array_event_date(Idx)
4820 ,p_transaction_date => l_array_transaction_date(Idx)
4821 ,p_reference_num_1 => l_array_reference_num_1(Idx)
4822 ,p_reference_num_2 => l_array_reference_num_2(Idx)
4823 ,p_reference_num_3 => l_array_reference_num_3(Idx)
4824 ,p_reference_num_4 => l_array_reference_num_4(Idx)
4825 ,p_reference_char_1 => l_array_reference_char_1(Idx)
4826 ,p_reference_char_2 => l_array_reference_char_2(Idx)
4827 ,p_reference_char_3 => l_array_reference_char_3(Idx)
4828 ,p_reference_char_4 => l_array_reference_char_4(Idx)
4829 ,p_reference_date_1 => l_array_reference_date_1(Idx)
4830 ,p_reference_date_2 => l_array_reference_date_2(Idx)
4831 ,p_reference_date_3 => l_array_reference_date_3(Idx)
4832 ,p_reference_date_4 => l_array_reference_date_4(Idx)
4833 ,p_event_created_by => l_array_event_created_by(Idx)
4834 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
4835 --
4836 END IF;
4837
4838
4839
4840 --
4841 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
4842
4843 l_acct_reversal_source := SUBSTR(NULL, 1,30);
4844
4845 IF l_continue_with_lines THEN
4846 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
4847 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
4848
4849 xla_accounting_err_pkg.build_message
4850 (p_appli_s_name => 'XLA'
4851 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
4852 ,p_token_1 => 'LINE_NUMBER'
4853 ,p_value_1 => l_array_extract_line_num(Idx)
4854 ,p_token_2 => 'PRODUCT_NAME'
4855 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
4856 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4857 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
4861 --
4858 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
4859
4860 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
4862 -- following sets the accounting attributes needed to reverse
4863 -- accounting for a distributeion
4864 --
4865
4866 --
4867 -- 5217187
4868 --
4869 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
4870 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
4871 g_array_event(l_event_id).array_value_num('header_index'));
4872 --
4873 --
4874
4875 -- No reversal code generated
4876
4877 xla_ae_lines_pkg.SetAcctReversalAttrs
4878 (p_event_id => l_event_id
4879 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
4880 ,p_calculate_acctd_flag => l_calculate_acctd_flag
4881 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
4882 END IF;
4883
4884 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
4885 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
4886
4887 --
4888 AcctLineType_4 (
4889 p_application_id => p_application_id
4890 ,p_event_id => l_event_id
4891 ,p_calculate_acctd_flag => l_calculate_acctd_flag
4892 ,p_calculate_g_l_flag => l_calculate_g_l_flag
4893 ,p_actual_flag => l_actual_flag
4894 ,p_balance_type_code => l_balance_type_code
4895 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
4896
4897 , p_source_4 => l_array_source_4(Idx)
4898 , p_source_4_meaning => l_array_source_4_meaning(Idx)
4899 , p_source_5 => l_array_source_5(Idx)
4900 , p_source_6 => l_array_source_6(Idx)
4901 , p_source_6_meaning => l_array_source_6_meaning(Idx)
4902 , p_source_7 => l_array_source_7(Idx)
4903 , p_source_8 => l_array_source_8(Idx)
4904 , p_source_8_meaning => l_array_source_8_meaning(Idx)
4905 , p_source_9 => l_array_source_9(Idx)
4906 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
4907 , p_source_10_meaning => g_array_event(l_event_id).array_value_char('source_10_meaning')
4908 , p_source_11 => l_array_source_11(Idx)
4909 , p_source_12 => l_array_source_12(Idx)
4910 , p_source_12_meaning => l_array_source_12_meaning(Idx)
4911 , p_source_13 => l_array_source_13(Idx)
4912 , p_source_14 => g_array_event(l_event_id).array_value_char('source_14')
4913 , p_source_14_meaning => g_array_event(l_event_id).array_value_char('source_14_meaning')
4914 , p_source_15 => g_array_event(l_event_id).array_value_date('source_15')
4915 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
4916 , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
4917 );
4918 If(l_balance_type_code = 'A') THEN
4919 l_actual_gain_loss_ref := l_gain_or_loss_ref;
4920 END IF;
4921
4922 --
4923
4924
4925 --
4926 AcctLineType_5 (
4927 p_application_id => p_application_id
4928 ,p_event_id => l_event_id
4929 ,p_calculate_acctd_flag => l_calculate_acctd_flag
4930 ,p_calculate_g_l_flag => l_calculate_g_l_flag
4931 ,p_actual_flag => l_actual_flag
4932 ,p_balance_type_code => l_balance_type_code
4933 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
4934
4935 , p_source_4 => l_array_source_4(Idx)
4936 , p_source_4_meaning => l_array_source_4_meaning(Idx)
4937 , p_source_5 => l_array_source_5(Idx)
4938 , p_source_6 => l_array_source_6(Idx)
4939 , p_source_6_meaning => l_array_source_6_meaning(Idx)
4940 , p_source_7 => l_array_source_7(Idx)
4941 , p_source_8 => l_array_source_8(Idx)
4942 , p_source_8_meaning => l_array_source_8_meaning(Idx)
4943 , p_source_9 => l_array_source_9(Idx)
4944 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
4945 , p_source_10_meaning => g_array_event(l_event_id).array_value_char('source_10_meaning')
4946 , p_source_11 => l_array_source_11(Idx)
4947 , p_source_12 => l_array_source_12(Idx)
4948 , p_source_12_meaning => l_array_source_12_meaning(Idx)
4949 , p_source_13 => l_array_source_13(Idx)
4950 , p_source_14 => g_array_event(l_event_id).array_value_char('source_14')
4951 , p_source_14_meaning => g_array_event(l_event_id).array_value_char('source_14_meaning')
4952 , p_source_15 => g_array_event(l_event_id).array_value_date('source_15')
4953 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
4954 , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
4955 );
4956 If(l_balance_type_code = 'A') THEN
4957 l_actual_gain_loss_ref := l_gain_or_loss_ref;
4958 END IF;
4959
4960 --
4961
4962 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
4963 -- or secondary ledger that has different currency with primary
4964 -- or alc that is calculated by sla
4965 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
4966 (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'))
4967
4968 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
4969 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
4970 AND (l_actual_flag = 'A')) THEN
4971 XLA_AE_LINES_PKG.CreateGainOrLossLines(
4972 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
4973 ,p_application_id => p_application_id
4974 ,p_amb_context_code => 'DEFAULT'
4978
4975 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
4976 ,p_event_class_code => C_EVENT_CLASS_CODE
4977 ,p_event_type_code => C_EVENT_TYPE_CODE
4979 ,p_gain_ccid => -1
4980 ,p_loss_ccid => -1
4981
4982 ,p_actual_flag => l_actual_flag
4983 ,p_enc_flag => null
4984 ,p_actual_g_l_ref => l_actual_gain_loss_ref
4985 ,p_enc_g_l_ref => null
4986 );
4987 END IF;
4988 END IF;
4989 END IF;
4990
4991 ELSE
4992 --
4993 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
4994 --
4995 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
4996 trace
4997 (p_msg => 'Trancaction revesal option is Y'
4998 ,p_level => C_LEVEL_STATEMENT
4999 ,p_module => l_log_module);
5000 END IF;
5001 END IF;
5002
5003 END LOOP;
5004 l_result := XLA_AE_LINES_PKG.InsertLines ;
5005 end loop;
5006 close line_cur;
5007
5008
5009 --
5010 -- insert headers into xla_ae_headers_gt table
5011 --
5012 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
5013
5014 -- insert into errors table here.
5015
5016 END LOOP;
5017
5018 --
5019 -- 4865292
5020 --
5021 -- Compare g_hdr_extract_count with event count in
5022 -- CreateHeadersAndLines.
5023 --
5024 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
5025
5026 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
5027 trace (p_msg => '# rows extracted from header extract objects '
5028 || ' (running total): '
5029 || g_hdr_extract_count
5030 ,p_level => C_LEVEL_STATEMENT
5031 ,p_module => l_log_module);
5032 END IF;
5033
5034 CLOSE header_cur;
5035 --
5036
5037 --
5038 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5039 trace
5040 (p_msg => 'END of EventType_9'
5041 ,p_level => C_LEVEL_PROCEDURE
5042 ,p_module => l_log_module);
5043 END IF;
5044 --
5045 RETURN l_result;
5046 EXCEPTION
5047 WHEN xla_exceptions_pkg.application_exception THEN
5048
5049 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
5050
5051
5052 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
5053
5054 RAISE;
5055 WHEN OTHERS THEN
5056 xla_exceptions_pkg.raise_message
5057 (p_location => 'XLA_00206_AAD_S_000004_PKG.EventType_9');
5058 END EventType_9;
5059 --
5060
5061 ---------------------------------------
5062 --
5063 -- PRIVATE PROCEDURE
5064 -- insert_sources_10
5065 --
5066 ----------------------------------------
5067 --
5068 PROCEDURE insert_sources_10(
5069 p_target_ledger_id IN NUMBER
5070 , p_language IN VARCHAR2
5071 , p_sla_ledger_id IN NUMBER
5072 , p_pad_start_date IN DATE
5073 , p_pad_end_date IN DATE
5074 )
5075 IS
5076
5077 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'ERS_ALL';
5078 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'ERS';
5079 p_apps_owner VARCHAR2(30);
5080 l_log_module VARCHAR2(240);
5081 BEGIN
5082 IF g_log_enabled THEN
5083 l_log_module := C_DEFAULT_MODULE||'.insert_sources_10';
5084 END IF;
5085 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5086
5087 trace
5088 (p_msg => 'BEGIN of insert_sources_10'
5089 ,p_level => C_LEVEL_PROCEDURE
5090 ,p_module => l_log_module);
5091
5092 END IF;
5093
5094 -- select APPS owner
5095 SELECT oracle_username
5096 INTO p_apps_owner
5097 FROM fnd_oracle_userid
5098 WHERE read_only_flag = 'U'
5099 ;
5100
5101 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
5102 trace
5103 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
5104 ' - p_language = '||p_language||
5105 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
5106 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
5107 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
5108 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
5109 ,p_level => C_LEVEL_STATEMENT
5110 ,p_module => l_log_module);
5111 END IF;
5112
5113
5114 --
5115 INSERT INTO xla_diag_sources --hdr2
5116 (
5117 event_id
5118 , ledger_id
5119 , sla_ledger_id
5120 , description_language
5121 , object_name
5122 , object_type_code
5123 , line_number
5124 , source_application_id
5125 , source_type_code
5126 , source_code
5127 , source_value
5128 , source_meaning
5129 , created_by
5130 , creation_date
5131 , last_update_date
5132 , last_updated_by
5133 , last_update_login
5134 , program_update_date
5135 , program_application_id
5136 , program_id
5137 , request_id
5138 )
5139 SELECT
5140 event_id
5144 , object_name
5141 , p_target_ledger_id
5142 , p_sla_ledger_id
5143 , p_language
5145 , object_type_code
5146 , line_number
5147 , source_application_id
5148 , source_type_code
5149 , source_code
5150 , SUBSTR(source_value ,1,1996)
5151 , SUBSTR(source_meaning ,1,200)
5152 , xla_environment_pkg.g_Usr_Id
5153 , TRUNC(SYSDATE)
5154 , TRUNC(SYSDATE)
5155 , xla_environment_pkg.g_Usr_Id
5156 , xla_environment_pkg.g_Login_Id
5157 , TRUNC(SYSDATE)
5158 , xla_environment_pkg.g_Prog_Appl_Id
5159 , xla_environment_pkg.g_Prog_Id
5160 , xla_environment_pkg.g_Req_Id
5161 FROM (
5162 SELECT xet.event_id event_id
5163 , 0 line_number
5164 , CASE r
5165 WHEN 1 THEN 'LNS_LOAN_HEADERS_EXT_V'
5166 WHEN 2 THEN 'LNS_LOAN_HEADERS_EXT_V'
5167 WHEN 3 THEN 'LNS_LOAN_HEADERS_EXT_V'
5168 WHEN 4 THEN 'LNS_LOAN_HEADERS_EXT_V'
5169 WHEN 5 THEN 'LNS_LOAN_HEADERS_EXT_V'
5170 WHEN 6 THEN 'LNS_LOAN_HEADERS_EXT_V'
5171 WHEN 7 THEN 'LNS_LOAN_HEADERS_EXT_V'
5172 WHEN 8 THEN 'LNS_LOAN_HEADERS_EXT_V'
5173 WHEN 9 THEN 'LNS_LOAN_HEADERS_EXT_V'
5174
5175 ELSE null
5176 END object_name
5177 , CASE r
5178 WHEN 1 THEN 'HEADER'
5179 WHEN 2 THEN 'HEADER'
5180 WHEN 3 THEN 'HEADER'
5181 WHEN 4 THEN 'HEADER'
5182 WHEN 5 THEN 'HEADER'
5183 WHEN 6 THEN 'HEADER'
5184 WHEN 7 THEN 'HEADER'
5185 WHEN 8 THEN 'HEADER'
5186 WHEN 9 THEN 'HEADER'
5187
5188 ELSE null
5189 END object_type_code
5190 , CASE r
5191 WHEN 1 THEN '206'
5192 WHEN 2 THEN '206'
5193 WHEN 3 THEN '206'
5194 WHEN 4 THEN '206'
5195 WHEN 5 THEN '206'
5196 WHEN 6 THEN '206'
5197 WHEN 7 THEN '206'
5198 WHEN 8 THEN '206'
5199 WHEN 9 THEN '206'
5200
5201 ELSE null
5202 END source_application_id
5203 , 'S' source_type_code
5204 , CASE r
5205 WHEN 1 THEN 'LOAN_CLASS_CODE'
5206 WHEN 2 THEN 'LOAN_TYPE'
5207 WHEN 3 THEN 'LOAN_NUMBER'
5208 WHEN 4 THEN 'LOAN_STATUS'
5209 WHEN 5 THEN 'LOAN_CURRENCY'
5210 WHEN 6 THEN 'EXCHANGE_DATE'
5211 WHEN 7 THEN 'EXCHANGE_RATE'
5212 WHEN 8 THEN 'EXCHANGE_RATE_TYPE'
5213 WHEN 9 THEN 'GL_DATE'
5214
5215 ELSE null
5216 END source_code
5217 , CASE r
5218 WHEN 1 THEN TO_CHAR(h2.LOAN_CLASS_CODE)
5219 WHEN 2 THEN TO_CHAR(h2.LOAN_TYPE)
5220 WHEN 3 THEN TO_CHAR(h2.LOAN_NUMBER)
5221 WHEN 4 THEN TO_CHAR(h2.LOAN_STATUS)
5222 WHEN 5 THEN TO_CHAR(h2.LOAN_CURRENCY)
5223 WHEN 6 THEN TO_CHAR(h2.EXCHANGE_DATE)
5224 WHEN 7 THEN TO_CHAR(h2.EXCHANGE_RATE)
5225 WHEN 8 THEN TO_CHAR(h2.EXCHANGE_RATE_TYPE)
5226 WHEN 9 THEN TO_CHAR(h2.GL_DATE)
5227
5228 ELSE null
5229 END source_value
5230 , CASE r
5231 WHEN 1 THEN fvl1.meaning
5232 WHEN 4 THEN fvl10.meaning
5233 WHEN 5 THEN fvl14.meaning
5234
5235 ELSE null
5236 END source_meaning
5237 FROM xla_events_gt xet
5238 , LNS_LOAN_HEADERS_EXT_V h2
5239 , fnd_lookup_values fvl1
5240 , fnd_lookup_values fvl10
5241 , fnd_lookup_values fvl14
5242 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
5243 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
5244 AND xet.event_class_code = C_EVENT_CLASS_CODE
5245 AND h2.event_id = xet.event_id
5246 AND fvl1.lookup_type(+) = 'LOAN_CLASS'
5247 AND fvl1.lookup_code(+) = h2.LOAN_CLASS_CODE
5248 AND fvl1.view_application_id(+) = 206
5249 AND fvl1.language(+) = USERENV('LANG')
5250 AND fvl10.lookup_type(+) = 'LOAN_STATUS'
5251 AND fvl10.lookup_code(+) = h2.LOAN_STATUS
5252 AND fvl10.view_application_id(+) = 206
5253 AND fvl10.language(+) = USERENV('LANG')
5254 AND fvl14.lookup_type(+) = 'CURRENCY_CODE'
5255 AND fvl14.lookup_code(+) = h2.LOAN_CURRENCY
5256 AND fvl14.view_application_id(+) = 101
5257 AND fvl14.language(+) = USERENV('LANG')
5258
5259 )
5260 ;
5261 --
5262 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
5263
5264 trace
5265 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
5269 END IF;
5266 ,p_level => C_LEVEL_STATEMENT
5267 ,p_module => l_log_module);
5268
5270 --
5271
5272
5273
5274 --
5275 INSERT INTO xla_diag_sources --line2
5276 (
5277 event_id
5278 , ledger_id
5279 , sla_ledger_id
5280 , description_language
5281 , object_name
5282 , object_type_code
5283 , line_number
5284 , source_application_id
5285 , source_type_code
5286 , source_code
5287 , source_value
5288 , source_meaning
5289 , created_by
5290 , creation_date
5291 , last_update_date
5292 , last_updated_by
5293 , last_update_login
5294 , program_update_date
5295 , program_application_id
5296 , program_id
5297 , request_id
5298 )
5299 SELECT event_id
5300 , p_target_ledger_id
5301 , p_sla_ledger_id
5302 , p_language
5303 , object_name
5304 , object_type_code
5305 , line_number
5306 , source_application_id
5307 , source_type_code
5308 , source_code
5309 , SUBSTR(source_value,1,1996)
5310 , SUBSTR(source_meaning ,1,200)
5311 , xla_environment_pkg.g_Usr_Id
5312 , TRUNC(SYSDATE)
5313 , TRUNC(SYSDATE)
5314 , xla_environment_pkg.g_Usr_Id
5315 , xla_environment_pkg.g_Login_Id
5316 , TRUNC(SYSDATE)
5317 , xla_environment_pkg.g_Prog_Appl_Id
5318 , xla_environment_pkg.g_Prog_Id
5319 , xla_environment_pkg.g_Req_Id
5320 FROM (
5321 SELECT xet.event_id event_id
5322 , l1.line_number line_number
5323 , CASE r
5324 WHEN 1 THEN 'LNS_LOAN_DETAILS_EXT_V'
5325 WHEN 2 THEN 'LNS_LOAN_DETAILS_EXT_V'
5326 WHEN 3 THEN 'LNS_LOAN_DETAILS_EXT_V'
5327 WHEN 4 THEN 'LNS_LOAN_DETAILS_EXT_V'
5328 WHEN 5 THEN 'LNS_LOAN_DETAILS_EXT_V'
5329 WHEN 6 THEN 'LNS_LOAN_DETAILS_EXT_V'
5330
5331 ELSE null
5332 END object_name
5333 , CASE r
5334 WHEN 1 THEN 'LINE'
5335 WHEN 2 THEN 'LINE'
5336 WHEN 3 THEN 'LINE'
5337 WHEN 4 THEN 'LINE'
5338 WHEN 5 THEN 'LINE'
5339 WHEN 6 THEN 'LINE'
5340
5341 ELSE null
5342 END object_type_code
5343 , CASE r
5344 WHEN 1 THEN '206'
5345 WHEN 2 THEN '206'
5346 WHEN 3 THEN '206'
5347 WHEN 4 THEN '206'
5348 WHEN 5 THEN '206'
5349 WHEN 6 THEN '206'
5350
5351 ELSE null
5352 END source_application_id
5353 , 'S' source_type_code
5354 , CASE r
5355 WHEN 1 THEN 'ACCOUNT_NAME'
5356 WHEN 2 THEN 'CODE_COMBINATION_ID'
5357 WHEN 3 THEN 'ACCOUNT_TYPE'
5358 WHEN 4 THEN 'LINE_TYPE'
5359 WHEN 5 THEN 'DISTRIBUTION_ID'
5360 WHEN 6 THEN 'DISTRIBUTION_AMOUNT'
5361
5362 ELSE null
5363 END source_code
5364 , CASE r
5365 WHEN 1 THEN TO_CHAR(l1.ACCOUNT_NAME)
5366 WHEN 2 THEN TO_CHAR(l1.CODE_COMBINATION_ID)
5367 WHEN 3 THEN TO_CHAR(l1.ACCOUNT_TYPE)
5368 WHEN 4 THEN TO_CHAR(l1.LINE_TYPE)
5369 WHEN 5 THEN TO_CHAR(l1.DISTRIBUTION_ID)
5370 WHEN 6 THEN TO_CHAR(l1.DISTRIBUTION_AMOUNT)
5371
5372 ELSE null
5373 END source_value
5374 , CASE r
5375 WHEN 1 THEN fvl4.meaning
5376 WHEN 3 THEN fvl6.meaning
5377
5378 ELSE null
5379 END source_meaning
5380 FROM xla_events_gt xet
5381 , LNS_LOAN_DETAILS_EXT_V l1
5382 , fnd_lookup_values fvl4
5383 , fnd_lookup_values fvl6
5384 , (select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
5385 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
5386 AND xet.event_class_code = C_EVENT_CLASS_CODE
5387 AND l1.event_id = xet.event_id
5388 AND fvl4.lookup_type(+) = 'LOAN_DISTRIBUTION_ACCOUNTS'
5389 AND fvl4.lookup_code(+) = l1.ACCOUNT_NAME
5390 AND fvl4.view_application_id(+) = 206
5391 AND fvl4.language(+) = USERENV('LANG')
5392 AND fvl6.lookup_type(+) = 'LOAN_DISTRIBUTION_ACCOUNT_DRCR'
5393 AND fvl6.lookup_code(+) = l1.ACCOUNT_TYPE
5394 AND fvl6.view_application_id(+) = 206
5395 AND fvl6.language(+) = USERENV('LANG')
5396
5397 )
5398 ;
5399 --
5400 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
5401
5402 trace
5403 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
5404 ,p_level => C_LEVEL_STATEMENT
5405 ,p_module => l_log_module);
5406
5410 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5407 END IF;
5408
5409
5411 trace
5412 (p_msg => 'END of insert_sources_10'
5413 ,p_level => C_LEVEL_PROCEDURE
5414 ,p_module => l_log_module);
5415 END IF;
5416 EXCEPTION
5417 WHEN xla_exceptions_pkg.application_exception THEN
5418 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
5419 trace
5420 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
5421 ,p_level => C_LEVEL_EXCEPTION
5422 ,p_module => l_log_module);
5423 END IF;
5424 RAISE;
5425 WHEN OTHERS THEN
5426 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
5427 trace
5428 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
5429 ,p_level => C_LEVEL_EXCEPTION
5430 ,p_module => l_log_module);
5431 END IF;
5432 xla_exceptions_pkg.raise_message
5433 (p_location => 'XLA_00206_AAD_S_000004_PKG.insert_sources_10');
5434 END insert_sources_10;
5435 --
5436
5437 ---------------------------------------
5438 --
5439 -- PRIVATE FUNCTION
5440 -- EventClass_10
5441 --
5442 ----------------------------------------
5443 --
5444 FUNCTION EventClass_10
5445 (p_application_id IN NUMBER
5446 ,p_base_ledger_id IN NUMBER
5447 ,p_target_ledger_id IN NUMBER
5448 ,p_language IN VARCHAR2
5449 ,p_currency_code IN VARCHAR2
5450 ,p_sla_ledger_id IN NUMBER
5451 ,p_pad_start_date IN DATE
5452 ,p_pad_end_date IN DATE
5453 ,p_primary_ledger_id IN NUMBER)
5454 RETURN BOOLEAN IS
5455 --
5456 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'ERS_ALL';
5457 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'ERS';
5458
5459 l_calculate_acctd_flag VARCHAR2(1) :='Y';
5460 l_calculate_g_l_flag VARCHAR2(1) :='Y';
5461 --
5462 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
5463 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
5464 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
5465 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
5466 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
5467 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
5468 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
5469 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
5470 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
5471 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
5472 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
5473 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
5474 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
5475 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
5476 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
5477 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
5478 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
5479 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
5480 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
5481 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
5482 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
5483 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
5484 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
5485 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
5486
5487 l_event_id NUMBER;
5488 l_previous_event_id NUMBER;
5489 l_first_event_id NUMBER;
5490 l_last_event_id NUMBER;
5491
5492 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
5493 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
5494 --
5495 --
5496 l_result BOOLEAN := TRUE;
5497 l_rows NUMBER := 1000;
5498 l_event_type_name VARCHAR2(80) := 'All';
5499 l_event_class_name VARCHAR2(80) := 'ERS Loans';
5500 l_description VARCHAR2(4000);
5501 l_transaction_reversal NUMBER;
5502 l_ae_header_id NUMBER;
5503 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
5504 l_log_module VARCHAR2(240);
5505 --
5506 l_acct_reversal_source VARCHAR2(30);
5507 l_trx_reversal_source VARCHAR2(30);
5508
5509 l_continue_with_lines BOOLEAN := TRUE;
5510 --
5511 l_acc_rev_gl_date_source DATE; -- 4262811
5512 --
5513 type t_array_event_id is table of number index by binary_integer;
5514
5515 l_rec_array_event t_rec_array_event;
5516 l_null_rec_array_event t_rec_array_event;
5517 l_array_ae_header_id xla_number_array_type;
5518 l_actual_flag VARCHAR2(1) := NULL;
5519 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
5520 l_balance_type_code VARCHAR2(1) :=NULL;
5521 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
5522
5523 --
5527 TYPE t_array_source_1 IS TABLE OF LNS_LOAN_HEADERS_EXT_V.LOAN_CLASS_CODE%TYPE INDEX BY BINARY_INTEGER;
5524 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
5525 --
5526
5528 TYPE t_array_source_2 IS TABLE OF LNS_LOAN_HEADERS_EXT_V.LOAN_TYPE%TYPE INDEX BY BINARY_INTEGER;
5529 TYPE t_array_source_3 IS TABLE OF LNS_LOAN_HEADERS_EXT_V.LOAN_NUMBER%TYPE INDEX BY BINARY_INTEGER;
5530 TYPE t_array_source_10 IS TABLE OF LNS_LOAN_HEADERS_EXT_V.LOAN_STATUS%TYPE INDEX BY BINARY_INTEGER;
5531 TYPE t_array_source_14 IS TABLE OF LNS_LOAN_HEADERS_EXT_V.LOAN_CURRENCY%TYPE INDEX BY BINARY_INTEGER;
5532 TYPE t_array_source_15 IS TABLE OF LNS_LOAN_HEADERS_EXT_V.EXCHANGE_DATE%TYPE INDEX BY BINARY_INTEGER;
5533 TYPE t_array_source_16 IS TABLE OF LNS_LOAN_HEADERS_EXT_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
5534 TYPE t_array_source_17 IS TABLE OF LNS_LOAN_HEADERS_EXT_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
5535 TYPE t_array_source_18 IS TABLE OF LNS_LOAN_HEADERS_EXT_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
5536
5537 TYPE t_array_source_4 IS TABLE OF LNS_LOAN_DETAILS_EXT_V.ACCOUNT_NAME%TYPE INDEX BY BINARY_INTEGER;
5538 TYPE t_array_source_5 IS TABLE OF LNS_LOAN_DETAILS_EXT_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
5539 TYPE t_array_source_6 IS TABLE OF LNS_LOAN_DETAILS_EXT_V.ACCOUNT_TYPE%TYPE INDEX BY BINARY_INTEGER;
5540 TYPE t_array_source_7 IS TABLE OF LNS_LOAN_DETAILS_EXT_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
5541 TYPE t_array_source_11 IS TABLE OF LNS_LOAN_DETAILS_EXT_V.DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
5542 TYPE t_array_source_13 IS TABLE OF LNS_LOAN_DETAILS_EXT_V.DISTRIBUTION_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
5543
5544 l_array_source_1 t_array_source_1;
5545 l_array_source_1_meaning t_array_lookup_meaning;
5546 l_array_source_2 t_array_source_2;
5547 l_array_source_3 t_array_source_3;
5548 l_array_source_10 t_array_source_10;
5549 l_array_source_10_meaning t_array_lookup_meaning;
5550 l_array_source_14 t_array_source_14;
5551 l_array_source_14_meaning t_array_lookup_meaning;
5552 l_array_source_15 t_array_source_15;
5553 l_array_source_16 t_array_source_16;
5554 l_array_source_17 t_array_source_17;
5555 l_array_source_18 t_array_source_18;
5556
5557 l_array_source_4 t_array_source_4;
5558 l_array_source_4_meaning t_array_lookup_meaning;
5559 l_array_source_5 t_array_source_5;
5560 l_array_source_6 t_array_source_6;
5561 l_array_source_6_meaning t_array_lookup_meaning;
5562 l_array_source_7 t_array_source_7;
5563 l_array_source_11 t_array_source_11;
5564 l_array_source_13 t_array_source_13;
5565
5566 --
5567 CURSOR header_cur
5568 IS
5569 SELECT /*+ leading(xet) cardinality(xet,1) */
5570 -- Event Class Code: ERS
5571 xet.entity_id
5572 ,xet.legal_entity_id
5573 ,xet.entity_code
5574 ,xet.transaction_number
5575 ,xet.event_id
5576 ,xet.event_class_code
5577 ,xet.event_type_code
5578 ,xet.event_number
5579 ,xet.event_date
5580 ,xet.transaction_date
5581 ,xet.reference_num_1
5582 ,xet.reference_num_2
5583 ,xet.reference_num_3
5584 ,xet.reference_num_4
5585 ,xet.reference_char_1
5586 ,xet.reference_char_2
5587 ,xet.reference_char_3
5588 ,xet.reference_char_4
5589 ,xet.reference_date_1
5590 ,xet.reference_date_2
5591 ,xet.reference_date_3
5592 ,xet.reference_date_4
5593 ,xet.event_created_by
5594 ,xet.budgetary_control_flag
5595 , h2.LOAN_CLASS_CODE source_1
5596 , fvl1.meaning source_1_meaning
5597 , h2.LOAN_TYPE source_2
5598 , h2.LOAN_NUMBER source_3
5599 , h2.LOAN_STATUS source_10
5600 , fvl10.meaning source_10_meaning
5601 , h2.LOAN_CURRENCY source_14
5602 , fvl14.meaning source_14_meaning
5603 , h2.EXCHANGE_DATE source_15
5604 , h2.EXCHANGE_RATE source_16
5605 , h2.EXCHANGE_RATE_TYPE source_17
5606 , h2.GL_DATE source_18
5607 FROM xla_events_gt xet
5608 , LNS_LOAN_HEADERS_EXT_V h2
5609 , fnd_lookup_values fvl1
5610 , fnd_lookup_values fvl10
5611 , fnd_lookup_values fvl14
5612 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
5613 and xet.event_class_code = C_EVENT_CLASS_CODE
5614 and xet.event_status_code <> 'N' AND h2.event_id = xet.event_id
5615 AND fvl1.lookup_type(+) = 'LOAN_CLASS'
5616 AND fvl1.lookup_code(+) = h2.LOAN_CLASS_CODE
5617 AND fvl1.view_application_id(+) = 206
5618 AND fvl1.language(+) = USERENV('LANG')
5619 AND fvl10.lookup_type(+) = 'LOAN_STATUS'
5620 AND fvl10.lookup_code(+) = h2.LOAN_STATUS
5621 AND fvl10.view_application_id(+) = 206
5622 AND fvl10.language(+) = USERENV('LANG')
5623 AND fvl14.lookup_type(+) = 'CURRENCY_CODE'
5624 AND fvl14.lookup_code(+) = h2.LOAN_CURRENCY
5625 AND fvl14.view_application_id(+) = 101
5626 AND fvl14.language(+) = USERENV('LANG')
5627
5628 ORDER BY event_id
5629 ;
5630
5631
5632 --
5633 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
5634 IS
5635 SELECT /*+ leading(xet) cardinality(xet,1) */
5636 -- Event Class Code: ERS
5637 xet.entity_id
5638 ,xet.legal_entity_id
5639 ,xet.entity_code
5640 ,xet.transaction_number
5641 ,xet.event_id
5642 ,xet.event_class_code
5643 ,xet.event_type_code
5647 ,xet.reference_num_1
5644 ,xet.event_number
5645 ,xet.event_date
5646 ,xet.transaction_date
5648 ,xet.reference_num_2
5649 ,xet.reference_num_3
5650 ,xet.reference_num_4
5651 ,xet.reference_char_1
5652 ,xet.reference_char_2
5653 ,xet.reference_char_3
5654 ,xet.reference_char_4
5655 ,xet.reference_date_1
5656 ,xet.reference_date_2
5657 ,xet.reference_date_3
5658 ,xet.reference_date_4
5659 ,xet.event_created_by
5660 ,xet.budgetary_control_flag
5661 , l1.LINE_NUMBER
5662 , l1.ACCOUNT_NAME source_4
5663 , fvl4.meaning source_4_meaning
5664 , l1.CODE_COMBINATION_ID source_5
5665 , l1.ACCOUNT_TYPE source_6
5666 , fvl6.meaning source_6_meaning
5667 , l1.LINE_TYPE source_7
5668 , l1.DISTRIBUTION_ID source_11
5669 , l1.DISTRIBUTION_AMOUNT source_13
5670 FROM xla_events_gt xet
5671 , LNS_LOAN_DETAILS_EXT_V l1
5672 , fnd_lookup_values fvl4
5673 , fnd_lookup_values fvl6
5674 WHERE xet.event_id between x_first_event_id and x_last_event_id
5675 and xet.event_date between p_pad_start_date and p_pad_end_date
5676 and xet.event_class_code = C_EVENT_CLASS_CODE
5677 and xet.event_status_code <> 'N' AND l1.event_id = xet.event_id
5678 AND fvl4.lookup_type(+) = 'LOAN_DISTRIBUTION_ACCOUNTS'
5679 AND fvl4.lookup_code(+) = l1.ACCOUNT_NAME
5680 AND fvl4.view_application_id(+) = 206
5681 AND fvl4.language(+) = USERENV('LANG')
5682 AND fvl6.lookup_type(+) = 'LOAN_DISTRIBUTION_ACCOUNT_DRCR'
5683 AND fvl6.lookup_code(+) = l1.ACCOUNT_TYPE
5684 AND fvl6.view_application_id(+) = 206
5685 AND fvl6.language(+) = USERENV('LANG')
5686 ;
5687
5688 --
5689 BEGIN
5690 IF g_log_enabled THEN
5691 l_log_module := C_DEFAULT_MODULE||'.EventClass_10';
5692 END IF;
5693 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5694 trace
5695 (p_msg => 'BEGIN of EventClass_10'
5696 ,p_level => C_LEVEL_PROCEDURE
5697 ,p_module => l_log_module);
5698 END IF;
5699
5700 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
5701 trace
5702 (p_msg => 'p_application_id = '||p_application_id||
5703 ' - p_base_ledger_id = '||p_base_ledger_id||
5704 ' - p_target_ledger_id = '||p_target_ledger_id||
5705 ' - p_language = '||p_language||
5706 ' - p_currency_code = '||p_currency_code||
5707 ' - p_sla_ledger_id = '||p_sla_ledger_id
5708 ,p_level => C_LEVEL_STATEMENT
5709 ,p_module => l_log_module);
5710 END IF;
5711 --
5712 -- initialze arrays
5713 --
5714 g_array_event.DELETE;
5715 l_rec_array_event := l_null_rec_array_event;
5716 --
5717 --------------------------------------
5718 -- 4262811 Initialze MPA Line Number
5719 --------------------------------------
5720 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
5721
5722 --
5723
5724 --
5725 OPEN header_cur;
5726 --
5727 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
5728 trace
5729 (p_msg => 'SQL - FETCH header_cur'
5730 ,p_level => C_LEVEL_STATEMENT
5731 ,p_module => l_log_module);
5732 END IF;
5733 --
5734 LOOP
5735 FETCH header_cur BULK COLLECT INTO
5736 l_array_entity_id
5737 , l_array_legal_entity_id
5738 , l_array_entity_code
5739 , l_array_transaction_num
5740 , l_array_event_id
5741 , l_array_class_code
5742 , l_array_event_type
5743 , l_array_event_number
5744 , l_array_event_date
5745 , l_array_transaction_date
5746 , l_array_reference_num_1
5747 , l_array_reference_num_2
5748 , l_array_reference_num_3
5749 , l_array_reference_num_4
5750 , l_array_reference_char_1
5751 , l_array_reference_char_2
5752 , l_array_reference_char_3
5753 , l_array_reference_char_4
5754 , l_array_reference_date_1
5755 , l_array_reference_date_2
5756 , l_array_reference_date_3
5757 , l_array_reference_date_4
5758 , l_array_event_created_by
5759 , l_array_budgetary_control_flag
5760 , l_array_source_1
5761 , l_array_source_1_meaning
5762 , l_array_source_2
5763 , l_array_source_3
5764 , l_array_source_10
5765 , l_array_source_10_meaning
5766 , l_array_source_14
5767 , l_array_source_14_meaning
5768 , l_array_source_15
5769 , l_array_source_16
5770 , l_array_source_17
5771 , l_array_source_18
5772 LIMIT l_rows;
5773 --
5774 IF (C_LEVEL_EVENT >= g_log_level) THEN
5775 trace
5776 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
5777 ,p_level => C_LEVEL_EVENT
5778 ,p_module => l_log_module);
5779 END IF;
5780 --
5781 EXIT WHEN l_array_entity_id.COUNT = 0;
5782
5783 -- initialize arrays
5784 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
5785 XLA_AE_LINES_PKG.g_rec_lines := NULL;
5786
5787 --
5788 -- Bug 4458708
5789 --
5790 XLA_AE_LINES_PKG.g_LineNumber := 0;
5791
5792
5793 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
5797 -- fetched in header cursor
5794 g_last_hdr_idx := l_array_event_id.LAST;
5795 --
5796 -- loop for the headers. Each iteration is for each header extract row
5798 --
5799 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
5800
5801 --
5802 -- set event info as cache for other routines to refer event attributes
5803 --
5804 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
5805 (p_application_id => p_application_id
5806 ,p_primary_ledger_id => p_primary_ledger_id
5807 ,p_base_ledger_id => p_base_ledger_id
5808 ,p_target_ledger_id => p_target_ledger_id
5809 ,p_entity_id => l_array_entity_id(hdr_idx)
5810 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
5811 ,p_entity_code => l_array_entity_code(hdr_idx)
5812 ,p_transaction_num => l_array_transaction_num(hdr_idx)
5813 ,p_event_id => l_array_event_id(hdr_idx)
5814 ,p_event_class_code => l_array_class_code(hdr_idx)
5815 ,p_event_type_code => l_array_event_type(hdr_idx)
5816 ,p_event_number => l_array_event_number(hdr_idx)
5817 ,p_event_date => l_array_event_date(hdr_idx)
5818 ,p_transaction_date => l_array_transaction_date(hdr_idx)
5819 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
5820 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
5821 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
5822 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
5823 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
5824 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
5825 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
5826 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
5827 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
5828 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
5829 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
5830 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
5831 ,p_event_created_by => l_array_event_created_by(hdr_idx)
5832 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
5833
5834 --
5835 -- set the status of entry to C_VALID (0)
5836 --
5837 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
5838
5839 --
5840 -- initialize a row for ae header
5841 --
5842 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
5843
5844 l_event_id := l_array_event_id(hdr_idx);
5845
5846 --
5847 -- storing the hdr_idx for event. May be used by line cursor.
5848 --
5849 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
5850
5851 --
5852 -- store sources from header extract. This can be improved to
5853 -- store only those sources from header extract that may be used in lines
5854 --
5855
5856 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
5857 g_array_event(l_event_id).array_value_char('source_1_meaning') := l_array_source_1_meaning(hdr_idx);
5858 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
5859 g_array_event(l_event_id).array_value_char('source_3') := l_array_source_3(hdr_idx);
5860 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
5861 g_array_event(l_event_id).array_value_char('source_10_meaning') := l_array_source_10_meaning(hdr_idx);
5862 g_array_event(l_event_id).array_value_char('source_14') := l_array_source_14(hdr_idx);
5863 g_array_event(l_event_id).array_value_char('source_14_meaning') := l_array_source_14_meaning(hdr_idx);
5864 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
5865 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
5866 g_array_event(l_event_id).array_value_char('source_17') := l_array_source_17(hdr_idx);
5867 g_array_event(l_event_id).array_value_date('source_18') := l_array_source_18(hdr_idx);
5868
5869 --
5870 -- initilaize the status of ae headers for diffrent balance types
5871 -- the status is initialised to C_NOT_CREATED (2)
5872 --
5873 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
5874 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
5875 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
5876
5877 --
5878 -- call api to validate and store accounting attributes for header
5879 --
5880
5881 ------------------------------------------------------------
5882 -- Accrual Reversal : to get date for Standard Source (NONE)
5883 ------------------------------------------------------------
5884 l_acc_rev_gl_date_source := NULL;
5885
5886 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
5887 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_18');
5888
5889
5890 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
5891
5892 XLA_AE_HEADER_PKG.SetJeCategoryName;
5893
5894 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
5895 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
5896 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
5900
5897 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
5898 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
5899
5901 --
5902 xla_ae_header_pkg.SetHdrDescription(
5903 p_description => Description_1 (
5904 p_application_id => p_application_id
5905 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
5906 , p_source_1_meaning => g_array_event(l_event_id).array_value_char('source_1_meaning')
5907 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
5908 , p_source_3 => g_array_event(l_event_id).array_value_char('source_3')
5909 )
5910 );
5911 --
5912
5913 -- No header level analytical criteria
5914
5915 --
5916 --accounting attribute enhancement, bug 3612931
5917 --
5918 l_trx_reversal_source := SUBSTR(NULL, 1,30);
5919
5920 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
5921 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
5922
5923 xla_accounting_err_pkg.build_message
5924 (p_appli_s_name => 'XLA'
5925 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
5926 ,p_token_1 => 'ACCT_ATTR_NAME'
5927 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
5928 ,p_token_2 => 'PRODUCT_NAME'
5929 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
5930 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
5931 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
5932 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
5933
5934 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
5935 --
5936 -- following sets the accounting attributes needed to reverse
5937 -- accounting for a distributeion
5938 --
5939 xla_ae_lines_pkg.SetTrxReversalAttrs
5940 (p_event_id => l_event_id
5941 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
5942 ,p_trx_reversal_source => l_trx_reversal_source);
5943
5944 END IF;
5945
5946
5947 ----------------------------------------------------------------
5948 -- 4262811 - update the header statuses to invalid in need be
5949 ----------------------------------------------------------------
5950 --
5951 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
5952
5953
5954 -----------------------------------------------
5955 -- No accrual reversal for the event class/type
5956 -----------------------------------------------
5957 ----------------------------------------------------------------
5958
5959 --
5960 -- this ends the header loop iteration for one bulk fetch
5961 --
5962 END LOOP;
5963
5964 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
5965 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
5966
5967 --
5968 -- insert dummy rows into lines gt table that were created due to
5969 -- transaction reversals
5970 --
5971 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
5972 l_result := XLA_AE_LINES_PKG.InsertLines;
5973 END IF;
5974
5975 --
5976 -- reset the temp_line_num for each set of events fetched from header
5977 -- cursor rather than doing it for each new event in line cursor
5978 -- Bug 3939231
5979 --
5980 xla_ae_lines_pkg.g_temp_line_num := 0;
5981
5982
5983
5984 --
5985 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
5986 --
5987 --
5988 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
5989
5990 trace
5991 (p_msg => 'SQL - FETCH line_cur'
5992 ,p_level => C_LEVEL_STATEMENT
5993 ,p_module => l_log_module);
5994
5995 END IF;
5996 --
5997 --
5998 LOOP
5999 --
6000 FETCH line_cur BULK COLLECT INTO
6001 l_array_entity_id
6002 , l_array_legal_entity_id
6003 , l_array_entity_code
6004 , l_array_transaction_num
6005 , l_array_event_id
6006 , l_array_class_code
6007 , l_array_event_type
6008 , l_array_event_number
6009 , l_array_event_date
6010 , l_array_transaction_date
6011 , l_array_reference_num_1
6012 , l_array_reference_num_2
6013 , l_array_reference_num_3
6014 , l_array_reference_num_4
6015 , l_array_reference_char_1
6016 , l_array_reference_char_2
6017 , l_array_reference_char_3
6018 , l_array_reference_char_4
6019 , l_array_reference_date_1
6020 , l_array_reference_date_2
6021 , l_array_reference_date_3
6022 , l_array_reference_date_4
6023 , l_array_event_created_by
6024 , l_array_budgetary_control_flag
6025 , l_array_extract_line_num
6026 , l_array_source_4
6027 , l_array_source_4_meaning
6028 , l_array_source_5
6029 , l_array_source_6
6030 , l_array_source_6_meaning
6031 , l_array_source_7
6032 , l_array_source_11
6033 , l_array_source_13
6034 LIMIT l_rows;
6035
6036 --
6037 IF (C_LEVEL_EVENT >= g_log_level) THEN
6038 trace
6039 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
6043 --
6040 ,p_level => C_LEVEL_EVENT
6041 ,p_module => l_log_module);
6042 END IF;
6044 EXIT WHEN l_array_entity_id.count = 0;
6045
6046 XLA_AE_LINES_PKG.g_rec_lines := null;
6047
6048 --
6049 -- Bug 4458708
6050 --
6051 XLA_AE_LINES_PKG.g_LineNumber := 0;
6052 --
6053 --
6054
6055 FOR Idx IN 1..l_array_event_id.count LOOP
6056 --
6057 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
6058 --
6059 l_event_id := l_array_event_id(idx); -- 5648433
6060
6061 --
6062 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
6063 --
6064
6065 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
6066 (g_array_event(l_event_id).array_value_num('header_index'))
6067 ,'N'
6068 ) <> 'Y'
6069 THEN
6070 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6071 trace
6072 (p_msg => 'Trancaction revesal option is not Y '
6073 ,p_level => C_LEVEL_STATEMENT
6074 ,p_module => l_log_module);
6075 END IF;
6076
6077 --
6078 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
6079 --
6080 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
6081 --
6082 -- set event info as cache for other routines to refer event attributes
6083 --
6084
6085 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
6086 l_previous_event_id := l_event_id;
6087
6088 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
6089 (p_application_id => p_application_id
6090 ,p_primary_ledger_id => p_primary_ledger_id
6091 ,p_base_ledger_id => p_base_ledger_id
6092 ,p_target_ledger_id => p_target_ledger_id
6093 ,p_entity_id => l_array_entity_id(Idx)
6094 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
6095 ,p_entity_code => l_array_entity_code(Idx)
6096 ,p_transaction_num => l_array_transaction_num(Idx)
6097 ,p_event_id => l_array_event_id(Idx)
6098 ,p_event_class_code => l_array_class_code(Idx)
6099 ,p_event_type_code => l_array_event_type(Idx)
6100 ,p_event_number => l_array_event_number(Idx)
6101 ,p_event_date => l_array_event_date(Idx)
6102 ,p_transaction_date => l_array_transaction_date(Idx)
6103 ,p_reference_num_1 => l_array_reference_num_1(Idx)
6104 ,p_reference_num_2 => l_array_reference_num_2(Idx)
6105 ,p_reference_num_3 => l_array_reference_num_3(Idx)
6106 ,p_reference_num_4 => l_array_reference_num_4(Idx)
6107 ,p_reference_char_1 => l_array_reference_char_1(Idx)
6108 ,p_reference_char_2 => l_array_reference_char_2(Idx)
6109 ,p_reference_char_3 => l_array_reference_char_3(Idx)
6110 ,p_reference_char_4 => l_array_reference_char_4(Idx)
6111 ,p_reference_date_1 => l_array_reference_date_1(Idx)
6112 ,p_reference_date_2 => l_array_reference_date_2(Idx)
6113 ,p_reference_date_3 => l_array_reference_date_3(Idx)
6114 ,p_reference_date_4 => l_array_reference_date_4(Idx)
6115 ,p_event_created_by => l_array_event_created_by(Idx)
6116 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
6117 --
6118 END IF;
6119
6120
6121
6122 --
6123 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
6124
6125 l_acct_reversal_source := SUBSTR(NULL, 1,30);
6126
6127 IF l_continue_with_lines THEN
6128 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
6129 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
6130
6131 xla_accounting_err_pkg.build_message
6132 (p_appli_s_name => 'XLA'
6133 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
6134 ,p_token_1 => 'LINE_NUMBER'
6135 ,p_value_1 => l_array_extract_line_num(Idx)
6136 ,p_token_2 => 'PRODUCT_NAME'
6137 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
6138 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
6139 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
6140 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
6141
6142 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
6143 --
6144 -- following sets the accounting attributes needed to reverse
6145 -- accounting for a distributeion
6146 --
6147
6148 --
6149 -- 5217187
6150 --
6151 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
6152 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
6153 g_array_event(l_event_id).array_value_num('header_index'));
6154 --
6155 --
6156
6157 -- No reversal code generated
6158
6159 xla_ae_lines_pkg.SetAcctReversalAttrs
6160 (p_event_id => l_event_id
6161 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
6162 ,p_calculate_acctd_flag => l_calculate_acctd_flag
6166 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
6163 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
6164 END IF;
6165
6167 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
6168
6169 --
6170 AcctLineType_6 (
6171 p_application_id => p_application_id
6172 ,p_event_id => l_event_id
6173 ,p_calculate_acctd_flag => l_calculate_acctd_flag
6174 ,p_calculate_g_l_flag => l_calculate_g_l_flag
6175 ,p_actual_flag => l_actual_flag
6176 ,p_balance_type_code => l_balance_type_code
6177 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
6178
6179 , p_source_4 => l_array_source_4(Idx)
6180 , p_source_4_meaning => l_array_source_4_meaning(Idx)
6181 , p_source_5 => l_array_source_5(Idx)
6182 , p_source_6 => l_array_source_6(Idx)
6183 , p_source_6_meaning => l_array_source_6_meaning(Idx)
6184 , p_source_7 => l_array_source_7(Idx)
6185 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
6186 , p_source_10_meaning => g_array_event(l_event_id).array_value_char('source_10_meaning')
6187 , p_source_11 => l_array_source_11(Idx)
6188 , p_source_13 => l_array_source_13(Idx)
6189 , p_source_14 => g_array_event(l_event_id).array_value_char('source_14')
6190 , p_source_14_meaning => g_array_event(l_event_id).array_value_char('source_14_meaning')
6191 , p_source_15 => g_array_event(l_event_id).array_value_date('source_15')
6192 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
6193 , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
6194 );
6195 If(l_balance_type_code = 'A') THEN
6196 l_actual_gain_loss_ref := l_gain_or_loss_ref;
6197 END IF;
6198
6199 --
6200
6201
6202 --
6203 AcctLineType_7 (
6204 p_application_id => p_application_id
6205 ,p_event_id => l_event_id
6206 ,p_calculate_acctd_flag => l_calculate_acctd_flag
6207 ,p_calculate_g_l_flag => l_calculate_g_l_flag
6208 ,p_actual_flag => l_actual_flag
6209 ,p_balance_type_code => l_balance_type_code
6210 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
6211
6212 , p_source_4 => l_array_source_4(Idx)
6213 , p_source_4_meaning => l_array_source_4_meaning(Idx)
6214 , p_source_5 => l_array_source_5(Idx)
6215 , p_source_6 => l_array_source_6(Idx)
6216 , p_source_6_meaning => l_array_source_6_meaning(Idx)
6217 , p_source_7 => l_array_source_7(Idx)
6218 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
6219 , p_source_10_meaning => g_array_event(l_event_id).array_value_char('source_10_meaning')
6220 , p_source_11 => l_array_source_11(Idx)
6221 , p_source_13 => l_array_source_13(Idx)
6222 , p_source_14 => g_array_event(l_event_id).array_value_char('source_14')
6223 , p_source_14_meaning => g_array_event(l_event_id).array_value_char('source_14_meaning')
6224 , p_source_15 => g_array_event(l_event_id).array_value_date('source_15')
6225 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
6226 , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
6227 );
6228 If(l_balance_type_code = 'A') THEN
6229 l_actual_gain_loss_ref := l_gain_or_loss_ref;
6230 END IF;
6231
6232 --
6233
6234 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
6235 -- or secondary ledger that has different currency with primary
6236 -- or alc that is calculated by sla
6237 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
6238 (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'))
6239
6240 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
6241 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
6242 AND (l_actual_flag = 'A')) THEN
6243 XLA_AE_LINES_PKG.CreateGainOrLossLines(
6244 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
6245 ,p_application_id => p_application_id
6246 ,p_amb_context_code => 'DEFAULT'
6247 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
6248 ,p_event_class_code => C_EVENT_CLASS_CODE
6249 ,p_event_type_code => C_EVENT_TYPE_CODE
6250
6251 ,p_gain_ccid => -1
6252 ,p_loss_ccid => -1
6253
6254 ,p_actual_flag => l_actual_flag
6255 ,p_enc_flag => null
6256 ,p_actual_g_l_ref => l_actual_gain_loss_ref
6257 ,p_enc_g_l_ref => null
6258 );
6259 END IF;
6260 END IF;
6261 END IF;
6262
6263 ELSE
6264 --
6265 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
6266 --
6267 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6268 trace
6269 (p_msg => 'Trancaction revesal option is Y'
6270 ,p_level => C_LEVEL_STATEMENT
6271 ,p_module => l_log_module);
6272 END IF;
6273 END IF;
6274
6275 END LOOP;
6276 l_result := XLA_AE_LINES_PKG.InsertLines ;
6277 end loop;
6278 close line_cur;
6279
6280
6281 --
6282 -- insert headers into xla_ae_headers_gt table
6283 --
6284 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
6285
6286 -- insert into errors table here.
6287
6288 END LOOP;
6289
6290 --
6291 -- 4865292
6292 --
6296 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
6293 -- Compare g_hdr_extract_count with event count in
6294 -- CreateHeadersAndLines.
6295 --
6297
6298 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6299 trace (p_msg => '# rows extracted from header extract objects '
6300 || ' (running total): '
6301 || g_hdr_extract_count
6302 ,p_level => C_LEVEL_STATEMENT
6303 ,p_module => l_log_module);
6304 END IF;
6305
6306 CLOSE header_cur;
6307 --
6308
6309 --
6310 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6311 trace
6312 (p_msg => 'END of EventClass_10'
6313 ,p_level => C_LEVEL_PROCEDURE
6314 ,p_module => l_log_module);
6315 END IF;
6316 --
6317 RETURN l_result;
6318 EXCEPTION
6319 WHEN xla_exceptions_pkg.application_exception THEN
6320
6321 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
6322
6323
6324 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
6325
6326 RAISE;
6327 WHEN OTHERS THEN
6328 xla_exceptions_pkg.raise_message
6329 (p_location => 'XLA_00206_AAD_S_000004_PKG.EventClass_10');
6330 END EventClass_10;
6331 --
6332
6333 ---------------------------------------
6334 --
6335 -- PRIVATE PROCEDURE
6336 -- insert_sources_11
6337 --
6338 ----------------------------------------
6339 --
6340 PROCEDURE insert_sources_11(
6341 p_target_ledger_id IN NUMBER
6342 , p_language IN VARCHAR2
6343 , p_sla_ledger_id IN NUMBER
6344 , p_pad_start_date IN DATE
6345 , p_pad_end_date IN DATE
6346 )
6347 IS
6348
6349 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FUTURE_DISBURSEMENT_CANCELLED';
6350 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DIRECT';
6351 p_apps_owner VARCHAR2(30);
6352 l_log_module VARCHAR2(240);
6353 BEGIN
6354 IF g_log_enabled THEN
6355 l_log_module := C_DEFAULT_MODULE||'.insert_sources_11';
6356 END IF;
6357 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6358
6359 trace
6360 (p_msg => 'BEGIN of insert_sources_11'
6361 ,p_level => C_LEVEL_PROCEDURE
6362 ,p_module => l_log_module);
6363
6364 END IF;
6365
6366 -- select APPS owner
6367 SELECT oracle_username
6368 INTO p_apps_owner
6369 FROM fnd_oracle_userid
6370 WHERE read_only_flag = 'U'
6371 ;
6372
6373 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6374 trace
6375 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
6376 ' - p_language = '||p_language||
6377 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
6378 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
6379 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
6380 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
6381 ,p_level => C_LEVEL_STATEMENT
6382 ,p_module => l_log_module);
6383 END IF;
6384
6385
6386 --
6387 INSERT INTO xla_diag_sources --hdr1
6388 (
6389 event_id
6390 , ledger_id
6391 , sla_ledger_id
6392 , description_language
6393 , object_name
6394 , object_type_code
6395 , line_number
6396 , source_application_id
6397 , source_type_code
6398 , source_code
6399 , source_value
6400 , source_meaning
6401 , created_by
6402 , creation_date
6403 , last_update_date
6404 , last_updated_by
6405 , last_update_login
6406 , program_update_date
6407 , program_application_id
6408 , program_id
6409 , request_id
6410 )
6411 SELECT
6412 event_id
6413 , p_target_ledger_id
6414 , p_sla_ledger_id
6415 , p_language
6416 , object_name
6417 , object_type_code
6418 , line_number
6419 , source_application_id
6420 , source_type_code
6421 , source_code
6422 , SUBSTR(source_value ,1,1996)
6423 , SUBSTR(source_meaning,1,200)
6424 , xla_environment_pkg.g_Usr_Id
6425 , TRUNC(SYSDATE)
6426 , TRUNC(SYSDATE)
6427 , xla_environment_pkg.g_Usr_Id
6428 , xla_environment_pkg.g_Login_Id
6429 , TRUNC(SYSDATE)
6430 , xla_environment_pkg.g_Prog_Appl_Id
6431 , xla_environment_pkg.g_Prog_Id
6432 , xla_environment_pkg.g_Req_Id
6433 FROM (
6434 SELECT xet.event_id event_id
6435 , 0 line_number
6436 , CASE r
6437 WHEN 1 THEN 'LNS_LOAN_HEADERS_EXT_V'
6438 WHEN 2 THEN 'LNS_LOAN_HEADERS_EXT_V'
6439 WHEN 3 THEN 'LNS_LOAN_HEADERS_EXT_V'
6440 WHEN 4 THEN 'LNS_LOAN_HEADERS_EXT_V'
6441
6442 ELSE null
6443 END object_name
6444 , CASE r
6445 WHEN 1 THEN 'HEADER'
6446 WHEN 2 THEN 'HEADER'
6450 ELSE null
6447 WHEN 3 THEN 'HEADER'
6448 WHEN 4 THEN 'HEADER'
6449
6451 END object_type_code
6452 , CASE r
6453 WHEN 1 THEN '206'
6454 WHEN 2 THEN '206'
6455 WHEN 3 THEN '206'
6456 WHEN 4 THEN '206'
6457
6458 ELSE null
6459 END source_application_id
6460 , 'S' source_type_code
6461 , CASE r
6462 WHEN 1 THEN 'LOAN_CLASS_CODE'
6463 WHEN 2 THEN 'LOAN_TYPE'
6464 WHEN 3 THEN 'LOAN_NUMBER'
6465 WHEN 4 THEN 'GL_DATE'
6466
6467 ELSE null
6468 END source_code
6469 , CASE r
6470 WHEN 1 THEN TO_CHAR(h1.LOAN_CLASS_CODE)
6471 WHEN 2 THEN TO_CHAR(h1.LOAN_TYPE)
6472 WHEN 3 THEN TO_CHAR(h1.LOAN_NUMBER)
6473 WHEN 4 THEN TO_CHAR(h1.GL_DATE)
6474
6475 ELSE null
6476 END source_value
6477 , CASE r
6478 WHEN 1 THEN fvl1.meaning
6479
6480 ELSE null
6481 END source_meaning
6482 FROM xla_events_gt xet
6483 , LNS_LOAN_HEADERS_EXT_V h1
6484 , fnd_lookup_values fvl1
6485 ,(select rownum r from all_objects where rownum <= 4 and owner = p_apps_owner)
6486 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
6487 AND xet.event_type_code = C_EVENT_TYPE_CODE
6488 AND h1.event_id = xet.event_id
6489 AND fvl1.lookup_type(+) = 'LOAN_CLASS'
6490 AND fvl1.lookup_code(+) = h1.LOAN_CLASS_CODE
6491 AND fvl1.view_application_id(+) = 206
6492 AND fvl1.language(+) = USERENV('LANG')
6493
6494 )
6495 ;
6496 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6497
6498 trace
6499 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
6500 ,p_level => C_LEVEL_STATEMENT
6501 ,p_module => l_log_module);
6502
6503 END IF;
6504 --
6505
6506
6507
6508
6509 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6510 trace
6511 (p_msg => 'END of insert_sources_11'
6512 ,p_level => C_LEVEL_PROCEDURE
6513 ,p_module => l_log_module);
6514 END IF;
6515 EXCEPTION
6516 WHEN xla_exceptions_pkg.application_exception THEN
6517 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
6518 trace
6519 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
6520 ,p_level => C_LEVEL_EXCEPTION
6521 ,p_module => l_log_module);
6522 END IF;
6523 RAISE;
6524 WHEN OTHERS THEN
6525 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
6526 trace
6527 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
6528 ,p_level => C_LEVEL_EXCEPTION
6529 ,p_module => l_log_module);
6530 END IF;
6531 xla_exceptions_pkg.raise_message
6532 (p_location => 'XLA_00206_AAD_S_000004_PKG.insert_sources_11');
6533 END insert_sources_11;
6534 --
6535
6536 ---------------------------------------
6537 --
6538 -- PRIVATE FUNCTION
6539 -- EventType_11
6540 --
6541 ----------------------------------------
6542 --
6543 FUNCTION EventType_11
6544 (p_application_id IN NUMBER
6545 ,p_base_ledger_id IN NUMBER
6546 ,p_target_ledger_id IN NUMBER
6547 ,p_language IN VARCHAR2
6548 ,p_currency_code IN VARCHAR2
6549 ,p_sla_ledger_id IN NUMBER
6550 ,p_pad_start_date IN DATE
6551 ,p_pad_end_date IN DATE
6552 ,p_primary_ledger_id IN NUMBER)
6553 RETURN BOOLEAN IS
6554 --
6555 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FUTURE_DISBURSEMENT_CANCELLED';
6556 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DIRECT';
6557
6558 l_calculate_acctd_flag VARCHAR2(1) :='Y';
6559 l_calculate_g_l_flag VARCHAR2(1) :='Y';
6560 --
6561 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
6562 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
6563 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
6564 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
6565 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
6566 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
6567 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
6568 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
6569 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
6570 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
6571 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
6572 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
6573 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
6577 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
6574 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
6575 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
6576 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
6578 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
6579 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
6580 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
6581 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
6582 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
6583 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
6584 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
6585
6586 l_event_id NUMBER;
6587 l_previous_event_id NUMBER;
6588 l_first_event_id NUMBER;
6589 l_last_event_id NUMBER;
6590
6591 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
6592 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
6593 --
6594 --
6595 l_result BOOLEAN := TRUE;
6596 l_rows NUMBER := 1000;
6597 l_event_type_name VARCHAR2(80) := 'Future Disbursement Cancelled';
6598 l_event_class_name VARCHAR2(80) := 'Direct Loan';
6599 l_description VARCHAR2(4000);
6600 l_transaction_reversal NUMBER;
6601 l_ae_header_id NUMBER;
6602 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
6603 l_log_module VARCHAR2(240);
6604 --
6605 l_acct_reversal_source VARCHAR2(30);
6606 l_trx_reversal_source VARCHAR2(30);
6607
6608 l_continue_with_lines BOOLEAN := TRUE;
6609 --
6610 l_acc_rev_gl_date_source DATE; -- 4262811
6611 --
6612 type t_array_event_id is table of number index by binary_integer;
6613
6614 l_rec_array_event t_rec_array_event;
6615 l_null_rec_array_event t_rec_array_event;
6616 l_array_ae_header_id xla_number_array_type;
6617 l_actual_flag VARCHAR2(1) := NULL;
6618 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
6619 l_balance_type_code VARCHAR2(1) :=NULL;
6620 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
6621
6622 --
6623 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
6624 --
6625
6626 TYPE t_array_source_1 IS TABLE OF LNS_LOAN_HEADERS_EXT_V.LOAN_CLASS_CODE%TYPE INDEX BY BINARY_INTEGER;
6627 TYPE t_array_source_2 IS TABLE OF LNS_LOAN_HEADERS_EXT_V.LOAN_TYPE%TYPE INDEX BY BINARY_INTEGER;
6628 TYPE t_array_source_3 IS TABLE OF LNS_LOAN_HEADERS_EXT_V.LOAN_NUMBER%TYPE INDEX BY BINARY_INTEGER;
6629 TYPE t_array_source_18 IS TABLE OF LNS_LOAN_HEADERS_EXT_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
6630
6631
6632 l_array_source_1 t_array_source_1;
6633 l_array_source_1_meaning t_array_lookup_meaning;
6634 l_array_source_2 t_array_source_2;
6635 l_array_source_3 t_array_source_3;
6636 l_array_source_18 t_array_source_18;
6637
6638
6639 --
6640 CURSOR header_cur
6641 IS
6642 SELECT /*+ leading(xet) cardinality(xet,1) */
6643 -- Event Type Code: FUTURE_DISBURSEMENT_CANCELLED
6644 -- Event Class Code: DIRECT
6645 xet.entity_id
6646 , xet.legal_entity_id
6647 , xet.entity_code
6648 , xet.transaction_number
6649 , xet.event_id
6650 , xet.event_class_code
6651 , xet.event_type_code
6652 , xet.event_number
6653 , xet.event_date
6654 , xet.transaction_date
6655 , xet.reference_num_1
6656 , xet.reference_num_2
6657 , xet.reference_num_3
6658 , xet.reference_num_4
6659 , xet.reference_char_1
6660 , xet.reference_char_2
6661 , xet.reference_char_3
6662 , xet.reference_char_4
6663 , xet.reference_date_1
6664 , xet.reference_date_2
6665 , xet.reference_date_3
6666 , xet.reference_date_4
6667 , xet.event_created_by
6668 , xet.budgetary_control_flag
6669 , h1.LOAN_CLASS_CODE source_1
6670 , fvl1.meaning source_1_meaning
6671 , h1.LOAN_TYPE source_2
6672 , h1.LOAN_NUMBER source_3
6673 , h1.GL_DATE source_18
6674 FROM xla_events_gt xet
6675 , LNS_LOAN_HEADERS_EXT_V h1
6676 , fnd_lookup_values fvl1
6677 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
6678 and xet.event_type_code = C_EVENT_TYPE_CODE
6679 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
6680 AND fvl1.lookup_type(+) = 'LOAN_CLASS'
6681 AND fvl1.lookup_code(+) = h1.LOAN_CLASS_CODE
6682 AND fvl1.view_application_id(+) = 206
6683 AND fvl1.language(+) = USERENV('LANG')
6684
6685 ORDER BY event_id
6686 ;
6687
6688
6689 --
6690 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
6691 IS
6692 SELECT /*+ leading(xet) cardinality(xet,1) */
6693 -- Event Type Code: FUTURE_DISBURSEMENT_CANCELLED
6694 -- Event Class Code: DIRECT
6695 xet.entity_id
6696 ,xet.legal_entity_id
6697 ,xet.entity_code
6698 ,xet.transaction_number
6699 ,xet.event_id
6700 ,xet.event_class_code
6701 ,xet.event_type_code
6702 ,xet.event_number
6703 ,xet.event_date
6704 ,xet.transaction_date
6705 ,xet.reference_num_1
6709 ,xet.reference_char_1
6706 ,xet.reference_num_2
6707 ,xet.reference_num_3
6708 ,xet.reference_num_4
6710 ,xet.reference_char_2
6711 ,xet.reference_char_3
6712 ,xet.reference_char_4
6713 ,xet.reference_date_1
6714 ,xet.reference_date_2
6715 ,xet.reference_date_3
6716 ,xet.reference_date_4
6717 ,xet.event_created_by
6718 ,xet.budgetary_control_flag , 0
6719 FROM xla_events_gt xet
6720 WHERE xet.event_id between x_first_event_id and x_last_event_id
6721 and xet.event_date between p_pad_start_date and p_pad_end_date
6722 and xet.event_type_code = C_EVENT_TYPE_CODE
6723 and xet.event_status_code <> 'N' ;
6724
6725 --
6726 BEGIN
6727 IF g_log_enabled THEN
6728 l_log_module := C_DEFAULT_MODULE||'.EventType_11';
6729 END IF;
6730 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6731 trace
6732 (p_msg => 'BEGIN of EventType_11'
6733 ,p_level => C_LEVEL_PROCEDURE
6734 ,p_module => l_log_module);
6735 END IF;
6736
6737 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6738 trace
6739 (p_msg => 'p_application_id = '||p_application_id||
6740 ' - p_base_ledger_id = '||p_base_ledger_id||
6741 ' - p_target_ledger_id = '||p_target_ledger_id||
6742 ' - p_language = '||p_language||
6743 ' - p_currency_code = '||p_currency_code||
6744 ' - p_sla_ledger_id = '||p_sla_ledger_id
6745 ,p_level => C_LEVEL_STATEMENT
6746 ,p_module => l_log_module);
6747 END IF;
6748 --
6749 -- initialze arrays
6750 --
6751 g_array_event.DELETE;
6752 l_rec_array_event := l_null_rec_array_event;
6753 --
6754 --------------------------------------
6755 -- 4262811 Initialze MPA Line Number
6756 --------------------------------------
6757 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
6758
6759 --
6760
6761 --
6762 OPEN header_cur;
6763 --
6764 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6765 trace
6766 (p_msg => 'SQL - FETCH header_cur'
6767 ,p_level => C_LEVEL_STATEMENT
6768 ,p_module => l_log_module);
6769 END IF;
6770 --
6771 LOOP
6772 FETCH header_cur BULK COLLECT INTO
6773 l_array_entity_id
6774 , l_array_legal_entity_id
6775 , l_array_entity_code
6776 , l_array_transaction_num
6777 , l_array_event_id
6778 , l_array_class_code
6779 , l_array_event_type
6780 , l_array_event_number
6781 , l_array_event_date
6782 , l_array_transaction_date
6783 , l_array_reference_num_1
6784 , l_array_reference_num_2
6785 , l_array_reference_num_3
6786 , l_array_reference_num_4
6787 , l_array_reference_char_1
6788 , l_array_reference_char_2
6789 , l_array_reference_char_3
6790 , l_array_reference_char_4
6791 , l_array_reference_date_1
6792 , l_array_reference_date_2
6793 , l_array_reference_date_3
6794 , l_array_reference_date_4
6795 , l_array_event_created_by
6796 , l_array_budgetary_control_flag
6797 , l_array_source_1
6798 , l_array_source_1_meaning
6799 , l_array_source_2
6800 , l_array_source_3
6801 , l_array_source_18
6802 LIMIT l_rows;
6803 --
6804 IF (C_LEVEL_EVENT >= g_log_level) THEN
6805 trace
6806 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
6807 ,p_level => C_LEVEL_EVENT
6808 ,p_module => l_log_module);
6809 END IF;
6810 --
6811 EXIT WHEN l_array_entity_id.COUNT = 0;
6812
6813 -- initialize arrays
6814 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
6815 XLA_AE_LINES_PKG.g_rec_lines := NULL;
6816
6817 --
6818 -- Bug 4458708
6819 --
6820 XLA_AE_LINES_PKG.g_LineNumber := 0;
6821
6822
6823 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
6824 g_last_hdr_idx := l_array_event_id.LAST;
6825 --
6826 -- loop for the headers. Each iteration is for each header extract row
6827 -- fetched in header cursor
6828 --
6829 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
6830
6831 --
6835 (p_application_id => p_application_id
6832 -- set event info as cache for other routines to refer event attributes
6833 --
6834 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
6836 ,p_primary_ledger_id => p_primary_ledger_id
6837 ,p_base_ledger_id => p_base_ledger_id
6838 ,p_target_ledger_id => p_target_ledger_id
6839 ,p_entity_id => l_array_entity_id(hdr_idx)
6840 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
6841 ,p_entity_code => l_array_entity_code(hdr_idx)
6842 ,p_transaction_num => l_array_transaction_num(hdr_idx)
6843 ,p_event_id => l_array_event_id(hdr_idx)
6844 ,p_event_class_code => l_array_class_code(hdr_idx)
6845 ,p_event_type_code => l_array_event_type(hdr_idx)
6846 ,p_event_number => l_array_event_number(hdr_idx)
6847 ,p_event_date => l_array_event_date(hdr_idx)
6848 ,p_transaction_date => l_array_transaction_date(hdr_idx)
6849 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
6850 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
6851 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
6852 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
6853 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
6854 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
6855 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
6856 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
6857 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
6858 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
6859 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
6860 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
6861 ,p_event_created_by => l_array_event_created_by(hdr_idx)
6862 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
6863
6864 --
6865 -- set the status of entry to C_VALID (0)
6866 --
6867 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
6868
6869 --
6870 -- initialize a row for ae header
6871 --
6872 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
6873
6874 l_event_id := l_array_event_id(hdr_idx);
6875
6876 --
6877 -- storing the hdr_idx for event. May be used by line cursor.
6878 --
6879 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
6880
6881 --
6882 -- store sources from header extract. This can be improved to
6883 -- store only those sources from header extract that may be used in lines
6884 --
6885
6886 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
6887 g_array_event(l_event_id).array_value_char('source_1_meaning') := l_array_source_1_meaning(hdr_idx);
6888 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
6889 g_array_event(l_event_id).array_value_char('source_3') := l_array_source_3(hdr_idx);
6890 g_array_event(l_event_id).array_value_date('source_18') := l_array_source_18(hdr_idx);
6891
6892 --
6893 -- initilaize the status of ae headers for diffrent balance types
6894 -- the status is initialised to C_NOT_CREATED (2)
6895 --
6896 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
6897 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
6898 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
6899
6900 --
6901 -- call api to validate and store accounting attributes for header
6902 --
6903
6904 ------------------------------------------------------------
6905 -- Accrual Reversal : to get date for Standard Source (NONE)
6906 ------------------------------------------------------------
6907 l_acc_rev_gl_date_source := NULL;
6908
6909 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
6910 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_18');
6911
6912
6913 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
6914
6915 XLA_AE_HEADER_PKG.SetJeCategoryName;
6916
6917 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
6918 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
6919 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
6920 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
6921 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
6922
6923
6924 --
6925 xla_ae_header_pkg.SetHdrDescription(
6926 p_description => Description_1 (
6927 p_application_id => p_application_id
6928 , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
6929 , p_source_1_meaning => g_array_event(l_event_id).array_value_char('source_1_meaning')
6930 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
6931 , p_source_3 => g_array_event(l_event_id).array_value_char('source_3')
6932 )
6933 );
6934 --
6935
6936 -- No header level analytical criteria
6937
6938 --
6939 --accounting attribute enhancement, bug 3612931
6940 --
6941 l_trx_reversal_source := SUBSTR(NULL, 1,30);
6942
6943 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
6947 (p_appli_s_name => 'XLA'
6944 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
6945
6946 xla_accounting_err_pkg.build_message
6948 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
6949 ,p_token_1 => 'ACCT_ATTR_NAME'
6950 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
6951 ,p_token_2 => 'PRODUCT_NAME'
6952 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
6953 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
6954 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
6955 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
6956
6957 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
6958 --
6959 -- following sets the accounting attributes needed to reverse
6960 -- accounting for a distributeion
6961 --
6962 xla_ae_lines_pkg.SetTrxReversalAttrs
6963 (p_event_id => l_event_id
6964 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
6965 ,p_trx_reversal_source => l_trx_reversal_source);
6966
6967 END IF;
6968
6969
6970 ----------------------------------------------------------------
6971 -- 4262811 - update the header statuses to invalid in need be
6972 ----------------------------------------------------------------
6973 --
6974 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
6975
6976
6977 -----------------------------------------------
6978 -- No accrual reversal for the event class/type
6979 -----------------------------------------------
6980 ----------------------------------------------------------------
6981
6982 --
6983 -- this ends the header loop iteration for one bulk fetch
6984 --
6985 END LOOP;
6986
6987 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
6988 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
6989
6990 --
6991 -- insert dummy rows into lines gt table that were created due to
6992 -- transaction reversals
6993 --
6994 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
6995 l_result := XLA_AE_LINES_PKG.InsertLines;
6996 END IF;
6997
6998 --
6999 -- reset the temp_line_num for each set of events fetched from header
7000 -- cursor rather than doing it for each new event in line cursor
7001 -- Bug 3939231
7002 --
7003 xla_ae_lines_pkg.g_temp_line_num := 0;
7004
7005
7006
7007 --
7008 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
7009 --
7010 --
7011 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7012
7013 trace
7014 (p_msg => 'SQL - FETCH line_cur'
7015 ,p_level => C_LEVEL_STATEMENT
7016 ,p_module => l_log_module);
7017
7018 END IF;
7019 --
7020 --
7021 LOOP
7022 --
7023 FETCH line_cur BULK COLLECT INTO
7024 l_array_entity_id
7025 , l_array_legal_entity_id
7026 , l_array_entity_code
7027 , l_array_transaction_num
7028 , l_array_event_id
7029 , l_array_class_code
7030 , l_array_event_type
7031 , l_array_event_number
7032 , l_array_event_date
7033 , l_array_transaction_date
7034 , l_array_reference_num_1
7035 , l_array_reference_num_2
7036 , l_array_reference_num_3
7037 , l_array_reference_num_4
7038 , l_array_reference_char_1
7039 , l_array_reference_char_2
7040 , l_array_reference_char_3
7041 , l_array_reference_char_4
7042 , l_array_reference_date_1
7043 , l_array_reference_date_2
7044 , l_array_reference_date_3
7045 , l_array_reference_date_4
7046 , l_array_event_created_by
7047 , l_array_budgetary_control_flag
7048 , l_array_extract_line_num
7049 LIMIT l_rows;
7050
7051 --
7052 IF (C_LEVEL_EVENT >= g_log_level) THEN
7053 trace
7054 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
7055 ,p_level => C_LEVEL_EVENT
7056 ,p_module => l_log_module);
7057 END IF;
7058 --
7059 EXIT WHEN l_array_entity_id.count = 0;
7060
7061 XLA_AE_LINES_PKG.g_rec_lines := null;
7062
7063 --
7064 -- Bug 4458708
7065 --
7066 XLA_AE_LINES_PKG.g_LineNumber := 0;
7067 --
7068 --
7069
7070 FOR Idx IN 1..l_array_event_id.count LOOP
7071 --
7072 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
7073 --
7074 l_event_id := l_array_event_id(idx); -- 5648433
7075
7076 --
7077 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
7078 --
7079
7080 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
7081 (g_array_event(l_event_id).array_value_num('header_index'))
7082 ,'N'
7083 ) <> 'Y'
7084 THEN
7085 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7086 trace
7087 (p_msg => 'Trancaction revesal option is not Y '
7088 ,p_level => C_LEVEL_STATEMENT
7092 --
7089 ,p_module => l_log_module);
7090 END IF;
7091
7093 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
7094 --
7095 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
7096 --
7097 -- set event info as cache for other routines to refer event attributes
7098 --
7099
7100 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
7101 l_previous_event_id := l_event_id;
7102
7103 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
7104 (p_application_id => p_application_id
7105 ,p_primary_ledger_id => p_primary_ledger_id
7106 ,p_base_ledger_id => p_base_ledger_id
7107 ,p_target_ledger_id => p_target_ledger_id
7108 ,p_entity_id => l_array_entity_id(Idx)
7109 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
7110 ,p_entity_code => l_array_entity_code(Idx)
7111 ,p_transaction_num => l_array_transaction_num(Idx)
7112 ,p_event_id => l_array_event_id(Idx)
7113 ,p_event_class_code => l_array_class_code(Idx)
7114 ,p_event_type_code => l_array_event_type(Idx)
7115 ,p_event_number => l_array_event_number(Idx)
7116 ,p_event_date => l_array_event_date(Idx)
7117 ,p_transaction_date => l_array_transaction_date(Idx)
7118 ,p_reference_num_1 => l_array_reference_num_1(Idx)
7119 ,p_reference_num_2 => l_array_reference_num_2(Idx)
7120 ,p_reference_num_3 => l_array_reference_num_3(Idx)
7121 ,p_reference_num_4 => l_array_reference_num_4(Idx)
7122 ,p_reference_char_1 => l_array_reference_char_1(Idx)
7123 ,p_reference_char_2 => l_array_reference_char_2(Idx)
7124 ,p_reference_char_3 => l_array_reference_char_3(Idx)
7125 ,p_reference_char_4 => l_array_reference_char_4(Idx)
7126 ,p_reference_date_1 => l_array_reference_date_1(Idx)
7127 ,p_reference_date_2 => l_array_reference_date_2(Idx)
7128 ,p_reference_date_3 => l_array_reference_date_3(Idx)
7129 ,p_reference_date_4 => l_array_reference_date_4(Idx)
7130 ,p_event_created_by => l_array_event_created_by(Idx)
7131 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
7132 --
7133 END IF;
7134
7135
7136
7137 --
7138 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
7139
7140 l_acct_reversal_source := SUBSTR(NULL, 1,30);
7141
7142 IF l_continue_with_lines THEN
7143 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
7144 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
7145
7146 xla_accounting_err_pkg.build_message
7147 (p_appli_s_name => 'XLA'
7148 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
7149 ,p_token_1 => 'LINE_NUMBER'
7150 ,p_value_1 => l_array_extract_line_num(Idx)
7151 ,p_token_2 => 'PRODUCT_NAME'
7152 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
7153 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
7154 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
7155 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
7156
7157 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
7158 --
7159 -- following sets the accounting attributes needed to reverse
7160 -- accounting for a distributeion
7161 --
7162
7163 --
7164 -- 5217187
7165 --
7166 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
7167 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
7168 g_array_event(l_event_id).array_value_num('header_index'));
7169 --
7170 --
7171
7172 -- No reversal code generated
7173
7174 xla_ae_lines_pkg.SetAcctReversalAttrs
7175 (p_event_id => l_event_id
7176 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
7177 ,p_calculate_acctd_flag => l_calculate_acctd_flag
7178 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
7179 END IF;
7180
7181 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
7182 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
7183 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
7184 -- or secondary ledger that has different currency with primary
7185 -- or alc that is calculated by sla
7186 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
7187 (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'))
7188
7189 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
7190 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
7191 AND (l_actual_flag = 'A')) THEN
7192 XLA_AE_LINES_PKG.CreateGainOrLossLines(
7193 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
7194 ,p_application_id => p_application_id
7198 ,p_event_type_code => C_EVENT_TYPE_CODE
7195 ,p_amb_context_code => 'DEFAULT'
7196 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
7197 ,p_event_class_code => C_EVENT_CLASS_CODE
7199
7200 ,p_gain_ccid => -1
7201 ,p_loss_ccid => -1
7202
7203 ,p_actual_flag => l_actual_flag
7204 ,p_enc_flag => null
7205 ,p_actual_g_l_ref => l_actual_gain_loss_ref
7206 ,p_enc_g_l_ref => null
7207 );
7208 END IF;
7209 END IF;
7210 END IF;
7211
7212 ELSE
7213 --
7214 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
7215 --
7216 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7217 trace
7218 (p_msg => 'Trancaction revesal option is Y'
7219 ,p_level => C_LEVEL_STATEMENT
7220 ,p_module => l_log_module);
7221 END IF;
7222 END IF;
7223
7224 END LOOP;
7225 l_result := XLA_AE_LINES_PKG.InsertLines ;
7226 end loop;
7227 close line_cur;
7228
7229
7230 --
7231 -- insert headers into xla_ae_headers_gt table
7232 --
7233 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
7234
7235 -- insert into errors table here.
7236
7237 END LOOP;
7238
7239 --
7240 -- 4865292
7241 --
7242 -- Compare g_hdr_extract_count with event count in
7243 -- CreateHeadersAndLines.
7244 --
7245 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
7246
7247 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7248 trace (p_msg => '# rows extracted from header extract objects '
7249 || ' (running total): '
7250 || g_hdr_extract_count
7251 ,p_level => C_LEVEL_STATEMENT
7252 ,p_module => l_log_module);
7253 END IF;
7254
7255 CLOSE header_cur;
7256 --
7257
7258 --
7259 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7260 trace
7261 (p_msg => 'END of EventType_11'
7262 ,p_level => C_LEVEL_PROCEDURE
7263 ,p_module => l_log_module);
7264 END IF;
7265 --
7266 RETURN l_result;
7267 EXCEPTION
7268 WHEN xla_exceptions_pkg.application_exception THEN
7269
7270 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
7271
7272
7273 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
7274
7275 RAISE;
7276 WHEN OTHERS THEN
7277 xla_exceptions_pkg.raise_message
7278 (p_location => 'XLA_00206_AAD_S_000004_PKG.EventType_11');
7279 END EventType_11;
7280 --
7281
7282 --
7283 --+============================================+
7284 --| |
7285 --| PRIVATE FUNCTION |
7286 --| |
7287 --+============================================+
7288 --
7289 FUNCTION CreateHeadersAndLines
7290 (p_application_id IN NUMBER
7291 ,p_base_ledger_id IN NUMBER
7292 ,p_target_ledger_id IN NUMBER
7293 ,p_pad_start_date IN DATE
7294 ,p_pad_end_date IN DATE
7295 ,p_primary_ledger_id IN NUMBER)
7296 RETURN BOOLEAN IS
7297 l_created BOOLEAN:=FALSE;
7298 l_event_id NUMBER;
7299 l_event_date DATE;
7300 l_language VARCHAR2(30);
7301 l_currency_code VARCHAR2(30);
7302 l_sla_ledger_id NUMBER;
7303 l_log_module VARCHAR2(240);
7304
7305 BEGIN
7306 --
7307 IF g_log_enabled THEN
7308 l_log_module := C_DEFAULT_MODULE||'.CreateHeadersAndLines';
7309 END IF;
7310 --
7311 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7312 trace
7313 (p_msg => 'BEGIN of CreateHeadersAndLines'
7314 ,p_level => C_LEVEL_PROCEDURE
7315 ,p_module => l_log_module);
7316 END IF;
7317
7318 l_language := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
7319 l_currency_code := xla_ae_journal_entry_pkg.g_cache_ledgers_info.currency_code;
7320 l_sla_ledger_id := xla_ae_journal_entry_pkg.g_cache_ledgers_info.sla_ledger_id;
7321
7322 --
7323 -- initialize array of lines with NULL
7324 --
7325 xla_ae_lines_pkg.SetNullLine;
7326
7327 --
7328 -- initialize header extract count -- Bug 4865292
7329 --
7330 g_hdr_extract_count:= 0;
7331
7332
7333 l_created := EventType_8(
7334 p_application_id => p_application_id
7335 , p_base_ledger_id => p_base_ledger_id
7336 , p_target_ledger_id => p_target_ledger_id
7337 , p_language => l_language
7338 , p_currency_code => l_currency_code
7339 , p_sla_ledger_id => l_sla_ledger_id
7340 , p_pad_start_date => p_pad_start_date
7341 , p_pad_end_date => p_pad_end_date
7342 , p_primary_ledger_id => p_primary_ledger_id
7343 );
7344
7345
7346
7347 IF ( g_diagnostics_mode ='Y' ) THEN
7348
7349 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7350 trace
7351 (p_msg => 'CALL Transaction Objects Diagnostics'
7352 ,p_level => C_LEVEL_STATEMENT
7356
7353 ,p_module => l_log_module);
7354
7355 END IF;
7357 insert_sources_8(
7358 p_target_ledger_id => p_target_ledger_id
7359 , p_language => l_language
7360 , p_sla_ledger_id => l_sla_ledger_id
7361 , p_pad_start_date => p_pad_start_date
7362 , p_pad_end_date => p_pad_end_date
7363 );
7364
7365 END IF;
7366
7367 l_created := EventType_9(
7368 p_application_id => p_application_id
7369 , p_base_ledger_id => p_base_ledger_id
7370 , p_target_ledger_id => p_target_ledger_id
7371 , p_language => l_language
7372 , p_currency_code => l_currency_code
7373 , p_sla_ledger_id => l_sla_ledger_id
7374 , p_pad_start_date => p_pad_start_date
7375 , p_pad_end_date => p_pad_end_date
7376 , p_primary_ledger_id => p_primary_ledger_id
7377 );
7378
7379
7380
7381 IF ( g_diagnostics_mode ='Y' ) THEN
7382
7383 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7384 trace
7385 (p_msg => 'CALL Transaction Objects Diagnostics'
7386 ,p_level => C_LEVEL_STATEMENT
7387 ,p_module => l_log_module);
7388
7389 END IF;
7390
7391 insert_sources_9(
7392 p_target_ledger_id => p_target_ledger_id
7393 , p_language => l_language
7394 , p_sla_ledger_id => l_sla_ledger_id
7395 , p_pad_start_date => p_pad_start_date
7396 , p_pad_end_date => p_pad_end_date
7397 );
7398
7399 END IF;
7400
7401 l_created := EventClass_10(
7402 p_application_id => p_application_id
7403 , p_base_ledger_id => p_base_ledger_id
7404 , p_target_ledger_id => p_target_ledger_id
7405 , p_language => l_language
7406 , p_currency_code => l_currency_code
7407 , p_sla_ledger_id => l_sla_ledger_id
7408 , p_pad_start_date => p_pad_start_date
7409 , p_pad_end_date => p_pad_end_date
7410 , p_primary_ledger_id => p_primary_ledger_id
7411 );
7412
7413
7414
7415 IF ( g_diagnostics_mode ='Y' ) THEN
7416
7417 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7418 trace
7419 (p_msg => 'CALL Transaction Objects Diagnostics'
7420 ,p_level => C_LEVEL_STATEMENT
7421 ,p_module => l_log_module);
7422
7423 END IF;
7424
7425 insert_sources_10(
7426 p_target_ledger_id => p_target_ledger_id
7427 , p_language => l_language
7428 , p_sla_ledger_id => l_sla_ledger_id
7429 , p_pad_start_date => p_pad_start_date
7430 , p_pad_end_date => p_pad_end_date
7431 );
7432
7433 END IF;
7434
7435 l_created := EventType_11(
7436 p_application_id => p_application_id
7437 , p_base_ledger_id => p_base_ledger_id
7438 , p_target_ledger_id => p_target_ledger_id
7439 , p_language => l_language
7440 , p_currency_code => l_currency_code
7441 , p_sla_ledger_id => l_sla_ledger_id
7442 , p_pad_start_date => p_pad_start_date
7443 , p_pad_end_date => p_pad_end_date
7444 , p_primary_ledger_id => p_primary_ledger_id
7445 );
7446
7447
7448
7449 IF ( g_diagnostics_mode ='Y' ) THEN
7450
7451 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7452 trace
7453 (p_msg => 'CALL Transaction Objects Diagnostics'
7454 ,p_level => C_LEVEL_STATEMENT
7455 ,p_module => l_log_module);
7456
7457 END IF;
7458
7459 insert_sources_11(
7460 p_target_ledger_id => p_target_ledger_id
7461 , p_language => l_language
7462 , p_sla_ledger_id => l_sla_ledger_id
7463 , p_pad_start_date => p_pad_start_date
7464 , p_pad_end_date => p_pad_end_date
7465 );
7466
7467 END IF;
7468
7469
7470 --
7471 -- Bug 4865292
7472 -- When the number of events and that of header extract do not match,
7473 -- set the no header extract flag to indicate there are some issues
7474 -- in header extract.
7475 --
7476 -- Event count context is set in xla_accounting_pkg.unit_processor.
7477 -- Build_Message for this error is called in xla_accounting_pkg.post_accounting
7478 -- to report it as a general error.
7479 --
7480 IF xla_context_pkg.get_event_count_context <> g_hdr_extract_count
7481 AND xla_context_pkg.get_event_nohdr_context <> 'Y' THEN
7482
7483 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7484 trace
7485 (p_msg => '# of extracted headers and events does not match'
7486 ,p_level => C_LEVEL_STATEMENT
7487 ,p_module => l_log_module);
7488
7489 trace
7493 ,p_module => l_log_module);
7490 (p_msg => '# of extracted headers: '
7491 ||g_hdr_extract_count
7492 ,p_level => C_LEVEL_STATEMENT
7494
7495 trace
7496 (p_msg => '# of events in xla_events_gt: '
7497 ||xla_context_pkg.get_event_count_context
7498 ,p_level => C_LEVEL_STATEMENT
7499 ,p_module => l_log_module);
7500
7501 trace
7502 (p_msg => 'Event No Header Extract Context: '
7503 ||xla_context_pkg.get_event_nohdr_context
7504 ,p_level => C_LEVEL_STATEMENT
7505 ,p_module => l_log_module);
7506
7507 END IF;
7508
7509
7510 xla_context_pkg.set_event_nohdr_context
7511 (p_nohdr_extract_flag => 'Y'
7512 ,p_client_id => sys_context('USERENV','CLIENT_IDENTIFIER'));
7513
7514 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7515 trace
7516 (p_msg => 'No Header Extract Flag is set to Y'
7517 ,p_level => C_LEVEL_STATEMENT
7518 ,p_module => l_log_module);
7519 END IF;
7520
7521 END IF;
7522
7523 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7524 trace
7525 (p_msg => 'END of CreateHeadersAndLines'
7526 ,p_level => C_LEVEL_PROCEDURE
7527 ,p_module => l_log_module);
7528 END IF;
7529
7530 RETURN l_created;
7531 EXCEPTION
7532 WHEN xla_exceptions_pkg.application_exception THEN
7533 RAISE;
7534 WHEN OTHERS THEN
7535 xla_exceptions_pkg.raise_message
7536 (p_location => 'XLA_00206_AAD_S_000004_PKG.CreateHeadersAndLines');
7537 END CreateHeadersAndLines;
7538 --
7539 --
7540
7541 --
7542 --+============================================+
7543 --| |
7544 --| PUBLIC FUNCTION |
7545 --| |
7546 --+============================================+
7547 --
7548 FUNCTION CreateJournalEntries
7549 (p_application_id IN NUMBER
7550 ,p_base_ledger_id IN NUMBER
7551 ,p_pad_start_date IN DATE
7552 ,p_pad_end_date IN DATE
7553 ,p_primary_ledger_id IN NUMBER)
7554 RETURN NUMBER IS
7555 l_log_module VARCHAR2(240);
7556 l_array_ledgers xla_accounting_cache_pkg.t_array_ledger_id;
7557 l_temp_result BOOLEAN;
7558 l_result NUMBER;
7559 BEGIN
7560 --
7561 IF g_log_enabled THEN
7562 l_log_module := C_DEFAULT_MODULE||'.CreateJournalEntries';
7563 END IF;
7564 --
7565 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7566 trace
7567 (p_msg => 'BEGIN of CreateJournalEntries'||
7568 ' - p_base_ledger_id = '||TO_CHAR(p_base_ledger_id)
7569 ,p_level => C_LEVEL_PROCEDURE
7570 ,p_module => l_log_module);
7571
7572 END IF;
7573
7574 --
7575 g_diagnostics_mode:= xla_accounting_engine_pkg.g_diagnostics_mode;
7576
7577 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7578 trace
7579 (p_msg => 'g_diagnostics_mode = '||g_diagnostics_mode
7580 ,p_level => C_LEVEL_STATEMENT
7581 ,p_module => l_log_module);
7582 END IF;
7583 --
7584 xla_ae_journal_entry_pkg.SetProductAcctDefinition
7585 (p_product_rule_code => 'LNS_US_FEDERAL'
7586 ,p_product_rule_type_code => 'S'
7587 ,p_product_rule_version => ''
7588 ,p_product_rule_name => 'Loans US Federal'
7589 ,p_amb_context_code => 'DEFAULT'
7590 );
7591
7592 l_array_ledgers :=
7593 xla_ae_journal_entry_pkg.GetAlternateCurrencyLedger
7594 (p_base_ledger_id => p_base_ledger_id);
7595
7596 FOR Idx IN 1 .. l_array_ledgers.COUNT LOOP
7597 l_temp_result :=
7598 XLA_AE_JOURNAL_ENTRY_PKG.GetLedgersInfo
7599 (p_application_id => p_application_id
7600 ,p_base_ledger_id => p_base_ledger_id
7601 ,p_target_ledger_id => l_array_ledgers(Idx)
7602 ,p_primary_ledger_id => p_primary_ledger_id
7603 ,p_pad_start_date => p_pad_start_date
7604 ,p_pad_end_date => p_pad_end_date);
7605
7606 l_temp_result :=
7607 l_temp_result AND
7608 CreateHeadersAndLines
7609 (p_application_id => p_application_id
7610 ,p_base_ledger_id => p_base_ledger_id
7611 ,p_target_ledger_id => l_array_ledgers(Idx)
7612 ,p_pad_start_date => p_pad_start_date
7613 ,p_pad_end_date => p_pad_end_date
7614 ,p_primary_ledger_id => p_primary_ledger_id
7615 );
7616 END LOOP;
7617
7618
7619 IF (g_diagnostics_mode = 'Y' AND
7620 C_LEVEL_UNEXPECTED >= g_log_level AND
7621 xla_environment_pkg.g_Req_Id IS NOT NULL ) THEN
7622
7623 xla_accounting_dump_pkg.acctg_event_extract_log(
7624 p_application_id => p_application_id
7625 ,p_request_id => xla_environment_pkg.g_Req_Id
7626 );
7627
7628 END IF;
7629
7630 CASE l_temp_result
7631 WHEN TRUE THEN l_result := 0;
7632 ELSE l_result := 2;
7633 END CASE;
7634
7635 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7636 trace
7637 (p_msg => 'return value. = '||TO_CHAR(l_result)
7638 ,p_level => C_LEVEL_PROCEDURE
7639 ,p_module => l_log_module);
7640 trace
7641 (p_msg => 'END of CreateJournalEntries '
7642 ,p_level => C_LEVEL_PROCEDURE
7643 ,p_module => l_log_module);
7644 END IF;
7645
7646 RETURN l_result;
7647 EXCEPTION
7648 WHEN xla_exceptions_pkg.application_exception THEN
7649 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7650 trace
7651 (p_msg => 'ERROR. = '||sqlerrm
7652 ,p_level => C_LEVEL_PROCEDURE
7653 ,p_module => l_log_module);
7654 END IF;
7655 RAISE;
7656 WHEN OTHERS THEN
7657 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7658 trace
7659 (p_msg => 'ERROR. = '||sqlerrm
7660 ,p_level => C_LEVEL_PROCEDURE
7661 ,p_module => l_log_module);
7662 END IF;
7663 xla_exceptions_pkg.raise_message
7664 (p_location => 'XLA_00206_AAD_S_000004_PKG.CreateJournalEntries');
7665 END CreateJournalEntries;
7666 --
7667 --=============================================================================
7668 --
7669 --
7670 --
7671 --
7672 --
7673 --
7674 --
7675 --
7676 --
7677 --
7678 --
7679 --
7680 --
7681 --
7682 --
7683 --
7684 --
7685 --
7686 --
7687 --
7688 --
7689 --
7690 --=============================================================================
7691 --=============================================================================
7692 -- *********** Initialization routine **********
7693 --=============================================================================
7694
7695 BEGIN
7696 g_log_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
7697 g_log_enabled := fnd_log.test
7698 (log_level => g_log_level
7699 ,module => C_DEFAULT_MODULE);
7700
7701 IF NOT g_log_enabled THEN
7702 g_log_level := C_LEVEL_LOG_DISABLED;
7703 END IF;
7704 --
7705 END XLA_00206_AAD_S_000004_PKG;
7706 --