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