[Home] [Help]
PACKAGE BODY: APPS.XLA_CMP_ACCT_LINE_TYPE_PKG
Source
1 PACKAGE BODY xla_cmp_acct_line_type_pkg AS
2 /* $Header: xlacpalt.pkb 120.73 2011/10/13 15:42:55 vgopiset ship $ */
3 /*============================================================================+
4 | Copyright (c) 2001-2002 Oracle Corporation |
5 | Redwood Shores, CA, USA |
6 | All rights reserved. |
7 +=============================================================================+
8 | PACKAGE NAME |
9 | xla_cmp_acct_line_type_pkg |
10 | |
11 | DESCRIPTION |
12 | This is a XLA private package, which contains all the logic required |
13 | to generate Accounting line type procedures from AMB specifcations |
14 | |
15 | |
16 | HISTORY |
17 | 15-JUN-2002 K.Boussema Created |
18 | 20-FEB-2003 K.Boussema Added 'dbdrv' command |
19 | 21-FEB-2003 K.Boussela Changed GenerateAcctLineType function |
20 | 13-MAR-2003 K.Boussema Made changes for the new bulk approach of the |
21 | accounting engine |
22 | 19-MAR-2003 K.Boussema Added amb_context_code column |
23 | 02-APR-2003 K.boussema Added generation of analytical criteria |
24 | 22-APR-2003 K.Boussema Included error messages |
25 | 06-MAI-2003 K.Boussema Modified to fix bug 2936066(Unbalanced JE) |
26 | 22-MAI-2003 K.Boussema Modified the Extract of line Accounting |
27 | sources, bug 2972421 |
28 | 02-JUN-2003 K.Boussema Modified to fix bug 2975670 and bug 2729143 |
29 | 17-JUL-2003 K.Boussema Reviewd the code |
30 | 27-AUG-2003 K.Boussema Reviewed the generation of SetAccountingSource|
31 | 27-SEP-2003 K.Boussema Changed the event_class clauses using '_ALL' |
32 | 27-SEP-2003 K.Boussema Reviewed GetAccountingSources() procedure |
33 | 27-NOV-2003 K.Boussema Changed to pass accounting class meaning |
34 | instead of the lookup code |
35 | 01-DEC-2003 K.Boussema Remove changed introduced in 27-NOV-2003 |
36 | 18-DEC-2003 K.Boussema Changed to fix bug 3042840,3307761,3268940 |
37 | 3310291 and 3320689 |
38 | 30-DEC-2003 K.Boussema Removed validation of JLT side, bug 3239528 |
39 | 23-FEB-2004 K.Boussema Made changes for the FND_LOG. |
40 | 12-MAR-2004 K.Boussema Changed to incorporate the select of lookups |
41 | from the extract objects |
42 | 22-MAR-2004 K.Boussema Added a parameter p_module to the TRACE calls |
43 | and the procedure. |
44 | 11-MAY-2004 K.Boussema Removed the call to XLA trace routine from |
45 | trace() procedure |
46 | 17-MAY-2004 W.Shen Accounting attribute enhancement project |
47 | change to GenerateAcctLineTypeProcs, |
48 | GetAccountingSources procedure |
49 | 20-Sep-2004 S.Singhania Made following changes for bulk processing: |
50 | - Added constatnt C_ALT_BODY |
51 | - Modified contants C_ALT_PROC and |
52 | C_SET_ACCT_SOURCES |
53 | - Modified routines GetAccountingSources, |
54 | GetALTBody and GenerateDefAcctLineType |
55 | 27-DEC-2004 K.Boussema Changed the VARCHAR2 type by CLOB to handle |
56 | the large ALT |
57 | 12-Feb-2004 W.Shen Modify C_ALT_PROC to add two parameters for |
58 | calculate amount, gain lost |
59 | Modify for ledger Currency Project |
60 | 28-MAR-2005 A.Wan Changed for business flow. Bug 4219869 |
61 | 11-Jul-2005 A.Wan Changed for MPA . Bug 4262811 |
62 | 22-Sep-2005 S.Singhania Bug 4544725. Implemented Business Flows and |
63 | Reversals for Non-Upgraded JEs. |
64 | 12-Oct-2005 A.Wan Bug 4645092 - MPA report changes |
65 | 18-Oct-2005 V. Kumar Removed code for Analytical Criteria |
66 | 05-Jan-2005 A. Govil Bug 4922099 - Added code for Federal |
67 | Non-upgraded entries. |
68 | 09-Jan-2006 A.Wan Bug 4669271 - do not copy bflow class for |
69 | Accrual reversal |
70 | 30-Jan-2006 A.Wan Bug 4655713 - |
71 | - in GenerateCallADR, process ALL segment 1st |
72 | - in GenerateADRCalls, if same entry, and ALL |
73 | segment is inherited, then set C_CHAR to |
74 | each segments. |
75 | 03-Feb-2006 A.Wan Bug 4655713b - |
76 | - if accrual reversal uses business flow, |
77 | set reversal_code to 'MPA_' + bflow method |
78 | 07-FEB-2006 A.Wan 4897417 error if MPA's GL periods not defined. |
79 | 13-FEB-2006 V.Kumar 4955764 Modified C_ALT_BODY , C_ACC_REV_MPA_BODY|
80 | 01-Mar-2006 A.Wan 5052518 Accrual reversal did not change SIGN |
81 | as defined in reversal method. |
82 | 15-Apr-2006 A.Wan 5132303 - applied to amt for Gain/Loss |
83 | 01-Jan-2009 VGOPISET 7109881 Changed MPA parent line Num. Added call |
84 | to InsertMPARecogLineInfo proedure |
85 | 25-AUG-2010 VGOPISET 9863643 BFLOWUPGENTRY call when actual_upg as Y |
86 | for balance type A or enc_upg as Y for |
87 | balance type E JLTs |
88 | 06-Sep-2010 VGOPISET 9954676 Added call to InsertMpaTrxAcctCopyInfo |
89 | for Trx Coa Secondary Ledger MPA |
90 | 28-Apr-2011 VGOPISET 12341466 Pass AccountedAmount to GetRecogEntries|
91 | only when AccountedAmount Source is available. |
92 +============================================================================*/
93 --
94 --+==========================================================================+
95 --| |
96 --| |
97 --| Global Constants |
98 --| |
99 --| |
100 --+==========================================================================+
101
102 G_ADRS CLOB;
103 --
104 -- ADR segment or flexfield procedures
105 --
106 C_ALT_PROC CONSTANT VARCHAR2(20000):= '
107 ---------------------------------------
108 --
109 -- PRIVATE FUNCTION
110 -- AcctLineType_$alt_hash_id$
111 --
112 ---------------------------------------
113 PROCEDURE AcctLineType_$alt_hash_id$ (
114 p_application_id IN NUMBER
115 ,p_event_id IN NUMBER
116 ,p_calculate_acctd_flag IN VARCHAR2
117 ,p_calculate_g_l_flag IN VARCHAR2
118 ,p_actual_flag IN OUT VARCHAR2
119 ,p_balance_type_code OUT VARCHAR2
120 ,p_gain_or_loss_ref OUT VARCHAR2
121 $parameters$
122 )
123 IS
124
125 l_component_type VARCHAR2(80);
126 l_component_code VARCHAR2(30);
127 l_component_type_code VARCHAR2(1);
128 l_component_appl_id INTEGER;
129 l_amb_context_code VARCHAR2(30);
130 l_entity_code VARCHAR2(30);
131 l_event_class_code VARCHAR2(30);
132 l_ae_header_id NUMBER;
133 l_event_type_code VARCHAR2(30);
134 l_line_definition_code VARCHAR2(30);
135 l_line_definition_owner_code VARCHAR2(1);
136 --
137 -- adr variables
138 l_segment VARCHAR2(30);
139 l_ccid NUMBER;
140 l_adr_transaction_coa_id NUMBER;
141 l_adr_accounting_coa_id NUMBER;
142 l_adr_flexfield_segment_code VARCHAR2(30);
143 l_adr_flex_value_set_id NUMBER;
144 l_adr_value_type_code VARCHAR2(30);
145 l_adr_value_combination_id NUMBER;
146 l_adr_value_segment_code VARCHAR2(30);
147
148 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
149 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
150 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
151 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
152
153 -- 4262811 Variables ------------------------------------------------------------------------------------------
154 l_entered_amt_idx NUMBER;
155 l_accted_amt_idx NUMBER;
156 l_acc_rev_flag VARCHAR2(1);
157 l_accrual_line_num NUMBER;
158 l_tmp_amt NUMBER;
159 l_acc_rev_natural_side_code VARCHAR2(1);
160
161 l_num_entries NUMBER;
162 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
163 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
164 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
165 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
166 l_recog_line_1 NUMBER;
167 l_recog_line_2 NUMBER;
168
169 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
170 l_bflow_applied_to_amt NUMBER; -- 5132302
171 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
172
173 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
174
175 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
176 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
177
178 ---------------------------------------------------------------------------------------------------------------
179
180
181 --
182 -- bulk performance
183 --
184 l_balance_type_code VARCHAR2(1);
185 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
186 l_log_module VARCHAR2(240);
187
188 --
189 -- Upgrade strategy
190 --
191 l_actual_upg_option VARCHAR2(1);
192 l_enc_upg_option VARCHAR2(1);
193
194 --
195 BEGIN
196 --
197 IF g_log_enabled THEN
198 l_log_module := C_DEFAULT_MODULE||''.AcctLineType_$alt_hash_id$'';
199 END IF;
200 --
201 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
202
203 trace
204 (p_msg => ''BEGIN of AcctLineType_$alt_hash_id$''
205 ,p_level => C_LEVEL_PROCEDURE
206 ,p_module => l_log_module);
207
208 END IF;
209 --
210 l_component_type := ''AMB_JLT'';
211 l_component_code := ''$alt_code$'';
212 l_component_type_code := ''$alt_type_code$'';
213 l_component_appl_id := $alt_appl_id$;
214 l_amb_context_code := ''$amb_context_code$'';
215 l_entity_code := ''$entity_code$'';
216 l_event_class_code := ''$event_class_code$'';
217 l_event_type_code := ''$event_type_code$'';
218 l_line_definition_owner_code := ''$line_definition_owner_code$'';
219 l_line_definition_code := ''$line_definition_code$'';
220 --
221 l_balance_type_code := ''$balance_type_code$'';
222 l_segment := NULL;
223 l_ccid := NULL;
224 l_adr_transaction_coa_id := NULL;
225 l_adr_accounting_coa_id := NULL;
226 l_adr_flexfield_segment_code := NULL;
227 l_adr_flex_value_set_id := NULL;
228 l_adr_value_type_code := NULL;
229 l_adr_value_combination_id := NULL;
230 l_adr_value_segment_code := NULL;
231
232 l_bflow_method_code := ''$bflow_method_code$''; -- 4219869 Business Flow
233 l_bflow_class_code := ''$bflow_class_code$''; -- 4219869 Business Flow
234 l_inherit_desc_flag := ''$inherit_desc_flag$''; -- 4219869 Business Flow
235 l_budgetary_control_flag := ''$budgetary_control_flag$'';
236
237 l_bflow_applied_to_amt_idx := NULL; -- 5132302
238 l_bflow_applied_to_amt := NULL; -- 5132302
239 l_entered_amt_idx := NULL; -- 4262811
240 l_accted_amt_idx := NULL; -- 4262811
241 l_acc_rev_flag := NULL; -- 4262811
242 l_accrual_line_num := NULL; -- 4262811
243 l_tmp_amt := NULL; -- 4262811
244 --
245 $alt_proc_gain_or_loss_cond$
246 $alt_proc_cond$
247 $alt_body$
248 END IF;
249 --
250
251 --
252 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
253 trace
254 (p_msg => ''END of AcctLineType_$alt_hash_id$''
255 ,p_level => C_LEVEL_PROCEDURE
256 ,p_module => l_log_module);
257 END IF;
258 --
259 EXCEPTION
260 WHEN xla_exceptions_pkg.application_exception THEN
261 RAISE;
262 WHEN OTHERS THEN
263 xla_exceptions_pkg.raise_message
264 (p_location => ''$package_name$.AcctLineType_$alt_hash_id$'');
265 END AcctLineType_$alt_hash_id$;
266 --
267 '; -- C_ALT_PROC
268
269
270 C_ACC_REV_MPA_BODY CONSTANT VARCHAR2(20000):= '
271 -------------------------------------------------------------------------------------------
272 -- 4262811 - Generate the Accrual Reversal lines
273 -------------------------------------------------------------------------------------------
274 BEGIN
275 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
276 (g_array_event(p_event_id).array_value_num(''header_index''));
277 IF l_acc_rev_flag IS NULL THEN
278 l_acc_rev_flag := ''N'';
279 END IF;
280 EXCEPTION
281 WHEN OTHERS THEN
282 l_acc_rev_flag := ''N'';
283 END;
284 --
285 IF (l_acc_rev_flag = ''Y'') THEN
286
287 -- 4645092 ------------------------------------------------------------------------------
288 -- To allow MPA report to determine if it should generate report process
289 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := ''Y'';
290 ------------------------------------------------------------------------------------------
291
295 -- call ADRs
292 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
293 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
294 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
296 -- Bug 4922099
297 --
298 IF ( (l_bflow_method_code <> ''PRIOR_ENTRY'') OR
299 (NVL(l_actual_upg_option, ''N'') = ''O'') OR
300 (NVL(l_enc_upg_option, ''N'') = ''O'')
301 )
302 THEN
303 NULL;
304 --
305 --
306 $call_adr$
307 --
308 --
309 END IF;
310
311 --
312 -- Update the line information that should be overwritten
313 --
314 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
315 p_header_num => 1);
316 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
317
318 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
319
320 IF l_bflow_method_code <> ''NONE''
321 AND (NVL(l_actual_upg_option, ''N'') IN (''Y'', ''O'')
322 OR NVL(l_enc_upg_option, ''N'') IN (''Y'', ''O'')) THEN -- bug#8935054
323
324 NULL;
325
326 ELSIF l_bflow_method_code <> ''NONE'' THEN -- 4655713b
327
328 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT(''MPA_'',l_bflow_method_code);
329
330 END IF;
331 --
332 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
333 --
334 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = ''SIDE'') THEN
335 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
336 ELSE
337 ---------------------------------------------------------------------------------------------------
338 -- 4262811a Switch Sign
339 ---------------------------------------------------------------------------------------------------
340 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := ''N''; -- 5052518
341 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
342 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
343 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
344 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
345 -- 5132302
346 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
347 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
348
349 END IF;
350
351 -- 4955764
352 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
353 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num(''acc_rev_header_index''));
354
355
356 XLA_AE_LINES_PKG.ValidateCurrentLine;
357 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
358
359 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
360 (p_hdr_idx => g_array_event(p_event_id).array_value_num(''acc_rev_header_index'')
361 ,p_balance_type_code => l_balance_type_code);
362
363 END IF;
364
365 -----------------------------------------------------------------------------------------
366 -- 4262811 Multiperiod Accounting
367 -----------------------------------------------------------------------------------------
368 $mpa_body$
369
370 '; -- C_ACC_REV_MPA_BODY
371
372 --
373 -- alt body template
374 --
375 C_ALT_BODY CONSTANT VARCHAR2(10000):=
376 '
377 --
378 XLA_AE_LINES_PKG.SetNewLine;
379
380 p_balance_type_code := l_balance_type_code;
381 -- set the flag so later we will know whether the gain loss line needs to be created
382 $set_actual_enc_flag$
383
384 --
385 -- bulk performance
386 --
387 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
388 p_header_num => 0); -- 4262811
389 --
390 -- set accounting line options
391 --
392 $acct_line_options$
393 --
394 -- set accounting line type info
395 --
396 xla_ae_lines_pkg.SetAcctLineType
397 (p_component_type => l_component_type
398 ,p_event_type_code => l_event_type_code
399 ,p_line_definition_owner_code => l_line_definition_owner_code
400 ,p_line_definition_code => l_line_definition_code
401 ,p_accounting_line_code => l_component_code
402 ,p_accounting_line_type_code => l_component_type_code
403 ,p_accounting_line_appl_id => l_component_appl_id
404 ,p_amb_context_code => l_amb_context_code
405 ,p_entity_code => l_entity_code
406 ,p_event_class_code => l_event_class_code);
407 --
408 -- set accounting class
409 --
410 $set_acct_class$
411 --
412 -- set rounding class
413 --
414 $set_rounding_class$
415 --
419 -- bulk performance
416 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
417 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
418 --
420 --
421 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
422
423 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
424 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
425
426 -- 4955764
427 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
428 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num(''header_index''));
429
430 -- 4458381 Public Sector Enh
431 $set_encumbrance_type_id$
432 --
433 -- set accounting attributes for the line type
434 --
435 $alt_acct_attributes$
436 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
437 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
438
439 ---------------------------------------------------------------------------------------------------------------
440 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
441 ---------------------------------------------------------------------------------------------------------------
442 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
443
444 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
445 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
446
447 IF xla_accounting_cache_pkg.GetValueChar
448 (p_source_code => ''LEDGER_CATEGORY_CODE''
449 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN (''PRIMARY'',''ALC'')
450 AND l_bflow_method_code = ''PRIOR_ENTRY''
451 -- AND (l_actual_upg_option = ''Y'' OR l_enc_upg_option = ''Y'') Bug 4922099
452 AND ( (NVL(l_actual_upg_option, ''N'') IN (''Y'', ''O'') AND l_balance_type_code = ''A'' ) OR
453 (NVL(l_enc_upg_option, ''N'') IN (''Y'', ''O'') AND l_balance_type_code = ''E'' ) -- bug 9863643
454 )
455 THEN
456 xla_ae_lines_pkg.BflowUpgEntry
457 (p_business_method_code => l_bflow_method_code
458 ,p_business_class_code => l_bflow_class_code
459 ,p_balance_type => l_balance_type_code);
460 ELSE
461 NULL;
462 $call_bflow_validation$
463 END IF;
464
465 --
466 -- call analytical criteria
467 --
468 $call_analytical_criteria$
469 --
470 -- call description
471 --
472 $call_description$
473 --
474 -- call ADRs
475 -- Bug 4922099
476 --
477 IF ( (l_bflow_method_code <> ''PRIOR_ENTRY'') OR
478 (NVL(l_actual_upg_option, ''N'') = ''O'') OR
479 (NVL(l_enc_upg_option, ''N'') = ''O'')
480 )
481 THEN
482 NULL;
483 --
484 --
485 $call_adr$
486 --
487 --
488 END IF;
489 --
490 -- Bug 4922099
491 IF ( ( (NVL(l_actual_upg_option, ''N'') = ''O'') OR
492 (NVL(l_enc_upg_option, ''N'') = ''O'')
493 ) AND
494 (l_bflow_method_code = ''PRIOR_ENTRY'')
495 )
496 THEN
497 IF
498 --
499 $no_adr_assigned$
500 --
501 THEN
502 xla_accounting_err_pkg.build_message
503 (p_appli_s_name => ''XLA''
504 ,p_msg_name => ''XLA_UPG_OVERRIDE_ADR_UNDEFINED''
505 ,p_token_1 => ''LINE_NUMBER''
506 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
507 ,p_token_2 => ''LINE_TYPE_NAME''
508 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
509 l_component_type
510 ,l_component_code
511 ,l_component_type_code
512 ,l_component_appl_id
513 ,l_amb_context_code
514 ,l_entity_code
515 ,l_event_class_code
516 )
517 ,p_token_3 => ''OWNER''
518 ,p_value_3 => xla_lookups_pkg.get_meaning(
519 p_lookup_type => ''XLA_OWNER_TYPE''
520 ,p_lookup_code => l_component_type_code
521 )
522 ,p_token_4 => ''PRODUCT_NAME''
526 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
523 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
524 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
525 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
527 ,p_ae_header_id => NULL
528 );
529
530 IF (C_LEVEL_ERROR>= g_log_level) THEN
531 trace
532 (p_msg => ''ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED''
533 ,p_level => C_LEVEL_ERROR
534 ,p_module => l_log_module);
535 END IF;
536 END IF;
537 END IF;
538 --
539 --
540 ------------------------------------------------------------------------------------------------
541 -- 4219869 Business Flow
542 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
543 -- Prior Entry. Currently, the following code is always generated.
544 ------------------------------------------------------------------------------------------------
545 $call_validate_line$
546
547 ------------------------------------------------------------------------------------
548 -- 4219869 Business Flow
549 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
550 ------------------------------------------------------------------------------------
551 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
552
553 ----------------------------------------------------------------------------------
554 -- 4219869 Business Flow
555 -- Update journal entry status -- Need to generate this within IF <condition>
556 ----------------------------------------------------------------------------------
557 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
558 (p_hdr_idx => g_array_event(p_event_id).array_value_num(''header_index'')
559 ,p_balance_type_code => l_balance_type_code
560 );
561 '; -- C_ALT_BODY
562
563 C_SET_ENCUMBRANCE_TYPE_ID CONSTANT VARCHAR2(1000):=
564 ' XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := $encumbrance_type_id$;';
565
566 ---------------------------------------------------------------------------------------------------------
567 -- 4262811 - Generates MPA Body if Multiperiod Option is set to Yes
568 ---------------------------------------------------------------------------------------------------------
569 C_MPA_BODY CONSTANT VARCHAR2(10500) :=
570 '
571 IF (XLA_AE_LINES_PKG.g_rec_lines.array_mpa_option(XLA_AE_LINES_PKG.g_LineNumber) = ''Y''
572 AND $mpa_start_date$ IS NOT NULL AND $mpa_end_date$ IS NOT NULL) THEN
573
574 XLA_AE_LINES_PKG.g_rec_lines.array_mpa_acc_entry_flag(XLA_AE_LINES_PKG.g_LineNumber) := ''Y'';
575
576 -------------------------------------------------------------------------------------
577 -- 4262811b Rounding not needed here
578 -------------------------------------------------------------------------------------
579 -- To handle MPA rounding
580 -- IF XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) = ''G'' THEN
581 -- --l_rounding_ccy := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.currency_code;
582 -- l_rounding_ccy := xla_accounting_cache_pkg.GetValueChar(
583 -- p_source_code => ''XLA_CURRENCY_CODE''
584 -- ,p_target_ledger_id=> XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(
585 -- XLA_AE_LINES_PKG.g_rec_lines.array_line_num.FIRST));
586 -- ELSE
587 -- l_rounding_ccy := XLA_AE_LINES_PKG.g_rec_lines.array_currency_code(XLA_AE_LINES_PKG.g_LineNumber);
588 -- END IF;
589
590 -------------------------------------------------------------------------------------
591 -- 4262811b Check if transaction currency is the same as ledger currency
592 -------------------------------------------------------------------------------------
593 IF XLA_AE_LINES_PKG.g_rec_lines.array_currency_code(XLA_AE_LINES_PKG.g_LineNumber) =
594 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.currency_code THEN
595 l_same_currency := TRUE;
596 ELSE
597 l_same_currency := FALSE;
598 END IF;
599 -------------------------------------------------------------------------------------
600
601 -------------------------------------------------------------------------------------
602 -- 5132302
603 IF l_bflow_applied_to_amt_idx IS NULL THEN
604 l_bflow_applied_to_amt := NULL;
605 ELSE
606 l_bflow_applied_to_amt := l_rec_acct_attrs.array_num_value(l_bflow_applied_to_amt_idx);
607 END IF;
608 -------------------------------------------------------------------------------------
609
610 XLA_AE_HEADER_PKG.GetRecognitionEntriesInfo
611 (p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
612 ,p_start_date => $mpa_start_date$
613 ,p_end_date => $mpa_end_date$
614 ,p_gl_date_option => ''$mpa_gl_dates$''
615 ,p_num_entries_option => ''$mpa_num_je$''
616 ,p_proration_code => ''$mpa_proration_code$''
620 WHEN l_accted_amt_idx IS NOT NULL
617 ,p_calculate_acctd_flag => p_calculate_acctd_flag -- 4262811b for MPA rounding
618 ,p_same_currency => l_same_currency -- 4262811b for MPA rounding
619 ,p_accted_amt => CASE
621 THEN l_rec_acct_attrs.array_num_value(l_accted_amt_idx)
622 ELSE NULL
623 END -- added CASE for bug12341466
624 ,p_entered_amt => l_rec_acct_attrs.array_num_value(l_entered_amt_idx)
625 ,p_bflow_applied_to_amt => l_bflow_applied_to_amt -- 5132302
626 ,x_bflow_applied_to_amts => l_bflow_applied_to_amts -- 5132302
627 ,x_num_entries => l_num_entries
628 ,x_gl_dates => l_gl_dates
629 ,x_accted_amts => l_accted_amts
630 ,x_entered_amts => l_entered_amts
631 ,x_period_names => l_period_names
632 ,p_trx_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num(''header_index'')) -- bug13018752
633 );
634
635 IF l_num_entries = 0 THEN -- 4897417 do not generate if no entries
636
637 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
638 xla_accounting_err_pkg.build_message
639 (p_appli_s_name => ''XLA''
640 ,p_msg_name => ''XLA_AP_NO_MPA_GL_PERIOD''
641 ,p_token_1 => ''LEDGER_NAME''
642 ,p_value_1 => xla_accounting_cache_pkg.GetValueChar
643 ( p_source_code => ''XLA_LEDGER_NAME''
644 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id)
645 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
646 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
647 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
648 ,p_ae_header_id => NULL);
649
650 ELSE
651
652 -- 4645092 ------------------------------------------------------------------------------
653 -- To allow MPA report to determine if it should generate report process
654 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := ''Y'';
655 ------------------------------------------------------------------------------------------
656
657 --========================================================================
658 -- Create the first MPA Recognition Header (one Header per MPA period)
659 --========================================================================
660 g_last_hdr_idx := g_last_hdr_idx + 1;
661
662 XLA_AE_HEADER_PKG.CopyHeaderInfo (p_parent_hdr_idx => g_array_event(p_event_id).array_value_num(''header_index'')
663 ,p_hdr_idx => g_last_hdr_idx);
664
665 --------------------------------------------------------------------
666 -- g_mpa_line_num: to prevent multiple MPA-JLT grouped into one line
667 --------------------------------------------------------------------
668 --XLA_AE_HEADER_PKG.g_rec_header_new.array_header_num (g_last_hdr_idx) := 1;
669 XLA_AE_HEADER_PKG.g_mpa_line_num := XLA_AE_HEADER_PKG.g_mpa_line_num + 1; -- JUN28 new
670 XLA_AE_HEADER_PKG.g_rec_header_new.array_header_num (g_last_hdr_idx) := XLA_AE_HEADER_PKG.g_mpa_line_num;
671
672 ----------------------------------------------------------------------------------------------------------
673 -- 4262811a To handle rollover of MPA date in PostAccountingEngines
674 ----------------------------------------------------------------------------------------------------------
675 XLA_AE_HEADER_PKG.g_rec_header_new.array_acc_rev_gl_date_option (g_last_hdr_idx) := ''$mpa_gl_dates$'';
676 ----------------------------------------------------------------------------------------------------------
677
678 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date (g_last_hdr_idx) := trunc(l_gl_dates(1));
682 XLA_AE_HEADER_PKG.g_rec_header_new.array_parent_header_id(g_last_hdr_idx) :=
679
680 -- xla_ae_headers.parent_ae_header_id = 1 is wrong
681 --XLA_AE_HEADER_PKG.g_rec_header_new.array_parent_header_id(g_last_hdr_idx) := g_array_event(p_event_id).array_value_num(''header_index'');
683 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(g_array_event(p_event_id).array_value_num(''header_index''));
684 --bug:7109881 changed arrary_parent_line_num to hold Temp_Line_Number rather than g_LineNumber
685 -- XLA_AE_HEADER_PKG.g_rec_header_new.array_parent_line_num (g_last_hdr_idx) := XLA_AE_LINES_PKG.g_LineNumber;
686 XLA_AE_HEADER_PKG.g_rec_header_new.array_parent_line_num (g_last_hdr_idx) := XLA_AE_LINES_PKG.g_rec_lines.array_line_num(XLA_AE_LINES_PKG.g_LineNumber) ;
687 XLA_AE_HEADER_PKG.g_rec_header_new.array_period_name (g_last_hdr_idx) := l_period_names(1);
688
689 --
690 -- Populate MPA header description
691 --
692 $mpa_description$
693
694 --
695 -- Populate MPA header analytical criteria
696 --
697 $mpa_analytical_criteria$
698
699 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => g_last_hdr_idx);
700
701 --
702 -- Update the amount of the line accounting attribute which will be used
703 -- to generate the line of the recognition entries
704 --
705 IF (l_accted_amt_idx IS NOT NULL) THEN
706 l_rec_acct_attrs.array_num_value(l_accted_amt_idx) := l_accted_amts(1);
707 END IF;
708 IF (l_entered_amt_idx IS NOT NULL) THEN
709 l_rec_acct_attrs.array_num_value(l_entered_amt_idx):= l_entered_amts(1);
710 END IF;
711
712 --======================================================================================
713 -- Generate the first 2 Recognition Lines, one from MPA JLT 1 and one from MPA JLT 2
714 -- Returns l_recog_line_1, l_recog_line_2
715 --======================================================================================
716 l_recog_line_1 := NULL;
717 l_recog_line_2 := NULL;
718 $mpa_jlt$
719
720 --==========================================================================
721 -- Create the remaining Recognition Lines from Recognition JLT 1 and JLT 2
722 --==========================================================================
723 IF l_recog_line_1 IS NOT NULL AND l_recog_line_2 IS NOT NULL THEN
724 g_last_hdr_idx := XLA_AE_HEADER_PKG.CreateRecognitionEntries
725 (p_event_id => p_event_id
726 ,p_num_entries => l_num_entries
727 ,p_last_hdr_idx => g_last_hdr_idx
728 ,p_recog_line_num_1 => l_recog_line_1
729 ,p_recog_line_num_2 => l_recog_line_2
730 ,p_gl_dates => l_gl_dates
731 ,p_bflow_applied_to_amts => l_bflow_applied_to_amts -- 5132302
732 ,p_accted_amts => l_accted_amts
733 ,p_entered_amts => l_entered_amts);
734 END IF;
735
736 XLA_AE_LINES_PKG.SetNullMPALineInfo ; -- added for bug: 7109881
737 XLA_AE_LINES_PKG.SetNullMpaTrxAcctCopyInfo ; -- added for bug9954676
738 END IF; -- if x_num_entries > 0
739
740 END IF; -- Create Multiperiod Accounting
741 '; -- C_MPA_BODY
742
743
744
745 -- 4262811
746 C_MPA_RECOG_JLT_BODY CONSTANT VARCHAR2(10000) :=
747 '
748 RecognitionJLT_$mpa_jlt_index$
749 (p_application_id => p_application_id
750 ,p_event_id => p_event_id
751 ,p_hdr_idx => g_last_hdr_idx
752 ,p_period_num => XLA_AE_HEADER_PKG.g_mpa_line_num -- instead of 1
753 ,p_calculate_acctd_flag => p_calculate_acctd_flag
754 ,p_calculate_g_l_flag => p_calculate_g_l_flag
755 ,p_rec_acct_attrs => l_rec_acct_attrs
756 ,p_bflow_applied_to_amt => l_bflow_applied_to_amts(1) -- 5132302
757 -- Sources
758 $parameters$
759 );
760
761 '; -- C_MPA_RECOG_JLT_BODY
762
763
764
765
766 -- 4262811
767 C_LINE_ACCT_BODY CONSTANT VARCHAR2(10000) :=
768 ' l_entered_amt_idx := $entered_amt_idx$;
769 l_accted_amt_idx := $accted_amt_idx$;
770 l_bflow_applied_to_amt_idx := $bflow_applied_to_amt_idx$; -- 5132302
771 '; -- C_LINE_ACCT_BODY
772
773 -- 4262811
774 C_MPA_HDR_DESC_IDX CONSTANT VARCHAR2(10000) := '
775 -- To set value of header index for mpa description
776 l_event_id := XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(g_last_hdr_idx);
777 '; -- C_MPA_HDR_DESC_IDX
778
779
780 -- 4590313
781 C_MPA_HDR_NO_DESC CONSTANT VARCHAR2(10000) := '
782 XLA_AE_HEADER_PKG.g_rec_header_new.array_description(g_last_hdr_idx) := NULL;
783 '; -- C_MPA_HDR_NO_DESC
784
785
786 -----------------------------------------------------------------
787 -- Business Flow constants - 4219869
788 -----------------------------------------------------------------
789 C_METHOD_PRIOR CONSTANT VARCHAR2(30) := 'PRIOR_ENTRY';
790 C_METHOD_SAME CONSTANT VARCHAR2(30) := 'SAME_ENTRY';
791 C_METHOD_NONE CONSTANT VARCHAR2(30) := 'NONE';
792 --
793
794
798 --| |
795 --+==========================================================================+
796 --| |
797 --| Private global constant declarations |
799 --+==========================================================================+
800 --
801 --
802 g_chr_newline CONSTANT VARCHAR2(10):= xla_environment_pkg.g_chr_newline;
803 g_package_name VARCHAR2(30);
804 --
805 --
806 g_component_type VARCHAR2(30):='AMB_JLT';
807 g_no_adr_assigned BOOLEAN := FALSE; -- Bug 4922099
808 --=============================================================================
809 --
810 --
811 --
812 --
813 --
814 --
815 --
816 --
817 --
818 --
819 --
820 --
821 --
822 --
823 --
824 --
825 --
826 --
827 --
828 --
829 --
830 --
831 --=============================================================================
832 --
833 --=============================================================================
834 -- *********** Local Trace Routine **********
835 --=============================================================================
836
837 C_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
838 C_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
839 C_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
840 C_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
841 C_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
842 C_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
843
844 C_LEVEL_LOG_DISABLED CONSTANT NUMBER := 99;
845 C_DEFAULT_MODULE CONSTANT VARCHAR2(240) := 'xla.plsql.xla_cmp_acct_line_type_pkg';
846
847 g_log_level NUMBER;
848 g_log_enabled BOOLEAN;
849
850 PROCEDURE trace
851 ( p_msg IN VARCHAR2
852 , p_level IN NUMBER
853 , p_module IN VARCHAR2)
854 IS
855 BEGIN
856
857 ----------------------------------------------------------------
858 -- Following is for FND log.
859 ----------------------------------------------------------------
860 IF (p_msg IS NULL AND p_level >= g_log_level) THEN
861 fnd_log.message(p_level, p_module);
862 ELSIF p_level >= g_log_level THEN
863 fnd_log.string(p_level, p_module, p_msg);
864 END IF;
865
866 EXCEPTION
867 WHEN xla_exceptions_pkg.application_exception THEN
868 RAISE;
869 WHEN OTHERS THEN
870 xla_exceptions_pkg.raise_message
871 (p_location => 'xla_cmp_acct_line_type_pkg.trace');
872 END trace;
873
874 /*---------------------------------------------------------------+
875 | |
876 | Private Function |
877 | |
878 | GetALTOption |
879 | |
880 | Generates in AcctLineType_xxx() procedure the set of journal |
881 | line type options |
882 | |
883 +---------------------------------------------------------------*/
884
885 FUNCTION GetALTOption (
886 p_acct_entry_type_code IN VARCHAR2
887 , p_gain_or_loss_flag IN VARCHAR2
888 , p_natural_side_code IN VARCHAR2
889 , p_transfer_mode_code IN VARCHAR2
890 , p_switch_side_flag IN VARCHAR2
891 , p_merge_duplicate_code IN VARCHAR2
892 )
893 RETURN VARCHAR2
894 IS
895
896 C_SET_ALT_OPTION CONSTANT VARCHAR2(10000):=
897 'l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
898 p_natural_side_code => ''$natural_side_code$''
899 , p_gain_or_loss_flag => ''$gain_or_loss_flag$''
900 , p_gl_transfer_mode_code => ''$gl_transfer_mode_code$''
901 , p_acct_entry_type_code => ''$acct_entry_type_code$''
902 , p_switch_side_flag => ''$switch_side_flag$''
903 , p_merge_duplicate_code => ''$merge_duplicate_code$''
904 );
905 --
906 l_acc_rev_natural_side_code := ''$acc_rev_natural_side_code$''; -- 4262811
907 -- ';
908
909 l_alt VARCHAR2(32000);
910 l_log_module VARCHAR2(240);
911 BEGIN
912 IF g_log_enabled THEN
913 l_log_module := C_DEFAULT_MODULE||'.GetALTOption';
914 END IF;
915 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
916 trace
917 (p_msg => 'BEGIN of GetALTOption'
918 ,p_level => C_LEVEL_PROCEDURE
919 ,p_module => l_log_module);
920
921 END IF;
922
923 l_alt := C_SET_ALT_OPTION;
924 l_alt := REPLACE(l_alt, '$natural_side_code$', p_natural_side_code);
925 l_alt := REPLACE(l_alt, '$gain_or_loss_flag$', p_gain_or_loss_flag);
926 l_alt := REPLACE(l_alt,'$gl_transfer_mode_code$', p_transfer_mode_code );
927 l_alt := REPLACE(l_alt,'$acct_entry_type_code$' , p_acct_entry_type_code);
931 -- 4262811 --------------------------------------------------------------------------------------
928 l_alt := REPLACE(l_alt,'$switch_side_flag$' , p_switch_side_flag );
929 l_alt := REPLACE(l_alt,'$merge_duplicate_code$' , p_merge_duplicate_code);
930
932 IF p_natural_side_code = 'C' THEN
933 l_alt := REPLACE(l_alt,'$acc_rev_natural_side_code$', 'D');
934 ELSE
935 l_alt := REPLACE(l_alt,'$acc_rev_natural_side_code$', 'C');
936 END IF;
937 -------------------------------------------------------------------------------------------------
938
939 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
940 trace
941 (p_msg => 'END of GetALTOption'
942 ,p_level => C_LEVEL_PROCEDURE
943 ,p_module => l_log_module);
944 END IF;
945 RETURN l_alt;
946 EXCEPTION
947 WHEN xla_exceptions_pkg.application_exception THEN
948 RETURN NULL;
949 WHEN OTHERS THEN
950 xla_exceptions_pkg.raise_message
951 (p_location => 'xla_cmp_acct_line_type_pkg.GetALTOption');
952 END GetALTOption;
953
954 /*---------------------------------------------------------------+
955 | |
956 | Private Function |
957 | |
958 | GetAcctClassCode |
959 | |
960 | Generates in AcctLineType_xxx() procedure the set Accounting |
961 | class code |
962 | |
963 +---------------------------------------------------------------*/
964
965 FUNCTION GetAcctClassCode (
966 p_accounting_class_code IN VARCHAR2
967 )
968 RETURN VARCHAR2
969 IS
970
971 C_SET_ACCT_CLASS CONSTANT VARCHAR2(10000):=
972 'xla_ae_lines_pkg.SetAcctClass(
973 p_accounting_class_code => ''$acct_class_code$''
974 , p_ae_header_id => l_ae_header_id
975 );
976 ';
977 l_alt VARCHAR2(10000);
978 l_log_module VARCHAR2(240);
979 BEGIN
980 IF g_log_enabled THEN
981 l_log_module := C_DEFAULT_MODULE||'.GetAcctClassCode';
982 END IF;
983 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
984 trace
985 (p_msg => 'BEGIN of GetAcctClassCode'
986 ,p_level => C_LEVEL_PROCEDURE
987 ,p_module => l_log_module);
988 END IF;
989 l_alt :=NULL;
990 IF p_accounting_class_code IS NOT NULL THEN
991
992 l_alt := C_SET_ACCT_CLASS;
993 l_alt := REPLACE(l_alt,'$acct_class_code$', p_accounting_class_code );
994
995 END IF;
996 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
997 trace
998 (p_msg => 'END of GetAcctClassCode'
999 ,p_level => C_LEVEL_PROCEDURE
1000 ,p_module => l_log_module);
1001 END IF;
1002 RETURN l_alt;
1003 EXCEPTION
1004 WHEN xla_exceptions_pkg.application_exception THEN
1005 RETURN NULL;
1006 WHEN OTHERS THEN
1007 xla_exceptions_pkg.raise_message
1008 (p_location => 'xla_cmp_acct_line_type_pkg.GetAcctClassCode');
1009 END GetAcctClassCode;
1010
1011 /*---------------------------------------------------------------+
1012 | |
1013 | Private Function |
1014 | |
1015 | GetAcctClassCode |
1016 | |
1017 | Generates in AcctLineType_xxx() procedure the set Ronding |
1018 | accounting class code |
1019 | |
1020 +---------------------------------------------------------------*/
1021
1022 FUNCTION GetRoundingClassCode (
1023 p_rounding_class_code IN VARCHAR2
1024 )
1025 RETURN VARCHAR2
1026 IS
1027
1028 C_SET_ROUNDING_CLASS CONSTANT VARCHAR2(1000):=
1029 'XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
1030 ''$round_class_code$'';
1031 ';
1032 l_alt VARCHAR2(10000);
1033 l_log_module VARCHAR2(240);
1034 --
1035 BEGIN
1036 IF g_log_enabled THEN
1037 l_log_module := C_DEFAULT_MODULE||'.GetRoundingClassCode';
1038 END IF;
1039 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1040 trace
1041 (p_msg => 'BEGIN of GetRoundingClassCode'
1042 ,p_level => C_LEVEL_PROCEDURE
1043 ,p_module => l_log_module);
1044 END IF;
1045
1046 l_alt :=NULL;
1047
1048 IF p_rounding_class_code IS NOT NULL THEN
1049
1050 l_alt := C_SET_ROUNDING_CLASS;
1051 l_alt := REPLACE(l_alt,'$round_class_code$', p_rounding_class_code );
1052
1053 END IF;
1054
1055 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1056 trace
1057 (p_msg => 'END of GetRoundingClassCode'
1058 ,p_level => C_LEVEL_PROCEDURE
1059 ,p_module => l_log_module);
1060 END IF;
1061 RETURN l_alt;
1062 EXCEPTION
1063 WHEN xla_exceptions_pkg.application_exception THEN
1064 RETURN NULL;
1065 WHEN OTHERS THEN
1066 xla_exceptions_pkg.raise_message
1070 /*-----------------------------------------------------------------+
1067 (p_location => 'xla_cmp_acct_line_type_pkg.GetRoundingClassCode');
1068 END GetRoundingClassCode;
1069
1071 | |
1072 | Private Function |
1073 | |
1074 | GetAccountingSources |
1075 | |
1076 | Generates in AcctLineType_xxx() procedure the set of accounting |
1077 | attribute sources |
1078 | |
1079 +-----------------------------------------------------------------*/
1080
1081 FUNCTION GetAccountingSources (
1082 p_application_id IN NUMBER
1083 , p_accounting_line_code IN VARCHAR2
1084 , p_accounting_line_type_code IN VARCHAR2
1085 , p_entity_code IN VARCHAR2
1086 , p_event_class_code IN VARCHAR2
1087 , p_amb_context_code IN VARCHAR2
1088 , p_array_acct_attr IN OUT NOCOPY xla_cmp_source_pkg.t_array_VL30 -- 4262811
1089 , p_array_acct_attr_source IN OUT NOCOPY xla_cmp_source_pkg.t_array_ByInt -- 4262811
1090 , p_array_alt_source_index IN OUT NOCOPY xla_cmp_source_pkg.t_array_ByInt
1091 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
1092 )
1093 RETURN VARCHAR2
1094 IS
1095
1096 C_SET_ACCT_SOURCES CONSTANT VARCHAR2(10000):=
1097 ' l_rec_acct_attrs.array_acct_attr_code($index$) := ''$accounting_attribute$'';
1098 l_rec_acct_attrs.array_$datatype$_value($index$) := $source$;
1099 ';
1100
1101 CURSOR source_cur
1102 IS
1103 SELECT DISTINCT
1104 xals.accounting_attribute_code
1105 , xals.source_code
1106 , xals.source_type_code
1107 , xals.source_application_id
1108 , xaa.datatype_code
1109 FROM xla_jlt_acct_attrs xals
1110 ,xla_acct_attributes_b xaa
1111 WHERE xals.application_id = p_application_id
1112 AND xals.accounting_line_code = p_accounting_line_code
1113 AND xals.accounting_line_type_code = p_accounting_line_type_code
1114 AND xals.amb_context_code = p_amb_context_code
1115 AND xals.event_class_code = p_event_class_code
1116 AND xals.source_code IS NOT NULL -- 4219869 Business Flow
1117 AND xals.accounting_attribute_code = xaa.accounting_attribute_code
1118 union
1119 SELECT DISTINCT
1120 xals.accounting_attribute_code
1121 , xals.source_code
1122 , xals.source_type_code
1123 , xals.source_application_id
1124 , xaa.datatype_code
1125 FROM xla_evt_class_acct_attrs xals
1126 ,xla_acct_attributes_b xaa
1127 WHERE xals.application_id = p_application_id
1128 AND xals.event_class_code = p_event_class_code
1129 AND xaa.assignment_level_code = 'EVT_CLASS_ONLY'
1130 AND xaa.accounting_attribute_code=xals.accounting_attribute_code
1131 AND xals.default_flag = 'Y'
1132 AND xaa.journal_entry_level_code in ('L', 'C')
1133 UNION
1134 SELECT DISTINCT -- 4482069 To populate the transaction currency. Needed in BusinessFlowPriorEntries.
1135 xals.accounting_attribute_code
1136 , xals.source_code
1137 , xals.source_type_code
1138 , xals.source_application_id
1139 , xaa.datatype_code
1140 FROM xla_evt_class_acct_attrs xals
1141 ,xla_acct_attributes_b xaa
1142 ,xla_jlt_acct_attrs xjaa
1143 WHERE xals.application_id = p_application_id
1144 AND xals.event_class_code = p_event_class_code
1145 AND xaa.accounting_attribute_code=xals.accounting_attribute_code
1146 AND xals.default_flag = 'Y'
1147 AND xals.accounting_attribute_code = 'ENTERED_CURRENCY_CODE'
1148 AND xjaa.application_id = p_application_id
1149 AND xjaa.accounting_line_code = p_accounting_line_code
1150 AND xjaa.accounting_line_type_code = p_accounting_line_type_code
1151 AND xjaa.amb_context_code = p_amb_context_code
1152 AND xjaa.event_class_code = p_event_class_code
1153 AND xjaa.source_code IS NULL
1154 AND xjaa.accounting_attribute_code = xaa.accounting_attribute_code
1155 ;
1156
1157 l_alt VARCHAR2(32000);
1158 l_temp VARCHAR2(10000);
1159 l_array_acct_source_code xla_cmp_source_pkg.t_array_VL30;
1160 l_array_source_code xla_cmp_source_pkg.t_array_VL30;
1161 l_array_source_type_code xla_cmp_source_pkg.t_array_VL1;
1162 l_array_acct_data_type_code xla_cmp_source_pkg.t_array_VL1;
1163 l_array_application_id xla_cmp_source_pkg.t_array_Num;
1164 l_source_Idx BINARY_INTEGER;
1165 l_index NUMBER;
1166 l_log_module VARCHAR2(240);
1167 BEGIN
1168 IF g_log_enabled THEN
1169 l_log_module := C_DEFAULT_MODULE||'.GetAccountingSources';
1170 END IF;
1171 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1172
1173 trace
1174 (p_msg => 'BEGIN of GetAccountingSources'
1175 ,p_level => C_LEVEL_PROCEDURE
1176 ,p_module => l_log_module);
1177
1178 END IF;
1179
1180 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1181 trace
1185 ,p_level => C_LEVEL_STATEMENT
1182 (p_msg => 'p_accounting_line_code = '||p_accounting_line_code||
1183 ' - p_accounting_line_type_code = '||p_accounting_line_type_code||
1184 '# SQL - Fetch xla_acct_line_sources '
1186 ,p_module => l_log_module);
1187 END IF;
1188
1189 l_index := 0;
1190
1191 OPEN source_cur;
1192
1193 FETCH source_cur BULK COLLECT INTO l_array_acct_source_code
1194 , l_array_source_code
1195 , l_array_source_type_code
1196 , l_array_application_id
1197 , l_array_acct_data_type_code
1198 ;
1199 CLOSE source_cur;
1200
1201 l_alt := C_LINE_ACCT_BODY; -- 4262811
1202
1203 IF l_array_acct_source_code.COUNT > 0 THEN
1204 FOR Idx IN l_array_acct_source_code.FIRST .. l_array_acct_source_code.LAST LOOP
1205
1206 IF l_array_source_code(Idx) IS NOT NULL THEN
1207 l_index := l_index + 1;
1208
1209 l_source_Idx := xla_cmp_source_pkg.StackSource (
1210 p_source_code => l_array_source_code(Idx)
1211 , p_source_type_code => l_array_source_type_code(Idx)
1212 , p_source_application_id => l_array_application_id(Idx)
1213 , p_array_source_index => p_array_alt_source_index
1214 , p_rec_sources => p_rec_sources
1215 );
1216
1217 l_alt := l_alt || C_SET_ACCT_SOURCES ;
1218
1219 l_alt := REPLACE(l_alt,'$index$',to_char(l_index));
1220 l_alt := REPLACE(l_alt,'$accounting_attribute$',l_array_acct_source_code(Idx));
1221
1222 IF l_array_acct_data_type_code(Idx) = 'C' and p_rec_sources.array_datatype_code(l_source_Idx) = 'N' THEN
1223 l_temp:=xla_cmp_source_pkg.GenerateSource(
1224 p_Index => l_source_Idx
1225 , p_rec_sources => p_rec_sources
1226 , p_translated_flag => 'N');
1227 IF(l_temp is null) THEN
1228 l_temp := ' null';
1229 ELSE
1230 l_temp := ' to_char('||l_temp||')';
1231 END IF;
1232 l_alt := REPLACE(l_alt,'$source$' , l_temp);
1233 ELSE
1234 l_alt := REPLACE(l_alt,'$source$' ,
1235 nvl(xla_cmp_source_pkg.GenerateSource(
1236 p_Index => l_source_Idx
1237 , p_rec_sources => p_rec_sources
1238 , p_translated_flag => 'N'),' null')
1239 );
1240 END IF;
1241
1242 CASE p_rec_sources.array_datatype_code(l_source_Idx)
1243 WHEN 'F' THEN
1244 l_alt := REPLACE(l_alt,'$datatype$','num') ;
1245 WHEN 'I' THEN
1246 l_alt := REPLACE(l_alt,'$datatype$','num') ;
1247 WHEN 'N' THEN
1248 l_alt := REPLACE(l_alt,'$datatype$','num') ;
1249 /*
1250 IF l_array_acct_data_type_code(Idx) = 'C' THEN
1251 l_alt := REPLACE(l_alt,'$datatype$','char') ;
1252 ELSE
1253 l_alt := REPLACE(l_alt,'$datatype$','num') ;
1254 END IF;
1255 */
1256 WHEN 'C' THEN
1257 l_alt := REPLACE(l_alt,'$datatype$','char') ;
1258 WHEN 'D' THEN
1259 l_alt := REPLACE(l_alt,'$datatype$','date') ;
1260 ELSE
1261 l_alt := REPLACE(l_alt,'$datatype$',p_rec_sources.array_datatype_code(l_source_Idx)) ;
1262 END CASE;
1263
1264 ---------------------------------------------------------------------------------------------
1265 -- 4262811
1266 ---------------------------------------------------------------------------------------------
1267 p_array_acct_attr(Idx) := l_array_acct_source_code(Idx);
1268 p_array_acct_attr_source(Idx) := l_source_idx;
1269
1270 ---------------------------------------------------------------------------------------------
1271 -- 4262811 - for C_LINE_ACCT_BODY: entered_amt_idx, accted_amt_idx
1272 ---------------------------------------------------------------------------------------------
1273 IF (l_array_acct_source_code(Idx) = 'ENTERED_CURRENCY_AMOUNT') THEN
1274 l_alt := REPLACE(l_alt, '$entered_amt_idx$', to_char(l_index));
1275 END IF;
1276 --
1277 IF (l_array_acct_source_code(Idx) = 'LEDGER_AMOUNT') THEN
1278 l_alt := REPLACE(l_alt, '$accted_amt_idx$', to_char(l_index));
1279 END IF;
1280 --
1281 ---------------------------------------------------------------------------------------------
1282 -- 5132302
1283 ---------------------------------------------------------------------------------------------
1284 IF (l_array_acct_source_code(Idx) = 'APPLIED_TO_AMOUNT') THEN
1285 l_alt := REPLACE(l_alt, '$bflow_applied_to_amt_idx$', to_char(l_index));
1286 END IF;
1287 --------------------------------------------------------------------------------------------
1288
1289 END IF;
1290
1291 END LOOP;
1292 ELSE
1293 l_alt := 'null;';
1294 END IF;
1295
1296 -----------------------------------------------------------------------------------------
1297 -- 4262811 - if not set above, then following will set it to null
1301 l_alt := REPLACE(l_alt, '$accted_amt_idx$','NULL');
1298 -----------------------------------------------------------------------------------------
1299 l_alt := REPLACE(l_alt, '$bflow_applied_to_amt_idx$','NULL'); -- 5132302
1300 l_alt := REPLACE(l_alt, '$entered_amt_idx$','NULL');
1302
1303 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1304 trace
1305 (p_msg => 'END of GetAccountingSources = '||length(l_alt)
1306 ,p_level => C_LEVEL_PROCEDURE
1307 ,p_module => l_log_module);
1308
1309 END IF;
1310
1311 RETURN l_alt;
1312
1313 EXCEPTION
1314 WHEN VALUE_ERROR THEN
1315 IF source_cur%ISOPEN THEN CLOSE source_cur; END IF;
1316 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1317 trace
1318 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR='||sqlerrm
1319 ,p_level => C_LEVEL_EXCEPTION
1320 ,p_module => l_log_module);
1321 END IF;
1322 RETURN NULL;
1323 WHEN xla_exceptions_pkg.application_exception THEN
1324 IF source_cur%ISOPEN THEN CLOSE source_cur; END IF;
1325 RETURN NULL;
1326 WHEN OTHERS THEN
1327 IF source_cur%ISOPEN THEN CLOSE source_cur; END IF;
1328 xla_exceptions_pkg.raise_message
1329 (p_location => 'xla_cmp_acct_line_type_pkg.GetAccountingSources');
1330 END GetAccountingSources;
1331
1332 /*-----------------------------------------------------------------+
1333 | |
1334 | Private Function |
1335 | |
1336 | GetCallAnalyticCriteria |
1337 | |
1338 | Generates in AcctLineType_xxx() the set of analytical criteria |
1339 | |
1340 +-----------------------------------------------------------------*/
1341
1342 FUNCTION GetCallAnalyticCriteria (
1343 p_application_id IN NUMBER
1344 , p_amb_context_code IN VARCHAR2
1345 , p_event_class IN VARCHAR2
1346 , p_event_type IN VARCHAR2
1347 , p_line_definition_code IN VARCHAR2
1348 , p_line_definition_owner_code IN VARCHAR2
1349 , p_accounting_line_code IN VARCHAR2
1350 , p_accounting_line_type_code IN VARCHAR2
1351 , p_array_alt_source_index IN OUT NOCOPY xla_cmp_source_pkg.t_array_ByInt
1352 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
1353 )
1354 RETURN CLOB
1355 IS
1356 l_analytic_criteria CLOB; -- VARCHAR2(32000);
1357 l_log_module VARCHAR2(240);
1358 BEGIN
1359 IF g_log_enabled THEN
1360 l_log_module := C_DEFAULT_MODULE||'.GetCallAnalyticCriteria';
1361 END IF;
1362 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1363 trace
1364 (p_msg => 'BEGIN of GetCallAnalyticCriteria'
1365 ,p_level => C_LEVEL_PROCEDURE
1366 ,p_module => l_log_module);
1367 END IF;
1368 --
1369 l_analytic_criteria := xla_cmp_analytic_criteria_pkg.GenerateLineAnalyticCriteria(
1370 p_application_id => p_application_id
1371 , p_amb_context_code => p_amb_context_code
1372 , p_event_class => p_event_class
1373 , p_event_type => p_event_type
1374 , p_line_definition_owner_code => p_line_definition_owner_code
1375 , p_line_definition_code => p_line_definition_code
1376 , p_accounting_line_code => p_accounting_line_code
1377 , p_accounting_line_type_code => p_accounting_line_type_code
1378 , p_array_alt_source_index => p_array_alt_source_index
1379 , p_rec_sources => p_rec_sources
1380 );
1381 --
1382 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1383
1384 trace
1385 (p_msg => 'END of GetCallAnalyticCriteria'
1386 ,p_level => C_LEVEL_PROCEDURE
1387 ,p_module => l_log_module);
1388
1389 END IF;
1390 RETURN l_analytic_criteria;
1391 --
1392 EXCEPTION
1393 WHEN VALUE_ERROR THEN
1394 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1395 trace
1396 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR='||sqlerrm
1397 ,p_level => C_LEVEL_EXCEPTION
1398 ,p_module => l_log_module);
1399 END IF;
1400 RETURN NULL;
1401 WHEN xla_exceptions_pkg.application_exception THEN
1402 RETURN NULL;
1403 WHEN OTHERS THEN
1404 xla_exceptions_pkg.raise_message
1405 (p_location => 'xla_cmp_acct_line_type_pkg.GetCallAnalyticCriteria');
1406 END GetCallAnalyticCriteria;
1407
1408 /*---------------------------------------------------------------+
1409 | |
1410 | Private Function |
1411 | |
1412 | GetOverrideSegFLag |
1413 | | |
1414 | Check if segments overrides ccid or not |
1418 p_array_adr_segment_code IN xla_cmp_source_pkg.t_array_VL30
1415 +---------------------------------------------------------------*/
1416
1417 FUNCTION GetOverrideSegFlag (
1419 )
1420 RETURN VARCHAR2
1421 IS
1422
1423 l_override_seg_flag VARCHAR2(1);
1424 l_log_module VARCHAR2(240);
1425 BEGIN
1426 IF g_log_enabled THEN
1427 l_log_module := C_DEFAULT_MODULE||'.GetOverrideSegFlag';
1428 END IF;
1429 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1430 trace
1431 (p_msg => 'BEGIN of GetOverrideSegFlag'
1432 ,p_level => C_LEVEL_PROCEDURE
1433 ,p_module => l_log_module);
1434 END IF;
1435
1436 l_override_seg_flag := 'N';
1437
1438 IF p_array_adr_segment_code.COUNT > 0 THEN
1439 FOR i IN p_array_adr_segment_code.FIRST .. p_array_adr_segment_code.LAST LOOP
1440
1441 IF p_array_adr_segment_code(i) = 'ALL' THEN
1442 --
1443 -- 'All Segments' does exist
1444 --
1445 l_override_seg_flag := 'Y';
1446
1447 --
1448 -- Exit Loop;
1449 --
1450 EXIT;
1451
1452 END IF;
1453
1454 END LOOP;
1455 END IF;
1456
1457 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1458 trace
1459 (p_msg => 'END of GetOverrideSegFlag'
1460 ,p_level => C_LEVEL_PROCEDURE
1461 ,p_module => l_log_module);
1462 END IF;
1463
1464 RETURN l_override_seg_flag;
1465
1466 EXCEPTION
1467 WHEN xla_exceptions_pkg.application_exception THEN
1468 RETURN NULL;
1469 WHEN OTHERS THEN
1470 xla_exceptions_pkg.raise_message
1471 (p_location => 'xla_cmp_acct_line_type_pkg.GetOverrideSegFlag');
1472 END GetOverrideSegFlag;
1473
1474
1475 /*---------------------------------------------------------+
1476 | |
1477 | Private Function |
1478 | |
1479 | GenerateCallDescription |
1480 | |
1481 | Generates in AcctLineType_xxx() a call to appropriate |
1482 | Description_x() function (description assigned to |
1483 | journal line definition). |
1484 | |
1485 +----------------------------------------------------------*/
1486
1487 FUNCTION GenerateCallDescription (
1488 p_application_id IN NUMBER
1489 , p_description_type_code IN VARCHAR2
1490 , p_description_code IN VARCHAR2
1491 , p_header_line IN VARCHAR2
1492 , p_array_alt_source_index IN OUT NOCOPY xla_cmp_source_pkg.t_array_ByInt
1493 , p_rec_aad_objects IN xla_cmp_source_pkg.t_rec_aad_objects
1494 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
1495 )
1496 RETURN CLOB
1497 IS
1498
1499 C_CALL_LINE_DESC CONSTANT VARCHAR2(10000):= '
1500 xla_ae_lines_pkg.SetLineDescription(
1501 p_ae_header_id => l_ae_header_id
1502 ,p_description => Description_$desc_index$ (
1503 p_application_id => p_application_id
1504 , p_ae_header_id => l_ae_header_id $parameters$
1505 )
1506 );
1507
1508 '; -- C_CALL_LINE_DESC
1509
1510
1511 l_desc CLOB;
1512 l_ObjectIndex BINARY_INTEGER;
1513 l_ObjectType VARCHAR2(1);
1514 l_log_module VARCHAR2(240);
1515 BEGIN
1516 IF g_log_enabled THEN
1517 l_log_module := C_DEFAULT_MODULE||'.GenerateCallDescription';
1518 END IF;
1519 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1520 trace
1521 (p_msg => 'BEGIN of GenerateCallDescription'
1522 ,p_level => C_LEVEL_PROCEDURE
1523 ,p_module => l_log_module);
1524 END IF;
1525
1526 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1527 trace
1528 (p_msg => 'application_id = ' ||p_application_id ||
1529 ' - p_description_type_code = ' ||p_description_type_code ||
1530 ' - p_description_code = ' ||p_description_code
1531 ,p_level => C_LEVEL_STATEMENT
1532 ,p_module => l_log_module);
1533 END IF;
1534
1535 l_desc := NULL;
1536
1537 IF p_application_id IS NOT NULL AND
1538 p_description_type_code IS NOT NULL AND
1539 p_description_code IS NOT NULL
1540 THEN
1541 l_ObjectIndex :=xla_cmp_source_pkg.GetAADObjectPosition(
1542 p_object => xla_cmp_source_pkg.C_DESC
1543 , p_object_code => p_description_code
1544 , p_object_type_code => p_description_type_code
1545 , p_application_id => p_application_id
1546 , p_rec_aad_objects => p_rec_aad_objects
1547 );
1548
1549 l_ObjectType:= xla_cmp_source_pkg.C_DESC;
1550
1551 IF l_ObjectIndex IS NOT NULL THEN
1552
1553 IF p_header_line = 'L' THEN -- 4262811
1554 xla_cmp_source_pkg.GetSourcesInAADObject(
1555 p_object => l_ObjectType
1556 , p_object_code => p_description_code
1560 , p_rec_aad_objects => p_rec_aad_objects
1557 , p_object_type_code => p_description_type_code
1558 , p_application_id => p_application_id
1559 , p_array_source_Index => p_array_alt_source_index
1561 );
1562
1563 l_desc := C_CALL_LINE_DESC;
1564 l_desc := xla_cmp_string_pkg.replace_token(l_desc,'$desc_index$',TO_CHAR(l_ObjectIndex)); -- 4417664
1565 l_desc := xla_cmp_string_pkg.replace_token(l_desc,'$parameters$',
1566 xla_cmp_call_fct_pkg.GetSourceParameters(
1567 p_array_source_index => p_rec_aad_objects.array_array_object(l_ObjectIndex)
1568 , p_rec_sources => p_rec_sources
1569 )
1570 );
1571 --------------------------------------------------------------------------------------------------------------
1572 -- 4262811 to call xla_ae_header_pkg.SetHdrDescription in Multiperiod Accounting Option inside AcctLineType_xx
1573 --------------------------------------------------------------------------------------------------------------
1574 ELSE -- p_header_line = 'H'
1575
1576 -- 4590313 --------------------------------------------------------------
1577 xla_cmp_source_pkg.GetSourcesInAADObject(
1578 p_object => l_ObjectType
1579 , p_object_code => p_description_code
1580 , p_object_type_code => p_description_type_code
1581 , p_application_id => p_application_id
1582 , p_array_source_Index => p_array_alt_source_index
1583 , p_rec_aad_objects => p_rec_aad_objects);
1584 -------------------------------------------------------------------------
1585
1586 l_desc := xla_cmp_event_type_pkg.GenerateHdrDescription(
1587 p_hdr_description_index => l_ObjectIndex
1588 , p_rec_aad_objects => p_rec_aad_objects
1589 , p_rec_sources => p_rec_sources
1590 );
1591 END IF;
1592
1593 ELSE
1594
1595 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1596 trace
1597 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR= issue to generate a call to description ='
1598 ||p_description_code
1599 ||' - '||p_description_type_code
1600 ||' - '||p_application_id
1601
1602 ,p_level => C_LEVEL_EXCEPTION
1603 ,p_module => l_log_module);
1604 END IF;
1605 l_desc :=NULL;
1606 END IF;
1607
1608 END IF;
1609
1610 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1611 trace
1612 (p_msg => 'END of GenerateCallDescription '
1613 ,p_level => C_LEVEL_PROCEDURE
1614 ,p_module => l_log_module);
1615 END IF;
1616 RETURN l_desc;
1617 EXCEPTION
1618 WHEN VALUE_ERROR THEN
1619 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1620 trace
1621 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR='||sqlerrm
1622 ,p_level => C_LEVEL_EXCEPTION
1623 ,p_module => l_log_module);
1624 END IF;
1625 RETURN NULL;
1626 WHEN xla_exceptions_pkg.application_exception THEN
1627 RETURN NULL;
1628 WHEN OTHERS THEN
1629 xla_exceptions_pkg.raise_message
1630 (p_location => 'xla_cmp_acct_line_type_pkg.GenerateCallDescription');
1631 END GenerateCallDescription;
1632
1633
1634 /*---------------------------------------------------------+
1635 | |
1636 | Public Function |
1637 | |
1638 | GenerateADRCalls - 4262811 |
1639 | |
1640 | |
1641 +----------------------------------------------------------*/
1642
1643 FUNCTION GenerateADRCalls (
1644 p_application_id IN NUMBER
1645 , p_entity_code IN VARCHAR2
1646 , p_event_class_code IN VARCHAR2
1647 , p_array_adr_type_code IN xla_cmp_source_pkg.t_array_VL1
1648 , p_array_adr_code IN xla_cmp_source_pkg.t_array_VL30
1649 , p_array_adr_segment_code IN xla_cmp_source_pkg.t_array_VL30
1650 , p_array_side_code IN xla_cmp_source_pkg.t_array_VL30
1651 , p_array_adr_appl_id IN xla_cmp_source_pkg.t_array_NUM
1652 , p_array_inherit_adr_flag IN xla_cmp_source_pkg.t_array_VL1
1653 , p_bflow_method_code IN VARCHAR2 -- 4655713
1654 , p_array_accounting_coa_id IN xla_cmp_source_pkg.t_array_NUM
1655 , p_array_transaction_coa_id IN xla_cmp_source_pkg.t_array_NUM
1656 , p_array_alt_source_index IN OUT NOCOPY xla_cmp_source_pkg.t_array_ByInt
1657 , p_rec_aad_objects IN xla_cmp_source_pkg.t_rec_aad_objects
1658 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
1659 )
1660 RETURN CLOB
1661 IS
1662 l_adrs CLOB;
1663 l_adr CLOB;
1664 l_ObjectIndex BINARY_INTEGER;
1665 l_log_module VARCHAR2(240);
1666
1667 --ccid ADR
1671 p_application_id => p_application_id
1668 C_CALL_SET_CCID CONSTANT VARCHAR2(10000):=
1669 '
1670 l_ccid := AcctDerRule_$adr_index$(
1672 , p_ae_header_id => l_ae_header_id $parameters$
1673 , x_transaction_coa_id => l_adr_transaction_coa_id
1674 , x_accounting_coa_id => l_adr_accounting_coa_id
1675 , x_value_type_code => l_adr_value_type_code
1676 , p_side => ''$Side$''
1677 );
1678
1679 xla_ae_lines_pkg.set_ccid(
1680 p_code_combination_id => l_ccid
1681 , p_value_type_code => l_adr_value_type_code
1682 , p_transaction_coa_id => l_adr_transaction_coa_id
1683 , p_accounting_coa_id => l_adr_accounting_coa_id
1684 , p_adr_code => ''$adr_code$''
1685 , p_adr_type_code => ''$adr_type_code$''
1686 , p_component_type => l_component_type
1687 , p_component_code => l_component_code
1688 , p_component_type_code => l_component_type_code
1689 , p_component_appl_id => l_component_appl_id
1690 , p_amb_context_code => l_amb_context_code
1691 , p_side => ''$Side$''
1692 );
1693
1694 ';
1695 --segment ADR
1696 C_CALL_SET_SEGMENT CONSTANT VARCHAR2(10000):=
1697 '
1698 l_segment := AcctDerRule_$adr_index$(
1699 p_application_id => p_application_id
1700 , p_ae_header_id => l_ae_header_id $parameters$
1701 , x_transaction_coa_id => l_adr_transaction_coa_id
1702 , x_accounting_coa_id => l_adr_accounting_coa_id
1703 , x_flexfield_segment_code => l_adr_flexfield_segment_code
1704 , x_flex_value_set_id => l_adr_flex_value_set_id
1705 , x_value_type_code => l_adr_value_type_code
1706 , x_value_combination_id => l_adr_value_combination_id
1707 , x_value_segment_code => l_adr_value_segment_code
1708 , p_side => ''$Side$''
1709 , p_override_seg_flag => ''$override_seg_flag$''
1710 );
1711
1712 IF NVL(l_segment,''NULL'') <> ''#$NO_OVERRIDE#$'' THEN -- 4465612
1713
1714 xla_ae_lines_pkg.set_segment(
1715 p_to_segment_code => ''$segment_code$''
1716 , p_segment_value => l_segment
1717 , p_from_segment_code => l_adr_value_segment_code
1718 , p_from_combination_id => l_adr_value_combination_id
1719 , p_value_type_code => l_adr_value_type_code
1720 , p_transaction_coa_id => l_adr_transaction_coa_id
1721 , p_accounting_coa_id => l_adr_accounting_coa_id
1722 , p_flexfield_segment_code => l_adr_flexfield_segment_code
1723 , p_flex_value_set_id => l_adr_flex_value_set_id
1724 , p_adr_code => ''$adr_code$''
1725 , p_adr_type_code => ''$adr_type_code$''
1726 , p_component_type => l_component_type
1727 , p_component_code => l_component_code
1728 , p_component_type_code => l_component_type_code
1729 , p_component_appl_id => l_component_appl_id
1730 , p_amb_context_code => l_amb_context_code
1731 , p_entity_code => ''$entity_code$''
1732 , p_event_class_code => ''$event_class_code$''
1733 , p_side => ''$Side$''
1734 );
1735
1736 END IF;
1737 ';
1738
1739 -----------------------------------------------------------------
1740 -- Insert CCID - 4219869 Business Flow
1741 -- This is the template use for the xla_ae_lines_pkg.SetCcid API.
1742 -----------------------------------------------------------------
1743 C_CCID CONSTANT VARCHAR2(10000):='
1744 xla_ae_lines_pkg.Set_Ccid( -- replaced SetCcid
1745 p_code_combination_id => TO_NUMBER(C_NUM)
1746 , p_value_type_code => NULL
1747 , p_transaction_coa_id => $transaction_coa_id$
1748 , p_accounting_coa_id => $accounting_coa_id$
1749 , p_adr_code => NULL
1750 , p_adr_type_code => NULL
1751 , p_component_type => l_component_type
1752 , p_component_code => l_component_code
1753 , p_component_type_code => l_component_type_code
1754 , p_component_appl_id => l_component_appl_id
1755 , p_amb_context_code => l_amb_context_code
1756 , p_side => NULL
1757 );
1758
1759 $default_segments$
1760 --
1761 ';
1762
1763 -----------------------------------------------------------------
1764 -- Default segments - 4655713
1765 -----------------------------------------------------------------
1766 C_DEFAULT_SEGMENTS CONSTANT VARCHAR2(10000):='
1767 -- initialise segments
1768 XLA_AE_LINES_PKG.g_rec_lines.array_segment1(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1769 XLA_AE_LINES_PKG.g_rec_lines.array_segment2(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1770 XLA_AE_LINES_PKG.g_rec_lines.array_segment3(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1771 XLA_AE_LINES_PKG.g_rec_lines.array_segment4(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1772 XLA_AE_LINES_PKG.g_rec_lines.array_segment5(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1773 XLA_AE_LINES_PKG.g_rec_lines.array_segment6(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1774 XLA_AE_LINES_PKG.g_rec_lines.array_segment7(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1775 XLA_AE_LINES_PKG.g_rec_lines.array_segment8(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1779 XLA_AE_LINES_PKG.g_rec_lines.array_segment12(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1776 XLA_AE_LINES_PKG.g_rec_lines.array_segment9(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1777 XLA_AE_LINES_PKG.g_rec_lines.array_segment10(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1778 XLA_AE_LINES_PKG.g_rec_lines.array_segment11(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1780 XLA_AE_LINES_PKG.g_rec_lines.array_segment13(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1781 XLA_AE_LINES_PKG.g_rec_lines.array_segment14(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1782 XLA_AE_LINES_PKG.g_rec_lines.array_segment15(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1783 XLA_AE_LINES_PKG.g_rec_lines.array_segment16(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1784 XLA_AE_LINES_PKG.g_rec_lines.array_segment17(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1785 XLA_AE_LINES_PKG.g_rec_lines.array_segment18(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1786 XLA_AE_LINES_PKG.g_rec_lines.array_segment19(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1787 XLA_AE_LINES_PKG.g_rec_lines.array_segment20(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1788 XLA_AE_LINES_PKG.g_rec_lines.array_segment21(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1789 XLA_AE_LINES_PKG.g_rec_lines.array_segment22(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1790 XLA_AE_LINES_PKG.g_rec_lines.array_segment23(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1791 XLA_AE_LINES_PKG.g_rec_lines.array_segment24(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1792 XLA_AE_LINES_PKG.g_rec_lines.array_segment25(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1793 XLA_AE_LINES_PKG.g_rec_lines.array_segment26(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1794 XLA_AE_LINES_PKG.g_rec_lines.array_segment27(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1795 XLA_AE_LINES_PKG.g_rec_lines.array_segment28(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1796 XLA_AE_LINES_PKG.g_rec_lines.array_segment29(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1797 XLA_AE_LINES_PKG.g_rec_lines.array_segment30(XLA_AE_LINES_PKG.g_LineNumber) := C_CHAR;
1798 --
1799 ';
1800
1801 -----------------------------------------------------------------
1802 -- Insert Segment- 4219869 Business Flow
1803 -- This is the template use for the xla_ae_lines_pkg.Set_Segment API.
1804 -----------------------------------------------------------------
1805 C_SEGMENT CONSTANT VARCHAR2(10000):='
1806 xla_ae_lines_pkg.Set_Segment( -- replaced SetSegment
1807 p_to_segment_code => ''$flexfield_segment_code$''
1808 , p_segment_value => C_CHAR
1809 , p_from_segment_code => NULL
1810 , p_from_combination_id => NULL
1811 , p_value_type_code => NULL
1812 , p_transaction_coa_id => $transaction_coa_id$
1813 , p_accounting_coa_id => $accounting_coa_id$
1814 , p_flexfield_segment_code => NULL
1815 , p_flex_value_set_id => NULL
1816 , p_adr_code => NULL
1817 , p_adr_type_code => NULL
1818 , p_component_type => l_component_type
1819 , p_component_code => l_component_code
1820 , p_component_type_code => l_component_type_code
1821 , p_component_appl_id => l_component_appl_id
1822 , p_amb_context_code => l_amb_context_code
1823 , p_entity_code => ''$entity_code$''
1824 , p_event_class_code => ''$event_class_code$''
1825 , p_side => ''$Side$''
1826 );
1827 --
1828 ';
1829
1830 --
1831
1832 BEGIN
1833 IF g_log_enabled THEN
1834 l_log_module := C_DEFAULT_MODULE||'.GenerateADRCalls';
1835 END IF;
1836 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1837
1838 trace
1839 (p_msg => 'BEGIN of GenerateADRCalls'
1840 ,p_level => C_LEVEL_PROCEDURE
1841 ,p_module => l_log_module);
1842
1843 END IF;
1844
1845
1846 l_adrs := NULL;
1847 l_adr := NULL;
1848
1849 -- START ----------------------------------------------------------------------------------------------------
1850 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1851 trace(p_msg => '# ADR = '||p_array_adr_code.COUNT
1852 ,p_level => C_LEVEL_STATEMENT
1853 ,p_module => l_log_module);
1854 END IF;
1855
1856 IF p_array_adr_code.COUNT > 0 THEN
1857
1858 FOR Idx IN p_array_adr_code.FIRST .. p_array_adr_code.LAST LOOP
1859
1860 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1861
1862 trace
1863 (p_msg => 'array_inherit_adr_flag = '||p_array_inherit_adr_flag(Idx)
1864 ,p_level => C_LEVEL_STATEMENT
1865 ,p_module => l_log_module);
1866
1867 trace
1868 (p_msg => 'array_accounting_coa_id = '||to_char(p_array_accounting_coa_id(Idx))
1869 ,p_level => C_LEVEL_STATEMENT
1870 ,p_module => l_log_module);
1871
1872 trace
1873 (p_msg => 'array_transaction_coa_id = '||to_char(p_array_transaction_coa_id(Idx))
1874 ,p_level => C_LEVEL_STATEMENT
1875 ,p_module => l_log_module);
1876
1877 trace
1878 (p_msg => 'bflow_method = '||p_bflow_method_code
1879 ,p_level => C_LEVEL_STATEMENT
1880 ,p_module => l_log_module);
1881
1882 END IF;
1883
1884 ----------------------------------------------------
1885 -- 4219869
1886 -- To inherit ADR segments for Business Flow
1887 ----------------------------------------------------
1888 IF NVL(p_array_inherit_adr_flag(Idx),'N') = 'Y' THEN
1892 l_adr := REPLACE(C_CCID,'$transaction_coa_id$' ,TO_CHAR(p_array_transaction_coa_id(Idx)));
1889 IF (p_array_adr_segment_code(Idx) = 'ALL') THEN
1890
1891 IF p_array_transaction_coa_id(Idx) IS NOT NULL THEN
1893 ELSE
1894 l_adr := REPLACE(C_CCID,'$transaction_coa_id$' ,'null');
1895 END IF;
1896
1897 IF p_array_accounting_coa_id(Idx) IS NOT NULL THEN
1898 l_adr := xla_cmp_string_pkg.replace_token(l_adr,'$accounting_coa_id$' ,TO_CHAR(p_array_accounting_coa_id(Idx))); -- 4417664
1899 ELSE
1900 l_adr := xla_cmp_string_pkg.replace_token(l_adr,'$accounting_coa_id$' ,'null'); -- 4417664
1901 END IF;
1902
1903 -- 4655713 initialis all segments to C_CHAR ------------------------------------------------------
1904 IF NVL(p_bflow_method_code,C_METHOD_NONE) = C_METHOD_SAME THEN
1905 l_adr := xla_cmp_string_pkg.replace_token(l_adr,'$default_segments$' , C_DEFAULT_SEGMENTS);
1906 ELSE
1907 l_adr := xla_cmp_string_pkg.replace_token(l_adr,'$default_segments$' ,'-- Business flow method is NONE.');
1908 END IF;
1909 --------------------------------------------------------------------------------------------------
1910
1911 l_adr := l_adr || g_chr_newline;
1912 l_adrs := l_adrs || l_adr;
1913 ELSE
1914
1915 IF p_array_transaction_coa_id(Idx) IS NOT NULL THEN
1916 l_adr := REPLACE(C_SEGMENT,'$transaction_coa_id$' ,TO_CHAR(p_array_transaction_coa_id(Idx)));
1917 ELSE
1918 l_adr := REPLACE(C_SEGMENT,'$transaction_coa_id$' ,'null');
1919 END IF;
1920
1921 IF p_array_accounting_coa_id(Idx) IS NOT NULL THEN
1922 l_adr := xla_cmp_string_pkg.replace_token(l_adr,'$accounting_coa_id$' ,TO_CHAR(p_array_accounting_coa_id(Idx))); -- 4417664
1923 ELSE
1924 l_adr := xla_cmp_string_pkg.replace_token(l_adr,'$accounting_coa_id$' ,'null'); -- 4417664
1925 END IF;
1926
1927 l_adr := xla_cmp_string_pkg.replace_token(l_adr, '$flexfield_segment_code$' , p_array_adr_segment_code(Idx)); -- 4417664
1928 l_adr := xla_cmp_string_pkg.replace_token(l_adr, '$Side$',p_array_side_code(Idx)); -- 4417664
1929 l_adr := xla_cmp_string_pkg.replace_token(l_adr, '$entity_code$', p_entity_code ); -- 4417664
1930 l_adr := xla_cmp_string_pkg.replace_token(l_adr, '$event_class_code$', p_event_class_code); -- 4417664
1931 l_adr := l_adr || g_chr_newline;
1932 l_adrs := l_adrs || l_adr;
1933
1934 END IF;
1935
1936 ELSIF p_array_adr_code.EXISTS(Idx) THEN
1937
1938 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1939 trace(p_msg => ' # ADR code = '||p_array_adr_code(Idx)||
1940 ' - ADR owner = '||p_array_adr_type_code(Idx)||
1941 ' - ADR type = '||p_array_adr_segment_code(Idx)
1942 ,p_level => C_LEVEL_STATEMENT
1943 ,p_module => l_log_module);
1944
1945 END IF;
1946
1947
1948 l_ObjectIndex := xla_cmp_source_pkg.GetAADObjectPosition(
1949 p_object => xla_cmp_source_pkg.C_ADR
1950 , p_object_code => p_array_adr_code(Idx)
1951 , p_object_type_code => p_array_adr_type_code(Idx)
1952 , p_application_id => p_array_adr_appl_id(Idx)
1953 , p_rec_aad_objects => p_rec_aad_objects
1954 );
1955
1956 IF l_ObjectIndex IS NOT NULL THEN
1957
1958 xla_cmp_source_pkg.GetSourcesInAADObject(
1959 p_object => xla_cmp_source_pkg.C_ADR
1960 , p_object_code => p_array_adr_code(Idx)
1961 , p_object_type_code => p_array_adr_type_code(Idx)
1962 , p_application_id => p_array_adr_appl_id(Idx)
1963 , p_array_source_Index => p_array_alt_source_index
1964 , p_rec_aad_objects => p_rec_aad_objects
1965 );
1966
1967 IF p_array_adr_segment_code(Idx) = 'ALL' THEN
1968
1969 l_adr := C_CALL_SET_CCID;
1970 l_adr := xla_cmp_string_pkg.replace_token( l_adr,'$adr_index$',TO_CHAR(l_ObjectIndex)); -- 4417664
1971 l_adr := xla_cmp_string_pkg.replace_token( l_adr,'$adr_code$', p_array_adr_code(Idx)); -- 4417664
1972 l_adr := xla_cmp_string_pkg.replace_token( l_adr,'$Side$',p_array_side_code(Idx)); -- 4417664
1973 l_adr := xla_cmp_string_pkg.replace_token( l_adr,'$adr_type_code$', p_array_adr_type_code(Idx)); -- 4417664
1974 l_adr := xla_cmp_string_pkg.replace_token( l_adr,'$entity_code$', p_entity_code ); -- 4417664
1975 l_adr := xla_cmp_string_pkg.replace_token( l_adr,'$event_class_code$', p_event_class_code); -- 4417664
1976
1977 ELSE
1978
1979 l_adr := C_CALL_SET_SEGMENT;
1980 l_adr := xla_cmp_string_pkg.replace_token( l_adr,'$adr_index$',TO_CHAR(l_ObjectIndex)); -- 4417664
1981 l_adr := xla_cmp_string_pkg.replace_token( l_adr,'$segment_code$',p_array_adr_segment_code(Idx)); -- 4417664
1982 l_adr := xla_cmp_string_pkg.replace_token( l_adr,'$Side$',p_array_side_code(Idx)); -- 4417664
1983 l_adr := xla_cmp_string_pkg.replace_token( l_adr,'$adr_code$', p_array_adr_code(Idx)); -- 4417664
1984 l_adr := xla_cmp_string_pkg.replace_token( l_adr,'$adr_type_code$', p_array_adr_type_code(Idx)); -- 4417664
1988 -- bug 4307087
1985 l_adr := xla_cmp_string_pkg.replace_token( l_adr,'$entity_code$', p_entity_code ); -- 4417664
1986 l_adr := xla_cmp_string_pkg.replace_token( l_adr,'$event_class_code$', p_event_class_code); -- 4417664
1987 --
1989 --
1990 l_adr := xla_cmp_string_pkg.replace_token( l_adr,'$override_seg_flag$'
1991 ,GetOverrideSegFlag (p_array_adr_segment_code)); -- 4417664
1992 END IF;
1993
1994 l_adr := xla_cmp_string_pkg.replace_token( l_adr,'$parameters$',
1995 xla_cmp_call_fct_pkg.GetSourceParameters(
1996 p_array_source_index => p_rec_aad_objects.array_array_object(l_ObjectIndex)
1997 , p_rec_sources => p_rec_sources
1998 )
1999 );
2000
2001 l_adrs := l_adrs || l_adr;
2002
2003
2004 ELSE
2005
2006 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2007 trace
2008 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR= inable to generate call to ADR '||
2009 p_array_adr_code(Idx)
2010 ||' - '|| p_array_adr_type_code(Idx)
2011 ,p_level => C_LEVEL_EXCEPTION
2012 ,p_module => l_log_module);
2013 END IF;
2014
2015 END IF; -- l_ObjectIndex IS NOT NULL
2016
2017 END IF; -- NVL(p_array_inherit_adr_flag(Idx),'N') = 'Y'
2018
2019 END LOOP; -- FOR Idx
2020 END IF; -- p_array_adr_code.COUNT > 0
2021
2022 -- END ----------------------------------------------------------------------------------------------------
2023
2024 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2025 trace
2026 (p_msg => 'END of GenerateADRCalls '
2027 ,p_level => C_LEVEL_PROCEDURE
2028 ,p_module => l_log_module);
2029 END IF;
2030
2031 RETURN l_adrs;
2032
2033 EXCEPTION
2034 WHEN VALUE_ERROR THEN
2035 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2036 trace
2037 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR='||sqlerrm
2038 ,p_level => C_LEVEL_EXCEPTION
2039 ,p_module => l_log_module);
2040 END IF;
2041 RETURN NULL;
2042 WHEN xla_exceptions_pkg.application_exception THEN
2043 RETURN NULL;
2044 WHEN OTHERS THEN
2045 xla_exceptions_pkg.raise_message
2046 (p_location => 'xla_cmp_acct_line_type_pkg.GenerateADRCalls');
2047 END GenerateADRCalls;
2048
2049
2050
2051 /*---------------------------------------------------------+
2052 | |
2053 | Private Function |
2054 | |
2055 | GenerateCallADR |
2056 | |
2057 | Generates in AcctLineType_xxx() a call appropriate |
2058 | AcctDerRule_x() functions (ADRs assigned to journal |
2059 | line definition). |
2060 | |
2061 +----------------------------------------------------------*/
2062
2063 FUNCTION GenerateCallADR (
2064 p_application_id IN NUMBER
2065 , p_amb_context_code IN VARCHAR2
2066 , p_entity_code IN VARCHAR2
2067 , p_event_class_code IN VARCHAR2
2068 , p_event_type_code IN VARCHAR2
2069 , p_line_definition_code IN VARCHAR2
2070 , p_line_definition_owner_code IN VARCHAR2
2071 , p_accounting_line_code IN VARCHAR2
2072 , p_accounting_line_type_code IN VARCHAR2
2073 , p_bflow_method_code IN VARCHAR2 -- 4655713
2074 , p_array_alt_source_index IN OUT NOCOPY xla_cmp_source_pkg.t_array_ByInt
2075 , p_rec_aad_objects IN xla_cmp_source_pkg.t_rec_aad_objects
2076 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
2077 )
2078 RETURN CLOB
2079 IS
2080
2081 CURSOR adr_cur IS
2082 SELECT DISTINCT
2083 NVL(xlda.segment_rule_appl_id,xlda.application_id)
2084 , xlda.segment_rule_type_code
2085 , xlda.segment_rule_code
2086 , xlda.flexfield_segment_code
2087 , xlda.side_code
2088 , xlda.inherit_adr_flag -- 4219869 Business Flow
2089 , xld.accounting_coa_id -- 4219869 Business Flow
2090 , xld.transaction_coa_id -- 4219869 Business Flow
2091 FROM xla_line_defn_adr_assgns xlda
2092 , xla_line_defn_jlt_assgns xldj
2093 , xla_line_definitions_b xld -- 4219869 Business Flow
2094 WHERE xldj.application_id = p_application_id
2095 AND xldj.amb_context_code = p_amb_context_code
2096 AND xldj.line_definition_owner_code = p_line_definition_owner_code
2097 AND xldj.line_definition_code = p_line_definition_code
2098 AND xldj.event_class_code = p_event_class_code
2099 AND ( xldj.event_type_code = p_event_type_code
2100 OR
2101 xldj.event_type_code = xldj.event_class_code || '_ALL'
2102 )
2103 AND xldj.accounting_line_type_code = p_accounting_line_type_code
2107 AND xlda.amb_context_code = xldj.amb_context_code
2104 AND xldj.accounting_line_code = p_accounting_line_code
2105 --
2106 AND xlda.application_id = xldj.application_id
2108 AND xlda.event_class_code = xldj.event_class_code
2109 AND xlda.event_type_code = xldj.event_type_code
2110 AND xlda.line_definition_owner_code = xldj.line_definition_owner_code
2111 AND xlda.line_definition_code = xldj.line_definition_code
2112 AND xlda.accounting_line_type_code = xldj.accounting_line_type_code
2113 AND xlda.accounting_line_code = xldj.accounting_line_code
2114 AND xld.application_id = xldj.application_id -- 4219869 Business Flow
2115 AND xld.amb_context_code = xldj.amb_context_code -- 4219869 Business Flow
2116 AND xld.event_class_code = xldj.event_class_code -- 4219869 Business Flow
2117 AND xld.event_type_code = xldj.event_type_code -- 4219869 Business Flow
2118 AND xld.line_definition_owner_code = xldj.line_definition_owner_code -- 4219869 Business Flow
2119 AND xld.line_definition_code = xldj.line_definition_code -- 4219869 Business Flow
2120 --ORDER BY xlda.inherit_adr_flag, xlda.segment_rule_code -- 4219869 Business Flow, process non-inherited first
2121 ORDER BY decode(xlda.FLEXFIELD_SEGMENT_CODE,'ALL',1,2), -- 4655713 process ALL segment first
2122 xlda.inherit_adr_flag, xlda.segment_rule_code
2123 ;
2124
2125 l_adrs CLOB;
2126 --
2127 l_array_adr_appl_id xla_cmp_source_pkg.t_array_Num;
2128 l_array_adr_type_code xla_cmp_source_pkg.t_array_VL1;
2129 l_array_adr_code xla_cmp_source_pkg.t_array_VL30;
2130 l_array_adr_segment_code xla_cmp_source_pkg.t_array_VL30;
2131 l_array_side_code xla_cmp_source_pkg.t_array_VL30;
2132 l_array_inherit_adr_flag xla_cmp_source_pkg.t_array_VL1; -- 4219869 Business Flow
2133 l_array_accounting_coa_id xla_cmp_source_pkg.t_array_Num; -- 4219869 Business Flow
2134 l_array_transaction_coa_id xla_cmp_source_pkg.t_array_Num; -- 4219869 Business Flow
2135 --
2136 l_ObjectIndex BINARY_INTEGER;
2137 l_log_module VARCHAR2(240);
2138
2139 BEGIN
2140 IF g_log_enabled THEN
2141 l_log_module := C_DEFAULT_MODULE||'.GenerateCallADR';
2142 END IF;
2143 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2144
2145 trace
2146 (p_msg => 'BEGIN of GenerateCallADR'
2147 ,p_level => C_LEVEL_PROCEDURE
2148 ,p_module => l_log_module);
2149
2150 END IF;
2151 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2152
2153 trace
2154 (p_msg => 'application_id = ' ||p_application_id ||
2155 ' - amb_context_code = ' ||p_amb_context_code ||
2156 ' - event_class_code = ' ||p_event_class_code ||
2157 ' - event_type_code = ' ||p_event_type_code ||
2158 ' - line_definition_code = '||p_line_definition_code ||
2159 '-'||p_line_definition_owner_code ||
2160 ' - accounting_line_code = '||p_accounting_line_code ||
2161 '-'||p_accounting_line_type_code
2162 ,p_level => C_LEVEL_STATEMENT
2163 ,p_module => l_log_module);
2164
2165 END IF;
2166
2167 OPEN adr_cur;
2168 FETCH adr_cur BULK COLLECT INTO l_array_adr_appl_id
2169 , l_array_adr_type_code
2170 , l_array_adr_code
2171 , l_array_adr_segment_code
2172 , l_array_side_code
2173 , l_array_inherit_adr_flag -- 4219869 Business Flow
2174 , l_array_accounting_coa_id -- 4219869 Business Flow
2175 , l_array_transaction_coa_id -- 4219869 Business Flow
2176 ;
2177 CLOSE adr_cur;
2178
2179 l_adrs := NULL;
2180 g_adrs := NULL;
2181
2182 -- 4262811 --------------------------------------------
2183 l_adrs := GenerateADRCalls
2184 (p_application_id
2185 ,p_entity_code
2186 ,p_event_class_code
2187 ,l_array_adr_type_code
2188 ,l_array_adr_code
2189 ,l_array_adr_segment_code
2190 ,l_array_side_code
2191 ,l_array_adr_appl_id
2192 ,l_array_inherit_adr_flag
2193 ,p_bflow_method_code -- 4655713
2194 ,l_array_accounting_coa_id
2195 ,l_array_transaction_coa_id
2196 ,p_array_alt_source_index
2197 ,p_rec_aad_objects
2198 ,p_rec_sources);
2199 -- added bug 7444204
2200 g_adrs := l_adrs;
2201 -- end bug 7444204
2202 -------------------------------------------------------
2203
2204 -- 4922099 ------------------------------------------------------
2205 IF (l_array_adr_appl_id.COUNT = 0) THEN
2206 g_no_adr_assigned := TRUE;
2207 ELSE
2208 g_no_adr_assigned := FALSE;
2209 END IF;
2210 -----------------------------------------------------------------
2211
2212
2213 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2214 trace
2215 (p_msg => 'END of GenerateCallADR '
2216 ,p_level => C_LEVEL_PROCEDURE
2220 RETURN l_adrs;
2217 ,p_module => l_log_module);
2218 END IF;
2219
2221
2222 EXCEPTION
2223 WHEN VALUE_ERROR THEN
2224 IF adr_cur%ISOPEN THEN CLOSE adr_cur; END IF;
2225 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2226 trace
2227 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR='||sqlerrm
2228 ,p_level => C_LEVEL_EXCEPTION
2229 ,p_module => l_log_module);
2230 END IF;
2231 RETURN NULL;
2232 WHEN xla_exceptions_pkg.application_exception THEN
2233 IF adr_cur%ISOPEN THEN CLOSE adr_cur; END IF;
2234 RETURN NULL;
2235 WHEN OTHERS THEN
2236 IF adr_cur%ISOPEN THEN CLOSE adr_cur; END IF;
2237 xla_exceptions_pkg.raise_message
2238 (p_location => 'xla_cmp_acct_line_type_pkg.GenerateCallADR');
2239 END GenerateCallADR;
2240
2241 /*---------------------------------------------------------+
2242 | |
2243 | Private Function |
2244 | |
2245 | GetEncumbranceTypeId |
2246 | |
2247 | Retrieve encumbrance type id |
2248 | |
2249 +---------------------------------------------------------*/
2250
2251 FUNCTION GetEncumbranceTypeId (
2252 p_encumbrance_type_id IN INTEGER
2253 )
2254 RETURN VARCHAR2
2255 IS
2256 l_alt VARCHAR2(2000);
2257 l_log_module VARCHAR2(240);
2258 BEGIN
2259 IF g_log_enabled THEN
2260 l_log_module := C_DEFAULT_MODULE||'.GetEncumbranceTypeId';
2261 END IF;
2262 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2263 trace
2264 (p_msg => 'BEGIN of GetEncumbranceTypeId'
2265 ,p_level => C_LEVEL_PROCEDURE
2266 ,p_module => l_log_module);
2267 END IF;
2268
2269 l_alt := NULL;
2270 IF (p_encumbrance_type_id IS NOT NULL) THEN
2271 l_alt := C_SET_ENCUMBRANCE_TYPE_ID;
2272 l_alt := REPLACE(l_alt, '$encumbrance_type_id$', p_encumbrance_type_id);
2273 END IF;
2274
2275 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2276 trace
2277 (p_msg => 'END of GetEncumbranceTypeId'
2278 ,p_level => C_LEVEL_PROCEDURE
2279 ,p_module => l_log_module);
2280
2281 END IF;
2282 RETURN l_alt;
2283 EXCEPTION
2284 WHEN VALUE_ERROR THEN
2285 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2286 trace
2287 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR='||sqlerrm
2288 ,p_level => C_LEVEL_EXCEPTION
2289 ,p_module => l_log_module);
2290 END IF;
2291 RETURN NULL;
2292 WHEN xla_exceptions_pkg.application_exception THEN
2293 RETURN NULL;
2294 WHEN OTHERS THEN
2295 xla_exceptions_pkg.raise_message
2296 (p_location => 'xla_cmp_acct_line_type_pkg.GetEncumbranceTypeId');
2297 END GetEncumbranceTypeId;
2298
2299
2300
2301 /*---------------------------------------------------------+
2302 | |
2303 | Private Function |
2304 | |
2305 | GenerateCallMpaJLT - 4262811 |
2306 | |
2307 | |
2308 | |
2309 +---------------------------------------------------------*/
2310 FUNCTION GenerateCallMpaJLT (
2311 p_application_id IN NUMBER
2312 , p_mpa_jlt_owner_code IN VARCHAR2
2313 , p_mpa_jlt_code IN VARCHAR2
2314 , p_event_class IN VARCHAR2
2315 , p_event_type IN VARCHAR2
2316 , p_line_definition_owner_code IN VARCHAR2
2317 , p_line_definition_code IN VARCHAR2
2318 , p_line_num IN NUMBER
2319 , p_array_alt_source_index IN OUT NOCOPY xla_cmp_source_pkg.t_array_ByInt
2320 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
2321 , p_rec_aad_objects IN xla_cmp_source_pkg.t_rec_aad_objects
2322 --
2323 )
2324 RETURN CLOB
2325 IS
2326
2327 l_line CLOB;
2328 l_ObjectIndex NUMBER;
2329 l_log_module VARCHAR2(240);
2330
2331 BEGIN
2332 IF g_log_enabled THEN
2333 l_log_module := C_DEFAULT_MODULE||'.GenerateCallMpaJLT';
2334 END IF;
2335 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2336 trace
2337 (p_msg => 'BEGIN of GenerateCallMpaJLT'
2338 ,p_level => C_LEVEL_PROCEDURE
2339 ,p_module => l_log_module);
2340 END IF;
2341
2342 l_line := NULL;
2343 l_ObjectIndex := NULL;
2344
2345 l_ObjectIndex := xla_cmp_source_pkg.GetAADObjectPosition(
2346 p_object => xla_cmp_source_pkg.C_RECOG_JLT -- C_MPA_JLT
2347 , p_object_code => p_mpa_jlt_code
2348 , p_object_type_code => p_mpa_jlt_owner_code
2349 , p_application_id => p_application_id
2350 , p_line_definition_owner_code => p_line_definition_owner_code
2351 , p_line_definition_code => p_line_definition_code
2355
2352 , p_event_class_code => p_event_class
2353 , p_event_type_code => p_event_type
2354 , p_rec_aad_objects => p_rec_aad_objects);
2356
2357 IF l_ObjectIndex IS NOT NULL THEN
2358
2359 xla_cmp_source_pkg.GetSourcesInAADObject(
2360 p_object => xla_cmp_source_pkg.C_RECOG_JLT -- C_MPA_JLT
2361 , p_object_code => p_mpa_jlt_code
2362 , p_object_type_code => p_mpa_jlt_owner_code
2363 , p_application_id => p_application_id
2364 , p_line_definition_owner_code => p_line_definition_owner_code
2365 , p_line_definition_code => p_line_definition_code
2366 , p_event_class_code => p_event_class
2367 , p_event_type_code => p_event_type
2368 , p_array_source_Index => p_array_alt_source_index
2369 , p_rec_aad_objects => p_rec_aad_objects);
2370
2371 l_line := C_MPA_RECOG_JLT_BODY;
2372 l_line := xla_cmp_string_pkg.replace_token(l_line,'$mpa_jlt_index$',TO_CHAR(l_ObjectIndex));
2373 l_line := xla_cmp_string_pkg.replace_token(l_line,'$parameters$',
2374 xla_cmp_call_fct_pkg.GetSourceParameters(
2375 p_array_source_index => p_rec_aad_objects.array_array_object(l_ObjectIndex)
2376 , p_rec_sources => p_rec_sources));
2377 ELSE
2378 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2379 trace
2380 (p_msg => 'MPA procedure not generated for application_id = ' ||p_application_id ||
2381 ' - p_mpa_jlt_code = ' ||p_mpa_jlt_code ||
2382 '-'||p_mpa_jlt_owner_code||
2383 ' - p_event_class = ' ||p_event_class ||
2384 ' - p_event_type = ' ||p_event_type ||
2385 ' - line_definition_code = '||p_line_definition_code ||
2386 '-'||p_line_definition_owner_code
2387 ,p_level => C_LEVEL_STATEMENT
2388 ,p_module => l_log_module);
2389 END IF;
2390
2391 l_line := NULL;
2392 END IF;
2393
2394 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2395 trace
2396 (p_msg => 'END of GenerateCallMpaJLT'
2397 ,p_level => C_LEVEL_PROCEDURE
2398 ,p_module => l_log_module);
2399 END IF;
2400
2401 RETURN l_line;
2402
2403 EXCEPTION
2404 WHEN VALUE_ERROR THEN
2405 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2406 trace
2407 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR='||sqlerrm
2408 ,p_level => C_LEVEL_EXCEPTION
2409 ,p_module => l_log_module);
2410 END IF;
2411 RETURN NULL;
2412 WHEN xla_exceptions_pkg.application_exception THEN
2413 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2414 trace
2415 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR='||sqlerrm
2416 ,p_level => C_LEVEL_EXCEPTION
2417 ,p_module => l_log_module);
2418 END IF;
2419 RETURN NULL;
2420 WHEN OTHERS THEN
2421 xla_exceptions_pkg.raise_message
2422 (p_location => 'xla_cmp_acct_line_type_pkg.GenerateCallMpaJLT');
2423 END GenerateCallMpaJLT;
2424
2425
2426
2427 /*---------------------------------------------------------+
2428 | |
2429 | Private Function |
2430 | |
2431 | GetAcctAttrSourceIdx - 4262811 |
2432 | |
2433 | |
2434 | |
2435 +---------------------------------------------------------*/
2436 FUNCTION GetAcctAttrSourceIdx (
2437 p_acct_attr_code IN VARCHAR2
2438 , p_array_acct_attr IN xla_cmp_source_pkg.t_array_VL30
2439 , p_array_acct_attr_source_idx IN xla_cmp_source_pkg.t_array_ByInt
2440 )
2441 RETURN NUMBER
2442 IS
2443
2444 l_source_idx NUMBER;
2445 l_log_module VARCHAR2(240);
2446
2447 BEGIN
2448 IF g_log_enabled THEN
2449 l_log_module := C_DEFAULT_MODULE||'.GetAcctAttrSourceIdx';
2450 END IF;
2451 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2452 trace
2453 (p_msg => 'BEGIN of GetAcctAttrSourceIdx'
2454 ,p_level => C_LEVEL_PROCEDURE
2455 ,p_module => l_log_module);
2456 END IF;
2457
2458 l_source_idx := NULL;
2459 --
2460 IF p_array_acct_attr.COUNT > 0 THEN
2461 --
2462 FOR Idx IN p_array_acct_attr.FIRST .. p_array_acct_attr.LAST LOOP
2463 --
2464 IF p_array_acct_attr.EXISTS(Idx) AND p_array_acct_attr(Idx) = p_acct_attr_code THEN
2465 l_source_idx := p_array_acct_attr_source_idx(Idx);
2466 EXIT;
2467 END IF;
2468 --
2469 END LOOP;
2470 --
2471 END IF;
2472 --
2473
2474 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2475 trace
2476 (p_msg => 'END of GetAcctAttrSourceIdx'
2480
2477 ,p_level => C_LEVEL_PROCEDURE
2478 ,p_module => l_log_module);
2479 END IF;
2481 RETURN l_source_idx;
2482
2483 EXCEPTION
2484 WHEN VALUE_ERROR THEN
2485 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2486 trace
2487 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR='||sqlerrm
2488 ,p_level => C_LEVEL_EXCEPTION
2489 ,p_module => l_log_module);
2490 END IF;
2491 RETURN NULL;
2492 WHEN xla_exceptions_pkg.application_exception THEN
2493 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2494 trace
2495 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR='||sqlerrm
2496 ,p_level => C_LEVEL_EXCEPTION
2497 ,p_module => l_log_module);
2498 END IF;
2499 RETURN NULL;
2500 WHEN OTHERS THEN
2501 xla_exceptions_pkg.raise_message
2502 (p_location => 'xla_cmp_acct_line_type_pkg.GetAcctAttrSourceIdx');
2503 END GetAcctAttrSourceIdx;
2504
2505
2506
2507 /*---------------------------------------------------------+
2508 | |
2509 | Private Function |
2510 | |
2511 | GenerateMpaBody - 4262811 |
2512 | |
2513 | |
2514 | |
2515 +---------------------------------------------------------*/
2516
2517 FUNCTION GenerateMpaBody (
2518 p_application_id IN NUMBER
2519 , p_amb_context_code IN VARCHAR2
2520 , p_event_class IN VARCHAR2
2521 , p_event_type IN VARCHAR2
2522 , p_line_definition_owner_code IN VARCHAR2
2523 , p_line_definition_code IN VARCHAR2
2524 , p_accounting_line_type_code IN VARCHAR2
2525 , p_accounting_line_code IN VARCHAR2
2526 , p_mpa_header_desc_type_code IN VARCHAR2
2527 , p_mpa_header_desc_code IN VARCHAR2
2528 , p_num_je_code IN VARCHAR2
2529 , p_gl_dates_code IN VARCHAR2
2530 , p_proration_code IN VARCHAR2
2531 , p_array_alt_source_index IN OUT NOCOPY xla_cmp_source_pkg.t_array_ByInt
2532 , p_array_acct_attr IN xla_cmp_source_pkg.t_array_VL30
2533 , p_array_acct_attr_source_idx IN xla_cmp_source_pkg.t_array_ByInt
2534 , p_rec_aad_objects IN xla_cmp_source_pkg.t_rec_aad_objects
2535 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
2536 , p_IsCompiled OUT NOCOPY BOOLEAN
2537 )
2538 RETURN CLOB
2539 IS
2540 --
2541 -- Only two rows - Recognition Line 1 (for ACCRUAL) and Recognition Line 2 (for non ACCRUAL)
2542 CURSOR c_mpa_jlt IS
2543 SELECT mpa_accounting_line_type_code
2544 , mpa_accounting_line_code
2545 , description_type_code
2546 , description_code
2547 FROM xla_mpa_jlt_assgns
2548 WHERE application_id = p_application_id
2549 AND amb_context_code = p_amb_context_code
2550 AND event_class_code = p_event_class
2551 AND event_type_code = p_event_type
2552 AND line_definition_owner_code = p_line_definition_owner_code
2553 AND line_definition_code = p_line_definition_code
2554 AND accounting_line_type_code = p_accounting_line_type_code
2555 AND accounting_line_code = p_accounting_line_code;
2556
2557 i NUMBER;
2558 l_alt CLOB;
2559 l_body CLOB;
2560 l_body2 CLOB := NULL;
2561 l_mpa_jlt c_mpa_jlt%ROWTYPE;
2562 l_mpa_jlt_body CLOB;
2563 l_log_module VARCHAR2(240);
2564
2565 l_mpa_option_source_idx NUMBER;
2566 l_mpa_start_date_source_idx NUMBER;
2567 l_mpa_end_date_source_idx NUMBER;
2568
2569
2570 BEGIN
2571 IF g_log_enabled THEN
2572 l_log_module := C_DEFAULT_MODULE||'.GenerateMpaBody';
2573 END IF;
2574 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2575 trace
2576 (p_msg => 'BEGIN of GenerateMpaBody'
2577 ,p_level => C_LEVEL_PROCEDURE
2578 ,p_module => l_log_module);
2579 END IF;
2580
2581 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2582 trace
2583 (p_msg => 'application_id = ' ||p_application_id ||
2584 ' - amb_context_code = ' ||p_amb_context_code ||
2585 ' - event_class = ' ||p_event_class ||
2586 ' - event_type = ' ||p_event_type ||
2587 ' - num_je_entries = ' ||p_num_je_code ||
2588 ' - line_definition_code = '||p_line_definition_code ||
2589 '-'||p_line_definition_owner_code ||
2590 ' - accounting_line_code = '||p_accounting_line_code ||
2591 '-'||p_accounting_line_type_code
2592 ,p_level => C_LEVEL_STATEMENT
2593 ,p_module => l_log_module);
2594
2595 END IF;
2596
2597 l_alt := NULL;
2598 l_body := NULL;
2599 p_IsCompiled := TRUE;
2600
2601 l_mpa_option_source_idx := GetAcctAttrSourceIdx
2602 (p_acct_attr_code => 'MULTIPERIOD_OPTION'
2606 IF (l_mpa_option_source_idx IS NULL) OR
2603 ,p_array_acct_attr => p_array_acct_attr
2604 ,p_array_acct_attr_source_idx => p_array_acct_attr_source_idx);
2605
2607 p_gl_dates_code IS NULL OR p_num_je_code IS NULL THEN -- prevent generating incorrect MPA header
2608 l_body := ' -- No MPA option is assigned.';
2609 ELSE
2610
2611 l_mpa_start_date_source_idx := GetAcctAttrSourceIdx
2612 (p_acct_attr_code => 'MULTIPERIOD_START_DATE'
2613 ,p_array_acct_attr => p_array_acct_attr
2614 ,p_array_acct_attr_source_idx => p_array_acct_attr_source_idx);
2615
2616 l_mpa_end_date_source_idx := GetAcctAttrSourceIdx
2617 (p_acct_attr_code => 'MULTIPERIOD_END_DATE'
2618 ,p_array_acct_attr => p_array_acct_attr
2619 ,p_array_acct_attr_source_idx => p_array_acct_attr_source_idx);
2620
2621 IF l_mpa_start_date_source_idx IS NULL OR l_mpa_end_date_source_idx IS NULL THEN
2622 l_body := ' -- No MPA Start Date or End Date.' ; -- 4262811
2623
2624 ELSE
2625 l_body := C_MPA_BODY;
2626
2627 --
2628 l_body := xla_cmp_string_pkg.replace_token(l_body, '$mpa_option$',
2629 xla_cmp_source_pkg.GenerateSource(
2630 p_Index => l_mpa_option_source_idx
2631 , p_rec_sources => p_rec_sources
2632 , p_translated_flag => 'N')
2633 );
2634 --
2635 l_body := xla_cmp_string_pkg.replace_token(l_body, '$mpa_start_date$',
2636 xla_cmp_source_pkg.GenerateSource(
2637 p_Index => l_mpa_start_date_source_idx
2638 , p_rec_sources => p_rec_sources
2639 , p_translated_flag => 'N')
2640 );
2641 --
2642 l_body := xla_cmp_string_pkg.replace_token(l_body, '$mpa_end_date$',
2643 xla_cmp_source_pkg.GenerateSource(
2644 p_Index => l_mpa_end_date_source_idx
2645 , p_rec_sources => p_rec_sources
2646 , p_translated_flag => 'N')
2647 );
2648
2649 l_body := xla_cmp_string_pkg.replace_token(l_body, '$mpa_gl_dates$', p_gl_dates_code); -- p_mpa_gl_date_code
2650 --
2651 l_body := xla_cmp_string_pkg.replace_token(l_body, '$mpa_num_je$', p_num_je_code); -- p_mpa_num_je_code
2652
2653 l_body := xla_cmp_string_pkg.replace_token(l_body, '$mpa_proration_code$', p_proration_code); -- 4262811
2654
2655 -- Generate MPA header description -------------------------------------------
2656 l_body2:= GenerateCallDescription
2657 (p_application_id => p_application_id
2658 ,p_description_type_code => p_mpa_header_desc_type_code
2659 ,p_description_code => p_mpa_header_desc_code
2660 ,p_header_line => 'H' -- Header
2661 ,p_array_alt_source_index => p_array_alt_source_index
2662 ,p_rec_aad_objects => p_rec_aad_objects
2663 ,p_rec_sources => p_rec_sources);
2664 IF l_body2 IS NOT NULL THEN
2665 l_body2 := C_MPA_HDR_DESC_IDX || l_body2;
2666
2667 ELSE
2668 l_body2 := C_MPA_HDR_NO_DESC; -- 4590313
2669 END IF;
2670
2671 l_body := xla_cmp_string_pkg.replace_token(l_body, '$mpa_description$', l_body2);
2672 --------------------------------------------------------------------------------
2673
2674 l_body := xla_cmp_string_pkg.replace_token(l_body, '$mpa_analytical_criteria$',
2675 xla_cmp_analytic_criteria_pkg.GenerateMpaHeaderAC(
2676 p_application_id => p_application_id
2677 , p_amb_context_code => p_amb_context_code
2678 , p_event_class => p_event_class
2679 , p_event_type => p_event_type
2680 , p_line_definition_owner_code => p_line_definition_owner_code
2681 , p_line_definition_code => p_line_definition_code
2682 , p_accrual_jlt_owner_code => p_accounting_line_type_code
2683 , p_accrual_jlt_code => p_accounting_line_code
2684 , p_array_alt_source_index => p_array_alt_source_index
2685 , p_rec_sources => p_rec_sources
2686 ));
2687
2688 i := 0;
2689 l_mpa_jlt_body := NULL;
2690 FOR l_mpa_jlt IN c_mpa_jlt LOOP
2691 i := i + 1;
2692 l_body2 := NULL;
2693 l_body2 := GenerateCallMpaJLT(
2694 p_application_id => p_application_id
2695 , p_mpa_jlt_owner_code => l_mpa_jlt.mpa_accounting_line_type_code
2696 , p_mpa_jlt_code => l_mpa_jlt.mpa_accounting_line_code
2697 , p_event_class => p_event_class
2698 , p_event_type => p_event_type
2702 , p_array_alt_source_index => p_array_alt_source_index
2699 , p_line_definition_owner_code => p_line_definition_owner_code
2700 , p_line_definition_code => p_line_definition_code
2701 , p_line_num => i
2703 , p_rec_sources => p_rec_sources
2704 , p_rec_aad_objects => p_rec_aad_objects);
2705 IF l_body2 IS NOT NULL THEN
2706 l_mpa_jlt_body := l_mpa_jlt_body ||'l_recog_line_'||to_char(i)||' := ' || l_body2;
2707 l_mpa_jlt_body := l_mpa_jlt_body ||'XLA_AE_LINES_PKG.InsertMPARecogLineInfo( l_recog_line_'||to_char(i)||' );
2708 ';-- added for bug:7109881
2709 l_mpa_jlt_body := l_mpa_jlt_body ||'XLA_AE_LINES_PKG.InsertMpaTrxAcctCopyInfo( XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id(XLA_AE_LINES_PKG.g_LineNumber) ,l_recog_line_'||to_char(i)||' );
2710 ';-- added for bug9954676
2711 END IF;
2712 END LOOP;
2713
2714 l_body := xla_cmp_string_pkg.replace_token(l_body, '$mpa_jlt$',l_mpa_jlt_body);
2715
2716 END IF; -- l_mpa_start_date_source_idx IS NULL
2717
2718 END IF;
2719
2720 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2721 trace
2722 (p_msg => 'END of GenerateMpaBody '
2723 ,p_level => C_LEVEL_PROCEDURE
2724 ,p_module => l_log_module);
2725 END IF;
2726
2727 RETURN l_body;
2728
2729 EXCEPTION
2730
2731 WHEN VALUE_ERROR THEN
2732 IF c_mpa_jlt%ISOPEN THEN CLOSE c_mpa_jlt; END IF;
2733 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2734 trace
2735 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR='||sqlerrm
2736 ,p_level => C_LEVEL_EXCEPTION
2737 ,p_module => l_log_module);
2738 END IF;
2739 p_IsCompiled := FALSE;
2740 RETURN NULL;
2741 WHEN xla_exceptions_pkg.application_exception THEN
2742 IF c_mpa_jlt%ISOPEN THEN CLOSE c_mpa_jlt; END IF;
2743 p_IsCompiled := FALSE;
2744 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2745 trace
2746 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR='||sqlerrm
2747 ,p_level => C_LEVEL_EXCEPTION
2748 ,p_module => l_log_module);
2749 END IF;
2750 RETURN NULL;
2751 WHEN OTHERS THEN
2752 IF c_mpa_jlt%ISOPEN THEN CLOSE c_mpa_jlt; END IF;
2753 p_IsCompiled := FALSE;
2754 xla_exceptions_pkg.raise_message
2755 (p_location => 'xla_cmp_acct_line_type_pkg.GenerateMpaBody');
2756
2757 END GenerateMpaBody;
2758
2759 /*---------------------------------------------------------+
2760 | |
2761 | Private Function - 4262811 |
2762 | |
2763 | GetAccRevMPABody |
2764 | |
2765 | |
2766 +---------------------------------------------------------*/
2767
2768 FUNCTION GetAccRevMPABody (
2769 p_application_id IN NUMBER
2770 , p_amb_context_code IN VARCHAR2
2771 , p_entity_code IN VARCHAR2
2772 , p_event_class IN VARCHAR2
2773 , p_event_type IN VARCHAR2
2774 , p_line_definition_owner_code IN VARCHAR2
2775 , p_line_definition_code IN VARCHAR2
2776 , p_accounting_line_code IN VARCHAR2
2777 , p_accounting_line_type_code IN VARCHAR2
2778 , p_mpa_header_desc_type_code IN VARCHAR2
2779 , p_mpa_header_desc_code IN VARCHAR2
2780 , p_num_je_code IN VARCHAR2
2781 , p_gl_dates_code IN VARCHAR2
2782 , p_proration_code IN VARCHAR2
2783 --
2784 , p_bflow_method_code IN VARCHAR2
2785 , p_array_alt_source_index IN OUT NOCOPY xla_cmp_source_pkg.t_array_ByInt
2786 , p_array_acct_attr IN OUT NOCOPY xla_cmp_source_pkg.t_array_VL30 -- 4262811
2787 , p_array_acct_attr_source_idx IN OUT NOCOPY xla_cmp_source_pkg.t_array_ByInt -- 4262811
2788 , p_rec_aad_objects IN xla_cmp_source_pkg.t_rec_aad_objects
2789 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
2790 )
2791 RETURN CLOB
2792 IS
2793 l_alt CLOB;
2794 l_log_module VARCHAR2(240);
2795 l_IsCompiled BOOLEAN;
2796
2797 BEGIN
2798 IF g_log_enabled THEN
2799 l_log_module := C_DEFAULT_MODULE||'.GetAccRevMPABody';
2800 END IF;
2801 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2802 trace
2803 (p_msg => 'BEGIN of GetAccRevMPABody'
2804 ,p_level => C_LEVEL_PROCEDURE
2805 ,p_module => l_log_module);
2806 END IF;
2807
2808 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2809
2810 trace
2811 (p_msg => 'application_id = ' ||p_application_id ||
2812 ' - amb_context_code = ' ||p_amb_context_code ||
2813 ' - event_class = ' ||p_event_class ||
2814 ' - event_type = ' ||p_event_type ||
2815 ' - num_je_entries = ' ||p_num_je_code ||
2816 ' - line_definition_code = '||p_line_definition_code ||
2820 ,p_level => C_LEVEL_STATEMENT
2817 '-'||p_line_definition_owner_code ||
2818 ' - accounting_line_code = '||p_accounting_line_code ||
2819 '-'||p_accounting_line_type_code
2821 ,p_module => l_log_module);
2822
2823 END IF;
2824
2825 l_alt := C_ACC_REV_MPA_BODY;
2826
2827 --added bug 7444204
2828 IF p_line_definition_code IS NOT NULL AND
2829 p_line_definition_owner_code IS NOT NULL AND
2830 p_accounting_line_code IS NOT NULL AND
2831 p_accounting_line_type_code IS NOT NULL THEN
2832 -- p_bflow_method_code <> C_METHOD_PRIOR THEN Bug 4922099
2833 --
2834 l_alt := xla_cmp_string_pkg.replace_token(l_alt
2835 ,'$call_adr$'
2836 , g_adrs
2837 );
2838 ELSE
2839 l_alt := xla_cmp_string_pkg.replace_token(l_alt
2840 ,'$call_adr$'
2841 ,'-- No adrs. ');
2842 END IF; --end bug 7444204
2843
2844
2845
2846 l_alt := xla_cmp_string_pkg.replace_token(l_alt,'$mpa_body$',
2847 GenerateMpaBody (
2848 p_application_id => p_application_id
2849 , p_amb_context_code => p_amb_context_code
2850 , p_event_class => p_event_class
2851 , p_event_type => p_event_type
2852 , p_line_definition_owner_code => p_line_definition_owner_code
2853 , p_line_definition_code => p_line_definition_code
2854 , p_accounting_line_type_code => p_accounting_line_type_code
2855 , p_accounting_line_code => p_accounting_line_code
2856 , p_mpa_header_desc_type_code => p_mpa_header_desc_type_code
2857 , p_mpa_header_desc_code => p_mpa_header_desc_code
2858 , p_num_je_code => p_num_je_code
2859 , p_gl_dates_code => p_gl_dates_code
2860 , p_proration_code => p_proration_code
2861 , p_array_alt_source_index => p_array_alt_source_index
2862 , p_array_acct_attr => p_array_acct_attr
2863 , p_array_acct_attr_source_idx => p_array_acct_attr_source_idx
2864 , p_rec_aad_objects => p_rec_aad_objects
2865 , p_rec_sources => p_rec_sources
2866 , p_IsCompiled => l_IsCompiled
2867 )
2868 );
2869
2870 RETURN l_alt;
2871
2872 EXCEPTION
2873 WHEN VALUE_ERROR THEN
2874 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2875 trace
2876 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR='||sqlerrm
2877 ,p_level => C_LEVEL_EXCEPTION
2878 ,p_module => l_log_module);
2879 END IF;
2880 RETURN NULL;
2881 WHEN xla_exceptions_pkg.application_exception THEN
2882 RETURN NULL;
2883 WHEN OTHERS THEN
2884 xla_exceptions_pkg.raise_message
2885 (p_location => 'xla_cmp_acct_line_type_pkg.GetAccRevMPABody');
2886 END GetAccRevMPABody;
2887
2888
2889 /*---------------------------------------------------------+
2890 | |
2891 | Private Function |
2892 | |
2893 | GetALTBody |
2894 | |
2895 | Generates one Journal Line Definition in the procedure |
2896 | AcctLineType_xxx(). |
2897 | |
2898 +---------------------------------------------------------*/
2899
2900 FUNCTION GetALTBody (
2901 p_application_id IN NUMBER
2902 , p_amb_context_code IN VARCHAR2
2903 , p_entity_code IN VARCHAR2
2904 , p_event_class_code IN VARCHAR2
2905 , p_event_type_code IN VARCHAR2
2906 , p_line_definition_code IN VARCHAR2
2907 , p_line_definition_owner_code IN VARCHAR2
2908 --
2909 , p_accounting_line_code IN VARCHAR2
2910 , p_accounting_line_type_code IN VARCHAR2
2911 , p_accounting_line_name IN VARCHAR2
2912 --
2913 , p_description_type_code IN VARCHAR2
2914 , p_description_code IN VARCHAR2
2915 --
2916 , p_acct_entry_type_code IN VARCHAR2
2917 , p_natural_side_code IN VARCHAR2
2918 , p_transfer_mode_code IN VARCHAR2
2919 , p_switch_side_flag IN VARCHAR2
2920 , p_merge_duplicate_code IN VARCHAR2
2921 , p_accounting_class_code IN VARCHAR2
2922 , p_rounding_class_code IN VARCHAR2
2923 , p_gain_or_loss_flag IN VARCHAR2
2924 --
2925 , p_bflow_method_code IN VARCHAR2 -- 4219869 Business Flow
2926 , p_bflow_class_code IN VARCHAR2 -- 4219869 Business Flow
2927 , p_inherit_desc_flag IN VARCHAR2 -- 4219869 Business Flow
2928 --
2929 , p_encumbrance_type_id IN INTEGER -- 4458381 Public Sector Enh
2930 , p_array_alt_source_index IN OUT NOCOPY xla_cmp_source_pkg.t_array_ByInt
2931 --
2935 , p_rec_aad_objects IN xla_cmp_source_pkg.t_rec_aad_objects
2932 ,p_array_acct_attr IN OUT NOCOPY xla_cmp_source_pkg.t_array_VL30 -- 4262811
2933 ,p_array_acct_attr_source_idx IN OUT NOCOPY xla_cmp_source_pkg.t_array_ByInt -- 4262811
2934 --
2936 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
2937 )
2938 RETURN CLOB
2939 IS
2940 l_alt CLOB;
2941 l_log_module VARCHAR2(240);
2942
2943
2944 BEGIN
2945 IF g_log_enabled THEN
2946 l_log_module := C_DEFAULT_MODULE||'.GetALTBody';
2947 END IF;
2948 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2949 trace
2950 (p_msg => 'BEGIN of GetALTBody'
2951 ,p_level => C_LEVEL_PROCEDURE
2952 ,p_module => l_log_module);
2953 END IF;
2954
2955 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2956
2957 trace
2958 (p_msg => 'application_id = ' ||p_application_id ||
2959 ' - amb_context_code = ' ||p_amb_context_code ||
2960 ' - p_entity_code = ' ||p_entity_code ||
2961 ' - event_class_code = ' ||p_event_class_code ||
2962 ' - event_type_code = ' ||p_event_type_code ||
2963 ' - line_definition_code = '||p_line_definition_code ||
2964 '-'||p_line_definition_owner_code ||
2965 ' - accounting_line_code = '||p_accounting_line_code ||
2966 '-'||p_accounting_line_type_code
2967 ,p_level => C_LEVEL_STATEMENT
2968 ,p_module => l_log_module);
2969
2970 END IF;
2971
2972 l_alt := C_ALT_BODY;
2973 IF((p_gain_or_loss_flag is null or p_gain_or_loss_flag = 'N') AND p_natural_side_code <> 'G') THEN
2974 l_alt := xla_cmp_string_pkg.replace_token(l_alt,'$set_actual_enc_flag$', '
2975 IF(l_balance_type_code = ''A'' and p_actual_flag is null) THEN
2976 p_actual_flag :=''A'';
2977 END IF;');
2978 ELSE
2979 l_alt := xla_cmp_string_pkg.replace_token(l_alt,'$set_actual_enc_flag$', '
2980 IF(l_balance_type_code = ''A'' ) THEN
2981 p_actual_flag :=''G'';
2982 END IF;');
2983 END IF;
2984
2985 --
2986 -- set accounting line type
2987 --
2988 --
2989 l_alt := xla_cmp_string_pkg.replace_token(l_alt
2990 ,'$acct_line_options$'
2991 ,GetALTOption
2992 (p_acct_entry_type_code
2993 ,nvl(p_gain_or_loss_flag, 'N')
2994 ,p_natural_side_code
2995 ,p_transfer_mode_code
2996 ,p_switch_side_flag
2997 ,p_merge_duplicate_code)
2998 );
2999 --
3000 l_alt := xla_cmp_string_pkg.replace_token(l_alt
3001 ,'$set_acct_class$'
3002 ,GetAcctClassCode
3003 (p_accounting_class_code)
3004 );
3005 --
3006 l_alt := xla_cmp_string_pkg.replace_token(l_alt
3007 ,'$set_rounding_class$'
3008 ,GetRoundingClassCode
3009 (p_rounding_class_code)
3010 );
3011 -- 4458381 Public Sector Enh
3012 IF (p_acct_entry_type_code = 'E') THEN
3013 l_alt := xla_cmp_string_pkg.replace_token(l_alt
3014 ,'$set_encumbrance_type_id$'
3015 ,GetEncumbranceTypeId(p_encumbrance_type_id));
3016 ELSE
3017 l_alt := xla_cmp_string_pkg.replace_token(l_alt
3018 ,'$set_encumbrance_type_id$'
3019 ,'');
3020 END IF;
3021 --
3022 l_alt := xla_cmp_string_pkg.replace_token(l_alt
3023 ,'$alt_acct_attributes$'
3024 ,GetAccountingSources
3025 (p_application_id
3026 ,p_accounting_line_code
3027 ,p_accounting_line_type_code
3028 ,p_entity_code
3029 ,p_event_class_code
3030 ,p_amb_context_code
3031 ,p_array_acct_attr -- 4262811 IN OUT
3032 ,p_array_acct_attr_source_idx -- 4262811 IN OUT
3033 ,p_array_alt_source_index -- IN OUT
3034 ,p_rec_sources) -- IN OUT
3035 );
3036 --
3037 ----------------------------------------------------------------------------
3038 -- 4219869
3039 -- Perform Business Flow validation only if business flow method is not NONE
3040 ----------------------------------------------------------------------------
3041 IF p_bflow_method_code <> C_METHOD_NONE THEN
3042 l_alt := xla_cmp_string_pkg.replace_token(l_alt
3043 ,'$call_bflow_validation$'
3044 ,'XLA_AE_LINES_PKG.business_flow_validation(
3045 p_business_method_code => l_bflow_method_code
3046 ,p_business_class_code => l_bflow_class_code
3047 ,p_inherit_description_flag => l_inherit_desc_flag);');
3048 ELSE
3049 l_alt := xla_cmp_string_pkg.replace_token(l_alt
3050 ,'$call_bflow_validation$'
3051 ,'-- No business flow processing for business flow method of NONE.');
3052 END IF;
3053 --
3054
3055 -----------------------------------------------
3056 -- 4219869 Business Flow
3057 -- Do not generate AC for Prior Entry method
3058 -----------------------------------------------
3062 ,GetCallAnalyticCriteria
3059 IF p_bflow_method_code <> C_METHOD_PRIOR THEN
3060 l_alt := xla_cmp_string_pkg.replace_token(l_alt
3061 ,'$call_analytical_criteria$'
3063 (p_application_id
3064 ,p_amb_context_code
3065 ,p_event_class_code
3066 ,p_event_type_code
3067 ,p_line_definition_code
3068 ,p_line_definition_owner_code
3069 ,p_accounting_line_code
3070 ,p_accounting_line_type_code
3071 ,p_array_alt_source_index
3072 ,p_rec_sources)
3073 );
3074 ELSE -- 4219869 - Do not generate AC for Prior Entry method
3075 l_alt := xla_cmp_string_pkg.replace_token(l_alt
3076 ,'$call_analytical_criteria$'
3077 ,'-- Inherited Analytical Criteria for business flow method of Prior Entry.');
3078 END IF;
3079
3080
3081 -----------------------------------------------
3082 -- 4219869 Business Flow
3083 -- Do not generate Description if it is inherited
3084 -----------------------------------------------
3085 IF p_description_type_code IS NOT NULL AND
3086 p_description_code IS NOT NULL AND
3087 nvl(p_inherit_desc_flag,'N') = 'N' THEN
3088 --
3089 -- generate call to description functions
3090 --
3091 l_alt := xla_cmp_string_pkg.replace_token(l_alt
3092 ,'$call_description$'
3093 ,GenerateCallDescription
3094 (p_application_id => p_application_id
3095 ,p_description_type_code => p_description_type_code
3096 ,p_description_code => p_description_code
3097 ,p_header_line => 'L' -- line
3098 ,p_array_alt_source_index => p_array_alt_source_index
3099 ,p_rec_aad_objects => p_rec_aad_objects
3100 ,p_rec_sources => p_rec_sources)
3101 );
3102 --
3103 ELSE
3104 l_alt := xla_cmp_string_pkg.replace_token(l_alt
3105 ,'$call_description$'
3106 ,'-- No description or it is inherited.');
3107 END IF;
3108 --
3109 --
3110 -----------------------------------------------
3111 -- 4219869 Business Flow
3112 -- Do not generate ADR for Prior Entry method
3113 --------------------------------------------------------------------
3114 -- 4922099
3115 -- NOTE: ADR is now also defined for prior entry business flow JLT.
3116 -- THe upgrade option is not known until the run-time.
3117 --------------------------------------------------------------------
3118 IF p_line_definition_code IS NOT NULL AND
3119 p_line_definition_owner_code IS NOT NULL AND
3120 p_accounting_line_code IS NOT NULL AND
3121 p_accounting_line_type_code IS NOT NULL THEN
3122 -- p_bflow_method_code <> C_METHOD_PRIOR THEN Bug 4922099
3123 --
3124 l_alt := xla_cmp_string_pkg.replace_token(l_alt
3125 ,'$call_adr$'
3126 ,GenerateCallADR
3127 (p_application_id
3128 ,p_amb_context_code
3129 ,p_entity_code
3130 ,p_event_class_code
3131 ,p_event_type_code
3132 ,p_line_definition_code
3133 ,p_line_definition_owner_code
3134 ,p_accounting_line_code
3135 ,p_accounting_line_type_code
3136 ,p_bflow_method_code -- 4655713
3137 ,p_array_alt_source_index
3138 ,p_rec_aad_objects
3139 ,p_rec_sources)
3140 );
3141 ELSE
3142 l_alt := xla_cmp_string_pkg.replace_token(l_alt
3143 ,'$call_adr$'
3144 ,'-- No adrs. ');
3145 END IF;
3146
3147 ---------------------------------------------------------------------------------
3148 -- 4922099
3149 IF (g_no_adr_assigned) THEN
3150 l_alt := xla_cmp_string_pkg.replace_token(l_alt, '$no_adr_assigned$', '1 = 1');
3151 ELSE
3152 l_alt := xla_cmp_string_pkg.replace_token(l_alt, '$no_adr_assigned$', '1 = 2');
3153 END IF;
3154
3155 -- reset the global variable
3156 g_no_adr_assigned := FALSE;
3157
3158 -------------------------------------------------------------------------
3159 -- 4219869
3160 -- Call validate line only if the Business Flow method is not Prior Entry
3161 -------------------------------------------------------------------------
3162 IF p_bflow_method_code <> C_METHOD_PRIOR THEN
3163 l_alt := xla_cmp_string_pkg.replace_token(l_alt
3164 ,'$call_validate_line$'
3165 ,'XLA_AE_LINES_PKG.ValidateCurrentLine;'
3166 );
3167 ELSE
3168 l_alt := xla_cmp_string_pkg.replace_token(l_alt
3169 ,'$call_validate_line$'
3170 ,'-- No ValidateCurrentLine for business flow method of Prior Entry');
3171 END IF;
3172 --
3173
3174 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3175 trace
3176 (p_msg => 'END of GetALTBody'
3177 ,p_level => C_LEVEL_PROCEDURE
3178 ,p_module => l_log_module);
3179
3180 END IF;
3181 RETURN l_alt;
3182 EXCEPTION
3183 WHEN VALUE_ERROR THEN
3184 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
3185 trace
3189 END IF;
3186 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR='||sqlerrm
3187 ,p_level => C_LEVEL_EXCEPTION
3188 ,p_module => l_log_module);
3190 RETURN NULL;
3191 WHEN xla_exceptions_pkg.application_exception THEN
3192 RETURN NULL;
3193 WHEN OTHERS THEN
3194 xla_exceptions_pkg.raise_message
3195 (p_location => 'xla_cmp_acct_line_type_pkg.GetALTBody');
3196 END GetALTBody;
3197
3198
3199 /*---------------------------------------------------------+
3200 | |
3201 | Private Function |
3202 | |
3203 | GetAcctLineTypeBody |
3204 | |
3205 | Generates one Journal Line Definition ad its condition |
3206 | in the procedure AcctLineType_xxx(). |
3207 | |
3208 +---------------------------------------------------------*/
3209
3210 FUNCTION GetAcctLineTypeBody (
3211 p_application_id IN NUMBER
3212 , p_amb_context_code IN VARCHAR2
3213 , p_entity_code IN VARCHAR2
3214 , p_event_class_code IN VARCHAR2
3215 , p_event_type_code IN VARCHAR2
3216 , p_line_definition_code IN VARCHAR2
3217 , p_line_definition_owner_code IN VARCHAR2
3218 --
3219 , p_accounting_line_code IN VARCHAR2
3220 , p_accounting_line_type_code IN VARCHAR2
3221 , p_accounting_line_name IN VARCHAR2
3222 --
3223 , p_description_type_code IN VARCHAR2
3224 , p_description_code IN VARCHAR2
3225 --
3226 , p_acct_entry_type_code IN VARCHAR2
3227 , p_natural_side_code IN VARCHAR2
3228 , p_transfer_mode_code IN VARCHAR2
3229 , p_switch_side_flag IN VARCHAR2
3230 , p_merge_duplicate_code IN VARCHAR2
3231 , p_accounting_class_code IN VARCHAR2
3232 , p_rounding_class_code IN VARCHAR2
3233 , p_gain_or_loss_flag IN VARCHAR2
3234 --
3235 , p_bflow_method_code IN VARCHAR2 -- 4219869 Business Flow
3236 , p_bflow_class_code IN VARCHAR2 -- 4219869 Business Flow
3237 , p_inherit_desc_flag IN VARCHAR2 -- 4219869 Business Flow
3238 --
3239 , p_num_je_code IN VARCHAR2 -- 4262811
3240 , p_gl_dates_code IN VARCHAR2 -- 4262811
3241 , p_proration_code IN VARCHAR2 -- 4262811
3242 , p_mpa_header_desc_type_code IN VARCHAR2 -- 4262811
3243 , p_mpa_header_desc_code IN VARCHAR2 -- 4262811
3244 --
3245 , p_budgetary_control_flag IN VARCHAR2 -- 4458381 Public Sector Enh
3246 , p_encumbrance_type_id IN INTEGER -- 4458381 Public Sector Enh
3247 --
3248 , p_array_alt_source_index IN OUT NOCOPY xla_cmp_source_pkg.t_array_ByInt
3249 --
3250 , p_array_acct_attr IN OUT NOCOPY xla_cmp_source_pkg.t_array_VL30 -- 4262811
3251 , p_array_acct_attr_source_idx IN OUT NOCOPY xla_cmp_source_pkg.t_array_ByInt -- 4262811
3252 --
3253 , p_rec_aad_objects IN xla_cmp_source_pkg.t_rec_aad_objects
3254 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
3255 --
3256 , p_IsCompiled OUT NOCOPY BOOLEAN
3257 )
3258 RETURN CLOB
3259 IS
3260 --
3261 l_alt CLOB;
3262 l_detail CLOB;
3263 l_cond VARCHAR2(32000);
3264 l_log_module VARCHAR2(240);
3265 --
3266 BEGIN
3267 IF g_log_enabled THEN
3268 l_log_module := C_DEFAULT_MODULE||'.GetAcctLineTypeBody';
3269 END IF;
3270 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3271 trace
3272 (p_msg => 'BEGIN of GetAcctLineTypeBody'
3273 ,p_level => C_LEVEL_PROCEDURE
3274 ,p_module => l_log_module);
3275 END IF;
3276
3277 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3278 trace
3279 (p_msg => 'application_id = ' ||p_application_id ||
3280 ' - amb_context_code = ' ||p_amb_context_code ||
3281 ' - p_entity_code = ' ||p_entity_code ||
3282 ' - event_class_code = ' ||p_event_class_code ||
3283 ' - event_type_code = ' ||p_event_type_code ||
3284 ' - num_je_entries = ' ||p_num_je_code ||
3285 ' - line_definition_code = '||p_line_definition_code ||
3286 '-'||p_line_definition_owner_code ||
3287 ' - accounting_line_code = '||p_accounting_line_code ||
3288 '-'||p_accounting_line_type_code
3289 ,p_level => C_LEVEL_STATEMENT
3290 ,p_module => l_log_module);
3291 END IF;
3292
3293 l_alt := NULL;
3294 l_detail := NULL;
3295 p_IsCompiled := FALSE;
3296
3297 l_cond := xla_cmp_condition_pkg.GetCondition (
3298 p_application_id => p_application_id
3299 , p_component_type => 'AMB_JLT'
3300 , p_component_code => p_accounting_line_code
3301 , p_component_type_code => p_accounting_line_type_code
3302 , p_component_name => p_accounting_line_name
3303 , p_entity_code => p_entity_code
3304 , p_event_class_code => p_event_class_code
3308 , p_array_cond_source_index => p_array_alt_source_index
3305 , p_amb_context_code => p_amb_context_code
3306 , p_acctg_line_code => p_accounting_line_code
3307 , p_acctg_line_type_code => p_accounting_line_type_code
3309 , p_rec_sources => p_rec_sources
3310 );
3311
3312 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3313 trace
3314 (p_msg => ' # condition length = ' ||length(l_cond)
3315 ,p_level => C_LEVEL_STATEMENT
3316 ,p_module => l_log_module);
3317 END IF;
3318
3319 l_detail := GetALTBody (
3320 p_application_id => p_application_id
3321 , p_amb_context_code => p_amb_context_code
3322 , p_entity_code => p_entity_code
3323 , p_event_class_code => p_event_class_code
3324 , p_event_type_code => p_event_type_code
3325 , p_line_definition_code => p_line_definition_code
3326 , p_line_definition_owner_code => p_line_definition_owner_code
3327 , p_accounting_line_code => p_accounting_line_code
3328 , p_accounting_line_type_code => p_accounting_line_type_code
3329 , p_accounting_line_name => p_accounting_line_name
3330 , p_description_type_code => p_description_type_code
3331 , p_description_code => p_description_code
3332 , p_acct_entry_type_code => p_acct_entry_type_code
3333 , p_natural_side_code => p_natural_side_code
3334 , p_transfer_mode_code => p_transfer_mode_code
3335 , p_switch_side_flag => p_switch_side_flag
3336 , p_merge_duplicate_code => p_merge_duplicate_code
3337 , p_accounting_class_code => p_accounting_class_code
3338 , p_rounding_class_code => p_rounding_class_code
3339 , p_gain_or_loss_flag => p_gain_or_loss_flag
3340 , p_bflow_method_code => p_bflow_method_code -- 4219869 Business Flow
3341 , p_bflow_class_code => p_bflow_class_code -- 4219869 Business Flow
3342 , p_inherit_desc_flag => p_inherit_desc_flag -- 4219869 Business Flow
3343 , p_encumbrance_type_id => p_encumbrance_type_id -- 4458381 Public Sector Enh
3344 , p_array_alt_source_index => p_array_alt_source_index
3345 , p_array_acct_attr => p_array_acct_attr -- 4262811
3346 , p_array_acct_attr_source_idx => p_array_acct_attr_source_idx -- 4262811
3347 , p_rec_aad_objects => p_rec_aad_objects
3348 , p_rec_sources => p_rec_sources
3349 );
3350 ------------------------------------------------------------------------------------
3351 -- 4262811
3352 ------------------------------------------------------------------------------------
3353 l_detail := l_detail || GetAccRevMPABody(
3354 p_application_id => p_application_id
3355 , p_amb_context_code => p_amb_context_code
3356 , p_entity_code => p_entity_code
3357 , p_event_class => p_event_class_code
3358 , p_event_type => p_event_type_code
3359 , p_line_definition_owner_code => p_line_definition_owner_code
3360 , p_line_definition_code => p_line_definition_code
3361 , p_accounting_line_type_code => p_accounting_line_type_code
3362 , p_accounting_line_code => p_accounting_line_code
3363 , p_mpa_header_desc_type_code => p_mpa_header_desc_type_code
3364 , p_mpa_header_desc_code => p_mpa_header_desc_code
3365 , p_num_je_code => p_num_je_code
3366 , p_gl_dates_code => p_gl_dates_code
3367 , p_proration_code => p_proration_code
3368 , p_bflow_method_code => p_bflow_method_code
3369 , p_array_alt_source_index => p_array_alt_source_index
3370 , p_array_acct_attr => p_array_acct_attr
3371 , p_array_acct_attr_source_idx => p_array_acct_attr_source_idx
3372 , p_rec_aad_objects => p_rec_aad_objects
3373 , p_rec_sources => p_rec_sources
3374 );
3375 ------------------------------------------------------------------------------------
3376
3377 IF l_detail IS NULL THEN l_detail := 'null;'; END IF;
3378
3379 IF l_cond IS NOT NULL THEN
3380 l_alt := 'IF '|| l_cond||' THEN '||g_chr_newline ;
3381 l_alt := l_alt || l_detail || g_chr_newline ||'END IF;';
3382 ELSE
3383 l_alt := l_detail;
3384 END IF;
3385
3386 p_IsCompiled :=TRUE;
3387 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3388
3389 trace
3390 (p_msg => 'END of GetAcctLineTypeBody '
3391 ,p_level => C_LEVEL_PROCEDURE
3392 ,p_module => l_log_module);
3393
3394 END IF;
3395 RETURN l_alt;
3396 EXCEPTION
3397 WHEN VALUE_ERROR THEN
3398 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
3399 trace
3400 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR='||sqlerrm
3401 ,p_level => C_LEVEL_EXCEPTION
3402 ,p_module => l_log_module);
3403 END IF;
3404 p_IsCompiled := FALSE;
3405 RETURN NULL;
3406 WHEN xla_exceptions_pkg.application_exception THEN
3410 p_IsCompiled := FALSE;
3407 p_IsCompiled := FALSE;
3408 RETURN NULL;
3409 WHEN OTHERS THEN
3411 xla_exceptions_pkg.raise_message
3412 (p_location => 'xla_cmp_acct_line_type_pkg.GetAcctLineTypeBody');
3413 END GetAcctLineTypeBody;
3414
3415
3416
3417 /*---------------------------------------------------------+
3418 | |
3419 | Private Function |
3420 | |
3421 | GenerateDefAcctLineType |
3422 | |
3423 | Generates AcctLineType_xxx() procedure |
3424 | |
3425 +---------------------------------------------------------*/
3426
3427 FUNCTION GenerateDefAcctLineType(
3428 p_application_id IN NUMBER
3429 , p_amb_context_code IN VARCHAR2
3430 , p_entity_code IN VARCHAR2
3431 , p_event_class_code IN VARCHAR2
3432 , p_event_type_code IN VARCHAR2
3433 , p_line_definition_owner_code IN VARCHAR2
3434 , p_line_definition_code IN VARCHAR2
3435 --
3436 , p_accounting_line_code IN VARCHAR2
3437 , p_accounting_line_type_code IN VARCHAR2
3438 , p_accounting_line_name IN VARCHAR2
3439 --
3440 , p_description_type_code IN VARCHAR2
3441 , p_description_code IN VARCHAR2
3442 --
3443 , p_acct_entry_type_code IN VARCHAR2
3444 , p_natural_side_code IN VARCHAR2
3445 , p_transfer_mode_code IN VARCHAR2
3446 , p_switch_side_flag IN VARCHAR2
3447 , p_merge_duplicate_code IN VARCHAR2
3448 , p_accounting_class_code IN VARCHAR2
3449 , p_rounding_class_code IN VARCHAR2
3450 , p_gain_or_loss_flag IN VARCHAR2
3451 --
3452 , p_bflow_method_code IN VARCHAR2 -- 4219869 Business Flow
3453 , p_bflow_class_code IN VARCHAR2 -- 4219869 Business Flow
3454 , p_inherit_desc_flag IN VARCHAR2 -- 4219869 Business Flow
3455 --
3456 , p_num_je_code IN VARCHAR2 -- 4262811
3457 , p_gl_dates_code IN VARCHAR2 -- 4262811
3458 , p_proration_code IN VARCHAR2 -- 4262811
3459 , p_mpa_header_desc_type_code IN VARCHAR2 -- 4262811
3460 , p_mpa_header_desc_code IN VARCHAR2 -- 4262811
3461 --
3462 , p_budgetary_control_flag IN VARCHAR2 -- 4458381 Public Sector Enh
3463 , p_encumbrance_type_id IN INTEGER -- 4458381 Public Sector Enh
3464 --
3465 , p_array_alt_source_index IN OUT NOCOPY xla_cmp_source_pkg.t_array_ByInt
3466 --
3467 , p_rec_aad_objects IN OUT NOCOPY xla_cmp_source_pkg.t_rec_aad_objects
3468 --
3469 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
3470 --
3471 , p_IsCompiled OUT NOCOPY BOOLEAN
3472 )
3473 RETURN CLOB
3474 IS
3475
3476 l_alt CLOB;
3477 l_parameters VARCHAR2(32000);
3478 l_ObjectIndex BINARY_INTEGER;
3479 l_log_module VARCHAR2(240);
3480 l_array_acct_attr xla_cmp_source_pkg.t_array_VL30; -- 4262811
3481 l_array_acct_attr_source_idx xla_cmp_source_pkg.t_array_ByInt; -- 4262811
3482 --
3483 BEGIN
3484 IF g_log_enabled THEN
3485 l_log_module := C_DEFAULT_MODULE||'.GenerateDefAcctLineType';
3486 END IF;
3487 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3488
3489 trace
3490 (p_msg => 'BEGIN of GenerateDefAcctLineType'
3491 ,p_level => C_LEVEL_PROCEDURE
3492 ,p_module => l_log_module);
3493
3494 END IF;
3495
3496 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3497 trace
3498 (p_msg => 'application_id = ' ||p_application_id ||
3499 ' - amb_context_code = ' ||p_amb_context_code ||
3500 ' - p_entity_code = ' ||p_entity_code ||
3501 ' - event_class_code = ' ||p_event_class_code ||
3502 ' - event_type_code = ' ||p_event_type_code ||
3503 ' - line_definition_code = '||p_line_definition_code ||
3504 '-'||p_line_definition_owner_code ||
3505 ' - accounting_line_code = '||p_accounting_line_code ||
3506 '-'||p_accounting_line_type_code
3507 ,p_level => C_LEVEL_STATEMENT
3508 ,p_module => l_log_module);
3509 END IF;
3510
3511 l_alt := C_ALT_PROC;
3512 IF(p_natural_side_code = 'G') THEN
3513 l_alt := xla_cmp_string_pkg.replace_token(l_alt,'$alt_proc_gain_or_loss_cond$',
3514 'IF NOT ((p_calculate_g_l_flag = ''Y'' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> ''ALC'') or
3515 (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'')) THEN
3516 return;
3517 END IF;
3518 ');
3519 ELSIF(p_gain_or_loss_flag is null or p_gain_or_loss_flag = 'N') THEN
3520 l_alt := xla_cmp_string_pkg.replace_token(l_alt,'$alt_proc_gain_or_loss_cond$', ' ');
3521 ELSE
3522 -- only execute for primary, vm-secondary, secondary with same currency of primary
3523 l_alt := xla_cmp_string_pkg.replace_token(l_alt,'$alt_proc_gain_or_loss_cond$',
3527 END IF;
3524 'IF ((p_calculate_g_l_flag = ''Y'' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> ''ALC'') or
3525 (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'')) THEN
3526 return;
3528 ');
3529 /*
3530 l_alt := xla_cmp_string_pkg.replace_token(l_alt,'$alt_proc_gain_or_loss_cond$',
3531 'IF p_calculate_g_l_flag = ''Y'' OR (NOT ((XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id =
3532 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id) OR
3533 (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code = ''SECONDARY'' AND
3534 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.calculate_amts_flag=''N''))) THEN
3535 return;
3536 END IF;
3537 ');
3538 */
3539 END IF;
3540 --
3541 -- 4458381, 5394730 (replicate BC JEs to secondary/ALC for Actual and encumbrance)
3542 --IF (p_budgetary_control_flag = 'N') THEN
3543 l_alt := xla_cmp_string_pkg.replace_token(l_alt,'$alt_proc_cond$',
3544 'IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3545 l_balance_type_code <> ''B'' THEN');
3546 /*
3547 ELSE
3548 l_alt := xla_cmp_string_pkg.replace_token(l_alt,'$alt_proc_cond$',
3549 'IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.budgetary_control_flag = l_budgetary_control_flag AND
3550 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id =
3551 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id THEN');
3552 END IF;
3553 */
3554
3555 l_alt := xla_cmp_string_pkg.replace_token(l_alt,'$alt_body$',
3556 GetAcctLineTypeBody (
3557 p_application_id => p_application_id
3558 , p_amb_context_code => p_amb_context_code
3559 , p_entity_code => p_entity_code
3560 , p_event_class_code => p_event_class_code
3561 , p_event_type_code => p_event_type_code
3562 , p_line_definition_code => p_line_definition_code
3563 , p_line_definition_owner_code => p_line_definition_owner_code
3564 --
3565 , p_accounting_line_code => p_accounting_line_code
3566 , p_accounting_line_type_code => p_accounting_line_type_code
3567 , p_accounting_line_name => p_accounting_line_name
3568 --
3569 , p_description_type_code => p_description_type_code
3570 , p_description_code => p_description_code
3571 --
3572 , p_acct_entry_type_code => p_acct_entry_type_code
3573 , p_natural_side_code => p_natural_side_code
3574 , p_transfer_mode_code => p_transfer_mode_code
3575 , p_switch_side_flag => p_switch_side_flag
3576 , p_merge_duplicate_code => p_merge_duplicate_code
3577 , p_accounting_class_code => p_accounting_class_code
3578 , p_rounding_class_code => p_rounding_class_code
3579 , p_gain_or_loss_flag => p_gain_or_loss_flag
3580 --
3581 , p_bflow_method_code => p_bflow_method_code -- 4219869 Business Flow
3582 , p_bflow_class_code => p_bflow_class_code -- 4219869 Business Flow
3583 , p_inherit_desc_flag => p_inherit_desc_flag -- 4219869 Business Flow
3584 --
3585 , p_mpa_header_desc_type_code => p_mpa_header_desc_type_code -- 4262811
3586 , p_mpa_header_desc_code => p_mpa_header_desc_code -- 4262811
3587 , p_num_je_code => p_num_je_code -- 4262811
3588 , p_gl_dates_code => p_gl_dates_code -- 4262811
3589 , p_proration_code => p_proration_code -- 4262811
3590 --
3591 , p_budgetary_control_flag => p_budgetary_control_flag -- 4458381 Public Sector Enh
3592 , p_encumbrance_type_id => p_encumbrance_type_id -- 4458381 Public Sector Enh
3593 --
3594 , p_array_alt_source_index => p_array_alt_source_index
3595 --
3596 , p_array_acct_attr => l_array_acct_attr -- 4262811
3597 , p_array_acct_attr_source_idx => l_array_acct_attr_source_idx -- 4262811
3598 , p_rec_aad_objects => p_rec_aad_objects
3599 --
3600 , p_rec_sources => p_rec_sources
3601 --
3602 , p_IsCompiled => p_IsCompiled
3603 )
3604 );
3605
3606 l_parameters := xla_cmp_source_pkg.GenerateParameters(
3607 p_array_source_index => p_array_alt_source_index
3608 , p_rec_sources => p_rec_sources
3609 ) ;
3610 --
3611 IF l_parameters IS NULL THEN
3612 l_alt := xla_cmp_string_pkg.replace_token(l_alt, '$parameters$' ,' '); -- 4417664
3613 ELSE
3614 l_alt := xla_cmp_string_pkg.replace_token(l_alt, '$parameters$' ,l_parameters );
3615 END IF;
3616 --
3617 -- cache JLT in AAD object cache
3618 --
3619 l_ObjectIndex := xla_cmp_source_pkg.CacheAADObject (
3620 p_object => xla_cmp_source_pkg.C_ALT
3621 , p_object_code => p_accounting_line_code
3622 , p_object_type_code => p_accounting_line_type_code
3623 , p_application_id => p_application_id
3624 , p_event_class_code => p_event_class_code
3625 , p_event_type_code => p_event_type_code
3626 , p_line_definition_owner_code => p_line_definition_owner_code
3630 );
3627 , p_line_definition_code => p_line_definition_code
3628 , p_array_source_index => p_array_alt_source_index
3629 , p_rec_aad_objects => p_rec_aad_objects
3631 --
3632 l_alt := xla_cmp_string_pkg.replace_token(l_alt ,'$alt_hash_id$' ,TO_CHAR(l_ObjectIndex));
3633 l_alt := xla_cmp_string_pkg.replace_token(l_alt ,'$alt_code$' ,p_accounting_line_code);
3634 l_alt := xla_cmp_string_pkg.replace_token(l_alt ,'$alt_type_code$' ,p_accounting_line_type_code);
3635 l_alt := xla_cmp_string_pkg.replace_token(l_alt ,'$alt_appl_id$' ,TO_CHAR(p_application_id));
3636 l_alt := xla_cmp_string_pkg.replace_token(l_alt ,'$amb_context_code$' ,nvl(p_amb_context_code,' '));
3637 l_alt := xla_cmp_string_pkg.replace_token(l_alt ,'$entity_code$' ,nvl(p_entity_code, ' '));
3638 l_alt := xla_cmp_string_pkg.replace_token(l_alt ,'$event_class_code$' ,nvl(p_event_class_code,' '));
3639 l_alt := xla_cmp_string_pkg.replace_token(l_alt ,'$event_type_code$' ,nvl(p_event_type_code,' '));
3640 l_alt := xla_cmp_string_pkg.replace_token(l_alt ,'$line_definition_owner_code$' ,nvl(p_line_definition_owner_code,' '));
3641 l_alt := xla_cmp_string_pkg.replace_token(l_alt ,'$line_definition_code$' ,nvl(p_line_definition_code,' '));
3642 l_alt := xla_cmp_string_pkg.replace_token(l_alt ,'$balance_type_code$' ,nvl(p_acct_entry_type_code,' '));
3643 -- 4219869 Business Flow
3644 l_alt := xla_cmp_string_pkg.replace_token(l_alt ,'$bflow_method_code$' ,p_bflow_method_code);
3645 l_alt := xla_cmp_string_pkg.replace_token(l_alt ,'$bflow_class_code$' ,p_bflow_class_code);
3646 l_alt := xla_cmp_string_pkg.replace_token(l_alt ,'$inherit_desc_flag$' ,p_inherit_desc_flag);
3647 -- 4458381 Public Sector Enh
3648 l_alt := xla_cmp_string_pkg.replace_token(l_alt ,'$budgetary_control_flag$' ,p_budgetary_control_flag);
3649 --
3650 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3651 trace
3652 (p_msg => 'END of GenerateDefAcctLineType'
3653 ,p_level => C_LEVEL_PROCEDURE
3654 ,p_module => l_log_module);
3655 END IF;
3656 --
3657 RETURN l_alt;
3658 --
3659 EXCEPTION
3660 WHEN VALUE_ERROR THEN
3661 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
3662 trace
3663 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
3664 ,p_level => C_LEVEL_EXCEPTION
3665 ,p_module => l_log_module);
3666 END IF;
3667 xla_exceptions_pkg.raise_message
3668 ('XLA'
3669 ,'XLA_CMP_COMPILER_ERROR'
3670 ,'PROCEDURE'
3671 ,'xla_cmp_acct_line_type_pkg.GenerateDefAcctLineType'
3672 ,'ERROR'
3673 , sqlerrm
3674 );
3675
3676 WHEN xla_exceptions_pkg.application_exception THEN
3677 p_IsCompiled := FALSE;
3678 RETURN NULL;
3679 WHEN OTHERS THEN
3680 p_IsCompiled := FALSE;
3681 xla_exceptions_pkg.raise_message
3682 (p_location => 'xla_cmp_acct_line_type_pkg.GenerateDefAcctLineType');
3683 END GenerateDefAcctLineType;
3684
3685
3686 /*---------------------------------------------------------+
3687 | |
3688 | Private Function |
3689 | |
3690 | GenerateOneAcctLineType |
3691 | |
3692 | Generates AcctLineType_xxx() procedure and returns the |
3693 | result in DBMS_SQL.VARCHAR2S datatype |
3694 | |
3695 +---------------------------------------------------------*/
3696
3697 FUNCTION GenerateOneAcctLineType(
3698 p_application_id IN NUMBER
3699 , p_amb_context_code IN VARCHAR2
3700 , p_entity_code IN VARCHAR2
3701 , p_event_class_code IN VARCHAR2
3702 , p_event_type_code IN VARCHAR2
3703 , p_line_definition_owner_code IN VARCHAR2
3704 , p_line_definition_code IN VARCHAR2
3705 --
3706 , p_accounting_line_code IN VARCHAR2
3707 , p_accounting_line_type_code IN VARCHAR2
3708 , p_accounting_line_name IN VARCHAR2
3709 --
3710 , p_description_type_code IN VARCHAR2
3711 , p_description_code IN VARCHAR2
3712 --
3713 , p_acct_entry_type_code IN VARCHAR2
3714 , p_natural_side_code IN VARCHAR2
3715 , p_transfer_mode_code IN VARCHAR2
3716 , p_switch_side_flag IN VARCHAR2
3717 , p_merge_duplicate_code IN VARCHAR2
3718 , p_accounting_class_code IN VARCHAR2
3719 , p_rounding_class_code IN VARCHAR2
3720 , p_gain_or_loss_flag IN VARCHAR2
3721 --
3722 , p_bflow_method_code IN VARCHAR2 -- 4219869 Business Flow
3723 , p_bflow_class_code IN VARCHAR2 -- 4219869 Business Flow
3724 , p_inherit_desc_flag IN VARCHAR2 -- 4219869 Business Flow
3725 --
3726 , p_num_je_code IN VARCHAR2 -- 4262811
3727 , p_gl_dates_code IN VARCHAR2 -- 4262811
3728 , p_proration_code IN VARCHAR2 -- 4262811
3729 , p_mpa_header_desc_type_code IN VARCHAR2 -- 4262811
3730 , p_mpa_header_desc_code IN VARCHAR2 -- 4262811
3731 --
3732 , p_budgetary_control_flag IN VARCHAR2 -- 4458381 Public Sector Enh
3736 --
3733 , p_encumbrance_type_id IN INTEGER -- 4458381 Public Sector Enh
3734 --
3735 , p_rec_aad_objects IN OUT NOCOPY xla_cmp_source_pkg.t_rec_aad_objects
3737 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
3738 --
3739 , p_IsCompiled OUT NOCOPY BOOLEAN
3740 )
3741 RETURN DBMS_SQL.VARCHAR2S
3742 IS
3743 --
3744
3745 l_alt CLOB;
3746 l_alt_code VARCHAR2(30);
3747 l_IsCompiled BOOLEAN;
3748 l_array_alt_source_index xla_cmp_source_pkg.t_array_ByInt;
3749 l_array_null_alt_source_idx xla_cmp_source_pkg.t_array_ByInt;
3750 --
3751 l_array_alt DBMS_SQL.VARCHAR2S;
3752 l_log_module VARCHAR2(240);
3753 --
3754 BEGIN
3755 IF g_log_enabled THEN
3756 l_log_module := C_DEFAULT_MODULE||'.GenerateOneAcctLineType';
3757 END IF;
3758 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3759 trace
3760 (p_msg => 'BEGIN of GenerateOneAcctLineType'
3761 ,p_level => C_LEVEL_PROCEDURE
3762 ,p_module => l_log_module);
3763
3764 END IF;
3765
3766 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3767 trace
3768 (p_msg => 'application_id = ' ||p_application_id ||
3769 ' - amb_context_code = ' ||p_amb_context_code ||
3770 ' - p_entity_code = ' ||p_entity_code ||
3771 ' - event_class_code = ' ||p_event_class_code ||
3772 ' - event_type_code = ' ||p_event_type_code ||
3773 ' - line_definition_code = '||p_line_definition_code ||
3774 '-'||p_line_definition_owner_code ||
3775 ' - accounting_line_code = '||p_accounting_line_code ||
3776 '-'||p_accounting_line_type_code
3777 ,p_level => C_LEVEL_STATEMENT
3778 ,p_module => l_log_module);
3779 END IF;
3780
3781 l_IsCompiled := TRUE;
3782 l_alt :=NULL;
3783
3784 l_alt := GenerateDefAcctLineType(
3785 p_application_id => p_application_id
3786 , p_amb_context_code => p_amb_context_code
3787 , p_entity_code => p_entity_code
3788 , p_event_class_code => p_event_class_code
3789 , p_event_type_code => p_event_type_code
3790 , p_line_definition_code => p_line_definition_code
3791 , p_line_definition_owner_code => p_line_definition_owner_code
3792 --
3793 , p_accounting_line_code => p_accounting_line_code
3794 , p_accounting_line_type_code => p_accounting_line_type_code
3795 , p_accounting_line_name => p_accounting_line_name
3796 --
3797 , p_description_type_code => p_description_type_code
3798 , p_description_code => p_description_code
3799 --
3800 , p_acct_entry_type_code => p_acct_entry_type_code
3801 , p_natural_side_code => p_natural_side_code
3802 , p_transfer_mode_code => p_transfer_mode_code
3803 , p_switch_side_flag => p_switch_side_flag
3804 , p_merge_duplicate_code => p_merge_duplicate_code
3805 , p_accounting_class_code => p_accounting_class_code
3806 , p_rounding_class_code => p_rounding_class_code
3807 , p_gain_or_loss_flag => p_gain_or_loss_flag
3808 --
3809 , p_bflow_method_code => p_bflow_method_code -- 4219869 Business Flow
3810 , p_bflow_class_code => p_bflow_class_code -- 4219869 Business Flow
3811 , p_inherit_desc_flag => p_inherit_desc_flag -- 4219869 Business Flow
3812 --
3813 , p_num_je_code => p_num_je_code -- 4262811
3814 , p_gl_dates_code => p_gl_dates_code -- 4262811
3815 , p_proration_code => p_proration_code -- 4262811
3816 , p_mpa_header_desc_type_code => p_mpa_header_desc_type_code -- 4262811
3817 , p_mpa_header_desc_code => p_mpa_header_desc_code -- 4262811
3818 --
3819 , p_budgetary_control_flag => p_budgetary_control_flag -- 4458381 Public Sector Enh
3820 , p_encumbrance_type_id => p_encumbrance_type_id -- 4458381 Public Sector Enh
3821 --
3822 , p_array_alt_source_index => l_array_alt_source_index
3823 --
3824 , p_rec_aad_objects => p_rec_aad_objects
3825 --
3826 , p_rec_sources => p_rec_sources
3827 --
3828 , p_IsCompiled => l_IsCompiled
3829 );
3830
3831 l_alt := xla_cmp_string_pkg.replace_token(l_alt,'$package_name$',g_package_name); -- 4417664
3832
3833 xla_cmp_string_pkg.CreateString(
3834 p_package_text => l_alt
3835 ,p_array_string => l_array_alt
3839 l_array_alt_source_index := l_array_null_alt_source_idx;
3836 );
3837
3838 p_IsCompiled := l_IsCompiled ;
3840
3841 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3842 trace
3843 (p_msg => 'return value. = '||
3844 CASE l_IsCompiled WHEN TRUE THEN 'TRUE' ELSE 'FALSE' END
3845 ,p_level => C_LEVEL_PROCEDURE
3846 ,p_module => l_log_module);
3847
3848 trace
3849 (p_msg => 'END of GenerateOneAcctLineType'
3850 ,p_level => C_LEVEL_PROCEDURE
3851 ,p_module => l_log_module);
3852 END IF;
3853
3854 RETURN l_array_alt;
3855 EXCEPTION
3856 WHEN VALUE_ERROR THEN
3857 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
3858 trace
3859 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
3860 ,p_level => C_LEVEL_EXCEPTION
3861 ,p_module => l_log_module);
3862 END IF;
3863 p_IsCompiled := FALSE;
3864 RETURN xla_cmp_string_pkg.g_null_varchar2s;
3865 WHEN xla_exceptions_pkg.application_exception THEN
3866 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
3867 trace
3868 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
3869 ,p_level => C_LEVEL_EXCEPTION
3870 ,p_module => l_log_module);
3871 END IF;
3872 p_IsCompiled := FALSE;
3873 RETURN xla_cmp_string_pkg.g_null_varchar2s;
3874 WHEN OTHERS THEN
3875 p_IsCompiled := FALSE;
3876 xla_exceptions_pkg.raise_message
3877 (p_location => 'xla_cmp_acct_line_type_pkg.GenerateOneAcctLineType');
3878 END GenerateOneAcctLineType;
3879
3880 /*---------------------------------------------------------+
3881 | |
3882 | Private Function |
3883 | |
3884 | GenerateAcctLineTypeProcs |
3885 | |
3886 | Drives the generation of AcctLineType_xxx() procedures |
3887 | |
3888 +---------------------------------------------------------*/
3889
3890 FUNCTION GenerateAcctLineTypeProcs(
3891 p_product_rule_code IN VARCHAR2
3892 , p_product_rule_type_code IN VARCHAR2
3893 , p_application_id IN NUMBER
3894 , p_amb_context_code IN VARCHAR2
3895 --
3896 , p_rec_aad_objects IN OUT NOCOPY xla_cmp_source_pkg.t_rec_aad_objects
3897 --
3898 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
3899 --
3900 , p_IsCompiled IN OUT NOCOPY BOOLEAN
3901 )
3902 RETURN DBMS_SQL.VARCHAR2S
3903 IS
3904 --
3905 --
3906 CURSOR alt_cur
3907 IS
3908 SELECT DISTINCT
3909 xldj.accounting_line_code
3910 , xldj.accounting_line_type_code
3911 --
3912 , REPLACE(xaltt.name , '''','''''')
3913 --
3914 , xldj.description_type_code
3915 , xldj.description_code
3916 , xldj.inherit_desc_flag -- 4219869 Business Flow
3917 --
3918 , xaltb.accounting_entry_type_code
3919 , xaltb.natural_side_code
3920 , xaltb.gl_transfer_mode_code
3921 , xaltb.switch_side_flag
3922 , xaltb.merge_duplicate_code
3923 --
3924 , xaltb.accounting_class_code
3925 , xaltb.rounding_class_code
3926 , xaltb.gain_or_loss_flag
3927 --
3928 , xaltb.business_method_code -- 4219869 Business Flow
3929 , xaltb.business_class_code -- 4219869 Business Flow
3930 --
3931 , xpah.entity_code
3932 , xpah.event_class_code
3933 , xpah.event_type_code
3934 --
3935 , xald.line_definition_code
3936 , xald.line_definition_owner_code
3937 --
3938 , xldj.mpa_num_je_code -- 4262811
3939 , xldj.mpa_gl_dates_code -- 4262811
3940 , xldj.mpa_proration_code -- 4262811
3941 , xldj.mpa_header_desc_type_code -- 4262811
3942 , xldj.mpa_header_desc_code -- 4262811
3943 --
3944 , xldt.budgetary_control_flag -- 4458381 Public Sector Enh
3945 , xaltb.encumbrance_type_id -- 4458381 Public Sector Enh
3946 FROM xla_aad_line_defn_assgns xald
3947 , xla_line_defn_jlt_assgns xldj
3948 , xla_prod_acct_headers xpah
3949 , xla_acct_line_types_b xaltb
3950 , xla_acct_line_types_tl xaltt
3951 , xla_line_definitions_b xldt
3952 --
3953 WHERE xpah.application_id = p_application_id
3954 AND xpah.product_rule_type_code = p_product_rule_type_code
3955 AND xpah.product_rule_code = p_product_rule_code
3956 AND xpah.amb_context_code = p_amb_context_code
3957 AND xpah.accounting_required_flag = 'Y'
3958 AND xpah.validation_status_code = 'R'
3959 --
3960 AND xald.application_id = xpah.application_id
3961 AND xald.amb_context_code = xpah.amb_context_code
3962 AND xald.product_rule_type_code = xpah.product_rule_type_code
3963 AND xald.product_rule_code = xpah.product_rule_code
3964 AND xald.event_class_code = xpah.event_class_code
3965 AND xald.event_type_code = xpah.event_type_code
3966 --
3970 AND xldj.event_type_code = xald.event_type_code
3967 AND xldj.application_id = xald.application_id
3968 AND xldj.amb_context_code = xald.amb_context_code
3969 AND xldj.event_class_code = xald.event_class_code
3971 AND xldj.line_definition_owner_code = xald.line_definition_owner_code
3972 AND xldj.line_definition_code = xald.line_definition_code
3973 AND xldj.active_flag = 'Y'
3974 --
3975 AND xldj.application_id = xaltb.application_id
3976 AND xldj.amb_context_code = xaltb.amb_context_code
3977 AND xldj.accounting_line_code = xaltb.accounting_line_code
3978 AND xldj.accounting_line_type_code = xaltb.accounting_line_type_code
3979 AND xldj.event_class_code = xaltb.event_class_code
3980 AND xaltb.enabled_flag = 'Y'
3981 --
3982 AND xaltb.application_id = xaltt.application_id (+)
3983 AND xaltb.amb_context_code = xaltt.amb_context_code (+)
3984 AND xaltb.entity_code = xaltt.entity_code (+)
3985 AND xaltb.event_class_code = xaltt.event_class_code (+)
3986 AND xaltb.accounting_line_code = xaltt.accounting_line_code (+)
3987 AND xaltb.accounting_line_type_code = xaltt.accounting_line_type_code(+)
3988 AND xaltt.language (+) = USERENV('LANG')
3989 --
3990 AND xldt.application_id = xald.application_id
3991 AND xldt.amb_context_code = xald.amb_context_code
3992 AND xldt.event_class_code = xald.event_class_code
3993 AND xldt.event_type_code = xald.event_type_code
3994 AND xldt.line_definition_owner_code = xald.line_definition_owner_code
3995 AND xldt.line_definition_code = xald.line_definition_code
3996 AND xldt.budgetary_control_flag = XLA_CMP_PAD_PKG.g_bc_pkg_flag
3997 --
3998 ORDER BY xldj.accounting_line_type_code, xldj.accounting_line_code
3999 ;
4000 --
4001 --
4002 l_AcctlineTypes DBMS_SQL.VARCHAR2S;
4003 l_array_alt DBMS_SQL.VARCHAR2S;
4004 --
4005 l_array_alt_code xla_cmp_source_pkg.t_array_VL30;
4006 l_array_alt_type_code xla_cmp_source_pkg.t_array_VL1;
4007 l_array_alt_name xla_cmp_source_pkg.t_array_VL80;
4008 --
4009 l_array_desc_code xla_cmp_source_pkg.t_array_VL30;
4010 l_array_desc_type_code xla_cmp_source_pkg.t_array_VL1;
4011 --
4012 l_array_entry_type_code xla_cmp_source_pkg.t_array_VL1;
4013 l_array_natural_side_code xla_cmp_source_pkg.t_array_VL1;
4014 l_array_transfer_mode xla_cmp_source_pkg.t_array_VL1;
4015 l_array_switch_side_flag xla_cmp_source_pkg.t_array_VL1;
4016 l_array_merge_code xla_cmp_source_pkg.t_array_VL1;
4017 --
4018 l_array_acct_class_code xla_cmp_source_pkg.t_array_VL30;
4019 l_array_rounding_class_code xla_cmp_source_pkg.t_array_VL30;
4020 l_array_gain_or_loss_flag xla_cmp_source_pkg.t_array_VL1;
4021 --
4022 l_array_entity_code xla_cmp_source_pkg.t_array_VL30;
4023 l_array_class_code xla_cmp_source_pkg.t_array_VL30;
4024 l_array_event_type xla_cmp_source_pkg.t_array_VL30;
4025 --
4026 l_array_jld_owner_code xla_cmp_source_pkg.t_array_VL1;
4027 l_array_jld_code xla_cmp_source_pkg.t_array_VL30;
4028 --
4029 l_array_bflow_method_code xla_cmp_source_pkg.t_array_VL30; -- 4219869 Business Flow
4030 l_array_bflow_class_code xla_cmp_source_pkg.t_array_VL30; -- 4219869 Business Flow
4031 l_array_inherit_desc_flag xla_cmp_source_pkg.t_array_VL1; -- 4219869 Business Flow
4032 --
4033 l_array_mpa_num_je_code xla_cmp_source_pkg.t_array_VL30; -- 4262811
4034 l_array_mpa_gl_dates_code xla_cmp_source_pkg.t_array_VL30; -- 4262811
4035 l_array_mpa_proration_code xla_cmp_source_pkg.t_array_VL30; -- 4262811
4036 l_array_mpa_desc_type_code xla_cmp_source_pkg.t_array_VL1; -- 4262811
4037 l_array_mpa_desc_code xla_cmp_source_pkg.t_array_VL30; -- 4262811
4038 --
4039 l_array_budgetary_control_flag xla_cmp_source_pkg.t_array_VL1; -- 4458381 Public Sector Enh
4040 l_array_encumbrance_type_id xla_cmp_source_pkg.t_array_Int; -- 4458381 Public Sector Enh
4041 --
4042 l_IsCompiled BOOLEAN;
4043 l_number NUMBER;
4044 --
4045 l_log_module VARCHAR2(240);
4046 BEGIN
4047 IF g_log_enabled THEN
4048 l_log_module := C_DEFAULT_MODULE||'.GenerateAcctLineTypeProcs';
4049 END IF;
4050 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4051 trace
4052 (p_msg => 'BEGIN of GenerateAcctLineTypeProcs'
4053 ,p_level => C_LEVEL_PROCEDURE
4054 ,p_module => l_log_module);
4055 END IF;
4056
4057 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
4058 trace(p_msg => 'application_id = '||p_application_id||
4059 ',amb_context_code = '||p_amb_context_code||
4060 ',product_rule_type_code = '||p_product_rule_type_code||
4061 ',product_rule_code = '||p_product_rule_code
4062 ,p_module => l_log_module
4063 ,p_level => C_LEVEL_STATEMENT);
4064 END IF;
4065
4066 OPEN alt_cur;
4067
4068 FETCH alt_cur BULK COLLECT INTO l_array_alt_code
4069 , l_array_alt_type_code
4070 , l_array_alt_name
4071 , l_array_desc_type_code
4072 , l_array_desc_code
4076 , l_array_transfer_mode
4073 , l_array_inherit_desc_flag -- 4219869 Business Flow
4074 , l_array_entry_type_code
4075 , l_array_natural_side_code
4077 , l_array_switch_side_flag
4078 , l_array_merge_code
4079 , l_array_acct_class_code
4080 , l_array_rounding_class_code
4081 , l_array_gain_or_loss_flag
4082 , l_array_bflow_method_code -- 4219869 Business Flow
4083 , l_array_bflow_class_code -- 4219869 Business Flow
4084 , l_array_entity_code
4085 , l_array_class_code
4086 , l_array_event_type
4087 , l_array_jld_code
4088 , l_array_jld_owner_code
4089 , l_array_mpa_num_je_code -- 4262811
4090 , l_array_mpa_gl_dates_code -- 4262811
4091 , l_array_mpa_proration_code -- 4262811
4092 , l_array_mpa_desc_type_code -- 4262811
4093 , l_array_mpa_desc_code -- 4262811
4094 , l_array_budgetary_control_flag -- 4458381 Public Sector Enh
4095 , l_array_encumbrance_type_id -- 4458381 Public Sector Enh
4096 ;
4097 CLOSE alt_cur;
4098
4099 l_AcctlineTypes := xla_cmp_string_pkg.g_null_varchar2s;
4100
4101
4102 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
4103 trace(p_msg => '# ALT = '||l_array_alt_code.COUNT
4104 ,p_level => C_LEVEL_STATEMENT
4105 ,p_module => l_log_module);
4106 END IF;
4107
4108 IF l_array_alt_code.COUNT > 0 THEN
4109
4110 p_IsCompiled := TRUE;
4111
4112 FOR Idx In l_array_alt_code.FIRST .. l_array_alt_code.LAST LOOP
4113 --
4114 IF l_array_alt_code.EXISTS(Idx) THEN
4115
4116 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
4117 trace(p_msg => 'event_type_code = ' ||l_array_event_type(Idx) ||
4118 ',journal_line_type = '||l_array_alt_code(Idx) ||
4119 '-'||l_array_alt_type_code(Idx) ||
4120 ',line_definition = ' ||l_array_jld_code(Idx) ||
4121 '-'||l_array_jld_owner_code(Idx) || -- 4219869 Business Flow
4122 ',inherit descrip = ' ||l_array_inherit_desc_flag(Idx) || -- 4219869 Business Flow
4123 ',bflow method = ' ||l_array_bflow_method_code(Idx) || -- 4219869 Business Flow
4124 ',bflow class = ' ||l_array_bflow_class_code(Idx) -- 4219869 Business Flow
4125 ,p_level => C_LEVEL_STATEMENT
4126 ,p_module => l_log_module);
4127
4128 END IF;
4129 l_array_alt := GenerateOneAcctLineType(
4130 p_application_id => p_application_id
4131 , p_amb_context_code => p_amb_context_code
4132 , p_entity_code => l_array_entity_code(Idx)
4133 , p_event_class_code => l_array_class_code(Idx)
4134 , p_event_type_code => l_array_event_type(Idx)
4135 , p_line_definition_owner_code => l_array_jld_owner_code(Idx)
4136 , p_line_definition_code => l_array_jld_code(Idx)
4137 --
4138 , p_accounting_line_code => l_array_alt_code(Idx)
4139 , p_accounting_line_type_code => l_array_alt_type_code(Idx)
4140 , p_accounting_line_name => l_array_alt_name(Idx)
4141 --
4142 , p_description_type_code => l_array_desc_type_code(Idx)
4143 , p_description_code => l_array_desc_code(Idx)
4144 , p_acct_entry_type_code => l_array_entry_type_code(Idx)
4145 , p_natural_side_code => l_array_natural_side_code(Idx)
4146 , p_transfer_mode_code => l_array_transfer_mode(Idx)
4147 , p_switch_side_flag => l_array_switch_side_flag(Idx)
4148 , p_merge_duplicate_code => l_array_merge_code(Idx)
4149 , p_accounting_class_code => l_array_acct_class_code(Idx)
4150 , p_rounding_class_code => l_array_rounding_class_code(Idx)
4151 , p_gain_or_loss_flag => l_array_gain_or_loss_flag(Idx)
4152 --
4153 , p_bflow_method_code => l_array_bflow_method_code(Idx) -- 4219869 Business Flow
4154 , p_bflow_class_code => l_array_bflow_class_code(Idx) -- 4219869 Business Flow
4155 , p_inherit_desc_flag => l_array_inherit_desc_flag(Idx) -- 4219869 Business Flow
4156 --
4157 , p_num_je_code => l_array_mpa_num_je_code(Idx) -- 4262811
4158 , p_gl_dates_code => l_array_mpa_gl_dates_code(Idx) -- 4262811
4159 , p_proration_code => l_array_mpa_proration_code(Idx) -- 4262811
4163 , p_budgetary_control_flag => l_array_budgetary_control_flag(Idx) -- 4458381
4160 , p_mpa_header_desc_type_code => l_array_mpa_desc_type_code(Idx) -- 4262811
4161 , p_mpa_header_desc_code => l_array_mpa_desc_code(Idx) -- 4262811
4162 --
4164 , p_encumbrance_type_id => l_array_encumbrance_type_id(Idx) -- 4458381
4165 --
4166 , p_rec_aad_objects => p_rec_aad_objects
4167 --
4168 , p_rec_sources => p_rec_sources
4169 --
4170 , p_IsCompiled => l_IsCompiled
4171 );
4172
4173 l_AcctlineTypes := xla_cmp_string_pkg.ConcatTwoStrings (
4174 p_array_string_1 => l_AcctlineTypes
4175 ,p_array_string_2 => l_array_alt
4176 );
4177
4178 END IF;
4179
4180 p_IsCompiled := p_IsCompiled AND l_IsCompiled;
4181
4182 END LOOP;
4183
4184 END IF;
4185
4186 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4187 trace
4188 (p_msg => 'return value. = '||
4189 CASE p_IsCompiled WHEN TRUE THEN 'TRUE' ELSE 'FALSE' END
4190 ,p_level => C_LEVEL_PROCEDURE
4191 ,p_module => l_log_module);
4192 trace
4193 (p_msg => 'END of GenerateAcctLineTypeProcs'
4194 ,p_level => C_LEVEL_PROCEDURE
4195 ,p_module => l_log_module);
4196 END IF;
4197 RETURN l_AcctlineTypes;
4198 EXCEPTION
4199 WHEN xla_exceptions_pkg.application_exception THEN
4200 p_IsCompiled := FALSE;
4201 IF alt_cur%ISOPEN THEN CLOSE alt_cur; END IF;
4202 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
4203 trace
4204 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
4205 ,p_level => C_LEVEL_EXCEPTION
4206 ,p_module => l_log_module);
4207 END IF;
4208 RETURN xla_cmp_string_pkg.g_null_varchar2s;
4209 WHEN OTHERS THEN
4210 p_IsCompiled := FALSE;
4211 IF alt_cur%ISOPEN THEN CLOSE alt_cur; END IF;
4212 xla_exceptions_pkg.raise_message
4213 (p_location => 'xla_cmp_acct_line_type_pkg.GenerateAcctLineTypeProcs');
4214 END GenerateAcctLineTypeProcs;
4215
4216
4217 /*------------------------------------------------------------+
4218 | |
4219 | Public Function |
4220 | |
4221 | GenerateAcctLineType |
4222 | |
4223 | Generates the AcctLineType_XXX() functions from the AMB |
4224 | Journal line types assigned to the AAD. |
4225 | It returns TRUE if generation succeeds, FALSE otherwise |
4226 | |
4227 +------------------------------------------------------------*/
4228
4229 FUNCTION GenerateAcctLineType(
4230 p_product_rule_code IN VARCHAR2
4231 , p_product_rule_type_code IN VARCHAR2
4232 , p_application_id IN NUMBER
4233 , p_amb_context_code IN VARCHAR2
4234 , p_package_name IN VARCHAR2
4235 , p_rec_aad_objects IN OUT NOCOPY xla_cmp_source_pkg.t_rec_aad_objects
4236 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
4237 , p_package_body OUT NOCOPY DBMS_SQL.VARCHAR2S
4238 )
4239 RETURN BOOLEAN
4240 IS
4241 l_AcctLineTypes DBMS_SQL.VARCHAR2S;
4242 l_IsCompiled BOOLEAN;
4243 l_log_module VARCHAR2(240);
4244 BEGIN
4245 IF g_log_enabled THEN
4246 l_log_module := C_DEFAULT_MODULE||'.GenerateAcctLineType';
4247 END IF;
4248 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4249 trace
4250 (p_msg => 'BEGIN of GenerateAcctLineType'
4251 ,p_level => C_LEVEL_PROCEDURE
4252 ,p_module => l_log_module);
4253 END IF;
4254 --
4255 -- Init global variables
4256 --
4257 l_IsCompiled := TRUE;
4258 l_AcctLineTypes := xla_cmp_string_pkg.g_null_varchar2s;
4259 --
4260 g_package_name := p_package_name;
4261 --
4262 l_AcctLineTypes := GenerateAcctLineTypeProcs(
4263 p_product_rule_code => p_product_rule_code
4264 , p_product_rule_type_code => p_product_rule_type_code
4265 , p_application_id => p_application_id
4266 , p_amb_context_code => p_amb_context_code
4267 , p_rec_aad_objects => p_rec_aad_objects
4268 , p_rec_sources => p_rec_sources
4269 , p_IsCompiled => l_IsCompiled
4270 );
4271 --
4272 --
4273 p_package_body := l_AcctLineTypes;
4274 g_package_name := NULL;
4275 --
4276 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4277 trace
4278 (p_msg => 'return value (l_IsCompiled) = '||
4279 CASE l_IsCompiled WHEN TRUE THEN 'TRUE' ELSE 'FALSE' END
4280 ,p_level => C_LEVEL_PROCEDURE
4281 ,p_module => l_log_module);
4282 trace
4283 (p_msg => 'END of GenerateAcctLineType'
4284 ,p_level => C_LEVEL_PROCEDURE
4285 ,p_module => l_log_module);
4286 END IF;
4287 RETURN l_IsCompiled;
4288 EXCEPTION
4289 WHEN xla_exceptions_pkg.application_exception THEN
4290 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
4291 trace
4292 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
4293 ,p_level => C_LEVEL_EXCEPTION
4294 ,p_module => l_log_module);
4295 END IF;
4296 RETURN FALSE;
4297 WHEN OTHERS THEN
4298 xla_exceptions_pkg.raise_message
4299 (p_location => 'xla_cmp_acct_line_type_pkg.GenerateAcctLineType');
4300 END GenerateAcctLineType;
4301 --
4302 --=============================================================================
4303 --
4304 --
4305 --
4306 --
4307 --
4308 --
4309 --
4310 --
4311 --
4312 --
4313 --
4314 --
4315 --
4316 --
4317 --
4318 --
4319 --
4320 --
4321 --
4322 --
4323 --
4324 --
4325 --=============================================================================
4326 --=============================================================================
4327 -- *********** Initialization routine **********
4328 --=============================================================================
4329
4330 BEGIN
4331
4332 g_log_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
4333 g_log_enabled := fnd_log.test
4334 (log_level => g_log_level
4335 ,module => C_DEFAULT_MODULE);
4336
4337 IF NOT g_log_enabled THEN
4338 g_log_level := C_LEVEL_LOG_DISABLED;
4339 END IF;
4340
4341 END xla_cmp_acct_line_type_pkg; --