DBA Data[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; --