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