[Home] [Help]
PACKAGE BODY: APPS.XLA_00275_AAD_S_000004_BC_PKG
Source
1 PACKAGE BODY XLA_00275_AAD_S_000004_BC_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_00275_AAD_S_000004_BC_PKG |
10 | |
11 | DESCRIPTION |
12 | Package generated From Product Accounting Definition |
13 | Name : Projects Standard Accounting |
14 | Code : PA_STANDARD_ACCOUNTING |
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_00275_AAD_S_000004_BC_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_00275_AAD_S_000004_BC_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_00275_AAD_S_000004_BC_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_00275_AAD_S_000004_BC_PKG.GetMeaning');
228 END GetMeaning;
229 --
230
231 ---------------------------------------
232 --
233 -- PRIVATE FUNCTION
234 -- AcctDerRule_1
235 --
236 ---------------------------------------
237 FUNCTION AcctDerRule_1 (
238 p_application_id IN NUMBER
239 , p_ae_header_id IN NUMBER
240 , p_side IN VARCHAR2
241 --Budget Code Combination ID
242 , p_source_1 IN NUMBER
243 , x_transaction_coa_id OUT NOCOPY NUMBER
244 , x_accounting_coa_id OUT NOCOPY NUMBER
245 , x_value_type_code OUT NOCOPY VARCHAR2
246 )
247 RETURN NUMBER
248 IS
249 l_component_type VARCHAR2(80) ;
250 l_component_code VARCHAR2(30) ;
251 l_component_type_code VARCHAR2(1) ;
252 l_component_appl_id INTEGER ;
253 l_amb_context_code VARCHAR2(30) ;
254 l_log_module VARCHAR2(240) ;
255 l_output_value NUMBER ;
256 BEGIN
257 IF g_log_enabled THEN
258 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_1';
259 END IF;
260 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
261 trace
262 (p_msg => 'BEGIN of AcctDerRule_1'
263 ,p_level => C_LEVEL_PROCEDURE
264 ,p_module => l_log_module);
265 END IF;
266 --
267 l_component_type := 'AMB_ADR';
268 l_component_code := 'PA_BUDGET_ACCT_RULE';
269 l_component_type_code := 'S';
270 l_component_appl_id := 275;
271 l_amb_context_code := 'DEFAULT';
272 x_transaction_coa_id := null;
273 x_accounting_coa_id := null;
274 --
275
276 --
277 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
278 trace
279 (p_msg => 'END of AcctDerRule_1'
280 ,p_level => C_LEVEL_PROCEDURE
281 ,p_module => l_log_module);
282 END IF;
283 x_value_type_code := 'S';
284 l_output_value := TO_NUMBER(p_source_1);
285 RETURN l_output_value;
286
287 --
288 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
289 trace
290 (p_msg => 'END of AcctDerRule_1(invalid)'
291 ,p_level => C_LEVEL_PROCEDURE
292 ,p_module => l_log_module);
293 END IF;
294 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
295 x_value_type_code := null;
296 l_output_value := null;
297 xla_accounting_err_pkg.build_message
298 (p_appli_s_name => 'XLA'
299 ,p_msg_name => 'XLA_AP_INVALID_ADR'
300 ,p_token_1 => 'COMPONENT_NAME'
301 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
302 l_component_type
303 , l_component_code
304 , l_component_type_code
305 , l_component_appl_id
306 , l_amb_context_code
307 )
308 ,p_token_2 => 'OWNER'
309 ,p_value_2 => xla_lookups_pkg.get_meaning(
310 'XLA_OWNER_TYPE'
311 ,l_component_type_code
312 )
313 ,p_token_3 => 'PAD_NAME'
314 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
315 ,p_token_4 => 'PAD_OWNER'
316 ,p_value_4 => xla_lookups_pkg.get_meaning(
317 'XLA_OWNER_TYPE'
318 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
319 )
320 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
321 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
322 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
323 ,p_ae_header_id => NULL
324 );
325 RETURN l_output_value;
326 EXCEPTION
327 WHEN xla_exceptions_pkg.application_exception THEN
328 RAISE;
329 WHEN OTHERS THEN
330 xla_exceptions_pkg.raise_message
331 (p_location => 'XLA_00275_AAD_S_000004_BC_PKG.AcctDerRule_1');
332 END AcctDerRule_1;
333 --
334
335 ---------------------------------------
336 --
337 -- PRIVATE FUNCTION
338 -- AcctLineType_2
339 --
340 ---------------------------------------
341 PROCEDURE AcctLineType_2 (
342 p_application_id IN NUMBER
343 ,p_event_id IN NUMBER
344 ,p_calculate_acctd_flag IN VARCHAR2
348 ,p_gain_or_loss_ref OUT VARCHAR2
345 ,p_calculate_g_l_flag IN VARCHAR2
346 ,p_actual_flag IN OUT VARCHAR2
347 ,p_balance_type_code OUT VARCHAR2
349
350 --Budget Code Combination ID
351 , p_source_1 IN NUMBER
352 --Budget Amount Code
353 , p_source_2 IN VARCHAR2
354 --Project Budgetary Control Balance Type
355 , p_source_3 IN VARCHAR2
356 --Reversing Line Flag
357 , p_source_4 IN VARCHAR2
358 --Budget Line ID
359 , p_source_5 IN NUMBER
360 --Line Type
361 , p_source_6 IN VARCHAR2
362 , p_source_6_meaning IN VARCHAR2
363 --Encumbrance Upgrade Credit Accounting Class
364 , p_source_7 IN VARCHAR2
365 --Entered Amount
366 , p_source_8 IN NUMBER
367 --Entered Currency Code
368 , p_source_9 IN VARCHAR2
369 --Accounted Amount
370 , p_source_10 IN NUMBER
371 --Use Encumbrance Upgrade Attributes Flag
372 , p_source_11 IN VARCHAR2
373 --Exchange Rate Date
374 , p_source_12 IN DATE
375 --Exchange Rate
376 , p_source_13 IN NUMBER
377 --Exchange Rate Type
378 , p_source_14 IN VARCHAR2
379 --Upgrade Project Encumbrance Type ID
380 , p_source_15 IN NUMBER
381 )
382 IS
383
384 l_component_type VARCHAR2(80);
385 l_component_code VARCHAR2(30);
386 l_component_type_code VARCHAR2(1);
387 l_component_appl_id INTEGER;
388 l_amb_context_code VARCHAR2(30);
389 l_entity_code VARCHAR2(30);
390 l_event_class_code VARCHAR2(30);
391 l_ae_header_id NUMBER;
392 l_event_type_code VARCHAR2(30);
393 l_line_definition_code VARCHAR2(30);
394 l_line_definition_owner_code VARCHAR2(1);
395 --
396 -- adr variables
397 l_segment VARCHAR2(30);
398 l_ccid NUMBER;
399 l_adr_transaction_coa_id NUMBER;
400 l_adr_accounting_coa_id NUMBER;
401 l_adr_flexfield_segment_code VARCHAR2(30);
402 l_adr_flex_value_set_id NUMBER;
403 l_adr_value_type_code VARCHAR2(30);
404 l_adr_value_combination_id NUMBER;
405 l_adr_value_segment_code VARCHAR2(30);
406
407 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
408 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
409 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
410 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
411
412 -- 4262811 Variables ------------------------------------------------------------------------------------------
413 l_entered_amt_idx NUMBER;
414 l_accted_amt_idx NUMBER;
415 l_acc_rev_flag VARCHAR2(1);
416 l_accrual_line_num NUMBER;
417 l_tmp_amt NUMBER;
418 l_acc_rev_natural_side_code VARCHAR2(1);
419
420 l_num_entries NUMBER;
421 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
422 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
423 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
424 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
425 l_recog_line_1 NUMBER;
426 l_recog_line_2 NUMBER;
427
428 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
429 l_bflow_applied_to_amt NUMBER; -- 5132302
430 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
431
432 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
433
434 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
435 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
436
437 ---------------------------------------------------------------------------------------------------------------
438
439
440 --
441 -- bulk performance
442 --
443 l_balance_type_code VARCHAR2(1);
444 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
445 l_log_module VARCHAR2(240);
446
447 --
448 -- Upgrade strategy
449 --
450 l_actual_upg_option VARCHAR2(1);
451 l_enc_upg_option VARCHAR2(1);
452
453 --
454 BEGIN
455 --
456 IF g_log_enabled THEN
457 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_2';
458 END IF;
459 --
460 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
461
462 trace
463 (p_msg => 'BEGIN of AcctLineType_2'
464 ,p_level => C_LEVEL_PROCEDURE
465 ,p_module => l_log_module);
466
467 END IF;
468 --
469 l_component_type := 'AMB_JLT';
470 l_component_code := 'PA_COST_BUDGET_JOURNAL';
471 l_component_type_code := 'S';
472 l_component_appl_id := 275;
473 l_amb_context_code := 'DEFAULT';
474 l_entity_code := 'BUDGETS';
475 l_event_class_code := 'BUDGET';
476 l_event_type_code := 'BUDGET_ALL';
477 l_line_definition_owner_code := 'S';
478 l_line_definition_code := 'PA_STANDARD_ACCOUNTING';
479 --
480 l_balance_type_code := 'B';
481 l_segment := NULL;
485 l_adr_flexfield_segment_code := NULL;
482 l_ccid := NULL;
483 l_adr_transaction_coa_id := NULL;
484 l_adr_accounting_coa_id := NULL;
486 l_adr_flex_value_set_id := NULL;
487 l_adr_value_type_code := NULL;
488 l_adr_value_combination_id := NULL;
489 l_adr_value_segment_code := NULL;
490
491 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
492 l_bflow_class_code := ''; -- 4219869 Business Flow
493 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
494 l_budgetary_control_flag := 'Y';
495
496 l_bflow_applied_to_amt_idx := NULL; -- 5132302
497 l_bflow_applied_to_amt := NULL; -- 5132302
498 l_entered_amt_idx := NULL; -- 4262811
499 l_accted_amt_idx := NULL; -- 4262811
500 l_acc_rev_flag := NULL; -- 4262811
501 l_accrual_line_num := NULL; -- 4262811
502 l_tmp_amt := NULL; -- 4262811
503 --
504
505 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
506 l_balance_type_code <> 'B' THEN
507 IF NVL(p_source_2,'
508 ') = 'C' AND
509 NVL(p_source_3,'
510 ') = 'B'
511 THEN
512
513 --
514 XLA_AE_LINES_PKG.SetNewLine;
515
516 p_balance_type_code := l_balance_type_code;
517 -- set the flag so later we will know whether the gain loss line needs to be created
518
519 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
520 p_actual_flag :='A';
521 END IF;
522
523 --
524 -- bulk performance
525 --
526 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
527 p_header_num => 0); -- 4262811
528 --
529 -- set accounting line options
530 --
531 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
532 p_natural_side_code => 'D'
533 , p_gain_or_loss_flag => 'N'
534 , p_gl_transfer_mode_code => 'S'
535 , p_acct_entry_type_code => 'B'
536 , p_switch_side_flag => 'Y'
537 , p_merge_duplicate_code => 'N'
538 );
539 --
540 l_acc_rev_natural_side_code := 'C'; -- 4262811
541 --
542 --
543 -- set accounting line type info
544 --
545 xla_ae_lines_pkg.SetAcctLineType
546 (p_component_type => l_component_type
547 ,p_event_type_code => l_event_type_code
548 ,p_line_definition_owner_code => l_line_definition_owner_code
549 ,p_line_definition_code => l_line_definition_code
550 ,p_accounting_line_code => l_component_code
551 ,p_accounting_line_type_code => l_component_type_code
552 ,p_accounting_line_appl_id => l_component_appl_id
553 ,p_amb_context_code => l_amb_context_code
554 ,p_entity_code => l_entity_code
555 ,p_event_class_code => l_event_class_code);
556 --
557 -- set accounting class
558 --
559 xla_ae_lines_pkg.SetAcctClass(
560 p_accounting_class_code => 'BUDGET'
561 , p_ae_header_id => l_ae_header_id
562 );
563
564 --
565 -- set rounding class
566 --
567 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
568 'BUDGET';
569
570 --
571 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
572 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
573 --
574 -- bulk performance
575 --
576 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
577
578 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
579 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
580
581 -- 4955764
582 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
583 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
584
585 -- 4458381 Public Sector Enh
586
587 --
588 -- set accounting attributes for the line type
589 --
590 l_entered_amt_idx := 10;
591 l_accted_amt_idx := 15;
592 l_bflow_applied_to_amt_idx := NULL; -- 5132302
593 l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
594 l_rec_acct_attrs.array_char_value(1) := p_source_4;
595 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
596 l_rec_acct_attrs.array_num_value(2) := to_char(p_source_5);
597 l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
598 l_rec_acct_attrs.array_char_value(3) := p_source_6;
599 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENC_UPG_DR_ACCT_CLASS';
600 l_rec_acct_attrs.array_char_value(4) := p_source_7;
601 l_rec_acct_attrs.array_acct_attr_code(5) := 'ENC_UPG_DR_CCID';
602 l_rec_acct_attrs.array_num_value(5) := p_source_1;
603 l_rec_acct_attrs.array_acct_attr_code(6) := 'ENC_UPG_DR_ENTERED_AMT';
607 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_DR_LEDGER_AMT';
604 l_rec_acct_attrs.array_num_value(6) := p_source_8;
605 l_rec_acct_attrs.array_acct_attr_code(7) := 'ENC_UPG_DR_ENTERED_CURR';
606 l_rec_acct_attrs.array_char_value(7) := p_source_9;
608 l_rec_acct_attrs.array_num_value(8) := p_source_10;
609 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_OPTION';
610 l_rec_acct_attrs.array_char_value(9) := p_source_11;
611 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
612 l_rec_acct_attrs.array_num_value(10) := p_source_8;
613 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
614 l_rec_acct_attrs.array_char_value(11) := p_source_9;
615 l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_DATE';
616 l_rec_acct_attrs.array_date_value(12) := p_source_12;
617 l_rec_acct_attrs.array_acct_attr_code(13) := 'EXCHANGE_RATE';
618 l_rec_acct_attrs.array_num_value(13) := p_source_13;
619 l_rec_acct_attrs.array_acct_attr_code(14) := 'EXCHANGE_RATE_TYPE';
620 l_rec_acct_attrs.array_char_value(14) := p_source_14;
621 l_rec_acct_attrs.array_acct_attr_code(15) := 'LEDGER_AMOUNT';
622 l_rec_acct_attrs.array_num_value(15) := p_source_10;
623 l_rec_acct_attrs.array_acct_attr_code(16) := 'REVERSED_DISTRIBUTION_ID1';
624 l_rec_acct_attrs.array_num_value(16) := to_char(p_source_5);
625 l_rec_acct_attrs.array_acct_attr_code(17) := 'REVERSED_DISTRIBUTION_TYPE';
626 l_rec_acct_attrs.array_char_value(17) := p_source_6;
627 l_rec_acct_attrs.array_acct_attr_code(18) := 'UPG_DR_ENC_TYPE_ID';
628 l_rec_acct_attrs.array_num_value(18) := p_source_15;
629
630 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
631 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
632
633 ---------------------------------------------------------------------------------------------------------------
634 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
635 ---------------------------------------------------------------------------------------------------------------
636 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
637
638 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
639 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
640
641 IF xla_accounting_cache_pkg.GetValueChar
642 (p_source_code => 'LEDGER_CATEGORY_CODE'
643 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
644 AND l_bflow_method_code = 'PRIOR_ENTRY'
645 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
646 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
647 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
648 )
649 THEN
650 xla_ae_lines_pkg.BflowUpgEntry
651 (p_business_method_code => l_bflow_method_code
652 ,p_business_class_code => l_bflow_class_code
653 ,p_balance_type => l_balance_type_code);
654 ELSE
655 NULL;
656 -- No business flow processing for business flow method of NONE.
657 END IF;
658
659 --
660 -- call analytical criteria
661 --
662
663 --
664 -- call description
665 --
666 -- No description or it is inherited.
667 --
668 -- call ADRs
669 -- Bug 4922099
670 --
671 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
672 (NVL(l_actual_upg_option, 'N') = 'O') OR
673 (NVL(l_enc_upg_option, 'N') = 'O')
674 )
675 THEN
676 NULL;
677 --
678 --
679
680 l_ccid := AcctDerRule_1(
681 p_application_id => p_application_id
682 , p_ae_header_id => l_ae_header_id
683 , p_source_1 => p_source_1
684 , x_transaction_coa_id => l_adr_transaction_coa_id
685 , x_accounting_coa_id => l_adr_accounting_coa_id
686 , x_value_type_code => l_adr_value_type_code
687 , p_side => 'NA'
688 );
689
690 xla_ae_lines_pkg.set_ccid(
691 p_code_combination_id => l_ccid
692 , p_value_type_code => l_adr_value_type_code
693 , p_transaction_coa_id => l_adr_transaction_coa_id
694 , p_accounting_coa_id => l_adr_accounting_coa_id
695 , p_adr_code => 'PA_BUDGET_ACCT_RULE'
696 , p_adr_type_code => 'S'
697 , p_component_type => l_component_type
698 , p_component_code => l_component_code
699 , p_component_type_code => l_component_type_code
700 , p_component_appl_id => l_component_appl_id
701 , p_amb_context_code => l_amb_context_code
702 , p_side => 'NA'
703 );
704
705
706 --
707 --
708 END IF;
709 --
710 -- Bug 4922099
711 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
712 (NVL(l_enc_upg_option, 'N') = 'O')
713 ) AND
714 (l_bflow_method_code = 'PRIOR_ENTRY')
715 )
716 THEN
717 IF
718 --
719 1 = 2
720 --
721 THEN
722 xla_accounting_err_pkg.build_message
726 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
723 (p_appli_s_name => 'XLA'
724 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
725 ,p_token_1 => 'LINE_NUMBER'
727 ,p_token_2 => 'LINE_TYPE_NAME'
728 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
729 l_component_type
730 ,l_component_code
731 ,l_component_type_code
732 ,l_component_appl_id
733 ,l_amb_context_code
734 ,l_entity_code
735 ,l_event_class_code
736 )
737 ,p_token_3 => 'OWNER'
738 ,p_value_3 => xla_lookups_pkg.get_meaning(
739 p_lookup_type => 'XLA_OWNER_TYPE'
740 ,p_lookup_code => l_component_type_code
741 )
742 ,p_token_4 => 'PRODUCT_NAME'
743 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
744 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
745 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
746 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
747 ,p_ae_header_id => NULL
748 );
749
750 IF (C_LEVEL_ERROR>= g_log_level) THEN
751 trace
752 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
753 ,p_level => C_LEVEL_ERROR
754 ,p_module => l_log_module);
755 END IF;
756 END IF;
757 END IF;
758 --
759 --
760 ------------------------------------------------------------------------------------------------
761 -- 4219869 Business Flow
762 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
763 -- Prior Entry. Currently, the following code is always generated.
764 ------------------------------------------------------------------------------------------------
765 XLA_AE_LINES_PKG.ValidateCurrentLine;
766
767 ------------------------------------------------------------------------------------
768 -- 4219869 Business Flow
769 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
770 ------------------------------------------------------------------------------------
771 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
772
773 ----------------------------------------------------------------------------------
774 -- 4219869 Business Flow
775 -- Update journal entry status -- Need to generate this within IF <condition>
776 ----------------------------------------------------------------------------------
777 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
778 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
779 ,p_balance_type_code => l_balance_type_code
780 );
781
782 -------------------------------------------------------------------------------------------
783 -- 4262811 - Generate the Accrual Reversal lines
784 -------------------------------------------------------------------------------------------
785 BEGIN
786 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
787 (g_array_event(p_event_id).array_value_num('header_index'));
788 IF l_acc_rev_flag IS NULL THEN
789 l_acc_rev_flag := 'N';
790 END IF;
791 EXCEPTION
792 WHEN OTHERS THEN
793 l_acc_rev_flag := 'N';
794 END;
795 --
796 IF (l_acc_rev_flag = 'Y') THEN
797
798 -- 4645092 ------------------------------------------------------------------------------
799 -- To allow MPA report to determine if it should generate report process
800 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
801 ------------------------------------------------------------------------------------------
802
803 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
804 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
805
806 --
807 -- Update the line information that should be overwritten
808 --
809 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
810 p_header_num => 1);
814
811 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
812
813 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
815 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
816 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
817 END IF;
818
819 --
820 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
821 --
822 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
823 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
824 ELSE
825 ---------------------------------------------------------------------------------------------------
826 -- 4262811a Switch Sign
827 ---------------------------------------------------------------------------------------------------
828 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
829 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
830 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
831 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
832 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
833 -- 5132302
834 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
835 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
836
837 END IF;
838
839 -- 4955764
840 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
841 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
842
843
844 XLA_AE_LINES_PKG.ValidateCurrentLine;
845 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
846
847 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
848 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
849 ,p_balance_type_code => l_balance_type_code);
850
851 END IF;
852
853 -----------------------------------------------------------------------------------------
854 -- 4262811 Multiperiod Accounting
855 -----------------------------------------------------------------------------------------
856 -- No MPA option is assigned.
857
858
859 END IF;
860 END IF;
861 --
862
863 --
864 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
865 trace
866 (p_msg => 'END of AcctLineType_2'
867 ,p_level => C_LEVEL_PROCEDURE
868 ,p_module => l_log_module);
869 END IF;
870 --
871 EXCEPTION
872 WHEN xla_exceptions_pkg.application_exception THEN
873 RAISE;
874 WHEN OTHERS THEN
875 xla_exceptions_pkg.raise_message
876 (p_location => 'XLA_00275_AAD_S_000004_BC_PKG.AcctLineType_2');
877 END AcctLineType_2;
878 --
879
880 ---------------------------------------
881 --
882 -- PRIVATE FUNCTION
883 -- AcctLineType_3
884 --
885 ---------------------------------------
886 PROCEDURE AcctLineType_3 (
887 p_application_id IN NUMBER
888 ,p_event_id IN NUMBER
889 ,p_calculate_acctd_flag IN VARCHAR2
890 ,p_calculate_g_l_flag IN VARCHAR2
891 ,p_actual_flag IN OUT VARCHAR2
892 ,p_balance_type_code OUT VARCHAR2
893 ,p_gain_or_loss_ref OUT VARCHAR2
894
895 --Budget Code Combination ID
896 , p_source_1 IN NUMBER
897 --Project Budgetary Control Balance Type
898 , p_source_3 IN VARCHAR2
899 --Reversing Line Flag
900 , p_source_4 IN VARCHAR2
901 --Budget Line ID
902 , p_source_5 IN NUMBER
903 --Line Type
904 , p_source_6 IN VARCHAR2
905 , p_source_6_meaning IN VARCHAR2
906 --Encumbrance Upgrade Credit Accounting Class
907 , p_source_7 IN VARCHAR2
908 --Entered Amount
909 , p_source_8 IN NUMBER
910 --Entered Currency Code
911 , p_source_9 IN VARCHAR2
912 --Accounted Amount
913 , p_source_10 IN NUMBER
914 --Use Encumbrance Upgrade Attributes Flag
915 , p_source_11 IN VARCHAR2
916 --Exchange Rate Date
917 , p_source_12 IN DATE
918 --Exchange Rate
919 , p_source_13 IN NUMBER
920 --Exchange Rate Type
921 , p_source_14 IN VARCHAR2
922 --Upgrade Project Encumbrance Type ID
923 , p_source_15 IN NUMBER
924 --External Budget Code
925 , p_source_16 IN VARCHAR2
926 )
927 IS
928
929 l_component_type VARCHAR2(80);
930 l_component_code VARCHAR2(30);
931 l_component_type_code VARCHAR2(1);
932 l_component_appl_id INTEGER;
933 l_amb_context_code VARCHAR2(30);
934 l_entity_code VARCHAR2(30);
935 l_event_class_code VARCHAR2(30);
936 l_ae_header_id NUMBER;
937 l_event_type_code VARCHAR2(30);
938 l_line_definition_code VARCHAR2(30);
939 l_line_definition_owner_code VARCHAR2(1);
943 l_ccid NUMBER;
940 --
941 -- adr variables
942 l_segment VARCHAR2(30);
944 l_adr_transaction_coa_id NUMBER;
945 l_adr_accounting_coa_id NUMBER;
946 l_adr_flexfield_segment_code VARCHAR2(30);
947 l_adr_flex_value_set_id NUMBER;
948 l_adr_value_type_code VARCHAR2(30);
949 l_adr_value_combination_id NUMBER;
950 l_adr_value_segment_code VARCHAR2(30);
951
952 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
953 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
954 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
955 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
956
957 -- 4262811 Variables ------------------------------------------------------------------------------------------
958 l_entered_amt_idx NUMBER;
959 l_accted_amt_idx NUMBER;
960 l_acc_rev_flag VARCHAR2(1);
961 l_accrual_line_num NUMBER;
962 l_tmp_amt NUMBER;
963 l_acc_rev_natural_side_code VARCHAR2(1);
964
965 l_num_entries NUMBER;
966 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
967 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
968 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
969 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
970 l_recog_line_1 NUMBER;
971 l_recog_line_2 NUMBER;
972
973 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
974 l_bflow_applied_to_amt NUMBER; -- 5132302
975 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
976
977 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
978
979 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
980 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
981
982 ---------------------------------------------------------------------------------------------------------------
983
984
985 --
986 -- bulk performance
987 --
988 l_balance_type_code VARCHAR2(1);
989 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
990 l_log_module VARCHAR2(240);
991
992 --
993 -- Upgrade strategy
994 --
995 l_actual_upg_option VARCHAR2(1);
996 l_enc_upg_option VARCHAR2(1);
997
998 --
999 BEGIN
1000 --
1001 IF g_log_enabled THEN
1002 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_3';
1003 END IF;
1004 --
1005 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1006
1007 trace
1008 (p_msg => 'BEGIN of AcctLineType_3'
1009 ,p_level => C_LEVEL_PROCEDURE
1010 ,p_module => l_log_module);
1011
1012 END IF;
1013 --
1014 l_component_type := 'AMB_JLT';
1015 l_component_code := 'PA_PROJ_ENCUMBRANCE';
1016 l_component_type_code := 'S';
1017 l_component_appl_id := 275;
1018 l_amb_context_code := 'DEFAULT';
1019 l_entity_code := 'BUDGETS';
1020 l_event_class_code := 'BUDGET';
1021 l_event_type_code := 'BUDGET_ALL';
1022 l_line_definition_owner_code := 'S';
1023 l_line_definition_code := 'PA_PROJ_ENC_ACCTING';
1024 --
1025 l_balance_type_code := 'E';
1026 l_segment := NULL;
1027 l_ccid := NULL;
1028 l_adr_transaction_coa_id := NULL;
1029 l_adr_accounting_coa_id := NULL;
1030 l_adr_flexfield_segment_code := NULL;
1031 l_adr_flex_value_set_id := NULL;
1032 l_adr_value_type_code := NULL;
1033 l_adr_value_combination_id := NULL;
1034 l_adr_value_segment_code := NULL;
1035
1036 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
1037 l_bflow_class_code := 'PA_BUDGET_ENC'; -- 4219869 Business Flow
1038 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
1039 l_budgetary_control_flag := 'Y';
1040
1041 l_bflow_applied_to_amt_idx := NULL; -- 5132302
1042 l_bflow_applied_to_amt := NULL; -- 5132302
1043 l_entered_amt_idx := NULL; -- 4262811
1044 l_accted_amt_idx := NULL; -- 4262811
1045 l_acc_rev_flag := NULL; -- 4262811
1046 l_accrual_line_num := NULL; -- 4262811
1047 l_tmp_amt := NULL; -- 4262811
1048 --
1049
1050 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
1051 l_balance_type_code <> 'B' THEN
1052 IF NVL(p_source_3,'
1053 ') = 'E' AND
1054 NVL(p_source_16,'
1055 ') = 'GL'
1056 THEN
1057
1058 --
1059 XLA_AE_LINES_PKG.SetNewLine;
1060
1061 p_balance_type_code := l_balance_type_code;
1062 -- set the flag so later we will know whether the gain loss line needs to be created
1063
1064 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
1065 p_actual_flag :='A';
1066 END IF;
1067
1068 --
1069 -- bulk performance
1070 --
1071 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
1075 --
1072 p_header_num => 0); -- 4262811
1073 --
1074 -- set accounting line options
1076 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
1077 p_natural_side_code => 'D'
1078 , p_gain_or_loss_flag => 'N'
1079 , p_gl_transfer_mode_code => 'S'
1080 , p_acct_entry_type_code => 'E'
1081 , p_switch_side_flag => 'Y'
1082 , p_merge_duplicate_code => 'N'
1083 );
1084 --
1085 l_acc_rev_natural_side_code := 'C'; -- 4262811
1086 --
1087 --
1088 -- set accounting line type info
1089 --
1090 xla_ae_lines_pkg.SetAcctLineType
1091 (p_component_type => l_component_type
1092 ,p_event_type_code => l_event_type_code
1093 ,p_line_definition_owner_code => l_line_definition_owner_code
1094 ,p_line_definition_code => l_line_definition_code
1095 ,p_accounting_line_code => l_component_code
1096 ,p_accounting_line_type_code => l_component_type_code
1097 ,p_accounting_line_appl_id => l_component_appl_id
1098 ,p_amb_context_code => l_amb_context_code
1099 ,p_entity_code => l_entity_code
1100 ,p_event_class_code => l_event_class_code);
1101 --
1102 -- set accounting class
1103 --
1104 xla_ae_lines_pkg.SetAcctClass(
1105 p_accounting_class_code => 'PA_BUDGET_ENC'
1106 , p_ae_header_id => l_ae_header_id
1107 );
1108
1109 --
1110 -- set rounding class
1111 --
1112 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
1113 'PA_BUDGET_ENC';
1114
1115 --
1116 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
1117 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
1118 --
1119 -- bulk performance
1120 --
1121 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
1122
1123 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
1124 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
1125
1126 -- 4955764
1127 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1128 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
1129
1130 -- 4458381 Public Sector Enh
1131 XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1061;
1132 --
1133 -- set accounting attributes for the line type
1134 --
1135 l_entered_amt_idx := 10;
1136 l_accted_amt_idx := 15;
1137 l_bflow_applied_to_amt_idx := NULL; -- 5132302
1138 l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
1139 l_rec_acct_attrs.array_char_value(1) := p_source_4;
1140 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
1141 l_rec_acct_attrs.array_num_value(2) := to_char(p_source_5);
1142 l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
1143 l_rec_acct_attrs.array_char_value(3) := p_source_6;
1144 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENC_UPG_DR_ACCT_CLASS';
1145 l_rec_acct_attrs.array_char_value(4) := p_source_7;
1146 l_rec_acct_attrs.array_acct_attr_code(5) := 'ENC_UPG_DR_CCID';
1147 l_rec_acct_attrs.array_num_value(5) := p_source_1;
1148 l_rec_acct_attrs.array_acct_attr_code(6) := 'ENC_UPG_DR_ENTERED_AMT';
1149 l_rec_acct_attrs.array_num_value(6) := p_source_8;
1150 l_rec_acct_attrs.array_acct_attr_code(7) := 'ENC_UPG_DR_ENTERED_CURR';
1151 l_rec_acct_attrs.array_char_value(7) := p_source_9;
1152 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_DR_LEDGER_AMT';
1153 l_rec_acct_attrs.array_num_value(8) := p_source_10;
1154 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_OPTION';
1155 l_rec_acct_attrs.array_char_value(9) := p_source_11;
1156 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
1157 l_rec_acct_attrs.array_num_value(10) := p_source_8;
1158 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
1159 l_rec_acct_attrs.array_char_value(11) := p_source_9;
1160 l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_DATE';
1161 l_rec_acct_attrs.array_date_value(12) := p_source_12;
1162 l_rec_acct_attrs.array_acct_attr_code(13) := 'EXCHANGE_RATE';
1163 l_rec_acct_attrs.array_num_value(13) := p_source_13;
1164 l_rec_acct_attrs.array_acct_attr_code(14) := 'EXCHANGE_RATE_TYPE';
1165 l_rec_acct_attrs.array_char_value(14) := p_source_14;
1166 l_rec_acct_attrs.array_acct_attr_code(15) := 'LEDGER_AMOUNT';
1167 l_rec_acct_attrs.array_num_value(15) := p_source_10;
1168 l_rec_acct_attrs.array_acct_attr_code(16) := 'REVERSED_DISTRIBUTION_ID1';
1169 l_rec_acct_attrs.array_num_value(16) := to_char(p_source_5);
1170 l_rec_acct_attrs.array_acct_attr_code(17) := 'REVERSED_DISTRIBUTION_TYPE';
1171 l_rec_acct_attrs.array_char_value(17) := p_source_6;
1172 l_rec_acct_attrs.array_acct_attr_code(18) := 'UPG_DR_ENC_TYPE_ID';
1173 l_rec_acct_attrs.array_num_value(18) := p_source_15;
1174
1175 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
1176 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
1177
1181 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
1178 ---------------------------------------------------------------------------------------------------------------
1179 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
1180 ---------------------------------------------------------------------------------------------------------------
1182
1183 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1184 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1185
1186 IF xla_accounting_cache_pkg.GetValueChar
1187 (p_source_code => 'LEDGER_CATEGORY_CODE'
1188 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
1189 AND l_bflow_method_code = 'PRIOR_ENTRY'
1190 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
1191 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
1192 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
1193 )
1194 THEN
1195 xla_ae_lines_pkg.BflowUpgEntry
1196 (p_business_method_code => l_bflow_method_code
1197 ,p_business_class_code => l_bflow_class_code
1198 ,p_balance_type => l_balance_type_code);
1199 ELSE
1200 NULL;
1201 -- No business flow processing for business flow method of NONE.
1202 END IF;
1203
1204 --
1205 -- call analytical criteria
1206 --
1207
1208 --
1209 -- call description
1210 --
1211 -- No description or it is inherited.
1212 --
1213 -- call ADRs
1214 -- Bug 4922099
1215 --
1216 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1217 (NVL(l_actual_upg_option, 'N') = 'O') OR
1218 (NVL(l_enc_upg_option, 'N') = 'O')
1219 )
1220 THEN
1221 NULL;
1222 --
1223 --
1224
1225 l_ccid := AcctDerRule_1(
1226 p_application_id => p_application_id
1227 , p_ae_header_id => l_ae_header_id
1228 , p_source_1 => p_source_1
1229 , x_transaction_coa_id => l_adr_transaction_coa_id
1230 , x_accounting_coa_id => l_adr_accounting_coa_id
1231 , x_value_type_code => l_adr_value_type_code
1232 , p_side => 'NA'
1233 );
1234
1235 xla_ae_lines_pkg.set_ccid(
1236 p_code_combination_id => l_ccid
1237 , p_value_type_code => l_adr_value_type_code
1238 , p_transaction_coa_id => l_adr_transaction_coa_id
1239 , p_accounting_coa_id => l_adr_accounting_coa_id
1240 , p_adr_code => 'PA_BUDGET_ACCT_RULE'
1241 , p_adr_type_code => 'S'
1242 , p_component_type => l_component_type
1243 , p_component_code => l_component_code
1244 , p_component_type_code => l_component_type_code
1245 , p_component_appl_id => l_component_appl_id
1246 , p_amb_context_code => l_amb_context_code
1247 , p_side => 'NA'
1248 );
1249
1250
1251 --
1252 --
1253 END IF;
1254 --
1255 -- Bug 4922099
1256 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
1257 (NVL(l_enc_upg_option, 'N') = 'O')
1258 ) AND
1259 (l_bflow_method_code = 'PRIOR_ENTRY')
1260 )
1261 THEN
1262 IF
1263 --
1264 1 = 2
1265 --
1266 THEN
1267 xla_accounting_err_pkg.build_message
1268 (p_appli_s_name => 'XLA'
1269 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1270 ,p_token_1 => 'LINE_NUMBER'
1271 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
1272 ,p_token_2 => 'LINE_TYPE_NAME'
1273 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
1274 l_component_type
1275 ,l_component_code
1276 ,l_component_type_code
1277 ,l_component_appl_id
1278 ,l_amb_context_code
1279 ,l_entity_code
1280 ,l_event_class_code
1281 )
1282 ,p_token_3 => 'OWNER'
1283 ,p_value_3 => xla_lookups_pkg.get_meaning(
1284 p_lookup_type => 'XLA_OWNER_TYPE'
1285 ,p_lookup_code => l_component_type_code
1286 )
1290 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
1287 ,p_token_4 => 'PRODUCT_NAME'
1288 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
1289 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
1291 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
1292 ,p_ae_header_id => NULL
1293 );
1294
1295 IF (C_LEVEL_ERROR>= g_log_level) THEN
1296 trace
1297 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1298 ,p_level => C_LEVEL_ERROR
1299 ,p_module => l_log_module);
1300 END IF;
1301 END IF;
1302 END IF;
1303 --
1304 --
1305 ------------------------------------------------------------------------------------------------
1306 -- 4219869 Business Flow
1307 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
1308 -- Prior Entry. Currently, the following code is always generated.
1309 ------------------------------------------------------------------------------------------------
1310 XLA_AE_LINES_PKG.ValidateCurrentLine;
1311
1312 ------------------------------------------------------------------------------------
1313 -- 4219869 Business Flow
1314 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
1315 ------------------------------------------------------------------------------------
1316 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1317
1318 ----------------------------------------------------------------------------------
1319 -- 4219869 Business Flow
1320 -- Update journal entry status -- Need to generate this within IF <condition>
1321 ----------------------------------------------------------------------------------
1322 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1323 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
1324 ,p_balance_type_code => l_balance_type_code
1325 );
1326
1327 -------------------------------------------------------------------------------------------
1328 -- 4262811 - Generate the Accrual Reversal lines
1329 -------------------------------------------------------------------------------------------
1330 BEGIN
1331 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
1332 (g_array_event(p_event_id).array_value_num('header_index'));
1333 IF l_acc_rev_flag IS NULL THEN
1334 l_acc_rev_flag := 'N';
1335 END IF;
1336 EXCEPTION
1337 WHEN OTHERS THEN
1338 l_acc_rev_flag := 'N';
1339 END;
1340 --
1341 IF (l_acc_rev_flag = 'Y') THEN
1342
1343 -- 4645092 ------------------------------------------------------------------------------
1344 -- To allow MPA report to determine if it should generate report process
1345 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
1346 ------------------------------------------------------------------------------------------
1347
1348 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
1349 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
1350
1351 --
1352 -- Update the line information that should be overwritten
1353 --
1354 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
1355 p_header_num => 1);
1356 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
1357
1358 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
1359
1360 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
1361 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
1362 END IF;
1363
1364 --
1365 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
1366 --
1367 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
1368 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
1369 ELSE
1370 ---------------------------------------------------------------------------------------------------
1371 -- 4262811a Switch Sign
1372 ---------------------------------------------------------------------------------------------------
1373 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
1374 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1375 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1376 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1377 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1378 -- 5132302
1379 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
1380 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1381
1382 END IF;
1383
1384 -- 4955764
1388
1385 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1386 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
1387
1389 XLA_AE_LINES_PKG.ValidateCurrentLine;
1390 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1391
1392 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1393 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
1394 ,p_balance_type_code => l_balance_type_code);
1395
1396 END IF;
1397
1398 -----------------------------------------------------------------------------------------
1399 -- 4262811 Multiperiod Accounting
1400 -----------------------------------------------------------------------------------------
1401 -- No MPA option is assigned.
1402
1403
1404 END IF;
1405 END IF;
1406 --
1407
1408 --
1409 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1410 trace
1411 (p_msg => 'END of AcctLineType_3'
1412 ,p_level => C_LEVEL_PROCEDURE
1413 ,p_module => l_log_module);
1414 END IF;
1415 --
1416 EXCEPTION
1417 WHEN xla_exceptions_pkg.application_exception THEN
1418 RAISE;
1419 WHEN OTHERS THEN
1420 xla_exceptions_pkg.raise_message
1421 (p_location => 'XLA_00275_AAD_S_000004_BC_PKG.AcctLineType_3');
1422 END AcctLineType_3;
1423 --
1424
1425 ---------------------------------------
1426 --
1427 -- PRIVATE FUNCTION
1428 -- AcctLineType_4
1429 --
1430 ---------------------------------------
1431 PROCEDURE AcctLineType_4 (
1432 p_application_id IN NUMBER
1433 ,p_event_id IN NUMBER
1434 ,p_calculate_acctd_flag IN VARCHAR2
1435 ,p_calculate_g_l_flag IN VARCHAR2
1436 ,p_actual_flag IN OUT VARCHAR2
1437 ,p_balance_type_code OUT VARCHAR2
1438 ,p_gain_or_loss_ref OUT VARCHAR2
1439
1440 --Budget Code Combination ID
1441 , p_source_1 IN NUMBER
1442 --Budget Amount Code
1443 , p_source_2 IN VARCHAR2
1444 --Reversing Line Flag
1445 , p_source_4 IN VARCHAR2
1446 --Budget Line ID
1447 , p_source_5 IN NUMBER
1448 --Line Type
1449 , p_source_6 IN VARCHAR2
1450 , p_source_6_meaning IN VARCHAR2
1451 --Encumbrance Upgrade Credit Accounting Class
1452 , p_source_7 IN VARCHAR2
1453 --Entered Amount
1454 , p_source_8 IN NUMBER
1455 --Entered Currency Code
1456 , p_source_9 IN VARCHAR2
1457 --Accounted Amount
1458 , p_source_10 IN NUMBER
1459 --Use Encumbrance Upgrade Attributes Flag
1460 , p_source_11 IN VARCHAR2
1461 --Exchange Rate Date
1462 , p_source_12 IN DATE
1463 --Exchange Rate
1464 , p_source_13 IN NUMBER
1465 --Exchange Rate Type
1466 , p_source_14 IN VARCHAR2
1467 --Upgrade Project Encumbrance Type ID
1468 , p_source_15 IN NUMBER
1469 )
1470 IS
1471
1472 l_component_type VARCHAR2(80);
1473 l_component_code VARCHAR2(30);
1474 l_component_type_code VARCHAR2(1);
1475 l_component_appl_id INTEGER;
1476 l_amb_context_code VARCHAR2(30);
1477 l_entity_code VARCHAR2(30);
1478 l_event_class_code VARCHAR2(30);
1479 l_ae_header_id NUMBER;
1480 l_event_type_code VARCHAR2(30);
1481 l_line_definition_code VARCHAR2(30);
1482 l_line_definition_owner_code VARCHAR2(1);
1483 --
1484 -- adr variables
1485 l_segment VARCHAR2(30);
1486 l_ccid NUMBER;
1487 l_adr_transaction_coa_id NUMBER;
1488 l_adr_accounting_coa_id NUMBER;
1489 l_adr_flexfield_segment_code VARCHAR2(30);
1490 l_adr_flex_value_set_id NUMBER;
1491 l_adr_value_type_code VARCHAR2(30);
1492 l_adr_value_combination_id NUMBER;
1493 l_adr_value_segment_code VARCHAR2(30);
1494
1495 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
1496 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
1497 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
1498 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
1499
1500 -- 4262811 Variables ------------------------------------------------------------------------------------------
1501 l_entered_amt_idx NUMBER;
1502 l_accted_amt_idx NUMBER;
1503 l_acc_rev_flag VARCHAR2(1);
1504 l_accrual_line_num NUMBER;
1505 l_tmp_amt NUMBER;
1506 l_acc_rev_natural_side_code VARCHAR2(1);
1507
1508 l_num_entries NUMBER;
1509 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
1510 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
1511 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
1512 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
1513 l_recog_line_1 NUMBER;
1514 l_recog_line_2 NUMBER;
1515
1516 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
1517 l_bflow_applied_to_amt NUMBER; -- 5132302
1518 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
1519
1523 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
1520 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
1521
1522 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
1524
1525 ---------------------------------------------------------------------------------------------------------------
1526
1527
1528 --
1529 -- bulk performance
1530 --
1531 l_balance_type_code VARCHAR2(1);
1532 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
1533 l_log_module VARCHAR2(240);
1534
1535 --
1536 -- Upgrade strategy
1537 --
1538 l_actual_upg_option VARCHAR2(1);
1539 l_enc_upg_option VARCHAR2(1);
1540
1541 --
1542 BEGIN
1543 --
1544 IF g_log_enabled THEN
1545 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_4';
1546 END IF;
1547 --
1548 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1549
1550 trace
1551 (p_msg => 'BEGIN of AcctLineType_4'
1552 ,p_level => C_LEVEL_PROCEDURE
1553 ,p_module => l_log_module);
1554
1555 END IF;
1556 --
1557 l_component_type := 'AMB_JLT';
1558 l_component_code := 'PA_REV_BUDGET_JOURNAL';
1559 l_component_type_code := 'S';
1560 l_component_appl_id := 275;
1561 l_amb_context_code := 'DEFAULT';
1562 l_entity_code := 'BUDGETS';
1563 l_event_class_code := 'BUDGET';
1564 l_event_type_code := 'BUDGET_ALL';
1565 l_line_definition_owner_code := 'S';
1566 l_line_definition_code := 'PA_STANDARD_ACCOUNTING';
1567 --
1568 l_balance_type_code := 'B';
1569 l_segment := NULL;
1570 l_ccid := NULL;
1571 l_adr_transaction_coa_id := NULL;
1572 l_adr_accounting_coa_id := NULL;
1573 l_adr_flexfield_segment_code := NULL;
1574 l_adr_flex_value_set_id := NULL;
1575 l_adr_value_type_code := NULL;
1576 l_adr_value_combination_id := NULL;
1577 l_adr_value_segment_code := NULL;
1578
1579 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
1580 l_bflow_class_code := ''; -- 4219869 Business Flow
1581 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
1582 l_budgetary_control_flag := 'Y';
1583
1584 l_bflow_applied_to_amt_idx := NULL; -- 5132302
1585 l_bflow_applied_to_amt := NULL; -- 5132302
1586 l_entered_amt_idx := NULL; -- 4262811
1587 l_accted_amt_idx := NULL; -- 4262811
1588 l_acc_rev_flag := NULL; -- 4262811
1589 l_accrual_line_num := NULL; -- 4262811
1590 l_tmp_amt := NULL; -- 4262811
1591 --
1592
1593 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
1594 l_balance_type_code <> 'B' THEN
1595 IF NVL(p_source_2,'
1596 ') = 'R'
1597 THEN
1598
1599 --
1600 XLA_AE_LINES_PKG.SetNewLine;
1601
1602 p_balance_type_code := l_balance_type_code;
1603 -- set the flag so later we will know whether the gain loss line needs to be created
1604
1605 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
1606 p_actual_flag :='A';
1607 END IF;
1608
1609 --
1610 -- bulk performance
1611 --
1612 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
1613 p_header_num => 0); -- 4262811
1614 --
1615 -- set accounting line options
1616 --
1617 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
1618 p_natural_side_code => 'C'
1619 , p_gain_or_loss_flag => 'N'
1620 , p_gl_transfer_mode_code => 'S'
1621 , p_acct_entry_type_code => 'B'
1622 , p_switch_side_flag => 'Y'
1623 , p_merge_duplicate_code => 'N'
1624 );
1625 --
1626 l_acc_rev_natural_side_code := 'D'; -- 4262811
1627 --
1628 --
1629 -- set accounting line type info
1630 --
1631 xla_ae_lines_pkg.SetAcctLineType
1632 (p_component_type => l_component_type
1633 ,p_event_type_code => l_event_type_code
1634 ,p_line_definition_owner_code => l_line_definition_owner_code
1635 ,p_line_definition_code => l_line_definition_code
1636 ,p_accounting_line_code => l_component_code
1637 ,p_accounting_line_type_code => l_component_type_code
1638 ,p_accounting_line_appl_id => l_component_appl_id
1639 ,p_amb_context_code => l_amb_context_code
1640 ,p_entity_code => l_entity_code
1641 ,p_event_class_code => l_event_class_code);
1642 --
1643 -- set accounting class
1644 --
1645 xla_ae_lines_pkg.SetAcctClass(
1646 p_accounting_class_code => 'BUDGET'
1647 , p_ae_header_id => l_ae_header_id
1648 );
1649
1650 --
1651 -- set rounding class
1652 --
1653 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
1654 'BUDGET';
1655
1656 --
1657 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
1661 --
1658 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
1659 --
1660 -- bulk performance
1662 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
1663
1664 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
1665 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
1666
1667 -- 4955764
1668 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1669 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
1670
1671 -- 4458381 Public Sector Enh
1672
1673 --
1674 -- set accounting attributes for the line type
1675 --
1676 l_entered_amt_idx := 10;
1677 l_accted_amt_idx := 15;
1678 l_bflow_applied_to_amt_idx := NULL; -- 5132302
1679 l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
1680 l_rec_acct_attrs.array_char_value(1) := p_source_4;
1681 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
1682 l_rec_acct_attrs.array_num_value(2) := to_char(p_source_5);
1683 l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
1684 l_rec_acct_attrs.array_char_value(3) := p_source_6;
1685 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENC_UPG_DR_ACCT_CLASS';
1686 l_rec_acct_attrs.array_char_value(4) := p_source_7;
1687 l_rec_acct_attrs.array_acct_attr_code(5) := 'ENC_UPG_DR_CCID';
1688 l_rec_acct_attrs.array_num_value(5) := p_source_1;
1689 l_rec_acct_attrs.array_acct_attr_code(6) := 'ENC_UPG_DR_ENTERED_AMT';
1690 l_rec_acct_attrs.array_num_value(6) := p_source_8;
1691 l_rec_acct_attrs.array_acct_attr_code(7) := 'ENC_UPG_DR_ENTERED_CURR';
1692 l_rec_acct_attrs.array_char_value(7) := p_source_9;
1693 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_DR_LEDGER_AMT';
1694 l_rec_acct_attrs.array_num_value(8) := p_source_10;
1695 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_OPTION';
1696 l_rec_acct_attrs.array_char_value(9) := p_source_11;
1697 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
1698 l_rec_acct_attrs.array_num_value(10) := p_source_8;
1699 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
1700 l_rec_acct_attrs.array_char_value(11) := p_source_9;
1701 l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_DATE';
1702 l_rec_acct_attrs.array_date_value(12) := p_source_12;
1703 l_rec_acct_attrs.array_acct_attr_code(13) := 'EXCHANGE_RATE';
1704 l_rec_acct_attrs.array_num_value(13) := p_source_13;
1705 l_rec_acct_attrs.array_acct_attr_code(14) := 'EXCHANGE_RATE_TYPE';
1706 l_rec_acct_attrs.array_char_value(14) := p_source_14;
1707 l_rec_acct_attrs.array_acct_attr_code(15) := 'LEDGER_AMOUNT';
1708 l_rec_acct_attrs.array_num_value(15) := p_source_10;
1709 l_rec_acct_attrs.array_acct_attr_code(16) := 'REVERSED_DISTRIBUTION_ID1';
1710 l_rec_acct_attrs.array_num_value(16) := to_char(p_source_5);
1711 l_rec_acct_attrs.array_acct_attr_code(17) := 'REVERSED_DISTRIBUTION_TYPE';
1712 l_rec_acct_attrs.array_char_value(17) := p_source_6;
1713 l_rec_acct_attrs.array_acct_attr_code(18) := 'UPG_DR_ENC_TYPE_ID';
1714 l_rec_acct_attrs.array_num_value(18) := p_source_15;
1715
1716 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
1717 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
1718
1719 ---------------------------------------------------------------------------------------------------------------
1720 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
1721 ---------------------------------------------------------------------------------------------------------------
1722 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
1723
1724 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1725 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1726
1727 IF xla_accounting_cache_pkg.GetValueChar
1728 (p_source_code => 'LEDGER_CATEGORY_CODE'
1729 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
1730 AND l_bflow_method_code = 'PRIOR_ENTRY'
1731 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
1732 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
1733 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
1734 )
1735 THEN
1736 xla_ae_lines_pkg.BflowUpgEntry
1737 (p_business_method_code => l_bflow_method_code
1738 ,p_business_class_code => l_bflow_class_code
1739 ,p_balance_type => l_balance_type_code);
1740 ELSE
1741 NULL;
1742 -- No business flow processing for business flow method of NONE.
1743 END IF;
1744
1745 --
1746 -- call analytical criteria
1747 --
1748
1749 --
1750 -- call description
1751 --
1752 -- No description or it is inherited.
1753 --
1754 -- call ADRs
1755 -- Bug 4922099
1756 --
1757 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1758 (NVL(l_actual_upg_option, 'N') = 'O') OR
1759 (NVL(l_enc_upg_option, 'N') = 'O')
1760 )
1761 THEN
1762 NULL;
1763 --
1764 --
1768 , p_ae_header_id => l_ae_header_id
1765
1766 l_ccid := AcctDerRule_1(
1767 p_application_id => p_application_id
1769 , p_source_1 => p_source_1
1770 , x_transaction_coa_id => l_adr_transaction_coa_id
1771 , x_accounting_coa_id => l_adr_accounting_coa_id
1772 , x_value_type_code => l_adr_value_type_code
1773 , p_side => 'NA'
1774 );
1775
1776 xla_ae_lines_pkg.set_ccid(
1777 p_code_combination_id => l_ccid
1778 , p_value_type_code => l_adr_value_type_code
1779 , p_transaction_coa_id => l_adr_transaction_coa_id
1780 , p_accounting_coa_id => l_adr_accounting_coa_id
1781 , p_adr_code => 'PA_BUDGET_ACCT_RULE'
1782 , p_adr_type_code => 'S'
1783 , p_component_type => l_component_type
1784 , p_component_code => l_component_code
1785 , p_component_type_code => l_component_type_code
1786 , p_component_appl_id => l_component_appl_id
1787 , p_amb_context_code => l_amb_context_code
1788 , p_side => 'NA'
1789 );
1790
1791
1792 --
1793 --
1794 END IF;
1795 --
1796 -- Bug 4922099
1797 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
1798 (NVL(l_enc_upg_option, 'N') = 'O')
1799 ) AND
1800 (l_bflow_method_code = 'PRIOR_ENTRY')
1801 )
1802 THEN
1803 IF
1804 --
1805 1 = 2
1806 --
1807 THEN
1808 xla_accounting_err_pkg.build_message
1809 (p_appli_s_name => 'XLA'
1810 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1811 ,p_token_1 => 'LINE_NUMBER'
1812 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
1813 ,p_token_2 => 'LINE_TYPE_NAME'
1814 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
1815 l_component_type
1816 ,l_component_code
1817 ,l_component_type_code
1818 ,l_component_appl_id
1819 ,l_amb_context_code
1820 ,l_entity_code
1821 ,l_event_class_code
1822 )
1823 ,p_token_3 => 'OWNER'
1824 ,p_value_3 => xla_lookups_pkg.get_meaning(
1825 p_lookup_type => 'XLA_OWNER_TYPE'
1826 ,p_lookup_code => l_component_type_code
1827 )
1828 ,p_token_4 => 'PRODUCT_NAME'
1829 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
1830 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
1831 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
1832 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
1833 ,p_ae_header_id => NULL
1834 );
1835
1836 IF (C_LEVEL_ERROR>= g_log_level) THEN
1837 trace
1838 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1839 ,p_level => C_LEVEL_ERROR
1840 ,p_module => l_log_module);
1841 END IF;
1842 END IF;
1843 END IF;
1844 --
1845 --
1846 ------------------------------------------------------------------------------------------------
1847 -- 4219869 Business Flow
1848 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
1849 -- Prior Entry. Currently, the following code is always generated.
1850 ------------------------------------------------------------------------------------------------
1851 XLA_AE_LINES_PKG.ValidateCurrentLine;
1852
1853 ------------------------------------------------------------------------------------
1854 -- 4219869 Business Flow
1855 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
1856 ------------------------------------------------------------------------------------
1857 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1858
1859 ----------------------------------------------------------------------------------
1860 -- 4219869 Business Flow
1861 -- Update journal entry status -- Need to generate this within IF <condition>
1862 ----------------------------------------------------------------------------------
1863 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1867
1864 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
1865 ,p_balance_type_code => l_balance_type_code
1866 );
1868 -------------------------------------------------------------------------------------------
1869 -- 4262811 - Generate the Accrual Reversal lines
1870 -------------------------------------------------------------------------------------------
1871 BEGIN
1872 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
1873 (g_array_event(p_event_id).array_value_num('header_index'));
1874 IF l_acc_rev_flag IS NULL THEN
1875 l_acc_rev_flag := 'N';
1876 END IF;
1877 EXCEPTION
1878 WHEN OTHERS THEN
1879 l_acc_rev_flag := 'N';
1880 END;
1881 --
1882 IF (l_acc_rev_flag = 'Y') THEN
1883
1884 -- 4645092 ------------------------------------------------------------------------------
1885 -- To allow MPA report to determine if it should generate report process
1886 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
1887 ------------------------------------------------------------------------------------------
1888
1889 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
1890 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
1891
1892 --
1893 -- Update the line information that should be overwritten
1894 --
1895 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
1896 p_header_num => 1);
1897 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
1898
1899 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
1900
1901 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
1902 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
1903 END IF;
1904
1905 --
1906 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
1907 --
1908 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
1909 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
1910 ELSE
1911 ---------------------------------------------------------------------------------------------------
1912 -- 4262811a Switch Sign
1913 ---------------------------------------------------------------------------------------------------
1914 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
1915 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1916 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1917 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1918 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1919 -- 5132302
1920 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
1921 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1922
1923 END IF;
1924
1925 -- 4955764
1926 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1927 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
1928
1929
1930 XLA_AE_LINES_PKG.ValidateCurrentLine;
1931 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1932
1933 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1934 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
1935 ,p_balance_type_code => l_balance_type_code);
1936
1937 END IF;
1938
1939 -----------------------------------------------------------------------------------------
1940 -- 4262811 Multiperiod Accounting
1941 -----------------------------------------------------------------------------------------
1942 -- No MPA option is assigned.
1943
1944
1945 END IF;
1946 END IF;
1947 --
1948
1949 --
1950 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1951 trace
1952 (p_msg => 'END of AcctLineType_4'
1953 ,p_level => C_LEVEL_PROCEDURE
1954 ,p_module => l_log_module);
1955 END IF;
1956 --
1957 EXCEPTION
1958 WHEN xla_exceptions_pkg.application_exception THEN
1959 RAISE;
1960 WHEN OTHERS THEN
1961 xla_exceptions_pkg.raise_message
1962 (p_location => 'XLA_00275_AAD_S_000004_BC_PKG.AcctLineType_4');
1963 END AcctLineType_4;
1964 --
1965
1966 ---------------------------------------
1967 --
1968 -- PRIVATE PROCEDURE
1969 -- insert_sources_5
1970 --
1971 ----------------------------------------
1972 --
1973 PROCEDURE insert_sources_5(
1974 p_target_ledger_id IN NUMBER
1975 , p_language IN VARCHAR2
1976 , p_sla_ledger_id IN NUMBER
1977 , p_pad_start_date IN DATE
1978 , p_pad_end_date IN DATE
1979 )
1980 IS
1981
1985 l_log_module VARCHAR2(240);
1982 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'BUDGET_ALL';
1983 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'BUDGET';
1984 p_apps_owner VARCHAR2(30);
1986 BEGIN
1987 IF g_log_enabled THEN
1988 l_log_module := C_DEFAULT_MODULE||'.insert_sources_5';
1989 END IF;
1990 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1991
1992 trace
1993 (p_msg => 'BEGIN of insert_sources_5'
1994 ,p_level => C_LEVEL_PROCEDURE
1995 ,p_module => l_log_module);
1996
1997 END IF;
1998
1999 -- select APPS owner
2000 SELECT oracle_username
2001 INTO p_apps_owner
2002 FROM fnd_oracle_userid
2003 WHERE read_only_flag = 'U'
2004 ;
2005
2006 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2007 trace
2008 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
2009 ' - p_language = '||p_language||
2010 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
2011 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
2012 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
2013 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
2014 ,p_level => C_LEVEL_STATEMENT
2015 ,p_module => l_log_module);
2016 END IF;
2017
2018
2019 --
2020 INSERT INTO xla_diag_sources --hdr2
2021 (
2022 event_id
2023 , ledger_id
2024 , sla_ledger_id
2025 , description_language
2026 , object_name
2027 , object_type_code
2028 , line_number
2029 , source_application_id
2030 , source_type_code
2031 , source_code
2032 , source_value
2033 , source_meaning
2034 , created_by
2035 , creation_date
2036 , last_update_date
2037 , last_updated_by
2038 , last_update_login
2039 , program_update_date
2040 , program_application_id
2041 , program_id
2042 , request_id
2043 )
2044 SELECT
2045 event_id
2046 , p_target_ledger_id
2047 , p_sla_ledger_id
2048 , p_language
2049 , object_name
2050 , object_type_code
2051 , line_number
2052 , source_application_id
2053 , source_type_code
2054 , source_code
2055 , SUBSTR(source_value ,1,1996)
2056 , SUBSTR(source_meaning ,1,200)
2057 , xla_environment_pkg.g_Usr_Id
2058 , TRUNC(SYSDATE)
2059 , TRUNC(SYSDATE)
2060 , xla_environment_pkg.g_Usr_Id
2061 , xla_environment_pkg.g_Login_Id
2062 , TRUNC(SYSDATE)
2063 , xla_environment_pkg.g_Prog_Appl_Id
2064 , xla_environment_pkg.g_Prog_Id
2065 , xla_environment_pkg.g_Req_Id
2066 FROM (
2067 SELECT xet.event_id event_id
2068 , 0 line_number
2069 , CASE r
2070 WHEN 1 THEN 'PA_XLA_BC_BUDGET_HEADER_V'
2071 WHEN 2 THEN 'PA_XLA_BC_BUDGET_HEADER_V'
2072 WHEN 3 THEN 'PA_XLA_BC_BUDGET_HEADER_V'
2073 WHEN 4 THEN 'PA_XLA_BC_BUDGET_HEADER_V'
2074 WHEN 5 THEN 'PA_XLA_BC_BUDGET_HEADER_V'
2075
2076 ELSE null
2077 END object_name
2078 , CASE r
2079 WHEN 1 THEN 'HEADER'
2080 WHEN 2 THEN 'HEADER'
2081 WHEN 3 THEN 'HEADER'
2082 WHEN 4 THEN 'HEADER'
2083 WHEN 5 THEN 'HEADER'
2084
2085 ELSE null
2086 END object_type_code
2087 , CASE r
2088 WHEN 1 THEN '275'
2089 WHEN 2 THEN '275'
2090 WHEN 3 THEN '275'
2091 WHEN 4 THEN '275'
2092 WHEN 5 THEN '275'
2093
2094 ELSE null
2095 END source_application_id
2096 , 'S' source_type_code
2097 , CASE r
2098 WHEN 1 THEN 'BUDGET_AMOUNT_CODE'
2099 WHEN 2 THEN 'BC_BALANCE_TYPE'
2100 WHEN 3 THEN 'EXTERNAL_BUDGET_CODE'
2101 WHEN 4 THEN 'GL_BUDGET_VERSION_ID'
2102 WHEN 5 THEN 'GL_DATE'
2103
2104 ELSE null
2105 END source_code
2106 , CASE r
2107 WHEN 1 THEN TO_CHAR(h1.BUDGET_AMOUNT_CODE)
2108 WHEN 2 THEN TO_CHAR(h1.BC_BALANCE_TYPE)
2109 WHEN 3 THEN TO_CHAR(h1.EXTERNAL_BUDGET_CODE)
2110 WHEN 4 THEN TO_CHAR(h1.GL_BUDGET_VERSION_ID)
2111 WHEN 5 THEN TO_CHAR(h1.GL_DATE)
2112
2113 ELSE null
2114 END source_value
2115 , null source_meaning
2116 FROM xla_events_gt xet
2117 , PA_XLA_BC_BUDGET_HEADER_V h1
2118 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
2119 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
2120 AND xet.event_class_code = C_EVENT_CLASS_CODE
2121 AND h1.event_id = xet.event_id
2122
2123 )
2124 ;
2125 --
2129 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
2126 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2127
2128 trace
2130 ,p_level => C_LEVEL_STATEMENT
2131 ,p_module => l_log_module);
2132
2133 END IF;
2134 --
2135
2136
2137
2138 --
2139 INSERT INTO xla_diag_sources --line2
2140 (
2141 event_id
2142 , ledger_id
2143 , sla_ledger_id
2144 , description_language
2145 , object_name
2146 , object_type_code
2147 , line_number
2148 , source_application_id
2149 , source_type_code
2150 , source_code
2151 , source_value
2152 , source_meaning
2153 , created_by
2154 , creation_date
2155 , last_update_date
2156 , last_updated_by
2157 , last_update_login
2158 , program_update_date
2159 , program_application_id
2160 , program_id
2161 , request_id
2162 )
2163 SELECT event_id
2164 , p_target_ledger_id
2165 , p_sla_ledger_id
2166 , p_language
2167 , object_name
2168 , object_type_code
2169 , line_number
2170 , source_application_id
2171 , source_type_code
2172 , source_code
2173 , SUBSTR(source_value,1,1996)
2174 , SUBSTR(source_meaning ,1,200)
2175 , xla_environment_pkg.g_Usr_Id
2176 , TRUNC(SYSDATE)
2177 , TRUNC(SYSDATE)
2178 , xla_environment_pkg.g_Usr_Id
2179 , xla_environment_pkg.g_Login_Id
2180 , TRUNC(SYSDATE)
2181 , xla_environment_pkg.g_Prog_Appl_Id
2182 , xla_environment_pkg.g_Prog_Id
2183 , xla_environment_pkg.g_Req_Id
2184 FROM (
2185 SELECT xet.event_id event_id
2186 , l2.line_number line_number
2187 , CASE r
2188 WHEN 1 THEN 'PA_XLA_BC_BUDGET_LINES_V'
2189 WHEN 2 THEN 'PA_XLA_BC_BUDGET_LINES_V'
2190 WHEN 3 THEN 'PA_XLA_BC_BUDGET_LINES_V'
2191 WHEN 4 THEN 'PA_XLA_BC_BUDGET_LINES_V'
2192 WHEN 5 THEN 'PA_XLA_BC_BUDGET_LINES_V'
2193 WHEN 6 THEN 'PA_XLA_BC_BUDGET_LINES_V'
2194 WHEN 7 THEN 'PA_XLA_BC_BUDGET_LINES_V'
2195 WHEN 8 THEN 'PA_XLA_BC_BUDGET_LINES_V'
2196 WHEN 9 THEN 'PA_XLA_BC_BUDGET_LINES_V'
2197 WHEN 10 THEN 'PA_XLA_BC_BUDGET_LINES_V'
2198 WHEN 11 THEN 'PA_XLA_BC_BUDGET_LINES_V'
2199 WHEN 12 THEN 'PA_XLA_BC_BUDGET_LINES_V'
2200 WHEN 13 THEN 'PA_XLA_BC_BUDGET_LINES_V'
2201
2202 ELSE null
2203 END object_name
2204 , CASE r
2205 WHEN 1 THEN 'LINE'
2206 WHEN 2 THEN 'LINE'
2207 WHEN 3 THEN 'LINE'
2208 WHEN 4 THEN 'LINE'
2209 WHEN 5 THEN 'LINE'
2210 WHEN 6 THEN 'LINE'
2211 WHEN 7 THEN 'LINE'
2212 WHEN 8 THEN 'LINE'
2213 WHEN 9 THEN 'LINE'
2214 WHEN 10 THEN 'LINE'
2215 WHEN 11 THEN 'LINE'
2216 WHEN 12 THEN 'LINE'
2217 WHEN 13 THEN 'LINE'
2218
2219 ELSE null
2220 END object_type_code
2221 , CASE r
2222 WHEN 1 THEN '275'
2223 WHEN 2 THEN '275'
2224 WHEN 3 THEN '275'
2225 WHEN 4 THEN '275'
2226 WHEN 5 THEN '275'
2227 WHEN 6 THEN '275'
2228 WHEN 7 THEN '275'
2229 WHEN 8 THEN '275'
2230 WHEN 9 THEN '275'
2231 WHEN 10 THEN '275'
2232 WHEN 11 THEN '275'
2233 WHEN 12 THEN '275'
2234 WHEN 13 THEN '275'
2235
2236 ELSE null
2237 END source_application_id
2238 , 'S' source_type_code
2239 , CASE r
2240 WHEN 1 THEN 'BUDGET_CCID'
2241 WHEN 2 THEN 'REVERSING_LINE_FLAG'
2242 WHEN 3 THEN 'BUDGET_LINE_ID'
2243 WHEN 4 THEN 'LINE_TYPE'
2244 WHEN 5 THEN 'ENC_UPG_DR_ACCT_CLASS'
2245 WHEN 6 THEN 'ENTERED_AMOUNT'
2246 WHEN 7 THEN 'ENTERED_CURRENCY_CODE'
2247 WHEN 8 THEN 'ACCT_AMOUNT'
2248 WHEN 9 THEN 'USE_ENC_UPG_ATTRIB_FLAG'
2249 WHEN 10 THEN 'EXCHANGE_RATE_DATE'
2250 WHEN 11 THEN 'EXCHANGE_RATE'
2251 WHEN 12 THEN 'EXCHANGE_RATE_TYPE'
2252 WHEN 13 THEN 'ENC_UPG_ENC_TYPE_ID'
2253
2254 ELSE null
2255 END source_code
2256 , CASE r
2257 WHEN 1 THEN TO_CHAR(l2.BUDGET_CCID)
2258 WHEN 2 THEN TO_CHAR(l2.REVERSING_LINE_FLAG)
2259 WHEN 3 THEN TO_CHAR(l2.BUDGET_LINE_ID)
2260 WHEN 4 THEN TO_CHAR(l2.LINE_TYPE)
2261 WHEN 5 THEN TO_CHAR(l2.ENC_UPG_DR_ACCT_CLASS)
2262 WHEN 6 THEN TO_CHAR(l2.ENTERED_AMOUNT)
2266 WHEN 10 THEN TO_CHAR(l2.EXCHANGE_RATE_DATE)
2263 WHEN 7 THEN TO_CHAR(l2.ENTERED_CURRENCY_CODE)
2264 WHEN 8 THEN TO_CHAR(l2.ACCT_AMOUNT)
2265 WHEN 9 THEN TO_CHAR(l2.USE_ENC_UPG_ATTRIB_FLAG)
2267 WHEN 11 THEN TO_CHAR(l2.EXCHANGE_RATE)
2268 WHEN 12 THEN TO_CHAR(l2.EXCHANGE_RATE_TYPE)
2269 WHEN 13 THEN TO_CHAR(l2.ENC_UPG_ENC_TYPE_ID)
2270
2271 ELSE null
2272 END source_value
2273 , CASE r
2274 WHEN 4 THEN fvl6.meaning
2275
2276 ELSE null
2277 END source_meaning
2278 FROM xla_events_gt xet
2279 , PA_XLA_BC_BUDGET_LINES_V l2
2280 , fnd_lookup_values fvl6
2281 , (select rownum r from all_objects where rownum <= 13 and owner = p_apps_owner)
2282 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
2283 AND xet.event_class_code = C_EVENT_CLASS_CODE
2284 AND l2.event_id = xet.event_id
2285 AND fvl6.lookup_type(+) = 'COST DISTRIBUTION LINE TYPE'
2286 AND fvl6.lookup_code(+) = l2.LINE_TYPE
2287 AND fvl6.view_application_id(+) = 275
2288 AND fvl6.language(+) = USERENV('LANG')
2289
2290 )
2291 ;
2292 --
2293 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2294
2295 trace
2296 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
2297 ,p_level => C_LEVEL_STATEMENT
2298 ,p_module => l_log_module);
2299
2300 END IF;
2301
2302
2303 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2304 trace
2305 (p_msg => 'END of insert_sources_5'
2306 ,p_level => C_LEVEL_PROCEDURE
2307 ,p_module => l_log_module);
2308 END IF;
2309 EXCEPTION
2310 WHEN xla_exceptions_pkg.application_exception THEN
2311 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2312 trace
2313 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
2314 ,p_level => C_LEVEL_EXCEPTION
2315 ,p_module => l_log_module);
2316 END IF;
2317 RAISE;
2318 WHEN OTHERS THEN
2319 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2320 trace
2321 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
2322 ,p_level => C_LEVEL_EXCEPTION
2323 ,p_module => l_log_module);
2324 END IF;
2325 xla_exceptions_pkg.raise_message
2326 (p_location => 'XLA_00275_AAD_S_000004_BC_PKG.insert_sources_5');
2327 END insert_sources_5;
2328 --
2329
2330 ---------------------------------------
2331 --
2332 -- PRIVATE FUNCTION
2333 -- EventClass_5
2334 --
2335 ----------------------------------------
2336 --
2337 FUNCTION EventClass_5
2338 (p_application_id IN NUMBER
2339 ,p_base_ledger_id IN NUMBER
2340 ,p_target_ledger_id IN NUMBER
2341 ,p_language IN VARCHAR2
2342 ,p_currency_code IN VARCHAR2
2343 ,p_sla_ledger_id IN NUMBER
2344 ,p_pad_start_date IN DATE
2345 ,p_pad_end_date IN DATE
2346 ,p_primary_ledger_id IN NUMBER)
2347 RETURN BOOLEAN IS
2348 --
2349 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'BUDGET_ALL';
2350 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'BUDGET';
2351
2352 l_calculate_acctd_flag VARCHAR2(1) :='N';
2353 l_calculate_g_l_flag VARCHAR2(1) :='N';
2354 --
2355 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
2356 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
2357 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
2358 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
2359 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
2360 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
2361 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
2362 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
2363 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
2364 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
2365 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
2366 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
2367 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
2368 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
2369 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
2370 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
2371 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
2372 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
2373 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
2374 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
2375 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
2376 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
2377 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
2381 l_previous_event_id NUMBER;
2378 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
2379
2380 l_event_id NUMBER;
2382 l_first_event_id NUMBER;
2383 l_last_event_id NUMBER;
2384
2385 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
2386 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
2387 --
2388 --
2389 l_result BOOLEAN := TRUE;
2390 l_rows NUMBER := 1000;
2391 l_event_type_name VARCHAR2(80) := 'All';
2392 l_event_class_name VARCHAR2(80) := 'Budget';
2393 l_description VARCHAR2(4000);
2394 l_transaction_reversal NUMBER;
2395 l_ae_header_id NUMBER;
2396 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
2397 l_log_module VARCHAR2(240);
2398 --
2399 l_acct_reversal_source VARCHAR2(30);
2400 l_trx_reversal_source VARCHAR2(30);
2401
2402 l_continue_with_lines BOOLEAN := TRUE;
2403 --
2404 l_acc_rev_gl_date_source DATE; -- 4262811
2405 --
2406 type t_array_event_id is table of number index by binary_integer;
2407
2408 l_rec_array_event t_rec_array_event;
2409 l_null_rec_array_event t_rec_array_event;
2410 l_array_ae_header_id xla_number_array_type;
2411 l_actual_flag VARCHAR2(1) := NULL;
2412 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
2413 l_balance_type_code VARCHAR2(1) :=NULL;
2414 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
2415
2416 --
2417 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
2418 --
2419
2420 TYPE t_array_source_2 IS TABLE OF PA_XLA_BC_BUDGET_HEADER_V.BUDGET_AMOUNT_CODE%TYPE INDEX BY BINARY_INTEGER;
2421 TYPE t_array_source_3 IS TABLE OF PA_XLA_BC_BUDGET_HEADER_V.BC_BALANCE_TYPE%TYPE INDEX BY BINARY_INTEGER;
2422 TYPE t_array_source_16 IS TABLE OF PA_XLA_BC_BUDGET_HEADER_V.EXTERNAL_BUDGET_CODE%TYPE INDEX BY BINARY_INTEGER;
2423 TYPE t_array_source_17 IS TABLE OF PA_XLA_BC_BUDGET_HEADER_V.GL_BUDGET_VERSION_ID%TYPE INDEX BY BINARY_INTEGER;
2424 TYPE t_array_source_18 IS TABLE OF PA_XLA_BC_BUDGET_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
2425
2426 TYPE t_array_source_1 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.BUDGET_CCID%TYPE INDEX BY BINARY_INTEGER;
2427 TYPE t_array_source_4 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
2428 TYPE t_array_source_5 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.BUDGET_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
2429 TYPE t_array_source_6 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
2430 TYPE t_array_source_7 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.ENC_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
2431 TYPE t_array_source_8 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
2432 TYPE t_array_source_9 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
2433 TYPE t_array_source_10 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.ACCT_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
2434 TYPE t_array_source_11 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.USE_ENC_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
2435 TYPE t_array_source_12 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
2436 TYPE t_array_source_13 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
2437 TYPE t_array_source_14 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
2438 TYPE t_array_source_15 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.ENC_UPG_ENC_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
2439
2440 l_array_source_2 t_array_source_2;
2441 l_array_source_3 t_array_source_3;
2442 l_array_source_16 t_array_source_16;
2443 l_array_source_17 t_array_source_17;
2444 l_array_source_18 t_array_source_18;
2445
2446 l_array_source_1 t_array_source_1;
2447 l_array_source_4 t_array_source_4;
2448 l_array_source_5 t_array_source_5;
2449 l_array_source_6 t_array_source_6;
2450 l_array_source_6_meaning t_array_lookup_meaning;
2451 l_array_source_7 t_array_source_7;
2452 l_array_source_8 t_array_source_8;
2453 l_array_source_9 t_array_source_9;
2454 l_array_source_10 t_array_source_10;
2455 l_array_source_11 t_array_source_11;
2456 l_array_source_12 t_array_source_12;
2457 l_array_source_13 t_array_source_13;
2458 l_array_source_14 t_array_source_14;
2459 l_array_source_15 t_array_source_15;
2460
2461 --
2462 CURSOR header_cur
2463 IS
2464 SELECT /*+ leading(xet) cardinality(xet,1) */
2465 -- Event Class Code: BUDGET
2466 xet.entity_id
2467 ,xet.legal_entity_id
2468 ,xet.entity_code
2469 ,xet.transaction_number
2470 ,xet.event_id
2471 ,xet.event_class_code
2472 ,xet.event_type_code
2473 ,xet.event_number
2474 ,xet.event_date
2475 ,xet.transaction_date
2476 ,xet.reference_num_1
2477 ,xet.reference_num_2
2478 ,xet.reference_num_3
2479 ,xet.reference_num_4
2480 ,xet.reference_char_1
2481 ,xet.reference_char_2
2482 ,xet.reference_char_3
2483 ,xet.reference_char_4
2484 ,xet.reference_date_1
2485 ,xet.reference_date_2
2486 ,xet.reference_date_3
2487 ,xet.reference_date_4
2488 ,xet.event_created_by
2489 ,xet.budgetary_control_flag
2490 , h1.BUDGET_AMOUNT_CODE source_2
2491 , h1.BC_BALANCE_TYPE source_3
2495 FROM xla_events_gt xet
2492 , h1.EXTERNAL_BUDGET_CODE source_16
2493 , h1.GL_BUDGET_VERSION_ID source_17
2494 , h1.GL_DATE source_18
2496 , PA_XLA_BC_BUDGET_HEADER_V h1
2497 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
2498 and xet.event_class_code = C_EVENT_CLASS_CODE
2499 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
2500
2501 ORDER BY event_id
2502 ;
2503
2504
2505 --
2506 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
2507 IS
2508 SELECT /*+ leading(xet) cardinality(xet,1) */
2509 -- Event Class Code: BUDGET
2510 xet.entity_id
2511 ,xet.legal_entity_id
2512 ,xet.entity_code
2513 ,xet.transaction_number
2514 ,xet.event_id
2515 ,xet.event_class_code
2516 ,xet.event_type_code
2517 ,xet.event_number
2518 ,xet.event_date
2519 ,xet.transaction_date
2520 ,xet.reference_num_1
2521 ,xet.reference_num_2
2522 ,xet.reference_num_3
2523 ,xet.reference_num_4
2524 ,xet.reference_char_1
2525 ,xet.reference_char_2
2526 ,xet.reference_char_3
2527 ,xet.reference_char_4
2528 ,xet.reference_date_1
2529 ,xet.reference_date_2
2530 ,xet.reference_date_3
2531 ,xet.reference_date_4
2532 ,xet.event_created_by
2533 ,xet.budgetary_control_flag
2534 , l2.LINE_NUMBER
2535 , l2.BUDGET_CCID source_1
2536 , l2.REVERSING_LINE_FLAG source_4
2537 , l2.BUDGET_LINE_ID source_5
2538 , l2.LINE_TYPE source_6
2539 , fvl6.meaning source_6_meaning
2540 , l2.ENC_UPG_DR_ACCT_CLASS source_7
2541 , l2.ENTERED_AMOUNT source_8
2542 , l2.ENTERED_CURRENCY_CODE source_9
2543 , l2.ACCT_AMOUNT source_10
2544 , l2.USE_ENC_UPG_ATTRIB_FLAG source_11
2545 , l2.EXCHANGE_RATE_DATE source_12
2546 , l2.EXCHANGE_RATE source_13
2547 , l2.EXCHANGE_RATE_TYPE source_14
2548 , l2.ENC_UPG_ENC_TYPE_ID source_15
2549 FROM xla_events_gt xet
2550 , PA_XLA_BC_BUDGET_LINES_V l2
2551 , fnd_lookup_values fvl6
2552 WHERE xet.event_id between x_first_event_id and x_last_event_id
2553 and xet.event_date between p_pad_start_date and p_pad_end_date
2554 and xet.event_class_code = C_EVENT_CLASS_CODE
2555 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
2556 AND fvl6.lookup_type(+) = 'COST DISTRIBUTION LINE TYPE'
2557 AND fvl6.lookup_code(+) = l2.LINE_TYPE
2558 AND fvl6.view_application_id(+) = 275
2559 AND fvl6.language(+) = USERENV('LANG')
2560 ;
2561
2562 --
2563 BEGIN
2564 IF g_log_enabled THEN
2565 l_log_module := C_DEFAULT_MODULE||'.EventClass_5';
2566 END IF;
2567 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2568 trace
2569 (p_msg => 'BEGIN of EventClass_5'
2570 ,p_level => C_LEVEL_PROCEDURE
2571 ,p_module => l_log_module);
2572 END IF;
2573
2574 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2575 trace
2576 (p_msg => 'p_application_id = '||p_application_id||
2577 ' - p_base_ledger_id = '||p_base_ledger_id||
2578 ' - p_target_ledger_id = '||p_target_ledger_id||
2579 ' - p_language = '||p_language||
2580 ' - p_currency_code = '||p_currency_code||
2581 ' - p_sla_ledger_id = '||p_sla_ledger_id
2582 ,p_level => C_LEVEL_STATEMENT
2583 ,p_module => l_log_module);
2584 END IF;
2585 --
2586 -- initialze arrays
2587 --
2588 g_array_event.DELETE;
2589 l_rec_array_event := l_null_rec_array_event;
2590 --
2591 --------------------------------------
2592 -- 4262811 Initialze MPA Line Number
2593 --------------------------------------
2594 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
2595
2596 --
2597
2598 --
2599 OPEN header_cur;
2600 --
2601 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2602 trace
2603 (p_msg => 'SQL - FETCH header_cur'
2604 ,p_level => C_LEVEL_STATEMENT
2605 ,p_module => l_log_module);
2606 END IF;
2607 --
2608 LOOP
2609 FETCH header_cur BULK COLLECT INTO
2610 l_array_entity_id
2611 , l_array_legal_entity_id
2612 , l_array_entity_code
2613 , l_array_transaction_num
2614 , l_array_event_id
2615 , l_array_class_code
2616 , l_array_event_type
2617 , l_array_event_number
2618 , l_array_event_date
2619 , l_array_transaction_date
2620 , l_array_reference_num_1
2621 , l_array_reference_num_2
2622 , l_array_reference_num_3
2623 , l_array_reference_num_4
2624 , l_array_reference_char_1
2625 , l_array_reference_char_2
2626 , l_array_reference_char_3
2627 , l_array_reference_char_4
2628 , l_array_reference_date_1
2629 , l_array_reference_date_2
2630 , l_array_reference_date_3
2631 , l_array_reference_date_4
2632 , l_array_event_created_by
2633 , l_array_budgetary_control_flag
2634 , l_array_source_2
2635 , l_array_source_3
2636 , l_array_source_16
2637 , l_array_source_17
2638 , l_array_source_18
2639 LIMIT l_rows;
2640 --
2641 IF (C_LEVEL_EVENT >= g_log_level) THEN
2642 trace
2643 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
2647 --
2644 ,p_level => C_LEVEL_EVENT
2645 ,p_module => l_log_module);
2646 END IF;
2648 EXIT WHEN l_array_entity_id.COUNT = 0;
2649
2650 -- initialize arrays
2651 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
2652 XLA_AE_LINES_PKG.g_rec_lines := NULL;
2653
2654 --
2655 -- Bug 4458708
2656 --
2657 XLA_AE_LINES_PKG.g_LineNumber := 0;
2658
2659
2660 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
2661 g_last_hdr_idx := l_array_event_id.LAST;
2662 --
2663 -- loop for the headers. Each iteration is for each header extract row
2664 -- fetched in header cursor
2665 --
2666 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
2667
2668 --
2669 -- set event info as cache for other routines to refer event attributes
2670 --
2671 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
2672 (p_application_id => p_application_id
2673 ,p_primary_ledger_id => p_primary_ledger_id
2674 ,p_base_ledger_id => p_base_ledger_id
2675 ,p_target_ledger_id => p_target_ledger_id
2676 ,p_entity_id => l_array_entity_id(hdr_idx)
2677 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
2678 ,p_entity_code => l_array_entity_code(hdr_idx)
2679 ,p_transaction_num => l_array_transaction_num(hdr_idx)
2680 ,p_event_id => l_array_event_id(hdr_idx)
2681 ,p_event_class_code => l_array_class_code(hdr_idx)
2682 ,p_event_type_code => l_array_event_type(hdr_idx)
2683 ,p_event_number => l_array_event_number(hdr_idx)
2684 ,p_event_date => l_array_event_date(hdr_idx)
2685 ,p_transaction_date => l_array_transaction_date(hdr_idx)
2686 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
2687 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
2688 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
2689 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
2690 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
2691 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
2692 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
2693 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
2694 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
2695 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
2696 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
2697 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
2698 ,p_event_created_by => l_array_event_created_by(hdr_idx)
2699 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
2700
2701 --
2702 -- set the status of entry to C_VALID (0)
2703 --
2704 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
2705
2706 --
2707 -- initialize a row for ae header
2708 --
2709 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
2710
2711 l_event_id := l_array_event_id(hdr_idx);
2712
2713 --
2714 -- storing the hdr_idx for event. May be used by line cursor.
2715 --
2716 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
2717
2718 --
2719 -- store sources from header extract. This can be improved to
2720 -- store only those sources from header extract that may be used in lines
2721 --
2722
2723 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
2724 g_array_event(l_event_id).array_value_char('source_3') := l_array_source_3(hdr_idx);
2725 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
2726 g_array_event(l_event_id).array_value_num('source_17') := l_array_source_17(hdr_idx);
2727 g_array_event(l_event_id).array_value_date('source_18') := l_array_source_18(hdr_idx);
2728
2729 --
2730 -- initilaize the status of ae headers for diffrent balance types
2731 -- the status is initialised to C_NOT_CREATED (2)
2732 --
2733 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
2734 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
2735 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
2736
2737 --
2738 -- call api to validate and store accounting attributes for header
2739 --
2740
2741 ------------------------------------------------------------
2742 -- Accrual Reversal : to get date for Standard Source (NONE)
2743 ------------------------------------------------------------
2744 l_acc_rev_gl_date_source := NULL;
2745
2746 l_rec_acct_attrs.array_acct_attr_code(1) := 'BUDGET_VERSION_ID';
2747 l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_17');
2748 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_DATE';
2749 l_rec_acct_attrs.array_date_value(2) := g_array_event(l_event_id).array_value_date('source_18');
2750
2751
2752 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
2753
2754 XLA_AE_HEADER_PKG.SetJeCategoryName;
2755
2756 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
2757 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
2758 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
2762
2759 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
2760 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
2761
2763 -- No header level analytical criteria
2764
2765 --
2766 --accounting attribute enhancement, bug 3612931
2767 --
2768 l_trx_reversal_source := SUBSTR(NULL, 1,30);
2769
2770 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
2771 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
2772
2773 xla_accounting_err_pkg.build_message
2774 (p_appli_s_name => 'XLA'
2775 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
2776 ,p_token_1 => 'ACCT_ATTR_NAME'
2777 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
2778 ,p_token_2 => 'PRODUCT_NAME'
2779 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
2780 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2781 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
2782 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
2783
2784 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
2785 --
2786 -- following sets the accounting attributes needed to reverse
2787 -- accounting for a distributeion
2788 --
2789 xla_ae_lines_pkg.SetTrxReversalAttrs
2790 (p_event_id => l_event_id
2791 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
2792 ,p_trx_reversal_source => l_trx_reversal_source);
2793
2794 END IF;
2795
2796
2797 ----------------------------------------------------------------
2798 -- 4262811 - update the header statuses to invalid in need be
2799 ----------------------------------------------------------------
2800 --
2801 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
2802
2803
2804 -----------------------------------------------
2805 -- No accrual reversal for the event class/type
2806 -----------------------------------------------
2807 ----------------------------------------------------------------
2808
2809 --
2810 -- this ends the header loop iteration for one bulk fetch
2811 --
2812 END LOOP;
2813
2814 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
2815 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
2816
2817 --
2818 -- insert dummy rows into lines gt table that were created due to
2819 -- transaction reversals
2820 --
2821 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
2822 l_result := XLA_AE_LINES_PKG.InsertLines;
2823 END IF;
2824
2825 --
2826 -- reset the temp_line_num for each set of events fetched from header
2827 -- cursor rather than doing it for each new event in line cursor
2828 -- Bug 3939231
2829 --
2830 xla_ae_lines_pkg.g_temp_line_num := 0;
2831
2832
2833
2834 --
2835 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
2836 --
2837 --
2838 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2839
2840 trace
2841 (p_msg => 'SQL - FETCH line_cur'
2842 ,p_level => C_LEVEL_STATEMENT
2843 ,p_module => l_log_module);
2844
2845 END IF;
2846 --
2847 --
2848 LOOP
2849 --
2850 FETCH line_cur BULK COLLECT INTO
2851 l_array_entity_id
2852 , l_array_legal_entity_id
2853 , l_array_entity_code
2854 , l_array_transaction_num
2855 , l_array_event_id
2856 , l_array_class_code
2857 , l_array_event_type
2858 , l_array_event_number
2859 , l_array_event_date
2860 , l_array_transaction_date
2861 , l_array_reference_num_1
2862 , l_array_reference_num_2
2863 , l_array_reference_num_3
2864 , l_array_reference_num_4
2865 , l_array_reference_char_1
2866 , l_array_reference_char_2
2867 , l_array_reference_char_3
2868 , l_array_reference_char_4
2869 , l_array_reference_date_1
2870 , l_array_reference_date_2
2871 , l_array_reference_date_3
2872 , l_array_reference_date_4
2873 , l_array_event_created_by
2874 , l_array_budgetary_control_flag
2875 , l_array_extract_line_num
2876 , l_array_source_1
2877 , l_array_source_4
2878 , l_array_source_5
2879 , l_array_source_6
2880 , l_array_source_6_meaning
2881 , l_array_source_7
2882 , l_array_source_8
2883 , l_array_source_9
2884 , l_array_source_10
2885 , l_array_source_11
2886 , l_array_source_12
2887 , l_array_source_13
2888 , l_array_source_14
2889 , l_array_source_15
2890 LIMIT l_rows;
2891
2892 --
2893 IF (C_LEVEL_EVENT >= g_log_level) THEN
2894 trace
2895 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
2896 ,p_level => C_LEVEL_EVENT
2897 ,p_module => l_log_module);
2898 END IF;
2899 --
2900 EXIT WHEN l_array_entity_id.count = 0;
2901
2902 XLA_AE_LINES_PKG.g_rec_lines := null;
2903
2904 --
2908 --
2905 -- Bug 4458708
2906 --
2907 XLA_AE_LINES_PKG.g_LineNumber := 0;
2909 --
2910
2911 FOR Idx IN 1..l_array_event_id.count LOOP
2912 --
2913 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
2914 --
2915 l_event_id := l_array_event_id(idx); -- 5648433
2916
2917 --
2918 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
2919 --
2920
2921 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
2922 (g_array_event(l_event_id).array_value_num('header_index'))
2923 ,'N'
2924 ) <> 'Y'
2925 THEN
2926 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2927 trace
2928 (p_msg => 'Trancaction revesal option is not Y '
2929 ,p_level => C_LEVEL_STATEMENT
2930 ,p_module => l_log_module);
2931 END IF;
2932
2933 --
2934 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
2935 --
2936 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
2937 --
2938 -- set event info as cache for other routines to refer event attributes
2939 --
2940
2941 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
2942 l_previous_event_id := l_event_id;
2943
2944 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
2945 (p_application_id => p_application_id
2946 ,p_primary_ledger_id => p_primary_ledger_id
2947 ,p_base_ledger_id => p_base_ledger_id
2948 ,p_target_ledger_id => p_target_ledger_id
2949 ,p_entity_id => l_array_entity_id(Idx)
2950 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
2951 ,p_entity_code => l_array_entity_code(Idx)
2952 ,p_transaction_num => l_array_transaction_num(Idx)
2953 ,p_event_id => l_array_event_id(Idx)
2954 ,p_event_class_code => l_array_class_code(Idx)
2955 ,p_event_type_code => l_array_event_type(Idx)
2956 ,p_event_number => l_array_event_number(Idx)
2957 ,p_event_date => l_array_event_date(Idx)
2958 ,p_transaction_date => l_array_transaction_date(Idx)
2959 ,p_reference_num_1 => l_array_reference_num_1(Idx)
2960 ,p_reference_num_2 => l_array_reference_num_2(Idx)
2961 ,p_reference_num_3 => l_array_reference_num_3(Idx)
2962 ,p_reference_num_4 => l_array_reference_num_4(Idx)
2963 ,p_reference_char_1 => l_array_reference_char_1(Idx)
2964 ,p_reference_char_2 => l_array_reference_char_2(Idx)
2965 ,p_reference_char_3 => l_array_reference_char_3(Idx)
2966 ,p_reference_char_4 => l_array_reference_char_4(Idx)
2967 ,p_reference_date_1 => l_array_reference_date_1(Idx)
2968 ,p_reference_date_2 => l_array_reference_date_2(Idx)
2969 ,p_reference_date_3 => l_array_reference_date_3(Idx)
2970 ,p_reference_date_4 => l_array_reference_date_4(Idx)
2971 ,p_event_created_by => l_array_event_created_by(Idx)
2972 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
2973 --
2974 END IF;
2975
2976
2977
2978 --
2979 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
2980
2981 l_acct_reversal_source := SUBSTR(l_array_source_4(Idx), 1,30);
2982
2983 IF l_continue_with_lines THEN
2984 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
2985 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
2986
2987 xla_accounting_err_pkg.build_message
2988 (p_appli_s_name => 'XLA'
2989 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
2990 ,p_token_1 => 'LINE_NUMBER'
2991 ,p_value_1 => l_array_extract_line_num(Idx)
2992 ,p_token_2 => 'PRODUCT_NAME'
2993 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
2994 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2995 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
2996 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
2997
2998 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
2999 --
3000 -- following sets the accounting attributes needed to reverse
3001 -- accounting for a distributeion
3002 --
3003
3004 --
3005 -- 5217187
3006 --
3007 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
3008 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
3009 g_array_event(l_event_id).array_value_num('header_index'));
3010 --
3011 --
3012
3013 l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
3014 l_rec_rev_acct_attrs.array_char_value(2) := l_array_source_4(Idx);
3015 l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
3016 l_rec_rev_acct_attrs.array_num_value(3) := l_array_source_5(Idx);
3017 l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
3018 l_rec_rev_acct_attrs.array_char_value(4) := l_array_source_6(Idx);
3022 l_rec_rev_acct_attrs.array_num_value(6) := l_array_source_1(Idx);
3019 l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ENC_UPG_DR_ACCT_CLASS';
3020 l_rec_rev_acct_attrs.array_char_value(5) := l_array_source_7(Idx);
3021 l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ENC_UPG_DR_CCID';
3023 l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ENC_UPG_DR_ENTERED_AMT';
3024 l_rec_rev_acct_attrs.array_num_value(7) := l_array_source_8(Idx);
3025 l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_DR_ENTERED_CURR';
3026 l_rec_rev_acct_attrs.array_char_value(8) := l_array_source_9(Idx);
3027 l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_DR_LEDGER_AMT';
3028 l_rec_rev_acct_attrs.array_num_value(9) := l_array_source_10(Idx);
3029 l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_OPTION';
3030 l_rec_rev_acct_attrs.array_char_value(10) := l_array_source_11(Idx);
3031 l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID1';
3032 l_rec_rev_acct_attrs.array_num_value(11) := l_array_source_5(Idx);
3033 l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
3034 l_rec_rev_acct_attrs.array_char_value(12) := l_array_source_6(Idx);
3035 l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'UPG_DR_ENC_TYPE_ID';
3036 l_rec_rev_acct_attrs.array_num_value(13) := l_array_source_15(Idx);
3037
3038
3039 xla_ae_lines_pkg.SetAcctReversalAttrs
3040 (p_event_id => l_event_id
3041 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
3042 ,p_calculate_acctd_flag => l_calculate_acctd_flag
3043 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
3044 END IF;
3045
3046 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
3047 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
3048
3049 --
3050 AcctLineType_2 (
3051 p_application_id => p_application_id
3052 ,p_event_id => l_event_id
3053 ,p_calculate_acctd_flag => l_calculate_acctd_flag
3054 ,p_calculate_g_l_flag => l_calculate_g_l_flag
3055 ,p_actual_flag => l_actual_flag
3056 ,p_balance_type_code => l_balance_type_code
3057 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
3058
3059 , p_source_1 => l_array_source_1(Idx)
3060 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
3061 , p_source_3 => g_array_event(l_event_id).array_value_char('source_3')
3062 , p_source_4 => l_array_source_4(Idx)
3063 , p_source_5 => l_array_source_5(Idx)
3064 , p_source_6 => l_array_source_6(Idx)
3065 , p_source_6_meaning => l_array_source_6_meaning(Idx)
3066 , p_source_7 => l_array_source_7(Idx)
3067 , p_source_8 => l_array_source_8(Idx)
3068 , p_source_9 => l_array_source_9(Idx)
3069 , p_source_10 => l_array_source_10(Idx)
3070 , p_source_11 => l_array_source_11(Idx)
3071 , p_source_12 => l_array_source_12(Idx)
3072 , p_source_13 => l_array_source_13(Idx)
3073 , p_source_14 => l_array_source_14(Idx)
3074 , p_source_15 => l_array_source_15(Idx)
3075 );
3076 If(l_balance_type_code = 'A') THEN
3077 l_actual_gain_loss_ref := l_gain_or_loss_ref;
3078 END IF;
3079
3080 --
3081
3082
3083 --
3084 AcctLineType_3 (
3085 p_application_id => p_application_id
3086 ,p_event_id => l_event_id
3087 ,p_calculate_acctd_flag => l_calculate_acctd_flag
3088 ,p_calculate_g_l_flag => l_calculate_g_l_flag
3089 ,p_actual_flag => l_actual_flag
3090 ,p_balance_type_code => l_balance_type_code
3091 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
3092
3093 , p_source_1 => l_array_source_1(Idx)
3094 , p_source_3 => g_array_event(l_event_id).array_value_char('source_3')
3095 , p_source_4 => l_array_source_4(Idx)
3096 , p_source_5 => l_array_source_5(Idx)
3097 , p_source_6 => l_array_source_6(Idx)
3098 , p_source_6_meaning => l_array_source_6_meaning(Idx)
3099 , p_source_7 => l_array_source_7(Idx)
3100 , p_source_8 => l_array_source_8(Idx)
3101 , p_source_9 => l_array_source_9(Idx)
3102 , p_source_10 => l_array_source_10(Idx)
3103 , p_source_11 => l_array_source_11(Idx)
3104 , p_source_12 => l_array_source_12(Idx)
3105 , p_source_13 => l_array_source_13(Idx)
3106 , p_source_14 => l_array_source_14(Idx)
3107 , p_source_15 => l_array_source_15(Idx)
3108 , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
3109 );
3110 If(l_balance_type_code = 'A') THEN
3111 l_actual_gain_loss_ref := l_gain_or_loss_ref;
3112 END IF;
3113
3114 --
3115
3116
3117 --
3118 AcctLineType_4 (
3119 p_application_id => p_application_id
3120 ,p_event_id => l_event_id
3121 ,p_calculate_acctd_flag => l_calculate_acctd_flag
3122 ,p_calculate_g_l_flag => l_calculate_g_l_flag
3123 ,p_actual_flag => l_actual_flag
3124 ,p_balance_type_code => l_balance_type_code
3125 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
3126
3127 , p_source_1 => l_array_source_1(Idx)
3128 , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
3129 , p_source_4 => l_array_source_4(Idx)
3130 , p_source_5 => l_array_source_5(Idx)
3131 , p_source_6 => l_array_source_6(Idx)
3132 , p_source_6_meaning => l_array_source_6_meaning(Idx)
3133 , p_source_7 => l_array_source_7(Idx)
3134 , p_source_8 => l_array_source_8(Idx)
3135 , p_source_9 => l_array_source_9(Idx)
3136 , p_source_10 => l_array_source_10(Idx)
3137 , p_source_11 => l_array_source_11(Idx)
3138 , p_source_12 => l_array_source_12(Idx)
3139 , p_source_13 => l_array_source_13(Idx)
3140 , p_source_14 => l_array_source_14(Idx)
3144 l_actual_gain_loss_ref := l_gain_or_loss_ref;
3141 , p_source_15 => l_array_source_15(Idx)
3142 );
3143 If(l_balance_type_code = 'A') THEN
3145 END IF;
3146
3147 --
3148
3149 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
3150 -- or secondary ledger that has different currency with primary
3151 -- or alc that is calculated by sla
3152 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
3153 (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'))
3154
3155 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
3156 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
3157 AND (l_actual_flag = 'A')) THEN
3158 XLA_AE_LINES_PKG.CreateGainOrLossLines(
3159 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
3160 ,p_application_id => p_application_id
3161 ,p_amb_context_code => 'DEFAULT'
3162 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
3163 ,p_event_class_code => C_EVENT_CLASS_CODE
3164 ,p_event_type_code => C_EVENT_TYPE_CODE
3165
3166 ,p_gain_ccid => -1
3167 ,p_loss_ccid => -1
3168
3169 ,p_actual_flag => l_actual_flag
3170 ,p_enc_flag => null
3171 ,p_actual_g_l_ref => l_actual_gain_loss_ref
3172 ,p_enc_g_l_ref => null
3173 );
3174 END IF;
3175 END IF;
3176 END IF;
3177
3178 ELSE
3179 --
3180 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
3181 --
3182 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3183 trace
3184 (p_msg => 'Trancaction revesal option is Y'
3185 ,p_level => C_LEVEL_STATEMENT
3186 ,p_module => l_log_module);
3187 END IF;
3188 END IF;
3189
3190 END LOOP;
3191 l_result := XLA_AE_LINES_PKG.InsertLines ;
3192 end loop;
3193 close line_cur;
3194
3195
3196 --
3197 -- insert headers into xla_ae_headers_gt table
3198 --
3199 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
3200
3201 -- insert into errors table here.
3202
3203 END LOOP;
3204
3205 --
3206 -- 4865292
3207 --
3208 -- Compare g_hdr_extract_count with event count in
3209 -- CreateHeadersAndLines.
3210 --
3211 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
3212
3213 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3214 trace (p_msg => '# rows extracted from header extract objects '
3215 || ' (running total): '
3216 || g_hdr_extract_count
3217 ,p_level => C_LEVEL_STATEMENT
3218 ,p_module => l_log_module);
3219 END IF;
3220
3221 CLOSE header_cur;
3222 --
3223
3224 --
3225 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3226 trace
3227 (p_msg => 'END of EventClass_5'
3228 ,p_level => C_LEVEL_PROCEDURE
3229 ,p_module => l_log_module);
3230 END IF;
3231 --
3232 RETURN l_result;
3233 EXCEPTION
3234 WHEN xla_exceptions_pkg.application_exception THEN
3235
3236 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
3237
3238
3239 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
3240
3241 RAISE;
3242 WHEN OTHERS THEN
3243 xla_exceptions_pkg.raise_message
3244 (p_location => 'XLA_00275_AAD_S_000004_BC_PKG.EventClass_5');
3245 END EventClass_5;
3246 --
3247
3248 --
3249 --+============================================+
3250 --| |
3251 --| PRIVATE FUNCTION |
3252 --| |
3253 --+============================================+
3254 --
3255 FUNCTION CreateHeadersAndLines
3256 (p_application_id IN NUMBER
3257 ,p_base_ledger_id IN NUMBER
3261 ,p_primary_ledger_id IN NUMBER)
3258 ,p_target_ledger_id IN NUMBER
3259 ,p_pad_start_date IN DATE
3260 ,p_pad_end_date IN DATE
3262 RETURN BOOLEAN IS
3263 l_created BOOLEAN:=FALSE;
3264 l_event_id NUMBER;
3265 l_event_date DATE;
3266 l_language VARCHAR2(30);
3267 l_currency_code VARCHAR2(30);
3268 l_sla_ledger_id NUMBER;
3269 l_log_module VARCHAR2(240);
3270
3271 BEGIN
3272 --
3273 IF g_log_enabled THEN
3274 l_log_module := C_DEFAULT_MODULE||'.CreateHeadersAndLines';
3275 END IF;
3276 --
3277 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3278 trace
3279 (p_msg => 'BEGIN of CreateHeadersAndLines'
3280 ,p_level => C_LEVEL_PROCEDURE
3281 ,p_module => l_log_module);
3282 END IF;
3283
3284 l_language := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
3285 l_currency_code := xla_ae_journal_entry_pkg.g_cache_ledgers_info.currency_code;
3286 l_sla_ledger_id := xla_ae_journal_entry_pkg.g_cache_ledgers_info.sla_ledger_id;
3287
3288 --
3289 -- initialize array of lines with NULL
3290 --
3291 xla_ae_lines_pkg.SetNullLine;
3292
3293 --
3294 -- initialize header extract count -- Bug 4865292
3295 --
3296 g_hdr_extract_count:= 0;
3297
3298
3299 l_created := EventClass_5(
3300 p_application_id => p_application_id
3301 , p_base_ledger_id => p_base_ledger_id
3302 , p_target_ledger_id => p_target_ledger_id
3303 , p_language => l_language
3304 , p_currency_code => l_currency_code
3305 , p_sla_ledger_id => l_sla_ledger_id
3306 , p_pad_start_date => p_pad_start_date
3307 , p_pad_end_date => p_pad_end_date
3308 , p_primary_ledger_id => p_primary_ledger_id
3309 );
3310
3311
3312
3313 IF ( g_diagnostics_mode ='Y' ) THEN
3314
3315 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3316 trace
3317 (p_msg => 'CALL Transaction Objects Diagnostics'
3318 ,p_level => C_LEVEL_STATEMENT
3319 ,p_module => l_log_module);
3320
3321 END IF;
3322
3323 insert_sources_5(
3324 p_target_ledger_id => p_target_ledger_id
3325 , p_language => l_language
3326 , p_sla_ledger_id => l_sla_ledger_id
3327 , p_pad_start_date => p_pad_start_date
3328 , p_pad_end_date => p_pad_end_date
3329 );
3330
3331 END IF;
3332
3333
3334 --
3335 -- Bug 4865292
3336 -- When the number of events and that of header extract do not match,
3337 -- set the no header extract flag to indicate there are some issues
3338 -- in header extract.
3339 --
3340 -- Event count context is set in xla_accounting_pkg.unit_processor.
3341 -- Build_Message for this error is called in xla_accounting_pkg.post_accounting
3342 -- to report it as a general error.
3343 --
3344 IF xla_context_pkg.get_event_count_context <> g_hdr_extract_count
3345 AND xla_context_pkg.get_event_nohdr_context <> 'Y' THEN
3346
3347 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3348 trace
3349 (p_msg => '# of extracted headers and events does not match'
3350 ,p_level => C_LEVEL_STATEMENT
3351 ,p_module => l_log_module);
3352
3353 trace
3354 (p_msg => '# of extracted headers: '
3355 ||g_hdr_extract_count
3356 ,p_level => C_LEVEL_STATEMENT
3357 ,p_module => l_log_module);
3358
3359 trace
3360 (p_msg => '# of events in xla_events_gt: '
3361 ||xla_context_pkg.get_event_count_context
3362 ,p_level => C_LEVEL_STATEMENT
3363 ,p_module => l_log_module);
3364
3365 trace
3366 (p_msg => 'Event No Header Extract Context: '
3367 ||xla_context_pkg.get_event_nohdr_context
3368 ,p_level => C_LEVEL_STATEMENT
3369 ,p_module => l_log_module);
3370
3371 END IF;
3372
3373
3374 xla_context_pkg.set_event_nohdr_context
3375 (p_nohdr_extract_flag => 'Y'
3376 ,p_client_id => sys_context('USERENV','CLIENT_IDENTIFIER'));
3377
3378 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3379 trace
3380 (p_msg => 'No Header Extract Flag is set to Y'
3381 ,p_level => C_LEVEL_STATEMENT
3382 ,p_module => l_log_module);
3383 END IF;
3384
3385 END IF;
3386
3387 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3388 trace
3389 (p_msg => 'END of CreateHeadersAndLines'
3390 ,p_level => C_LEVEL_PROCEDURE
3391 ,p_module => l_log_module);
3392 END IF;
3393
3394 RETURN l_created;
3395 EXCEPTION
3396 WHEN xla_exceptions_pkg.application_exception THEN
3397 RAISE;
3398 WHEN OTHERS THEN
3399 xla_exceptions_pkg.raise_message
3400 (p_location => 'XLA_00275_AAD_S_000004_BC_PKG.CreateHeadersAndLines');
3401 END CreateHeadersAndLines;
3402 --
3403 --
3404
3405 --
3406 --+============================================+
3407 --| |
3408 --| PUBLIC FUNCTION |
3409 --| |
3410 --+============================================+
3411 --
3412 FUNCTION CreateJournalEntries
3413 (p_application_id IN NUMBER
3414 ,p_base_ledger_id IN NUMBER
3418 RETURN NUMBER IS
3415 ,p_pad_start_date IN DATE
3416 ,p_pad_end_date IN DATE
3417 ,p_primary_ledger_id IN NUMBER)
3419 l_log_module VARCHAR2(240);
3420 l_array_ledgers xla_accounting_cache_pkg.t_array_ledger_id;
3421 l_temp_result BOOLEAN;
3422 l_result NUMBER;
3423 BEGIN
3424 --
3425 IF g_log_enabled THEN
3426 l_log_module := C_DEFAULT_MODULE||'.CreateJournalEntries';
3427 END IF;
3428 --
3429 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3430 trace
3431 (p_msg => 'BEGIN of CreateJournalEntries'||
3432 ' - p_base_ledger_id = '||TO_CHAR(p_base_ledger_id)
3433 ,p_level => C_LEVEL_PROCEDURE
3434 ,p_module => l_log_module);
3435
3436 END IF;
3437
3438 --
3439 g_diagnostics_mode:= xla_accounting_engine_pkg.g_diagnostics_mode;
3440
3441 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3442 trace
3443 (p_msg => 'g_diagnostics_mode = '||g_diagnostics_mode
3444 ,p_level => C_LEVEL_STATEMENT
3445 ,p_module => l_log_module);
3446 END IF;
3447 --
3448 xla_ae_journal_entry_pkg.SetProductAcctDefinition
3449 (p_product_rule_code => 'PA_STANDARD_ACCOUNTING'
3450 ,p_product_rule_type_code => 'S'
3451 ,p_product_rule_version => ''
3452 ,p_product_rule_name => 'Projects Standard Accounting'
3453 ,p_amb_context_code => 'DEFAULT'
3454 );
3455
3456 l_array_ledgers :=
3457 xla_ae_journal_entry_pkg.GetAlternateCurrencyLedger
3458 (p_base_ledger_id => p_base_ledger_id);
3459
3460 FOR Idx IN 1 .. l_array_ledgers.COUNT LOOP
3461 l_temp_result :=
3462 XLA_AE_JOURNAL_ENTRY_PKG.GetLedgersInfo
3463 (p_application_id => p_application_id
3464 ,p_base_ledger_id => p_base_ledger_id
3465 ,p_target_ledger_id => l_array_ledgers(Idx)
3466 ,p_primary_ledger_id => p_primary_ledger_id
3467 ,p_pad_start_date => p_pad_start_date
3468 ,p_pad_end_date => p_pad_end_date);
3469
3470 l_temp_result :=
3471 l_temp_result AND
3472 CreateHeadersAndLines
3473 (p_application_id => p_application_id
3474 ,p_base_ledger_id => p_base_ledger_id
3475 ,p_target_ledger_id => l_array_ledgers(Idx)
3476 ,p_pad_start_date => p_pad_start_date
3477 ,p_pad_end_date => p_pad_end_date
3478 ,p_primary_ledger_id => p_primary_ledger_id
3479 );
3480 END LOOP;
3481
3482
3483 IF (g_diagnostics_mode = 'Y' AND
3484 C_LEVEL_UNEXPECTED >= g_log_level AND
3485 xla_environment_pkg.g_Req_Id IS NOT NULL ) THEN
3486
3487 xla_accounting_dump_pkg.acctg_event_extract_log(
3488 p_application_id => p_application_id
3489 ,p_request_id => xla_environment_pkg.g_Req_Id
3490 );
3491
3492 END IF;
3493
3494 CASE l_temp_result
3495 WHEN TRUE THEN l_result := 0;
3496 ELSE l_result := 2;
3497 END CASE;
3498
3499 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3500 trace
3501 (p_msg => 'return value. = '||TO_CHAR(l_result)
3502 ,p_level => C_LEVEL_PROCEDURE
3503 ,p_module => l_log_module);
3504 trace
3505 (p_msg => 'END of CreateJournalEntries '
3506 ,p_level => C_LEVEL_PROCEDURE
3507 ,p_module => l_log_module);
3508 END IF;
3509
3510 RETURN l_result;
3511 EXCEPTION
3512 WHEN xla_exceptions_pkg.application_exception THEN
3513 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3514 trace
3515 (p_msg => 'ERROR. = '||sqlerrm
3516 ,p_level => C_LEVEL_PROCEDURE
3517 ,p_module => l_log_module);
3518 END IF;
3519 RAISE;
3520 WHEN OTHERS THEN
3521 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3522 trace
3523 (p_msg => 'ERROR. = '||sqlerrm
3524 ,p_level => C_LEVEL_PROCEDURE
3525 ,p_module => l_log_module);
3526 END IF;
3527 xla_exceptions_pkg.raise_message
3528 (p_location => 'XLA_00275_AAD_S_000004_BC_PKG.CreateJournalEntries');
3529 END CreateJournalEntries;
3530 --
3531 --=============================================================================
3532 --
3533 --
3534 --
3535 --
3536 --
3537 --
3538 --
3539 --
3540 --
3541 --
3542 --
3543 --
3544 --
3545 --
3546 --
3547 --
3548 --
3549 --
3550 --
3551 --
3552 --
3553 --
3554 --=============================================================================
3555 --=============================================================================
3556 -- *********** Initialization routine **********
3557 --=============================================================================
3558
3559 BEGIN
3560 g_log_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
3561 g_log_enabled := fnd_log.test
3562 (log_level => g_log_level
3563 ,module => C_DEFAULT_MODULE);
3564
3565 IF NOT g_log_enabled THEN
3566 g_log_level := C_LEVEL_LOG_DISABLED;
3567 END IF;
3568 --
3569 END XLA_00275_AAD_S_000004_BC_PKG;
3570 --