DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_AE_LINES_PKG

Source


1 PACKAGE BODY xla_ae_lines_pkg AS
2 /* $Header: xlajelns.pkb 120.197.12010000.7 2008/11/13 10:00:46 shrakuma ship $   */
3 /*===========================================================================+
4 |             Copyright (c) 2001-2002 Oracle Corporation                     |
5 |                       Redwood Shores, CA, USA                              |
6 |                         All rights reserved.                               |
7 +============================================================================+
8 | PACKAGE NAME                                                               |
9 |     XLA_AE_LINES_PKG                                                       |
10 |                                                                            |
11 | DESCRIPTION                                                                |
12 |                                                                            |
13 |                                                                            |
14 | HISTORY                                                                    |
15 |     20-NOV-2002 K.Boussema    Created                                      |
16 |     08-JAN-2003 K.Boussema    Changed xla_temp_journal_entries by          |
17 |                               xla_journal_entries_temp                     |
18 |     10-JAN-2003 K.Boussema    Removed gl_sl_link_id column from temp table |
19 |                               Added 'dbdrv' command                        |
20 |     11-MAR-2003 K.Boussema    Made changes for the new bulk approach of the|
21 |                               accounting engine                            |
22 |     19-MAR-2003 K.Boussema    Added distribution_id_num_1..5 columns       |
23 |     03-APR-2003 K.Boussema    Included Analytical criteria feature         |
24 |     19-APR-2003 K.Boussema    Included Error messages                      |
25 |     06-MAI-2003 K.Boussema    Modified to fix bug 2936066(Unbalanced JE)   |
26 |     13-MAI-2003 K.Boussema    Renamed temporary tables xla_je_lines_gt by  |
27 |                               xla_ae_lines_gt, xla_je_headers_gt by        |
28 |                               xla_ae_headers_gt                            |
29 |                               Renamed in xla_distribution_links the column |
30 |                               base_amount by ledger_amount                 |
31 |     20-MAI-2003 K.Boussema    Added a Token to XLA_AP_CANNOT_INSERT_JE     |
32 |                               message                                      |
33 |     27-MAI-2003 K.Boussema    Renamed code_combination_status by           |
34 |                                  code_combination_status_flag              |
35 |                               Renamed base_amount by ledger_amount         |
36 |     30-MAI-2003 K.Boussema    Renamed EXCHANGE_RATE_DATE by EXCHANGE_DATE  |
37 |                                 bug 2979525                                |
38 |     17-JUL-2003 K.Boussema    Reviewd the code                             |
39 |     21-JUL-2003 K.Boussema    Changed reversal options from 'S' and 'R' to |
40 |                               'SIGN' and 'SIDE'                            |
41 |     24-JUL-2003 K.Boussema    Updated the error messages                   |
42 |     10-SEP-2003 K.Boussema    Changed to fix bug3095206:Accounting Reversal|
43 |     19-SEP-2003 K.Boussema    Code changed to include reversed_ae_header_id|
44 |                               and reversed_line_num, see bug 3143095       |
45 |     30-SEP-2003 K.Boussema    Added a validation for Accounting reversal   |
46 |     03-OCT-2003 K.Boussema    Fixed standard accounting reversal,bug3174532|
47 |                               Changed description width to 1996            |
48 |     06-OCT-2003 K.Boussema    Reviewed the StandardAccountingReversal() pg,|
49 |                               bug 3175581                                  |
50 |     16-OCT-2003 K.Boussema    Fixed the issue when the entered and         |
51 |                               accounted amounts are reversed.              |
52 |     22-OCT-2003 K.Boussema    Changed to capture the Merge Matching Lines  |
53 |                               preference for Accounting Reversal from JLT  |
54 |     29-OCT-2003 K.Boussema    Reviewed to fix bug 3222733                  |
55 |     04-NOV-2003 K.Boussema    Added TransactionReversal_2, LineReversal_2  |
56 |     13-NOV-2003 K.Boussema    Changed to store Accounting and transaction  |
57 |                               coa ids defined in Account Derivation rules  |
58 |     21-NOV-2003 K.Boussema    Added SetEnteredAmount to fix bug 3233610    |
59 |     25-NOV-2003 Shishir Joshi Made changers for accounting reversal.       |
60 |                               Merged procedures StandardAccountingReversal |
61 |                               and LineReversal_2.                          |
62 |                               Merged procedures TransactionReversal and    |
63 |                               TransactionReversal_2.                       |
64 |     05-DEC-2003 K.Boussema    Changed the code to fix bug3289875           |
65 |     12-DEC-2003 K.Boussema    Renamed target_coa_id in xla_ae_lines_gt     |
66 |                               by ccid_coa_id                               |
67 |     18-DEC-2003 K.Boussema    Changed to fix bug 3042840,3307761,3268940   |
68 |                               3310291 and 3320689                          |
69 |     07-JAN-2003 K.Boussema    Changed to populate switch_side_flag column  |
70 |     19-JAN-2004 K.Boussema    Removed the validation of Third party        |
71 |     20-JAN-2004 K.Boussema    Updated the message error XLA_AP_COA_INVALID |
72 |                               and Reviewed the validation of PARTY_TYPE    |
73 |     05-FEB-2004 S.Singhania   Changes based on bug 3419803.                |
74 |                                 - correct column names are used            |
75 |                                   TAX_LINE_REF_ID, TAX_SUMMARY_LINE_REF_ID,|
76 |                                   TAX_REC_NREC_DIST_REF_ID                 |
77 |                                 - reference to the column is removed.      |
78 |                                   TAX_REC_NREC_SUMMARY_DIST_REF            |
79 |                                 - Aaccounting attribute codes are modified |
80 |                                 - variables storing the column value       |
81 |                                   TAX_REC_NREC_SUMMARY_DIST_REF are removed|
82 |     17-FEB-2004 K.Boussema    Revised SetDebitCreditAmounts to fix issue   |
83 |                                 reported in bug 3438418                    |
84 |                               Made changes for the FND_LOG.                |
85 |     11-MAR-2004 K.Boussema    Reviewed StandardAccountingReversal and      |
86 |                                 TransactionReversal                        |
87 |                               Removed the validations of accounting class  |
88 |                                 and the party type                         |
89 |     22-MAR-2004 K.Boussema    Added a parameter p_module to the TRACE calls|
90 |                                 and the procedure.                         |
91 |     04-MAY-2004 K.Boussema    Bug 3531441: updated call to message         |
92 |                                 XLA_AP_NO_LEDGER_AMOUNT                    |
93 |     11-MAY-2004 K.Boussema    Removed the call to XLA trace routine from   |
94 |                                 trace() procedure                          |
95 |     17-MAY-2004 W.Shen        Changes for attribute enhancement project    |
96 |                                 Change to InsertLines,                     |
97 |                                 StandardAccountingReversal                 |
98 |                              move TransactionReversal toxla_ae_headers_pkg |
99 |                                 accounting_reversal is no longer used      |
100 |     26-MAY-2004 W.Shen        remove debug code.                           |
101 |     17-JUN-2004 K.Boussema    Removed the population with null the         |
102 |                                 conversion rate and the conversion type    |
103 |                                 when entered entered currency code = ledger|
104 |                                 currency code, bug 3592650                 |
105 |     18-JUN-2004 K.Boussema    Fixed GSCC warning                           |
106 |     27-JUN-2004 W.Shen        Fix the validation links(ValidateLinks,      |
107 |                                 ValidateRevLinks bug 3787453               |
108 |     22-Sep-2004 S.Singhania   Made changes for the bulk peroformance. It   |
109 |                                 has changed the code at number of places.  |
110 |     03-Nov-2004 S.Singhania   Bug 3984919. Fixed the technical problem in  |
111 |                                 AccountingReversal.                        |
112 |                               Also modified the insert statments in        |
113 |                                 AccountingRevesal to use amounts from      |
114 |                                 xla_distribution_links instead of amounts  |
115 |                                 from xla_ae_lines table.                   |
116 |     09-MAR-2005 W.Shen       Ledger Currency Project.                      |
117 |     14-Mar-2005 K.Boussema   Changed for ADR-enhancements.                 |
118 |     28-Mar-2005 A.Wan        Changed for Business Flow.                    |
119 |     20-Apr-2005 W. Shen      replace column document_rounding_amount by    |
120 |                                 doc_rounding_acctd_amt                     |
121 |     25-Apr-2005 S.singhania  Bug 4257522. Issue fixed with the transaction |
122 |                                 reversls.                                  |
123 |     19-MAI-2005 K.Boussema   Reviewed set_segment to fix bug4304098        |
124 |     25-MAY-2005 W.Chan       fix bug4384869 - BusinessFlowSameEntries      |
125 |     1-Jul-2005  W. Shen      Bug 4243728, 4444730                      .   |
126 |                              set entered_cr/dr side based on               |
127 |                                unrounded_accounted_amount if entered is 0  |
128 |                                (mainly for gain/loss line)                 |
129 |                              calculate rounded amount sole based on        |
130 |                                the calculate_amts_flag.                    |
131 |                                set calculate_amts_flag correctly.          |
132 |     11-Jul-2005 A.Wan        4262811 - MPA project                         |
133 |     12-Jul-2005 W. Chan      Bug 4478604 - Fixed business flow for sec     |
134 |                              ledg  ALC ledg.  Fixed accounted amount calc  |
135 |                              for business flow.                            |
136 |     9-Sep-2005 W. Shen       Bug 4596489, msg XLA_AP_NO_LEDGER_AMOUNT      |
137 |                                has moved one token                         |
138 |     22-Sep-2005 S.Singhania  Bug 4544725. Implemented Business Flows and   |
139 |                                Reversals for Non-Upgraded JEs.             |
140 |     26-Sep-2005 W. Shen      Bug 4628603. reset g_transaction_accounts     |
141 |                                after insertion so no duplicated rows will  |
142 |                                be inserted.                                |
143 |                                removed the header_num in AccountingReversal|
144 |                                since it may cause unique index violated    |
145 |     12-Oct-2005 A.Wan        4656703 - bflow prior entry amt incorrect     |
146 |     18-Oct-2005 V. Kumar    Removed code for Analytical Criteria           |
147 |     7-Nov-2005 W.Shen       4655713 - bflow same entry does not work       |
148 |     17-Nov-2005 W.Shen      4727011 - unique index violated                |
149 |                                In accountingreversal, when inserting header|
150 |                                for lines that do not have header yet, the  |
151 |                                join condition of header_num is not correct |
152 |                                add nvl for join of header_num since it     |
153 |                                could be null                               |
154 |     22-Dec-2005 W.Chan      4903255 - Prior Entry Bflow changes            |
155 |                             1) Exclude reversal from prior entry           |
156 |                             2) Allow multiple prior entries                |
157 |     22-Dec-2005 A.Wan       4669308 - AccountingReversal - for MPA/Accrual |
158 |                                       reversal.                            |
159 |     3-Jan-2006  W. Chan     Bug 4924492 - Populate budget version id for   |
160 |                               accounting reversal                          |
161 |     4-Jan-2006  A. Govil    Bug 4922099 - Handle Federal Non-upgraded      |
162 |                             entries.                                       |
163 |     7-Jan-2006  W. Chan     Bug 4930297 - BflowPriorEntries error cursor   |
164 |                               not work if bflow app id is null             |
165 |     20-Jan-2006 W.Chan      4946123 - BC changes for prior entry           |
166 |     27-Jan-2005 A.Wan       5001981 - Same entry exclude lines with        |
167 |                             PRIOR_ENTRY business flow method.              |
168 |     27-Jan-2006 A.Wan       4913967 - performance change for               |
169 |                                       BusinessFlowSameEntries.             |
170 |     27-Jan-2006 V.Kumar     4963125 Added hint and join based on appl_id   |
171 |                               in AccountingReversal.                       |
172 |     27-Jan-2006 A.Wan       4655713  - to set proper status for SameEntry. |
173 |     31-Jan-2006 A.Wan       4963422  - set header_num to 0 in acct reversal|
174 |     01-Feb-2006 A.Wan       4655713b - modify BusinessFlowPriorEntries and |
175 |                                        BusinessFlowSameEntries to inherit  |
176 |                                        ae_lines_gt detail for bflow entries|
177 |                                        for MPA and Accrual Reversal lines. |
178 |     10-Feb-2006 A.Wan       5019460 - could not reverse prior entries.     |
179 |     13-Feb-2006 V.Kumar     4955764 Populating Accounting_date in          |
180 |                                     xla_ae_lines_gt                        |
181 |     14-Feb-2006 A.Wan       4967526 - copy following for Third Party info  |
182 |                                       in BusinessFlowPriorEntries:         |
183 |                                       - merge_code_combination_id          |
184 |                                       - merge_party_id                     |
185 |                                       - merge_party_site_id                |
186 |     20-Feb-2006 A.Wan       4913967 - remove redundant GROUP BY in         |
187 |                                       BusinessFlowSameEntries.             |
188 |     28-Feb-2006 A.Wan       5068675 - undo fix on 20-Feb for bug 4913967   |
189 |     01-Mar-2006 A.Wan       5055878 - Accounting reversal does not handle  |
190 |                                       reversal method of SIGN.             |
191 |     07-Mar-2006 A.Wan       4693816 - do not assign PARTY_TYPE is size is  |
192 |                                       more than 1.                         |
193 |     08-Mar-2006 V.Kumar     Modified procedure SetNewLines and added new   |
194 |                             procedure SetNullLine                          |
195 |     13-Mar-2006 A.Wan       5086984 - modify MPA/Accrual reversal in       |
196 |                                       AccountingReversal for performance.  |
197 |     27-Mar-2006 A.Wan       5108415 - modify Accounting reversal for       |
198 |                                       peformance fix.                      |
199 |     15-Apr-2006 A.Wan       5132302 - add Applied To Amount for Gain/Loss  |
200 |     25-Apr-2006 A.Wan       5183946 - line acct reversal error for Accrual |
201 |                                       Reversal.                            |
202 |     09-May-2006 V.Kumar     5194849 Modified procedure SetAcctReversalAttrs|
203 |                                     to populate GL_date for Reversal Acct  |
204 |     09-May-2006 A.Wan       5204178 - cannot find PE for sec ledger if     |
205 |                                       valuation method is Yes.             |
206 |     19-May-2006 V.Kumar     5229264 Modified procedure SetTrxReversalAttrs |
207 |     11-May-2006 A.Wan       5189664 - reversal line not stamped with       |
208 |                                       date from reversal event.            |
209 |     09-May-2006 A.Wan       5162408 - invalid value for acct attribute.    |
210 |     22-Jun-2006 W.Shen      5294631, 5259776 - put gain/loss amount on dr  |
211 |                                       side as well so reversal can handle  |
212 |                                    also, add ccid mapping for g/l lines    |
213 |     22-Jun-2006 A.Wan       5100860 - make sure to assign a value to       |
214 |                                       HEADER_NUM in InsertLines.           |
215 |     28-Jul-2006 A.Wan       5357406 - prior entry performance fix          |
216 |     01-Aug-2006 A.Wan       5412560 - line reversal for MPA/AccRev.        |
217 |     17-Aug-2006 A.Wan       5443083 - delete zero amt same entry in ALC    |
218 |                                       and secondary ledger.                |
219 |     23-Aug-2006 A.Wan       5486053 - add HINT to same entry               |
220 |     25-Aug-2006 A.Wan       5479652 - modify condition in line reversal.   |
221 |     01-SEP-2006 A.Wan       5163338 - raise error when CCID is -1          |
222 |     20-NOV-2006 A.Wan       5666366 - do not execute MPA-prior entry SQL   |
223 |                                       if there are no MPA in this run.     |
224 |     26-jan-2007 A.Wan       5845547 - upgrade fail for not upgraded bflow  |
225 |                                       and reversal transactions.  Add      |
226 |                                       upgrade party attributes.            |
227 |     14-Dec-2007 V.Swapna    6648062 - Populate xla_ae_lines_gt with        |
228 |                                       the values passed in override acctd  |
229 |                                       amts accounting attribute and use    |
230 |                                       it in business flow procedure        |
231 |     31-Dec-2007 V. Swapna   5339999 - Changes to BusinessFlowPriorEntries  |
232 |                                       for Historic upgrade of secondary/alc|
233 |     25-Jan-2007 S.Sawhney   6658161,6727907 --merged branchline fixes onto mainline |
234 |     05-Nov-2007 KARAMAKR    7485529 - merged branchline fixes onto mainline|
235 |     06-Nov-2008 VGOPISET    7337288 - AccountingReversal is changed to     |
236 |                                       consider the SWITCH_SIDE option of   |
237 |                                       Reversal Event rather than value of  |
238 |                                       Original Event                       |
239 +===========================================================================*/
240 --
241 --+==========================================================================+
242 --|                                                                          |
243 --|                                                                          |
244 --| CONSTANT                                                                 |
245 --|                                                                          |
246 --|                                                                          |
247 --+==========================================================================+
248 --
249 C_MAXROWS             CONSTANT NATURAL     := 1000;
250 C_BULK_LIMIT          CONSTANT NUMBER      := 5000;
251 --
252 --
253 -- Accounting entry type code
254 --
255 C_STANDARD               CONSTANT VARCHAR2(30) := 'STANDARD';
256 C_INVALID_STATUS         CONSTANT VARCHAR2(1)  := 'I';
257 C_DRAFT_STATUS           CONSTANT VARCHAR2(1)  := 'D';
258 C_FINAL_STATUS           CONSTANT VARCHAR2(1)  := 'F';
259 
260 -- ccid status
261 C_CREATED                CONSTANT VARCHAR2(30)  := 'CREATED';
262 C_PROCESSING             CONSTANT VARCHAR2(30)  := 'PROCESSING';
263 C_NOT_PROCESSED          CONSTANT VARCHAR2(30)  := 'NOT_PROCESSED';
264 C_INVALID                CONSTANT VARCHAR2(30)  := 'INVALID';
265 
266 C_MAP_CCID                   CONSTANT    VARCHAR2(30)  := 'MAP_CCID';
267 C_MAP_QUALIFIER              CONSTANT    VARCHAR2(30)  := 'MAP_QUALIFIER';
268 C_MAP_SEGMENT                CONSTANT    VARCHAR2(30)  := 'MAP_SEGMENT';
269 
270 --
271 C_ACTUAL            CONSTANT VARCHAR2(1)       := 'A';
272 C_BUDGET            CONSTANT VARCHAR2(1)       := 'B';
273 C_ENCUMBRANCE       CONSTANT VARCHAR2(1)       := 'E';
274 --
275 C_DEBIT             CONSTANT VARCHAR2(1)       := 'D';
276 C_CREDIT            CONSTANT VARCHAR2(1)       := 'C';
277 --
278 C_SWITCH               CONSTANT VARCHAR2(1)    := 'Y';
279 C_NO_SWITCH            CONSTANT VARCHAR2(1)    := 'N';
280 --
281 C_ALL                 CONSTANT  VARCHAR2(1)    := 'A';
282 C_SAME_SIDE           CONSTANT  VARCHAR2(1)    := 'W';
283 C_NO_MERGE            CONSTANT  VARCHAR2(1)    := 'N';
284 --
285 -- 4669308
286 C_NO_REVERSAL         CONSTANT  VARCHAR2(20)   := 'NO_MPA_REVERSAL';
287 --+==========================================================================+
288 --|                                                                          |
289 --|                                                                          |
290 --|  GLobal structure  For Accounting Reversal                               |
291 --|                                                                          |
292 --|                                                                          |
293 --+==========================================================================+
294 
295 --
296 TYPE t_rec_reverse_line IS RECORD (
297 --
298  ae_header_id                      NUMBER,
299  line_num                          NUMBER,
300  accounting_class                  VARCHAR2(30),
301 --
302  ccid                              NUMBER,
303 --
304  gl_transfer_mode                  VARCHAR2(1),
305  acct_entry_type_code              VARCHAR2(1),
306  merge_duplicate_code              VARCHAR2(1),
307  --
308  entered_amount                    NUMBER,
309  ledger_amount                     NUMBER,
310  entered_dr                        NUMBER,
311  entered_cr                        NUMBER,
312  accounted_dr                      NUMBER,
313  accounted_cr                      NUMBER,
314  currency_code                     VARCHAR2(15),
315  curr_conversion_date              DATE,
316  curr_conversion_rate              NUMBER,
317  curr_conversion_type              VARCHAR2(30),
318  description                       VARCHAR2(1996),
319  --
320  -- line descriptions
321  --
322  party_id                          NUMBER,
323  party_site_id                     NUMBER,
324  party_type_code                   VARCHAR2(1),
325  --
326  statistical_amount                NUMBER,
327  ussgl_transaction                 VARCHAR2(30),
328 --
329  jgzz_recon_ref                    VARCHAR2(240),
330 --
331  distribution_id_char_1            VARCHAR2(240),
332  distribution_id_char_2            VARCHAR2(240),
333  distribution_id_char_3            VARCHAR2(240),
334  distribution_id_char_4            VARCHAR2(240),
335  distribution_id_char_5            VARCHAR2(240),
336  distribution_id_num_1             NUMBER,
337  distribution_id_num_2             NUMBER,
338  distribution_id_num_3             NUMBER,
339  distribution_id_num_4             NUMBER,
340  distribution_id_num_5             NUMBER,
341  sys_distribution_type             VARCHAR2(30),
342 --
343  rev_distrib_id_char_1             VARCHAR2(240),
344  rev_distrib_id_char_2             VARCHAR2(240),
345  rev_distrib_id_char_3             VARCHAR2(240),
346  rev_distrib_id_char_4             VARCHAR2(240),
347  rev_distrib_id_char_5             VARCHAR2(240),
348  rev_distrib_id_num_1              NUMBER,
349  rev_distrib_id_num_2              NUMBER,
350  rev_distrib_id_num_3              NUMBER,
351  rev_distrib_id_num_4              NUMBER,
352  rev_distrib_id_num_5              NUMBER,
353  rev_sys_distribution_type         VARCHAR2(30),
354 --
355  acc_reversal_option               VARCHAR2(1),
356  reversal_credit_ccid              NUMBER,
357  reversal_debit_ccid               NUMBER,
358 --
359  mpa_option                        VARCHAR2(30),  -- 4262811
360  mpa_start_date                    DATE,          -- 4262811
361  mpa_end_date                      DATE,          -- 4262811
362 -- Removed for 4262811 MPA
363 -- deferred_indicator                VARCHAR2(1),
364 -- deferred_start_date               DATE,
365 -- deferred_end_date                 DATE,
366 -- deferred_no_period                NUMBER,
367 -- deferred_period_type              VARCHAR2(1),
368 --
369  tax_line_ref                      NUMBER,
370  tax_summary_line_ref              NUMBER,
371  tax_rec_nrec_dist_ref             NUMBER
372 --
373 );
374 
375 --
376 -- cache accounting line type information
377 --
378 --g_accounting_line
379 TYPE t_rec_accounting_line IS RECORD (
380     component_type              VARCHAR2(30)
381   , accounting_line_code        VARCHAR2(30)
382   , accounting_line_type_code   VARCHAR2(1)
383   , accounting_line_appl_id     INTEGER
384   , amb_context_code            VARCHAR2(30)
385   , entity_code                 VARCHAR2(30)
386   , event_class_code            VARCHAR2(30)
387 )
388 ;
389 
390 --g_transaction_accounts
391 TYPE t_rec_transaction_accounts IS RECORD (
392  array_line_num                          XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num,
393  array_ae_header_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num,
394  array_temp_line_num                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num,
395  array_code_combination_id               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num,
396  array_segment                           XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L,
397  array_from_segment_code                 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V15L,
398  array_to_segment_code                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_V15L,
399  array_processing_status_code            XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L,
400  array_side_code                         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L
401 )
402 ;
403 
404 --+==========================================================================+
405 --|                                                                          |
406 --|                                                                          |
407 --|  GLobal variables                                                        |
408 --|                                                                          |
409 --|                                                                          |
410 --+==========================================================================+
411 
412 g_reverse_lines                t_rec_reverse_line;
413 g_application_id               INTEGER;
414 g_accounting_line              t_rec_accounting_line;
415 g_transaction_accounts         t_rec_transaction_accounts;
416 
417 --+==========================================================================+
418 --|                                                                          |
419 --|                                                                          |
420 --|  GLobal variables  For Business Flow - 4219869                           |
421 --|                                                                          |
422 --|                                                                          |
423 --+==========================================================================+
424 --
425 g_num_bflow_prior_entries INTEGER;
426 g_num_bflow_same_entries  INTEGER;
427 C_METHOD_PRIOR    CONSTANT VARCHAR2(30) := 'PRIOR_ENTRY';
428 C_METHOD_SAME     CONSTANT VARCHAR2(30) := 'SAME_ENTRY';
429 C_DUMMY_PRIOR     CONSTANT VARCHAR2(10) := 'DUMMY_BFPE';
430 C_DUMMY_SAME      CONSTANT VARCHAR2(10) := 'DUMMY_BFSE';
431 C_MPA_PRIOR_ENTRY CONSTANT VARCHAR2(30) := 'MPA_PRIOR_ENTRY';  -- 4655713b
432 C_MPA_SAME_ENTRY  CONSTANT VARCHAR2(30) := 'MPA_SAME_ENTRY';   -- 4655713b
433 C_CHAR            CONSTANT VARCHAR2(1)  := fnd_global.local_chr(12);
434 C_NUM             CONSTANT NUMBER       := 9.99E125;
435 
436 --====================================================================
437 --
438 --
439 --
440 --
441 --
442 --                                   FND_LOG trace
443 --
444 --
445 --
446 --
447 --
448 --
449 --
450 --
451 --
452 --
453 --
454 --
455 --
456 --
457 --
458 --
459 --======================================================================
460 --
461 --=============================================================================
462 --               *********** Local Trace Routine **********
463 --=============================================================================
464 
465 C_LEVEL_STATEMENT     CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
466 C_LEVEL_PROCEDURE     CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
467 C_LEVEL_EVENT         CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
468 C_LEVEL_EXCEPTION     CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
469 C_LEVEL_ERROR         CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
470 C_LEVEL_UNEXPECTED    CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
471 
472 C_LEVEL_LOG_DISABLED  CONSTANT NUMBER := 99;
473 C_DEFAULT_MODULE      CONSTANT VARCHAR2(240) := 'xla.plsql.XLA_AE_LINES_PKG';
474 
475 g_log_level           NUMBER;
476 g_log_enabled         BOOLEAN;
477 
478 PROCEDURE trace
479            (p_msg                        IN VARCHAR2
480            ,p_level                      IN NUMBER
481            ,p_module                     IN VARCHAR2) IS
482 BEGIN
483 IF (p_msg IS NULL AND p_level >= g_log_level) THEN
484           fnd_log.message(p_level, p_module);
485 ELSIF p_level >= g_log_level THEN
486           fnd_log.string(p_level, p_module, p_msg);
487 END IF;
488 
489 EXCEPTION
490        WHEN xla_exceptions_pkg.application_exception THEN
491           RAISE;
492        WHEN OTHERS THEN
493           xla_exceptions_pkg.raise_message
494              (p_location   => 'XLA_AE_LINES_PKG.trace');
495 END trace;
496 
497 --=============================================================================
498 --                   ******* Print Log File **********
499 --=============================================================================
500 PROCEDURE print_logfile(p_msg  IN  VARCHAR2) IS
501 BEGIN
502 
503    fnd_file.put_line(fnd_file.log,p_msg);
504 
505 EXCEPTION
506    WHEN xla_exceptions_pkg.application_exception THEN
507       RAISE;
508    WHEN OTHERS THEN
509       xla_exceptions_pkg.raise_message
510          (p_location   => 'xla_ae_lines_pkg.print_logfile');
511 END print_logfile;
512 --
513 --====================================================================
514 --
515 --
516 --
517 --
518 -- Forward declaration of local routines
519 --
520 --
521 --
522 --
523 --======================================================================
524 --
525 
526 --
527 PROCEDURE ValidateLinks
528 ;
529 
530 --
531 --4219869 : making this a public function for Business Flow
532 --PROCEDURE SetDebitCreditAmounts
533 --;
534 --
535 --
536 
537 FUNCTION ValidateRevLinks
538 RETURN BOOLEAN
539 ;
540 
541 --===================================================================
542 --
543 --
544 --
545 --
546 --
547 --                     STANDARD ACCOUNTING PROCESS
548 --
549 --
550 --
551 --
552 --
553 --
554 --
555 --
556 --
557 --
558 --
559 --
560 --
561 --
562 --
563 --
564 --=====================================================================
565 --
566 
567 --====================================================================
568 --
569 --
570 --
571 --
572 --
573 --        PRIVATE  procedures and functions
574 --
575 --
576 --
577 --
578 --
579 --
580 --
581 --
582 --
583 --
584 --
585 --
586 --
587 --
588 --
589 --
590 --======================================================================
591 --
592 /*======================================================================+
593 |                                                                       |
594 | Private Procedure                                                     |
595 |                                                                       |
596 |                                                                       |
597 +======================================================================*/
598 PROCEDURE ValidateLinks
599 IS
600 l_log_module         VARCHAR2(240);
601 l_temp               NUMBER;
602 BEGIN
603 --
604 IF g_log_enabled THEN
605       l_log_module := C_DEFAULT_MODULE||'.ValidateLinks';
606 END IF;
607 --
608 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
609       trace
610          (p_msg      => 'BEGIN of ValidateLinks'
611          ,p_level    => C_LEVEL_PROCEDURE
612          ,p_module   => l_log_module);
613 
614 END IF;
615 
616 -- We need check: 1. distribution_id_1 must be assigned
617 --                2. distribution_id_2..5 must be assigned in order, that means
618 --                    if id_3 is assigned, then 2 must be assigned.
619 --                    if id_4 is assigned, then 2 and 3 must be assigned.
620 --                    if id_5 is assigned, then 2, 3 and 4 must be assigned.
621 --                We are using generate a number, l_temp
622 --                1*decode(id5 is assigned, 1, 0)+
623 --                2*decode(id4 is assigned, 1, 0)+
624 --                4*decode(id3 is assigned, 1, 0)+
625 --                8*decode(id2 is assigned, 1, 0)
626 --                The valid case, l_temp can only be
627 --                0 -- no one is assigned
628 --                8 -- id2 is assigned
629 --                12 -- id2 and id3 are assigned
630 --                14 -- id2 , id3 and id4 are assigned
631 --                15 -- all are assigned
632 
633 
634 IF g_rec_lines.array_distribution_id_char_5(g_LineNumber) IS NULL AND
635       g_rec_lines.array_distribution_id_num_5(g_LineNumber) IS NULL THEN
636   l_temp := 0;
637 ELSE
638   l_temp := 1;
639 END IF;
640 IF g_rec_lines.array_distribution_id_char_4(g_LineNumber) IS NOT NULL OR
641       g_rec_lines.array_distribution_id_num_4(g_LineNumber) IS NOT NULL THEN
642   l_temp := 2+l_temp;
643 END IF;
644 IF g_rec_lines.array_distribution_id_char_3(g_LineNumber) IS NOT NULL OR
645       g_rec_lines.array_distribution_id_num_3(g_LineNumber) IS NOT NULL THEN
646   l_temp := 4+l_temp;
647 END IF;
648 IF g_rec_lines.array_distribution_id_char_2(g_LineNumber) IS NOT NULL OR
649       g_rec_lines.array_distribution_id_num_2(g_LineNumber) IS NOT NULL THEN
650   l_temp := 8+l_temp;
651 END IF;
652 IF (g_rec_lines.array_distribution_id_char_1(g_LineNumber) IS NULL AND
653       g_rec_lines.array_distribution_id_num_1(g_LineNumber) IS NULL) OR
654       l_temp not in (0, 8, 12, 14, 15) THEN
655 
656     xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
657     xla_accounting_err_pkg.build_message
658                                   (p_appli_s_name            => 'XLA'
659                                   ,p_msg_name                => 'XLA_AP_NO_DIST_LINK_ID'
660                                   ,p_token_1                 => 'LINE_NUMBER'
661                                   ,p_value_1                 =>  g_ExtractLine
662                                   ,p_token_2                 => 'LINE_TYPE_NAME'
663                                   ,p_value_2                 =>  xla_ae_sources_pkg.GetComponentName (
664                                                                   g_accounting_line.component_type
665                                                                 , g_accounting_line.accounting_line_code
666                                                                 , g_accounting_line.accounting_line_type_code
667                                                                 , g_accounting_line.accounting_line_appl_id
668                                                                 , g_accounting_line.amb_context_code
669                                                                 , g_accounting_line.entity_code
670                                                                 , g_accounting_line.event_class_code
671                                                                )
672                                   ,p_token_3                 => 'OWNER'
673                                   ,p_value_3                 => xla_lookups_pkg.get_meaning(
674                                                                   'XLA_OWNER_TYPE'
675                                                                  , g_rec_lines.array_accounting_line_type(g_LineNumber)
676                                                                 )
677                                   ,p_token_4                 => 'PRODUCT_NAME'
678                                   ,p_value_4                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
679                                   ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
680                                   ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
681                                   ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
682                                   ,p_ae_header_id            => NULL --p_ae_header_id
683                          );
684 
685          IF (C_LEVEL_ERROR >= g_log_level) THEN
686                 trace
687                      (p_msg      => 'ERROR: XLA_AP_NO_DIST_LINK_ID'
688                      ,p_level    => C_LEVEL_ERROR
689                      ,p_module   => l_log_module);
690          END IF;
691 END IF;
692 
693 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
694 
695       trace
696          (p_msg      => 'END of ValidateLinks'
697          ,p_level    => C_LEVEL_PROCEDURE
698          ,p_module   => l_log_module);
699 
700 END IF;
701 
702 EXCEPTION
703 WHEN xla_exceptions_pkg.application_exception THEN
704   RAISE;
705 WHEN OTHERS  THEN
706    xla_exceptions_pkg.raise_message
707            (p_location => 'xla_ae_lines_pkg.ValidateLinks');
708   --
709 END ValidateLinks;
710 --
711 --
712 /*======================================================================+
713 |                                                                       |
714 | Private Procedure                                                     |
715 |       SetDebitCreditAmounts                                           |
716 |                                                                       |
717 +======================================================================*/
718 PROCEDURE SetDebitCreditAmounts
719 IS
720 l_log_module         VARCHAR2(240);
721 BEGIN
722 --
723 IF g_log_enabled THEN
724       l_log_module := C_DEFAULT_MODULE||'.SetDebitCreditAmounts';
725 END IF;
726 --
727 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
728       trace
729          (p_msg      => 'BEGIN of SetDebitCreditAmounts'
730          ,p_level    => C_LEVEL_PROCEDURE
731          ,p_module   => l_log_module);
732 
733 END IF;
734 
735 IF(nvl(g_override_acctd_amt_flag, 'N') = 'Y') THEN
736   g_rec_lines.array_calculate_acctd_flag(g_LineNumber) := 'N';
737   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
738     trace
739        (p_msg      => 'set amts flag to N '
740        ,p_level    => C_LEVEL_STATEMENT
741        ,p_module   => l_log_module);
742   END IF;
743 
744 END IF;
745 /*
746 1. for alc enabled apps
747  primary ledger, the calculate amts flag will be set as user set in the forms
748  secondary ledger, if the currency is same as primary, the calculate amts flag will be
749      set as user set in the forms
750      if not same, the calculate amts flag will be set to 'Y'
751  for ALC, the calculate amts flag will be set to 'Y'
752  2. For alc not enabled apps:
753  primaryledger, the flag set as user set in the form
754  secondary, same as the alc_enabled_apps
755  ALC, the calculate amts flag is set to 'N'
756 */
757 
758 IF((XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code = 'SECONDARY' or
759        XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code = 'ALC') and
760       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.calculate_amts_flag='Y') THEN
761   g_rec_lines.array_calculate_acctd_flag(g_LineNumber) := 'Y';
762   g_rec_lines.array_calculate_g_l_flag(g_LineNumber) := 'Y';
763 ELSIF(XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code = 'ALC' and
764       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.calculate_amts_flag='N') THEN
765   g_rec_lines.array_calculate_acctd_flag(g_LineNumber) := 'N';
766   g_rec_lines.array_calculate_g_l_flag(g_LineNumber) := 'N';
767 END IF;
768 
769 -- for performance bug 5394727, set the currency to ledger currency
770 -- since we need ledger currency later when set the currency code
771 -- for these gain/loss lines.
772 IF (g_rec_lines.array_natural_side_code(g_LineNumber) = 'G'
773           AND (nvl(g_rec_lines.array_calculate_g_l_flag(g_LineNumber), 'N') = 'Y')) THEN
774   g_rec_lines.array_currency_code(g_LineNumber)
775                       := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.currency_code;
776 END IF;
777 
778 IF (nvl(g_rec_lines.array_calculate_acctd_flag(g_LineNumber), 'N')= 'N' AND
779       g_rec_lines.array_natural_side_code(g_LineNumber) <> 'G') OR
780      (nvl(g_rec_lines.array_calculate_g_l_flag(g_LineNumber), 'N')='N' AND
781       g_rec_lines.array_natural_side_code(g_LineNumber) = 'G') THEN
782 
783   IF g_rec_lines.array_ledger_amount(g_LineNumber) is null THEN
784     XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
785     xla_accounting_err_pkg.build_message
786            (p_appli_s_name            => 'XLA'
787            ,p_msg_name                => 'XLA_AP_NO_LEDGER_AMOUNT'
788            ,p_token_1                 => 'LINE_NUMBER'
789            ,p_value_1                 =>  g_ExtractLine
790            ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
791            ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
792            ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
793   END IF;
794 --ELSE
795 --  g_rec_lines.array_ledger_amount(g_LineNumber) := null;
796 END IF;
797 
798 --
799 -- SetEnteredAmount
800 -- change for business flow, if business flow, won't set the entered_amount
801 -- since at this time the final entered currency code is not decided yet.
802 IF NVL(g_rec_lines.array_currency_code(g_LineNumber),
803            XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.currency_code) =
804            XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.currency_code
805      AND g_rec_lines.array_natural_side_code(g_LineNumber) <> 'G'
806      AND  nvl(g_rec_lines.array_gain_or_loss_flag(g_LineNumber), 'N') <> 'Y'
807 AND nvl(g_rec_lines.array_reversal_code(g_LineNumber), 'DUMMY') <> C_DUMMY_PRIOR
808 THEN
809 
810   IF nvl(g_rec_lines.array_calculate_acctd_flag(g_LineNumber), 'N')= 'N' THEN
811     g_rec_lines.array_entered_amount(g_LineNumber) :=  nvl(g_rec_lines.array_ledger_amount(g_LineNumber), g_rec_lines.array_entered_amount(g_LineNumber));
812   ELSE
813   --ledger currency proj, assign the entered amount to ledger amount instead
814     g_rec_lines.array_ledger_amount(g_LineNumber) :=  g_rec_lines.array_entered_amount(g_LineNumber);
815   END IF;
816     --=======================================
817     -- bug 2988192, removed by bug 3592650
818     --=======================================
819     g_rec_lines.array_curr_conversion_rate(g_LineNumber):= null;
820     g_rec_lines.array_curr_conversion_type(g_LineNumber):= null;
821   --
822 END IF;
823 --
824 -- bug 5259353
825 IF(g_rec_lines.array_natural_side_code(g_LineNumber) = 'G' or
826                        g_rec_lines.array_gain_or_loss_flag(g_LineNumber) = 'Y') THEN
827   g_rec_lines.array_entered_amount(g_LineNumber) := 0;
828 END IF;
829 
830 
831 IF(g_rec_lines.array_natural_side_code(g_LineNumber) <> 'G'
832    AND  nvl(g_rec_lines.array_gain_or_loss_flag(g_LineNumber), 'N') <> 'Y'
833    AND nvl(g_rec_lines.array_reversal_code(g_LineNumber), 'DUMMY') <> C_DUMMY_PRIOR) THEN
834   IF g_rec_lines.array_entered_amount(g_LineNumber) is null THEN
835     XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
836     xla_accounting_err_pkg.build_message
837            (p_appli_s_name            => 'XLA'
838            ,p_msg_name                => 'XLA_AP_NO_ENTERED_AMOUNT'
839            ,p_token_1                 => 'LINE_NUMBER'
840            ,p_value_1                 =>  g_ExtractLine
841            ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
842            ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
843            ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
844   ELSIF (nvl(g_rec_lines.array_calculate_acctd_flag(g_LineNumber), 'N')= 'N'
845            AND ((sign(g_rec_lines.array_entered_amount(g_LineNumber)) > 0 and
846                sign(g_rec_lines.array_ledger_amount(g_LineNumber))<0) or
847            (sign(g_rec_lines.array_entered_amount(g_LineNumber)) < 0 and
848                sign(g_rec_lines.array_ledger_amount(g_LineNumber))>0))
849         ) THEN
850     XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
851     xla_accounting_err_pkg.build_message
852            (p_appli_s_name            => 'XLA'
853            ,p_msg_name                => 'XLA_AP_DIFFERENT_SIGN_AMOUNTS'
854            ,p_token_1                 => 'LINE_NUMBER'
855            ,p_value_1                 =>  g_ExtractLine
856            ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
857            ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
858            ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
859   END IF;
860 END IF;
861 
862 --
863 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
864            trace
865               (p_msg      => 'Entered Amount = '||g_rec_lines.array_entered_amount(g_LineNumber)
866               ,p_level    => C_LEVEL_STATEMENT
867               ,p_module   => l_log_module);
868 
869            trace
870               (p_msg      => 'Ledger Amount = '||g_rec_lines.array_ledger_amount(g_LineNumber)
871               ,p_level    => C_LEVEL_STATEMENT
872               ,p_module   => l_log_module);
873 END IF;
874 --
875 IF g_rec_lines.array_switch_side_flag(g_LineNumber) = C_SWITCH AND
876   (   g_rec_lines.array_ledger_amount(g_LineNumber) < 0  OR
877     ( g_rec_lines.array_ledger_amount(g_LineNumber) = 0 AND
878       g_rec_lines.array_entered_amount(g_LineNumber) < 0 )
879   )
880 THEN
881 
882  --switch side
883 
884    CASE g_rec_lines.array_natural_side_code(g_LineNumber)
885 
886       WHEN C_DEBIT THEN
887          -- store amount in credit side
888           g_rec_lines.array_accounted_cr(g_LineNumber) := ABS(g_rec_lines.array_ledger_amount(g_LineNumber))  ;
889           g_rec_lines.array_accounted_dr(g_LineNumber) := NULL;
890           --
891           g_rec_lines.array_entered_cr(g_LineNumber)   := ABS(g_rec_lines.array_entered_amount(g_LineNumber)) ;
892           g_rec_lines.array_entered_dr(g_LineNumber)   := NULL;
893 
894       WHEN C_CREDIT THEN
895          -- store amount in debit side
896           g_rec_lines.array_accounted_dr(g_LineNumber) := ABS(g_rec_lines.array_ledger_amount(g_LineNumber)) ;
897           g_rec_lines.array_accounted_cr(g_LineNumber) := NULL;
898           --
899           g_rec_lines.array_entered_dr(g_LineNumber)   := ABS(g_rec_lines.array_entered_amount(g_LineNumber)) ;
900           g_rec_lines.array_entered_cr(g_LineNumber)   := NULL;
901 
902       ELSE null;
903 
904   END CASE;
905 
906 ELSE
907 
908  -- no switch
909 
910    CASE g_rec_lines.array_natural_side_code(g_LineNumber)
911 
912       WHEN C_DEBIT THEN
913          -- store amount in debit side
914           g_rec_lines.array_accounted_dr(g_LineNumber) := g_rec_lines.array_ledger_amount(g_LineNumber) ;
915           g_rec_lines.array_accounted_cr(g_LineNumber) := NULL;
916           --
917           g_rec_lines.array_entered_dr(g_LineNumber)   := g_rec_lines.array_entered_amount(g_LineNumber) ;
918           g_rec_lines.array_entered_cr(g_LineNumber)   := NULL;
919 
920       WHEN C_CREDIT THEN
921          -- store amount in credit side
922           g_rec_lines.array_accounted_cr(g_LineNumber) := g_rec_lines.array_ledger_amount(g_LineNumber)  ;
923           g_rec_lines.array_accounted_dr(g_LineNumber) := NULL;
924           --
925           g_rec_lines.array_entered_cr(g_LineNumber)   := g_rec_lines.array_entered_amount(g_LineNumber) ;
926           g_rec_lines.array_entered_dr(g_LineNumber)   := NULL;
927 
928       ELSE null;
929 
930   END CASE;
931 END IF;
932 --
933 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
934 
935            trace
936               (p_msg      => 'Entered_DR = '||g_rec_lines.array_entered_dr(g_LineNumber)
937               ,p_level    => C_LEVEL_STATEMENT
938               ,p_module   => l_log_module);
939 
940            trace
941               (p_msg      => 'Entered_CR = '||g_rec_lines.array_entered_cr(g_LineNumber)
942               ,p_level    => C_LEVEL_STATEMENT
943               ,p_module   => l_log_module);
944 
945            trace
946               (p_msg      => 'Accounted_DR = '||g_rec_lines.array_accounted_dr(g_LineNumber)
947               ,p_level    => C_LEVEL_STATEMENT
948               ,p_module   => l_log_module);
949 
950            trace
951               (p_msg      => 'Accounted_CR = '||g_rec_lines.array_accounted_cr(g_LineNumber)
952               ,p_level    => C_LEVEL_STATEMENT
953               ,p_module   => l_log_module);
954 END IF;
955 --
956 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
957       trace
958          (p_msg      => 'END of SetDebitCreditAmounts'
959          ,p_level    => C_LEVEL_PROCEDURE
960          ,p_module   => l_log_module);
961 
962 END IF;
963 EXCEPTION
964 WHEN xla_exceptions_pkg.application_exception THEN
965    XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
966    RAISE;
967 WHEN OTHERS  THEN
968    xla_exceptions_pkg.raise_message
969            (p_location => 'XLA_AE_LINES_PKG.SetDebitCreditAmounts');
970   --
971 END SetDebitCreditAmounts;
972 --
973 --====================================================================
974 --
975 --
976 --
977 --
978 --
979 --        PUBLIC  procedures and functions
980 --
981 --
982 --
983 --
984 --
985 --
986 --
987 --
988 --
989 --
990 --
991 --
992 --
993 --
994 --
995 --
996 --======================================================================
997 --
998 /*======================================================================+
999 |                                                                       |
1000 | PUBLIC Procedure                                                      |
1001 |        InitLines  : Reset temporary journal line pl/sql structures    |
1002 |                                                                       |
1003 +======================================================================*/
1004 PROCEDURE InitLines
1005 --
1006 IS
1007 --
1008 l_null_lines          t_rec_lines;
1009 l_null_rev_line       t_rec_reverse_line;
1010 l_null_trans_accounts t_rec_transaction_accounts;
1011 l_log_module          VARCHAR2(240);
1012 --
1013 BEGIN
1014 IF g_log_enabled THEN
1015       l_log_module := C_DEFAULT_MODULE||'.InitLines';
1016 END IF;
1017 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1018       trace
1019          (p_msg      => 'BEGIN of InitLines'
1020          ,p_level    => C_LEVEL_PROCEDURE
1021          ,p_module   => l_log_module);
1022 
1023 END IF;
1024 
1025 g_rec_lines                    := l_null_lines;
1026 g_transaction_accounts         := l_null_trans_accounts;
1027 g_reverse_lines                := l_null_rev_line;
1028 g_LineNumber                   := 0;
1029 g_ExtractLine                  := 0;
1030 g_ActualLineNum                := 0;
1031 g_BudgetLineNum                := 0;
1032 g_EncumbLineNum                := 0;
1033 
1034 
1035 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1036       trace
1037          (p_msg      => 'END of InitLines'
1038          ,p_level    => C_LEVEL_PROCEDURE
1039          ,p_module   => l_log_module);
1040 
1041 END IF;
1042 EXCEPTION
1043 WHEN xla_exceptions_pkg.application_exception THEN
1044   RAISE;
1045 WHEN OTHERS  THEN
1046    xla_exceptions_pkg.raise_message
1047            (p_location => 'XLA_AE_LINES_PKG.InitLines');
1048   --
1049 END InitLines;
1050 --
1051 --
1052 /*======================================================================+
1053 |                                                                       |
1054 | PUBLIC Procedure                                                      |
1055 |                                                                       |
1056 |                                                                       |
1057 +======================================================================*/
1058 PROCEDURE SetExtractLine(p_extract_line IN NUMBER)
1059 IS
1060 l_log_module         VARCHAR2(240);
1061 BEGIN
1062 --
1063 IF g_log_enabled THEN
1064       l_log_module := C_DEFAULT_MODULE||'.SetExtractLine';
1065 END IF;
1066 --
1067 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1068       trace
1069          (p_msg      => 'BEGIN of SetExtractLine'
1070          ,p_level    => C_LEVEL_PROCEDURE
1071          ,p_module   => l_log_module);
1072 
1073 END IF;
1074 
1075 IF (C_LEVEL_EVENT >= g_log_level) THEN
1076 
1077        trace
1078          (p_msg      => 'Extract line number = '||p_extract_line
1079          ,p_level    => C_LEVEL_EVENT
1080          ,p_module   => l_log_module);
1081 
1082 END IF;
1083 
1084 g_ExtractLine                  := p_extract_line;
1085 
1086 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1087 
1088       trace
1089          (p_msg      => 'END of SetExtractLine'
1090          ,p_level    => C_LEVEL_PROCEDURE
1091          ,p_module   => l_log_module);
1092 
1093 END IF;
1094 
1095 EXCEPTION
1096 WHEN xla_exceptions_pkg.application_exception THEN
1097   g_ExtractLine                := null;
1098   RAISE;
1099 WHEN OTHERS  THEN
1100    xla_exceptions_pkg.raise_message
1101            (p_location => 'XLA_AE_LINES_PKG.SetExtractLine');
1102   --
1103 END SetExtractLine;
1104 --
1105 /*======================================================================+
1106 |                                                                       |
1107 | Public Procedure                                                      |
1108 |                                                                       |
1109 |                                                                       |
1110 +======================================================================*/
1111 --
1112 PROCEDURE SetNullLine
1113 IS
1114 l_log_module         VARCHAR2(240);
1115 BEGIN
1116 --
1117 IF g_log_enabled THEN
1118       l_log_module := C_DEFAULT_MODULE||'.SetNullLine';
1119 END IF;
1120 --
1121 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1122       trace
1123          (p_msg      => 'BEGIN of SetNullLine'
1124          ,p_level    => C_LEVEL_PROCEDURE
1125          ,p_module   => l_log_module);
1126 
1127 END IF;
1128 FOR Idx IN 1 .. C_BULK_LIMIT LOOP
1129 --
1130 -- init new line
1131 --
1132  g_null_lines.array_ae_header_id(Idx)          := NULL;
1133 -- g_null_lines.array_line_num(Idx)            := NULL;
1134  g_null_lines.array_accounting_class(Idx)      := NULL;
1135  g_null_lines.array_rounding_class(Idx)        := NULL;
1136  g_null_lines.array_doc_rounding_level(Idx)    := NULL;
1137  g_null_lines.array_gain_or_loss_ref(Idx)      := NULL;
1138  g_null_lines.array_event_class_code(Idx)      := NULL;
1139  g_null_lines.array_event_type_code(Idx)       := NULL;
1140  g_null_lines.array_line_defn_owner_code(Idx)  := NULL;
1141  g_null_lines.array_line_defn_code(Idx)        := NULL;
1142  g_null_lines.array_accounting_line_code(Idx)  := NULL;
1143  g_null_lines.array_accounting_line_type(Idx)  := NULL;
1144  g_null_lines.array_calculate_acctd_flag(Idx)  := NULL;
1145  g_null_lines.array_calculate_g_l_flag(Idx)    := NULL;
1146  g_null_lines.array_gain_or_loss_flag(Idx)    := NULL;
1147 --
1148 -- line flexfield accounts
1149 --
1150  g_null_lines.array_ccid_flag(Idx)  := C_INVALID;
1151  g_null_lines.array_ccid(Idx)       := NULL;
1152 --
1153  g_null_lines.array_accounting_coa_id(Idx)   := NULL;
1154  g_null_lines.array_transaction_coa_id(Idx)  := NULL;
1155  g_null_lines.array_sl_coa_mapping_name(Idx) := NULL;
1156 --
1157  g_null_lines.array_segment1(Idx)   := NULL;
1158  g_null_lines.array_segment2(Idx)   := NULL;
1159  g_null_lines.array_segment3(Idx)   := NULL;
1160  g_null_lines.array_segment4(Idx)   := NULL;
1161  g_null_lines.array_segment5(Idx)   := NULL;
1162  g_null_lines.array_segment6(Idx)   := NULL;
1163  g_null_lines.array_segment7(Idx)   := NULL;
1164  g_null_lines.array_segment8(Idx)   := NULL;
1165  g_null_lines.array_segment9(Idx)   := NULL;
1166  g_null_lines.array_segment10(Idx)  := NULL;
1167  g_null_lines.array_segment11(Idx)  := NULL;
1168  g_null_lines.array_segment12(Idx)  := NULL;
1169  g_null_lines.array_segment13(Idx)  := NULL;
1170  g_null_lines.array_segment14(Idx)  := NULL;
1171  g_null_lines.array_segment15(Idx)  := NULL;
1172  g_null_lines.array_segment16(Idx)  := NULL;
1173  g_null_lines.array_segment17(Idx)  := NULL;
1174  g_null_lines.array_segment18(Idx)  := NULL;
1175  g_null_lines.array_segment19(Idx)  := NULL;
1176  g_null_lines.array_segment20(Idx)  := NULL;
1177  g_null_lines.array_segment21(Idx)  := NULL;
1178  g_null_lines.array_segment22(Idx)  := NULL;
1179  g_null_lines.array_segment23(Idx)  := NULL;
1180  g_null_lines.array_segment24(Idx)  := NULL;
1181  g_null_lines.array_segment25(Idx)  := NULL;
1182  g_null_lines.array_segment26(Idx)  := NULL;
1183  g_null_lines.array_segment27(Idx)  := NULL;
1184  g_null_lines.array_segment28(Idx)  := NULL;
1185  g_null_lines.array_segment29(Idx)  := NULL;
1186  g_null_lines.array_segment30(Idx)  := NULL;
1187 --
1188  g_null_lines.alt_array_ccid_flag(Idx)   := C_INVALID;
1189  g_null_lines.alt_array_ccid(Idx)       := NULL;
1190  g_null_lines.alt_array_segment1(Idx)   := NULL;
1191  g_null_lines.alt_array_segment2(Idx)   := NULL;
1192  g_null_lines.alt_array_segment3(Idx)   := NULL;
1193  g_null_lines.alt_array_segment4(Idx)   := NULL;
1194  g_null_lines.alt_array_segment5(Idx)   := NULL;
1195  g_null_lines.alt_array_segment6(Idx)   := NULL;
1196  g_null_lines.alt_array_segment7(Idx)   := NULL;
1197  g_null_lines.alt_array_segment8(Idx)   := NULL;
1198  g_null_lines.alt_array_segment9(Idx)   := NULL;
1199  g_null_lines.alt_array_segment10(Idx)  := NULL;
1200  g_null_lines.alt_array_segment11(Idx)  := NULL;
1201  g_null_lines.alt_array_segment12(Idx)  := NULL;
1202  g_null_lines.alt_array_segment13(Idx)  := NULL;
1203  g_null_lines.alt_array_segment14(Idx)  := NULL;
1204  g_null_lines.alt_array_segment15(Idx)  := NULL;
1205  g_null_lines.alt_array_segment16(Idx)  := NULL;
1206  g_null_lines.alt_array_segment17(Idx)  := NULL;
1207  g_null_lines.alt_array_segment18(Idx)  := NULL;
1208  g_null_lines.alt_array_segment19(Idx)  := NULL;
1209  g_null_lines.alt_array_segment20(Idx)  := NULL;
1210  g_null_lines.alt_array_segment21(Idx)  := NULL;
1211  g_null_lines.alt_array_segment22(Idx)  := NULL;
1212  g_null_lines.alt_array_segment23(Idx)  := NULL;
1213  g_null_lines.alt_array_segment24(Idx)  := NULL;
1214  g_null_lines.alt_array_segment25(Idx)  := NULL;
1215  g_null_lines.alt_array_segment26(Idx)  := NULL;
1216  g_null_lines.alt_array_segment27(Idx)  := NULL;
1217  g_null_lines.alt_array_segment28(Idx)  := NULL;
1218  g_null_lines.alt_array_segment29(Idx)  := NULL;
1219  g_null_lines.alt_array_segment30(Idx)  := NULL;
1220 --
1221 -- Option lines
1222 --
1223  g_null_lines.array_gl_transfer_mode(Idx)      := NULL;
1224  g_null_lines.array_natural_side_code(Idx)     := NULL;
1225  g_null_lines.array_acct_entry_type_code(Idx)  := NULL;
1226  g_null_lines.array_switch_side_flag(Idx)      := NULL;
1227  g_null_lines.array_merge_duplicate_code(Idx)  := NULL;
1228  --
1229  -- line amounts
1230  --
1231  g_null_lines.array_entered_amount(Idx)        := NULL;
1232  g_null_lines.array_ledger_amount(Idx)         := NULL;
1233  g_null_lines.array_entered_dr(Idx)            := NULL;
1234  g_null_lines.array_entered_cr(Idx)            := NULL;
1235  g_null_lines.array_accounted_dr(Idx)          := NULL;
1236  g_null_lines.array_accounted_cr(Idx)          := NULL;
1237  g_null_lines.array_currency_code(Idx)         := NULL;
1238  g_null_lines.array_currency_mau(Idx)          := NULL;
1239  g_null_lines.array_curr_conversion_date(Idx)  := NULL;
1240  g_null_lines.array_curr_conversion_rate(Idx)  := NULL;
1241  g_null_lines.array_curr_conversion_type(Idx)  := NULL;
1242  g_null_lines.array_description(Idx)           := NULL;
1243  --
1244  -- line descriptions
1245  --
1246  g_null_lines.array_party_id(Idx)              := NULL;
1247  g_null_lines.array_party_site_id(Idx)         := NULL;
1248  g_null_lines.array_party_type_code(Idx)       := NULL;
1249  --
1250  g_null_lines.array_statistical_amount(Idx)    := NULL;
1251  g_null_lines.array_ussgl_transaction(Idx)     := NULL;
1252 --
1253  g_null_lines.array_jgzz_recon_ref(Idx)        := NULL;
1254 --
1255 -- distribution links
1256 --
1257  g_null_lines.array_distribution_id_char_1(Idx)  := NULL;
1258  g_null_lines.array_distribution_id_char_2(Idx)  := NULL;
1259  g_null_lines.array_distribution_id_char_3(Idx)  := NULL;
1260  g_null_lines.array_distribution_id_char_4(Idx)  := NULL;
1261  g_null_lines.array_distribution_id_char_5(Idx)  := NULL;
1262  g_null_lines.array_distribution_id_num_1(Idx)   := NULL;
1263  g_null_lines.array_distribution_id_num_2(Idx)   := NULL;
1264  g_null_lines.array_distribution_id_num_3(Idx)   := NULL;
1265  g_null_lines.array_distribution_id_num_4(Idx)   := NULL;
1266  g_null_lines.array_distribution_id_num_5(Idx)   := NULL;
1267  g_null_lines.array_sys_distribution_type(Idx)   := NULL;
1268 --
1269 -- reverse distribution links
1270 --
1271  g_null_lines.array_rev_dist_id_char_1(Idx)  := NULL;
1272  g_null_lines.array_rev_dist_id_char_2(Idx)  := NULL;
1273  g_null_lines.array_rev_dist_id_char_3(Idx)  := NULL;
1274  g_null_lines.array_rev_dist_id_char_4(Idx)  := NULL;
1275  g_null_lines.array_rev_dist_id_char_5(Idx)  := NULL;
1276  g_null_lines.array_rev_dist_id_num_1(Idx)   := NULL;
1277  g_null_lines.array_rev_dist_id_num_2(Idx)   := NULL;
1278  g_null_lines.array_rev_dist_id_num_3(Idx)   := NULL;
1279  g_null_lines.array_rev_dist_id_num_4(Idx)   := NULL;
1280  g_null_lines.array_rev_dist_id_num_5(Idx)   := NULL;
1281  g_null_lines.array_rev_dist_type(Idx)       := NULL;
1282 
1283 -- 4262811 MPA
1284  g_null_lines.array_header_num(Idx)          := NULL;
1285  g_null_lines.array_mpa_acc_entry_flag(Idx)  := 'N';
1286  g_null_lines.array_mpa_option(Idx)          := NULL;
1287  g_null_lines.array_mpa_start_date(Idx)      := NULL;
1288  g_null_lines.array_mpa_end_date(Idx)        := NULL;
1289 --
1290 -- deferred info - replace by MPA
1291 --
1292 -- g_null_lines.array_deferred_indicator(Idx)    := NULL;
1293 -- g_null_lines.array_deferred_start_date(Idx)   := NULL;
1294 -- g_null_lines.array_deferred_end_date(Idx)     := NULL;
1295 -- g_null_lines.array_deferred_no_period(Idx)    := NULL;
1296 -- g_null_lines.array_deferred_period_type(Idx)  := NULL;
1297 --
1298 -- reversal info
1299 --
1300  g_null_lines.array_acc_reversal_option(Idx)   := NULL;
1301 --
1302 -- tax info
1303 --
1304  g_null_lines.array_tax_line_ref(Idx)           := NULL;
1305  g_null_lines.array_tax_summary_line_ref(Idx)   := NULL;
1306  g_null_lines.array_tax_rec_nrec_dist_ref(Idx)  := NULL;
1307 --
1308 -- Analytical Criteria
1309 --
1310  g_null_lines.array_anc_balance_flag(Idx)      := NULL;
1311  g_null_lines.array_anc_id_1(Idx)              := NULL;
1312  g_null_lines.array_anc_id_2(Idx)              := NULL;
1313  g_null_lines.array_anc_id_3(Idx)              := NULL;
1314  g_null_lines.array_anc_id_4(Idx)              := NULL;
1315  g_null_lines.array_anc_id_5(Idx)              := NULL;
1316  g_null_lines.array_anc_id_6(Idx)              := NULL;
1317  g_null_lines.array_anc_id_7(Idx)              := NULL;
1318  g_null_lines.array_anc_id_8(Idx)              := NULL;
1319  g_null_lines.array_anc_id_9(Idx)              := NULL;
1320  g_null_lines.array_anc_id_10(Idx)             := NULL;
1321  g_null_lines.array_anc_id_11(Idx)             := NULL;
1322  g_null_lines.array_anc_id_12(Idx)             := NULL;
1323  g_null_lines.array_anc_id_13(Idx)             := NULL;
1324  g_null_lines.array_anc_id_14(Idx)             := NULL;
1325  g_null_lines.array_anc_id_15(Idx)             := NULL;
1326  g_null_lines.array_anc_id_16(Idx)             := NULL;
1327  g_null_lines.array_anc_id_17(Idx)             := NULL;
1328  g_null_lines.array_anc_id_18(Idx)             := NULL;
1329  g_null_lines.array_anc_id_19(Idx)             := NULL;
1330  g_null_lines.array_anc_id_20(Idx)             := NULL;
1331  g_null_lines.array_anc_id_21(Idx)             := NULL;
1332  g_null_lines.array_anc_id_22(Idx)             := NULL;
1333  g_null_lines.array_anc_id_23(Idx)             := NULL;
1334  g_null_lines.array_anc_id_24(Idx)             := NULL;
1335  g_null_lines.array_anc_id_25(Idx)             := NULL;
1336  g_null_lines.array_anc_id_26(Idx)             := NULL;
1337  g_null_lines.array_anc_id_27(Idx)             := NULL;
1338  g_null_lines.array_anc_id_28(Idx)             := NULL;
1339  g_null_lines.array_anc_id_29(Idx)             := NULL;
1340  g_null_lines.array_anc_id_30(Idx)             := NULL;
1341  g_null_lines.array_anc_id_31(Idx)             := NULL;
1342  g_null_lines.array_anc_id_32(Idx)             := NULL;
1343  g_null_lines.array_anc_id_33(Idx)             := NULL;
1344  g_null_lines.array_anc_id_34(Idx)             := NULL;
1345  g_null_lines.array_anc_id_35(Idx)             := NULL;
1346  g_null_lines.array_anc_id_36(Idx)             := NULL;
1347  g_null_lines.array_anc_id_37(Idx)             := NULL;
1348  g_null_lines.array_anc_id_38(Idx)             := NULL;
1349  g_null_lines.array_anc_id_39(Idx)             := NULL;
1350  g_null_lines.array_anc_id_40(Idx)             := NULL;
1351  g_null_lines.array_anc_id_41(Idx)             := NULL;
1352  g_null_lines.array_anc_id_42(Idx)             := NULL;
1353  g_null_lines.array_anc_id_43(Idx)             := NULL;
1354  g_null_lines.array_anc_id_44(Idx)             := NULL;
1355  g_null_lines.array_anc_id_45(Idx)             := NULL;
1356  g_null_lines.array_anc_id_46(Idx)             := NULL;
1357  g_null_lines.array_anc_id_47(Idx)             := NULL;
1358  g_null_lines.array_anc_id_48(Idx)             := NULL;
1359  g_null_lines.array_anc_id_49(Idx)             := NULL;
1360  g_null_lines.array_anc_id_50(Idx)             := NULL;
1361  g_null_lines.array_anc_id_51(Idx)             := NULL;
1362  g_null_lines.array_anc_id_52(Idx)             := NULL;
1363  g_null_lines.array_anc_id_53(Idx)             := NULL;
1364  g_null_lines.array_anc_id_54(Idx)             := NULL;
1365  g_null_lines.array_anc_id_55(Idx)             := NULL;
1366  g_null_lines.array_anc_id_56(Idx)             := NULL;
1367  g_null_lines.array_anc_id_57(Idx)             := NULL;
1368  g_null_lines.array_anc_id_58(Idx)             := NULL;
1369  g_null_lines.array_anc_id_59(Idx)             := NULL;
1370  g_null_lines.array_anc_id_60(Idx)             := NULL;
1371  g_null_lines.array_anc_id_61(Idx)             := NULL;
1372  g_null_lines.array_anc_id_62(Idx)             := NULL;
1373  g_null_lines.array_anc_id_63(Idx)             := NULL;
1374  g_null_lines.array_anc_id_64(Idx)             := NULL;
1375  g_null_lines.array_anc_id_65(Idx)             := NULL;
1376  g_null_lines.array_anc_id_66(Idx)             := NULL;
1377  g_null_lines.array_anc_id_67(Idx)             := NULL;
1378  g_null_lines.array_anc_id_68(Idx)             := NULL;
1379  g_null_lines.array_anc_id_69(Idx)             := NULL;
1380  g_null_lines.array_anc_id_70(Idx)             := NULL;
1381  g_null_lines.array_anc_id_71(Idx)             := NULL;
1382  g_null_lines.array_anc_id_72(Idx)             := NULL;
1383  g_null_lines.array_anc_id_73(Idx)             := NULL;
1384  g_null_lines.array_anc_id_74(Idx)             := NULL;
1385  g_null_lines.array_anc_id_75(Idx)             := NULL;
1386  g_null_lines.array_anc_id_76(Idx)             := NULL;
1387  g_null_lines.array_anc_id_77(Idx)             := NULL;
1388  g_null_lines.array_anc_id_78(Idx)             := NULL;
1389  g_null_lines.array_anc_id_79(Idx)             := NULL;
1390  g_null_lines.array_anc_id_80(Idx)             := NULL;
1391  g_null_lines.array_anc_id_81(Idx)             := NULL;
1392  g_null_lines.array_anc_id_82(Idx)             := NULL;
1393  g_null_lines.array_anc_id_83(Idx)             := NULL;
1394  g_null_lines.array_anc_id_84(Idx)             := NULL;
1395  g_null_lines.array_anc_id_85(Idx)             := NULL;
1396  g_null_lines.array_anc_id_86(Idx)             := NULL;
1397  g_null_lines.array_anc_id_87(Idx)             := NULL;
1398  g_null_lines.array_anc_id_88(Idx)             := NULL;
1399  g_null_lines.array_anc_id_89(Idx)             := NULL;
1400  g_null_lines.array_anc_id_90(Idx)             := NULL;
1401  g_null_lines.array_anc_id_91(Idx)             := NULL;
1402  g_null_lines.array_anc_id_92(Idx)             := NULL;
1403  g_null_lines.array_anc_id_93(Idx)             := NULL;
1404  g_null_lines.array_anc_id_94(Idx)             := NULL;
1405  g_null_lines.array_anc_id_95(Idx)             := NULL;
1406  g_null_lines.array_anc_id_96(Idx)             := NULL;
1407  g_null_lines.array_anc_id_97(Idx)             := NULL;
1408  g_null_lines.array_anc_id_98(Idx)             := NULL;
1409  g_null_lines.array_anc_id_99(Idx)             := NULL;
1410  g_null_lines.array_anc_id_100(Idx)            := NULL;
1411 --
1412  g_null_lines.array_event_number(Idx)          := NULL;
1413  g_null_lines.array_entity_id(Idx)             := NULL;
1414  g_null_lines.array_reversal_code(Idx)         := NULL;
1415 --------------------------------------------------------------------------
1416 -- 4262811 - Initialised to prevent element at index[x] does not exist error
1417  g_null_lines.array_balance_type_code(Idx)     := NULL;
1418  g_null_lines.array_ledger_id(Idx)             := NULL;
1419  g_null_lines.array_override_acctd_amt_flag(Idx) := NULL;
1420 --------------------------------------------------------------------------
1421  g_null_lines.array_encumbrance_type_id(Idx)   := NULL;
1422 --
1423  --------------------------------------
1424  -- 4219869
1425  -- Business Flow Applied To Attributes
1426  --------------------------------------
1427  g_null_lines.array_business_method_code(Idx)   := NULL;
1428  g_null_lines.array_business_class_code(Idx)    := NULL;
1429  g_null_lines.array_inherit_desc_flag(Idx)      := 'N';
1430  g_null_lines.array_bflow_application_id(Idx)   := NULL;
1431 
1432  g_null_lines.array_bflow_entity_code(Idx)      := NULL;
1433  g_null_lines.array_bflow_source_id_num_1(Idx)  := NULL;
1434  g_null_lines.array_bflow_source_id_num_2(Idx)  := NULL;
1435  g_null_lines.array_bflow_source_id_num_3(Idx)  := NULL;
1436  g_null_lines.array_bflow_source_id_num_4(Idx)  := NULL;
1437  g_null_lines.array_bflow_source_id_char_1(Idx) := NULL;
1438  g_null_lines.array_bflow_source_id_char_2(Idx) := NULL;
1439  g_null_lines.array_bflow_source_id_char_3(Idx) := NULL;
1440  g_null_lines.array_bflow_source_id_char_4(Idx) := NULL;
1441 
1442  g_null_lines.array_bflow_distribution_type(Idx):= NULL;
1443  g_null_lines.array_bflow_dist_id_num_1(Idx)    := NULL;
1444  g_null_lines.array_bflow_dist_id_num_2(Idx)    := NULL;
1445  g_null_lines.array_bflow_dist_id_num_3(Idx)    := NULL;
1446  g_null_lines.array_bflow_dist_id_num_4(Idx)    := NULL;
1447  g_null_lines.array_bflow_dist_id_num_5(Idx)    := NULL;
1448  g_null_lines.array_bflow_dist_id_char_1(Idx)   := NULL;
1449  g_null_lines.array_bflow_dist_id_char_2(Idx)   := NULL;
1450  g_null_lines.array_bflow_dist_id_char_3(Idx)   := NULL;
1451  g_null_lines.array_bflow_dist_id_char_4(Idx)   := NULL;
1452  g_null_lines.array_bflow_dist_id_char_5(Idx)   := NULL;
1453 
1454  g_null_lines.array_bflow_applied_to_amt(Idx)   := NULL;  -- 5132302
1455 --
1456 --
1457 -- Upgrade Attributes
1458 --
1459 
1460 
1461 g_null_lines.array_actual_upg_option(Idx)         := NULL;
1462 g_null_lines.array_actual_upg_dr_ccid(Idx)        := NULL;
1463 g_null_lines.array_actual_upg_cr_ccid(Idx)        := NULL;
1464 g_null_lines.array_actual_upg_dr_ent_amt(Idx)     := NULL;
1465 g_null_lines.array_actual_upg_cr_ent_amt(Idx)     := NULL;
1466 g_null_lines.array_actual_upg_dr_ent_curr(Idx)    := NULL;
1467 g_null_lines.array_actual_upg_cr_ent_curr(Idx)    := NULL;
1468 g_null_lines.array_actual_upg_dr_ledger_amt(Idx)  := NULL;
1469 g_null_lines.array_actual_upg_cr_ledger_amt(Idx)  := NULL;
1470 g_null_lines.array_actual_upg_dr_acct_class(Idx)  := NULL;
1471 g_null_lines.array_actual_upg_cr_acct_class(Idx)  := NULL;
1472 g_null_lines.array_actual_upg_dr_xrate(Idx)       := NULL;
1473 g_null_lines.array_actual_upg_dr_xrate_type(Idx)  := NULL;
1474 g_null_lines.array_actual_upg_dr_xdate(Idx)       := NULL;
1475 g_null_lines.array_actual_upg_cr_xrate(Idx)       := NULL;
1476 g_null_lines.array_actual_upg_cr_xrate_type(Idx)  := NULL;
1477 g_null_lines.array_actual_upg_cr_xdate(Idx)       := NULL;
1478 g_null_lines.array_enc_upg_option(Idx)            := NULL;
1479 g_null_lines.array_enc_upg_dr_ccid(Idx)           := NULL;
1480 g_null_lines.array_enc_upg_cr_ccid(Idx)           := NULL;
1481 g_null_lines.array_upg_dr_enc_type_id(Idx)        := NULL;
1482 g_null_lines.array_upg_cr_enc_type_id(Idx)        := NULL;
1483 g_null_lines.array_enc_upg_dr_ent_amt(Idx)        := NULL;
1484 g_null_lines.array_enc_upg_cr_ent_amt(Idx)        := NULL;
1485 g_null_lines.array_enc_upg_dr_ent_curr(Idx)       := NULL;
1486 g_null_lines.array_enc_upg_cr_ent_curr(Idx)       := NULL;
1487 g_null_lines.array_enc_upg_dr_ledger_amt(Idx)     := NULL;
1488 g_null_lines.array_enc_upg_cr_ledger_amt(Idx)     := NULL;
1489 g_null_lines.array_enc_upg_dr_acct_class(Idx)     := NULL;
1490 g_null_lines.array_enc_upg_cr_acct_class(Idx)     := NULL;
1491 --  5845547
1492 g_null_lines.array_upg_party_type_code(Idx)       := NULL;
1493 g_null_lines.array_upg_party_id(Idx)              := NULL;
1494 g_null_lines.array_upg_party_site_id(Idx)         := NULL;
1495 --
1496 --
1497 -- Allocation Attributes
1498 --
1499 g_null_lines.array_alloct_application_id(Idx)   := NULL;
1500 
1501 g_null_lines.array_alloct_entity_code(Idx)      := NULL;
1502 g_null_lines.array_alloct_source_id_num_1(Idx)  := NULL;
1503 g_null_lines.array_alloct_source_id_num_2(Idx)  := NULL;
1504 g_null_lines.array_alloct_source_id_num_3(Idx)  := NULL;
1505 g_null_lines.array_alloct_source_id_num_4(Idx)  := NULL;
1506 g_null_lines.array_alloct_source_id_char_1(Idx) := NULL;
1507 g_null_lines.array_alloct_source_id_char_2(Idx) := NULL;
1508 g_null_lines.array_alloct_source_id_char_3(Idx) := NULL;
1509 g_null_lines.array_alloct_source_id_char_4(Idx) := NULL;
1510 
1511 g_null_lines.array_alloct_distribution_type(Idx):= NULL;
1512 g_null_lines.array_alloct_dist_id_num_1(Idx)    := NULL;
1513 g_null_lines.array_alloct_dist_id_num_2(Idx)    := NULL;
1514 g_null_lines.array_alloct_dist_id_num_3(Idx)    := NULL;
1515 g_null_lines.array_alloct_dist_id_num_4(Idx)    := NULL;
1516 g_null_lines.array_alloct_dist_id_num_5(Idx)    := NULL;
1517 g_null_lines.array_alloct_dist_id_char_1(Idx)   := NULL;
1518 g_null_lines.array_alloct_dist_id_char_2(Idx)   := NULL;
1519 g_null_lines.array_alloct_dist_id_char_3(Idx)   := NULL;
1520 g_null_lines.array_alloct_dist_id_char_4(Idx)   := NULL;
1521 g_null_lines.array_alloct_dist_id_char_5(Idx)   := NULL;
1522 
1523 --
1524 -- bug 4955764
1525 --
1526 g_null_lines.array_gl_date(Idx)                 := NULL;
1527 
1528 
1529 --
1530 END LOOP;
1531 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1532       trace
1533          (p_msg      => 'END of SetNullLine'
1534          ,p_level    => C_LEVEL_PROCEDURE
1535          ,p_module   => l_log_module);
1536 END IF;
1537 EXCEPTION
1538 WHEN xla_exceptions_pkg.application_exception THEN
1539   RAISE;
1540 WHEN OTHERS  THEN
1541    xla_exceptions_pkg.raise_message
1542            (p_location => 'XLA_AE_LINES_PKG.SetNullLine');
1543   --
1544 END SetNullLine;
1545 --
1546 /*======================================================================+
1547 |                                                                       |
1548 | Public Procedure                                                      |
1549 |                                                                       |
1550 |                                                                       |
1551 +======================================================================*/
1552 PROCEDURE SetNewLine
1553 IS
1554 l_log_module         VARCHAR2(240);
1555 l_result                   BOOLEAN;
1556 BEGIN
1557 --
1558 IF g_log_enabled THEN
1559       l_log_module := C_DEFAULT_MODULE||'.SetNewLine';
1560 END IF;
1561 --
1562 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1563       trace
1564          (p_msg      => 'BEGIN of SetNewLine'
1565          ,p_level    => C_LEVEL_PROCEDURE
1566          ,p_module   => l_log_module);
1567 
1568 END IF;
1569 
1570 IF NVL(g_LineNumber,0) = 0 THEN
1571    g_rec_lines := g_null_lines;
1572 
1573 ELSIF g_LineNumber = C_BULK_LIMIT THEN
1574    --
1575    -- insert headers into xla_ae_lines_gt table
1576    --
1577    l_result := xla_ae_lines_pkg.InsertLines;
1578    g_LineNumber := 0;
1579    g_rec_lines  := g_null_lines;
1580 
1581 END IF;
1582 
1583 g_LineNumber       := NVL(g_LineNumber ,0) + 1;
1584 g_override_acctd_amt_flag :='N';
1585 g_temp_line_num    := NVL(g_temp_line_num ,0) + 1;
1586 
1587 --
1588 -- following sets the temp line number
1589 --
1590 g_rec_lines.array_line_num(g_LineNumber) := g_temp_line_num;
1591 --
1592 -- following sets the extract line number
1593 --
1594 g_rec_lines.array_extract_line_num(g_LineNumber) := g_ExtractLine;
1595 
1596 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1597       trace
1598          (p_msg      => 'END of SetNewLine'
1599          ,p_level    => C_LEVEL_PROCEDURE
1600          ,p_module   => l_log_module);
1601 END IF;
1602 EXCEPTION
1603 WHEN xla_exceptions_pkg.application_exception THEN
1604   RAISE;
1605 WHEN OTHERS  THEN
1606    xla_exceptions_pkg.raise_message
1607            (p_location => 'XLA_AE_LINES_PKG.SetNewLine');
1608   --
1609 END SetNewLine;
1610 --
1611 --
1612 /*======================================================================+
1613 |                                                                       |
1614 | Public Procedure                                                      |
1615 |                                                                       |
1616 |                                                                       |
1617 +======================================================================*/
1618 PROCEDURE SetAcctLineType(
1619   p_component_type                   IN VARCHAR2
1620 , p_event_type_code                  IN VARCHAR2
1621 , p_line_definition_owner_code       IN VARCHAR2
1622 , p_line_definition_code             IN VARCHAR2
1623 , p_accounting_line_code             IN VARCHAR2
1624 , p_accounting_line_type_code        IN VARCHAR2
1625 , p_accounting_line_appl_id          IN INTEGER
1626 , p_amb_context_code                 IN VARCHAR2
1627 , p_entity_code                      IN VARCHAR2
1628 , p_event_class_code                 IN VARCHAR2
1629 )
1630 IS
1631 l_log_module         VARCHAR2(240);
1632 BEGIN
1633 --
1634 IF g_log_enabled THEN
1635       l_log_module := C_DEFAULT_MODULE||'.SetAcctLineType';
1636 END IF;
1637 --
1638 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1639       trace
1640          (p_msg      => 'BEGIN of SetAcctLineType'
1641          ,p_level    => C_LEVEL_PROCEDURE
1642          ,p_module   => l_log_module);
1643       trace
1644          (p_msg      => 'p_accounting_line_type_code = '||p_accounting_line_type_code||
1645                         '- p_accounting_line_code= '||p_accounting_line_code
1646          ,p_level    => C_LEVEL_PROCEDURE
1647          ,p_module   => l_log_module);
1648 
1649 END IF;
1650 --
1651 --
1652 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1653 
1654       trace
1655          (p_msg      => 'p_component_type = '||p_component_type||
1656                         ' - p_accounting_line_appl_id = '||p_accounting_line_appl_id||
1657                         ' - p_amb_context_code = '||p_amb_context_code||
1658                         ' - p_entity_code = '||p_entity_code||
1659                         ' - p_event_class_code = '||p_event_class_code
1660          ,p_level    => C_LEVEL_STATEMENT
1661          ,p_module   => l_log_module);
1662 END IF;
1663 
1664  g_rec_lines.array_event_class_code(g_LineNumber)      := p_event_class_code;
1665  g_rec_lines.array_event_type_code(g_LineNumber)       := p_event_type_code;
1666  g_rec_lines.array_line_defn_owner_code(g_LineNumber)  := p_line_definition_owner_code;
1667  g_rec_lines.array_line_defn_code(g_LineNumber)        := p_line_definition_code;
1668  g_rec_lines.array_accounting_line_code(g_LineNumber)  := p_accounting_line_code;
1669  g_rec_lines.array_accounting_line_type(g_LineNumber)  := p_accounting_line_type_code;
1670 
1671 --
1672 -- cache accounting line type information
1673 --
1674  g_accounting_line.component_type              := p_component_type;
1675  g_accounting_line.accounting_line_code        := p_accounting_line_code;
1676  g_accounting_line.accounting_line_type_code   := p_accounting_line_type_code;
1677  g_accounting_line.accounting_line_appl_id     := p_accounting_line_appl_id;
1678  g_accounting_line.amb_context_code            := p_amb_context_code;
1679  g_accounting_line.entity_code                 := p_entity_code;
1680  g_accounting_line.event_class_code            := p_event_class_code;
1681 
1682 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1683       trace
1684          (p_msg      => 'END of SetAcctLineType'
1685          ,p_level    => C_LEVEL_PROCEDURE
1686          ,p_module   => l_log_module);
1687 END IF;
1688 EXCEPTION
1689 WHEN xla_exceptions_pkg.application_exception THEN
1690    RAISE;
1691 WHEN OTHERS  THEN
1692    xla_exceptions_pkg.raise_message
1693            (p_location => 'XLA_AE_LINES_PKG.SetAcctLineType');
1694   --
1695 END SetAcctLineType;
1696 
1697 /*======================================================================+
1698 |                                                                       |
1699 | Public Function                                                       |
1700 |                                                                       |
1701 |                                                                       |
1702 +======================================================================*/
1703 Function SetAcctLineOption(
1704   p_natural_side_code          IN VARCHAR2
1705 , p_gain_or_loss_flag          IN VARCHAR2
1706 , p_gl_transfer_mode_code      IN VARCHAR2
1707 , p_acct_entry_type_code       IN VARCHAR2
1708 , p_switch_side_flag           IN VARCHAR2
1709 , p_merge_duplicate_code       IN VARCHAR2
1710 )
1711 RETURN NUMBER
1712 IS
1713 l_ae_header_id        NUMBER;
1714 l_log_module         VARCHAR2(240);
1715 BEGIN
1716 --
1717 IF g_log_enabled THEN
1718       l_log_module := C_DEFAULT_MODULE||'.SetAcctLineOption';
1719 END IF;
1720 --
1721 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1722       trace
1723          (p_msg      => 'BEGIN of SetAcctLineOption'
1724          ,p_level    => C_LEVEL_PROCEDURE
1725          ,p_module   => l_log_module);
1726 
1727       trace
1728          (p_msg      => 'p_natural_side_code = '||p_natural_side_code||
1729                         ' - p_gl_transfer_mode_code = '||p_gl_transfer_mode_code||
1730                         ' - p_acct_entry_type_code = '||p_acct_entry_type_code||
1731                         ' - p_switch_side_flag = '||p_switch_side_flag||
1732                         ' - p_merge_duplicate_code = '||p_merge_duplicate_code
1733          ,p_level    => C_LEVEL_PROCEDURE
1734          ,p_module   => l_log_module);
1735 END IF;
1736 --
1737 --
1738 -- I THINK WE DONT' NEED THIS IN BULK APPROACH
1739 --
1740 --  SetHdrLineNum(p_balance_type_code => p_acct_entry_type_code);
1741 --
1742   --
1743   g_rec_lines.array_gl_transfer_mode(g_LineNumber)      := p_gl_transfer_mode_code ;
1744   g_rec_lines.array_natural_side_code(g_LineNumber)     := p_natural_side_code     ;
1745   g_rec_lines.array_gain_or_loss_flag(g_LineNumber)     := p_gain_or_loss_flag     ;
1746   g_rec_lines.array_acct_entry_type_code(g_LineNumber)  := p_acct_entry_type_code  ;
1747   g_rec_lines.array_switch_side_flag(g_LineNumber)      := p_switch_side_flag      ;
1748   g_rec_lines.array_merge_duplicate_code(g_LineNumber)  := p_merge_duplicate_code  ;
1749 --
1750 --
1751     l_ae_header_id := g_rec_lines.array_ae_header_id(g_LineNumber);
1752     --
1753 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1754 
1755       trace
1756          (p_msg      => 'return value. = '||TO_CHAR(l_ae_header_id)
1757          ,p_level    => C_LEVEL_PROCEDURE
1758          ,p_module   => l_log_module);
1759 
1760       trace
1761          (p_msg      => 'END of SetAcctLineOption'
1762          ,p_level    => C_LEVEL_PROCEDURE
1763          ,p_module   => l_log_module);
1764 
1765 END IF;
1766 RETURN l_ae_header_id;
1767 EXCEPTION
1768 WHEN xla_exceptions_pkg.application_exception THEN
1769  RAISE;
1770 WHEN OTHERS  THEN
1771    xla_exceptions_pkg.raise_message
1772            (p_location => 'XLA_AE_LINES_PKG.SetAcctLineOption');
1773   --
1774 END SetAcctLineOption;
1775 --
1776 /*======================================================================+
1777 |                                                                       |
1778 | Public Procedure                                                      |
1779 |                                                                       |
1780 |                                                                       |
1781 +======================================================================*/
1782 PROCEDURE SetLineDescription(p_description      IN VARCHAR2
1783                             ,p_ae_header_id     IN NUMBER)
1784 IS
1785 l_log_module         VARCHAR2(240);
1786 BEGIN
1787 --
1788 IF g_log_enabled THEN
1789       l_log_module := C_DEFAULT_MODULE||'.SetLineDescription';
1790 END IF;
1791 --
1792 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1793       trace
1794          (p_msg      => 'BEGIN of SetLineDescription'
1795          ,p_level    => C_LEVEL_PROCEDURE
1796          ,p_module   => l_log_module);
1797 
1798 END IF;
1799 --
1800   g_rec_lines.array_description(g_LineNumber)  := SUBSTR(p_description,1,1996);
1801 --
1802 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1803 
1804       trace
1805          (p_msg      => 'END of SetLineDescription'
1806          ,p_level    => C_LEVEL_PROCEDURE
1807          ,p_module   => l_log_module);
1808 
1809 END IF;
1810 --
1811 EXCEPTION
1812 WHEN xla_exceptions_pkg.application_exception THEN
1813   RAISE;
1814 WHEN OTHERS  THEN
1815    xla_exceptions_pkg.raise_message
1816            (p_location => 'XLA_AE_LINES_PKG.SetLineDescription');
1817   --
1818 END SetLineDescription;
1819 --
1820 --
1821 /*======================================================================+
1822 |                                                                       |
1823 | Public Procedure                                                      |
1824 |                                                                       |
1825 |    set_ccid                                                           |
1826 |                                                                       |
1827 | Caches the transaction and accounting CCIDs in the JE temporary lines |
1828 |                                                                       |
1829 +======================================================================*/
1830 --replace SetCcid
1831 PROCEDURE  set_ccid(
1832   p_code_combination_id      IN NUMBER
1833 , p_value_type_code          IN VARCHAR2
1834 , p_transaction_coa_id       IN NUMBER
1835 , p_accounting_coa_id        IN NUMBER
1836 , p_adr_code                 IN VARCHAR2
1837 , p_adr_type_code            IN VARCHAR2
1838 , p_component_type           IN VARCHAR2
1839 , p_component_code           IN VARCHAR2
1840 , p_component_type_code      IN VARCHAR2
1841 , p_component_appl_id        IN INTEGER
1842 , p_amb_context_code         IN VARCHAR2
1843 , p_side                     IN VARCHAR2
1844 )
1845 IS
1846 l_Idx                BINARY_INTEGER;
1847 null_combination_id  EXCEPTION;
1848 no_sl_coa_mapping    EXCEPTION;
1849 l_log_module         VARCHAR2(240);
1850 BEGIN
1851 --
1852 IF g_log_enabled THEN
1853       l_log_module := C_DEFAULT_MODULE||'.set_ccid';
1854 END IF;
1855 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1856       trace
1857          (p_msg      => 'BEGIN of set_ccid'
1858          ,p_level    => C_LEVEL_PROCEDURE
1859          ,p_module   => l_log_module);
1860 
1861  trace
1862          (p_msg      => ' p_side = '||p_side ||
1863                         ', p_code_combination_id = '||p_code_combination_id
1864          ,p_level    => C_LEVEL_PROCEDURE
1865          ,p_module   => l_log_module);
1866 END IF;
1867 
1868 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1869        trace
1870          (p_msg      => ' p_value_type_code   = '||p_value_type_code ||
1871                         ', p_transaction_coa_id = '|| p_transaction_coa_id||
1872                         ', p_accounting_coa_id = '||p_accounting_coa_id
1873          ,p_level    => C_LEVEL_PROCEDURE
1874          ,p_module   => l_log_module);
1875 
1876        trace
1877          (p_msg      => ' p_adr_code   = '||p_adr_code||
1878                         ', p_adr_type_code = '|| p_adr_type_code
1879          ,p_level    => C_LEVEL_PROCEDURE
1880          ,p_module   => l_log_module);
1881 
1882       trace
1883          (p_msg      => ' p_component_type = '||p_component_type||
1884                         ', p_component_code = '||p_component_code||
1885                         ', p_component_type_code = '||p_component_type_code||
1886                         ', p_component_appl_id = '||p_component_appl_id||
1887                         ', p_amb_context_code = '||p_amb_context_code
1888          ,p_level    => C_LEVEL_STATEMENT
1889          ,p_module   => l_log_module);
1890 
1891 END IF;
1892 
1893 IF p_code_combination_id IS NULL OR p_code_combination_id = -1 THEN  -- 5163338
1894   RAISE null_combination_id;
1895 END IF;
1896 
1897 IF p_value_type_code ='S' AND
1898    ( XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.target_coa_id <>
1899     XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.source_coa_id ) THEN
1900 -- transaction ccid
1901 
1902    IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.sl_coa_mapping_id IS NULL THEN
1903      RAISE no_sl_coa_mapping ;
1904    END IF;
1905 
1906    l_Idx := NVL(g_transaction_accounts.array_ae_header_id.COUNT,0) + 1;
1907    g_transaction_accounts.array_line_num(l_Idx)        := l_Idx ;
1908    g_transaction_accounts.array_ae_header_id(l_Idx)    := g_rec_lines.array_ae_header_id(g_LineNumber);
1909    g_transaction_accounts.array_temp_line_num(l_Idx)   := g_rec_lines.array_line_num(g_LineNumber);
1910    g_transaction_accounts.array_code_combination_id (l_Idx)   := p_code_combination_id;
1911    g_transaction_accounts.array_segment(l_Idx)                := NULL;
1912    g_transaction_accounts.array_from_segment_code(l_Idx)      := NULL;
1913    g_transaction_accounts.array_to_segment_code(l_Idx)        := NULL;
1914    g_transaction_accounts.array_processing_status_code(l_Idx) := C_MAP_CCID;
1915    g_transaction_accounts.array_side_code(l_Idx)              := p_side;
1916 
1917 
1918   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1919        trace
1920          (p_msg      => ' Transaction ccid  = '||p_code_combination_id
1921          ,p_level    => C_LEVEL_PROCEDURE
1922          ,p_module   => l_log_module);
1923   END IF;
1924 
1925 ELSE
1926 -- accounting ccid
1927 
1928   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1929        trace
1930          (p_msg      => ' Accounting ccid   = '||p_code_combination_id
1931          ,p_level    => C_LEVEL_PROCEDURE
1932          ,p_module   => l_log_module);
1933   END IF;
1934 
1935   CASE p_side
1936 
1937    WHEN 'ALL' THEN
1938       g_rec_lines.array_ccid(g_LineNumber)     := p_code_combination_id ;
1939       g_rec_lines.alt_array_ccid(g_LineNumber) := p_code_combination_id ;
1940 
1941       CASE nvl(g_rec_lines.array_ccid_flag(g_LineNumber),C_INVALID)
1942         WHEN C_INVALID    THEN g_rec_lines.array_ccid_flag(g_LineNumber) := C_CREATED;
1943         WHEN C_PROCESSING THEN g_rec_lines.array_ccid_flag(g_LineNumber) := C_NOT_PROCESSED;
1944         ELSE null;
1945       END CASE;
1946 
1947       CASE nvl(g_rec_lines.alt_array_ccid_flag(g_LineNumber),C_INVALID)
1948         WHEN C_INVALID    THEN g_rec_lines.alt_array_ccid_flag(g_LineNumber) := C_CREATED;
1949         WHEN C_PROCESSING THEN g_rec_lines.alt_array_ccid_flag(g_LineNumber) := C_NOT_PROCESSED;
1950         ELSE null;
1951       END CASE;
1952 
1953    WHEN 'NA'     THEN
1954       g_rec_lines.array_ccid(g_LineNumber) := p_code_combination_id ;
1955 
1956       CASE nvl(g_rec_lines.array_ccid_flag(g_LineNumber),C_INVALID)
1957         WHEN C_INVALID    THEN g_rec_lines.array_ccid_flag(g_LineNumber) := C_CREATED;
1958         WHEN C_PROCESSING THEN g_rec_lines.array_ccid_flag(g_LineNumber) := C_NOT_PROCESSED;
1959         ELSE null;
1960       END CASE;
1961 
1962    WHEN 'CREDIT' THEN
1963       g_rec_lines.array_ccid(g_LineNumber) := p_code_combination_id ;
1964 
1965       CASE nvl(g_rec_lines.array_ccid_flag(g_LineNumber),C_INVALID)
1966         WHEN C_INVALID    THEN g_rec_lines.array_ccid_flag(g_LineNumber) := C_CREATED;
1967         WHEN C_PROCESSING THEN g_rec_lines.array_ccid_flag(g_LineNumber) := C_NOT_PROCESSED;
1968         ELSE null;
1969       END CASE;
1970 
1971    WHEN 'DEBIT'  THEN
1972       g_rec_lines.alt_array_ccid(g_LineNumber) := p_code_combination_id ;
1973 
1974       CASE nvl(g_rec_lines.alt_array_ccid_flag(g_LineNumber),C_INVALID)
1975         WHEN C_INVALID    THEN g_rec_lines.alt_array_ccid_flag(g_LineNumber) := C_CREATED;
1976         WHEN C_PROCESSING THEN g_rec_lines.alt_array_ccid_flag(g_LineNumber) := C_NOT_PROCESSED;
1977         ELSE null;
1978       END CASE;
1979 
1980   ELSE
1981      g_rec_lines.array_ccid(g_LineNumber) := p_code_combination_id ;
1982 
1983       CASE nvl(g_rec_lines.array_ccid_flag(g_LineNumber),C_INVALID)
1984         WHEN C_INVALID    THEN g_rec_lines.array_ccid_flag(g_LineNumber) := C_CREATED;
1985         WHEN C_PROCESSING THEN g_rec_lines.array_ccid_flag(g_LineNumber) := C_NOT_PROCESSED;
1986         ELSE null;
1987       END CASE;
1988   END CASE;
1989 
1990 END IF;
1991 
1992 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1993       trace
1994          (p_msg      => 'End of set_ccid'
1995          ,p_level    => C_LEVEL_PROCEDURE
1996          ,p_module   => l_log_module);
1997 END IF;
1998 EXCEPTION
1999 WHEN null_combination_id THEN
2000 
2001   CASE p_side
2002    WHEN 'ALL' THEN
2003       g_rec_lines.array_ccid(g_LineNumber)     := -1;
2004       g_rec_lines.alt_array_ccid(g_LineNumber) := -1;
2005       g_rec_lines.array_ccid_flag(g_LineNumber)    := C_INVALID;
2006       g_rec_lines.alt_array_ccid_flag(g_LineNumber):= C_INVALID;
2007    WHEN 'NA'     THEN
2008       g_rec_lines.array_ccid(g_LineNumber) := -1;
2009       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2010    WHEN 'CREDIT' THEN
2011       g_rec_lines.array_ccid(g_LineNumber) := -1;
2012       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2013    WHEN 'DEBIT'  THEN
2014       g_rec_lines.alt_array_ccid(g_LineNumber) := -1;
2015       g_rec_lines.alt_array_ccid_flag(g_LineNumber):= C_INVALID;
2016    ELSE
2017       g_rec_lines.array_ccid(g_LineNumber) := -1;
2018       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2019   END CASE;
2020 
2021   XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
2022   xla_accounting_err_pkg.build_message
2023                  (p_appli_s_name            => 'XLA'
2024                  ,p_msg_name                => 'XLA_AP_CCID_NULL'
2025                  ,p_token_1                 => 'COMPONENT_NAME'
2026                  ,p_value_1                 => XLA_AE_SOURCES_PKG.GetComponentName (
2027                                                                  'AMB_ADR'
2028                                                                 ,p_adr_code
2029                                                                 ,p_adr_type_code
2030                                                                 ,p_component_appl_id
2031                                                                 ,p_amb_context_code
2032                                                                )
2033                  ,p_token_2                 => 'OWNER'
2034                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2035                                                                  'XLA_OWNER_TYPE'
2036                                                                 ,p_component_type_code
2037                                                                 )
2038                  ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2039                  ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2040                  ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2041                  ,p_ae_header_id            => NULL
2042                 );
2043 
2044   IF (C_LEVEL_ERROR >= g_log_level) THEN
2045              trace
2046                   (p_msg      => 'ERROR: XLA_AP_CCID_NULL'
2047                   ,p_level    => C_LEVEL_ERROR
2048                   ,p_module   => l_log_module);
2049   END IF;
2050 WHEN no_sl_coa_mapping THEN
2051 
2052   CASE p_side
2053    WHEN 'ALL' THEN
2054       g_rec_lines.array_ccid(g_LineNumber)     := -1;
2055       g_rec_lines.alt_array_ccid(g_LineNumber) := -1;
2056       g_rec_lines.array_ccid_flag(g_LineNumber)    := C_INVALID;
2057       g_rec_lines.alt_array_ccid_flag(g_LineNumber):= C_INVALID;
2058    WHEN 'NA'     THEN
2059       g_rec_lines.array_ccid(g_LineNumber) := -1;
2060       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2061    WHEN 'CREDIT' THEN
2062       g_rec_lines.array_ccid(g_LineNumber) := -1;
2063       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2064    WHEN 'DEBIT'  THEN
2065       g_rec_lines.alt_array_ccid(g_LineNumber) := -1;
2066       g_rec_lines.alt_array_ccid_flag(g_LineNumber):= C_INVALID;
2067    ELSE
2068       g_rec_lines.array_ccid(g_LineNumber) := -1;
2069       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2070   END CASE;
2071 
2072   XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
2073 
2074   xla_accounting_err_pkg.build_message
2075                  (p_appli_s_name            => 'XLA'
2076                  ,p_msg_name                => 'XLA_AP_NO_SL_COA_MAPPING'
2077                  ,p_token_1                 => 'SEGMENT_RULE_NAME'
2078                  ,p_value_1                 => XLA_AE_SOURCES_PKG.GetComponentName (
2079                                                                  'AMB_ADR'
2080                                                                 ,p_adr_code
2081                                                                 ,p_adr_type_code
2082                                                                 ,p_component_appl_id
2083                                                                 ,p_amb_context_code
2084                                                                )
2085                  ,p_token_2                 => 'OWNER'
2086                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2087                                                                  'XLA_OWNER_TYPE'
2088                                                                 ,p_adr_type_code
2089                                                                 )
2090                  ,p_token_3                 => 'LEDGER_NAME'
2091                  ,p_value_3                 => xla_accounting_cache_pkg.GetValueChar
2092                                              (
2093                                              p_source_code => 'XLA_LEDGER_NAME'
2094                                            , p_target_ledger_id  =>
2095                                              XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2096                                              )
2097                  ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2098                  ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2099                  ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2100                  ,p_ae_header_id            => NULL
2101                 );
2102 
2103   IF (C_LEVEL_ERROR >= g_log_level) THEN
2104              trace
2105                   (p_msg      => 'ERROR: XLA_AP_NO_SL_COA_MAPPING'
2106                   ,p_level    => C_LEVEL_ERROR
2107                   ,p_module   => l_log_module);
2108   END IF;
2109 WHEN xla_exceptions_pkg.application_exception THEN
2110   IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2111        trace
2112            (p_msg      => 'Error. = '||sqlerrm
2113            ,p_level    => C_LEVEL_PROCEDURE
2114            ,p_module   => l_log_module);
2115   END IF;
2116   RAISE;
2117 WHEN OTHERS  THEN
2118    IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2119        trace
2120            (p_msg      => 'Error. = '||sqlerrm
2121            ,p_level    => C_LEVEL_PROCEDURE
2122            ,p_module   => l_log_module);
2123    END IF;
2124    xla_exceptions_pkg.raise_message
2125            (p_location => 'XLA_AE_LINES_PKG.set_ccid');
2126 END set_ccid;
2127 
2128 /*=========================================================================+
2129 |                                                                          |
2130 | Public Procedure                                                         |
2131 |                                                                          |
2132 |    set_segment                                                           |
2133 |                                                                          |
2134 | Caches the transaction and accounting segments in the JE temporary lines |
2135 |                                                                          |
2136 +=========================================================================*/
2137 
2138 PROCEDURE set_segment(
2139   p_to_segment_code         IN VARCHAR2
2140 , p_segment_value           IN VARCHAR2
2141 , p_from_segment_code       IN VARCHAR2
2142 , p_from_combination_id     IN NUMBER
2143 , p_value_type_code         IN VARCHAR2
2144 , p_transaction_coa_id      IN NUMBER
2145 , p_accounting_coa_id       IN NUMBER
2146 , p_flexfield_segment_code  IN VARCHAR2
2147 , p_flex_value_set_id       IN NUMBER
2148 , p_adr_code                IN VARCHAR2
2149 , p_adr_type_code           IN VARCHAR2
2150 , p_component_type          IN VARCHAR2
2151 , p_component_code          IN VARCHAR2
2152 , p_component_type_code     IN VARCHAR2
2153 , p_component_appl_id       IN INTEGER
2154 , p_amb_context_code        IN VARCHAR2
2155 , p_entity_code             IN VARCHAR2
2156 , p_event_class_code        IN VARCHAR2
2157 , p_side                    IN VARCHAR2
2158 )
2159 IS
2160 l_Idx                     BINARY_INTEGER;
2161 l_accounting_values       BOOLEAN;
2162 l_to_segment_code         VARCHAR2(30);
2163 l_from_segment_code       VARCHAR2(30);
2164 l_segment_value           VARCHAR2(30);
2165 l_coa_name                VARCHAR2(240);
2166 invalid_segment_code      EXCEPTION;
2167 invalid_segment_qualifier EXCEPTION;
2168 null_segment_value        EXCEPTION;
2169 no_sl_coa_mapping         EXCEPTION;
2170 l_log_module              VARCHAR2(240);
2171 BEGIN
2172 IF g_log_enabled THEN
2173       l_log_module := C_DEFAULT_MODULE||'.set_segment';
2174 END IF;
2175 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2176       trace
2177          (p_msg      => 'BEGIN of set_segment'
2178          ,p_level    => C_LEVEL_PROCEDURE
2179          ,p_module   => l_log_module);
2180   trace
2181          (p_msg      => 'p_to_segment_code = '||p_to_segment_code ||
2182                         ', p_segment_value = '||p_segment_value||
2183                         ',p_side ='||p_side
2184          ,p_level    => C_LEVEL_PROCEDURE
2185          ,p_module   => l_log_module);
2186 
2187 END IF;
2188 
2189 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2190      trace
2191          (p_msg      => 'p_from_segment_code = '||p_from_segment_code ||
2192                         ', p_from_combination_id   = '||p_from_combination_id ||
2193                         ', p_value_type_code   = '||p_value_type_code
2194          ,p_level    => C_LEVEL_PROCEDURE
2195          ,p_module   => l_log_module);
2196 
2197      trace
2198          (p_msg      => ' p_adr_code   = '||p_adr_code||
2199                         ', p_adr_type_code = '|| p_adr_type_code
2200          ,p_level    => C_LEVEL_PROCEDURE
2201          ,p_module   => l_log_module);
2202 
2203      trace
2204          (p_msg      => '  p_flexfield_segment_code = '||p_flexfield_segment_code ||
2205                         ', p_flex_value_set_id   = '||p_flex_value_set_id ||
2206                         ', p_transaction_coa_id = '|| p_transaction_coa_id||
2207                         ', p_accounting_coa_id = '||p_accounting_coa_id
2208          ,p_level    => C_LEVEL_PROCEDURE
2209          ,p_module   => l_log_module);
2210     trace
2211          (p_msg      => ' p_component_type = '||p_component_type||
2212                         ', p_component_code = '||p_component_code||
2213                         ', p_component_type_code = '||p_component_type_code||
2214                         ', p_component_appl_id = '||p_component_appl_id||
2215                         ', p_amb_context_code = '||p_amb_context_code
2216          ,p_level    => C_LEVEL_STATEMENT
2217          ,p_module   => l_log_module);
2218 END IF;
2219 
2220 
2221 l_segment_value       := p_segment_value;
2222 l_from_segment_code   := p_from_segment_code;
2223 l_to_segment_code     := p_to_segment_code;
2224 l_accounting_values   := TRUE;
2225 
2226 
2227 IF l_from_segment_code IS NOT NULL AND l_from_segment_code NOT LIKE 'SEGMENT%' THEN
2228 
2229     l_from_segment_code   := xla_ae_code_combination_pkg.get_segment_code(
2230        p_flex_application_id    => 101
2231       ,p_application_short_name =>  'SQLGL'
2232       ,p_id_flex_code           => 'GL#'
2233       ,p_id_flex_num            => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.source_coa_id
2234       ,p_segment_qualifier      => l_from_segment_code
2235       ,p_component_type         => p_component_type
2236       ,p_component_code         => p_component_code
2237       ,p_component_type_code    => p_component_type_code
2238       ,p_component_appl_id      => p_component_appl_id
2239       ,p_amb_context_code       => p_amb_context_code
2240       ,p_entity_code            => p_entity_code
2241       ,p_event_class_code       => p_event_class_code
2242                         );
2243 END IF;
2244 
2245 IF l_to_segment_code IS NOT NULL AND l_to_segment_code NOT LIKE 'SEGMENT%' THEN
2246 
2247     l_to_segment_code     := xla_ae_code_combination_pkg.get_segment_code(
2248        p_flex_application_id    => 101
2249       ,p_application_short_name =>  'SQLGL'
2250       ,p_id_flex_code           => 'GL#'
2251       ,p_id_flex_num            => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.target_coa_id
2252       ,p_segment_qualifier      => l_to_segment_code
2253       ,p_component_type         => p_component_type
2254       ,p_component_code         => p_component_code
2255       ,p_component_type_code    => p_component_type_code
2256       ,p_component_appl_id      => p_component_appl_id
2257       ,p_amb_context_code       => p_amb_context_code
2258       ,p_entity_code            => p_entity_code
2259       ,p_event_class_code       => p_event_class_code
2260                         );
2261 END IF;
2262 
2263 IF l_to_segment_code IS NULL THEN
2264        RAISE invalid_segment_code;
2265 END IF;
2266 
2267 
2268 IF ( XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.target_coa_id <>
2269     XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.source_coa_id ) AND
2270     p_accounting_coa_id                                   IS NULL AND
2271     p_value_type_code ='S'                                        AND
2272     p_from_combination_id                                 IS NULL AND
2273     p_flexfield_segment_code                          IS NOT NULL THEN
2274     -- segment qualifier, secondary ledger , not value set
2275 
2276     IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.sl_coa_mapping_id IS NULL THEN
2277       RAISE no_sl_coa_mapping ;
2278     END IF;
2279 
2280     IF p_segment_value IS NULL THEN
2281        RAISE null_segment_value;
2282     END IF;
2283 
2284     IF nvl(p_flexfield_segment_code ,'X') NOT IN ('GL_BALANCING',
2285                                          'GL_ACCOUNT'  ,
2286                                          'GL_INTERCOMPANY',
2287                                          'GL_MANAGEMENT',
2288                                          'FA_COST_CTR'
2289                                          ) THEN
2290         RAISE invalid_segment_qualifier;
2291     END IF;
2292 
2293     l_Idx := NVL(g_transaction_accounts.array_ae_header_id.COUNT,0)+1;
2294     g_transaction_accounts.array_line_num(l_Idx)        := l_Idx ;
2295     g_transaction_accounts.array_ae_header_id(l_Idx)    := g_rec_lines.array_ae_header_id(g_LineNumber);
2296     g_transaction_accounts.array_temp_line_num(l_Idx)        := g_rec_lines.array_line_num(g_LineNumber);
2297     g_transaction_accounts.array_code_combination_id(l_Idx)    := NULL;
2298     g_transaction_accounts.array_segment (l_Idx)               := p_segment_value;
2299     g_transaction_accounts.array_from_segment_code (l_Idx)     := p_flexfield_segment_code;
2300     g_transaction_accounts.array_to_segment_code(l_Idx)        := l_to_segment_code;
2301     g_transaction_accounts.array_processing_status_code(l_Idx) := C_MAP_QUALIFIER;
2302     g_transaction_accounts.array_side_code(l_Idx)              := p_side;
2303 
2304     l_accounting_values := FALSE;
2305 
2306     IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2307        trace
2308          (p_msg      => ' Transaction seg qualifier  = '||p_segment_value
2309          ,p_level    => C_LEVEL_PROCEDURE
2310          ,p_module   => l_log_module);
2311     END IF;
2312 
2313 ELSIF ( XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.target_coa_id <>
2314     XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.source_coa_id ) AND
2315     p_value_type_code ='S'                                        AND
2316     p_from_combination_id                            IS NOT NULL THEN
2317     --transaction segment, secondary ledger
2318 
2319     IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.sl_coa_mapping_id IS NULL THEN
2320       RAISE no_sl_coa_mapping ;
2321     END IF;
2322 
2323     l_Idx := NVL(g_transaction_accounts.array_ae_header_id.COUNT,0) + 1;
2324     g_transaction_accounts.array_line_num(l_Idx)        := l_Idx ;
2325     g_transaction_accounts.array_ae_header_id(l_Idx)    := g_rec_lines.array_ae_header_id(g_LineNumber);
2326     g_transaction_accounts.array_temp_line_num(l_Idx)        := g_rec_lines.array_line_num(g_LineNumber);
2327     g_transaction_accounts.array_code_combination_id(l_Idx)    := p_from_combination_id;
2328     g_transaction_accounts.array_segment (l_Idx)               := NULL;
2329     g_transaction_accounts.array_from_segment_code (l_Idx)     := l_from_segment_code;
2330     g_transaction_accounts.array_to_segment_code (l_Idx)       := l_to_segment_code;
2331     g_transaction_accounts.array_processing_status_code(l_Idx) := C_MAP_SEGMENT;
2332     g_transaction_accounts.array_side_code(l_Idx)              := p_side;
2333 
2334     l_accounting_values := FALSE;
2335 
2336    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2337        trace
2338          (p_msg      => ' get seg '||l_from_segment_code||'from ccid  = '||p_from_combination_id
2339          ,p_level    => C_LEVEL_PROCEDURE
2340          ,p_module   => l_log_module);
2341     END IF;
2342 
2343 ELSIF ( XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.target_coa_id =
2344     XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.source_coa_id )     AND
2345 --    p_accounting_coa_id                                   IS NOT NULL AND -- bug 4304098
2346     p_value_type_code ='S'                                            AND
2347     p_from_combination_id                                IS NOT NULL THEN
2348 
2349     -- primary ledger
2350     l_segment_value := xla_ae_code_combination_pkg.get_flex_segment_value(
2351            p_combination_id         => p_from_combination_id
2352           ,p_segment_code           => l_from_segment_code
2353           ,p_id_flex_code           => 'GL#'
2354           ,p_flex_application_id    => 101
2355           ,p_application_short_name => 'SQLGL'
2356           ,p_component_type         => p_component_type
2357           ,p_component_code         => p_component_code
2358           ,p_component_type_code    => p_component_type_code
2359           ,p_component_appl_id      => p_component_appl_id
2360           ,p_amb_context_code       => p_amb_context_code
2361           ,p_entity_code            => p_entity_code
2362           ,p_event_class_code       => p_event_class_code
2363           ,p_ae_header_id           => NULL
2364            );
2365 
2366    l_accounting_values := TRUE;
2367 
2368 END IF;
2369 
2370 IF l_accounting_values THEN
2371 
2372 IF p_side = 'CREDIT' or p_side = 'ALL' or p_side = 'NA' OR p_side is null THEN
2373 
2374  CASE NVL(g_rec_lines.array_ccid_flag(g_LineNumber),C_INVALID)
2375    WHEN C_CREATED       THEN g_rec_lines.array_ccid_flag(g_LineNumber)   := C_NOT_PROCESSED;
2376    WHEN C_INVALID       THEN
2377          IF g_rec_lines.array_ccid(g_LineNumber) IS NULL THEN
2378               g_rec_lines.array_ccid_flag(g_LineNumber)   := C_PROCESSING;
2379          END IF;
2380    ELSE null;
2381   END CASE;
2382 
2383  CASE  l_to_segment_code
2384   WHEN  'SEGMENT1'   THEN g_rec_lines.array_segment1(g_LineNumber)  := l_segment_value;
2385   WHEN  'SEGMENT2'   THEN g_rec_lines.array_segment2(g_LineNumber)  := l_segment_value;
2386   WHEN  'SEGMENT3'   THEN g_rec_lines.array_segment3(g_LineNumber)  := l_segment_value;
2387   WHEN  'SEGMENT4'   THEN g_rec_lines.array_segment4(g_LineNumber)  := l_segment_value;
2388   WHEN  'SEGMENT5'   THEN g_rec_lines.array_segment5(g_LineNumber)  := l_segment_value;
2389   WHEN  'SEGMENT6'   THEN g_rec_lines.array_segment6(g_LineNumber)  := l_segment_value;
2390   WHEN  'SEGMENT7'   THEN g_rec_lines.array_segment7(g_LineNumber)  := l_segment_value;
2391   WHEN  'SEGMENT8'   THEN g_rec_lines.array_segment8(g_LineNumber)  := l_segment_value;
2392   WHEN  'SEGMENT9'   THEN g_rec_lines.array_segment9(g_LineNumber)  := l_segment_value;
2393   WHEN  'SEGMENT10'  THEN g_rec_lines.array_segment10(g_LineNumber) := l_segment_value;
2394   WHEN  'SEGMENT11'  THEN g_rec_lines.array_segment11(g_LineNumber) := l_segment_value;
2395   WHEN  'SEGMENT12'  THEN g_rec_lines.array_segment12(g_LineNumber) := l_segment_value;
2396   WHEN  'SEGMENT13'  THEN g_rec_lines.array_segment13(g_LineNumber) := l_segment_value;
2397   WHEN  'SEGMENT14'  THEN g_rec_lines.array_segment14(g_LineNumber) := l_segment_value;
2398   WHEN  'SEGMENT15'  THEN g_rec_lines.array_segment15(g_LineNumber) := l_segment_value;
2399   WHEN  'SEGMENT16'  THEN g_rec_lines.array_segment16(g_LineNumber) := l_segment_value;
2400   WHEN  'SEGMENT17'  THEN g_rec_lines.array_segment17(g_LineNumber) := l_segment_value;
2401   WHEN  'SEGMENT18'  THEN g_rec_lines.array_segment18(g_LineNumber) := l_segment_value;
2402   WHEN  'SEGMENT19'  THEN g_rec_lines.array_segment19(g_LineNumber) := l_segment_value;
2403   WHEN  'SEGMENT20'  THEN g_rec_lines.array_segment20(g_LineNumber) := l_segment_value;
2404   WHEN  'SEGMENT21'  THEN g_rec_lines.array_segment21(g_LineNumber) := l_segment_value;
2405   WHEN  'SEGMENT22'  THEN g_rec_lines.array_segment22(g_LineNumber) := l_segment_value;
2406   WHEN  'SEGMENT23'  THEN g_rec_lines.array_segment23(g_LineNumber) := l_segment_value;
2407   WHEN  'SEGMENT24'  THEN g_rec_lines.array_segment24(g_LineNumber) := l_segment_value;
2408   WHEN  'SEGMENT25'  THEN g_rec_lines.array_segment25(g_LineNumber) := l_segment_value;
2409   WHEN  'SEGMENT26'  THEN g_rec_lines.array_segment26(g_LineNumber) := l_segment_value;
2410   WHEN  'SEGMENT27'  THEN g_rec_lines.array_segment27(g_LineNumber) := l_segment_value;
2411   WHEN  'SEGMENT28'  THEN g_rec_lines.array_segment28(g_LineNumber) := l_segment_value;
2412   WHEN  'SEGMENT29'  THEN g_rec_lines.array_segment29(g_LineNumber) := l_segment_value;
2413   WHEN  'SEGMENT30'  THEN g_rec_lines.array_segment30(g_LineNumber) := l_segment_value;
2414   ELSE
2415      RAISE invalid_segment_code;
2416  END CASE;
2417 
2418 END IF;
2419 
2420 IF p_side = 'DEBIT' or p_side = 'ALL' THEN
2421 
2422  CASE NVL(g_rec_lines.alt_array_ccid_flag(g_LineNumber),C_INVALID)
2423    WHEN C_CREATED       THEN g_rec_lines.alt_array_ccid_flag(g_LineNumber)   := C_NOT_PROCESSED;
2424    WHEN C_INVALID       THEN
2425          IF g_rec_lines.alt_array_ccid(g_LineNumber) IS NULL THEN
2426               g_rec_lines.alt_array_ccid_flag(g_LineNumber)   := C_PROCESSING;
2427          END IF;
2428    ELSE null;
2429   END CASE;
2430 
2431  CASE  l_to_segment_code
2432   WHEN  'SEGMENT1'   THEN g_rec_lines.alt_array_segment1(g_LineNumber)  := l_segment_value;
2433   WHEN  'SEGMENT2'   THEN g_rec_lines.alt_array_segment2(g_LineNumber)  := l_segment_value;
2434   WHEN  'SEGMENT3'   THEN g_rec_lines.alt_array_segment3(g_LineNumber)  := l_segment_value;
2435   WHEN  'SEGMENT4'   THEN g_rec_lines.alt_array_segment4(g_LineNumber)  := l_segment_value;
2436   WHEN  'SEGMENT5'   THEN g_rec_lines.alt_array_segment5(g_LineNumber)  := l_segment_value;
2437   WHEN  'SEGMENT6'   THEN g_rec_lines.alt_array_segment6(g_LineNumber)  := l_segment_value;
2438   WHEN  'SEGMENT7'   THEN g_rec_lines.alt_array_segment7(g_LineNumber)  := l_segment_value;
2439   WHEN  'SEGMENT8'   THEN g_rec_lines.alt_array_segment8(g_LineNumber)  := l_segment_value;
2440   WHEN  'SEGMENT9'   THEN g_rec_lines.alt_array_segment9(g_LineNumber)  := l_segment_value;
2441   WHEN  'SEGMENT10'  THEN g_rec_lines.alt_array_segment10(g_LineNumber) := l_segment_value;
2442   WHEN  'SEGMENT11'  THEN g_rec_lines.alt_array_segment11(g_LineNumber) := l_segment_value;
2443   WHEN  'SEGMENT12'  THEN g_rec_lines.alt_array_segment12(g_LineNumber) := l_segment_value;
2444   WHEN  'SEGMENT13'  THEN g_rec_lines.alt_array_segment13(g_LineNumber) := l_segment_value;
2445   WHEN  'SEGMENT14'  THEN g_rec_lines.alt_array_segment14(g_LineNumber) := l_segment_value;
2446   WHEN  'SEGMENT15'  THEN g_rec_lines.alt_array_segment15(g_LineNumber) := l_segment_value;
2447   WHEN  'SEGMENT16'  THEN g_rec_lines.alt_array_segment16(g_LineNumber) := l_segment_value;
2448   WHEN  'SEGMENT17'  THEN g_rec_lines.alt_array_segment17(g_LineNumber) := l_segment_value;
2449   WHEN  'SEGMENT18'  THEN g_rec_lines.alt_array_segment18(g_LineNumber) := l_segment_value;
2450   WHEN  'SEGMENT19'  THEN g_rec_lines.alt_array_segment19(g_LineNumber) := l_segment_value;
2451   WHEN  'SEGMENT20'  THEN g_rec_lines.alt_array_segment20(g_LineNumber) := l_segment_value;
2452   WHEN  'SEGMENT21'  THEN g_rec_lines.alt_array_segment21(g_LineNumber) := l_segment_value;
2453   WHEN  'SEGMENT22'  THEN g_rec_lines.alt_array_segment22(g_LineNumber) := l_segment_value;
2454   WHEN  'SEGMENT23'  THEN g_rec_lines.alt_array_segment23(g_LineNumber) := l_segment_value;
2455   WHEN  'SEGMENT24'  THEN g_rec_lines.alt_array_segment24(g_LineNumber) := l_segment_value;
2456   WHEN  'SEGMENT25'  THEN g_rec_lines.alt_array_segment25(g_LineNumber) := l_segment_value;
2457   WHEN  'SEGMENT26'  THEN g_rec_lines.alt_array_segment26(g_LineNumber) := l_segment_value;
2458   WHEN  'SEGMENT27'  THEN g_rec_lines.alt_array_segment27(g_LineNumber) := l_segment_value;
2459   WHEN  'SEGMENT28'  THEN g_rec_lines.alt_array_segment28(g_LineNumber) := l_segment_value;
2460   WHEN  'SEGMENT29'  THEN g_rec_lines.alt_array_segment29(g_LineNumber) := l_segment_value;
2461   WHEN  'SEGMENT30'  THEN g_rec_lines.alt_array_segment30(g_LineNumber) := l_segment_value;
2462   ELSE
2463       RAISE invalid_segment_code;
2464  END CASE;
2465 
2466 END IF;
2467 
2468     IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2469        trace
2470          (p_msg      => ' Accounting seg = '||l_segment_value
2471          ,p_level    => C_LEVEL_PROCEDURE
2472          ,p_module   => l_log_module);
2473     END IF;
2474 
2475 END IF;
2476 
2477 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2478      trace
2479          (p_msg      => 'l_to_segment_code = '||l_to_segment_code ||
2480                         ', l_segment_value   = '||l_segment_value
2481          ,p_level    => C_LEVEL_PROCEDURE
2482          ,p_module   => l_log_module);
2483 END IF;
2484 
2485 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2486       trace
2487          (p_msg      => 'END of set_segment'
2488          ,p_level    => C_LEVEL_PROCEDURE
2489          ,p_module   => l_log_module);
2490 END IF;
2491 EXCEPTION
2492 WHEN no_sl_coa_mapping THEN
2493 
2494   CASE p_side
2495    WHEN 'ALL' THEN
2496       g_rec_lines.array_ccid(g_LineNumber)     := -1;
2497       g_rec_lines.alt_array_ccid(g_LineNumber) := -1;
2498       g_rec_lines.array_ccid_flag(g_LineNumber)    := C_INVALID;
2499       g_rec_lines.alt_array_ccid_flag(g_LineNumber):= C_INVALID;
2500    WHEN 'NA'     THEN
2501       g_rec_lines.array_ccid(g_LineNumber) := -1;
2502       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2503    WHEN 'CREDIT' THEN
2504       g_rec_lines.array_ccid(g_LineNumber) := -1;
2505       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2506    WHEN 'DEBIT'  THEN
2507       g_rec_lines.alt_array_ccid(g_LineNumber) := -1;
2508       g_rec_lines.alt_array_ccid_flag(g_LineNumber):= C_INVALID;
2509    ELSE
2510       g_rec_lines.array_ccid(g_LineNumber) := -1;
2511       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2512   END CASE;
2513 
2514   XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
2515 
2516   xla_accounting_err_pkg.build_message
2517                  (p_appli_s_name            => 'XLA'
2518                  ,p_msg_name                => 'XLA_AP_NO_SL_COA_MAPPING'
2519                  ,p_token_1                 => 'SEGMENT_RULE_NAME'
2520                  ,p_value_1                 => XLA_AE_SOURCES_PKG.GetComponentName (
2521                                                                  'AMB_ADR'
2522                                                                 ,p_adr_code
2523                                                                 ,p_adr_type_code
2524                                                                 ,p_component_appl_id
2525                                                                 ,p_amb_context_code
2526                                                                )
2527                  ,p_token_2                 => 'OWNER'
2528                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2529                                                                  'XLA_OWNER_TYPE'
2530                                                                 ,p_adr_type_code
2531                                                                 )
2532                  ,p_token_3                 => 'LEDGER_NAME'
2533                  ,p_value_3                 => xla_accounting_cache_pkg.GetValueChar
2534                                              (
2535                                              p_source_code => 'XLA_LEDGER_NAME'
2536                                            , p_target_ledger_id  =>
2537                                              XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2538                                              )
2539                  ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2540                  ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2541                  ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2542                  ,p_ae_header_id            => NULL
2543                 );
2544 
2545   IF (C_LEVEL_ERROR >= g_log_level) THEN
2546              trace
2547                   (p_msg      => 'ERROR: XLA_AP_NO_SL_COA_MAPPING'
2548                   ,p_level    => C_LEVEL_ERROR
2549                   ,p_module   => l_log_module);
2550   END IF;
2551 
2552 WHEN invalid_segment_code THEN
2553 
2554    CASE p_side
2555    WHEN 'ALL' THEN
2556       g_rec_lines.array_ccid(g_LineNumber)     := -1;
2557       g_rec_lines.alt_array_ccid(g_LineNumber) := -1;
2558       g_rec_lines.array_ccid_flag(g_LineNumber)    := C_INVALID;
2559       g_rec_lines.alt_array_ccid_flag(g_LineNumber):= C_INVALID;
2560    WHEN 'NA'     THEN
2561       g_rec_lines.array_ccid(g_LineNumber) := -1;
2562       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2563    WHEN 'CREDIT' THEN
2564       g_rec_lines.array_ccid(g_LineNumber) := -1;
2565       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2566    WHEN 'DEBIT'  THEN
2567       g_rec_lines.alt_array_ccid(g_LineNumber) := -1;
2568       g_rec_lines.alt_array_ccid_flag(g_LineNumber):= C_INVALID;
2569    ELSE
2570       g_rec_lines.array_ccid(g_LineNumber) := -1;
2571       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2572    END CASE;
2573 
2574    XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
2575 
2576    l_coa_name := xla_accounting_cache_pkg.GetValueChar
2577      (
2578       p_source_code       => 'XLA_COA_NAME'
2579     , p_target_ledger_id  => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2580      );
2581 
2582    xla_accounting_err_pkg.build_message
2583                       (p_appli_s_name            => 'XLA'
2584                       ,p_msg_name                => 'XLA_AP_INVALID_SEGMENT'
2585                       ,p_token_1                 => 'COMPONENT_TYPE'
2586                       ,p_value_1                 => xla_lookups_pkg.get_meaning(
2587                                                             'XLA_AMB_COMPONENT_TYPE'
2588                                                            , p_component_type
2589                                                             )
2590                       ,p_token_2                 => 'COMPONENT_NAME'
2591                       ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
2592                                                                  p_component_type
2593                                                                 ,p_component_code
2594                                                                 ,p_component_type_code
2595                                                                 ,p_component_appl_id
2596                                                                 ,p_amb_context_code
2597                                                                 ,p_entity_code
2598                                                                 ,p_event_class_code
2599                                                                )
2600                       ,p_token_3                 => 'OWNER'
2601                       ,p_value_3                 => xla_lookups_pkg.get_meaning(
2602                                                                  'XLA_OWNER_TYPE'
2603                                                                 ,p_component_type_code
2604                                                                 )
2605                       ,p_token_4                 => 'QUALIFIER_NAME'
2606                       ,p_value_4                 => xla_lookups_pkg.get_meaning(
2607                                                         p_lookup_type    => 'XLA_FLEXFIELD_SEGMENTS_QUAL'
2608                                                       , p_lookup_code    => p_to_segment_code
2609                                                       )
2610                       ,p_token_5                 => 'ACCOUNTING_COA'
2611                       ,p_value_5                 => l_coa_name
2612                       ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2613                       ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2614                       ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2615                       ,p_ae_header_id            => NULL -- p_ae_header_id
2616                 );
2617 
2618      IF (C_LEVEL_ERROR >= g_log_level) THEN
2619              trace
2620                   (p_msg      => 'ERROR: XLA_AP_INVALID_SEGMENT'
2621                   ,p_level    => C_LEVEL_ERROR
2622                   ,p_module   => l_log_module);
2623      END IF;
2624 
2625 WHEN null_segment_value THEN
2626 
2627    CASE p_side
2628    WHEN 'ALL' THEN
2629       g_rec_lines.array_ccid(g_LineNumber)     := -1;
2630       g_rec_lines.alt_array_ccid(g_LineNumber) := -1;
2631       g_rec_lines.array_ccid_flag(g_LineNumber)    := C_INVALID;
2632       g_rec_lines.alt_array_ccid_flag(g_LineNumber):= C_INVALID;
2633    WHEN 'NA'     THEN
2634       g_rec_lines.array_ccid(g_LineNumber) := -1;
2635       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2636    WHEN 'CREDIT' THEN
2637       g_rec_lines.array_ccid(g_LineNumber) := -1;
2638       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2639    WHEN 'DEBIT'  THEN
2640       g_rec_lines.alt_array_ccid(g_LineNumber) := -1;
2641       g_rec_lines.alt_array_ccid_flag(g_LineNumber):= C_INVALID;
2642    ELSE
2643       g_rec_lines.array_ccid(g_LineNumber) := -1;
2644       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2645    END CASE;
2646 
2647    XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
2648 
2649    xla_accounting_err_pkg.build_message
2650                       (p_appli_s_name            => 'XLA'
2651                       ,p_msg_name                => 'XLA_AP_NULL_SEGMENT_VALUE'
2652                       ,p_token_1                 => 'SEGMENT_RULE_NAME'
2653                       ,p_value_1                 => XLA_AE_SOURCES_PKG.GetComponentName (
2654                                                                  'AMB_ADR'
2655                                                                 ,p_adr_code
2656                                                                 ,p_adr_type_code
2657                                                                 ,p_component_appl_id
2658                                                                 ,p_amb_context_code
2659                                                                )
2660                       ,p_token_2                 => 'OWNER'
2661                       ,p_value_2                 => xla_lookups_pkg.get_meaning(
2662                                                                  'XLA_OWNER_TYPE'
2663                                                                 ,p_adr_type_code
2664                                                                 )
2665                       ,p_token_3                 => 'QUALIFIER_NAME'
2666                       ,p_value_3                 => xla_lookups_pkg.get_meaning(
2667                                                         p_lookup_type    => 'XLA_FLEXFIELD_SEGMENTS_QUAL'
2668                                                       , p_lookup_code    => p_flexfield_segment_code
2669                                                       )
2670                       ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2671                       ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2672                       ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2673                       ,p_ae_header_id            => NULL -- p_ae_header_id
2674                 );
2675 
2676      IF (C_LEVEL_ERROR >= g_log_level) THEN
2677              trace
2678                   (p_msg      => 'ERROR: XLA_AP_NULL_SEGMENT_VALUE'
2679                   ,p_level    => C_LEVEL_ERROR
2680                   ,p_module   => l_log_module);
2681      END IF;
2682 
2683 WHEN invalid_segment_qualifier THEN
2684 
2685    CASE p_side
2686    WHEN 'ALL' THEN
2687       g_rec_lines.array_ccid(g_LineNumber)     := -1;
2688       g_rec_lines.alt_array_ccid(g_LineNumber) := -1;
2689       g_rec_lines.array_ccid_flag(g_LineNumber)    := C_INVALID;
2690       g_rec_lines.alt_array_ccid_flag(g_LineNumber):= C_INVALID;
2691    WHEN 'NA'     THEN
2692       g_rec_lines.array_ccid(g_LineNumber) := -1;
2693       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2694    WHEN 'CREDIT' THEN
2695       g_rec_lines.array_ccid(g_LineNumber) := -1;
2696       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2697    WHEN 'DEBIT'  THEN
2698       g_rec_lines.alt_array_ccid(g_LineNumber) := -1;
2699       g_rec_lines.alt_array_ccid_flag(g_LineNumber):= C_INVALID;
2700    ELSE
2701       g_rec_lines.array_ccid(g_LineNumber) := -1;
2702       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2703    END CASE;
2704 
2705    XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
2706 
2707    l_coa_name := xla_accounting_cache_pkg.GetValueChar
2708      (
2709       p_source_code       => 'XLA_COA_NAME'
2710     , p_target_ledger_id  => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2711      );
2712 
2713    xla_accounting_err_pkg.build_message
2714                       (p_appli_s_name            => 'XLA'
2715                       ,p_msg_name                => 'XLA_AP_INV_SEGMENT_QUAL'
2716                       ,p_token_1                 => 'SEGMENT_RULE_NAME'
2717                       ,p_value_1                 => XLA_AE_SOURCES_PKG.GetComponentName (
2718                                                                  'AMB_ADR'
2719                                                                 ,p_adr_code
2720                                                                 ,p_adr_type_code
2721                                                                 ,p_component_appl_id
2722                                                                 ,p_amb_context_code
2723                                                                )
2724                       ,p_token_2                 => 'OWNER'
2725                       ,p_value_2                 => xla_lookups_pkg.get_meaning(
2726                                                                  'XLA_OWNER_TYPE'
2727                                                                 ,p_adr_type_code
2728                                                                 )
2729 
2730                       ,p_token_3                 => 'QUALIFIER_NAME'
2731                       ,p_value_3                 => xla_lookups_pkg.get_meaning(
2732                                                         p_lookup_type    => 'XLA_FLEXFIELD_SEGMENTS_QUAL'
2733                                                       , p_lookup_code    => p_flexfield_segment_code
2734                                                       )
2735                       ,p_token_4                 => 'ACCOUNTING_COA'
2736                       ,p_value_4                 => l_coa_name
2737                       ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2738                       ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2739                       ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2740                       ,p_ae_header_id            => NULL -- p_ae_header_id
2741                 );
2742 
2743      IF (C_LEVEL_ERROR >= g_log_level) THEN
2744              trace
2745                   (p_msg      => 'ERROR: XLA_AP_INV_SEGMENT_QUAL'
2746                   ,p_level    => C_LEVEL_ERROR
2747                   ,p_module   => l_log_module);
2748      END IF;
2749 WHEN xla_exceptions_pkg.application_exception THEN
2750   IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2751        trace
2752            (p_msg      => 'Error. = '||sqlerrm
2753            ,p_level    => C_LEVEL_PROCEDURE
2754            ,p_module   => l_log_module);
2755   END IF;
2756   RAISE;
2757 WHEN OTHERS  THEN
2758   IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2759        trace
2760            (p_msg      => 'Error. = '||sqlerrm
2761            ,p_level    => C_LEVEL_PROCEDURE
2762            ,p_module   => l_log_module);
2763   END IF;
2764   xla_exceptions_pkg.raise_message
2765            (p_location => 'XLA_AE_LINES_PKG.set_segment');
2766 END set_segment;
2767 
2768 --
2769 /*======================================================================+
2770 |                                                                       |
2771 | Public Procedure                                                      |
2772 |   ValidateCurrentLine                                                 |
2773 |                                                                       |
2774 +======================================================================*/
2775 PROCEDURE ValidateCurrentLine
2776 IS
2777 l_log_module         VARCHAR2(240);
2778 BEGIN
2779 IF g_log_enabled THEN
2780       l_log_module := C_DEFAULT_MODULE||'.ValidateCurrentLine';
2781 END IF;
2782 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2783       trace
2784          (p_msg      => 'BEGIN of ValidateCurrentLine'
2785          ,p_level    => C_LEVEL_PROCEDURE
2786          ,p_module   => l_log_module);
2787 
2788 END IF;
2789 
2790 IF nvl(g_LineNumber,0) > 0 THEN
2791 
2792      -----------------------------------------------------------
2793      -- 4219869 Business Flow
2794      -- Call is moved to XLA_CMP_ACCT_LINE_TYPE_PKG.C_ALT_BODY
2795      -----------------------------------------------------------
2796      -- SetDebitCreditAmounts(p_ae_header_id => p_ae_header_id);
2797      -----------------------------------------------------------
2798 
2799      ValidateLinks;
2800 
2801 END IF;
2802 
2803 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2804       trace
2805          (p_msg      => 'END of ValidateCurrentLine = '||g_LineNumber
2806          ,p_level    => C_LEVEL_PROCEDURE
2807          ,p_module   => l_log_module);
2808 
2809 END IF;
2810 EXCEPTION
2811 WHEN xla_exceptions_pkg.application_exception THEN
2812   RAISE;
2813 WHEN OTHERS  THEN
2814    xla_exceptions_pkg.raise_message
2815            (p_location => 'XLA_AE_LINES_PKG.ValidateCurrentLine');
2816   --
2817 END ValidateCurrentLine;
2818 --
2819 /*======================================================================+
2820 |                                                                       |
2821 | Public Procedure                                                      |
2822 |                                                                       |
2823 |                                                                       |
2824 +======================================================================*/
2825 PROCEDURE SetAcctClass(p_accounting_class_code      IN VARCHAR2
2826                       ,p_ae_header_id               IN NUMBER)
2827 IS
2828 l_log_module         VARCHAR2(240);
2829 BEGIN
2830 IF g_log_enabled THEN
2831       l_log_module := C_DEFAULT_MODULE||'.SetAcctClass';
2832 END IF;
2833 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2834       trace
2835          (p_msg      => 'BEGIN of SetAcctClass'
2836          ,p_level    => C_LEVEL_PROCEDURE
2837          ,p_module   => l_log_module);
2838 
2839       trace
2840          (p_msg      => 'p_accounting_class_code = '||p_accounting_class_code
2841          ,p_level    => C_LEVEL_PROCEDURE
2842          ,p_module   => l_log_module);
2843 END IF;
2844 
2845   g_rec_lines.array_accounting_class(g_LineNumber) := p_accounting_class_code;
2846 
2847 
2848 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2849       trace
2850          (p_msg      => 'END of SetAcctClass'
2851          ,p_level    => C_LEVEL_PROCEDURE
2852          ,p_module   => l_log_module);
2853 END IF;
2854 EXCEPTION
2855 WHEN xla_exceptions_pkg.application_exception THEN
2856    XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
2857    RAISE;
2858 WHEN OTHERS  THEN
2859    xla_exceptions_pkg.raise_message
2860            (p_location => 'XLA_AE_LINES_PKG.SetAcctClass');
2861 END SetAcctClass;
2862 --
2863 
2864 /*======================================================================+
2865 |                                                                       |
2866 | Public Function                                                       |
2867 |                                                                       |
2868 |   SetAnalyticalCriteria                                               |
2869 |                                                                       |
2870 +======================================================================*/
2871 --
2872 FUNCTION SetAnalyticalCriteria(
2873    p_analytical_criterion_name    IN VARCHAR2
2874  , p_analytical_criterion_owner   IN VARCHAR2
2875  , p_analytical_criterion_code    IN VARCHAR2
2876  , p_amb_context_code             IN VARCHAR2
2877  , p_balancing_flag               IN VARCHAR2
2878  , p_analytical_detail_char_1     IN VARCHAR2
2879  , p_analytical_detail_num_1      IN NUMBER
2880  , p_analytical_detail_date_1     IN DATE
2881  , p_analytical_detail_char_2     IN VARCHAR2
2882  , p_analytical_detail_num_2      IN NUMBER
2883  , p_analytical_detail_date_2     IN DATE
2884  , p_analytical_detail_char_3     IN VARCHAR2
2885  , p_analytical_detail_num_3      IN NUMBER
2886  , p_analytical_detail_date_3     IN DATE
2887  , p_analytical_detail_char_4     IN VARCHAR2
2888  , p_analytical_detail_num_4      IN NUMBER
2889  , p_analytical_detail_date_4     IN DATE
2890  , p_analytical_detail_char_5     IN VARCHAR2
2891  , p_analytical_detail_num_5      IN NUMBER
2892  , p_analytical_detail_date_5     IN DATE
2893  , p_ae_header_id                 IN NUMBER
2894 )
2895 RETURN VARCHAR2
2896 IS
2897 l_analytical_criteria  VARCHAR2(240);
2898 l_log_module           VARCHAR2(240);
2899 BEGIN
2900 --
2901 IF g_log_enabled THEN
2902       l_log_module := C_DEFAULT_MODULE||'.SetAnalyticalCriteria';
2903 END IF;
2904 --
2905 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2906       trace
2907          (p_msg      => 'BEGIN of SetAnalyticalCriteria'
2908          ,p_level    => C_LEVEL_PROCEDURE
2909          ,p_module   => l_log_module);
2910 
2911       trace
2912           (p_msg      => '-> CALL XLA_ANALYTICAL_CRITERIA_PKG.concat_detail_values API'
2913          ,p_level    => C_LEVEL_PROCEDURE
2914          ,p_module   => l_log_module);
2915 
2916 END IF;
2917 
2918  l_analytical_criteria :=  XLA_ANALYTICAL_CRITERIA_PKG.concat_detail_values
2919                 ( p_anacri_code              => p_analytical_criterion_code
2920                  ,p_anacri_type_code         => p_analytical_criterion_owner
2921                  ,p_amb_context_code         => p_amb_context_code
2922                  ,p_detail_char_1            => p_analytical_detail_char_1
2923                  ,p_detail_date_1            => p_analytical_detail_date_1
2924                  ,p_detail_number_1          => p_analytical_detail_num_1
2925                  ,p_detail_char_2            => p_analytical_detail_char_2
2926                  ,p_detail_date_2            => p_analytical_detail_date_2
2927                  ,p_detail_number_2          => p_analytical_detail_num_2
2928                  ,p_detail_char_3            => p_analytical_detail_char_3
2929                  ,p_detail_date_3            => p_analytical_detail_date_3
2930                  ,p_detail_number_3          => p_analytical_detail_num_3
2931                  ,p_detail_char_4            => p_analytical_detail_char_4
2932                  ,p_detail_date_4            => p_analytical_detail_date_4
2933                  ,p_detail_number_4          => p_analytical_detail_num_4
2934                  ,p_detail_char_5            => p_analytical_detail_char_5
2935                  ,p_detail_date_5            => p_analytical_detail_date_5
2936                  ,p_detail_number_5          => p_analytical_detail_num_5
2937                 );
2938 IF g_rec_lines.array_anc_balance_flag(g_LineNumber) IS NULL AND
2939     nvl(p_balancing_flag,'N') = 'Y'
2940 THEN
2941     g_rec_lines.array_anc_balance_flag(g_LineNumber) := 'P';
2942 END IF;
2943 
2944 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2945 
2946       trace
2947          (p_msg      => 'return value. = '||TO_CHAR(l_analytical_criteria)
2948          ,p_level    => C_LEVEL_PROCEDURE
2949          ,p_module   => l_log_module);
2950 
2951       trace
2952          (p_msg      => 'END of SetAnalyticalCriteria'
2953          ,p_level    => C_LEVEL_PROCEDURE
2954          ,p_module   => l_log_module);
2955 
2956 END IF;
2957 RETURN l_analytical_criteria;
2958 EXCEPTION
2959 WHEN xla_exceptions_pkg.application_exception THEN
2960  XLA_AE_JOURNAL_ENTRY_PKG.g_global_status :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
2961  RAISE;
2962 WHEN OTHERS  THEN
2963    xla_exceptions_pkg.raise_message
2964            (p_location => 'XLA_AE_LINES_PKG.SetAnalyticalCriteria');
2965   --
2966 END SetAnalyticalCriteria;
2967 
2968 
2969 --
2970 /*======================================================================+
2971 |                                                                       |
2972 | Public Procedure                                                      |
2973 |                                                                       |
2974 |                                                                       |
2975 +======================================================================*/
2976 FUNCTION InsertLines
2977 RETURN BOOLEAN
2978 IS
2979 l_result                   BOOLEAN;
2980 l_ledger_currency          VARCHAR2(30);
2981 l_ledger_category_code     VARCHAR2(30);
2982 l_rowcount                 NUMBER;
2983 l_null_trans_accounts t_rec_transaction_accounts;
2984 l_log_module               VARCHAR2(240);
2985 errors                     NUMBER; -- 7453943
2986 ERR_IND                    NUMBER; -- 7453943
2987 ERR_CODE                   VARCHAR2(100); -- 7453943
2988 dml_errors                 EXCEPTION; -- 7453943
2989 PRAGMA exception_init(dml_errors, -24381); -- 7453943
2990 BEGIN
2991 IF g_log_enabled THEN
2992       l_log_module := C_DEFAULT_MODULE||'.InsertLines';
2993 END IF;
2994 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2995       trace
2996          (p_msg      => 'BEGIN of InsertLines'
2997          ,p_level    => C_LEVEL_PROCEDURE
2998          ,p_module   => l_log_module);
2999 END IF;
3000 
3001 l_result   :=TRUE;
3002 
3003 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3004  trace
3005   (p_msg      => '# temporary journal lines to insert into GT xla_ae_lines_gt = '||g_rec_lines.array_line_num.COUNT
3006   ,p_level    => C_LEVEL_STATEMENT
3007   ,p_module   => l_log_module);
3008 END IF;
3009 
3010 --
3011 -- Bug 4458708
3012 --
3013 IF g_rec_lines.array_line_num.COUNT > 0 THEN
3014 
3015   l_result   := FALSE;
3016   l_rowcount := 0;
3017 
3018   --cache accounting COA
3019   xla_ae_code_combination_pkg.cache_coa
3020        (p_coa_id     => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.target_coa_id
3021        ,p_target_coa => 'Y');
3022 
3023   --get the ledger currency
3024   -- when this fuction is called, all the lines are always for one ledger
3025 
3026   l_ledger_currency := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.currency_code;
3027   l_ledger_category_code:= XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code;
3028 
3029   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3030       trace
3031          (p_msg      => 'ledger_currency:'||l_ledger_currency||' category_coe:'||l_ledger_category_code
3032          ,p_level    => C_LEVEL_STATEMENT
3033          ,p_module   => l_log_module);
3034   END IF;
3035 
3036   IF l_ledger_category_code = 'ALC' THEN
3037     IF (xla_accounting_cache_pkg.GetValueChar('XLA_ALC_ENABLED_FLAG')='N') THEN
3038       l_ledger_category_code :='PRIMARY';
3039     END IF;
3040   END IF;
3041 
3042   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3043       trace
3044          (p_msg      => 'SQL - Insert into xla_ae_lines_gt'
3045          ,p_level    => C_LEVEL_STATEMENT
3046          ,p_module   => l_log_module);
3047   END IF;
3048 
3049   ------------------------------------------------------------------------------------------------------
3050 
3051   FORALL Idx IN g_rec_lines.array_line_num.FIRST .. g_rec_lines.array_line_num.LAST SAVE EXCEPTIONS --7453943
3052    INSERT INTO xla_ae_lines_gt
3053          ( ae_header_id
3054          , temp_line_num
3055          , extract_line_num
3056          , event_id
3057          , ref_ae_header_id
3058          --
3059          , accounting_date        --4955764
3060          , accounting_class_code
3061          , rounding_class_code
3062          , event_class_code
3063          , event_type_code
3064          , line_definition_owner_code
3065          , line_definition_code
3066          , accounting_line_type_code
3067          , accounting_line_code
3068          , document_rounding_level
3069          , gain_or_loss_ref
3070          --
3071          , calculate_acctd_amts_flag
3072          , calculate_g_l_amts_flag
3073          , gain_or_loss_flag
3074          --
3075          , code_combination_status_code
3076          , code_combination_id
3077          , sl_coa_mapping_name
3078          , sl_coa_mapping_id
3079          , dynamic_insert_flag
3080          , source_coa_id
3081          , ccid_coa_id
3082          , segment1
3083          , segment2
3084          , segment3
3085          , segment4
3086          , segment5
3087          , segment6
3088          , segment7
3089          , segment8
3090          , segment9
3091          , segment10
3092          , segment11
3093          , segment12
3094          , segment13
3095          , segment14
3096          , segment15
3097          , segment16
3098          , segment17
3099          , segment18
3100          , segment19
3101          , segment20
3102          , segment21
3103          , segment22
3104          , segment23
3105          , segment24
3106          , segment25
3107          , segment26
3108          , segment27
3109          , segment28
3110          , segment29
3111          , segment30
3112          --
3113          , alt_ccid_status_code
3114          , alt_code_combination_id
3115          , alt_segment1
3116          , alt_segment2
3117          , alt_segment3
3118          , alt_segment4
3119          , alt_segment5
3120          , alt_segment6
3121          , alt_segment7
3122          , alt_segment8
3123          , alt_segment9
3124          , alt_segment10
3125          , alt_segment11
3126          , alt_segment12
3127          , alt_segment13
3128          , alt_segment14
3129          , alt_segment15
3130          , alt_segment16
3131          , alt_segment17
3132          , alt_segment18
3133          , alt_segment19
3134          , alt_segment20
3135          , alt_segment21
3136          , alt_segment22
3137          , alt_segment23
3138          , alt_segment24
3139          , alt_segment25
3140          , alt_segment26
3141          , alt_segment27
3142          , alt_segment28
3143          , alt_segment29
3144          , alt_segment30
3145          --
3146          , description
3147          , gl_transfer_mode_code
3148          , merge_duplicate_code
3149          , switch_side_flag
3150          --
3151          , entered_amount
3152          , ledger_amount
3153          , unrounded_entered_dr
3154          , unrounded_entered_cr
3155          , unrounded_accounted_dr
3156          , unrounded_accounted_cr
3157          , entered_currency_mau
3158          , currency_code
3159          , currency_conversion_date
3160          , currency_conversion_rate
3161          , currency_conversion_type
3162          , statistical_amount
3163          --
3164          , party_id
3165          , party_site_id
3166          , party_type_code
3167          --
3168          , ussgl_transaction_code
3169          , jgzz_recon_ref
3170          , source_distribution_id_char_1
3171          , source_distribution_id_char_2
3172          , source_distribution_id_char_3
3173          , source_distribution_id_char_4
3174          , source_distribution_id_char_5
3175          , source_distribution_id_num_1
3176          , source_distribution_id_num_2
3177          , source_distribution_id_num_3
3178          , source_distribution_id_num_4
3179          , source_distribution_id_num_5
3180          , source_distribution_type
3181          --
3182          , reverse_dist_id_char_1
3183          , reverse_dist_id_char_2
3184          , reverse_dist_id_char_3
3185          , reverse_dist_id_char_4
3186          , reverse_dist_id_char_5
3187          , reverse_dist_id_num_1
3188          , reverse_dist_id_num_2
3189          , reverse_dist_id_num_3
3190          , reverse_dist_id_num_4
3191          , reverse_dist_id_num_5
3192          , reverse_distribution_type
3193          --
3194          , tax_line_ref_id
3195          , tax_summary_line_ref_id
3196          , tax_rec_nrec_dist_ref_id
3197          --
3198          --
3199          -- 4262811
3200          , header_num
3201          , mpa_accrual_entry_flag
3202          , multiperiod_option_flag
3203          , multiperiod_start_date
3204          , multiperiod_end_date
3205          --
3206          , analytical_balance_flag
3207          , anc_id_1
3208          , anc_id_2
3209          , anc_id_3
3210          , anc_id_4
3211          , anc_id_5
3212          , anc_id_6
3213          , anc_id_7
3214          , anc_id_8
3215          , anc_id_9
3216          , anc_id_10
3217          , anc_id_11
3218          , anc_id_12
3219          , anc_id_13
3220          , anc_id_14
3221          , anc_id_15
3222          , anc_id_16
3223          , anc_id_17
3224          , anc_id_18
3225          , anc_id_19
3226          , anc_id_20
3227          , anc_id_21
3228          , anc_id_22
3229          , anc_id_23
3230          , anc_id_24
3231          , anc_id_25
3232          , anc_id_26
3233          , anc_id_27
3234          , anc_id_28
3235          , anc_id_29
3236          , anc_id_30
3237          , anc_id_31
3238          , anc_id_32
3239          , anc_id_33
3240          , anc_id_34
3241          , anc_id_35
3242          , anc_id_36
3243          , anc_id_37
3244          , anc_id_38
3245          , anc_id_39
3246          , anc_id_40
3247          , anc_id_41
3248          , anc_id_42
3249          , anc_id_43
3250          , anc_id_44
3251          , anc_id_45
3252          , anc_id_46
3253          , anc_id_47
3254          , anc_id_48
3255          , anc_id_49
3256          , anc_id_50
3257          , anc_id_51
3258          , anc_id_52
3259          , anc_id_53
3260          , anc_id_54
3261          , anc_id_55
3262          , anc_id_56
3263          , anc_id_57
3264          , anc_id_58
3265          , anc_id_59
3266          , anc_id_60
3267          , anc_id_61
3268          , anc_id_62
3269          , anc_id_63
3270          , anc_id_64
3271          , anc_id_65
3272          , anc_id_66
3273          , anc_id_67
3274          , anc_id_68
3275          , anc_id_69
3276          , anc_id_70
3277          , anc_id_71
3278          , anc_id_72
3279          , anc_id_73
3280          , anc_id_74
3281          , anc_id_75
3282          , anc_id_76
3283          , anc_id_77
3284          , anc_id_78
3285          , anc_id_79
3286          , anc_id_80
3287          , anc_id_81
3288          , anc_id_82
3289          , anc_id_83
3290          , anc_id_84
3291          , anc_id_85
3292          , anc_id_86
3293          , anc_id_87
3294          , anc_id_88
3295          , anc_id_89
3296          , anc_id_90
3297          , anc_id_91
3298          , anc_id_92
3299          , anc_id_93
3300          , anc_id_94
3301          , anc_id_95
3302          , anc_id_96
3303          , anc_id_97
3304          , anc_id_98
3305          , anc_id_99
3306          , anc_id_100
3307          --, deferred_indicator
3308          --, deferred_start_date
3309          --, deferred_end_date
3310          --, deferred_no_period
3311          --, deferred_period_type
3312         -- bulk performance
3313          , balance_type_code  -- element at index [x] does not exist.
3314          , ledger_id          -- element at index [x] does not exist.
3315          , event_number
3316          , entity_id
3317          , reversal_code
3318          , encumbrance_type_id -- 4458381
3319          --------------------------------------
3320          -- 4219869
3321          -- Business Flow Applied To attributes
3322          --------------------------------------
3323          ,inherit_desc_flag
3324          ,natural_side_code
3325          ,business_method_code
3326          ,business_class_code
3327          ,bflow_application_id
3328          ,bflow_entity_code
3329          ,bflow_source_id_num_1
3330          ,bflow_source_id_num_2
3331          ,bflow_source_id_num_3
3332          ,bflow_source_id_num_4
3333          ,bflow_source_id_char_1
3334          ,bflow_source_id_char_2
3335          ,bflow_source_id_char_3
3336          ,bflow_source_id_char_4
3337          ,bflow_distribution_type
3338          ,bflow_dist_id_num_1
3339          ,bflow_dist_id_num_2
3340          ,bflow_dist_id_num_3
3341          ,bflow_dist_id_num_4
3342          ,bflow_dist_id_num_5
3343          ,bflow_dist_id_char_1
3344          ,bflow_dist_id_char_2
3345          ,bflow_dist_id_char_3
3346          ,bflow_dist_id_char_4
3347          ,bflow_dist_id_char_5
3348          ,bflow_applied_to_amount  -- 5132302
3349      ,override_acctd_amt_flag
3350          --
3351          -- Allocation Attributes
3352          --
3353          ,alloc_to_application_id
3354          ,alloc_to_entity_code
3355          ,alloc_to_source_id_num_1
3356          ,alloc_to_source_id_num_2
3357          ,alloc_to_source_id_num_3
3358          ,alloc_to_source_id_num_4
3359          ,alloc_to_source_id_char_1
3360          ,alloc_to_source_id_char_2
3361          ,alloc_to_source_id_char_3
3362          ,alloc_to_source_id_char_4
3363          ,alloc_to_distribution_type
3364          ,alloc_to_dist_id_num_1
3365          ,alloc_to_dist_id_num_2
3366          ,alloc_to_dist_id_num_3
3367          ,alloc_to_dist_id_num_4
3368          ,alloc_to_dist_id_num_5
3369          ,alloc_to_dist_id_char_1
3370          ,alloc_to_dist_id_char_2
3371          ,alloc_to_dist_id_char_3
3372          ,alloc_to_dist_id_char_4
3373          ,alloc_to_dist_id_char_5
3374    )
3375    VALUES
3376    (
3377      g_rec_lines.array_ae_header_id(Idx)
3378    , g_rec_lines.array_line_num(Idx)
3379    , g_rec_lines.array_extract_line_num(Idx)
3380    , g_rec_lines.array_ae_header_id(Idx)
3381    , g_rec_lines.array_ae_header_id(Idx)
3382   --
3383    , g_rec_lines.array_gl_date(Idx)           --4955764
3384    , g_rec_lines.array_accounting_class(Idx)
3385    , g_rec_lines.array_rounding_class(Idx)
3386    , g_rec_lines.array_event_class_code(Idx)
3387    , g_rec_lines.array_event_type_code(Idx)
3388    , g_rec_lines.array_line_defn_owner_code(Idx)
3389    , g_rec_lines.array_line_defn_code(Idx)
3390    , g_rec_lines.array_accounting_line_type(Idx)
3391    , g_rec_lines.array_accounting_line_code(Idx)
3392    , g_rec_lines.array_doc_rounding_level(Idx)
3393    , nvl(g_rec_lines.array_gain_or_loss_ref(Idx), '#line#'||g_rec_lines.array_extract_line_num(Idx))
3394    --
3395    , g_rec_lines.array_calculate_acctd_flag(Idx)
3396    , g_rec_lines.array_calculate_g_l_flag(Idx)
3397    , decode(g_rec_lines.array_gain_or_loss_flag(Idx), 'Y', 'Y', decode(g_rec_lines.array_natural_side_code(Idx), 'G', 'Y', 'N'))
3398    --
3399    , g_rec_lines.array_ccid_flag(Idx)
3400    , g_rec_lines.array_ccid(Idx)
3401    --
3402    , XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.sl_coa_mapping_name
3403    , XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.sl_coa_mapping_id
3404   --
3405    , XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.dynamic_insert_flag
3406    , XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.source_coa_id
3407    , XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.target_coa_id
3408   --
3409    , g_rec_lines.array_segment1(Idx)
3410    , g_rec_lines.array_segment2(Idx)
3411    , g_rec_lines.array_segment3(Idx)
3412    , g_rec_lines.array_segment4(Idx)
3413    , g_rec_lines.array_segment5(Idx)
3414    , g_rec_lines.array_segment6(Idx)
3415    , g_rec_lines.array_segment7(Idx)
3416    , g_rec_lines.array_segment8(Idx)
3417    , g_rec_lines.array_segment9(Idx)
3418    , g_rec_lines.array_segment10(Idx)
3419    , g_rec_lines.array_segment11(Idx)
3420    , g_rec_lines.array_segment12(Idx)
3421    , g_rec_lines.array_segment13(Idx)
3422    , g_rec_lines.array_segment14(Idx)
3423    , g_rec_lines.array_segment15(Idx)
3424    , g_rec_lines.array_segment16(Idx)
3425    , g_rec_lines.array_segment17(Idx)
3426    , g_rec_lines.array_segment18(Idx)
3427    , g_rec_lines.array_segment19(Idx)
3428    , g_rec_lines.array_segment20(Idx)
3429    , g_rec_lines.array_segment21(Idx)
3430    , g_rec_lines.array_segment22(Idx)
3431    , g_rec_lines.array_segment23(Idx)
3432    , g_rec_lines.array_segment24(Idx)
3433    , g_rec_lines.array_segment25(Idx)
3434    , g_rec_lines.array_segment26(Idx)
3435    , g_rec_lines.array_segment27(Idx)
3436    , g_rec_lines.array_segment28(Idx)
3437    , g_rec_lines.array_segment29(Idx)
3438    , g_rec_lines.array_segment30(Idx)
3439     --
3440    , g_rec_lines.alt_array_ccid_flag(Idx)
3441    , g_rec_lines.alt_array_ccid(Idx)
3442    , g_rec_lines.alt_array_segment1(Idx)
3443    , g_rec_lines.alt_array_segment2(Idx)
3444    , g_rec_lines.alt_array_segment3(Idx)
3445    , g_rec_lines.alt_array_segment4(Idx)
3446    , g_rec_lines.alt_array_segment5(Idx)
3447    , g_rec_lines.alt_array_segment6(Idx)
3448    , g_rec_lines.alt_array_segment7(Idx)
3449    , g_rec_lines.alt_array_segment8(Idx)
3450    , g_rec_lines.alt_array_segment9(Idx)
3451    , g_rec_lines.alt_array_segment10(Idx)
3452    , g_rec_lines.alt_array_segment11(Idx)
3453    , g_rec_lines.alt_array_segment12(Idx)
3454    , g_rec_lines.alt_array_segment13(Idx)
3455    , g_rec_lines.alt_array_segment14(Idx)
3456    , g_rec_lines.alt_array_segment15(Idx)
3457    , g_rec_lines.alt_array_segment16(Idx)
3458    , g_rec_lines.alt_array_segment17(Idx)
3459    , g_rec_lines.alt_array_segment18(Idx)
3460    , g_rec_lines.alt_array_segment19(Idx)
3461    , g_rec_lines.alt_array_segment20(Idx)
3462    , g_rec_lines.alt_array_segment21(Idx)
3463    , g_rec_lines.alt_array_segment22(Idx)
3464    , g_rec_lines.alt_array_segment23(Idx)
3465    , g_rec_lines.alt_array_segment24(Idx)
3466    , g_rec_lines.alt_array_segment25(Idx)
3467    , g_rec_lines.alt_array_segment26(Idx)
3468    , g_rec_lines.alt_array_segment27(Idx)
3469    , g_rec_lines.alt_array_segment28(Idx)
3470    , g_rec_lines.alt_array_segment29(Idx)
3471    , g_rec_lines.alt_array_segment30(Idx)
3472     --
3473    , g_rec_lines.array_description(Idx)
3474    , g_rec_lines.array_gl_transfer_mode(Idx)
3475    , g_rec_lines.array_merge_duplicate_code(Idx)
3476    , decode(g_rec_lines.array_natural_side_code(Idx), 'G', 'Y',
3477            g_rec_lines.array_switch_side_flag(Idx))
3478       --
3479    , g_rec_lines.array_entered_amount(Idx)
3480    , g_rec_lines.array_ledger_amount(Idx)
3481    , g_rec_lines.array_entered_dr(Idx)
3482    , g_rec_lines.array_entered_cr(Idx)
3483    , g_rec_lines.array_accounted_dr(Idx)
3484    , g_rec_lines.array_accounted_cr(Idx)
3485    -- currency mau, put some dummy value for gain/loss line
3486    , decode(g_rec_lines.array_natural_side_code(Idx), 'G', .01
3487             , g_rec_lines.array_currency_mau(Idx))
3488    , decode(g_rec_lines.array_natural_side_code(Idx), 'G', l_ledger_currency
3489             , g_rec_lines.array_currency_code(Idx))--
3490    , decode(l_ledger_category_code
3491            ,'PRIMARY',TRUNC(g_rec_lines.array_curr_conversion_date(Idx))
3492            ,decode(l_ledger_currency
3493                   ,g_rec_lines.array_currency_code(Idx),NULL
3494                   ,TRUNC(g_rec_lines.array_curr_conversion_date(Idx))
3495                   )
3496            )    -- currency_conversion_date
3497    , decode(l_ledger_category_code, 'PRIMARY',
3498         g_rec_lines.array_curr_conversion_rate(Idx)
3499         ,decode(l_ledger_currency, g_rec_lines.array_currency_code(Idx),
3500            null, g_rec_lines.array_curr_conversion_rate(Idx)))
3501    , decode(l_ledger_category_code, 'PRIMARY',
3502         g_rec_lines.array_curr_conversion_type(Idx)
3503         ,decode(l_ledger_currency, g_rec_lines.array_currency_code(Idx),
3504            null, g_rec_lines.array_curr_conversion_type(Idx)))
3505    , g_rec_lines.array_statistical_amount(Idx)
3506     --
3507    , g_rec_lines.array_party_id(Idx)
3508    , g_rec_lines.array_party_site_id(Idx)
3509    , g_rec_lines.array_party_type_code(Idx)
3510     --
3511    , g_rec_lines.array_ussgl_transaction(Idx)
3512    , g_rec_lines.array_jgzz_recon_ref(Idx)
3513     --
3514    , g_rec_lines.array_distribution_id_char_1(Idx)
3515    , g_rec_lines.array_distribution_id_char_2(Idx)
3516    , g_rec_lines.array_distribution_id_char_3(Idx)
3517    , g_rec_lines.array_distribution_id_char_4(Idx)
3518    , g_rec_lines.array_distribution_id_char_5(Idx)
3519    , g_rec_lines.array_distribution_id_num_1(Idx)
3520    , g_rec_lines.array_distribution_id_num_2(Idx)
3521    , g_rec_lines.array_distribution_id_num_3(Idx)
3522    , g_rec_lines.array_distribution_id_num_4(Idx)
3523    , g_rec_lines.array_distribution_id_num_5(Idx)
3524    , g_rec_lines.array_sys_distribution_type(Idx)
3525    --
3526    , g_rec_lines.array_rev_dist_id_char_1(Idx)
3527    , g_rec_lines.array_rev_dist_id_char_2(Idx)
3528    , g_rec_lines.array_rev_dist_id_char_3(Idx)
3529    , g_rec_lines.array_rev_dist_id_char_4(Idx)
3530    , g_rec_lines.array_rev_dist_id_char_5(Idx)
3531    , g_rec_lines.array_rev_dist_id_num_1(Idx)
3532    , g_rec_lines.array_rev_dist_id_num_2(Idx)
3533    , g_rec_lines.array_rev_dist_id_num_3(Idx)
3534    , g_rec_lines.array_rev_dist_id_num_4(Idx)
3535    , g_rec_lines.array_rev_dist_id_num_5(Idx)
3536    , g_rec_lines.array_rev_dist_type(Idx)
3537    --
3538    , g_rec_lines.array_tax_line_ref(Idx)
3539    , g_rec_lines.array_tax_summary_line_ref(Idx)
3540    , g_rec_lines.array_tax_rec_nrec_dist_ref(Idx)
3541   -- 4262811
3542    , NVL(g_rec_lines.array_header_num(Idx),0)  -- 5100860  always assign a value
3543    , g_rec_lines.array_mpa_acc_entry_flag(Idx)
3544    , g_rec_lines.array_mpa_option(Idx)
3545    , g_rec_lines.array_mpa_start_date(Idx)
3546    , g_rec_lines.array_mpa_end_date(Idx)
3547    -- Analytical Criteria
3548    , g_rec_lines.array_anc_balance_flag(Idx)
3549    , g_rec_lines.array_anc_id_1(Idx)
3550    , g_rec_lines.array_anc_id_2(Idx)
3551    , g_rec_lines.array_anc_id_3(Idx)
3552    , g_rec_lines.array_anc_id_4(Idx)
3553    , g_rec_lines.array_anc_id_5(Idx)
3554    , g_rec_lines.array_anc_id_6(Idx)
3555    , g_rec_lines.array_anc_id_7(Idx)
3556    , g_rec_lines.array_anc_id_8(Idx)
3557    , g_rec_lines.array_anc_id_9(Idx)
3558    , g_rec_lines.array_anc_id_10(Idx)
3559    , g_rec_lines.array_anc_id_11(Idx)
3560    , g_rec_lines.array_anc_id_12(Idx)
3561    , g_rec_lines.array_anc_id_13(Idx)
3562    , g_rec_lines.array_anc_id_14(Idx)
3563    , g_rec_lines.array_anc_id_15(Idx)
3564    , g_rec_lines.array_anc_id_16(Idx)
3565    , g_rec_lines.array_anc_id_17(Idx)
3566    , g_rec_lines.array_anc_id_18(Idx)
3567    , g_rec_lines.array_anc_id_19(Idx)
3568    , g_rec_lines.array_anc_id_20(Idx)
3569    , g_rec_lines.array_anc_id_21(Idx)
3570    , g_rec_lines.array_anc_id_22(Idx)
3571    , g_rec_lines.array_anc_id_23(Idx)
3572    , g_rec_lines.array_anc_id_24(Idx)
3573    , g_rec_lines.array_anc_id_25(Idx)
3574    , g_rec_lines.array_anc_id_26(Idx)
3575    , g_rec_lines.array_anc_id_27(Idx)
3576    , g_rec_lines.array_anc_id_28(Idx)
3577    , g_rec_lines.array_anc_id_29(Idx)
3578    , g_rec_lines.array_anc_id_30(Idx)
3579    , g_rec_lines.array_anc_id_31(Idx)
3580    , g_rec_lines.array_anc_id_32(Idx)
3581    , g_rec_lines.array_anc_id_33(Idx)
3582    , g_rec_lines.array_anc_id_34(Idx)
3583    , g_rec_lines.array_anc_id_35(Idx)
3584    , g_rec_lines.array_anc_id_36(Idx)
3585    , g_rec_lines.array_anc_id_37(Idx)
3586    , g_rec_lines.array_anc_id_38(Idx)
3587    , g_rec_lines.array_anc_id_39(Idx)
3588    , g_rec_lines.array_anc_id_40(Idx)
3589    , g_rec_lines.array_anc_id_41(Idx)
3590    , g_rec_lines.array_anc_id_42(Idx)
3591    , g_rec_lines.array_anc_id_43(Idx)
3592    , g_rec_lines.array_anc_id_44(Idx)
3593    , g_rec_lines.array_anc_id_45(Idx)
3594    , g_rec_lines.array_anc_id_46(Idx)
3595    , g_rec_lines.array_anc_id_47(Idx)
3596    , g_rec_lines.array_anc_id_48(Idx)
3597    , g_rec_lines.array_anc_id_49(Idx)
3598    , g_rec_lines.array_anc_id_50(Idx)
3599    , g_rec_lines.array_anc_id_51(Idx)
3600    , g_rec_lines.array_anc_id_52(Idx)
3601    , g_rec_lines.array_anc_id_53(Idx)
3602    , g_rec_lines.array_anc_id_54(Idx)
3603    , g_rec_lines.array_anc_id_55(Idx)
3604    , g_rec_lines.array_anc_id_56(Idx)
3605    , g_rec_lines.array_anc_id_57(Idx)
3606    , g_rec_lines.array_anc_id_58(Idx)
3607    , g_rec_lines.array_anc_id_59(Idx)
3608    , g_rec_lines.array_anc_id_60(Idx)
3609    , g_rec_lines.array_anc_id_61(Idx)
3610    , g_rec_lines.array_anc_id_62(Idx)
3611    , g_rec_lines.array_anc_id_63(Idx)
3612    , g_rec_lines.array_anc_id_64(Idx)
3613    , g_rec_lines.array_anc_id_65(Idx)
3614    , g_rec_lines.array_anc_id_66(Idx)
3615    , g_rec_lines.array_anc_id_67(Idx)
3616    , g_rec_lines.array_anc_id_68(Idx)
3617    , g_rec_lines.array_anc_id_69(Idx)
3618    , g_rec_lines.array_anc_id_70(Idx)
3619    , g_rec_lines.array_anc_id_71(Idx)
3620    , g_rec_lines.array_anc_id_72(Idx)
3621    , g_rec_lines.array_anc_id_73(Idx)
3622    , g_rec_lines.array_anc_id_74(Idx)
3623    , g_rec_lines.array_anc_id_75(Idx)
3624    , g_rec_lines.array_anc_id_76(Idx)
3625    , g_rec_lines.array_anc_id_77(Idx)
3626    , g_rec_lines.array_anc_id_78(Idx)
3627    , g_rec_lines.array_anc_id_79(Idx)
3628    , g_rec_lines.array_anc_id_80(Idx)
3629    , g_rec_lines.array_anc_id_81(Idx)
3630    , g_rec_lines.array_anc_id_82(Idx)
3631    , g_rec_lines.array_anc_id_83(Idx)
3632    , g_rec_lines.array_anc_id_84(Idx)
3633    , g_rec_lines.array_anc_id_85(Idx)
3634    , g_rec_lines.array_anc_id_86(Idx)
3635    , g_rec_lines.array_anc_id_87(Idx)
3636    , g_rec_lines.array_anc_id_88(Idx)
3637    , g_rec_lines.array_anc_id_89(Idx)
3638    , g_rec_lines.array_anc_id_90(Idx)
3639    , g_rec_lines.array_anc_id_91(Idx)
3640    , g_rec_lines.array_anc_id_92(Idx)
3641    , g_rec_lines.array_anc_id_93(Idx)
3642    , g_rec_lines.array_anc_id_94(Idx)
3643    , g_rec_lines.array_anc_id_95(Idx)
3644    , g_rec_lines.array_anc_id_96(Idx)
3645    , g_rec_lines.array_anc_id_97(Idx)
3646    , g_rec_lines.array_anc_id_98(Idx)
3647    , g_rec_lines.array_anc_id_99(Idx)
3648    , g_rec_lines.array_anc_id_100(Idx)
3649   -- , g_rec_lines.array_deferred_indicator(Idx)
3650   -- , g_rec_lines.array_deferred_start_date(Idx)
3651   -- , g_rec_lines.array_deferred_end_date(Idx)
3652   -- , g_rec_lines.array_deferred_no_period(Idx)
3653   -- , g_rec_lines.array_deferred_period_type(Idx)
3654   -- bulk performance
3655    , g_rec_lines.array_balance_type_code(Idx)  -- element at index [x] does not exist.
3656    , g_rec_lines.array_ledger_id(Idx)          -- element at index [x] does not exist.
3657    , g_rec_lines.array_event_number(Idx)
3658    , g_rec_lines.array_entity_id(Idx)
3659    , g_rec_lines.array_reversal_code(Idx)
3660    , g_rec_lines.array_encumbrance_type_id(Idx) -- 4458381
3661    --------------------------------------
3662    -- 4219869
3663    -- Business Flow Applied To attributes
3664    --------------------------------------
3665    , g_rec_lines.array_inherit_desc_flag(Idx)
3666    , g_rec_lines.array_natural_side_code(Idx)
3667    , g_rec_lines.array_business_method_code(Idx)
3668    , g_rec_lines.array_business_class_code(Idx)
3669    , g_rec_lines.array_bflow_application_id(Idx)
3670    --
3671    , g_rec_lines.array_bflow_entity_code(Idx)
3672    , g_rec_lines.array_bflow_source_id_num_1(Idx)
3673    , g_rec_lines.array_bflow_source_id_num_2(Idx)
3674    , g_rec_lines.array_bflow_source_id_num_3(Idx)
3675    , g_rec_lines.array_bflow_source_id_num_4(Idx)
3676    , g_rec_lines.array_bflow_source_id_char_1(Idx)
3677    , g_rec_lines.array_bflow_source_id_char_2(Idx)
3678    , g_rec_lines.array_bflow_source_id_char_3(Idx)
3679    , g_rec_lines.array_bflow_source_id_char_4(Idx)
3680    --
3681    , g_rec_lines.array_bflow_distribution_type(Idx)
3682    , g_rec_lines.array_bflow_dist_id_num_1(Idx)
3683    , g_rec_lines.array_bflow_dist_id_num_2(Idx)
3684    , g_rec_lines.array_bflow_dist_id_num_3(Idx)
3685    , g_rec_lines.array_bflow_dist_id_num_4(Idx)
3686    , g_rec_lines.array_bflow_dist_id_num_5(Idx)
3687    , g_rec_lines.array_bflow_dist_id_char_1(Idx)
3688    , g_rec_lines.array_bflow_dist_id_char_2(Idx)
3689    , g_rec_lines.array_bflow_dist_id_char_3(Idx)
3690    , g_rec_lines.array_bflow_dist_id_char_4(Idx)
3691    , g_rec_lines.array_bflow_dist_id_char_5(Idx)
3692    , g_rec_lines.array_bflow_applied_to_amt(Idx)  -- 5132302
3693    , g_rec_lines.array_override_acctd_amt_flag(Idx)
3694    --
3695    -- Allocation Attributes
3696    --
3697    , g_rec_lines.array_alloct_application_id(Idx)
3698    , g_rec_lines.array_alloct_entity_code(Idx)
3699    , g_rec_lines.array_alloct_source_id_num_1(Idx)
3700    , g_rec_lines.array_alloct_source_id_num_2(Idx)
3701    , g_rec_lines.array_alloct_source_id_num_3(Idx)
3702    , g_rec_lines.array_alloct_source_id_num_4(Idx)
3703    , g_rec_lines.array_alloct_source_id_char_1(Idx)
3704    , g_rec_lines.array_alloct_source_id_char_2(Idx)
3705    , g_rec_lines.array_alloct_source_id_char_3(Idx)
3706    , g_rec_lines.array_alloct_source_id_char_4(Idx)
3707    , g_rec_lines.array_alloct_distribution_type(Idx)
3708    , g_rec_lines.array_alloct_dist_id_num_1(Idx)
3709    , g_rec_lines.array_alloct_dist_id_num_2(Idx)
3710    , g_rec_lines.array_alloct_dist_id_num_3(Idx)
3711    , g_rec_lines.array_alloct_dist_id_num_4(Idx)
3712    , g_rec_lines.array_alloct_dist_id_num_5(Idx)
3713    , g_rec_lines.array_alloct_dist_id_char_1(Idx)
3714    , g_rec_lines.array_alloct_dist_id_char_2(Idx)
3715    , g_rec_lines.array_alloct_dist_id_char_3(Idx)
3716    , g_rec_lines.array_alloct_dist_id_char_4(Idx)
3717    , g_rec_lines.array_alloct_dist_id_char_5(Idx)
3718    )
3719   ;
3720 
3721   l_rowcount := SQL%ROWCOUNT;
3722   l_result   := ( l_rowcount> 0);
3723 
3724   IF (C_LEVEL_EVENT >= g_log_level) THEN
3725     trace
3726       (p_msg      => '# temporary journal lines inserted into GT xla_ae_lines_gt = '||TO_CHAR(l_rowcount)
3727       ,p_level    => C_LEVEL_EVENT
3728       ,p_module   => l_log_module);
3729   END IF;
3730 
3731 END IF; --  g_rec_lines.array_line_num.COUNT > 0
3732 
3733 IF g_transaction_accounts.array_line_num.COUNT > 0 AND l_result THEN
3734 
3735   FORALL Jdx IN g_transaction_accounts.array_line_num.FIRST .. g_transaction_accounts.array_line_num.LAST
3736     INSERT INTO xla_transaction_accts_gt
3737        (line_number,
3738         ae_header_id,
3739         temp_line_num,
3740         ledger_id,
3741         code_combination_id,
3742         segment,
3743         from_segment_code,
3744         to_segment_code,
3745         processing_status_code,
3746         side_code,
3747         sl_coa_mapping_id
3748        )
3749     VALUES
3750        (g_transaction_accounts.array_line_num(Jdx),
3751         g_transaction_accounts.array_ae_header_id(Jdx),
3752         g_transaction_accounts.array_temp_line_num(Jdx),
3753         XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id,
3754         g_transaction_accounts.array_code_combination_id(Jdx),
3755         g_transaction_accounts.array_segment(Jdx),
3756         g_transaction_accounts.array_from_segment_code(Jdx),
3757         g_transaction_accounts.array_to_segment_code(Jdx),
3758         g_transaction_accounts.array_processing_status_code(Jdx),
3759         g_transaction_accounts.array_side_code(Jdx),
3760         XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.sl_coa_mapping_id
3761   )
3762   ;
3763 
3764   l_rowcount := SQL%ROWCOUNT;
3765 
3766   IF (C_LEVEL_EVENT >= g_log_level) THEN
3767       trace
3768          (p_msg      => '# lines inserted into xla_transaction_accts_gt = '||TO_CHAR(l_rowcount)
3769          ,p_level    => C_LEVEL_EVENT
3770          ,p_module   => l_log_module);
3771 
3772   END IF;
3773   g_transaction_accounts         := l_null_trans_accounts;
3774 
3775 ELSE
3776   IF (C_LEVEL_EVENT >= g_log_level) THEN
3777       trace
3778          (p_msg      => 'No rows to insert into xla_transaction_accts_gt'
3779          ,p_level    => C_LEVEL_EVENT
3780          ,p_module   => l_log_module);
3781   END IF;
3782 END IF;
3783 
3784 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3785       trace
3786          (p_msg      => 'END of InsertLines'
3787          ,p_level    => C_LEVEL_PROCEDURE
3788          ,p_module   => l_log_module);
3789 END IF;
3790 RETURN l_result;
3791 EXCEPTION
3792 ----Added to handle Exceptions and send to Out file  7453943------------
3793 WHEN dml_errors THEN
3794    errors := SQL%BULK_EXCEPTIONS.COUNT;
3795    FOR i IN 1..errors LOOP
3796       ERR_IND:= SQL%BULK_EXCEPTIONS(i).ERROR_INDEX;
3797       ERR_CODE:= SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE);
3798       fnd_file.put_line(fnd_file.log, 'ERROR : '|| UPPER(ERR_CODE)); -- added in 12.1.1
3799       fnd_file.put_line(fnd_file.output, 'temp_line_num: '||g_rec_lines.array_line_num(ERR_IND));
3800       fnd_file.put_line(fnd_file.output, 'extract_line_num: '||g_rec_lines.array_extract_line_num(ERR_IND));
3801       fnd_file.put_line(fnd_file.output, 'event_id: '||g_rec_lines.array_ae_header_id(ERR_IND));
3802       fnd_file.put_line(fnd_file.output, 'accounting_class_code: '||g_rec_lines.array_accounting_class(ERR_IND));
3803       fnd_file.put_line(fnd_file.output, 'event_type_code: '||g_rec_lines.array_event_type_code(ERR_IND));
3804       fnd_file.put_line(fnd_file.output, 'balance_type_code: '||g_rec_lines.array_balance_type_code(ERR_IND));
3805   END LOOP;
3806 --------------------------------------------------------------------------
3807 
3808 WHEN xla_exceptions_pkg.application_exception THEN
3809    IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
3810        trace
3811            (p_msg      => 'Error. = '||sqlerrm
3812            ,p_level    => C_LEVEL_PROCEDURE
3813            ,p_module   => l_log_module);
3814    END IF;
3815    RAISE;
3816 WHEN OTHERS  THEN
3817   IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
3818        trace
3819            (p_msg      => 'Error. = '||sqlerrm
3820            ,p_level    => C_LEVEL_PROCEDURE
3821            ,p_module   => l_log_module);
3822    END IF;
3823    xla_exceptions_pkg.raise_message
3824       (p_location => 'XLA_AE_LINES_PKG.InsertLines');
3825 END InsertLines;
3826 --
3827 /*======================================================================+
3828 |                                                                       |
3829 | Public Procedure                                                      |
3830 |                                                                       |
3831 |                                                                       |
3832 +======================================================================*/
3833 PROCEDURE RefreshLines
3834 IS
3835 l_null_lines          t_rec_lines;
3836 l_null_rev_line       t_rec_reverse_line;
3837 l_null_accounts       t_rec_transaction_accounts;
3838 l_log_module          VARCHAR2(240);
3839 BEGIN
3840 IF g_log_enabled THEN
3841       l_log_module := C_DEFAULT_MODULE||'.RefreshLines';
3842 END IF;
3843 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3844       trace
3845          (p_msg      => 'BEGIN of RefreshLines'
3846          ,p_level    => C_LEVEL_PROCEDURE
3847          ,p_module   => l_log_module);
3848 END IF;
3849 
3850 g_rec_lines                    := l_null_lines;
3851 g_transaction_accounts         := l_null_accounts;
3852 g_LineNumber                   := null;
3853 g_ExtractLine                  := null;
3854 g_ActualLineNum                := null;
3855 g_BudgetLineNum                := null;
3856 g_EncumbLineNum                := null;
3857 
3858 g_reverse_lines                := l_null_rev_line;
3859 
3860 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3861       trace
3862          (p_msg      => 'END of RefreshLines'
3863          ,p_level    => C_LEVEL_PROCEDURE
3864          ,p_module   => l_log_module);
3865 END IF;
3866 EXCEPTION
3867 WHEN xla_exceptions_pkg.application_exception THEN
3868   RAISE;
3869 WHEN OTHERS  THEN
3870    xla_exceptions_pkg.raise_message
3871            (p_location => 'XLA_AE_LINES_PKG.RefreshLines');
3872 END RefreshLines;
3873 --
3874 --
3875 --====================================================================
3876 --
3877 --
3878 --
3879 --
3880 --
3881 --                    REVERSAL ACCOUNTING PROCESS
3882 --
3883 --
3884 --
3885 --
3886 --
3887 --
3888 --
3889 --
3890 --
3891 --
3892 --
3893 --
3894 --
3895 --
3896 --
3897 --
3898 --====================================================================
3899 --
3900 --====================================================================
3901 --
3902 --
3903 --
3904 --
3905 --
3906 --        PRIVATE  procedures and functions
3907 --
3908 --
3909 --
3910 --
3911 --
3912 --
3913 --
3914 --
3915 --
3916 --
3917 --
3918 --
3919 --
3920 --
3921 --
3922 --
3923 --======================================================================
3924 --
3925 
3926 
3927 --
3928 --
3929 /*======================================================================+
3930 |                                                                       |
3931 | Private Procedure                                                     |
3932 |                                                                       |
3933 |                                                                       |
3934 +======================================================================*/
3935 FUNCTION ValidateRevLinks
3936 RETURN BOOLEAN
3937 IS
3938 l_log_module         VARCHAR2(240);
3939 l_temp               NUMBER;
3940 BEGIN
3941 --
3942 IF g_log_enabled THEN
3943       l_log_module := C_DEFAULT_MODULE||'.ValidateRevLinks';
3944 END IF;
3945 --
3946 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3947 
3948       trace
3949          (p_msg      => 'BEGIN of ValidateRevLinks'
3950          ,p_level    => C_LEVEL_PROCEDURE
3951          ,p_module   => l_log_module);
3952 
3953 END IF;
3954 
3955 -- please refer to the comments in method ValidateLinks for explanation.
3956 
3957 IF g_rec_lines.array_distribution_id_char_5(g_LineNumber) IS NULL AND
3958       g_rec_lines.array_distribution_id_num_5(g_LineNumber) IS NULL THEN
3959   l_temp := 0;
3960 ELSE
3961   l_temp := 1;
3962 END IF;
3963 IF g_rec_lines.array_distribution_id_char_4(g_LineNumber) IS NOT NULL OR
3964       g_rec_lines.array_distribution_id_num_4(g_LineNumber) IS NOT NULL THEN
3965   l_temp := 2+l_temp;
3966 END IF;
3967 IF g_rec_lines.array_distribution_id_char_3(g_LineNumber) IS NOT NULL OR
3968       g_rec_lines.array_distribution_id_num_3(g_LineNumber) IS NOT NULL THEN
3969   l_temp := 4+l_temp;
3970 END IF;
3971 IF g_rec_lines.array_distribution_id_char_2(g_LineNumber) IS NOT NULL OR
3972       g_rec_lines.array_distribution_id_num_2(g_LineNumber) IS NOT NULL THEN
3973   l_temp := 8+l_temp;
3974 END IF;
3975 IF g_rec_lines.array_sys_distribution_type(g_LineNumber) IS NULL
3976    OR (g_rec_lines.array_distribution_id_char_1(g_LineNumber) IS NULL AND
3977       g_rec_lines.array_distribution_id_num_1(g_LineNumber) IS NULL)
3978    OR   l_temp not in (0, 8, 12, 14, 15) THEN
3979 
3980     xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3981     xla_accounting_err_pkg.build_message
3982                                   (p_appli_s_name            => 'XLA'
3983                                   ,p_msg_name                => 'XLA_AP_NO_DIST_LINK_ID'
3984                                   ,p_token_1                 => 'LINE_NUMBER'
3985                                   ,p_value_1                 =>  g_ExtractLine
3986                                   ,p_token_2                 => 'LINE_TYPE_NAME'
3987                                   ,p_value_2                 => 'Accounting Reversal'
3988                                   ,p_token_3                 => 'OWNER'
3989                                   ,p_value_3                 => xla_lookups_pkg.get_meaning(
3990                                                                       p_lookup_type    => 'XLA_OWNER_TYPE'
3991                                                                     , p_lookup_code    => 'S'
3992                                                                     )
3993                                   ,p_token_4                 => 'PRODUCT_NAME'
3994                                   ,p_value_4                 => 'Subledger Accounting Architecture'
3995                                   ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3996                                   ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3997                                   ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3998                          );
3999 
4000      IF (C_LEVEL_ERROR >= g_log_level) THEN
4001                         trace
4002                            (p_msg      => 'ERROR: XLA_AP_NO_DIST_LINK_ID'
4003                            ,p_level    => C_LEVEL_ERROR
4004                            ,p_module   => l_log_module);
4005      END IF;
4006 
4007      IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4008            trace
4009               (p_msg      => 'return value. = FALSE'
4010               ,p_level    => C_LEVEL_PROCEDURE
4011               ,p_module   => l_log_module);
4012            trace
4013               (p_msg      => 'END of ValidateRevLinks'
4014               ,p_level    => C_LEVEL_PROCEDURE
4015               ,p_module   => l_log_module);
4016 
4017      END IF;
4018      RETURN FALSE;
4019 ELSE
4020 -- please refer to the comments in method ValidateLinks for explanation.
4021 
4022   IF g_rec_lines.array_rev_dist_id_char_5(g_LineNumber) IS NULL AND
4023         g_rec_lines.array_rev_dist_id_num_5(g_LineNumber) IS NULL THEN
4024     l_temp := 0;
4025   ELSE
4026     l_temp := 1;
4027   END IF;
4028   IF g_rec_lines.array_rev_dist_id_char_4(g_LineNumber) IS NOT NULL OR
4029         g_rec_lines.array_rev_dist_id_num_4(g_LineNumber) IS NOT NULL THEN
4030     l_temp := 2+l_temp;
4031   END IF;
4032   IF g_rec_lines.array_rev_dist_id_char_3(g_LineNumber) IS NOT NULL OR
4033         g_rec_lines.array_rev_dist_id_num_3(g_LineNumber) IS NOT NULL THEN
4034     l_temp := 4+l_temp;
4035   END IF;
4036   IF g_rec_lines.array_rev_dist_id_char_2(g_LineNumber) IS NOT NULL OR
4037         g_rec_lines.array_rev_dist_id_num_2(g_LineNumber) IS NOT NULL THEN
4038     l_temp := 8+l_temp;
4039   END IF;
4040   IF g_rec_lines.array_rev_dist_type(g_LineNumber) IS NULL
4041      OR (g_rec_lines.array_rev_dist_id_char_1(g_LineNumber) IS NULL AND
4042         g_rec_lines.array_rev_dist_id_num_1(g_LineNumber) IS NULL)
4043      OR   l_temp not in (0, 8, 12, 14, 15) THEN
4044 
4045       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
4046       xla_accounting_err_pkg.build_message
4047                                   (p_appli_s_name            => 'XLA'
4048                                   ,p_msg_name                => 'XLA_AP_NO_REV_DIST_LINK_ID'
4049                                   ,p_token_1                 => 'LINE_NUMBER'
4050                                   ,p_value_1                 =>  g_ExtractLine
4051                                   ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4052                                   ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
4053                                   ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4054                          );
4055 
4056        IF (C_LEVEL_ERROR >= g_log_level) THEN
4057                         trace
4058                            (p_msg      => 'ERROR: XLA_AP_NO_REV_DIST_LINK_ID'
4059                            ,p_level    => C_LEVEL_ERROR
4060                            ,p_module   => l_log_module);
4061        END IF;
4062 
4063        IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4064            trace
4065               (p_msg      => 'return value. = FALSE'
4066               ,p_level    => C_LEVEL_PROCEDURE
4067               ,p_module   => l_log_module);
4068            trace
4069               (p_msg      => 'END of ValidateRevLinks'
4070               ,p_level    => C_LEVEL_PROCEDURE
4071               ,p_module   => l_log_module);
4072 
4073        END IF;
4074        RETURN FALSE;
4075   ELSE
4076      IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4077            trace
4078               (p_msg      => 'return value. = TRUE'
4079               ,p_level    => C_LEVEL_PROCEDURE
4080               ,p_module   => l_log_module);
4081            trace
4082               (p_msg      => 'END of ValidateRevLinks'
4083               ,p_level    => C_LEVEL_PROCEDURE
4084               ,p_module   => l_log_module);
4085 
4086      END IF;
4087      RETURN TRUE;
4088   END IF;
4089 END IF;
4090 
4091 
4092 EXCEPTION
4093 WHEN xla_exceptions_pkg.application_exception THEN
4094   RAISE;
4095 WHEN OTHERS  THEN
4096    xla_exceptions_pkg.raise_message
4097            (p_location => 'xla_ae_lines_pkg.ValidateRevLinks');
4098   --
4099 END ValidateRevLinks;
4100 --
4101 /*======================================================================+
4102 |                                                                       |
4103 | Public Procedure                                                      |
4104 |                                                                       |
4105 |                                                                       |
4106 +======================================================================*/
4107 
4108 --
4109 --====================================================================
4110 --
4111 --
4112 --
4113 --
4114 --
4115 --        PUBLIC  procedures and functions
4116 --
4117 --
4118 --
4119 --
4120 --
4121 --
4122 --
4123 --
4124 --
4125 --
4126 --
4127 --
4128 --
4129 --
4130 --
4131 --
4132 --======================================================================
4133 PROCEDURE AccountingReversal (
4134   p_accounting_mode      IN VARCHAR2
4135 ) IS
4136 
4137 l_log_module         VARCHAR2(240);
4138 l_array_event_id                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4139 l_array_ledger_id                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4140 l_array_source_dist_id_num_1         XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4141 l_array_source_dist_id_num_2         XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4142 l_array_source_dist_id_num_3         XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4143 l_array_source_dist_id_num_4         XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4144 l_array_source_dist_id_num_5         XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4145 l_array_source_dist_id_char_1        XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4146 l_array_source_dist_id_char_2        XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4147 l_array_source_dist_id_char_3        XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4148 l_array_source_dist_id_char_4        XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4149 l_array_source_dist_id_char_5        XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4150 l_array_source_dist_type             XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4151 l_array_rev_dist_id_num_1            XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4152 l_array_rev_dist_id_num_2            XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4153 l_array_rev_dist_id_num_3            XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4154 l_array_rev_dist_id_num_4            XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4155 l_array_rev_dist_id_num_5            XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4156 l_array_rev_dist_id_char_1           XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4157 l_array_rev_dist_id_char_2           XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4158 l_array_rev_dist_id_char_3           XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4159 l_array_rev_dist_id_char_4           XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4160 l_array_rev_dist_id_char_5           XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4161 l_array_rev_dist_type                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4162 
4163 l_array_balance_type_code            XLA_AE_JOURNAL_ENTRY_PKG.t_array_V1L;
4164 l_array_entry_status_code            XLA_AE_JOURNAL_ENTRY_PKG.t_array_V1L;
4165 l_array_event_number                 XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4166 l_array_entity_id                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4167 l_array_header_num                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;    -- 4262811c MPA header for Line reversal
4168 l_array_switch_side_flag             XLA_AE_JOURNAL_ENTRY_PKG.t_array_V1L;    -- 5055878 Reversal method. Y=SIDE, N=SIGN
4169 l_array_tax_line_ref                 XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;  -- bug 7159711
4170 l_array_tax_summary_line_ref         XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;  -- bug 7159711
4171 l_array_tax_rec_nrec_dist_ref        XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;  -- bug 7159711
4172 
4173 l_application_id                     NUMBER;
4174 
4175 -- 5086984 Performance fix
4176 l_array_mpa_acc_ledger_id            XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4177 l_array_mpa_acc_event_id             XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4178 l_array_mpa_acc_ref_ae_header        XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4179 l_array_mpa_acc_temp_line_num        XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4180 l_array_mpa_acc_ae_header_id         XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4181 l_array_mpa_acc_header_num           XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4182 l_array_mpa_acc_balance_type         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V1L;
4183 
4184 l_array_gl_date                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_date;  -- 5189664
4185 
4186 l_default_switch_side_flag           CHAR(1);
4187 l_ledger_attrs                       XLA_ACCOUNTING_CACHE_PKG.t_array_ledger_attrs;   --7135700
4188 l_upgrade_check                      NUMBER  DEFAULT 0;                               --7135700
4189 l_primary_ledger_id                  NUMBER;                                          --7135700
4190 l_max_first_open_period              DATE   DEFAULT NULL;                             --7135700
4191 l_min_ref_event_date                 DATE   DEFAULT NULL;                             --7135700
4192 l_error_count                        NUMBER DEFAULT 0;                                --7135700 + 7253269
4193 
4194 
4195 
4196 BEGIN
4197    IF g_log_enabled THEN
4198       l_log_module := C_DEFAULT_MODULE||'.AccountingReversal';
4199    END IF;
4200 
4201    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4202       trace
4203          (p_msg      => 'BEGIN of AccountingReversal'
4204          ,p_level    => C_LEVEL_PROCEDURE
4205          ,p_module   => l_log_module);
4206    END IF;
4207 
4208    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
4209       trace
4210          (p_msg      => 'Performing line level accounting reversal'
4211          ,p_level    => C_LEVEL_STATEMENT
4212          ,p_module   => l_log_module);
4213    END IF;
4214 
4215   l_application_id :=  xla_accounting_cache_pkg.getvaluenum('XLA_EVENT_APPL_ID');
4216 
4217   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
4218      trace
4219         (p_msg      => 'Application ID ='||to_char(l_application_id)
4220         ,p_level    => C_LEVEL_STATEMENT
4221         ,p_module   => l_log_module);
4222      trace -- 5412560
4223         (p_msg      => 'MPA Line Reversal exists = '||xla_accounting_pkg.g_mpa_accrual_exists
4224         ,p_level    => C_LEVEL_STATEMENT
4225         ,p_module   => l_log_module);
4226   END IF;
4227 
4228   ----------------------------------------
4229   -- 5108415 Incomplete MPA
4230   ----------------------------------------
4231   g_incomplete_mpa_acc_LR := NULL;
4232   g_incomplete_mpa_acc_TR := NULL;
4233 
4234 
4235 --***************************************************************************************************************
4236 --***************************************************************************************************************
4237 --*******************    L I N E      R E V E R S A L    ********************************************************
4238 --***************************************************************************************************************
4239 --***************************************************************************************************************
4240 
4241    --
4242    -- selecting all the dummy lines from xla_ae_lines_gt that are due to
4243    -- line level reversal option
4244    --
4245    SELECT event_id
4246          ,ledger_id
4247          ,event_number
4248          ,entity_id
4249          ,source_distribution_type
4250          ,source_distribution_id_num_1
4251          ,source_distribution_id_num_2
4252          ,source_distribution_id_num_3
4253          ,source_distribution_id_num_4
4254          ,source_distribution_id_num_5
4255          ,source_distribution_id_char_1
4256          ,source_distribution_id_char_2
4257          ,source_distribution_id_char_3
4258          ,source_distribution_id_char_4
4259          ,source_distribution_id_char_5
4260          ,reverse_distribution_type
4261          ,reverse_dist_id_num_1
4262          ,reverse_dist_id_num_2
4263          ,reverse_dist_id_num_3
4264          ,reverse_dist_id_num_4
4265          ,reverse_dist_id_num_5
4266          ,reverse_dist_id_char_1
4267          ,reverse_dist_id_char_2
4268          ,reverse_dist_id_char_3
4269          ,reverse_dist_id_char_4
4270          ,reverse_dist_id_char_5
4271          ,switch_side_flag        -- 5055878
4272          ,accounting_date         -- 5189664
4273          ,tax_line_ref_id            -- 7159711
4274          ,tax_summary_line_ref_id    -- 7159711
4275          ,tax_rec_nrec_dist_ref_id   -- 7159711
4276      BULK COLLECT INTO
4277           l_array_event_id
4278          ,l_array_ledger_id
4279          ,l_array_event_number
4280          ,l_array_entity_id
4281          ,l_array_source_dist_type
4282          ,l_array_source_dist_id_num_1
4283          ,l_array_source_dist_id_num_2
4284          ,l_array_source_dist_id_num_3
4285          ,l_array_source_dist_id_num_4
4286          ,l_array_source_dist_id_num_5
4287          ,l_array_source_dist_id_char_1
4288          ,l_array_source_dist_id_char_2
4289          ,l_array_source_dist_id_char_3
4290          ,l_array_source_dist_id_char_4
4291          ,l_array_source_dist_id_char_5
4292          ,l_array_rev_dist_type
4293          ,l_array_rev_dist_id_num_1
4294          ,l_array_rev_dist_id_num_2
4295          ,l_array_rev_dist_id_num_3
4296          ,l_array_rev_dist_id_num_4
4297          ,l_array_rev_dist_id_num_5
4298          ,l_array_rev_dist_id_char_1
4299          ,l_array_rev_dist_id_char_2
4300          ,l_array_rev_dist_id_char_3
4301          ,l_array_rev_dist_id_char_4
4302          ,l_array_rev_dist_id_char_5
4303          ,l_array_switch_side_flag     -- 5055878
4304          ,l_array_gl_date              -- 5189664
4305          ,l_array_tax_line_ref           -- 7159711
4306          ,l_array_tax_summary_line_ref   -- 7159711
4307          ,l_array_tax_rec_nrec_dist_ref  -- 7159711
4308      FROM xla_ae_lines_gt
4309     WHERE reversal_code = 'DUMMY_LR'
4310     ORDER by entity_id, event_number;
4311 
4312    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
4313       trace
4314          (p_msg      => 'Line Reversal - Extract lines with reversal option set to Y = '||SQL%ROWCOUNT
4315          ,p_level    => C_LEVEL_STATEMENT
4316          ,p_module   => l_log_module);
4317    END IF;
4318 
4319    --=======================================================================================================
4320    -- 4669308 Delete the MPA/Accrual Line Reversal (still in GT ables, not in distribution links yet)
4321    --=======================================================================================================
4322    --
4323    ---------------------------------------------------------------------------------------------------------
4324    -- 4669308 Delete the MPA/Accrual Line Reversal in xla_ae_lines_gt (not in distribution links yet)
4325    ---------------------------------------------------------------------------------------------------------
4326    --
4327    IF xla_accounting_pkg.g_mpa_accrual_exists = 'Y' THEN  -- 5412560
4328       -- Modify for performance bug 5086984
4329       FOR i IN 1..l_array_entity_id.count LOOP
4330          SELECT /*+ Leading(HGT) cardinality(hgt 1) index(lgt XLA_AE_LINES_GT_U1) */
4331                 lgt.ledger_id
4332                ,lgt.event_id
4333                ,lgt.ref_ae_header_id
4334                ,lgt.temp_line_num
4335                ,lgt.ae_header_id
4336                ,lgt.header_num
4337                ,lgt.balance_type_code
4338          BULK COLLECT INTO
4339                 l_array_mpa_acc_ledger_id
4340                ,l_array_mpa_acc_event_id
4341                ,l_array_mpa_acc_ref_ae_header
4342                ,l_array_mpa_acc_temp_line_num
4343                ,l_array_mpa_acc_ae_header_id
4344                ,l_array_mpa_acc_header_num
4345                ,l_array_mpa_acc_balance_type
4346          FROM   xla_ae_lines_gt   lgt
4347                ,xla_ae_headers_gt hgt
4348          WHERE l_array_ledger_id(i)                   = lgt.ledger_id
4349            AND l_array_rev_dist_type(i)               = lgt.source_distribution_type
4350            AND nvl(l_array_rev_dist_id_num_1(i),-99)  = nvl(lgt.source_distribution_id_num_1,-99)
4351            AND nvl(l_array_rev_dist_id_num_2(i),-99)  = nvl(lgt.source_distribution_id_num_2,-99)
4352            AND nvl(l_array_rev_dist_id_num_3(i),-99)  = nvl(lgt.source_distribution_id_num_3,-99)
4353            AND nvl(l_array_rev_dist_id_num_4(i),-99)  = nvl(lgt.source_distribution_id_num_4,-99)
4354            AND nvl(l_array_rev_dist_id_num_5(i),-99)  = nvl(lgt.source_distribution_id_num_5,-99)
4355            AND nvl(l_array_rev_dist_id_char_1(i),' ') = nvl(lgt.source_distribution_id_char_1,' ')
4356            AND nvl(l_array_rev_dist_id_char_2(i),' ') = nvl(lgt.source_distribution_id_char_2,' ')
4357            AND nvl(l_array_rev_dist_id_char_3(i),' ') = nvl(lgt.source_distribution_id_char_3,' ')
4358            AND nvl(l_array_rev_dist_id_char_4(i),' ') = nvl(lgt.source_distribution_id_char_4,' ')
4359            AND nvl(l_array_rev_dist_id_char_5(i),' ') = nvl(lgt.source_distribution_id_char_5,' ')
4360            AND lgt.reversal_code IS NULL        -- the lines created form revesal are not reversed again
4361             -- 5412560 replacement
4362            AND NVL(lgt.header_num,0) > 0
4363            AND lgt.header_num          = hgt.header_num
4364            AND hgt.event_id            = lgt.event_id
4365            AND hgt.ledger_id           = lgt.ledger_id
4366            AND hgt.balance_type_code   = lgt.balance_type_code
4367            AND hgt.ae_header_id        = lgt.ae_header_id
4368            AND hgt.entity_id           = l_array_entity_id(i)
4369            AND hgt.event_number        < l_array_event_number(i);
4370            /* 5412560 replaced
4371            AND NOT EXISTS (                     -- the lines already reversed are not reversed again
4372                       SELECT 1
4373                       FROM xla_ae_lines_gt
4374                       WHERE ledger_id        = lgt.ledger_id
4375                         AND ref_ae_header_id = lgt.ref_ae_header_id
4376                         AND temp_line_num    = lgt.temp_line_num * -1)
4377            AND NVL(lgt.header_num,0) > 0
4378            AND lgt.header_num          = hgt.header_num
4379            AND hgt.event_id            = lgt.event_id
4380            AND hgt.ledger_id           = lgt.ledger_id
4381            AND hgt.balance_type_code   = lgt.balance_type_code
4382            AND hgt.entity_id           = l_array_entity_id(i)
4383            AND hgt.event_number        < l_array_event_number(i);
4384            */
4385 
4386          IF (C_LEVEL_STATEMENT >= g_log_level) THEN  -- 5412560
4387                trace
4388                (p_msg      => 'MPA Line Reversal entity='||l_array_entity_id(i)||
4389                               ' count = '||l_array_mpa_acc_ae_header_id.COUNT
4390                ,p_level    => C_LEVEL_STATEMENT
4391                ,p_module   => l_log_module);
4392             for a in 1..l_array_mpa_acc_ae_header_id.count loop
4393                trace
4394                (p_msg      => 'MPA Line Reversal ledger='||l_array_mpa_acc_ledger_id(a)||
4395                               ' ref_header='||l_array_mpa_acc_ref_ae_header(a)||
4396                               ' line='||l_array_mpa_acc_temp_line_num(a)||
4397                               '  header='||l_array_mpa_acc_ae_header_id(a)
4398                ,p_level    => C_LEVEL_STATEMENT
4399                ,p_module   => l_log_module);
4400             end loop;
4401          END IF;
4402 
4403          ---------------------------------------------------------------------------------------------------------
4404          -- 4669308 Delete the MPA/Accrual Line Reversal in xla_ae_lines_gt (not in distribution links yet)
4405          ---------------------------------------------------------------------------------------------------------
4406          FORALL j IN 1..l_array_mpa_acc_ae_header_id.count
4407             DELETE xla_ae_lines_gt
4408             WHERE  ledger_id        = l_array_mpa_acc_ledger_id(j)
4409             AND    ref_ae_header_id = l_array_mpa_acc_ref_ae_header(j)
4410             AND    temp_line_num    = l_array_mpa_acc_temp_line_num(j)
4411             AND    ae_header_id     = l_array_mpa_acc_ae_header_id(j)
4412             AND    header_num       = l_array_mpa_acc_header_num(j);
4413 
4414          ---------------------------------------------------------------------------------------------------------
4415          -- 4669308 Delete the MPA/Accrual Line Reversal in xla_ae_headers_gt (not in distribution links yet)
4416          ---------------------------------------------------------------------------------------------------------
4417          FORALL j IN 1..l_array_mpa_acc_event_id.count
4418             DELETE xla_ae_headers_gt
4419             WHERE  ledger_id         = l_array_mpa_acc_ledger_id(j)
4420             AND    event_id          = l_array_mpa_acc_event_id(j)
4421             AND    ae_header_id      = l_array_mpa_acc_ae_header_id(j)
4422             AND    balance_type_code = l_array_mpa_acc_balance_type(j)
4423             AND    header_num        = l_array_mpa_acc_header_num(j);
4424 
4425       END LOOP;
4426       --
4427    END IF; -- xla_accounting_pkg.g_mpa_accrual_exists = 'Y'
4428    -------------------------------------------------------------------------------------------------------------------------
4429 
4430    --
4431       -- reverse the lines in xla_ae_lines_gt table (not in distribution links yet)
4432    --
4433    INSERT INTO xla_ae_lines_gt
4434       (ae_header_id
4435       ,temp_line_num
4436       ,event_id
4437       ,ref_ae_header_id
4438       ,ref_ae_line_num
4439       ,ref_temp_line_num
4440       ,ref_event_id
4441       ,ledger_id
4442       ,balance_type_code
4443       ,accounting_class_code
4444       ,event_class_code
4445       ,event_type_code
4446       ,line_definition_owner_code
4447       ,line_definition_code
4448       ,accounting_line_type_code
4449       ,accounting_line_code
4450       ,code_combination_status_code
4451       ,code_combination_id
4452       ,sl_coa_mapping_name
4453       ,dynamic_insert_flag
4454       ,source_coa_id
4455       ,ccid_coa_id
4456       ,calculate_acctd_amts_flag
4457       ,calculate_g_l_amts_flag
4458       ,gain_or_loss_flag
4459       ,rounding_class_code
4460       ,document_rounding_level
4461       ,DOC_ROUNDING_ACCTD_AMT
4462       ,DOC_ROUNDING_ENTERED_AMT
4463       ,alt_ccid_status_code
4464       ,alt_code_combination_id
4465       ,alt_segment1
4466       ,alt_segment2
4467       ,alt_segment3
4468       ,alt_segment4
4469       ,alt_segment5
4470       ,alt_segment6
4471       ,alt_segment7
4472       ,alt_segment8
4473       ,alt_segment9
4474       ,alt_segment10
4475       ,alt_segment11
4476       ,alt_segment12
4477       ,alt_segment13
4478       ,alt_segment14
4479       ,alt_segment15
4480       ,alt_segment16
4481       ,alt_segment17
4482       ,alt_segment18
4483       ,alt_segment19
4484       ,alt_segment20
4485       ,alt_segment21
4486       ,alt_segment22
4487       ,alt_segment23
4488       ,alt_segment24
4489       ,alt_segment25
4490       ,alt_segment26
4491       ,alt_segment27
4492       ,alt_segment28
4493       ,alt_segment29
4494       ,alt_segment30
4495       ,segment1
4496       ,segment2
4497       ,segment3
4498       ,segment4
4499       ,segment5
4500       ,segment6
4501       ,segment7
4502       ,segment8
4503       ,segment9
4504       ,segment10
4505       ,segment11
4506       ,segment12
4507       ,segment13
4508       ,segment14
4509       ,segment15
4510       ,segment16
4511       ,segment17
4512       ,segment18
4513       ,segment19
4514       ,segment20
4515       ,segment21
4516       ,segment22
4517       ,segment23
4518       ,segment24
4519       ,segment25
4520       ,segment26
4521       ,segment27
4522       ,segment28
4523       ,segment29
4524       ,segment30
4525       ,description
4526       ,gl_transfer_mode_code
4527       ,merge_duplicate_code
4528       ,switch_side_flag
4529       ,unrounded_entered_dr
4530       ,unrounded_entered_cr
4531       ,unrounded_accounted_dr
4532       ,unrounded_accounted_cr
4533       ,entered_currency_mau
4534       ,currency_code
4535       ,currency_conversion_date
4536       ,currency_conversion_rate
4537       ,currency_conversion_type
4538       ,statistical_amount
4539       ,party_id
4540       ,party_site_id
4541       ,party_type_code
4542       ,ussgl_transaction_code
4543       ,jgzz_recon_ref
4544       ,source_distribution_id_char_1
4545       ,source_distribution_id_char_2
4546       ,source_distribution_id_char_3
4547       ,source_distribution_id_char_4
4548       ,source_distribution_id_char_5
4549       ,source_distribution_id_num_1
4550       ,source_distribution_id_num_2
4551       ,source_distribution_id_num_3
4552       ,source_distribution_id_num_4
4553       ,source_distribution_id_num_5
4554       ,source_distribution_type
4555       ,reverse_dist_id_char_1
4556       ,reverse_dist_id_char_2
4557       ,reverse_dist_id_char_3
4558       ,reverse_dist_id_char_4
4559       ,reverse_dist_id_char_5
4560       ,reverse_dist_id_num_1
4561       ,reverse_dist_id_num_2
4562       ,reverse_dist_id_num_3
4563       ,reverse_dist_id_num_4
4564       ,reverse_dist_id_num_5
4565       ,reverse_distribution_type
4566       ,tax_line_ref_id
4567       ,tax_summary_line_ref_id
4568       ,tax_rec_nrec_dist_ref_id
4569       -- 4262811
4570       ,header_num
4571       ,mpa_accrual_entry_flag
4572       ,multiperiod_option_flag
4573       ,multiperiod_start_date
4574       ,multiperiod_end_date
4575       ,reversal_code
4576       ,inherit_desc_flag              -- 4219869
4577       ,encumbrance_type_id            -- 4458381
4578       ,accounting_entry_status_code
4579       ,accounting_date
4580       , BFLOW_APPLICATION_ID
4581         , BFLOW_ENTITY_CODE
4582         , APPLIED_TO_ENTITY_ID
4583         , BFLOW_SOURCE_ID_NUM_1
4584         , BFLOW_SOURCE_ID_NUM_2
4585         , BFLOW_SOURCE_ID_NUM_3
4586         , BFLOW_SOURCE_ID_NUM_4
4587         , BFLOW_SOURCE_ID_CHAR_1
4588         , BFLOW_SOURCE_ID_CHAR_2
4589         , BFLOW_SOURCE_ID_CHAR_3
4590         , BFLOW_SOURCE_ID_CHAR_4
4591         , BFLOW_DISTRIBUTION_TYPE
4592         , BFLOW_DIST_ID_NUM_1
4593         , BFLOW_DIST_ID_NUM_2
4594         , BFLOW_DIST_ID_NUM_3
4595         , BFLOW_DIST_ID_NUM_4
4596         , BFLOW_DIST_ID_NUM_5
4597         , BFLOW_DIST_ID_CHAR_1
4598         , BFLOW_DIST_ID_CHAR_2
4599         , BFLOW_DIST_ID_CHAR_3
4600         , BFLOW_DIST_ID_CHAR_4
4601         , BFLOW_DIST_ID_CHAR_5
4602  , alloc_to_application_id
4603  , alloc_to_entity_code
4604  , alloc_to_source_id_num_1
4605  , alloc_to_source_id_num_2
4606  , alloc_to_source_id_num_3
4607  , alloc_to_source_id_num_4
4608  , alloc_to_source_id_char_1
4609  , alloc_to_source_id_char_2
4610  , alloc_to_source_id_char_3
4611  , alloc_to_source_id_char_4
4612  , alloc_to_distribution_type
4613  , alloc_to_dist_id_char_1
4614  , alloc_to_dist_id_char_2
4615  , alloc_to_dist_id_char_3
4616  , alloc_to_dist_id_char_4
4617  , alloc_to_dist_id_char_5
4618  , alloc_to_dist_id_num_1
4619  , alloc_to_dist_id_num_2
4620  , alloc_to_dist_id_num_3
4621  , alloc_to_dist_id_num_4
4622  , alloc_to_dist_id_num_5    -- 4955764
4623   , analytical_balance_flag  -- Bug 7382288
4624  , anc_id_1
4625  , anc_id_2
4626  , anc_id_3
4627  , anc_id_4
4628  , anc_id_5
4629  , anc_id_6
4630  , anc_id_7
4631  , anc_id_8
4632  , anc_id_9
4633  , anc_id_10
4634  , anc_id_11
4635  , anc_id_12
4636  , anc_id_13
4637  , anc_id_14
4638  , anc_id_15
4639  , anc_id_16
4640  , anc_id_17
4641  , anc_id_18
4642  , anc_id_19
4643  , anc_id_20
4644  , anc_id_21
4645  , anc_id_22
4646  , anc_id_23
4647  , anc_id_24
4648  , anc_id_25
4649  , anc_id_26
4650  , anc_id_27
4651  , anc_id_28
4652  , anc_id_29
4653  , anc_id_30
4654  , anc_id_31
4655  , anc_id_32
4656  , anc_id_33
4657  , anc_id_34
4658  , anc_id_35
4659  , anc_id_36
4660  , anc_id_37
4661  , anc_id_38
4662  , anc_id_39
4663  , anc_id_40
4664  , anc_id_41
4665  , anc_id_42
4666  , anc_id_43
4667  , anc_id_44
4668  , anc_id_45
4669  , anc_id_46
4670  , anc_id_47
4671  , anc_id_48
4672  , anc_id_49
4673  , anc_id_50
4674  , anc_id_51
4675  , anc_id_52
4676  , anc_id_53
4677  , anc_id_54
4678  , anc_id_55
4679  , anc_id_56
4680  , anc_id_57
4681  , anc_id_58
4682  , anc_id_59
4683  , anc_id_60
4684  , anc_id_61
4685  , anc_id_62
4686  , anc_id_63
4687  , anc_id_64
4688  , anc_id_65
4689  , anc_id_66
4690  , anc_id_67
4691  , anc_id_68
4692  , anc_id_69
4693  , anc_id_70
4694  , anc_id_71
4695  , anc_id_72
4696  , anc_id_73
4697  , anc_id_74
4698  , anc_id_75
4699  , anc_id_76
4700  , anc_id_77
4701  , anc_id_78
4702  , anc_id_79
4703  , anc_id_80
4704  , anc_id_81
4705  , anc_id_82
4706  , anc_id_83
4707  , anc_id_84
4708  , anc_id_85
4709  , anc_id_86
4710  , anc_id_87
4711  , anc_id_88
4712  , anc_id_89
4713  , anc_id_90
4714  , anc_id_91
4715  , anc_id_92
4716  , anc_id_93
4717  , anc_id_94
4718  , anc_id_95
4719  , anc_id_96
4720  , anc_id_97
4721  , anc_id_98
4722  , anc_id_99
4723  , anc_id_100)
4724   (SELECT
4725        ae_header_id
4726       ,temp_line_num
4727       ,event_id
4728       ,ref_ae_header_id
4729       ,ref_ae_line_num
4730       ,ref_temp_line_num
4731       ,ref_event_id
4732       ,ledger_id
4733       ,balance_type_code
4734       ,accounting_class_code
4735       ,event_class_code
4736       ,event_type_code
4737       ,line_definition_owner_code
4738       ,line_definition_code
4739       ,accounting_line_type_code
4740       ,accounting_line_code
4741       ,code_combination_status_code
4742       ,code_combination_id
4743       ,sl_coa_mapping_name
4744       ,dynamic_insert_flag
4745       ,source_coa_id
4746       ,ccid_coa_id
4747       ,calculate_acctd_amts_flag
4748       ,calculate_g_l_amts_flag
4749       ,gain_or_loss_flag
4750       ,rounding_class_code
4751       ,document_rounding_level
4752       ,doc_rounding_acctd_amt
4753       ,doc_rounding_entered_amt
4754       ,alt_ccid_status_code
4755       ,alt_code_combination_id
4756       ,alt_segment1
4757       ,alt_segment2
4758       ,alt_segment3
4759       ,alt_segment4
4760       ,alt_segment5
4761       ,alt_segment6
4762       ,alt_segment7
4763       ,alt_segment8
4764       ,alt_segment9
4765       ,alt_segment10
4766       ,alt_segment11
4767       ,alt_segment12
4768       ,alt_segment13
4769       ,alt_segment14
4770       ,alt_segment15
4771       ,alt_segment16
4772       ,alt_segment17
4773       ,alt_segment18
4774       ,alt_segment19
4775       ,alt_segment20
4776       ,alt_segment21
4777       ,alt_segment22
4778       ,alt_segment23
4779       ,alt_segment24
4780       ,alt_segment25
4781       ,alt_segment26
4782       ,alt_segment27
4783       ,alt_segment28
4784       ,alt_segment29
4785       ,alt_segment30
4786       ,segment1
4787       ,segment2
4788       ,segment3
4789       ,segment4
4790       ,segment5
4791       ,segment6
4792       ,segment7
4793       ,segment8
4794       ,segment9
4795       ,segment10
4796       ,segment11
4797       ,segment12
4798       ,segment13
4799       ,segment14
4800       ,segment15
4801       ,segment16
4802       ,segment17
4803       ,segment18
4804       ,segment19
4805       ,segment20
4806       ,segment21
4807       ,segment22
4808       ,segment23
4809       ,segment24
4810       ,segment25
4811       ,segment26
4812       ,segment27
4813       ,segment28
4814       ,segment29
4815       ,segment30
4816       ,description
4817       ,gl_transfer_mode_code
4818       ,merge_duplicate_code
4819       ,switch_side_flag
4820       ,unrounded_entered_dr
4821       ,unrounded_entered_cr
4822       ,unrounded_accounted_dr
4823       ,unrounded_accounted_cr
4824       ,entered_currency_mau
4825       ,currency_code
4826       ,currency_conversion_date
4827       ,currency_conversion_rate
4828       ,currency_conversion_type
4829       ,statistical_amount
4830       ,party_id
4831       ,party_site_id
4832       ,party_type_code
4833       ,ussgl_transaction_code
4834       ,jgzz_recon_ref
4835       ,source_distribution_id_char_1
4836       ,source_distribution_id_char_2
4837       ,source_distribution_id_char_3
4838       ,source_distribution_id_char_4
4839       ,source_distribution_id_char_5
4840       ,source_distribution_id_num_1
4841       ,source_distribution_id_num_2
4842       ,source_distribution_id_num_3
4843       ,source_distribution_id_num_4
4844       ,source_distribution_id_num_5
4845       ,source_distribution_type
4846       ,reverse_dist_id_char_1
4847       ,reverse_dist_id_char_2
4848       ,reverse_dist_id_char_3
4849       ,reverse_dist_id_char_4
4850       ,reverse_dist_id_char_5
4851       ,reverse_dist_id_num_1
4852       ,reverse_dist_id_num_2
4853       ,reverse_dist_id_num_3
4854       ,reverse_dist_id_num_4
4855       ,reverse_dist_id_num_5
4856       ,reverse_distribution_type
4857       ,tax_line_ref_id
4858       ,tax_summary_line_ref_id
4859       ,tax_rec_nrec_dist_ref_id
4860       ,header_num
4861       ,mpa_accrual_entry_flag
4862       ,multiperiod_option_flag
4863       ,multiperiod_start_date
4864       ,multiperiod_end_date
4865       ,reversal_code
4866       ,inherit_desc_flag
4867       ,encumbrance_type_id
4868       ,accounting_entry_status_code
4869       ,accounting_date
4870  , BFLOW_APPLICATION_ID
4871         , BFLOW_ENTITY_CODE
4872         , APPLIED_TO_ENTITY_ID
4873         , BFLOW_SOURCE_ID_NUM_1
4874         , BFLOW_SOURCE_ID_NUM_2
4875         , BFLOW_SOURCE_ID_NUM_3
4876         , BFLOW_SOURCE_ID_NUM_4
4877         , BFLOW_SOURCE_ID_CHAR_1
4878         , BFLOW_SOURCE_ID_CHAR_2
4879         , BFLOW_SOURCE_ID_CHAR_3
4880         , BFLOW_SOURCE_ID_CHAR_4
4881         , BFLOW_DISTRIBUTION_TYPE
4882         , BFLOW_DIST_ID_NUM_1
4883         , BFLOW_DIST_ID_NUM_2
4884         , BFLOW_DIST_ID_NUM_3
4885         , BFLOW_DIST_ID_NUM_4
4886         , BFLOW_DIST_ID_NUM_5
4887         , BFLOW_DIST_ID_CHAR_1
4888         , BFLOW_DIST_ID_CHAR_2
4889         , BFLOW_DIST_ID_CHAR_3
4890         , BFLOW_DIST_ID_CHAR_4
4891         , BFLOW_DIST_ID_CHAR_5
4892  , alloc_to_application_id
4893  , alloc_to_entity_code
4894  , alloc_to_source_id_num_1
4895  , alloc_to_source_id_num_2
4896  , alloc_to_source_id_num_3
4897  , alloc_to_source_id_num_4
4898  , alloc_to_source_id_char_1
4899  , alloc_to_source_id_char_2
4900  , alloc_to_source_id_char_3
4901  , alloc_to_source_id_char_4
4902  , alloc_to_distribution_type
4903  , alloc_to_dist_id_char_1
4904  , alloc_to_dist_id_char_2
4905  , alloc_to_dist_id_char_3
4906  , alloc_to_dist_id_char_4
4907  , alloc_to_dist_id_char_5
4908  , alloc_to_dist_id_num_1
4909  , alloc_to_dist_id_num_2
4910  , alloc_to_dist_id_num_3
4911  , alloc_to_dist_id_num_4
4912  , alloc_to_dist_id_num_5
4913  , analytical_balance_flag  -- Bug 7382288 Included analytical criteria
4914  , anc_id_1
4915  , anc_id_2
4916  , anc_id_3
4917  , anc_id_4
4918  , anc_id_5
4919  , anc_id_6
4920  , anc_id_7
4921  , anc_id_8
4922  , anc_id_9
4923  , anc_id_10
4924  , anc_id_11
4925  , anc_id_12
4926  , anc_id_13
4927  , anc_id_14
4928  , anc_id_15
4929  , anc_id_16
4930  , anc_id_17
4931  , anc_id_18
4932  , anc_id_19
4933  , anc_id_20
4934  , anc_id_21
4935  , anc_id_22
4936  , anc_id_23
4937  , anc_id_24
4938  , anc_id_25
4939  , anc_id_26
4940  , anc_id_27
4941  , anc_id_28
4942  , anc_id_29
4943  , anc_id_30
4944  , anc_id_31
4945  , anc_id_32
4946  , anc_id_33
4947  , anc_id_34
4948  , anc_id_35
4949  , anc_id_36
4950  , anc_id_37
4951  , anc_id_38
4952  , anc_id_39
4953  , anc_id_40
4954  , anc_id_41
4955  , anc_id_42
4956  , anc_id_43
4957  , anc_id_44
4958  , anc_id_45
4959  , anc_id_46
4960  , anc_id_47
4961  , anc_id_48
4962  , anc_id_49
4963  , anc_id_50
4964  , anc_id_51
4965  , anc_id_52
4966  , anc_id_53
4967  , anc_id_54
4968  , anc_id_55
4969  , anc_id_56
4970  , anc_id_57
4971  , anc_id_58
4972  , anc_id_59
4973  , anc_id_60
4974  , anc_id_61
4975  , anc_id_62
4976  , anc_id_63
4977  , anc_id_64
4978  , anc_id_65
4979  , anc_id_66
4980  , anc_id_67
4981  , anc_id_68
4982  , anc_id_69
4983  , anc_id_70
4984  , anc_id_71
4985  , anc_id_72
4986  , anc_id_73
4987  , anc_id_74
4988  , anc_id_75
4989  , anc_id_76
4990  , anc_id_77
4991  , anc_id_78
4992  , anc_id_79
4993  , anc_id_80
4994  , anc_id_81
4995  , anc_id_82
4996  , anc_id_83
4997  , anc_id_84
4998  , anc_id_85
4999  , anc_id_86
5000  , anc_id_87
5001  , anc_id_88
5002  , anc_id_89
5003  , anc_id_90
5004  , anc_id_91
5005  , anc_id_92
5006  , anc_id_93
5007  , anc_id_94
5008  , anc_id_95
5009  , anc_id_96
5010  , anc_id_97
5011  , anc_id_98
5012  , anc_id_99
5013  , anc_id_100
5014     FROM
5015      (SELECT /*+ ORDERED USE_HASH(lgt2) USE_NL(hgt) */
5016          -- populates ae_header_id which is same as event_id till this point
5017           lgt1.event_id                                AE_HEADER_ID
5018          -- populates temp_line_num which is (-ve) of original line
5019          ,0-lgt2.temp_line_num                         TEMP_LINE_NUM
5020          -- populates event_id which is the event_id of event under process
5021          ,lgt1.event_id                                EVENT_ID
5022          -- populates ref_ae_header_id which is ae_header_id of original line
5023          ,hgt.ae_header_id                             REF_AE_HEADER_ID
5024          -- populates ref_ae_line_num which is ae_line_num of original line
5025          ,lgt2.ae_line_num                             REF_AE_LINE_NUM
5026          -- populates ref_temp_line_num which is ae_line_num of original line
5027          ,lgt2.temp_line_num                           REF_TEMP_LINE_NUM
5028          -- populates ref_event_id which is event_id of original line
5029          ,lgt2.event_id                                REF_EVENT_ID
5030          ,lgt2.ledger_id                               LEDGER_ID
5031          ,lgt2.balance_type_code                       BALANCE_TYPE_CODE
5032          ,lgt2.accounting_class_code                   ACCOUNTING_CLASS_CODE
5033          ,lgt2.event_class_code                        EVENT_CLASS_CODE
5034          ,lgt2.event_type_code                         EVENT_TYPE_CODE
5035          ,lgt2.line_definition_owner_code              LINE_DEFINITION_OWNER_CODE
5036          ,lgt2.line_definition_code                    LINE_DEFINITION_CODE
5037          ,lgt2.accounting_line_type_code               ACCOUNTING_LINE_TYPE_CODE
5038          ,lgt2.accounting_line_code                    ACCOUNTING_LINE_CODE
5039                   ,decode(lgt2.gain_or_loss_flag, 'Y'
5040              ,decode(lgt2.calculate_g_l_amts_flag,'Y'
5041                 ,lgt2.alt_ccid_status_code,lgt2.code_combination_status_code)
5042          ,lgt2.code_combination_status_code)
5043                                                        CODE_COMBINATION_STATUS_CODE
5044          ,decode(lgt2.gain_or_loss_flag, 'Y'
5045             ,decode(lgt2.calculate_g_l_amts_flag,'Y'
5046                 ,lgt2.alt_code_combination_id, lgt2.code_combination_id)
5047         , lgt2.code_combination_id)
5048                                                        CODE_COMBINATION_ID
5049          ,lgt2.sl_coa_mapping_name                    SL_COA_MAPPING_NAME
5050          ,lgt2.dynamic_insert_flag                     DYNAMIC_INSERT_FLAG
5051          ,lgt2.source_coa_id                           SOURCE_COA_ID
5052          ,lgt2.ccid_coa_id                             CCID_COA_ID
5053          ,lgt2.calculate_acctd_amts_flag               CALCULATE_ACCTD_AMTS_FLAG
5054          ,lgt2.calculate_g_l_amts_flag                 CALCULATE_G_L_AMTS_FLAG
5055          ,lgt2.gain_or_loss_flag                       GAIN_OR_LOSS_FLAG
5056          ,lgt2.rounding_class_code                     ROUNDING_CLASS_CODE
5057          ,lgt2.document_rounding_level                 DOCUMENT_ROUNDING_LEVEL
5058          ,lgt2.doc_rounding_acctd_amt                  DOC_ROUNDING_ACCTD_AMT
5059          ,lgt2.doc_rounding_entered_amt                DOC_ROUNDING_ENTERED_AMT
5060          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.code_combination_status_code ,lgt2.alt_ccid_status_code)
5061                                                        ALT_CCID_STATUS_CODE
5062          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.code_combination_id ,lgt2.alt_code_combination_id)
5063                                                        ALT_CODE_COMBINATION_ID
5064          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment1,lgt2.alt_segment1)     ALT_SEGMENT1
5065          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment2,lgt2.alt_segment2)     ALT_SEGMENT2
5066          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment3,lgt2.alt_segment3)     ALT_SEGMENT3
5067          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment4,lgt2.alt_segment4)     ALT_SEGMENT4
5068          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment5,lgt2.alt_segment5)     ALT_SEGMENT5
5069          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment6,lgt2.alt_segment6)     ALT_SEGMENT6
5070          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment7,lgt2.alt_segment7)     ALT_SEGMENT7
5071          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment8,lgt2.alt_segment8)     ALT_SEGMENT8
5072          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment9,lgt2.alt_segment9)     ALT_SEGMENT9
5073          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment10,lgt2.alt_segment10)   ALT_SEGMENT10
5074          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment11,lgt2.alt_segment11)   ALT_SEGMENT11
5075          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment12,lgt2.alt_segment12)   ALT_SEGMENT12
5076          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment13,lgt2.alt_segment13)   ALT_SEGMENT13
5077          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment14,lgt2.alt_segment14)   ALT_SEGMENT14
5078          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment15,lgt2.alt_segment15)   ALT_SEGMENT15
5079          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment16,lgt2.alt_segment16)   ALT_SEGMENT16
5080          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment17,lgt2.alt_segment17)   ALT_SEGMENT17
5081          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment18,lgt2.alt_segment18)   ALT_SEGMENT18
5082          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment19,lgt2.alt_segment19)   ALT_SEGMENT19
5083          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment20,lgt2.alt_segment20)   ALT_SEGMENT20
5084          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment21,lgt2.alt_segment21)   ALT_SEGMENT21
5085          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment22,lgt2.alt_segment22)   ALT_SEGMENT22
5086          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment23,lgt2.alt_segment23)   ALT_SEGMENT23
5087          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment24,lgt2.alt_segment24)   ALT_SEGMENT24
5088          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment25,lgt2.alt_segment25)   ALT_SEGMENT25
5089          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment26,lgt2.alt_segment26)   ALT_SEGMENT26
5090          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment27,lgt2.alt_segment27)   ALT_SEGMENT27
5091          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment28,lgt2.alt_segment28)   ALT_SEGMENT28
5092          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment29,lgt2.alt_segment29)   ALT_SEGMENT29
5093          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment30,lgt2.alt_segment30)   ALT_SEGMENT30
5094          ,decode(lgt2.gain_or_loss_flag, 'Y'
5095          ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment1,lgt2.segment1)
5096          ,lgt2.segment1)                                                   SEGMENT1
5097          ,decode(lgt2.gain_or_loss_flag, 'Y'
5098              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment2,lgt2.segment2)
5099          ,lgt2.segment2)                                                   SEGMENT2
5100 
5101          ,decode(lgt2.gain_or_loss_flag, 'Y'
5102              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment3,lgt2.segment3)
5103          ,lgt2.segment3)                                                   SEGMENT3
5104 
5105          ,decode(lgt2.gain_or_loss_flag, 'Y'
5106              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment4,lgt2.segment4)
5107          ,lgt2.segment4)                                                     SEGMENT4
5108 
5109          ,decode(lgt2.gain_or_loss_flag, 'Y'
5110              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment5,lgt2.segment5)
5111          ,lgt2.segment5)                                                   SEGMENT5
5112 
5113          ,decode(lgt2.gain_or_loss_flag, 'Y'
5114              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment6,lgt2.segment6)
5115          ,lgt2.segment6)                                                   SEGMENT6
5116 
5117          ,decode(lgt2.gain_or_loss_flag, 'Y'
5118              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment7,lgt2.segment7)
5119          ,lgt2.segment7)                                                  SEGMENT7
5120 
5121          ,decode(lgt2.gain_or_loss_flag, 'Y'
5122              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment8,lgt2.segment8)
5123          ,lgt2.segment8)                                                   SEGMENT8
5124 
5125          ,decode(lgt2.gain_or_loss_flag, 'Y'
5126                 ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment9,lgt2.segment9)
5127          ,lgt2.segment9)                                                   SEGMENT9
5128 
5129          ,decode(lgt2.gain_or_loss_flag, 'Y'
5130               ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment10,lgt2.segment10)
5131          ,lgt2.segment10)                                                   SEGMENT10
5132 
5133          ,decode(lgt2.gain_or_loss_flag, 'Y'
5134              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment11,lgt2.segment11)
5135          ,lgt2.segment11)                                                   SEGMENT11
5136 
5137          ,decode(lgt2.gain_or_loss_flag, 'Y'
5138              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment12,lgt2.segment12)
5139          ,lgt2.segment12)                                                   SEGMENT12
5140 
5141          ,decode(lgt2.gain_or_loss_flag, 'Y'
5142                ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment13,lgt2.segment13)
5143          ,lgt2.segment13)                                                   SEGMENT13
5144 
5145          ,decode(lgt2.gain_or_loss_flag, 'Y'
5146              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment14,lgt2.segment14)
5147          ,lgt2.segment14)                                                   SEGMENT14
5148 
5149          ,decode(lgt2.gain_or_loss_flag, 'Y'
5150              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment15,lgt2.segment15)
5151          ,lgt2.segment15)                                                   SEGMENT15
5152 
5153          ,decode(lgt2.gain_or_loss_flag, 'Y'
5154               ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment16,lgt2.segment16)
5155          ,lgt2.segment16)                                                   SEGMENT16
5156 
5157          ,decode(lgt2.gain_or_loss_flag, 'Y'
5158               ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment17,lgt2.segment17)
5159          ,lgt2.segment17)                                                   SEGMENT17
5160 
5161          ,decode(lgt2.gain_or_loss_flag, 'Y'
5162              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment18,lgt2.segment18)
5163          ,lgt2.segment18)                                                   SEGMENT18
5164 
5165          ,decode(lgt2.gain_or_loss_flag, 'Y'
5166              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment19,lgt2.segment19)
5167          ,lgt2.segment19)                                                   SEGMENT19
5168 
5169          ,decode(lgt2.gain_or_loss_flag, 'Y'
5170              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment20,lgt2.segment20)
5171          ,lgt2.segment20)                                                  SEGMENT20
5172 
5173          ,decode(lgt2.gain_or_loss_flag, 'Y'
5174              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment21,lgt2.segment21)
5175          ,lgt2.segment21)                                                   SEGMENT21
5176 
5177          ,decode(lgt2.gain_or_loss_flag, 'Y'
5178              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment22,lgt2.segment22)
5179          ,lgt2.segment22)                                                   SEGMENT22
5180 
5181          ,decode(lgt2.gain_or_loss_flag, 'Y'
5182              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment23,lgt2.segment23)
5183          ,lgt2.segment23)                                                   SEGMENT23
5184 
5185          ,decode(lgt2.gain_or_loss_flag, 'Y'
5186              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment24,lgt2.segment24)
5187          ,lgt2.segment24)                                                   SEGMENT24
5188 
5189          ,decode(lgt2.gain_or_loss_flag, 'Y'
5190              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment25,lgt2.segment25)
5191          ,lgt2.segment25)                                                   SEGMENT25
5192 
5193          ,decode(lgt2.gain_or_loss_flag, 'Y'
5194              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment26,lgt2.segment26)
5195          ,lgt2.segment26)                                                   SEGMENT26
5196 
5197          ,decode(lgt2.gain_or_loss_flag, 'Y'
5198              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment27,lgt2.segment27)
5199          ,lgt2.segment27)                                                   SEGMENT27
5200 
5201          ,decode(lgt2.gain_or_loss_flag, 'Y'
5202              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment28,lgt2.segment28)
5203          ,lgt2.segment28)                                                  SEGMENT28
5204 
5205          ,decode(lgt2.gain_or_loss_flag, 'Y'
5206              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment29,lgt2.segment29)
5207          ,lgt2.segment29)                                                   SEGMENT29
5208 
5209          ,decode(lgt2.gain_or_loss_flag, 'Y'
5210              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment30,lgt2.segment30)
5211          ,lgt2.segment30)                                                   SEGMENT30
5212          ,lgt2.description                             DESCRIPTION
5213          ,lgt2.gl_transfer_mode_code                   GL_TRANSFER_MODE_CODE
5214          ,lgt2.merge_duplicate_code                    MERGE_DUPLICATE_CODE
5215          ,decode(lgt2.gain_or_loss_flag, 'Y', decode(lgt2.calculate_g_l_amts_flag, 'Y', 'Y', 'N'), lgt1.switch_side_flag)
5216                                                        SWITCH_SIDE_FLAG -- bug:7337288 changed lgt2 to lgt1 for switch side flag
5217          -- 5055878 amounts modified for reversal method of SIDE or SIGN
5218          ,DECODE(lgt1.switch_side_flag,'Y',lgt2.unrounded_entered_cr,  -lgt2.unrounded_entered_dr)       UNROUNDED_ENTERED_DR
5219          ,DECODE(lgt1.switch_side_flag,'Y',lgt2.unrounded_entered_dr,  -lgt2.unrounded_entered_cr)       UNROUNDED_ENTERED_CR
5220          ,DECODE(lgt1.switch_side_flag,'Y',lgt2.unrounded_accounted_cr,-lgt2.unrounded_accounted_dr)     UNROUNDED_ACCOUNTED_DR
5221          ,DECODE(lgt1.switch_side_flag,'Y',lgt2.unrounded_accounted_dr,-lgt2.unrounded_accounted_cr)     UNROUNDED_ACCOUNTED_CR
5222          --
5223          ,lgt2.entered_currency_mau                    ENTERED_CURRENCY_MAU
5224          ,lgt2.currency_code                           CURRENCY_CODE
5225          ,lgt2.currency_conversion_date                CURRENCY_CONVERSION_DATE
5226          ,lgt2.currency_conversion_rate                CURRENCY_CONVERSION_RATE
5227          ,lgt2.currency_conversion_type                CURRENCY_CONVERSION_TYPE
5228          ,lgt2.statistical_amount                      STATISTICAL_AMOUNT
5229          ,lgt2.party_id                                PARTY_ID
5230          ,lgt2.party_site_id                           PARTY_SITE_ID
5231          ,lgt2.party_type_code                         PARTY_TYPE_CODE
5232          ,lgt2.ussgl_transaction_code                  USSGL_TRANSACTION_CODE
5233          ,lgt2.jgzz_recon_ref                          JGZZ_RECON_REF
5234          ,lgt1.source_distribution_id_char_1           SOURCE_DISTRIBUTION_ID_CHAR_1
5235          ,lgt1.source_distribution_id_char_2           SOURCE_DISTRIBUTION_ID_CHAR_2
5236          ,lgt1.source_distribution_id_char_3           SOURCE_DISTRIBUTION_ID_CHAR_3
5237          ,lgt1.source_distribution_id_char_4           SOURCE_DISTRIBUTION_ID_CHAR_4
5238          ,lgt1.source_distribution_id_char_5           SOURCE_DISTRIBUTION_ID_CHAR_5
5239          ,lgt1.source_distribution_id_num_1            SOURCE_DISTRIBUTION_ID_NUM_1
5240          ,lgt1.source_distribution_id_num_2            SOURCE_DISTRIBUTION_ID_NUM_2
5241          ,lgt1.source_distribution_id_num_3            SOURCE_DISTRIBUTION_ID_NUM_3
5242          ,lgt1.source_distribution_id_num_4            SOURCE_DISTRIBUTION_ID_NUM_4
5243          ,lgt1.source_distribution_id_num_5            SOURCE_DISTRIBUTION_ID_NUM_5
5244          ,lgt1.source_distribution_type                SOURCE_DISTRIBUTION_TYPE
5245          ,lgt2.source_distribution_id_char_1           REVERSE_DIST_ID_CHAR_1
5246          ,lgt2.source_distribution_id_char_2           REVERSE_DIST_ID_CHAR_2
5247          ,lgt2.source_distribution_id_char_3           REVERSE_DIST_ID_CHAR_3
5248          ,lgt2.source_distribution_id_char_4           REVERSE_DIST_ID_CHAR_4
5249          ,lgt2.source_distribution_id_char_5           REVERSE_DIST_ID_CHAR_5
5250          ,lgt2.source_distribution_id_num_1            REVERSE_DIST_ID_NUM_1
5251          ,lgt2.source_distribution_id_num_2            REVERSE_DIST_ID_NUM_2
5252          ,lgt2.source_distribution_id_num_3            REVERSE_DIST_ID_NUM_3
5253          ,lgt2.source_distribution_id_num_4            REVERSE_DIST_ID_NUM_4
5254          ,lgt2.source_distribution_id_num_5            REVERSE_DIST_ID_NUM_5
5255          ,lgt2.source_distribution_type                REVERSE_DISTRIBUTION_TYPE
5256          ,nvl(lgt1.tax_line_ref_id,lgt2.tax_line_ref_id)                   TAX_LINE_REF_ID          -- bug 7159711
5257          ,nvl(lgt1.tax_summary_line_ref_id,lgt2.tax_summary_line_ref_id)   TAX_SUMMARY_LINE_REF_ID  -- bug 7159711
5258          ,nvl(lgt1.tax_rec_nrec_dist_ref_id,lgt2.tax_rec_nrec_dist_ref_id) TAX_REC_NREC_DIST_REF_ID -- bug 7159711
5259          ,NVL(lgt2.header_num,0)                       HEADER_NUM
5260          ,lgt2.mpa_accrual_entry_flag                  MPA_ACCRUAL_ENTRY_FLAG
5261          ,lgt2.multiperiod_option_flag                 MULTIPERIOD_OPTION_FLAG
5262          ,lgt2.multiperiod_start_date                  MULTIPERIOD_START_DATE
5263          ,lgt2.multiperiod_end_date                    MULTIPERIOD_END_DATE
5264          -- populate reversal_code indicating that line is result of reversal
5265          ,'REVERSAL'                                   REVERSAL_CODE
5266          ,'N'                                          INHERIT_DESC_FLAG
5267          ,lgt2.encumbrance_type_id                     ENCUMBRANCE_TYPE_ID
5268          -- denormalises entry status from headers to line to determine the status of entry being created
5269          ,hgt.accounting_entry_status_code             ACCOUNTING_ENTRY_STATUS_CODE
5270          ,lgt1.accounting_date                         ACCOUNTING_DATE
5271          -- the following assigns duplicate rownum to reversal lines created from same
5272          -- original line. This is used to filter duplicate rows in the outer query.
5273          ,row_number() over
5274               (partition by lgt2.ref_ae_header_Id, lgt2.ledger_id,lgt2.temp_line_num
5275                    order by lgt1.event_number
5276               ) rn
5277  , lgt2.BFLOW_APPLICATION_ID
5278         , lgt2.BFLOW_ENTITY_CODE
5279         , lgt2.APPLIED_TO_ENTITY_ID
5280         , lgt2.BFLOW_SOURCE_ID_NUM_1
5281         , lgt2.BFLOW_SOURCE_ID_NUM_2
5282         , lgt2.BFLOW_SOURCE_ID_NUM_3
5283         , lgt2.BFLOW_SOURCE_ID_NUM_4
5284         , lgt2.BFLOW_SOURCE_ID_CHAR_1
5285         , lgt2.BFLOW_SOURCE_ID_CHAR_2
5286         , lgt2.BFLOW_SOURCE_ID_CHAR_3
5287         , lgt2.BFLOW_SOURCE_ID_CHAR_4
5288         , lgt2.BFLOW_DISTRIBUTION_TYPE
5289         , lgt2.BFLOW_DIST_ID_NUM_1
5290         , lgt2.BFLOW_DIST_ID_NUM_2
5291         , lgt2.BFLOW_DIST_ID_NUM_3
5292         , lgt2.BFLOW_DIST_ID_NUM_4
5293         , lgt2.BFLOW_DIST_ID_NUM_5
5294         , lgt2.BFLOW_DIST_ID_CHAR_1
5295         , lgt2.BFLOW_DIST_ID_CHAR_2
5296         , lgt2.BFLOW_DIST_ID_CHAR_3
5297         , lgt2.BFLOW_DIST_ID_CHAR_4
5298         , lgt2.BFLOW_DIST_ID_CHAR_5
5299  , lgt2.alloc_to_application_id     alloc_to_application_id
5300  , lgt2.alloc_to_entity_code        alloc_to_entity_code
5301  , lgt2.alloc_to_source_id_num_1        alloc_to_source_id_num_1
5302  , lgt2.alloc_to_source_id_num_2        alloc_to_source_id_num_2
5303  , lgt2.alloc_to_source_id_num_3        alloc_to_source_id_num_3
5304  , lgt2.alloc_to_source_id_num_4        alloc_to_source_id_num_4
5305  , lgt2.alloc_to_source_id_char_1   alloc_to_source_id_char_1
5306  , lgt2.alloc_to_source_id_char_2   alloc_to_source_id_char_2
5307  , lgt2.alloc_to_source_id_char_3   alloc_to_source_id_char_3
5308  , lgt2.alloc_to_source_id_char_4   alloc_to_source_id_char_4
5309  , lgt2.alloc_to_distribution_type  alloc_to_distribution_type
5310  , lgt2.alloc_to_dist_id_char_1     alloc_to_dist_id_char_1
5311  , lgt2.alloc_to_dist_id_char_2     alloc_to_dist_id_char_2
5312  , lgt2.alloc_to_dist_id_char_3     alloc_to_dist_id_char_3
5313  , lgt2.alloc_to_dist_id_char_4     alloc_to_dist_id_char_4
5314  , lgt2.alloc_to_dist_id_char_5     alloc_to_dist_id_char_5
5315  , lgt2.alloc_to_dist_id_num_1      alloc_to_dist_id_num_1
5316  , lgt2.alloc_to_dist_id_num_2      alloc_to_dist_id_num_2
5317  , lgt2.alloc_to_dist_id_num_3      alloc_to_dist_id_num_3
5318  , lgt2.alloc_to_dist_id_num_4      alloc_to_dist_id_num_4
5319  , lgt2.alloc_to_dist_id_num_5      alloc_to_dist_id_num_5
5320  , lgt2.analytical_balance_flag -- Bug 7382288- Included analytical criteria
5321  , lgt2.anc_id_1
5322  , lgt2.anc_id_2
5323  , lgt2.anc_id_3
5324  , lgt2.anc_id_4
5325  , lgt2.anc_id_5
5326  , lgt2.anc_id_6
5327  , lgt2.anc_id_7
5328  , lgt2.anc_id_8
5329  , lgt2.anc_id_9
5330  , lgt2.anc_id_10
5331  , lgt2.anc_id_11
5332  , lgt2.anc_id_12
5333  , lgt2.anc_id_13
5334  , lgt2.anc_id_14
5335  , lgt2.anc_id_15
5336  , lgt2.anc_id_16
5337  , lgt2.anc_id_17
5338  , lgt2.anc_id_18
5339  , lgt2.anc_id_19
5340  , lgt2.anc_id_20
5341  , lgt2.anc_id_21
5342  , lgt2.anc_id_22
5343  , lgt2.anc_id_23
5344  , lgt2.anc_id_24
5345  , lgt2.anc_id_25
5346  , lgt2.anc_id_26
5347  , lgt2.anc_id_27
5348  , lgt2.anc_id_28
5349  , lgt2.anc_id_29
5350  , lgt2.anc_id_30
5351  , lgt2.anc_id_31
5352  , lgt2.anc_id_32
5353  , lgt2.anc_id_33
5354  , lgt2.anc_id_34
5355  , lgt2.anc_id_35
5356  , lgt2.anc_id_36
5357  , lgt2.anc_id_37
5358  , lgt2.anc_id_38
5359  , lgt2.anc_id_39
5360  , lgt2.anc_id_40
5361  , lgt2.anc_id_41
5362  , lgt2.anc_id_42
5363  , lgt2.anc_id_43
5364  , lgt2.anc_id_44
5365  , lgt2.anc_id_45
5366  , lgt2.anc_id_46
5367  , lgt2.anc_id_47
5368  , lgt2.anc_id_48
5369  , lgt2.anc_id_49
5370  , lgt2.anc_id_50
5371  , lgt2.anc_id_51
5372  , lgt2.anc_id_52
5373  , lgt2.anc_id_53
5374  , lgt2.anc_id_54
5375  , lgt2.anc_id_55
5376  , lgt2.anc_id_56
5377  , lgt2.anc_id_57
5378  , lgt2.anc_id_58
5379  , lgt2.anc_id_59
5380  , lgt2.anc_id_60
5381  , lgt2.anc_id_61
5382  , lgt2.anc_id_62
5383  , lgt2.anc_id_63
5384  , lgt2.anc_id_64
5385  , lgt2.anc_id_65
5386  , lgt2.anc_id_66
5387  , lgt2.anc_id_67
5388  , lgt2.anc_id_68
5389  , lgt2.anc_id_69
5390  , lgt2.anc_id_70
5391  , lgt2.anc_id_71
5392  , lgt2.anc_id_72
5393  , lgt2.anc_id_73
5394  , lgt2.anc_id_74
5395  , lgt2.anc_id_75
5396  , lgt2.anc_id_76
5397  , lgt2.anc_id_77
5398  , lgt2.anc_id_78
5399  , lgt2.anc_id_79
5400  , lgt2.anc_id_80
5401  , lgt2.anc_id_81
5402  , lgt2.anc_id_82
5403  , lgt2.anc_id_83
5404  , lgt2.anc_id_84
5405  , lgt2.anc_id_85
5406  , lgt2.anc_id_86
5407  , lgt2.anc_id_87
5408  , lgt2.anc_id_88
5409  , lgt2.anc_id_89
5410  , lgt2.anc_id_90
5411  , lgt2.anc_id_91
5412  , lgt2.anc_id_92
5413  , lgt2.anc_id_93
5414  , lgt2.anc_id_94
5415  , lgt2.anc_id_95
5416  , lgt2.anc_id_96
5417  , lgt2.anc_id_97
5418  , lgt2.anc_id_98
5419  , lgt2.anc_id_99
5420  , lgt2.anc_id_100
5421         FROM
5422           xla_ae_lines_gt     lgt1
5423          ,xla_ae_lines_gt     lgt2
5424          ,xla_ae_headers_gt   hgt
5425       WHERE lgt1.reversal_code                              = 'DUMMY_LR'
5426         AND lgt2.ledger_id                                  = lgt1.ledger_id
5427         AND lgt2.source_distribution_type                   = lgt1.reverse_distribution_type
5428         AND nvl(lgt2.source_distribution_id_num_1,-99)      = nvl(lgt1.reverse_dist_id_num_1,-99)
5429         AND nvl(lgt2.source_distribution_id_num_2,-99)      = nvl(lgt1.reverse_dist_id_num_2,-99)
5430         AND nvl(lgt2.source_distribution_id_num_3,-99)      = nvl(lgt1.reverse_dist_id_num_3,-99)
5431         AND nvl(lgt2.source_distribution_id_num_4,-99)      = nvl(lgt1.reverse_dist_id_num_4,-99)
5432         AND nvl(lgt2.source_distribution_id_num_5,-99)      = nvl(lgt1.reverse_dist_id_num_5,-99)
5433         AND nvl(lgt2.source_distribution_id_char_1,' ')     = nvl(lgt1.reverse_dist_id_char_1,' ')
5434         AND nvl(lgt2.source_distribution_id_char_2,' ')     = nvl(lgt1.reverse_dist_id_char_2,' ')
5435         AND nvl(lgt2.source_distribution_id_char_3,' ')     = nvl(lgt1.reverse_dist_id_char_3,' ')
5436         AND nvl(lgt2.source_distribution_id_char_4,' ')     = nvl(lgt1.reverse_dist_id_char_4,' ')
5437         AND nvl(lgt2.source_distribution_id_char_5,' ')     = nvl(lgt1.reverse_dist_id_char_5,' ')
5438         AND hgt.event_id            = lgt2.event_id
5439         AND hgt.ledger_id           = lgt2.ledger_id
5440         AND hgt.balance_type_code   = lgt2.balance_type_code
5441         AND hgt.entity_id           = lgt1.entity_id
5442         -- lines for events with event number > current event number are not reversed.
5443         AND hgt.event_number        < lgt1.event_number
5444         AND hgt.header_num          = lgt2.header_num-- 4262811c  Line Reversal (xla_ae_lines_gt_u1 error)
5445         AND hgt.ae_header_id        = lgt2.ae_header_id
5446      )
5447     WHERE rn = 1
5448   );
5449 
5450 
5451    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
5452       trace
5453          (p_msg      => 'Line Reversal - Reversal lines created from xla_ae_lines_gt = '||SQL%ROWCOUNT
5454          ,p_level    => C_LEVEL_STATEMENT
5455          ,p_module   => l_log_module);
5456    END IF;
5457 
5458    --------------------------------------------------------------------------------------------------------
5459    -- 5108415 For Line Reversal, Store the incomplete MPA/AccRev entries to be used in DeleteIncompleteMPA
5460    --------------------------------------------------------------------------------------------------------
5461    IF p_accounting_mode IN ('F','RESERVE_FUNDS') THEN
5462 
5463       SELECT /*+ Leading(LGT,XDL)  use_nl(lgt xdl aeh ael)*/  -- 5262950
5464              ael.ae_header_id
5465             ,ael.ae_line_num
5466             ,aeh.parent_ae_header_id
5467       BULK COLLECT INTO
5468              g_incomplete_mpa_acc_LR.l_array_ae_header_id
5469             ,g_incomplete_mpa_acc_LR.l_array_ae_line_num
5470             ,g_incomplete_mpa_acc_LR.l_array_parent_ae_header
5471       FROM
5472            xla_ae_lines_gt           lgt
5473           ,xla_ae_lines              ael
5474           ,xla_ae_headers            aeh
5475           ,xla_distribution_links    xdl
5476       WHERE xdl.application_id                          = l_application_id
5477         AND xdl.source_distribution_type                = lgt.reverse_distribution_type
5478         AND lgt.reversal_code                           = 'DUMMY_LR'
5479         AND     xdl.source_distribution_id_num_1        =     lgt.reverse_dist_id_num_1       -- 5479652
5480         AND nvl(xdl.source_distribution_id_num_2,-99)   = nvl(lgt.reverse_dist_id_num_2,-99)
5481         AND nvl(xdl.source_distribution_id_num_3,-99)   = nvl(lgt.reverse_dist_id_num_3,-99)
5482         AND nvl(xdl.source_distribution_id_num_4,-99)   = nvl(lgt.reverse_dist_id_num_4,-99)
5483         AND nvl(xdl.source_distribution_id_num_5,-99)   = nvl(lgt.reverse_dist_id_num_5,-99)
5484         AND nvl(xdl.source_distribution_id_char_1,' ')  = nvl(lgt.reverse_dist_id_char_1,' ')
5485         AND nvl(xdl.source_distribution_id_char_2,' ')  = nvl(lgt.reverse_dist_id_char_2,' ')
5486         AND nvl(xdl.source_distribution_id_char_3,' ')  = nvl(lgt.reverse_dist_id_char_3,' ')
5487         AND nvl(xdl.source_distribution_id_char_4,' ')  = nvl(lgt.reverse_dist_id_char_4,' ')
5488         AND nvl(xdl.source_distribution_id_char_5,' ')  = nvl(lgt.reverse_dist_id_char_5,' ')
5489         AND aeh.application_id                          = xdl.application_id
5490         AND aeh.ae_header_id                            = xdl.ae_header_id
5491         AND aeh.ledger_id                               = lgt.ledger_id
5492         AND aeh.entity_id                               = lgt.entity_id
5493         AND ael.application_id                          = aeh.application_id
5494         AND ael.ae_header_id                            = aeh.ae_header_id
5495         AND ael.ae_line_num                             = xdl.ae_line_num
5496         AND aeh.parent_ae_header_id IS NOT NULL AND aeh.accounting_entry_status_code IN ('D','N','I','R','RELATED_EVENT_ERROR');  -- 5262950 incomplete MPA/AccRev
5497 
5498       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
5499          trace
5500                (p_msg      => 'Incomplete mpa_acc_LR  count='||g_incomplete_mpa_acc_LR.l_array_ae_header_id.COUNT
5501                ,p_level    => C_LEVEL_STATEMENT
5502                ,p_module   => l_log_module);
5503          FOR i in 1..g_incomplete_mpa_acc_LR.l_array_ae_header_id.COUNT LOOP
5504             trace
5505                (p_msg      => 'Incomplete mpa_acc_LR  ae_header='||g_incomplete_mpa_acc_LR.l_array_ae_header_id(i)||
5506                               ' ae_line='||g_incomplete_mpa_acc_LR.l_array_ae_line_num(i)||
5507                               ' parent='||g_incomplete_mpa_acc_LR.l_array_parent_ae_header(i)
5508                ,p_level    => C_LEVEL_STATEMENT
5509                ,p_module   => l_log_module);
5510          END LOOP;
5511       END IF;
5512    END IF;
5513    -------------------------------------------------------------------------------------------
5514 
5515    --
5516    ---------------------------------------------------------------------------------------------------------
5517    -- Reverse the lines in xla_ae_lines table
5518    --
5519    -- Some for 4669308:
5520    --          For MPA entries, only reverse what is necessary , ie create reversal for Complete MPA only.
5521    --          Do not create reversal for incomplete entry (since it will get deleted anyway).
5522    --          Also, since the redundant lines will affect ROUNDING calculation.
5523    --          Need to create reversal in Draft mode also (so can be viewed).
5524    ---------------------------------------------------------------------------------------------------------
5525    --
5526    INSERT INTO xla_ae_lines_gt
5527       (ae_header_id
5528       ,temp_line_num
5529       ,event_id
5530       ,ref_ae_header_id
5531       ,ref_ae_line_num
5532       ,ref_temp_line_num
5533       ,ref_event_id
5534       ,ledger_id
5535       ,balance_type_code
5536       ,accounting_class_code
5537       ,event_class_code
5538       ,event_type_code
5539       ,line_definition_owner_code
5540       ,line_definition_code
5541       ,accounting_line_type_code
5542       ,accounting_line_code
5543       ,code_combination_status_code
5544       ,code_combination_id
5545       ,alt_ccid_status_code
5546       ,alt_code_combination_id
5547       ,description
5548       ,gl_transfer_mode_code
5549       ,merge_duplicate_code
5550       ,switch_side_flag  -- 5055878
5551       ,unrounded_entered_dr
5552       ,unrounded_entered_cr
5553       ,unrounded_accounted_dr
5554       ,unrounded_accounted_cr
5555       ,calculate_acctd_amts_flag
5556       ,calculate_g_l_amts_flag
5557       ,gain_or_loss_flag
5558       ,rounding_class_code
5559       ,document_rounding_level
5560       ,doc_rounding_acctd_amt
5561       ,doc_rounding_entered_amt
5562       ,entered_currency_mau
5563       ,currency_code
5564       ,currency_conversion_date
5565       ,currency_conversion_rate
5566       ,currency_conversion_type
5567       ,statistical_amount
5568       ,party_id
5569       ,party_site_id
5570       ,party_type_code
5571       ,ussgl_transaction_code
5572       ,jgzz_recon_ref
5573       ,source_distribution_id_char_1
5574       ,source_distribution_id_char_2
5575       ,source_distribution_id_char_3
5576       ,source_distribution_id_char_4
5577       ,source_distribution_id_char_5
5578       ,source_distribution_id_num_1
5579       ,source_distribution_id_num_2
5580       ,source_distribution_id_num_3
5581       ,source_distribution_id_num_4
5582       ,source_distribution_id_num_5
5583       ,source_distribution_type
5584       ,reverse_dist_id_char_1
5585       ,reverse_dist_id_char_2
5586       ,reverse_dist_id_char_3
5587       ,reverse_dist_id_char_4
5588       ,reverse_dist_id_char_5
5589       ,reverse_dist_id_num_1
5590       ,reverse_dist_id_num_2
5591       ,reverse_dist_id_num_3
5592       ,reverse_dist_id_num_4
5593       ,reverse_dist_id_num_5
5594       ,reverse_distribution_type
5595       ,reversal_code
5596       ,accounting_entry_status_code
5597       ,inherit_desc_flag
5598       ,header_num
5599       ,encumbrance_type_id
5600       ,mpa_accrual_entry_flag
5601       ,accounting_date
5602        , BFLOW_APPLICATION_ID
5603         , BFLOW_ENTITY_CODE
5604         , APPLIED_TO_ENTITY_ID
5605         , BFLOW_SOURCE_ID_NUM_1
5606         , BFLOW_SOURCE_ID_NUM_2
5607         , BFLOW_SOURCE_ID_NUM_3
5608         , BFLOW_SOURCE_ID_NUM_4
5609         , BFLOW_SOURCE_ID_CHAR_1
5610         , BFLOW_SOURCE_ID_CHAR_2
5611         , BFLOW_SOURCE_ID_CHAR_3
5612         , BFLOW_SOURCE_ID_CHAR_4
5613         , BFLOW_DISTRIBUTION_TYPE
5614         , BFLOW_DIST_ID_NUM_1
5615         , BFLOW_DIST_ID_NUM_2
5616         , BFLOW_DIST_ID_NUM_3
5617         , BFLOW_DIST_ID_NUM_4
5618         , BFLOW_DIST_ID_NUM_5
5619         , BFLOW_DIST_ID_CHAR_1
5620         , BFLOW_DIST_ID_CHAR_2
5621         , BFLOW_DIST_ID_CHAR_3
5622         , BFLOW_DIST_ID_CHAR_4
5623         , BFLOW_DIST_ID_CHAR_5
5624  , alloc_to_application_id
5625  , alloc_to_entity_code
5626  , alloc_to_source_id_num_1
5627  , alloc_to_source_id_num_2
5628  , alloc_to_source_id_num_3
5629  , alloc_to_source_id_num_4
5630  , alloc_to_source_id_char_1
5631  , alloc_to_source_id_char_2
5632  , alloc_to_source_id_char_3
5633  , alloc_to_source_id_char_4
5634  , alloc_to_distribution_type
5635  , alloc_to_dist_id_char_1
5636  , alloc_to_dist_id_char_2
5637  , alloc_to_dist_id_char_3
5638  , alloc_to_dist_id_char_4
5639  , alloc_to_dist_id_char_5
5640  , alloc_to_dist_id_num_1
5641  , alloc_to_dist_id_num_2
5642  , alloc_to_dist_id_num_3
5643  , alloc_to_dist_id_num_4
5644  , alloc_to_dist_id_num_5
5645  ,TAX_LINE_REF_ID           -- Bug 7159711
5646  ,TAX_SUMMARY_LINE_REF_ID   -- Bug 7159711
5647  ,TAX_REC_NREC_DIST_REF_ID  -- Bug 7159711
5648  ,analytical_balance_flag   -- Bug 7382288
5649  )
5650    (SELECT
5651        ae_header_id
5652       ,temp_line_num
5653       ,event_id
5654       ,ref_ae_header_id
5655       ,ref_ae_line_num
5656       ,ref_temp_line_num
5657       ,ref_event_id
5658       ,ledger_id
5659       ,balance_type_code
5660       ,accounting_class_code
5661       ,event_class_code
5662       ,event_type_code
5663       ,line_definition_owner_code
5664       ,line_definition_code
5665       ,accounting_line_type_code
5666       ,accounting_line_code
5667       ,code_combination_status_code
5668       ,code_combination_id
5669       ,code_combination_status_code
5670       ,code_combination_id
5671       ,description
5672       ,gl_transfer_mode_code
5673       ,merge_duplicate_code
5674       ,switch_side_flag  -- 5055878
5675       ,unrounded_entered_dr
5676       ,unrounded_entered_cr
5677       ,unrounded_accounted_dr
5678       ,unrounded_accounted_cr
5679       ,calculate_acctd_amts_flag
5680       ,calculate_g_l_amts_flag
5681       ,gain_or_loss_flag
5682       ,rounding_class_code
5683       ,document_rounding_level
5684       ,doc_rounding_acctd_amt
5685       ,doc_rounding_entered_amt
5686       ,entered_currency_mau
5687       ,currency_code
5688       ,currency_conversion_date
5689       ,currency_conversion_rate
5690       ,currency_conversion_type
5691       ,statistical_amount
5692       ,party_id
5693       ,party_site_id
5694       ,party_type_code
5695       ,ussgl_transaction_code
5696       ,jgzz_recon_ref
5697       ,source_distribution_id_char_1
5698       ,source_distribution_id_char_2
5699       ,source_distribution_id_char_3
5700       ,source_distribution_id_char_4
5701       ,source_distribution_id_char_5
5702       ,source_distribution_id_num_1
5703       ,source_distribution_id_num_2
5704       ,source_distribution_id_num_3
5705       ,source_distribution_id_num_4
5706       ,source_distribution_id_num_5
5707       ,source_distribution_type
5708       ,reverse_dist_id_char_1
5709       ,reverse_dist_id_char_2
5710       ,reverse_dist_id_char_3
5711       ,reverse_dist_id_char_4
5712       ,reverse_dist_id_char_5
5713       ,reverse_dist_id_num_1
5714       ,reverse_dist_id_num_2
5715       ,reverse_dist_id_num_3
5716       ,reverse_dist_id_num_4
5717       ,reverse_dist_id_num_5
5718       ,reverse_distribution_type
5719       ,reversal_code
5720       ,accounting_entry_status_code
5721       ,inherit_desc_flag
5722       ,header_num
5723       ,encumbrance_type_id
5724       ,mpa_accrual_entry_flag
5725       ,accounting_date
5726        , APPLIED_TO_APPLICATION_ID
5727  , APPLIED_TO_ENTITY_CODE
5728  , APPLIED_TO_ENTITY_ID
5729  , APPLIED_TO_SOURCE_ID_NUM_1
5730  , APPLIED_TO_SOURCE_ID_NUM_2
5731  , APPLIED_TO_SOURCE_ID_NUM_3
5732  , APPLIED_TO_SOURCE_ID_NUM_4
5733  , APPLIED_TO_SOURCE_ID_CHAR_1
5734  , APPLIED_TO_SOURCE_ID_CHAR_2
5735  , APPLIED_TO_SOURCE_ID_CHAR_3
5736  , APPLIED_TO_SOURCE_ID_CHAR_4
5737  , APPLIED_TO_DISTRIBUTION_TYPE
5738  , APPLIED_TO_DIST_ID_NUM_1
5739  , APPLIED_TO_DIST_ID_NUM_2
5740  , APPLIED_TO_DIST_ID_NUM_3
5741  , APPLIED_TO_DIST_ID_NUM_4
5742  , APPLIED_TO_DIST_ID_NUM_5
5743  , APPLIED_TO_DIST_ID_CHAR_1
5744  , APPLIED_TO_DIST_ID_CHAR_2
5745  , APPLIED_TO_DIST_ID_CHAR_3
5746  , APPLIED_TO_DIST_ID_CHAR_4
5747  , APPLIED_TO_DIST_ID_CHAR_5
5748  , alloc_to_application_id
5749  , alloc_to_entity_code
5750  , alloc_to_source_id_num_1
5751  , alloc_to_source_id_num_2
5752  , alloc_to_source_id_num_3
5753  , alloc_to_source_id_num_4
5754  , alloc_to_source_id_char_1
5755  , alloc_to_source_id_char_2
5756  , alloc_to_source_id_char_3
5757  , alloc_to_source_id_char_4
5758  , alloc_to_distribution_type
5759  , alloc_to_dist_id_char_1
5760  , alloc_to_dist_id_char_2
5761  , alloc_to_dist_id_char_3
5762  , alloc_to_dist_id_char_4
5763  , alloc_to_dist_id_char_5
5764  , alloc_to_dist_id_num_1
5765  , alloc_to_dist_id_num_2
5766  , alloc_to_dist_id_num_3
5767  , alloc_to_dist_id_num_4
5768  , alloc_to_dist_id_num_5
5769  ,TAX_LINE_REF_ID           -- Bug 7159711
5770  ,TAX_SUMMARY_LINE_REF_ID   -- Bug 7159711
5771  ,TAX_REC_NREC_DIST_REF_ID  -- Bug 7159711
5772  ,analytical_balance_flag   -- Bug 7382288
5773    FROM
5774       (SELECT /*+ leading(lgt) use_nl(xdl,ael,aeh) */
5775           -- populates ae_header_id which is same as event_id till this point
5776           lgt.event_id                                          AE_HEADER_ID
5777          -- populates temp_line_num which is (-ve) of original line
5778          ,0 - xdl.temp_line_num                                 TEMP_LINE_NUM
5779          -- populates event_id which is the event_id of event under process
5780          ,lgt.event_id                                          EVENT_ID
5781          -- populates ref_ae_header_id which is ae_header_id of original line
5782          ,ael.ae_header_id                                      REF_AE_HEADER_ID
5783          -- populates ref_ae_line_num which is ae_line_num of original line
5784          ,ael.ae_line_num                                       REF_AE_LINE_NUM
5785          -- populates ref_temp_line_num which is ae_line_num of original line
5786          ,xdl.temp_line_num                                     REF_TEMP_LINE_NUM
5787          -- populates ref_event_id which is event_id of original line
5788          ,xdl.event_id                                          REF_EVENT_ID
5789          ,lgt.ledger_id                                         LEDGER_ID
5790          ,aeh.balance_type_code                                 BALANCE_TYPE_CODE
5791          ,ael.accounting_class_code                             ACCOUNTING_CLASS_CODE
5792          ,xdl.event_class_code                                  EVENT_CLASS_CODE
5793          ,xdl.event_type_code                                   EVENT_TYPE_CODE
5794          ,xdl.line_definition_owner_code                        LINE_DEFINITION_OWNER_CODE
5795          ,xdl.line_definition_code                              LINE_DEFINITION_CODE
5796          ,xdl.accounting_line_type_code                         ACCOUNTING_LINE_TYPE_CODE
5797          ,xdl.accounting_line_code                              ACCOUNTING_LINE_CODE
5798          ,C_CREATED                                             CODE_COMBINATION_STATUS_CODE
5799          ,ael.code_combination_id                               CODE_COMBINATION_ID
5800          ,ael.description                                       DESCRIPTION
5801          ,ael.gl_transfer_mode_code                             GL_TRANSFER_MODE_CODE
5802          ,xdl.merge_duplicate_code                              MERGE_DUPLICATE_CODE
5803          ,decode(ael.gain_or_loss_flag, 'Y', decode(xdl.calculate_g_l_amts_flag, 'Y', 'Y', 'N'), lgt.switch_side_flag)
5804                                                                 SWITCH_SIDE_FLAG
5805          -- 5055878 amounts modified for reversal method of SIDE or SIGN
5806          ,DECODE(lgt.switch_side_flag,'Y',xdl.unrounded_entered_cr,  -xdl.unrounded_entered_dr)     UNROUNDED_ENTERED_DR
5807          ,DECODE(lgt.switch_side_flag,'Y',xdl.unrounded_entered_dr,  -xdl.unrounded_entered_cr)     UNROUNDED_ENTERED_CR
5808          ,DECODE(lgt.switch_side_flag,'Y',xdl.unrounded_accounted_cr,-xdl.unrounded_accounted_dr)   UNROUNDED_ACCOUNTED_DR
5809          ,DECODE(lgt.switch_side_flag,'Y',xdl.unrounded_accounted_dr,-xdl.unrounded_accounted_cr)   UNROUNDED_ACCOUNTED_CR
5810          --
5811          ,xdl.calculate_acctd_amts_flag                         CALCULATE_ACCTD_AMTS_FLAG
5812          ,xdl.calculate_g_l_amts_flag                           CALCULATE_G_L_AMTS_FLAG
5813          ,ael.gain_or_loss_flag                                 GAIN_OR_LOSS_FLAG
5814          ,xdl.rounding_class_code                               ROUNDING_CLASS_CODE
5815          ,xdl.document_rounding_level                           DOCUMENT_ROUNDING_LEVEL
5816          ,NULL                                                  DOC_ROUNDING_ACCTD_AMT
5817          ,NULL                                                  DOC_ROUNDING_ENTERED_AMT
5818          ,nvl(fcu.minimum_accountable_unit, power(10, -1*fcu.precision))         ENTERED_CURRENCY_MAU
5819          ,ael.currency_code                                     CURRENCY_CODE
5820          ,ael.currency_conversion_date                          CURRENCY_CONVERSION_DATE
5821          ,ael.currency_conversion_rate                          CURRENCY_CONVERSION_RATE
5822          ,ael.currency_conversion_type                          CURRENCY_CONVERSION_TYPE
5823          ,ael.statistical_amount                                STATISTICAL_AMOUNT
5824          ,ael.party_id                                          PARTY_ID
5825          ,ael.party_site_id                                     PARTY_SITE_ID
5826          ,ael.party_type_code                                   PARTY_TYPE_CODE
5827          ,ael.ussgl_transaction_code                            USSGL_TRANSACTION_CODE
5828          ,ael.jgzz_recon_ref                                    JGZZ_RECON_REF
5829          ,lgt.source_distribution_id_char_1                     SOURCE_DISTRIBUTION_ID_CHAR_1
5830          ,lgt.source_distribution_id_char_2                     SOURCE_DISTRIBUTION_ID_CHAR_2
5831          ,lgt.source_distribution_id_char_3                     SOURCE_DISTRIBUTION_ID_CHAR_3
5832          ,lgt.source_distribution_id_char_4                     SOURCE_DISTRIBUTION_ID_CHAR_4
5833          ,lgt.source_distribution_id_char_5                     SOURCE_DISTRIBUTION_ID_CHAR_5
5834          ,lgt.source_distribution_id_num_1                      SOURCE_DISTRIBUTION_ID_NUM_1
5835          ,lgt.source_distribution_id_num_2                      SOURCE_DISTRIBUTION_ID_NUM_2
5836          ,lgt.source_distribution_id_num_3                      SOURCE_DISTRIBUTION_ID_NUM_3
5837          ,lgt.source_distribution_id_num_4                      SOURCE_DISTRIBUTION_ID_NUM_4
5838          ,lgt.source_distribution_id_num_5                      SOURCE_DISTRIBUTION_ID_NUM_5
5839          ,lgt.source_distribution_type                          SOURCE_DISTRIBUTION_TYPE
5840          ,lgt.reverse_dist_id_char_1                            REVERSE_DIST_ID_CHAR_1
5841          ,lgt.reverse_dist_id_char_2                            REVERSE_DIST_ID_CHAR_2
5842          ,lgt.reverse_dist_id_char_3                            REVERSE_DIST_ID_CHAR_3
5843          ,lgt.reverse_dist_id_char_4                            REVERSE_DIST_ID_CHAR_4
5844          ,lgt.reverse_dist_id_char_5                            REVERSE_DIST_ID_CHAR_5
5845          ,lgt.reverse_dist_id_num_1                             REVERSE_DIST_ID_NUM_1
5846          ,lgt.reverse_dist_id_num_2                             REVERSE_DIST_ID_NUM_2
5847          ,lgt.reverse_dist_id_num_3                             REVERSE_DIST_ID_NUM_3
5848          ,lgt.reverse_dist_id_num_4                             REVERSE_DIST_ID_NUM_4
5849          ,lgt.reverse_dist_id_num_5                             REVERSE_DIST_ID_NUM_5
5850          ,lgt.reverse_distribution_type                         REVERSE_DISTRIBUTION_TYPE
5851          -- populate reversal_code indicating that line is result of reversal
5852          ,'REVERSAL'                                            REVERSAL_CODE
5853          -- denormalises entry status from headers to line to determine the status of entry being created
5854          -- populates 0 for a valid entry (F or D) else poulates 1
5855          ,DECODE(aeh.accounting_entry_status_code,'F',0,'D',0,1) ACCOUNTING_ENTRY_STATUS_CODE
5856          ,'N'                                                    INHERIT_DESC_FLAG
5857           -- 4669308 combine header with reversal of original entry
5858          ,0                                                      HEADER_NUM
5859          ,ael.encumbrance_type_id                                ENCUMBRANCE_TYPE_ID
5860          ,'N'                                                    MPA_ACCRUAL_ENTRY_FLAG
5861          ,lgt.accounting_date                                    ACCOUNTING_DATE
5862             -- original line. This is used to filter duplicate rows in the outer query.
5863          ,row_number() over
5864               (partition by xdl.ae_header_Id,xdl.temp_line_num
5865                    order by lgt.event_number
5866               ) rn
5867       , xdl.APPLIED_TO_APPLICATION_ID   APPLIED_TO_APPLICATION_ID
5868  , xdl.APPLIED_TO_ENTITY_CODE       APPLIED_TO_ENTITY_CODE
5869  , xdl.APPLIED_TO_ENTITY_ID     APPLIED_TO_ENTITY_ID
5870  , xdl.APPLIED_TO_SOURCE_ID_NUM_1   APPLIED_TO_SOURCE_ID_NUM_1
5871  , xdl.APPLIED_TO_SOURCE_ID_NUM_2   APPLIED_TO_SOURCE_ID_NUM_2
5872  , xdl.APPLIED_TO_SOURCE_ID_NUM_3   APPLIED_TO_SOURCE_ID_NUM_3
5873  , xdl.APPLIED_TO_SOURCE_ID_NUM_4   APPLIED_TO_SOURCE_ID_NUM_4
5874  , xdl.APPLIED_TO_SOURCE_ID_CHAR_1  APPLIED_TO_SOURCE_ID_CHAR_1
5875  , xdl.APPLIED_TO_SOURCE_ID_CHAR_2  APPLIED_TO_SOURCE_ID_CHAR_2
5876  , xdl.APPLIED_TO_SOURCE_ID_CHAR_3  APPLIED_TO_SOURCE_ID_CHAR_3
5877  , xdl.APPLIED_TO_SOURCE_ID_CHAR_4  APPLIED_TO_SOURCE_ID_CHAR_4
5878  , xdl.APPLIED_TO_DISTRIBUTION_TYPE APPLIED_TO_DISTRIBUTION_TYPE
5879  , xdl.APPLIED_TO_DIST_ID_NUM_1     APPLIED_TO_DIST_ID_NUM_1
5880  , xdl.APPLIED_TO_DIST_ID_NUM_2     APPLIED_TO_DIST_ID_NUM_2
5881  , xdl.APPLIED_TO_DIST_ID_NUM_3     APPLIED_TO_DIST_ID_NUM_3
5882  , xdl.APPLIED_TO_DIST_ID_NUM_4     APPLIED_TO_DIST_ID_NUM_4
5883  , xdl.APPLIED_TO_DIST_ID_NUM_5     APPLIED_TO_DIST_ID_NUM_5
5884  , xdl.APPLIED_TO_DIST_ID_CHAR_1    APPLIED_TO_DIST_ID_CHAR_1
5885  , xdl.APPLIED_TO_DIST_ID_CHAR_2    APPLIED_TO_DIST_ID_CHAR_2
5886  , xdl.APPLIED_TO_DIST_ID_CHAR_3    APPLIED_TO_DIST_ID_CHAR_3
5887  , xdl.APPLIED_TO_DIST_ID_CHAR_4    APPLIED_TO_DIST_ID_CHAR_4
5888  , xdl.APPLIED_TO_DIST_ID_CHAR_5    APPLIED_TO_DIST_ID_CHAR_5
5889  , xdl.alloc_to_application_id      alloc_to_application_id
5890  , xdl.alloc_to_entity_code     alloc_to_entity_code
5891  , xdl.alloc_to_source_id_num_1     alloc_to_source_id_num_1
5892  , xdl.alloc_to_source_id_num_2     alloc_to_source_id_num_2
5893  , xdl.alloc_to_source_id_num_3     alloc_to_source_id_num_3
5894  , xdl.alloc_to_source_id_num_4     alloc_to_source_id_num_4
5895  , xdl.alloc_to_source_id_char_1    alloc_to_source_id_char_1
5896  , xdl.alloc_to_source_id_char_2    alloc_to_source_id_char_2
5897  , xdl.alloc_to_source_id_char_3    alloc_to_source_id_char_3
5898  , xdl.alloc_to_source_id_char_4    alloc_to_source_id_char_4
5899  , xdl.alloc_to_distribution_type   alloc_to_distribution_type
5900  , xdl.alloc_to_dist_id_char_1      alloc_to_dist_id_char_1
5901  , xdl.alloc_to_dist_id_char_2      alloc_to_dist_id_char_2
5902  , xdl.alloc_to_dist_id_char_3      alloc_to_dist_id_char_3
5903  , xdl.alloc_to_dist_id_char_4      alloc_to_dist_id_char_4
5904  , xdl.alloc_to_dist_id_char_5      alloc_to_dist_id_char_5
5905  , xdl.alloc_to_dist_id_num_1       alloc_to_dist_id_num_1
5906  , xdl.alloc_to_dist_id_num_2       alloc_to_dist_id_num_2
5907  , xdl.alloc_to_dist_id_num_3       alloc_to_dist_id_num_3
5908  , xdl.alloc_to_dist_id_num_4       alloc_to_dist_id_num_4
5909  , xdl.alloc_to_dist_id_num_5       alloc_to_dist_id_num_5
5910  ,nvl(lgt.tax_line_ref_id, xdl.tax_line_ref_id)                   TAX_LINE_REF_ID          -- Bug 7159711
5911  ,nvl(lgt.tax_summary_line_ref_id, xdl.tax_summary_line_ref_id)   TAX_SUMMARY_LINE_REF_ID  -- Bug 7159711
5912  ,nvl(lgt.tax_rec_nrec_dist_ref_id, xdl.tax_rec_nrec_dist_ref_id) TAX_REC_NREC_DIST_REF_ID -- Bug 7159711
5913  ,decode(ael.analytical_balance_flag, 'Y','P',
5914                                   'P','Y',
5915                                   null) analytical_balance_flag   -- Bug 7382288
5916        FROM
5917            xla_ae_lines_gt           lgt
5918           ,xla_distribution_links    xdl
5919           ,xla_ae_lines              ael
5920           ,xla_ae_headers            aeh
5921           ,fnd_currencies            fcu
5922           ,xla_events                evt
5923        WHERE lgt.reversal_code                              = 'DUMMY_LR'
5924          AND xdl.application_id                             = l_application_id
5925          AND xdl.source_distribution_type                   = lgt.reverse_distribution_type
5926          AND xdl.source_distribution_id_num_1               = nvl(lgt.reverse_dist_id_num_1,-99)
5927          AND nvl(xdl.source_distribution_id_num_2,-99)      = nvl(lgt.reverse_dist_id_num_2,-99)
5928          AND nvl(xdl.source_distribution_id_num_3,-99)      = nvl(lgt.reverse_dist_id_num_3,-99)
5929          AND nvl(xdl.source_distribution_id_num_4,-99)      = nvl(lgt.reverse_dist_id_num_4,-99)
5930          AND nvl(xdl.source_distribution_id_num_5,-99)      = nvl(lgt.reverse_dist_id_num_5,-99)
5931          AND nvl(xdl.source_distribution_id_char_1,' ')     = nvl(lgt.reverse_dist_id_char_1,' ')
5932          AND nvl(xdl.source_distribution_id_char_2,' ')     = nvl(lgt.reverse_dist_id_char_2,' ')
5933          AND nvl(xdl.source_distribution_id_char_3,' ')     = nvl(lgt.reverse_dist_id_char_3,' ')
5934          AND nvl(xdl.source_distribution_id_char_4,' ')     = nvl(lgt.reverse_dist_id_char_4,' ')
5935          AND nvl(xdl.source_distribution_id_char_5,' ')     = nvl(lgt.reverse_dist_id_char_5,' ')
5936          -- lines that are due to reversals are not reversed again
5937          AND NVL(xdl.temp_line_num,0)                    >= 0
5938          AND aeh.application_id                          = xdl.application_id
5939          AND aeh.ae_header_id                            = xdl.ae_header_id
5940          AND aeh.ledger_id                               = lgt.ledger_id
5941          AND aeh.entity_id                               = lgt.entity_id
5942          AND ael.application_id                          = aeh.application_id
5943          AND ael.ae_header_id                            = aeh.ae_header_id
5944          AND ael.ae_line_num                             = xdl.ae_line_num
5945          AND fcu.currency_code                           = ael.currency_code
5946          -- lines that have been reversed before in previous run are not reversed again
5947          AND NOT EXISTS (
5948                     SELECT /*+ no_unnest */ 1
5949                     FROM xla_distribution_links
5950                     WHERE ref_ae_header_id = xdl.ae_header_id
5951                       AND temp_line_num    = xdl.temp_line_num * -1
5952                       AND application_id   = xdl.application_id
5953                    )
5954          AND evt.application_id                          = aeh.application_id
5955          AND evt.event_id                                = aeh.event_id
5956          AND NVL(evt.budgetary_control_flag,'N')         = DECODE(p_accounting_mode
5957                                                                  ,'FUNDS_CHECK','Y'
5958                                                                  ,'FUNDS_RESERVE','Y'
5959                                                                  ,'N'
5960                                                                  )
5961          AND  ((aeh.parent_ae_header_id IS NOT NULL AND aeh.accounting_entry_status_code = 'F') OR
5962                (aeh.parent_ae_header_id IS NULL)
5963               )
5964       )
5965    WHERE rn = 1
5966    );
5967 
5968   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
5969       trace
5970          (p_msg      => 'Line Reversal - Reversal lines created from xla_ae_lines = '||SQL%ROWCOUNT
5971          ,p_level    => C_LEVEL_STATEMENT
5972          ,p_module   => l_log_module);
5973    END IF;
5974 
5975 
5976 -- bug7135700 code change, case: reversal lines created for primary but not for secondary for same event.
5977 -- Note: This code may not, or may unnessecarily throw this warning for cash basis secondary legders also,
5978 --       that case has not been considered
5979 
5980  l_upgrade_check := 0;
5981  xla_accounting_cache_pkg.GetLedgerArray(l_ledger_attrs);
5982 
5983  FOR i in 1..l_ledger_attrs.array_ledger_id.COUNT
5984  LOOP
5985   IF l_ledger_attrs.array_ledger_type(i) = 'PRIMARY' THEN
5986     l_primary_ledger_id := l_ledger_attrs.array_ledger_id(i);
5987   END IF;
5988  END LOOP;
5989 
5990 
5991  IF (C_LEVEL_STATEMENT >= g_log_level) THEN
5992       trace
5993          (p_msg      => 'l_primary_ledger_id = '|| l_primary_ledger_id
5994          ,p_level    => C_LEVEL_STATEMENT
5995          ,p_module   => l_log_module);
5996  END IF;
5997 
5998 
5999  BEGIN
6000     SELECT 1
6001     INTO l_upgrade_check
6002     FROM DUAL
6003     WHERE EXISTS
6004         (SELECT 1
6005         FROM gl_ledger_relationships
6006         WHERE hist_conv_status_code = 'SUCCESSFUL'
6007         AND primary_ledger_id = l_primary_ledger_id
6008         AND relationship_enabled_flag = 'Y');
6009  EXCEPTION WHEN OTHERS THEN
6010      l_upgrade_check := 0;
6011  END;
6012 
6013 
6014  IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6015       trace
6016          (p_msg      => 'l_upgrade_check = '|| l_upgrade_check
6017          ,p_level    => C_LEVEL_STATEMENT
6018          ,p_module   => l_log_module);
6019  END IF;
6020 
6021 
6022  IF l_upgrade_check = 1 THEN
6023 
6024  -- find the latest 'first ledger open period name' of all the secondary/alc ledgers
6025 
6026     SELECT max(glp.start_date)
6027       INTO l_max_first_open_period
6028       FROM  gl_period_statuses glp,
6029             gl_ledgers gl,
6030             gl_ledger_relationships glr
6031       WHERE glp.period_name = gl.first_ledger_period_name
6032       AND  glp.ledger_id = gl.ledger_id
6033       AND  glp.application_id = 101
6034       AND  gl.ledger_id = glr.target_ledger_id
6035       AND  glr.primary_ledger_id = l_primary_ledger_id
6036       AND  glr.relationship_enabled_flag = 'Y'
6037       AND  gl.ledger_category_code <> 'PRIMARY';
6038 
6039 
6040 -- find the reference event (upstream entry exists for primary but not alc/secondary) with the least accounting date
6041 
6042 
6043   SELECT min(xla_ae_headers.accounting_date)
6044     INTO l_min_ref_event_date
6045     FROM xla_ae_lines_gt gt1, xla_ae_headers
6046    WHERE gt1.reversal_code = 'REVERSAL'
6047      AND gt1.ref_event_id = xla_ae_headers.event_id;
6048 
6049 
6050 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6051       trace
6052          (p_msg      => 'l_max_first_open_period = '|| l_max_first_open_period
6053          ,p_level    => C_LEVEL_STATEMENT
6054          ,p_module   => l_log_module);
6055  END IF;
6056 
6057 
6058 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6059       trace
6060          (p_msg      => 'l_min_ref_event_date = '|| l_min_ref_event_date
6061          ,p_level    => C_LEVEL_STATEMENT
6062          ,p_module   => l_log_module);
6063  END IF;
6064 
6065 
6066 END IF;  --l_upgrade_check if end
6067 
6068 
6069  IF l_upgrade_check = 1 AND l_min_ref_event_date <= l_max_first_open_period THEN
6070 
6071 
6072  print_logfile('***************************************************************************************************');
6073  print_logfile('The following REVERSAL (LR) events do not have historic entries replicated in secondary/alc ledgers');
6074  print_logfile('Manual GL adjustments in the secondary/alc ledgers needs to be done for these events');
6075 
6076 
6077  FOR c_not_reversed_entries IN
6078  (SELECT DISTINCT gt1.event_id, gt1.ledger_id
6079  FROM xla_ae_lines_gt gt1, gl_ledgers gll
6080  WHERE gt1.reversal_code = 'DUMMY_LR'
6081  AND gll.ledger_id = gt1.ledger_id
6082  AND gll.ledger_category_code <> 'PRIMARY'
6083  AND NOT EXISTS (SELECT 1
6084                  FROM xla_ae_lines_gt gt2
6085          WHERE gt2.reversal_code = 'REVERSAL'
6086          AND gt1.event_id = gt2.event_id
6087          AND gt1.ledger_id = gt2.ledger_id)
6088  AND EXISTS (SELECT 1
6089             FROM xla_ae_lines_gt gt3
6090             WHERE gt3.reversal_code = 'REVERSAL'
6091         AND gt1.event_id = gt3.event_id))
6092 
6093  LOOP
6094   --IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6095   --    trace
6096   --       (p_msg      => 'WARNING - Reversal (LR) lines could not be created for event  ' || c_not_reversed_entries.event_id || ' of ledger ' || c_not_reversed_entries.ledger_id || '. Please create Manual Adjustment Entries.'
6097   --       ,p_level    => C_LEVEL_STATEMENT
6098   --       ,p_module   => l_log_module);
6099   --END IF;
6100   print_logfile('Event ' || c_not_reversed_entries.event_id || ' of ledger ' || c_not_reversed_entries.ledger_id);
6101   l_error_count := l_error_count + 1;
6102  END LOOP;
6103 
6104  IF l_error_count > 0 THEN
6105    g_hist_reversal_error_exists := TRUE;
6106  END IF;
6107 
6108  IF l_error_count = 0 THEN
6109  print_logfile('    NO SUCH ENTRIES');
6110  END IF;
6111 
6112  print_logfile('***************************************************************************************************');
6113 
6114 END IF;
6115 
6116 
6117 -- bug7135700 code change end;
6118 
6119 
6120 
6121 
6122    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6123       trace
6124          (p_msg      => 'Performing transaction level accounting reversal'
6125          ,p_level    => C_LEVEL_STATEMENT
6126          ,p_module   => l_log_module);
6127    END IF;
6128 
6129 
6130 --***************************************************************************************************************
6131 --***************************************************************************************************************
6132 --*************    T R A N S A C T I O N      R E V E R S A L    ************************************************
6133 --***************************************************************************************************************
6134 --***************************************************************************************************************
6135 
6136    --
6137    -- selecting all the dummy lines from xla_ae_lines_gt that are due to
6138    -- transaction level reversal option
6139    --
6140    SELECT event_id
6141          ,ledger_id
6142          ,event_number
6143          ,entity_id
6144          ,source_distribution_type
6145          ,source_distribution_id_num_1
6146          ,source_distribution_id_num_2
6147          ,source_distribution_id_num_3
6148          ,source_distribution_id_num_4
6149          ,source_distribution_id_num_5
6150          ,source_distribution_id_char_1
6151          ,source_distribution_id_char_2
6152          ,source_distribution_id_char_3
6153          ,source_distribution_id_char_4
6154          ,source_distribution_id_char_5
6155          ,switch_side_flag        -- 5055878
6156          ,accounting_date         -- 5189664
6157          ,tax_line_ref_id            -- 7226263
6158          ,tax_summary_line_ref_id    -- 7226263
6159          ,tax_rec_nrec_dist_ref_id   -- 7226263
6160      BULK COLLECT INTO
6161           l_array_event_id
6162          ,l_array_ledger_id
6163          ,l_array_event_number
6164          ,l_array_entity_id
6165          ,l_array_source_dist_type
6166          ,l_array_source_dist_id_num_1
6167          ,l_array_source_dist_id_num_2
6168          ,l_array_source_dist_id_num_3
6169          ,l_array_source_dist_id_num_4
6170          ,l_array_source_dist_id_num_5
6171          ,l_array_source_dist_id_char_1
6172          ,l_array_source_dist_id_char_2
6173          ,l_array_source_dist_id_char_3
6174          ,l_array_source_dist_id_char_4
6175          ,l_array_source_dist_id_char_5
6176          ,l_array_switch_side_flag     -- 5055878
6177          ,l_array_gl_date              -- 5189664
6178          ,l_array_tax_line_ref           -- 7226263
6179          ,l_array_tax_summary_line_ref   -- 7226263
6180          ,l_array_tax_rec_nrec_dist_ref  -- 7226263
6181      FROM xla_ae_lines_gt
6182     WHERE reversal_code = 'DUMMY_TR'
6183     ORDER by entity_id, event_number;
6184 
6185    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6186       trace
6187          (p_msg      => 'Transaction Revesal - Events with reversal options set to Y = '||SQL%ROWCOUNT
6188          ,p_level    => C_LEVEL_STATEMENT
6189          ,p_module   => l_log_module);
6190    END IF;
6191 
6192    --=======================================================================================================
6193    -- 4669308 Delete the MPA/Accrual Transaction Reversal (still in GT tables, not in distribution links yet)
6194    --=======================================================================================================
6195    --
6196    ---------------------------------------------------------------------------------------------------------
6197    -- 4669308 Delete the MPA/Accrual Transaction Reversal in xla_ae_lines_gt (not in distribution links yet)
6198    ---------------------------------------------------------------------------------------------------------
6199    --
6200    IF xla_accounting_pkg.g_mpa_accrual_exists = 'Y' THEN  -- 5412560
6201       FORALL i IN 1..l_array_entity_id.count
6202       DELETE xla_ae_lines_gt lgt
6203       WHERE l_array_ledger_id(i)          = lgt.ledger_id
6204         AND lgt.reversal_code IS NULL        -- the lines created from reversal are not reversed again
6205         AND NOT EXISTS (                     -- the lines already reversed are not reversed again
6206                    SELECT 1
6207                    FROM xla_ae_lines_gt
6208                    WHERE ledger_id        = lgt.ledger_id
6209                      AND ref_ae_header_id = lgt.ae_header_id  -- 5499367 lgt.ref_ae_header_id
6210                      AND temp_line_num    = lgt.temp_line_num * -1
6211                   )
6212         AND  NVL(lgt.header_num,0) > 0
6213         AND lgt.header_num IN
6214             (SELECT hgt.header_num
6215              FROM   xla_ae_headers_gt hgt
6216              WHERE  hgt.entity_id           = l_array_entity_id(i)
6217              AND    hgt.ledger_id           = l_array_ledger_id(i)
6218              AND    hgt.event_number        < l_array_event_number(i)
6219              AND    lgt.event_id            = hgt.event_id
6220              AND    lgt.ledger_id           = hgt.ledger_id
6221              AND    lgt.balance_type_code   = hgt.balance_type_code
6222              AND    lgt.header_num          = hgt.header_num)
6223       ;
6224       --
6225       ---------------------------------------------------------------------------------------------------------
6226       -- 4669308 Delete the MPA/Accrual Transaction Reversal in xla_ae_headers_gt (not in distribution links yet)
6227       ---------------------------------------------------------------------------------------------------------
6228       --
6229       FORALL i IN 1..l_array_entity_id.count
6230       DELETE xla_ae_headers_gt hgt
6231       WHERE  hgt.ledger_id         = l_array_ledger_id(i)
6232       AND    hgt.entity_id         = l_array_entity_id(i)
6233       AND    hgt.event_number      < l_array_event_number(i)
6234       AND    NVL(hgt.header_num,0) > 0
6235       ;
6236    END IF;
6237    ---------------------------------------------------------------------------------------------------------
6238 
6239 
6240    --
6241    -- reverse the lines in xla_ae_lines_gt table (not in distribution links yet)
6242    --
6243    FORALL i IN 1..l_array_event_id.count
6244    INSERT INTO xla_ae_lines_gt
6245       (ae_header_id
6246       ,temp_line_num
6247       ,event_id
6248       ,ref_ae_header_id
6249       ,ref_ae_line_num
6250       ,ref_temp_line_num
6251       ,ref_event_id
6252       ,ledger_id
6253       ,balance_type_code
6254       ,accounting_class_code
6255       ,event_class_code
6256       ,event_type_code
6257       ,line_definition_owner_code
6258       ,line_definition_code
6259       ,accounting_line_type_code
6260       ,accounting_line_code
6261       ,code_combination_status_code
6262       ,code_combination_id
6263       ,sl_coa_mapping_name
6264       ,dynamic_insert_flag
6265       ,source_coa_id
6266       ,ccid_coa_id
6267       ,segment1
6268       ,segment2
6269       ,segment3
6270       ,segment4
6271       ,segment5
6272       ,segment6
6273       ,segment7
6274       ,segment8
6275       ,segment9
6276       ,segment10
6277       ,segment11
6278       ,segment12
6279       ,segment13
6280       ,segment14
6281       ,segment15
6282       ,segment16
6283       ,segment17
6284       ,segment18
6285       ,segment19
6286       ,segment20
6287       ,segment21
6288       ,segment22
6289       ,segment23
6290       ,segment24
6291       ,segment25
6292       ,segment26
6293       ,segment27
6294       ,segment28
6295       ,segment29
6296       ,segment30
6297       , calculate_acctd_amts_flag
6298       , calculate_g_l_amts_flag
6299       , gain_or_loss_flag
6300       , rounding_class_code
6301       , document_rounding_level
6302       , doc_rounding_acctd_amt
6303       , doc_rounding_entered_amt
6304       ,alt_ccid_status_code
6305       ,alt_code_combination_id
6306       ,alt_segment1
6307       ,alt_segment2
6308       ,alt_segment3
6309       ,alt_segment4
6310       ,alt_segment5
6311       ,alt_segment6
6312       ,alt_segment7
6313       ,alt_segment8
6314       ,alt_segment9
6315       ,alt_segment10
6316       ,alt_segment11
6317       ,alt_segment12
6318       ,alt_segment13
6319       ,alt_segment14
6320       ,alt_segment15
6321       ,alt_segment16
6322       ,alt_segment17
6323       ,alt_segment18
6324       ,alt_segment19
6325       ,alt_segment20
6326       ,alt_segment21
6327       ,alt_segment22
6328       ,alt_segment23
6329       ,alt_segment24
6330       ,alt_segment25
6331       ,alt_segment26
6332       ,alt_segment27
6333       ,alt_segment28
6334       ,alt_segment29
6335       ,alt_segment30
6336       ,description
6337       ,gl_transfer_mode_code
6338       ,merge_duplicate_code
6339       ,switch_side_flag
6340 --      ,entered_amount
6341 --      ,ledger_amount
6342       ,unrounded_entered_dr
6343       ,unrounded_entered_cr
6344       ,unrounded_accounted_dr
6345       ,unrounded_accounted_cr
6346       ,entered_currency_mau
6347       ,currency_code
6348       ,currency_conversion_date
6349       ,currency_conversion_rate
6350       ,currency_conversion_type
6351       ,statistical_amount
6352       ,party_id
6353       ,party_site_id
6354       ,party_type_code
6355       ,ussgl_transaction_code
6356       ,jgzz_recon_ref
6357       ,source_distribution_id_char_1
6358       ,source_distribution_id_char_2
6359       ,source_distribution_id_char_3
6360       ,source_distribution_id_char_4
6361       ,source_distribution_id_char_5
6362       ,source_distribution_id_num_1
6363       ,source_distribution_id_num_2
6364       ,source_distribution_id_num_3
6365       ,source_distribution_id_num_4
6366       ,source_distribution_id_num_5
6367       ,source_distribution_type
6368       ,reverse_dist_id_char_1
6369       ,reverse_dist_id_char_2
6370       ,reverse_dist_id_char_3
6371       ,reverse_dist_id_char_4
6372       ,reverse_dist_id_char_5
6373       ,reverse_dist_id_num_1
6374       ,reverse_dist_id_num_2
6375       ,reverse_dist_id_num_3
6376       ,reverse_dist_id_num_4
6377       ,reverse_dist_id_num_5
6378       ,reverse_distribution_type
6379       ,tax_line_ref_id
6380       ,tax_summary_line_ref_id
6381       ,tax_rec_nrec_dist_ref_id
6382     -- 4262811
6383       ,header_num
6384       ,mpa_accrual_entry_flag
6385       ,multiperiod_option_flag
6386       ,multiperiod_start_date
6387       ,multiperiod_end_date
6388     --,deferred_indicator
6389     --,deferred_start_date
6390     --,deferred_end_date
6391     --,deferred_no_period
6392     --,deferred_period_type
6393       ,reversal_code
6394       ,accounting_entry_status_code
6395       ,encumbrance_type_id -- 4458381
6396       ,inherit_desc_flag   -- 4219869
6397       ,accounting_date
6398       , BFLOW_APPLICATION_ID
6399         , BFLOW_ENTITY_CODE
6400         , APPLIED_TO_ENTITY_ID
6401         , BFLOW_SOURCE_ID_NUM_1
6402         , BFLOW_SOURCE_ID_NUM_2
6403         , BFLOW_SOURCE_ID_NUM_3
6404         , BFLOW_SOURCE_ID_NUM_4
6405         , BFLOW_SOURCE_ID_CHAR_1
6406         , BFLOW_SOURCE_ID_CHAR_2
6407         , BFLOW_SOURCE_ID_CHAR_3
6408         , BFLOW_SOURCE_ID_CHAR_4
6409         , BFLOW_DISTRIBUTION_TYPE
6410         , BFLOW_DIST_ID_NUM_1
6411         , BFLOW_DIST_ID_NUM_2
6412         , BFLOW_DIST_ID_NUM_3
6413         , BFLOW_DIST_ID_NUM_4
6414         , BFLOW_DIST_ID_NUM_5
6415         , BFLOW_DIST_ID_CHAR_1
6416         , BFLOW_DIST_ID_CHAR_2
6417         , BFLOW_DIST_ID_CHAR_3
6418         , BFLOW_DIST_ID_CHAR_4
6419         , BFLOW_DIST_ID_CHAR_5
6420  , alloc_to_application_id
6421  , alloc_to_entity_code
6422  , alloc_to_source_id_num_1
6423  , alloc_to_source_id_num_2
6424  , alloc_to_source_id_num_3
6425  , alloc_to_source_id_num_4
6426  , alloc_to_source_id_char_1
6427  , alloc_to_source_id_char_2
6428  , alloc_to_source_id_char_3
6429  , alloc_to_source_id_char_4
6430  , alloc_to_distribution_type
6431  , alloc_to_dist_id_char_1
6432  , alloc_to_dist_id_char_2
6433  , alloc_to_dist_id_char_3
6434  , alloc_to_dist_id_char_4
6435  , alloc_to_dist_id_char_5
6436  , alloc_to_dist_id_num_1
6437  , alloc_to_dist_id_num_2
6438  , alloc_to_dist_id_num_3
6439  , alloc_to_dist_id_num_4
6440  , alloc_to_dist_id_num_5)    -- 4955764
6441    SELECT
6442        -- populates ae_header_id which is same as event_id till this point
6443        l_array_event_id(i)
6444       -- populates temp_line_num which is (-ve) of original line
6445       ,0-lgt.temp_line_num
6446       -- populates event_id which is the event_id of event under process
6447       ,l_array_event_id(i)
6448       -- populates ref_ae_header_id which is ae_header_id of original line
6449       ,hgt.ae_header_id
6450       -- populates ref_ae_line_num which is ae_line_num of original line
6451       ,lgt.ae_line_num
6452       -- populates ref_temp_line_num which is ae_line_num of original line
6453       ,lgt.temp_line_num
6454       -- populates ref_event_id which is event_id of original line
6455       ,lgt.event_id
6456       ,lgt.ledger_id
6457       ,lgt.balance_type_code
6458       ,lgt.accounting_class_code
6459       ,lgt.event_class_code
6460       ,lgt.event_type_code
6461       ,lgt.line_definition_owner_code
6462       ,lgt.line_definition_code
6463       ,lgt.accounting_line_type_code
6464       ,lgt.accounting_line_code
6465       ,decode(lgt.gain_or_loss_flag, 'Y'
6466              ,decode(lgt.calculate_g_l_amts_flag,'Y'
6467                 ,lgt.alt_ccid_status_code,lgt.code_combination_status_code)
6468          ,lgt.code_combination_status_code)
6469                                                        CODE_COMBINATION_STATUS_CODE
6470       ,decode(lgt.gain_or_loss_flag, 'Y'
6471             ,decode(lgt.calculate_g_l_amts_flag,'Y'
6472                  ,lgt.alt_code_combination_id, lgt.code_combination_id)
6473        , lgt.code_combination_id)
6474                                                        CODE_COMBINATION_ID
6475       ,lgt.sl_coa_mapping_name
6476       ,lgt.dynamic_insert_flag
6477       ,lgt.source_coa_id
6478       ,lgt.ccid_coa_id
6479          ,decode(lgt.gain_or_loss_flag, 'Y'
6480              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment1,lgt.segment1)
6481          ,lgt.segment1)                                                   SEGMENT1
6482          ,decode(lgt.gain_or_loss_flag, 'Y'
6483              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment2,lgt.segment2)
6484          ,lgt.segment2)                                                   SEGMENT2
6485 
6486          ,decode(lgt.gain_or_loss_flag, 'Y'
6487              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment3,lgt.segment3)
6488          ,lgt.segment3)                                                   SEGMENT3
6489 
6490          ,decode(lgt.gain_or_loss_flag, 'Y'
6491              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment4,lgt.segment4)
6492          ,lgt.segment4)                                                     SEGMENT4
6493 
6494          ,decode(lgt.gain_or_loss_flag, 'Y'
6495              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment5,lgt.segment5)
6496          ,lgt.segment5)                                                   SEGMENT5
6497 
6498          ,decode(lgt.gain_or_loss_flag, 'Y'
6499              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment6,lgt.segment6)
6500          ,lgt.segment6)                                                   SEGMENT6
6501 
6502          ,decode(lgt.gain_or_loss_flag, 'Y'
6503              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment7,lgt.segment7)
6504          ,lgt.segment7)                                                  SEGMENT7
6505 
6506          ,decode(lgt.gain_or_loss_flag, 'Y'
6507              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment8,lgt.segment8)
6508          ,lgt.segment8)                                                   SEGMENT8
6509 
6510          ,decode(lgt.gain_or_loss_flag, 'Y'
6511                 ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment9,lgt.segment9)
6512          ,lgt.segment9)                                                   SEGMENT9
6513 
6514          ,decode(lgt.gain_or_loss_flag, 'Y'
6515               ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment10,lgt.segment10)
6516          ,lgt.segment10)                                                   SEGMENT10
6517 
6518          ,decode(lgt.gain_or_loss_flag, 'Y'
6519              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment11,lgt.segment11)
6520          ,lgt.segment11)                                                   SEGMENT11
6521 
6522          ,decode(lgt.gain_or_loss_flag, 'Y'
6523              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment12,lgt.segment12)
6524          ,lgt.segment12)                                                   SEGMENT12
6525 
6526          ,decode(lgt.gain_or_loss_flag, 'Y'
6527                ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment13,lgt.segment13)
6528          ,lgt.segment13)                                                   SEGMENT13
6529 
6530          ,decode(lgt.gain_or_loss_flag, 'Y'
6531              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment14,lgt.segment14)
6532          ,lgt.segment14)                                                   SEGMENT14
6533 
6534          ,decode(lgt.gain_or_loss_flag, 'Y'
6535              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment15,lgt.segment15)
6536          ,lgt.segment15)                                                   SEGMENT15
6537 
6538          ,decode(lgt.gain_or_loss_flag, 'Y'
6539               ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment16,lgt.segment16)
6540          ,lgt.segment16)                                                   SEGMENT16
6541 
6542          ,decode(lgt.gain_or_loss_flag, 'Y'
6543               ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment17,lgt.segment17)
6544          ,lgt.segment17)                                                   SEGMENT17
6545 
6546          ,decode(lgt.gain_or_loss_flag, 'Y'
6547              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment18,lgt.segment18)
6548          ,lgt.segment18)                                                   SEGMENT18
6549 
6550          ,decode(lgt.gain_or_loss_flag, 'Y'
6551              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment19,lgt.segment19)
6552          ,lgt.segment19)                                                   SEGMENT19
6553 
6554          ,decode(lgt.gain_or_loss_flag, 'Y'
6555              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment20,lgt.segment20)
6556          ,lgt.segment20)                                                  SEGMENT20
6557 
6558          ,decode(lgt.gain_or_loss_flag, 'Y'
6559              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment21,lgt.segment21)
6560          ,lgt.segment21)                                                   SEGMENT21
6561 
6562          ,decode(lgt.gain_or_loss_flag, 'Y'
6563              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment22,lgt.segment22)
6564          ,lgt.segment22)                                                   SEGMENT22
6565 
6566          ,decode(lgt.gain_or_loss_flag, 'Y'
6567              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment23,lgt.segment23)
6568          ,lgt.segment23)                                                   SEGMENT23
6569 
6570          ,decode(lgt.gain_or_loss_flag, 'Y'
6571              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment24,lgt.segment24)
6572          ,lgt.segment24)                                                   SEGMENT24
6573 
6574          ,decode(lgt.gain_or_loss_flag, 'Y'
6575              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment25,lgt.segment25)
6576          ,lgt.segment25)                                                   SEGMENT25
6577 
6578          ,decode(lgt.gain_or_loss_flag, 'Y'
6579              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment26,lgt.segment26)
6580          ,lgt.segment26)                                                   SEGMENT26
6581 
6582          ,decode(lgt.gain_or_loss_flag, 'Y'
6583              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment27,lgt.segment27)
6584          ,lgt.segment27)                                                   SEGMENT27
6585 
6586          ,decode(lgt.gain_or_loss_flag, 'Y'
6587              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment28,lgt.segment28)
6588          ,lgt.segment28)                                                  SEGMENT28
6589 
6590          ,decode(lgt.gain_or_loss_flag, 'Y'
6591              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment29,lgt.segment29)
6592          ,lgt.segment29)                                                   SEGMENT29
6593 
6594          ,decode(lgt.gain_or_loss_flag, 'Y'
6595              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment30,lgt.segment30)
6596          ,lgt.segment30)                                                   SEGMENT30
6597       ,lgt.calculate_acctd_amts_flag
6598       ,lgt.calculate_g_l_amts_flag
6599       ,lgt.gain_or_loss_flag
6600       ,lgt.rounding_class_code
6601       ,lgt.document_rounding_level
6602       ,lgt.doc_rounding_acctd_amt
6603       ,lgt.doc_rounding_entered_amt
6604       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.code_combination_status_code ,lgt.alt_ccid_status_code)
6605                                                        ALT_CCID_STATUS_CODE
6606       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.code_combination_id ,lgt.alt_code_combination_id)
6607                                                        ALT_CODE_COMBINATION_ID
6608       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment1,lgt.alt_segment1)     ALT_SEGMENT1
6609       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment2,lgt.alt_segment2)     ALT_SEGMENT2
6610       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment3,lgt.alt_segment3)     ALT_SEGMENT3
6611       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment4,lgt.alt_segment4)     ALT_SEGMENT4
6612       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment5,lgt.alt_segment5)     ALT_SEGMENT5
6613       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment6,lgt.alt_segment6)     ALT_SEGMENT6
6614       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment7,lgt.alt_segment7)     ALT_SEGMENT7
6615       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment8,lgt.alt_segment8)     ALT_SEGMENT8
6616       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment9,lgt.alt_segment9)     ALT_SEGMENT9
6617       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment10,lgt.alt_segment10)   ALT_SEGMENT10
6618       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment11,lgt.alt_segment11)   ALT_SEGMENT11
6619       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment12,lgt.alt_segment12)   ALT_SEGMENT12
6620       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment13,lgt.alt_segment13)   ALT_SEGMENT13
6621       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment14,lgt.alt_segment14)   ALT_SEGMENT14
6622       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment15,lgt.alt_segment15)   ALT_SEGMENT15
6623       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment16,lgt.alt_segment16)   ALT_SEGMENT16
6624       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment17,lgt.alt_segment17)   ALT_SEGMENT17
6625       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment18,lgt.alt_segment18)   ALT_SEGMENT18
6626       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment19,lgt.alt_segment19)   ALT_SEGMENT19
6627       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment20,lgt.alt_segment20)   ALT_SEGMENT20
6628       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment21,lgt.alt_segment21)   ALT_SEGMENT21
6629       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment22,lgt.alt_segment22)   ALT_SEGMENT22
6630       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment23,lgt.alt_segment23)   ALT_SEGMENT23
6631       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment24,lgt.alt_segment24)   ALT_SEGMENT24
6632       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment25,lgt.alt_segment25)   ALT_SEGMENT25
6633       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment26,lgt.alt_segment26)   ALT_SEGMENT26
6634       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment27,lgt.alt_segment27)   ALT_SEGMENT27
6635       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment28,lgt.alt_segment28)   ALT_SEGMENT28
6636       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment29,lgt.alt_segment29)   ALT_SEGMENT29
6637       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment30,lgt.alt_segment30)   ALT_SEGMENT30
6638       ,lgt.description
6639       ,lgt.gl_transfer_mode_code
6640       ,lgt.merge_duplicate_code
6641       ,decode(lgt.gain_or_loss_flag, 'Y', decode(lgt.calculate_g_l_amts_flag, 'Y', 'Y', 'N'), lgt.switch_side_flag)      -- 5055878  lgt.switch_side_flag
6642 --      ,lgt.entered_amount
6643 --      ,lgt.ledger_amount
6644       -- 5055878 amounts modified for reversal method of SIDE or SIGN
6645       ,DECODE(l_array_switch_side_flag(i),'Y',lgt.unrounded_entered_cr,  -lgt.unrounded_entered_dr)
6646       ,DECODE(l_array_switch_side_flag(i),'Y',lgt.unrounded_entered_dr,  -lgt.unrounded_entered_cr)
6647       ,DECODE(l_array_switch_side_flag(i),'Y',lgt.unrounded_accounted_cr,-lgt.unrounded_accounted_dr)
6648       ,DECODE(l_array_switch_side_flag(i),'Y',lgt.unrounded_accounted_dr,-lgt.unrounded_accounted_cr)
6649       --
6650 /*
6651       ,DECODE(lgt.switch_side_flag
6652              ,C_NO_SWITCH, - lgt.entered_dr
6653              ,C_SWITCH, lgt.entered_cr
6654              )
6655       ,DECODE(lgt.switch_side_flag
6656              ,C_NO_SWITCH, - lgt.entered_cr
6657              ,C_SWITCH,   lgt.entered_dr
6658              )
6659       ,DECODE(lgt.switch_side_flag
6660              ,C_NO_SWITCH, - lgt.unrounded_accounted_dr
6661              ,C_SWITCH,lgt.unrounded_accounted_cr
6662              )
6663       ,DECODE(lgt.switch_side_flag
6664              ,C_NO_SWITCH, - lgt.unrounded_accounted_cr
6665              ,C_SWITCH, lgt.unrounded_accounted_dr
6666              )
6667 */
6668       ,lgt.entered_currency_mau
6669       ,lgt.currency_code
6670       ,lgt.currency_conversion_date
6671       ,lgt.currency_conversion_rate
6672       ,lgt.currency_conversion_type
6673       ,lgt.statistical_amount
6674       ,lgt.party_id
6675       ,lgt.party_site_id
6676       ,lgt.party_type_code
6677       ,lgt.ussgl_transaction_code
6678       ,lgt.jgzz_recon_ref
6679       -- if there are no distributions for this event
6680       -- populate with the distribution if lines that is being reversed
6681       ,NVL(l_array_source_dist_id_char_1(i),lgt.source_distribution_id_char_1)
6682       ,NVL(l_array_source_dist_id_char_2(i),lgt.source_distribution_id_char_2)
6683       ,NVL(l_array_source_dist_id_char_3(i),lgt.source_distribution_id_char_3)
6684       ,NVL(l_array_source_dist_id_char_4(i),lgt.source_distribution_id_char_4)
6685       ,NVL(l_array_source_dist_id_char_5(i),lgt.source_distribution_id_char_5)
6686       ,NVL(l_array_source_dist_id_num_1(i),lgt.source_distribution_id_num_1)
6687       ,NVL(l_array_source_dist_id_num_2(i),lgt.source_distribution_id_num_2)
6688       ,NVL(l_array_source_dist_id_num_3(i),lgt.source_distribution_id_num_3)
6689       ,NVL(l_array_source_dist_id_num_4(i),lgt.source_distribution_id_num_4)
6690       ,NVL(l_array_source_dist_id_num_5(i),lgt.source_distribution_id_num_5)
6691       ,NVL(l_array_source_dist_type(i),lgt.source_distribution_type)
6692       -- populate reverse distibutions from original line
6693       ,lgt.source_distribution_id_char_1
6694       ,lgt.source_distribution_id_char_2
6695       ,lgt.source_distribution_id_char_3
6696       ,lgt.source_distribution_id_char_4
6697       ,lgt.source_distribution_id_char_5
6698       ,lgt.source_distribution_id_num_1
6699       ,lgt.source_distribution_id_num_2
6700       ,lgt.source_distribution_id_num_3
6701       ,lgt.source_distribution_id_num_4
6702       ,lgt.source_distribution_id_num_5
6703       ,lgt.source_distribution_type
6704       ,lgt.tax_line_ref_id
6705       ,lgt.tax_summary_line_ref_id
6706       ,lgt.tax_rec_nrec_dist_ref_id
6707     -- 4262811
6708       ,NVL(lgt.header_num,0)  -- 4963422
6709       ,lgt.mpa_accrual_entry_flag
6710       ,lgt.multiperiod_option_flag
6711       ,lgt.multiperiod_start_date
6712       ,lgt.multiperiod_end_date
6713     --,lgt.deferred_indicator
6714     --,lgt.deferred_start_date
6715     --,lgt.deferred_end_date
6716     --,lgt.deferred_no_period
6717     --,lgt.deferred_period_type
6718       -- populate reversal_code to indicate that line is due to a reversal
6719       ,'REVERSAL'
6720       -- denormalize entry status to lines from header to decide on status of new entry
6721       ,hgt.accounting_entry_status_code
6722       ,lgt.encumbrance_type_id -- 4458381
6723       ,'N'    -- lgt.inherit_desc_flag            -- 4219869  Should it be from l_array
6724       ,l_array_gl_date(i)      -- 5189664     hgt.accounting_date     -- 4955764
6725       , lgt.BFLOW_APPLICATION_ID
6726         , lgt.BFLOW_ENTITY_CODE
6727         , lgt.APPLIED_TO_ENTITY_ID
6728         , lgt.BFLOW_SOURCE_ID_NUM_1
6729         , lgt.BFLOW_SOURCE_ID_NUM_2
6730         , lgt.BFLOW_SOURCE_ID_NUM_3
6731         , lgt.BFLOW_SOURCE_ID_NUM_4
6732         , lgt.BFLOW_SOURCE_ID_CHAR_1
6733         , lgt.BFLOW_SOURCE_ID_CHAR_2
6734         , lgt.BFLOW_SOURCE_ID_CHAR_3
6735         , lgt.BFLOW_SOURCE_ID_CHAR_4
6736         , lgt.BFLOW_DISTRIBUTION_TYPE
6737         , lgt.BFLOW_DIST_ID_NUM_1
6738         , lgt.BFLOW_DIST_ID_NUM_2
6739         , lgt.BFLOW_DIST_ID_NUM_3
6740         , lgt.BFLOW_DIST_ID_NUM_4
6741         , lgt.BFLOW_DIST_ID_NUM_5
6742         , lgt.BFLOW_DIST_ID_CHAR_1
6743         , lgt.BFLOW_DIST_ID_CHAR_2
6744         , lgt.BFLOW_DIST_ID_CHAR_3
6745         , lgt.BFLOW_DIST_ID_CHAR_4
6746         , lgt.BFLOW_DIST_ID_CHAR_5
6747  , lgt.alloc_to_application_id      alloc_to_application_id
6748  , lgt.alloc_to_entity_code     alloc_to_entity_code
6749  , lgt.alloc_to_source_id_num_1     alloc_to_source_id_num_1
6750  , lgt.alloc_to_source_id_num_2     alloc_to_source_id_num_2
6751  , lgt.alloc_to_source_id_num_3     alloc_to_source_id_num_3
6752  , lgt.alloc_to_source_id_num_4     alloc_to_source_id_num_4
6753  , lgt.alloc_to_source_id_char_1    alloc_to_source_id_char_1
6754  , lgt.alloc_to_source_id_char_2    alloc_to_source_id_char_2
6755  , lgt.alloc_to_source_id_char_3    alloc_to_source_id_char_3
6756  , lgt.alloc_to_source_id_char_4    alloc_to_source_id_char_4
6757  , lgt.alloc_to_distribution_type   alloc_to_distribution_type
6758  , lgt.alloc_to_dist_id_char_1      alloc_to_dist_id_char_1
6759  , lgt.alloc_to_dist_id_char_2      alloc_to_dist_id_char_2
6760  , lgt.alloc_to_dist_id_char_3      alloc_to_dist_id_char_3
6761  , lgt.alloc_to_dist_id_char_4      alloc_to_dist_id_char_4
6762  , lgt.alloc_to_dist_id_char_5      alloc_to_dist_id_char_5
6763  , lgt.alloc_to_dist_id_num_1       alloc_to_dist_id_num_1
6764  , lgt.alloc_to_dist_id_num_2       alloc_to_dist_id_num_2
6765  , lgt.alloc_to_dist_id_num_3       alloc_to_dist_id_num_3
6766  , lgt.alloc_to_dist_id_num_4       alloc_to_dist_id_num_4
6767  , lgt.alloc_to_dist_id_num_5       alloc_to_dist_id_num_5
6768     FROM xla_ae_lines_gt     lgt
6769         ,xla_ae_headers_gt   hgt
6770    WHERE hgt.entity_id                  = l_array_entity_id(i)
6771      AND hgt.ledger_id                  = l_array_ledger_id(i)
6772      AND hgt.event_number               < l_array_event_number(i)
6773      AND lgt.event_id                   = hgt.event_id
6774      AND lgt.ledger_id                  = hgt.ledger_id
6775      AND lgt.balance_type_code          = hgt.balance_type_code
6776      -- lines that are reversal lines are not revrsed again
6777      AND lgt.reversal_code              IS NULL
6778      -- lines that are reversed earlier are not reversed again
6779      AND NOT EXISTS (
6780                 SELECT 1
6781                 FROM xla_ae_lines_gt
6782                 WHERE ledger_id        = lgt.ledger_id
6783                   AND ref_ae_header_id = lgt.ae_header_id  -- 5499367 lgt.ref_ae_header_id
6784                   AND temp_line_num    = lgt.temp_line_num * -1
6785                )
6786      AND lgt.header_num = hgt.header_num     -- 4262811c  Transaction Reversal (not yet finalised)
6787    ;
6788 
6789    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6790       trace
6791          (p_msg      => 'Transaction Reversal - Reversal lines created from xla_ae_lines_gt = '||SQL%ROWCOUNT
6792          ,p_level    => C_LEVEL_STATEMENT
6793          ,p_module   => l_log_module);
6794    END IF;
6795 
6796 
6797    --------------------------------------------------------------------------------------------------------------
6798    -- 5108415 For Transaction Reversal, Store the incomplete MPA/AccRev entries to be used in DeleteIncompleteMPA
6799    --------------------------------------------------------------------------------------------------------------
6800    IF p_accounting_mode IN ('F','RESERVE_FUNDS') THEN
6801 
6802       SELECT /*+ Leading(LGT,XET) use_nl(lgt xet aeh ael)*/  -- 5262950
6803              ael.ae_header_id
6804             ,ael.ae_line_num
6805             ,aeh.parent_ae_header_id
6806       BULK COLLECT INTO
6807              g_incomplete_mpa_acc_TR.l_array_ae_header_id
6808             ,g_incomplete_mpa_acc_TR.l_array_ae_line_num
6809             ,g_incomplete_mpa_acc_TR.l_array_parent_ae_header
6810       FROM
6811            xla_ae_lines_gt           lgt
6812           ,xla_ae_lines              ael
6813           ,xla_ae_headers            aeh
6814           ,xla_events                xet -- 5262950
6815       WHERE aeh.application_id                        = l_application_id
6816       AND lgt.reversal_code                           = 'DUMMY_TR'
6817       AND xet.application_id                          = l_application_id -- 5262950
6818       AND xet.entity_id                               = lgt.entity_id    -- 5262950
6819       AND aeh.event_id                                = xet.event_id     -- 5262950
6820       AND aeh.ledger_id                               = lgt.ledger_id
6821       AND aeh.entity_id                               = xet.entity_id    -- 5262950 lgt.entity_id
6822    -- AND aeh.entity_id                               = lgt.entity_id
6823       AND ael.application_id                          = aeh.application_id   -- 5262950
6824       AND ael.ae_header_id                            = aeh.ae_header_id     -- 5262950
6825       AND aeh.parent_ae_header_id IS NOT NULL AND aeh.accounting_entry_status_code IN ('D','N','I','R','RELATED_EVENT_ERROR');  -- 5262950
6826 
6827       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6828          trace
6829                (p_msg      => 'Incomplete mpa_acc_TR  count='||g_incomplete_mpa_acc_TR.l_array_ae_header_id.COUNT
6830                ,p_level    => C_LEVEL_STATEMENT
6831                ,p_module   => l_log_module);
6832          FOR i in 1..g_incomplete_mpa_acc_TR.l_array_ae_header_id.COUNT LOOP
6833             trace
6834                (p_msg      => 'Incomplete mpa_acc_TR  ae_header='||g_incomplete_mpa_acc_TR.l_array_ae_header_id(i)||
6835                               ' ae_line='||g_incomplete_mpa_acc_TR.l_array_ae_line_num(i)||
6836                               ' parent='||g_incomplete_mpa_acc_TR.l_array_parent_ae_header(i)
6837                ,p_level    => C_LEVEL_STATEMENT
6838                ,p_module   => l_log_module);
6839          END LOOP;
6840       END IF;
6841 
6842    END IF;
6843 
6844    --bug#6933157 24-Apr-2008
6845    -- To consider switch_side_flag depending on the ledger reversal option when gain_or_loss_flag is not
6846    -- equal to 'Y'. In the following insert below it was defaulted to 'N' due to which the merge_index
6847    -- was getting calculated differently, leading to receivable being debited with double the amount in case
6848    -- of receipt reversals on create accounting.
6849 
6850    IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE' THEN
6851       l_default_switch_side_flag := 'Y';
6852    ELSE
6853       l_default_switch_side_flag := 'N';
6854    END IF;
6855 
6856    --end bug#6933157 24-Apr-2008
6857 
6858    --
6859    ---------------------------------------------------------------------------------------------------------
6860    -- reverse the lines in xla_ae_lines table
6861    --
6862    -- Some for 4669308:
6863    --          For MPA entries, only reverse what is necessary , ie create reversal for Complete MPA only.
6864    --          Do not create reversal for incomplete entry (since it will get deleted anyway).
6865    --          Also, since the redundant lines will affect ROUNDING calculation.
6866    --          Need to create reversal in Draft mode also (so can be viewed).
6867    ---------------------------------------------------------------------------------------------------------
6868    --
6869    FORALL i IN 1..l_array_event_id.count
6870    INSERT INTO xla_ae_lines_gt
6871       (ae_header_id
6872       ,temp_line_num
6873       ,event_id
6874       ,ref_ae_header_id
6875       ,ref_ae_line_num
6876       ,ref_temp_line_num
6877       ,ref_event_id
6878       ,balance_type_code
6879       ,ledger_id
6880       ,accounting_class_code
6881       ,event_class_code
6882       ,event_type_code
6883       ,line_definition_owner_code
6884       ,line_definition_code
6885       ,accounting_line_type_code
6886       ,accounting_line_code
6887       ,code_combination_status_code
6888       ,code_combination_id
6889       ,alt_ccid_status_code
6890       ,alt_code_combination_id
6891       ,description
6892       ,gl_transfer_mode_code
6893       ,merge_duplicate_code
6894       ,switch_side_flag   -- 5055878
6895 --      ,entered_amount
6896 --      ,ledger_amount
6897       ,unrounded_entered_dr
6898       ,unrounded_entered_cr
6899       ,unrounded_accounted_dr
6900       ,unrounded_accounted_cr
6901       ,calculate_acctd_amts_flag
6902       ,calculate_g_l_amts_flag
6903       ,gain_or_loss_flag
6904       ,rounding_class_code
6905       ,document_rounding_level
6906       ,doc_rounding_acctd_amt
6907       ,doc_rounding_entered_amt
6908       ,entered_currency_mau
6909       ,currency_code
6910       ,currency_conversion_date
6911       ,currency_conversion_rate
6912       ,currency_conversion_type
6913       ,statistical_amount
6914       ,party_id
6915       ,party_site_id
6916       ,party_type_code
6917       ,ussgl_transaction_code
6918       ,jgzz_recon_ref
6919       ,tax_line_ref_id                  -- bug 7159711
6920       ,tax_summary_line_ref_id          -- bug 7159711
6921       ,tax_rec_nrec_dist_ref_id         -- bug 7159711
6922       ,source_distribution_id_char_1
6923       ,source_distribution_id_char_2
6924       ,source_distribution_id_char_3
6925       ,source_distribution_id_char_4
6926       ,source_distribution_id_char_5
6927       ,source_distribution_id_num_1
6928       ,source_distribution_id_num_2
6929       ,source_distribution_id_num_3
6930       ,source_distribution_id_num_4
6931       ,source_distribution_id_num_5
6932       ,source_distribution_type
6933       ,reverse_dist_id_char_1
6934       ,reverse_dist_id_char_2
6935       ,reverse_dist_id_char_3
6936       ,reverse_dist_id_char_4
6937       ,reverse_dist_id_char_5
6938       ,reverse_dist_id_num_1
6939       ,reverse_dist_id_num_2
6940       ,reverse_dist_id_num_3
6941       ,reverse_dist_id_num_4
6942       ,reverse_dist_id_num_5
6943       ,reverse_distribution_type
6944       ,reversal_code
6945       ,accounting_entry_status_code
6946       ,encumbrance_type_id -- 4458381
6947       ,inherit_desc_flag   -- 4219869
6948       ,header_num               -- 4669308
6949       ,mpa_accrual_entry_flag   -- 4262811
6950       ,accounting_date
6951       , BFLOW_APPLICATION_ID
6952         , BFLOW_ENTITY_CODE
6953         , APPLIED_TO_ENTITY_ID
6954         , BFLOW_SOURCE_ID_NUM_1
6955         , BFLOW_SOURCE_ID_NUM_2
6956         , BFLOW_SOURCE_ID_NUM_3
6957         , BFLOW_SOURCE_ID_NUM_4
6958         , BFLOW_SOURCE_ID_CHAR_1
6959         , BFLOW_SOURCE_ID_CHAR_2
6960         , BFLOW_SOURCE_ID_CHAR_3
6961         , BFLOW_SOURCE_ID_CHAR_4
6962         , BFLOW_DISTRIBUTION_TYPE
6963         , BFLOW_DIST_ID_NUM_1
6964         , BFLOW_DIST_ID_NUM_2
6965         , BFLOW_DIST_ID_NUM_3
6966         , BFLOW_DIST_ID_NUM_4
6967         , BFLOW_DIST_ID_NUM_5
6968         , BFLOW_DIST_ID_CHAR_1
6969         , BFLOW_DIST_ID_CHAR_2
6970         , BFLOW_DIST_ID_CHAR_3
6971         , BFLOW_DIST_ID_CHAR_4
6972         , BFLOW_DIST_ID_CHAR_5
6973  , alloc_to_application_id
6974  , alloc_to_entity_code
6975  , alloc_to_source_id_num_1
6976  , alloc_to_source_id_num_2
6977  , alloc_to_source_id_num_3
6978  , alloc_to_source_id_num_4
6979  , alloc_to_source_id_char_1
6980  , alloc_to_source_id_char_2
6981  , alloc_to_source_id_char_3
6982  , alloc_to_source_id_char_4
6983  , alloc_to_distribution_type
6984  , alloc_to_dist_id_char_1
6985  , alloc_to_dist_id_char_2
6986  , alloc_to_dist_id_char_3
6987  , alloc_to_dist_id_char_4
6988  , alloc_to_dist_id_char_5
6989  , alloc_to_dist_id_num_1
6990  , alloc_to_dist_id_num_2
6991  , alloc_to_dist_id_num_3
6992  , alloc_to_dist_id_num_4
6993  , alloc_to_dist_id_num_5)         -- 4955764
6994    SELECT
6995        -- populates ae_header_id which is same as event_id till this point
6996        l_array_event_id(i)
6997       -- populates temp_line_num which is (-ve) of original line
6998       ,0 - xdl.temp_line_num
6999       -- populates event_id which is the event_id of event under process
7000       ,l_array_event_id(i)
7001       -- populates ref_ae_header_id which is ae_header_id of original line
7002       ,ael.ae_header_id
7003       -- populates ref_ae_line_num which is ae_line_num of original line
7004       ,ael.ae_line_num
7005       -- populates ref_temp_line_num which is ae_line_num of original line
7006       ,xdl.temp_line_num
7007       -- populates ref_event_id which is event_id of original line
7008       ,xdl.event_id
7009       ,aeh.balance_type_code
7010       ,l_array_ledger_id(i)
7011       ,ael.accounting_class_code
7012       ,xdl.event_class_code
7013       ,xdl.event_type_code
7014       ,xdl.line_definition_owner_code
7015       ,xdl.line_definition_code
7016       ,xdl.accounting_line_type_code
7017       ,xdl.accounting_line_code
7018       ,C_CREATED
7019       ,ael.code_combination_id
7020       ,C_CREATED
7021       ,ael.code_combination_id
7022       ,ael.description
7023       ,ael.gl_transfer_mode_code
7024       ,xdl.merge_duplicate_code
7025       --,decode(ael.gain_or_loss_flag, 'Y', decode(xdl.calculate_g_l_amts_flag, 'Y', 'Y', 'N'), 'N')
7026                             -- 5055878  switch_side_flag
7027       -- 5055878 amounts modified for reversal method of SIDE or SIGN
7028       , decode(ael.gain_or_loss_flag, 'Y', decode(xdl.calculate_g_l_amts_flag, 'Y', 'Y', 'N'), l_default_switch_side_flag)
7029       --bug#6933157 24-Apr-2008
7030       ,DECODE(l_array_switch_side_flag(i),'Y',xdl.unrounded_entered_cr,  -xdl.unrounded_entered_dr)
7031       ,DECODE(l_array_switch_side_flag(i),'Y',xdl.unrounded_entered_dr,  -xdl.unrounded_entered_cr)
7032       ,DECODE(l_array_switch_side_flag(i),'Y',xdl.unrounded_accounted_cr,-xdl.unrounded_accounted_dr)
7033       ,DECODE(l_array_switch_side_flag(i),'Y',xdl.unrounded_accounted_dr,-xdl.unrounded_accounted_cr)
7034       --
7035       ,xdl.calculate_acctd_amts_flag
7036       ,xdl.calculate_g_l_amts_flag
7037       ,ael.gain_or_loss_flag
7038       ,xdl.rounding_class_code
7039       ,xdl.document_rounding_level
7040       ,NULL     -- xdl.doc_rounding_acctd_amt    4669308 creates wrong ROUNDING line for MPA reversal
7041       ,NULL     -- xdl.doc_rounding_entered_amt  4669308 creates wrong ROUNDING line for MPA reversal
7042 /*
7043       ,xdl.entered_amount
7044       ,xdl.ledger_amount
7045       -- populates entered_dr. amount should be equal to the entered amount in distribution links
7046       ,DECODE(ael.entered_cr,NULL,NULL,xdl.entered_amount)
7047       -- populates entered_cr. amount should be equal to the entered amount in distribution links
7048       ,DECODE(ael.entered_dr,NULL,NULL,xdl.entered_amount)
7049       -- populates accounted_dr. amount should be equal to the ledger amount in distribution links
7050       ,DECODE(ael.accounted_cr,NULL,NULL,xdl.ledger_amount)
7051       -- populates accounted_cr. amount should be equal to the ledger amount in distribution links
7052       ,DECODE(ael.accounted_dr,NULL,NULL,xdl.ledger_amount)
7053 */
7054 --      ,ael.entered_cr
7055 --      ,ael.entered_dr
7056 --      ,ael.accounted_cr
7057 --      ,ael.accounted_dr
7058       ,nvl(fcu.minimum_accountable_unit, power(10, -1* fcu.precision))
7059       ,ael.currency_code
7060       ,ael.currency_conversion_date
7061       ,ael.currency_conversion_rate
7062       ,ael.currency_conversion_type
7063       ,ael.statistical_amount
7064       ,ael.party_id
7065       ,ael.party_site_id
7066       ,ael.party_type_code
7067       ,ael.ussgl_transaction_code
7068       ,ael.jgzz_recon_ref
7069       -- if there are no distributions for this event
7070       -- populate with the distribution if lines that is being reversed
7071       ,NVL(l_array_tax_line_ref(i),xdl.tax_line_ref_id)                   -- bug7159711
7072       ,NVL(l_array_tax_summary_line_ref(i),xdl.tax_summary_line_ref_id)   -- bug7159711
7073       ,NVL(l_array_tax_rec_nrec_dist_ref(i),xdl.tax_rec_nrec_dist_ref_id) -- bug7159711
7074       ,NVL(l_array_source_dist_id_char_1(i),xdl.source_distribution_id_char_1)
7075       ,NVL(l_array_source_dist_id_char_2(i),xdl.source_distribution_id_char_2)
7076       ,NVL(l_array_source_dist_id_char_3(i),xdl.source_distribution_id_char_3)
7077       ,NVL(l_array_source_dist_id_char_4(i),xdl.source_distribution_id_char_4)
7078       ,NVL(l_array_source_dist_id_char_5(i),xdl.source_distribution_id_char_5)
7079       ,NVL(l_array_source_dist_id_num_1(i),xdl.source_distribution_id_num_1)
7080       ,NVL(l_array_source_dist_id_num_2(i),xdl.source_distribution_id_num_2)
7081       ,NVL(l_array_source_dist_id_num_3(i),xdl.source_distribution_id_num_3)
7082       ,NVL(l_array_source_dist_id_num_4(i),xdl.source_distribution_id_num_4)
7083       ,NVL(l_array_source_dist_id_num_5(i),xdl.source_distribution_id_num_5)
7084       ,NVL(l_array_source_dist_type(i),xdl.source_distribution_type)
7085       ,xdl.source_distribution_id_char_1
7086       ,xdl.source_distribution_id_char_2
7087       ,xdl.source_distribution_id_char_3
7088       ,xdl.source_distribution_id_char_4
7089       ,xdl.source_distribution_id_char_5
7090       ,xdl.source_distribution_id_NUM_1
7091       ,xdl.source_distribution_id_NUM_2
7092       ,xdl.source_distribution_id_NUM_3
7093       ,xdl.source_distribution_id_NUM_4
7094       ,xdl.source_distribution_id_NUM_5
7095       ,xdl.source_distribution_type
7096       -- populate reversal_code indicating that line is result of reversal
7097       ,'REVERSAL'
7098       -- denormalises entry status from headers to line to determine the status of entry being created
7099       -- populates 0 for a valid entry (F or D) else poulates 1
7100       ,DECODE(aeh.accounting_entry_status_code,'F',0,'D',0,1)
7101       ,ael.encumbrance_type_id  -- 4458381
7102       ,'N'            -- 4219869 inherit_desc_flag  Should it be from l_array?
7103       ,0              -- 4669308 combine header with reversal of original entry
7104       ,'N'            -- 4262811 mpa_accrual_entry_flag
7105       ,l_array_gl_date(i)    -- 5189664    aeh.accounting_date  -- 4955764
7106       , xdl.APPLIED_TO_APPLICATION_ID   APPLIED_TO_APPLICATION_ID
7107  , xdl.APPLIED_TO_ENTITY_CODE       APPLIED_TO_ENTITY_CODE
7108  , xdl.APPLIED_TO_ENTITY_ID     APPLIED_TO_ENTITY_ID
7109  , xdl.APPLIED_TO_SOURCE_ID_NUM_1   APPLIED_TO_SOURCE_ID_NUM_1
7110  , xdl.APPLIED_TO_SOURCE_ID_NUM_2   APPLIED_TO_SOURCE_ID_NUM_2
7111  , xdl.APPLIED_TO_SOURCE_ID_NUM_3   APPLIED_TO_SOURCE_ID_NUM_3
7112  , xdl.APPLIED_TO_SOURCE_ID_NUM_4   APPLIED_TO_SOURCE_ID_NUM_4
7113  , xdl.APPLIED_TO_SOURCE_ID_CHAR_1  APPLIED_TO_SOURCE_ID_CHAR_1
7114  , xdl.APPLIED_TO_SOURCE_ID_CHAR_2  APPLIED_TO_SOURCE_ID_CHAR_2
7115  , xdl.APPLIED_TO_SOURCE_ID_CHAR_3  APPLIED_TO_SOURCE_ID_CHAR_3
7116  , xdl.APPLIED_TO_SOURCE_ID_CHAR_4  APPLIED_TO_SOURCE_ID_CHAR_4
7117  , xdl.APPLIED_TO_DISTRIBUTION_TYPE APPLIED_TO_DISTRIBUTION_TYPE
7118  , xdl.APPLIED_TO_DIST_ID_NUM_1     APPLIED_TO_DIST_ID_NUM_1
7119  , xdl.APPLIED_TO_DIST_ID_NUM_2     APPLIED_TO_DIST_ID_NUM_2
7120  , xdl.APPLIED_TO_DIST_ID_NUM_3     APPLIED_TO_DIST_ID_NUM_3
7121  , xdl.APPLIED_TO_DIST_ID_NUM_4     APPLIED_TO_DIST_ID_NUM_4
7122  , xdl.APPLIED_TO_DIST_ID_NUM_5     APPLIED_TO_DIST_ID_NUM_5
7123  , xdl.APPLIED_TO_DIST_ID_CHAR_1    APPLIED_TO_DIST_ID_CHAR_1
7124  , xdl.APPLIED_TO_DIST_ID_CHAR_2    APPLIED_TO_DIST_ID_CHAR_2
7125  , xdl.APPLIED_TO_DIST_ID_CHAR_3    APPLIED_TO_DIST_ID_CHAR_3
7126  , xdl.APPLIED_TO_DIST_ID_CHAR_4    APPLIED_TO_DIST_ID_CHAR_4
7127  , xdl.APPLIED_TO_DIST_ID_CHAR_5    APPLIED_TO_DIST_ID_CHAR_5
7128  , xdl.alloc_to_application_id      alloc_to_application_id
7129  , xdl.alloc_to_entity_code     alloc_to_entity_code
7130  , xdl.alloc_to_source_id_num_1     alloc_to_source_id_num_1
7131  , xdl.alloc_to_source_id_num_2     alloc_to_source_id_num_2
7132  , xdl.alloc_to_source_id_num_3     alloc_to_source_id_num_3
7133  , xdl.alloc_to_source_id_num_4     alloc_to_source_id_num_4
7134  , xdl.alloc_to_source_id_char_1    alloc_to_source_id_char_1
7135  , xdl.alloc_to_source_id_char_2    alloc_to_source_id_char_2
7136  , xdl.alloc_to_source_id_char_3    alloc_to_source_id_char_3
7137  , xdl.alloc_to_source_id_char_4    alloc_to_source_id_char_4
7138  , xdl.alloc_to_distribution_type   alloc_to_distribution_type
7139  , xdl.alloc_to_dist_id_char_1      alloc_to_dist_id_char_1
7140  , xdl.alloc_to_dist_id_char_2      alloc_to_dist_id_char_2
7141  , xdl.alloc_to_dist_id_char_3      alloc_to_dist_id_char_3
7142  , xdl.alloc_to_dist_id_char_4      alloc_to_dist_id_char_4
7143  , xdl.alloc_to_dist_id_char_5      alloc_to_dist_id_char_5
7144  , xdl.alloc_to_dist_id_num_1       alloc_to_dist_id_num_1
7145  , xdl.alloc_to_dist_id_num_2       alloc_to_dist_id_num_2
7146  , xdl.alloc_to_dist_id_num_3       alloc_to_dist_id_num_3
7147  , xdl.alloc_to_dist_id_num_4       alloc_to_dist_id_num_4
7148  , xdl.alloc_to_dist_id_num_5       alloc_to_dist_id_num_5
7149    FROM
7150         xla_ae_lines              ael
7151        ,xla_ae_headers            aeh
7152        ,xla_distribution_links    xdl
7153        ,fnd_currencies            fcu
7154        ,xla_events                xe
7155    WHERE aeh.application_id                          = l_application_id
7156      AND aeh.ledger_id                               = l_array_ledger_id(i)
7157      AND aeh.entity_id                               = l_array_entity_id(i)
7158    --  AND aeh.event_number                            < l_array_event_number(i)
7159      AND xdl.application_id                          = aeh.application_id
7160      AND xdl.ae_header_id                        = aeh.ae_header_id         -- 5499367
7161      -- AND xdl.ref_temp_line_num                       IS NULL  -- 5019460 old
7162      AND NVL(xdl.temp_line_num,0)                    >= 0        -- 5019460 new
7163      AND ael.application_id                          = xdl.application_id
7164      AND ael.ae_header_id                            = xdl.ae_header_id     -- 5499367
7165      AND ael.ae_line_num                             = xdl.ae_line_num
7166      AND ael.currency_code                           = fcu.currency_code
7167      AND NOT EXISTS (
7168                 SELECT /*+ no_unnest */ 1
7169                 FROM xla_distribution_links
7170                 WHERE ref_ae_header_id = xdl.ae_header_id
7171                   AND temp_line_num    = xdl.temp_line_num * -1
7172                   AND application_id   = xdl.application_id
7173                )
7174      AND NOT EXISTS (
7175                 SELECT /*+ no_unnest */ 1
7176                 FROM xla_ae_lines_gt
7177                 WHERE ref_ae_header_id = xdl.ae_header_id
7178                   AND temp_line_num    = xdl.temp_line_num * -1
7179                   AND ledger_id        = l_array_ledger_id(i)
7180                )
7181      AND xe.application_id                  = aeh.application_id
7182      AND xe.event_id                        = aeh.event_id
7183      AND NVL(xe.budgetary_control_flag,'N') = DECODE(p_accounting_mode
7184                                                     ,'FUNDS_CHECK','Y'
7185                                                     ,'FUNDS_RESERVE','Y'
7186                                                     ,'N')
7187      AND  ((aeh.parent_ae_header_id IS NOT NULL AND aeh.accounting_entry_status_code = 'F') OR  -- 4669308
7188            (aeh.parent_ae_header_id IS NULL))                                                   -- 4669308
7189    GROUP BY
7190        (0 - xdl.temp_line_num)
7191       ,ael.ae_header_id
7192       ,ael.ae_line_num
7193       ,xdl.temp_line_num
7194       ,xdl.event_id
7195       ,aeh.balance_type_code
7196       ,ael.accounting_class_code
7197       ,xdl.event_class_code
7198       ,xdl.event_type_code
7199       ,xdl.line_definition_owner_code
7200       ,xdl.line_definition_code
7201       ,xdl.accounting_line_type_code
7202       ,xdl.accounting_line_code
7203       ,xdl.unrounded_entered_cr
7204       ,xdl.unrounded_entered_dr
7205       ,xdl.unrounded_accounted_cr
7206       ,xdl.unrounded_accounted_dr
7207       ,xdl.calculate_acctd_amts_flag
7208       ,xdl.calculate_g_l_amts_flag
7209       ,ael.gain_or_loss_flag
7210       ,xdl.rounding_class_code
7211       ,xdl.document_rounding_level
7212       ,xdl.doc_rounding_acctd_amt
7213       ,xdl.doc_rounding_entered_amt
7214       ,ael.code_combination_id
7215       ,ael.description
7216       ,ael.gl_transfer_mode_code
7217       ,xdl.merge_duplicate_code
7218 --      ,ael.entered_cr
7219 --      ,ael.entered_dr
7220 --      ,ael.accounted_cr
7221 --      ,ael.accounted_dr
7222       ,nvl(fcu.minimum_accountable_unit, power(10, -1* fcu.precision))
7223       ,ael.currency_code
7224       ,ael.currency_conversion_date
7225       ,ael.currency_conversion_rate
7226       ,ael.currency_conversion_type
7227       ,ael.statistical_amount
7228       ,ael.party_id
7229       ,ael.party_site_id
7230       ,ael.party_type_code
7231       ,ael.ussgl_transaction_code
7232       ,ael.jgzz_recon_ref
7233       ,aeh.accounting_entry_status_code
7234       ,ael.encumbrance_type_id
7235       ,xdl.tax_line_ref_id              -- bug7226263
7236       ,xdl.tax_summary_line_ref_id      -- bug7226263
7237       ,xdl.tax_rec_nrec_dist_ref_id     -- bug7226263
7238       ,xdl.source_distribution_id_char_1
7239       ,xdl.source_distribution_id_char_2
7240       ,xdl.source_distribution_id_char_3
7241       ,xdl.source_distribution_id_char_4
7242       ,xdl.source_distribution_id_char_5
7243       ,xdl.source_distribution_id_NUM_1
7244       ,xdl.source_distribution_id_NUM_2
7245       ,xdl.source_distribution_id_NUM_3
7246       ,xdl.source_distribution_id_NUM_4
7247       ,xdl.source_distribution_id_NUM_5
7248       ,xdl.source_distribution_type
7249       ,aeh.accounting_date
7250       , xdl.APPLIED_TO_APPLICATION_ID
7251  , xdl.APPLIED_TO_ENTITY_CODE
7252  , xdl.APPLIED_TO_ENTITY_ID
7253  , xdl.APPLIED_TO_SOURCE_ID_NUM_1
7254  , xdl.APPLIED_TO_SOURCE_ID_NUM_2
7255  , xdl.APPLIED_TO_SOURCE_ID_NUM_3
7256  , xdl.APPLIED_TO_SOURCE_ID_NUM_4
7257  , xdl.APPLIED_TO_SOURCE_ID_CHAR_1
7258  , xdl.APPLIED_TO_SOURCE_ID_CHAR_2
7259  , xdl.APPLIED_TO_SOURCE_ID_CHAR_3
7260  , xdl.APPLIED_TO_SOURCE_ID_CHAR_4
7261  , xdl.APPLIED_TO_DISTRIBUTION_TYPE
7262  , xdl.APPLIED_TO_DIST_ID_NUM_1
7263  , xdl.APPLIED_TO_DIST_ID_NUM_2
7264  , xdl.APPLIED_TO_DIST_ID_NUM_3
7265  , xdl.APPLIED_TO_DIST_ID_NUM_4
7266  , xdl.APPLIED_TO_DIST_ID_NUM_5
7267  , xdl.APPLIED_TO_DIST_ID_CHAR_1
7268  , xdl.APPLIED_TO_DIST_ID_CHAR_2
7269  , xdl.APPLIED_TO_DIST_ID_CHAR_3
7270  , xdl.APPLIED_TO_DIST_ID_CHAR_4
7271  , xdl.APPLIED_TO_DIST_ID_CHAR_5
7272  , xdl.alloc_to_application_id
7273  , xdl.alloc_to_entity_code
7274  , xdl.alloc_to_source_id_num_1
7275  , xdl.alloc_to_source_id_num_2
7276  , xdl.alloc_to_source_id_num_3
7277  , xdl.alloc_to_source_id_num_4
7278  , xdl.alloc_to_source_id_char_1
7279  , xdl.alloc_to_source_id_char_2
7280  , xdl.alloc_to_source_id_char_3
7281  , xdl.alloc_to_source_id_char_4
7282  , xdl.alloc_to_distribution_type
7283  , xdl.alloc_to_dist_id_char_1
7284  , xdl.alloc_to_dist_id_char_2
7285  , xdl.alloc_to_dist_id_char_3
7286  , xdl.alloc_to_dist_id_char_4
7287  , xdl.alloc_to_dist_id_char_5
7288  , xdl.alloc_to_dist_id_num_1
7289  , xdl.alloc_to_dist_id_num_2
7290  , xdl.alloc_to_dist_id_num_3
7291  , xdl.alloc_to_dist_id_num_4
7292  , xdl.alloc_to_dist_id_num_5
7293    ;
7294 
7295   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7296       trace
7297          (p_msg      => 'Transaction Reversal - Reversal lines created from xla_ae_lines = '||SQL%ROWCOUNT
7298          ,p_level    => C_LEVEL_STATEMENT
7299          ,p_module   => l_log_module);
7300    END IF;
7301 
7302 
7303 
7304   -- bug7135700 code change, case: reversal lines created for primary but not for secondary for same event.
7305 
7306 IF l_upgrade_check = 1 THEN
7307 
7308 SELECT min(xla_ae_headers.accounting_date)
7309 INTO l_min_ref_event_date
7310 FROM xla_ae_lines_gt gt1, xla_ae_headers
7311 WHERE gt1.reversal_code = 'REVERSAL'
7312 AND gt1.ref_event_id = xla_ae_headers.event_id;
7313 
7314 l_error_count := 0;
7315 
7316 
7317 
7318  IF l_min_ref_event_date <= l_max_first_open_period  THEN
7319 
7320  print_logfile('***************************************************************************************************');
7321  print_logfile('The following REVERSAL (TR) events do not have historic entries replicated in secondary/alc ledgers');
7322  print_logfile('Manual GL adjustments in the secondary/alc ledgers needs to be done for these events');
7323 
7324 
7325  FOR c_not_reversed_entries IN
7326  (SELECT DISTINCT gt1.event_id, gt1.ledger_id
7327  FROM xla_ae_lines_gt gt1, gl_ledgers gll
7328  WHERE gt1.reversal_code = 'DUMMY_TR'
7329  AND gll.ledger_id = gt1.ledger_id
7330  AND gll.ledger_category_code <> 'PRIMARY'
7331  AND NOT EXISTS (SELECT 1
7332                  FROM xla_ae_lines_gt gt2
7333          WHERE gt2.reversal_code = 'REVERSAL'
7334          AND gt1.event_id = gt2.event_id
7335          AND gt1.ledger_id = gt2.ledger_id)
7336  AND EXISTS (SELECT 1
7337             FROM xla_ae_lines_gt gt3
7338             WHERE gt3.reversal_code = 'REVERSAL'
7339         AND gt1.event_id = gt3.event_id))
7340 
7341  LOOP
7342   --IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7343   --    trace
7344   --       (p_msg      => 'WARNING - Reversal (TR) lines could not be created for event  ' || c_not_reversed_entries.event_id || ' of ledger ' || c_not_reversed_entries.ledger_id || '. Please create Manual Adjustment Entries.'
7345   --       ,p_level    => C_LEVEL_STATEMENT
7346   --       ,p_module   => l_log_module);
7347   --END IF;
7348   print_logfile('Event ' || c_not_reversed_entries.event_id || ' of ledger ' || c_not_reversed_entries.ledger_id);
7349   l_error_count := l_error_count + 1;
7350  END LOOP;
7351 
7352  IF l_error_count > 0 THEN
7353    g_hist_reversal_error_exists := TRUE;
7354  END IF;
7355 
7356  IF l_error_count = 0 THEN
7357  print_logfile('    NO SUCH ENTRIES');
7358  END IF;
7359 
7360  print_logfile('***************************************************************************************************');
7361 
7362 END IF;
7363 END IF;
7364 
7365  -- bug7135700 code change end
7366 
7367 
7368    --
7369    -- select all the reversal lines that do not have a header in xla_ae_headers_gt
7370    --
7371    SELECT event_id
7372          ,ledger_id
7373          ,balance_type_code
7374          ,max(accounting_entry_status_code)
7375          ,NVL(header_num,0)                   -- 4262811c missing mpa reversal lines, 4963422 set header_num to 0
7376      BULK COLLECT INTO
7377           l_array_event_id
7378          ,l_array_ledger_id
7379          ,l_array_balance_type_code
7380          ,l_array_entry_status_code
7381          ,l_array_header_num                  -- 4262811c missing mpa reversal lines
7382      FROM xla_ae_lines_gt  lgt
7383     WHERE reversal_code = 'REVERSAL'
7384       AND NOT EXISTS
7385          (SELECT 1
7386             FROM xla_ae_headers_gt
7387            WHERE event_id = lgt.event_id
7388              AND ledger_id = lgt.ledger_id
7389           -- AND nvl(header_num, -1) = nvl(lgt.header_num, -1)  -- 4262811c missing mpa reversal lines
7390                                                                 -- 4669308  NVL(-1) give separate headers for MPA
7391                                                                 --          also causing XLA_AE_LINES_U1 error
7392              AND nvl(header_num,  0) = nvl(lgt.header_num,  0)  -- 4669308  NVL(0) combine replacement and MPA to 1 header
7393              AND balance_type_code = lgt.balance_type_code)
7394     GROUP BY event_id
7395             ,ledger_id
7396             ,header_num                       -- 4262811c missing mpa reversal lines
7397             ,balance_type_code;
7398 
7399    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7400       trace
7401          (p_msg      => 'Number of Headers that need to be created for reversal lines = '||SQL%ROWCOUNT
7402          ,p_level    => C_LEVEL_STATEMENT
7403          ,p_module   => l_log_module);
7404    END IF;
7405 
7406    --
7407    -- inserting new rows in xla_ae_headers_gt for the reversal lines that did not have a header
7408    --
7409    FORALL I IN 1..l_array_event_id.count
7410       INSERT INTO xla_ae_headers_gt
7411           ( ae_header_id
7412           , accounting_entry_status_code
7413           , accounting_entry_type_code
7414           , ledger_id
7415           , entity_id
7416           , event_id
7417           , event_type_code
7418           , accounting_date
7419           , product_rule_type_code
7420           , product_rule_code
7421           , product_rule_version
7422           , je_category_name
7423           , period_name
7424           , doc_sequence_id
7425           , doc_sequence_value
7426           , description
7427           , budget_version_id
7428           --, encumbrance_type_id
7429           , balance_type_code
7430           , amb_context_code
7431           , doc_category_code
7432           , gl_transfer_status_code
7433           , event_status_code
7434           , header_num              -- 4262811c  MPA header for line reversal
7435           ,accrual_reversal_flag)   -- 4262811
7436        (SELECT
7437             ae_header_id
7438           , l_array_entry_status_code(i)
7439           , accounting_entry_type_code
7440           , ledger_id
7441           , entity_id
7442           , event_id
7443           , event_type_code
7444           , accounting_date
7445           , product_rule_type_code
7446           , product_rule_code
7447           , product_rule_version
7448           , je_category_name
7449           , period_name
7450           , doc_sequence_id
7451           , doc_sequence_value
7452           , description
7453           , DECODE(l_array_balance_type_code(i),'B',budget_version_id,NULL) -- 4924492
7454           --, encumbrance_type_id
7455           , l_array_balance_type_code(i)
7456           , amb_context_code
7457           , doc_category_code
7458           , gl_transfer_status_code
7459           , decode(l_array_entry_status_code(i),XLA_AE_JOURNAL_ENTRY_PKG.C_VALID,'X','I')
7460           , l_array_header_num(i)    -- 4262811c  MPA header for line reversal
7461           , accrual_reversal_flag    -- 4262811a
7462        FROM xla_ae_headers_gt
7463       WHERE event_id = l_array_event_id(i)
7464         AND ledger_id = l_array_ledger_id(i)
7465         AND balance_type_code = 'X'
7466         AND NVL(header_num,0) = 0);   -- 5183946  xla_ae_headers_gt_u1 error
7467 
7468 
7469    IF (C_LEVEL_EVENT >= g_log_level) THEN
7470       trace
7471          (p_msg      => 'Headers inserted in xla_ae_headers_gt = '||TO_CHAR(SQL%ROWCOUNT)
7472          ,p_level    => C_LEVEL_EVENT
7473          ,p_module   => l_log_module);
7474    END IF;
7475    --
7476 
7477 -- bug 7253269 reversal error start
7478 
7479  l_error_count := 0;
7480 
7481  print_logfile('***************************************************************************************************');
7482  print_logfile('The following REVERSAL events could not be processed. The event/process status is U/U: ');
7483  print_logfile('Note: this warning may be ignored for any events whose ledger is a cash-basis ledger');
7484 
7485 
7486 
7487  FOR c_not_reversed_entries IN
7488  (SELECT DISTINCT gt1.event_id, gt1.ledger_id
7489  FROM xla_ae_lines_gt gt1
7490  WHERE gt1.reversal_code IN ('DUMMY_LR', 'DUMMY_TR')
7491  AND NOT EXISTS (SELECT 1
7492                  FROM xla_ae_lines_gt gt2
7493          WHERE gt2.reversal_code = 'REVERSAL'
7494          AND gt1.event_id = gt2.event_id
7495          AND gt1.ledger_id = gt2.ledger_id))
7496 
7497 
7498  LOOP
7499   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7500       trace
7501          (p_msg      => 'EVENT not reversed ' || c_not_reversed_entries.event_id || ' of ledger ' || c_not_reversed_entries.ledger_id
7502          ,p_level    => C_LEVEL_STATEMENT
7503          ,p_module   => l_log_module);
7504   END IF;
7505   print_logfile('Event ' || c_not_reversed_entries.event_id || ' of ledger ' || c_not_reversed_entries.ledger_id);
7506   l_error_count := l_error_count + 1;
7507  END LOOP;
7508 
7509  IF l_error_count > 0 THEN
7510    xla_accounting_cache_pkg.g_reversal_error := TRUE;
7511  END IF;
7512 
7513  IF l_error_count = 0 THEN
7514   print_logfile('-------NO SUCH EVENTS-----------');
7515   IF (C_LEVEL_EVENT >= g_log_level) THEN
7516       trace
7517          (p_msg      => 'No errors related to reversal'
7518          ,p_level    => C_LEVEL_EVENT
7519          ,p_module   => l_log_module);
7520    END IF;
7521  END IF;
7522 
7523  print_logfile('***************************************************************************************************');
7524 
7525 
7526 -- bug 7253269 reversal error end
7527 
7528 
7529 
7530    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7531       trace
7532          (p_msg      => 'END of AccountingReversal'
7533          ,p_level    => C_LEVEL_PROCEDURE
7534          ,p_module   => l_log_module);
7535    END IF;
7536 EXCEPTION
7537 WHEN xla_exceptions_pkg.application_exception THEN
7538    RAISE;
7539 WHEN OTHERS  THEN
7540    xla_exceptions_pkg.raise_message
7541       (p_location => 'xla_ae_lines_pkg.AccountingReversal');
7542 END AccountingReversal;
7543 --
7544 /*======================================================================+
7545 |                                                                       |
7546 | PUBLIC Procedure                                                      |
7547 |                                                                       |
7548 |                                                                       |
7549 +======================================================================*/
7550 FUNCTION SetLineNum(
7551   p_balance_type_code      IN VARCHAR2
7552 )
7553 RETURN NUMBER
7554 IS
7555 l_line_num                  NUMBER;
7556 l_log_module                VARCHAR2(240);
7557 BEGIN
7558 --
7559 IF g_log_enabled THEN
7560       l_log_module := C_DEFAULT_MODULE||'.SetLineNum';
7561 END IF;
7562 --
7563 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7564 
7565       trace
7566          (p_msg      => 'BEGIN of SetLineNum'
7567          ,p_level    => C_LEVEL_PROCEDURE
7568          ,p_module   => l_log_module);
7569 
7570       trace
7571          (p_msg      => 'p_balance_type_code = '||p_balance_type_code
7572          ,p_level    => C_LEVEL_PROCEDURE
7573          ,p_module   => l_log_module);
7574 END IF;
7575 --
7576 CASE p_balance_type_code
7577   --
7578   WHEN C_ACTUAL         THEN
7579      --
7580      g_ActualLineNum                                     := NVL(g_ActualLineNum,0) + 1 ;
7581      l_line_num                                          := g_ActualLineNum;
7582      --
7583   WHEN C_BUDGET         THEN
7584      --
7585      g_BudgetLineNum                                     := NVL(g_BudgetLineNum,0) + 1 ;
7586      l_line_num                                          := g_BudgetLineNum;
7587      --
7588   WHEN C_ENCUMBRANCE    THEN
7589      --
7590      g_EncumbLineNum                                     := NVL(g_EncumbLineNum,0) + 1 ;
7591      l_line_num                                          := g_EncumbLineNum;
7592      --
7593   ELSE  null;
7594 --
7595 END CASE;
7596 --
7597 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7598       trace
7599          (p_msg      => 'return value. = '||TO_CHAR(l_line_num)
7600          ,p_level    => C_LEVEL_PROCEDURE
7601          ,p_module   => l_log_module);
7602       trace
7603          (p_msg      => 'END of SetLineNum'
7604          ,p_level    => C_LEVEL_PROCEDURE
7605          ,p_module   => l_log_module);
7606 
7607 END IF;
7608 
7609 RETURN l_line_num;
7610 EXCEPTION
7611 WHEN xla_exceptions_pkg.application_exception THEN
7612    XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
7613    RAISE;
7614 WHEN OTHERS  THEN
7615    xla_exceptions_pkg.raise_message
7616            (p_location => 'XLA_AE_LINES_PKG.SetLineNum');
7617   --
7618 END SetLineNum;
7619 --
7620 --
7621 /*======================================================================+
7622 |                                                                       |
7623 | Public Procedure                                                      |
7624 |                                                                       |
7625 |                                                                       |
7626 +======================================================================*/
7627 PROCEDURE SetRevAccountingSource (
7628   p_accounting_source      IN VARCHAR2
7629 , p_standard_source        IN VARCHAR2
7630 , p_source_code            IN VARCHAR2
7631 , p_source_type_code       IN VARCHAR2
7632 , p_source_application_id  IN NUMBER
7633 )
7634 IS
7635 l_log_module         VARCHAR2(240);
7636 BEGIN
7637 --
7638 IF g_log_enabled THEN
7639       l_log_module := C_DEFAULT_MODULE||'.SetRevAccountingSource';
7640 END IF;
7641 --
7642 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7643       trace
7644          (p_msg      => 'BEGIN of SetRevAccountingSource'
7645          ,p_level    => C_LEVEL_PROCEDURE
7646          ,p_module   => l_log_module);
7647 
7648       trace
7649          (p_msg      => 'p_accounting_source = '||p_accounting_source
7650          ,p_level    => C_LEVEL_PROCEDURE
7651          ,p_module   => l_log_module);
7652 
7653       trace
7654           (p_msg      => 'p_standard_source = '||p_standard_source
7655          ,p_level    => C_LEVEL_PROCEDURE
7656          ,p_module   => l_log_module);
7657 END IF;
7658 
7659 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7660 
7661            trace
7662               (p_msg      => 'p_source_code = '||p_source_code
7663               ,p_level    => C_LEVEL_STATEMENT
7664               ,p_module   => l_log_module);
7665 
7666            trace
7667               (p_msg      => 'p_source_type_code = '||p_source_type_code
7668               ,p_level    => C_LEVEL_STATEMENT
7669               ,p_module   => l_log_module);
7670 
7671            trace
7672               (p_msg      => 'p_source_application_id = '||p_source_application_id
7673               ,p_level    => C_LEVEL_STATEMENT
7674               ,p_module   => l_log_module);
7675 
7676 END IF;
7677 --
7678 CASE p_accounting_source
7679   --
7680   -- line accounting sources
7681   --
7682   WHEN 'PARTY_TYPE'                THEN
7683 
7684              g_reverse_lines.party_type_code        := p_standard_source;
7685 
7686   WHEN 'ENTERED_CURRENCY_CODE'     THEN g_reverse_lines.currency_code          := p_standard_source;
7687   --
7688   -- accounting reversal
7689   --
7690   WHEN 'ACCOUNTING_REVERSAL_OPTION' THEN g_reverse_lines.acc_reversal_option   := p_standard_source;
7691   WHEN 'REVERSED_DISTRIBUTION_TYPE' THEN g_reverse_lines.sys_distribution_type := p_standard_source;
7692   WHEN 'DISTRIBUTION_TYPE'          THEN g_reverse_lines.rev_sys_distribution_type := p_standard_source;
7693   WHEN 'REVERSED_DISTRIBUTION_ID1'  THEN g_reverse_lines.distribution_id_char_1 := p_standard_source;
7694   WHEN 'REVERSED_DISTRIBUTION_ID2'  THEN g_reverse_lines.distribution_id_char_2 := p_standard_source;
7695   WHEN 'REVERSED_DISTRIBUTION_ID3'  THEN g_reverse_lines.distribution_id_char_3 := p_standard_source;
7696   WHEN 'REVERSED_DISTRIBUTION_ID4'  THEN g_reverse_lines.distribution_id_char_4 := p_standard_source;
7697   WHEN 'REVERSED_DISTRIBUTION_ID5'  THEN g_reverse_lines.distribution_id_char_5 := p_standard_source;
7698   --
7699   WHEN 'DISTRIBUTION_IDENTIFIER_1'  THEN g_reverse_lines.rev_distrib_id_char_1 := p_standard_source;
7700   WHEN 'DISTRIBUTION_IDENTIFIER_2'  THEN g_reverse_lines.rev_distrib_id_char_2 := p_standard_source;
7701   WHEN 'DISTRIBUTION_IDENTIFIER_3'  THEN g_reverse_lines.rev_distrib_id_char_3 := p_standard_source;
7702   WHEN 'DISTRIBUTION_IDENTIFIER_4'  THEN g_reverse_lines.rev_distrib_id_char_4 := p_standard_source;
7703   WHEN 'DISTRIBUTION_IDENTIFIER_5'  THEN g_reverse_lines.rev_distrib_id_char_5 := p_standard_source;
7704   --
7705   -- line base currency accounting sources
7706   --
7707   WHEN 'EXCHANGE_RATE_TYPE'        THEN g_reverse_lines.curr_conversion_type := p_standard_source;
7708   WHEN 'USSGL_TRANSACTION_CODE'    THEN g_reverse_lines.ussgl_transaction    := p_standard_source;
7709   WHEN 'RECON_REF'                 THEN g_reverse_lines.jgzz_recon_ref       := p_standard_source;
7710 
7711   ELSE null;
7712 --
7713 END CASE;
7714 --
7715 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7716 
7717       trace
7718          (p_msg      => 'END of SetRevAccountingSource'
7719          ,p_level    => C_LEVEL_PROCEDURE
7720          ,p_module   => l_log_module);
7721 
7722 END IF;
7723 EXCEPTION
7724 WHEN xla_exceptions_pkg.application_exception THEN
7725    XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
7726    RAISE;
7727 WHEN OTHERS  THEN
7728    xla_exceptions_pkg.raise_message
7729            (p_location => 'XLA_AE_LINES_PKG.SetRevAccountingSource');
7730   --
7731 END SetRevAccountingSource;
7732 --
7733 --
7734 /*======================================================================+
7735 |                                                                       |
7736 | Public Procedure                                                      |
7737 |                                                                       |
7738 |                                                                       |
7739 +======================================================================*/
7740 PROCEDURE SetRevAccountingSource (
7741   p_accounting_source      IN VARCHAR2
7742 , p_standard_source        IN NUMBER
7743 , p_source_code            IN VARCHAR2
7744 , p_source_type_code       IN VARCHAR2
7745 , p_source_application_id  IN NUMBER
7746 )
7747 IS
7748 l_log_module         VARCHAR2(240);
7749 BEGIN
7750 --
7751 IF g_log_enabled THEN
7752       l_log_module := C_DEFAULT_MODULE||'.SetRevAccountingSource';
7753 END IF;
7754 --
7755 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7756       trace
7757          (p_msg      => 'BEGIN of SetRevAccountingSource'
7758          ,p_level    => C_LEVEL_PROCEDURE
7759          ,p_module   => l_log_module);
7760 
7761       trace
7762          (p_msg      => 'p_accounting_source = '||p_accounting_source
7763          ,p_level    => C_LEVEL_PROCEDURE
7764          ,p_module   => l_log_module);
7765 
7766       trace
7767           (p_msg      => 'p_standard_source = '||p_standard_source
7768          ,p_level    => C_LEVEL_PROCEDURE
7769          ,p_module   => l_log_module);
7770 END IF;
7771 
7772 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7773 
7774            trace
7775               (p_msg      => 'p_source_code = '||p_source_code
7776               ,p_level    => C_LEVEL_STATEMENT
7777               ,p_module   => l_log_module);
7778 
7779            trace
7780               (p_msg      => 'p_source_type_code = '||p_source_type_code
7781               ,p_level    => C_LEVEL_STATEMENT
7782               ,p_module   => l_log_module);
7783 
7784            trace
7785               (p_msg      => 'p_source_application_id = '||p_source_application_id
7786               ,p_level    => C_LEVEL_STATEMENT
7787               ,p_module   => l_log_module);
7788 
7789 END IF;
7790 
7791 --
7792 CASE p_accounting_source
7793 
7794   WHEN 'LEDGER_AMOUNT'                 THEN g_reverse_lines.ledger_amount             := p_standard_source;
7795   WHEN 'EXCHANGE_RATE'                 THEN g_reverse_lines.curr_conversion_rate      := p_standard_source;
7796   WHEN 'PARTY_ID'                      THEN g_reverse_lines.party_id                  := p_standard_source;
7797   WHEN 'PARTY_SITE_ID'                 THEN g_reverse_lines.party_site_id             := p_standard_source;
7798   WHEN 'ENTERED_CURRENCY_AMOUNT'       THEN g_reverse_lines.entered_amount            := p_standard_source;
7799   WHEN 'STATISTICAL_AMOUNT'            THEN g_reverse_lines.statistical_amount        := p_standard_source;
7800 
7801 
7802   WHEN 'TAX_LINE_REF_ID'               THEN g_reverse_lines.tax_line_ref          := p_standard_source;
7803   WHEN 'TAX_SUMMARY_LINE_REF_ID'       THEN g_reverse_lines.tax_summary_line_ref  := p_standard_source;
7804   WHEN 'TAX_REC_NREC_DIST_REF_ID'      THEN g_reverse_lines.tax_rec_nrec_dist_ref := p_standard_source;
7805 --
7806   WHEN 'REVERSED_DISTRIBUTION_ID1'    THEN g_reverse_lines.distribution_id_num_1   := p_standard_source;
7807   WHEN 'REVERSED_DISTRIBUTION_ID2'    THEN g_reverse_lines.distribution_id_num_2   := p_standard_source;
7808   WHEN 'REVERSED_DISTRIBUTION_ID3'    THEN g_reverse_lines.distribution_id_num_3   := p_standard_source;
7809   WHEN 'REVERSED_DISTRIBUTION_ID4'    THEN g_reverse_lines.distribution_id_num_4   := p_standard_source;
7810   WHEN 'REVERSED_DISTRIBUTION_ID5'    THEN g_reverse_lines.distribution_id_num_5   := p_standard_source;
7811   --
7812   WHEN 'DISTRIBUTION_IDENTIFIER_1'    THEN g_reverse_lines.rev_distrib_id_num_1   := p_standard_source;
7813   WHEN 'DISTRIBUTION_IDENTIFIER_2'    THEN g_reverse_lines.rev_distrib_id_num_2   := p_standard_source;
7814   WHEN 'DISTRIBUTION_IDENTIFIER_3'    THEN g_reverse_lines.rev_distrib_id_num_3   := p_standard_source;
7815   WHEN 'DISTRIBUTION_IDENTIFIER_4'    THEN g_reverse_lines.rev_distrib_id_num_4   := p_standard_source;
7816   WHEN 'DISTRIBUTION_IDENTIFIER_5'    THEN g_reverse_lines.rev_distrib_id_num_5   := p_standard_source;
7817   --
7818   WHEN 'REVERSED_UPGRADE_DEBIT_CCID'  THEN g_reverse_lines.reversal_debit_ccid     := p_standard_source;
7819   WHEN 'REVERSED_UPGRADE_CREDIT_CCID' THEN g_reverse_lines.reversal_credit_ccid    := p_standard_source;
7820   --
7821   ELSE null;
7822 --
7823 END CASE;
7824 --
7825 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7826 
7827       trace
7828          (p_msg      => 'END of SetRevAccountingSource'
7829          ,p_level    => C_LEVEL_PROCEDURE
7830          ,p_module   => l_log_module);
7831 
7832 END IF;
7833 --
7834 EXCEPTION
7835 WHEN xla_exceptions_pkg.application_exception THEN
7836    XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
7837    RAISE;
7838 WHEN OTHERS  THEN
7839    xla_exceptions_pkg.raise_message
7840            (p_location => 'XLA_AE_LINES_PKG.SetRevAccountingSource');
7841   --
7842 END SetRevAccountingSource;
7843 --
7844 /*======================================================================+
7845 |                                                                       |
7846 | Public Procedure                                                      |
7847 |                                                                       |
7848 |                                                                       |
7849 +======================================================================*/
7850 PROCEDURE SetRevAccountingSource (
7851   p_accounting_source      IN VARCHAR2
7852 , p_standard_source        IN DATE
7853 , p_source_code            IN VARCHAR2
7854 , p_source_type_code       IN VARCHAR2
7855 , p_source_application_id  IN NUMBER
7856 )
7857 IS
7858 l_log_module         VARCHAR2(240);
7859 BEGIN
7860 --
7861 IF g_log_enabled THEN
7862       l_log_module := C_DEFAULT_MODULE||'.SetRevAccountingSource';
7863 END IF;
7864 --
7865 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7866       trace
7867          (p_msg      => 'BEGIN of SetRevAccountingSource'
7868          ,p_level    => C_LEVEL_PROCEDURE
7869          ,p_module   => l_log_module);
7870 
7871       trace
7872          (p_msg      => 'p_accounting_source = '||p_accounting_source
7873          ,p_level    => C_LEVEL_PROCEDURE
7874          ,p_module   => l_log_module);
7875 
7876       trace
7877           (p_msg      => 'p_standard_source = '||p_standard_source
7878          ,p_level    => C_LEVEL_PROCEDURE
7879          ,p_module   => l_log_module);
7880 END IF;
7881 
7882 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7883 
7884            trace
7885               (p_msg      => 'p_source_code = '||p_source_code
7886               ,p_level    => C_LEVEL_STATEMENT
7887               ,p_module   => l_log_module);
7888 
7889            trace
7890               (p_msg      => 'p_source_type_code = '||p_source_type_code
7891               ,p_level    => C_LEVEL_STATEMENT
7892               ,p_module   => l_log_module);
7893 
7894            trace
7895               (p_msg      => 'p_source_application_id = '||p_source_application_id
7896               ,p_level    => C_LEVEL_STATEMENT
7897               ,p_module   => l_log_module);
7898 
7899 END IF;
7900 --
7901 CASE p_accounting_source
7902   --
7903   -- line accounting sources
7904   --
7905   -- 4262811 MPA ------------------------------------------------------------------------------------
7906   WHEN 'MULTIPERIOD_START_DATE'    THEN g_reverse_lines.mpa_start_date      := p_standard_source;
7907   WHEN 'MULTIPERIOD_END_DATE'      THEN g_reverse_lines.mpa_end_date        := p_standard_source;
7908 --WHEN 'DEFERRED_START_DATE'       THEN g_reverse_lines.deferred_start_date := p_standard_source;
7909 --WHEN 'DEFERRED_END_DATE'         THEN g_reverse_lines.deferred_end_date   := p_standard_source;
7910   ---------------------------------------------------------------------------------------------------
7911   WHEN 'EXCHANGE_DATE'             THEN g_reverse_lines.curr_conversion_date:= p_standard_source;
7912   --
7913   ELSE null;
7914 --
7915 END CASE;
7916 --
7917 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7918 
7919       trace
7920          (p_msg      => 'END of SetRevAccountingSource'
7921          ,p_level    => C_LEVEL_PROCEDURE
7922          ,p_module   => l_log_module);
7923 
7924 END IF;
7925 --
7926 EXCEPTION
7927 WHEN xla_exceptions_pkg.application_exception THEN
7928    XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
7929    RAISE;
7930 WHEN OTHERS  THEN
7931    xla_exceptions_pkg.raise_message
7932            (p_location => 'XLA_AE_LINES_PKG.SetRevAccountingSource');
7933 END SetRevAccountingSource;
7934 --
7935 --
7936 /*======================================================================+
7937 |                                                                       |
7938 | Public Procedure                                                      |
7939 | This procedure is no longer used after attribute enhancement project  |
7940 |                                                                       |
7941 +======================================================================*/
7942 --
7943 -- This might not be needed with bulk perfromance changes
7944 --
7945 /*
7946 PROCEDURE accounting_reversal(p_accounting_reversal_option IN VARCHAR2
7947                              ,p_transaction_reversal       IN OUT NOCOPY NUMBER)
7948 IS
7949 l_null_rev_line        t_rec_reverse_line;
7950 l_transaction_reversal NUMBER;
7951 l_log_module           VARCHAR2(240);
7952 BEGIN
7953 --
7954 IF g_log_enabled THEN
7955       l_log_module := C_DEFAULT_MODULE||'.accounting_reversal';
7956 END IF;
7957 --
7958 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7959 
7960       trace
7961          (p_msg      => 'BEGIN of accounting_reversal'
7962          ,p_level    => C_LEVEL_PROCEDURE
7963          ,p_module   => l_log_module);
7964 
7965       trace
7966           (p_msg      => 'p_accounting_reversal_option = '||p_accounting_reversal_option
7967          ,p_level    => C_LEVEL_PROCEDURE
7968          ,p_module   => l_log_module);
7969 
7970       trace
7971          (p_msg      => 'p_transaction_reversal = '||p_transaction_reversal
7972          ,p_level    => C_LEVEL_PROCEDURE
7973          ,p_module   => l_log_module);
7974 
7975 END IF;
7976 
7977 l_transaction_reversal:= p_transaction_reversal ;
7978 --
7979 
7980   IF   p_accounting_reversal_option IN ('Y','B','Z','C') AND
7981        g_reverse_lines.sys_distribution_type IS NULL AND
7982        l_transaction_reversal = 0 THEN
7983 
7984 --       TransactionReversal;
7985        l_transaction_reversal:= 1;
7986 
7987   ELSIF p_accounting_reversal_option IN ('Y','B','Z','C') AND
7988         g_reverse_lines.sys_distribution_type IS NOT NULL AND
7989         l_transaction_reversal IN (0,2) THEN
7990 
7991 --    StandardAccountingReversal;
7992 --      (p_accounting_reversal_option => p_accounting_reversal_option
7993 --      );
7994     l_transaction_reversal:= 2;
7995 
7996 
7997   ELSIF p_accounting_reversal_option = 'U' THEN
7998 
7999     UpgradeAccountingReversal;
8000 
8001   ELSIF p_accounting_reversal_option IN ('Y','B','Z','C') AND
8002         g_reverse_lines.sys_distribution_type IS NULL AND
8003         l_transaction_reversal = 1
8004   THEN
8005      XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
8006 
8007      xla_accounting_err_pkg.build_message
8008                                         (p_appli_s_name            => 'XLA'
8009                                         ,p_msg_name                => 'XLA_AP_TRANS_REVERSAL_INCONST'
8010                                         ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8011                                         ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8012                                         ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8013     );
8014 
8015     IF (C_LEVEL_ERROR >= g_log_level) THEN
8016                         trace
8017                            (p_msg      => 'ERROR: XLA_AP_TRANS_REVERSAL_INCONST'
8018                            ,p_level    => C_LEVEL_ERROR
8019                            ,p_module   => l_log_module);
8020     END IF;
8021 
8022   ELSE
8023       XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
8024 
8025       xla_accounting_err_pkg.build_message
8026                                               (p_appli_s_name            => 'XLA'
8027                                               ,p_msg_name                => 'XLA_AP_REVERSAL_INCONSISTENT'
8028                                               ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8029                                               ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8030                                               ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8031     );
8032 
8033     IF (C_LEVEL_ERROR >= g_log_level) THEN
8034                         trace
8035                            (p_msg      => 'ERROR: XLA_AP_REVERSAL_INCONSISTENT'
8036                            ,p_level    => C_LEVEL_ERROR
8037                            ,p_module   => l_log_module);
8038     END IF;
8039 
8040   END IF;
8041 
8042   p_transaction_reversal:= l_transaction_reversal ;
8043 --
8044 -- Reset reverse line record
8045 --
8046   g_reverse_lines                := l_null_rev_line;
8047 --
8048 --
8049 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8050       trace
8051          (p_msg      => 'return value. p_transaction_reversal = '||p_transaction_reversal
8052          ,p_level    => C_LEVEL_PROCEDURE
8053          ,p_module   => l_log_module);
8054 
8055       trace
8056          (p_msg      => 'END of accounting_reversal'
8057          ,p_level    => C_LEVEL_PROCEDURE
8058          ,p_module   => l_log_module);
8059 
8060 END IF;
8061 --
8062 EXCEPTION
8063 WHEN xla_exceptions_pkg.application_exception THEN
8064   XLA_AE_JOURNAL_ENTRY_PKG.g_global_status       := XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
8065   RAISE;
8066 WHEN OTHERS  THEN
8067    xla_exceptions_pkg.raise_message
8068            (p_location => 'XLA_AE_LINES_PKG.accounting_reversal');
8069   --
8070 END accounting_reversal;
8071 --
8072 */
8073 --
8074 /*======================================================================+
8075 |                                                                       |
8076 | Public Procedure                                                      |
8077 |                                                                       |
8078 +======================================================================*/
8079 --
8080 --bulk performance
8081 --
8082 procedure set_ae_header_id
8083        (p_ae_header_id      in number
8084        ,p_header_num        in number) is   -- 4262811
8085 
8086 l_log_module     varchar2(240);
8087 begin
8088 IF g_log_enabled THEN
8089       l_log_module := C_DEFAULT_MODULE||'.set_ae_header_id';
8090 END IF;
8091 --
8092 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8093       trace
8094          (p_msg      => 'BEGIN of set_ae_header_id'
8095          ,p_level    => C_LEVEL_PROCEDURE
8096          ,p_module   => l_log_module);
8097       trace
8098          (p_msg      => 'p_ae_header_id = '||p_ae_header_id
8099          ,p_level    => C_LEVEL_PROCEDURE
8100          ,p_module   => l_log_module);
8101 
8102 END IF;
8103 --
8104 g_rec_lines.array_ae_header_id(g_LineNumber) := p_ae_header_id;
8105 g_rec_lines.array_header_num(g_LineNumber)   := p_header_num;   -- 4262811
8106 
8107 --
8108 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8109       trace
8110          (p_msg      => 'END of set_ae_header_id'
8111          ,p_level    => C_LEVEL_PROCEDURE
8112          ,p_module   => l_log_module);
8113 
8114 END IF;
8115 end set_ae_header_id;
8116 --
8117 /*======================================================================+
8118 |                                                                       |
8119 |                                                                       |
8120 |                                                                       |
8121 +======================================================================*/
8122 procedure SetLineAcctAttrs
8123        (p_rec_acct_attrs    in t_rec_acct_attrs) is
8124 l_log_module                 VARCHAR2(240);
8125 l_attr_error                 VARCHAR2(30);
8126 l_invalid_attr               VARCHAR2(30) := 'XLA_AP_INVALID_LINE_ATTR';
8127 l_missing_attr               VARCHAR2(30) := 'XLA_AP_MISSING_LINE_ATTR';
8128 
8129 BEGIN
8130 
8131 IF g_log_enabled THEN
8132       l_log_module := C_DEFAULT_MODULE||'.SetLineAcctAttrs';
8133 END IF;
8134 
8135 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8136    trace
8137       (p_msg      => 'BEGIN of SetLineAcctAttrs'
8138       ,p_level    => C_LEVEL_PROCEDURE
8139       ,p_module   => l_log_module);
8140 END IF;
8141 
8142 FOR i in 1..p_rec_acct_attrs.array_acct_attr_code.count loop
8143 
8144   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8145      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8146         trace(p_msg      => 'Loop count = '||i||
8147                             ' (char) : '||p_rec_acct_attrs.array_acct_attr_code(i)||
8148                             ' = '||p_rec_acct_attrs.array_char_value(i)
8149              ,p_level    => C_LEVEL_STATEMENT
8150              ,p_module   => l_log_module);
8151      ELSIF p_rec_acct_attrs.array_date_value.EXISTS(i) THEN
8152         trace(p_msg      => 'Loop count = '||i||
8153                             ' (date) : '||p_rec_acct_attrs.array_acct_attr_code(i)||
8154                             ' = '||p_rec_acct_attrs.array_date_value(i)
8155              ,p_level    => C_LEVEL_STATEMENT
8156              ,p_module   => l_log_module);
8157      ELSE
8158         trace(p_msg      => 'Loop count = '||i||
8159                             ' (num) : '||p_rec_acct_attrs.array_acct_attr_code(i)||
8160                             ' = '||p_rec_acct_attrs.array_num_value(i)
8161              ,p_level    => C_LEVEL_STATEMENT
8162              ,p_module   => l_log_module);
8163      END IF;
8164   END IF;
8165 
8166   l_attr_error := NULL; -- 5162408
8167 
8168   CASE p_rec_acct_attrs.array_acct_attr_code(i)
8169 
8170   WHEN 'PARTY_TYPE'                THEN
8171 
8172      -- 4693816 Do not assign if size is more than 1
8173      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8174         IF length(p_rec_acct_attrs.array_char_value(i)) > 1 THEN
8175            g_rec_lines.array_party_type_code(g_LineNumber)     := 'X';
8176            l_attr_error := l_invalid_attr;
8177         ELSE
8178            g_rec_lines.array_party_type_code(g_LineNumber)     := p_rec_acct_attrs.array_char_value(i);
8179         END IF;
8180      ELSE
8181         -- 5162408
8182         g_rec_lines.array_party_type_code(g_LineNumber)  := NULL;
8183         IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8184            l_attr_error := l_invalid_attr;
8185         END IF;
8186      END IF;
8187 
8188   WHEN 'ENTERED_CURRENCY_CODE'     THEN
8189      IF p_rec_acct_attrs.array_char_value.EXISTS(i) AND length(p_rec_acct_attrs.array_char_value(i)) <= 15 THEN
8190         g_rec_lines.array_currency_code(g_LineNumber)  := p_rec_acct_attrs.array_char_value(i);
8191         g_rec_lines.array_currency_mau(g_LineNumber)   := xla_accounting_cache_pkg.GetCurrencyMau(p_rec_acct_attrs.array_char_value(i));
8192      ELSE
8193         -- 5162408
8194         g_rec_lines.array_currency_code(g_LineNumber)  := ' ';  -- otherwise insert NULL error in currency_code
8195         g_rec_lines.array_currency_mau(g_LineNumber)   := 0.01; -- dummy MAU
8196         IF (p_rec_acct_attrs.array_num_value.EXISTS(i)) OR
8197            (p_rec_acct_attrs.array_char_value.EXISTS(i) AND p_rec_acct_attrs.array_char_value(i) IS NOT NULL) THEN
8198            l_attr_error := l_invalid_attr;   -- wrong datatype or too long
8199         ELSE
8200            l_attr_error := l_missing_attr;   -- required
8201         END IF;
8202      END IF;
8203 
8204   -------------------------------------------------------------------
8205   -- 4262811 - replaced DEFERRED
8206   -------------------------------------------------------------------
8207 --WHEN 'DEFERRED_INDICATOR'        THEN
8208 --   g_rec_lines.array_deferred_indicator(g_LineNumber)     := p_rec_acct_attrs.array_char_value(i);
8209 --WHEN 'DEFERRED_PERIOD_TYPE'      THEN
8210 --   g_rec_lines.array_deferred_period_type(g_LineNumber)   := p_rec_acct_attrs.array_char_value(i);
8211   WHEN 'MULTIPERIOD_OPTION'        THEN
8212      IF p_rec_acct_attrs.array_char_value.EXISTS(i) AND p_rec_acct_attrs.array_char_value(i) IS NOT NULL THEN
8213         IF length(p_rec_acct_attrs.array_char_value(i)) = 1 THEN
8214            g_rec_lines.array_mpa_option(g_LineNumber)  := p_rec_acct_attrs.array_char_value(i);
8215         ELSE
8216            g_rec_lines.array_mpa_option(g_LineNumber)  := NULL;
8217         END IF;
8218 
8219         IF NVL(g_rec_lines.array_mpa_option(g_LineNumber),'N') NOT IN ('Y','N') OR
8220            length(p_rec_acct_attrs.array_char_value(i)) > 1 THEN
8221            XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
8222            xla_accounting_err_pkg.build_message
8223               (p_appli_s_name            => 'XLA'
8224               ,p_msg_name                => 'XLA_MA_INVALID_OPTION'   -- 4262811a XLA_AP_INV_DEFERRED_OPTION'
8225               ,p_token_1                 => 'LINE_NUMBER'
8226               ,p_value_1                 =>  g_ExtractLine
8227               ,p_token_2                 => 'ACCOUNTING_SOURCE_NAME'
8228               ,p_value_2                 => XLA_AE_SOURCES_PKG.GetAccountingSourceName
8229                                              (p_rec_acct_attrs.array_acct_attr_code(i))
8230               ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8231               ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8232               ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
8233         END IF;
8234      ELSE
8235         -- 5162408
8236         g_rec_lines.array_mpa_option(g_LineNumber)  := NULL;
8237         IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8238            l_attr_error := l_invalid_attr;
8239         END IF;
8240      END IF;
8241 
8242   WHEN 'DISTRIBUTION_TYPE'         THEN
8243      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8244        g_rec_lines.array_sys_distribution_type(g_LineNumber)  := p_rec_acct_attrs.array_char_value(i);
8245      ELSE
8246        g_rec_lines.array_sys_distribution_type(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8247      END IF;
8248 
8249      IF g_rec_lines.array_sys_distribution_type(g_LineNumber) IS NULL THEN
8250         XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
8251         xla_accounting_err_pkg.build_message
8252               (p_appli_s_name            => 'XLA'
8253               ,p_msg_name                => 'XLA_AP_NO_DIST_LINK_TYPE'
8254               ,p_token_1                 => 'LINE_NUMBER'
8255               ,p_value_1                 =>  g_ExtractLine
8256               ,p_token_2                 => 'ACCOUNTING_SOURCE_NAME'
8257               ,p_value_2                 => XLA_AE_SOURCES_PKG.GetAccountingSourceName
8258                                                        (p_rec_acct_attrs.array_acct_attr_code(i))
8259               ,p_token_3                 => 'SOURCE_NAME'
8260               ,p_value_3                 => NULL
8261               ,p_token_4                 => 'LINE_TYPE_NAME'
8262               ,p_value_4                 =>  XLA_AE_SOURCES_PKG.GetComponentName (
8263                                                         g_accounting_line.component_type
8264                                                       , g_accounting_line.accounting_line_code
8265                                                       , g_accounting_line.accounting_line_type_code
8266                                                       , g_accounting_line.accounting_line_appl_id
8267                                                       , g_accounting_line.amb_context_code
8268                                                       , g_accounting_line.entity_code
8269                                                       , g_accounting_line.event_class_code
8270                                                      )
8271               ,p_token_5                 => 'OWNER'
8272               ,p_value_5                 => xla_lookups_pkg.get_meaning(
8273                                                         'XLA_OWNER_TYPE'
8274                                                        , g_rec_lines.array_accounting_line_type(g_LineNumber)
8275                                                       )
8276               ,p_token_6                 => 'PRODUCT_NAME'
8277               ,p_value_6                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8278               ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8279               ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8280               ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
8281      END IF;
8282 
8283   WHEN 'ACCOUNTING_REVERSAL_OPTION' THEN
8284      -- 5162408
8285      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8286         IF length(p_rec_acct_attrs.array_char_value(i)) = 1 THEN
8287            g_rec_lines.array_acc_reversal_option(g_LineNumber)  := p_rec_acct_attrs.array_char_value(i);
8288         ELSE
8289            g_rec_lines.array_acc_reversal_option(g_LineNumber)  := NULL;
8290         END IF;
8291         IF NVL(g_rec_lines.array_acc_reversal_option(g_LineNumber),'N') NOT IN ('Y','N','B') OR
8292            length(p_rec_acct_attrs.array_char_value(i)) > 1 THEN
8293            l_attr_error := l_invalid_attr;
8294         END IF;
8295      ELSE
8296         g_rec_lines.array_acc_reversal_option(g_LineNumber)  := NULL;
8297         IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8298            l_attr_error := l_invalid_attr;
8299         END IF;
8300      END IF;
8301 
8302   WHEN 'EXCHANGE_RATE_TYPE'        THEN
8303      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8304        g_rec_lines.array_curr_conversion_type(g_LineNumber):= p_rec_acct_attrs.array_char_value(i);
8305      ELSE
8306        g_rec_lines.array_curr_conversion_type(g_LineNumber):= p_rec_acct_attrs.array_num_value(i);
8307      END IF;
8308 
8309   WHEN 'USSGL_TRANSACTION_CODE'    THEN
8310      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8311        g_rec_lines.array_ussgl_transaction(g_LineNumber)   := p_rec_acct_attrs.array_char_value(i);
8312      ELSE
8313        g_rec_lines.array_ussgl_transaction(g_LineNumber)   := p_rec_acct_attrs.array_num_value(i);
8314      END IF;
8315 
8316   WHEN 'RECON_REF'                 THEN
8317      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8318        g_rec_lines.array_jgzz_recon_ref(g_LineNumber)      := p_rec_acct_attrs.array_char_value(i);
8319      ELSE
8320        g_rec_lines.array_jgzz_recon_ref(g_LineNumber)      := p_rec_acct_attrs.array_num_value(i);
8321      END IF;
8322 
8323   WHEN 'OVERRIDE_ACCTD_AMT_FLAG'                 THEN
8324      -- 5162408
8325      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8326         IF length(p_rec_acct_attrs.array_char_value(i)) = 1 THEN
8327            g_override_acctd_amt_flag      := p_rec_acct_attrs.array_char_value(i);
8328        g_rec_lines.array_override_acctd_amt_flag(g_LineNumber)  := p_rec_acct_attrs.array_char_value(i);
8329         ELSE
8330            g_override_acctd_amt_flag      := NULL;
8331        g_rec_lines.array_override_acctd_amt_flag(g_LineNumber)  := NULL;
8332         END IF;
8333         IF NVL(g_override_acctd_amt_flag,'N') NOT IN ('Y','N') OR
8334            length(p_rec_acct_attrs.array_char_value(i)) > 1 THEN
8335            l_attr_error := l_invalid_attr;
8336         END IF;
8337      ELSE
8338         g_override_acctd_amt_flag  := NULL;
8339     g_rec_lines.array_override_acctd_amt_flag(g_LineNumber)  := NULL;
8340         IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8341            l_attr_error := l_invalid_attr;
8342         END IF;
8343      END IF;
8344      -- Bug 7044870
8345      IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code IN ('SECONDARY','ALC') THEN
8346        g_override_acctd_amt_flag := NULL;
8347        g_rec_lines.array_override_acctd_amt_flag(g_LineNumber)  := NULL;
8348      END IF;
8349      --
8350 
8351      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8352          trace
8353             (p_msg      => 'override_acctd_amt_flag= '||g_override_acctd_amt_flag
8354             ,p_level    => C_LEVEL_STATEMENT
8355             ,p_module   => l_log_module);
8356      END IF;
8357 
8358   WHEN 'GAIN_LOSS_REFERENCE'                 THEN
8359      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8360        g_rec_lines.array_gain_or_loss_ref(g_LineNumber)      := p_rec_acct_attrs.array_char_value(i);
8361      ELSE
8362        g_rec_lines.array_gain_or_loss_ref(g_LineNumber)      := p_rec_acct_attrs.array_num_value(i);
8363      END IF;
8364 
8365   WHEN 'TRX_ROUNDING_REF'                 THEN
8366      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8367        g_rec_lines.array_doc_rounding_level(g_LineNumber)      := p_rec_acct_attrs.array_char_value(i);
8368      ELSE
8369        g_rec_lines.array_doc_rounding_level(g_LineNumber)      := p_rec_acct_attrs.array_num_value(i);
8370      END IF;
8371 
8372   WHEN 'DISTRIBUTION_IDENTIFIER_1' THEN
8373      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8374         g_rec_lines.array_distribution_id_char_1(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8375      ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8376         g_rec_lines.array_distribution_id_num_1(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8377      END IF;
8378 
8379   WHEN 'DISTRIBUTION_IDENTIFIER_2' THEN
8380      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8381         g_rec_lines.array_distribution_id_char_2(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8382      ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8383         g_rec_lines.array_distribution_id_num_2(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8384      END IF;
8385 
8386   WHEN 'DISTRIBUTION_IDENTIFIER_3' THEN
8387      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8388         g_rec_lines.array_distribution_id_char_3(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8389      ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8390         g_rec_lines.array_distribution_id_num_3(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8391      END IF;
8392 
8393   WHEN 'DISTRIBUTION_IDENTIFIER_4' THEN
8394      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8395         g_rec_lines.array_distribution_id_char_4(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8396      ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8397         g_rec_lines.array_distribution_id_num_4(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8398      END IF;
8399 
8400   WHEN 'DISTRIBUTION_IDENTIFIER_5' THEN
8401      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8402         g_rec_lines.array_distribution_id_char_5(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8403      ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8404         g_rec_lines.array_distribution_id_num_5(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8405      END IF;
8406 
8407   WHEN 'PARTY_ID'                  THEN
8408      g_rec_lines.array_party_id(g_LineNumber)               := p_rec_acct_attrs.array_num_value(i);
8409 
8410   WHEN 'PARTY_SITE_ID'             THEN
8411      g_rec_lines.array_party_site_id(g_LineNumber)          := p_rec_acct_attrs.array_num_value(i);
8412 
8413   WHEN 'ENTERED_CURRENCY_AMOUNT'   THEN
8414      g_rec_lines.array_entered_amount(g_LineNumber)         := p_rec_acct_attrs.array_num_value(i);
8415 
8416   WHEN 'STATISTICAL_AMOUNT'        THEN
8417      g_rec_lines.array_statistical_amount(g_LineNumber)     := p_rec_acct_attrs.array_num_value(i);
8418 
8419 -- 4262811
8420 --WHEN 'DEFERRED_NO_OF_PERIODS'    THEN
8421 --   g_rec_lines.array_deferred_no_period(g_LineNumber)     := p_rec_acct_attrs.array_num_value(i);
8422 
8423   WHEN 'TAX_LINE_REF_ID'               THEN
8424      g_rec_lines.array_tax_line_ref(g_LineNumber)           := p_rec_acct_attrs.array_num_value(i);
8425 
8426   WHEN 'TAX_SUMMARY_LINE_REF_ID'       THEN
8427      g_rec_lines.array_tax_summary_line_ref(g_LineNumber)   := p_rec_acct_attrs.array_num_value(i);
8428 
8429   WHEN 'TAX_REC_NREC_DIST_REF_ID'      THEN
8430      g_rec_lines.array_tax_rec_nrec_dist_ref(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8431 
8432   WHEN 'LEDGER_AMOUNT'             THEN
8433      g_rec_lines.array_ledger_amount(g_LineNumber)          := p_rec_acct_attrs.array_num_value(i);
8434 
8435 /* Since now after ledger currency project, the ledger amount could be null
8436    this validation is moved to SetDebitCreditAmounts
8437      IF p_rec_acct_attrs.array_num_value(i) IS NULL THEN
8438         XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
8439         xla_accounting_err_pkg.build_message
8440            (p_appli_s_name            => 'XLA'
8441            ,p_msg_name                => 'XLA_AP_NO_LEDGER_AMOUNT'
8442            ,p_token_1                 => 'LINE_NUMBER'
8443            ,p_value_1                 =>  g_ExtractLine
8444            ,p_token_2                 => 'SOURCE_NAME'
8445            ,p_value_2                 => NULL
8446            ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8447            ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8448            ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
8449       END IF;
8450 */
8451 
8452   WHEN 'EXCHANGE_RATE'             THEN
8453      g_rec_lines.array_curr_conversion_rate(g_LineNumber)   := p_rec_acct_attrs.array_num_value(i);
8454 
8455   -- 4262811 ------------------------------------------------------------------------------------
8456 --WHEN 'DEFERRED_START_DATE'       THEN
8457 --   g_rec_lines.array_deferred_start_date(g_LineNumber) := p_rec_acct_attrs.array_date_value(i);
8458 --WHEN 'DEFERRED_END_DATE'         THEN
8459 --   g_rec_lines.array_deferred_end_date(g_LineNumber)   := p_rec_acct_attrs.array_date_value(i);
8460   WHEN 'MULTIPERIOD_START_DATE'    THEN
8461      g_rec_lines.array_mpa_start_date(g_LineNumber)      := p_rec_acct_attrs.array_date_value(i);
8462 
8463   WHEN 'MULTIPERIOD_END_DATE'      THEN
8464      g_rec_lines.array_mpa_end_date(g_LineNumber)        := p_rec_acct_attrs.array_date_value(i);
8465 
8466 
8467   WHEN 'EXCHANGE_DATE'        THEN
8468      g_rec_lines.array_curr_conversion_date(g_LineNumber):= p_rec_acct_attrs.array_date_value(i);
8469 
8470   ----------------------------------------------------------------------------------------------------
8471   -- 4219869
8472   -- Business Flow Applied To attributes - code must match those in Accounting Attribute in AAA form.
8473   --                                       See xla11iass.ldt for seeded data.
8474   ----------------------------------------------------------------------------------------------------
8475   WHEN 'APPLIED_TO_APPLICATION_ID' THEN
8476      g_rec_lines.array_bflow_application_id(g_LineNumber) := p_rec_acct_attrs.array_num_value(i);
8477 
8478   WHEN 'APPLIED_TO_ENTITY_CODE' THEN
8479      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8480        g_rec_lines.array_bflow_entity_code(g_LineNumber)   := p_rec_acct_attrs.array_char_value(i);
8481      ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8482        g_rec_lines.array_bflow_entity_code(g_LineNumber)   := p_rec_acct_attrs.array_num_value(i);
8483      END IF;
8484 
8485   WHEN 'APPLIED_TO_FIRST_SYS_TRAN_ID' THEN
8486      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8487         g_rec_lines.array_bflow_source_id_num_1(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8488      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8489         g_rec_lines.array_bflow_source_id_char_1(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8490      END IF;
8491 
8492   WHEN 'APPLIED_TO_SECOND_SYS_TRAN_ID' THEN
8493      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8494         g_rec_lines.array_bflow_source_id_num_2(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8495      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8496         g_rec_lines.array_bflow_source_id_char_2(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8497      END IF;
8498 
8499   WHEN 'APPLIED_TO_THIRD_SYS_TRAN_ID' THEN
8500      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8501         g_rec_lines.array_bflow_source_id_num_3(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8502      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8503         g_rec_lines.array_bflow_source_id_char_3(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8504      END IF;
8505   WHEN 'APPLIED_TO_FOURTH_SYS_TRAN_ID' THEN
8506      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8507         g_rec_lines.array_bflow_source_id_num_4(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8508      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8509         g_rec_lines.array_bflow_source_id_char_4(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8510      END IF;
8511 
8512   WHEN 'APPLIED_TO_DISTRIBUTION_TYPE' THEN
8513      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8514        g_rec_lines.array_bflow_distribution_type(g_LineNumber) := p_rec_acct_attrs.array_num_value(i);
8515      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8516        g_rec_lines.array_bflow_distribution_type(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8517      END IF;
8518 
8519   WHEN 'APPLIED_TO_FIRST_DIST_ID' THEN
8520      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8521         g_rec_lines.array_bflow_dist_id_num_1(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8522      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8523         g_rec_lines.array_bflow_dist_id_char_1(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8524      END IF;
8525 
8526   WHEN 'APPLIED_TO_SECOND_DIST_ID' THEN
8527      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8528         g_rec_lines.array_bflow_dist_id_num_2(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8529      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8530         g_rec_lines.array_bflow_dist_id_char_2(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8531      END IF;
8532 
8533   WHEN 'APPLIED_TO_THIRD_DIST_ID' THEN
8534      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8535         g_rec_lines.array_bflow_dist_id_num_3(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8536      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8537         g_rec_lines.array_bflow_dist_id_char_3(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8538      END IF;
8539 
8540   WHEN 'APPLIED_TO_FOURTH_DIST_ID' THEN
8541      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8542         g_rec_lines.array_bflow_dist_id_num_4(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8543      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8544         g_rec_lines.array_bflow_dist_id_char_4(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8545      END IF;
8546 
8547   WHEN 'APPLIED_TO_FIFTH_DIST_ID' THEN
8548      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8549         g_rec_lines.array_bflow_dist_id_num_5(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8550      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8551         g_rec_lines.array_bflow_dist_id_char_5(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8552      END IF;
8553 
8554   WHEN 'APPLIED_TO_AMOUNT' THEN  -- 5132302
8555      g_rec_lines.array_bflow_applied_to_amt(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8556 
8557   --
8558   -- Upgrade attributes
8559   --
8560 
8561   WHEN 'ACTUAL_UPG_OPTION' THEN
8562         g_rec_lines.array_actual_upg_option(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8563 
8564   WHEN 'ACTUAL_UPG_DR_CCID' THEN
8565         g_rec_lines.array_actual_upg_dr_ccid(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8566 
8567   WHEN 'ACTUAL_UPG_CR_CCID' THEN
8568         g_rec_lines.array_actual_upg_cr_ccid(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8569 
8570   WHEN 'ACTUAL_UPG_DR_ENTERED_AMT' THEN
8571         g_rec_lines.array_actual_upg_dr_ent_amt(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8572 
8573   WHEN 'ACTUAL_UPG_CR_ENTERED_AMT' THEN
8574         g_rec_lines.array_actual_upg_cr_ent_amt(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8575 
8576   WHEN 'ACTUAL_UPG_DR_ENTERED_CURR' THEN
8577         g_rec_lines.array_actual_upg_dr_ent_curr(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8578 
8579   WHEN 'ACTUAL_UPG_CR_ENTERED_CURR' THEN
8580          g_rec_lines.array_actual_upg_cr_ent_curr(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8581 
8582   WHEN 'ACTUAL_UPG_DR_LEDGER_AMT' THEN
8583         g_rec_lines.array_actual_upg_dr_ledger_amt(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8584 
8585   WHEN 'ACTUAL_UPG_CR_LEDGER_AMT' THEN
8586         g_rec_lines.array_actual_upg_cr_ledger_amt(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8587 
8588   WHEN 'ACTUAL_UPG_DR_ACCT_CLASS' THEN
8589         g_rec_lines.array_actual_upg_dr_acct_class(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8590 
8591   WHEN 'ACTUAL_UPG_CR_ACCT_CLASS' THEN
8592         g_rec_lines.array_actual_upg_dr_acct_class(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8593 
8594   WHEN 'ACTUAL_UPG_DR_XRATE' THEN
8595         g_rec_lines.array_actual_upg_dr_xrate(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8596 
8597   WHEN 'ACTUAL_UPG_DR_XRATE_TYPE' THEN
8598         g_rec_lines.array_actual_upg_dr_xrate_type(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8599 
8600   WHEN 'ACTUAL_UPG_DR_XDATE' THEN
8601         g_rec_lines.array_actual_upg_dr_xdate(g_LineNumber) := p_rec_acct_attrs.array_date_value(i);
8602 
8603   WHEN 'ACTUAL_UPG_CR_XRATE' THEN
8604         g_rec_lines.array_actual_upg_cr_xrate(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8605 
8606   WHEN 'ACTUAL_UPG_CR_XRATE_TYPE' THEN
8607         g_rec_lines.array_actual_upg_cr_xrate_type(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8608 
8609   WHEN 'ACTUAL_UPG_CR_XDATE' THEN
8610         g_rec_lines.array_actual_upg_cr_xdate(g_LineNumber) := p_rec_acct_attrs.array_date_value(i);
8611 
8612   WHEN 'ENC_UPG_OPTION' THEN
8613        g_rec_lines.array_enc_upg_option(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8614 
8615   WHEN 'ENC_UPG_DR_CCID' THEN
8616        g_rec_lines.array_enc_upg_dr_ccid(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8617 
8618   WHEN 'ENC_UPG_CR_CCID' THEN
8619        g_rec_lines.array_enc_upg_cr_ccid(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8620 
8621   WHEN 'UPG_DR_ENC_TYPE_ID' THEN
8622        g_rec_lines.array_upg_dr_enc_type_id(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8623 
8624   WHEN 'UPG_CR_ENC_TYPE_ID' THEN
8625        g_rec_lines.array_upg_cr_enc_type_id(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8626 
8627   WHEN 'ENC_UPG_DR_ENTERED_AMT' THEN
8628        g_rec_lines.array_enc_upg_dr_ent_amt(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8629 
8630   WHEN 'ENC_UPG_CR_ENTERED_AMT' THEN
8631         g_rec_lines.array_enc_upg_cr_ent_amt(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8632 
8633   WHEN 'ENC_UPG_DR_ENTERED_CURR' THEN
8634         g_rec_lines.array_enc_upg_dr_ent_curr(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8635 
8636   WHEN 'ENC_UPG_CR_ENTERED_CURR' THEN
8637         g_rec_lines.array_enc_upg_cr_ent_curr(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8638 
8639   WHEN 'ENC_UPG_DR_LEDGER_AMT' THEN
8640         g_rec_lines.array_enc_upg_dr_ledger_amt(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8641 
8642   WHEN 'ENC_UPG_CR_LEDGER_AMT' THEN
8643         g_rec_lines.array_enc_upg_cr_ledger_amt(g_linenumber)  := p_rec_acct_attrs.array_num_value(i);
8644 
8645   WHEN 'ENC_UPG_DR_ACCT_CLASS' THEN
8646         g_rec_lines.array_enc_upg_dr_acct_class(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8647 
8648   WHEN 'ENC_UPG_CR_ACCT_CLASS' THEN
8649         g_rec_lines.array_enc_upg_cr_acct_class(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8650   -- 5845547
8651   WHEN 'UPG_PARTY_TYPE' THEN
8652         g_rec_lines.array_upg_party_type_code(g_LineNumber)   := p_rec_acct_attrs.array_char_value(i);
8653 
8654   WHEN 'UPG_PARTY_ID' THEN
8655         g_rec_lines.array_upg_party_id(g_LineNumber)          := p_rec_acct_attrs.array_num_value(i);
8656 
8657   WHEN 'UPG_PARTY_SITE_ID' THEN
8658         g_rec_lines.array_upg_party_site_id(g_LineNumber)     := p_rec_acct_attrs.array_num_value(i);
8659   --
8660   -- end upgrade attributes
8661   --
8662 
8663   --
8664   --  Allocation Attributes
8665   --
8666   WHEN 'ALLOC_TO_APPLICATION_ID' THEN
8667      g_rec_lines.array_alloct_application_id(g_LineNumber) := p_rec_acct_attrs.array_num_value(i);
8668 
8669   WHEN 'ALLOC_TO_ENTITY_CODE' THEN
8670      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8671        g_rec_lines.array_alloct_entity_code(g_LineNumber)   := p_rec_acct_attrs.array_char_value(i);
8672      ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8673        g_rec_lines.array_alloct_entity_code(g_LineNumber)   := p_rec_acct_attrs.array_num_value(i);
8674      END IF;
8675 
8676   WHEN 'ALLOC_TO_FIRST_SYS_TRAN_ID' THEN
8677      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8678         g_rec_lines.array_alloct_source_id_num_1(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8679      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8680         g_rec_lines.array_alloct_source_id_char_1(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8681      END IF;
8682 
8683   WHEN 'ALLOC_TO_SECOND_SYS_TRAN_ID' THEN
8684      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8685         g_rec_lines.array_alloct_source_id_num_2(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8686      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8687         g_rec_lines.array_alloct_source_id_char_2(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8688      END IF;
8689 
8690   WHEN 'ALLOC_TO_THIRD_SYS_TRAN_ID' THEN
8691      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8692         g_rec_lines.array_alloct_source_id_num_3(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8693      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8694         g_rec_lines.array_alloct_source_id_char_3(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8695      END IF;
8696   WHEN 'ALLOC_TO_FOURTH_SYS_TRAN_ID' THEN
8697      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8698         g_rec_lines.array_alloct_source_id_num_4(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8699      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8700         g_rec_lines.array_alloct_source_id_char_4(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8701      END IF;
8702 
8703   WHEN 'ALLOC_TO_DISTRIBUTION_TYPE' THEN
8704      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8705        g_rec_lines.array_alloct_distribution_type(g_LineNumber) := p_rec_acct_attrs.array_num_value(i);
8706      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8707        g_rec_lines.array_alloct_distribution_type(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8708      END IF;
8709 
8710   WHEN 'ALLOC_TO_FIRST_DIST_ID' THEN
8711      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8712         g_rec_lines.array_alloct_dist_id_num_1(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8713      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8714         g_rec_lines.array_alloct_dist_id_char_1(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8715      END IF;
8716 
8717   WHEN 'ALLOC_TO_SECOND_DIST_ID' THEN
8718      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8719         g_rec_lines.array_alloct_dist_id_num_2(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8720      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8721         g_rec_lines.array_alloct_dist_id_char_2(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8722      END IF;
8723 
8724   WHEN 'ALLOC_TO_THIRD_DIST_ID' THEN
8725      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8726         g_rec_lines.array_alloct_dist_id_num_3(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8727      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8728         g_rec_lines.array_alloct_dist_id_char_3(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8729      END IF;
8730 
8731   WHEN 'ALLOC_TO_FOURTH_DIST_ID' THEN
8732      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8733         g_rec_lines.array_alloct_dist_id_num_4(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8734      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8735         g_rec_lines.array_alloct_dist_id_char_4(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8736      END IF;
8737 
8738   WHEN 'ALLOC_TO_FIFTH_DIST_ID' THEN
8739      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8740         g_rec_lines.array_alloct_dist_id_num_5(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8741      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8742         g_rec_lines.array_alloct_dist_id_char_5(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8743      END IF;
8744   --
8745   --  End of Allocation Attributes
8746   --
8747 
8748 
8749   ELSE NULL;
8750   END CASE;
8751 
8752   -- 5162408 log error for attribute
8753   IF l_attr_error IS NOT NULL THEN
8754      XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
8755      xla_accounting_err_pkg.build_message
8756                   (p_appli_s_name            => 'XLA'
8757                   ,p_msg_name                => l_attr_error
8758                   ,p_token_1                 => 'ACCT_ATTR_NAME'
8759                   ,p_value_1                 => XLA_AE_SOURCES_PKG.GetAccountingSourceName
8760                                                            (p_rec_acct_attrs.array_acct_attr_code(i))
8761                   ,p_token_2                 => 'LINE_TYPE_NAME'
8762                   ,p_value_2                 =>  XLA_AE_SOURCES_PKG.GetComponentName (
8763                                                      g_accounting_line.component_type
8764                                                    , g_accounting_line.accounting_line_code
8765                                                    , g_accounting_line.accounting_line_type_code
8766                                                    , g_accounting_line.accounting_line_appl_id
8767                                                    , g_accounting_line.amb_context_code
8768                                                    , g_accounting_line.entity_code
8769                                                    , g_accounting_line.event_class_code
8770                                                   )
8771                   ,p_token_3                 => 'OWNER'
8772                   ,p_value_3                 => xla_lookups_pkg.get_meaning(
8773                                                             'XLA_OWNER_TYPE'
8774                                                            , g_rec_lines.array_accounting_line_type(g_LineNumber)
8775                                                           )
8776                   ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8777                   ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8778                   ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
8779   END IF;
8780 
8781 end loop;
8782 
8783 EXCEPTION
8784 WHEN xla_exceptions_pkg.application_exception THEN
8785   RAISE;
8786 WHEN OTHERS  THEN
8787    xla_exceptions_pkg.raise_message
8788            (p_location => 'XLA_AE_HEADER_PKG.SetLineAcctAttrs');
8789   --
8790 end SetLineAcctAttrs;
8791 
8792 /*======================================================================+
8793 |                                                                       |
8794 | Public Procedure                                                      |
8795 |                                                                       |
8796 |                                                                       |
8797 +======================================================================*/
8798 PROCEDURE SetAcctReversalAttrs
8799        (p_event_id                 IN NUMBER
8800        ,p_rec_acct_attrs           IN XLA_AE_LINES_PKG.t_rec_acct_attrs
8801        ,p_calculate_acctd_flag     IN VARCHAR2
8802        ,p_calculate_g_l_flag       IN VARCHAR2) IS
8803 
8804 l_sys_distribution_type             VARCHAR2(30);
8805 l_acc_reversal_option               VARCHAR2(30);
8806 l_distribution_id_char_1            VARCHAR2(30);
8807 l_distribution_id_char_2            VARCHAR2(30);
8808 l_distribution_id_char_3            VARCHAR2(30);
8809 l_distribution_id_char_4            VARCHAR2(30);
8810 l_distribution_id_char_5            VARCHAR2(30);
8811 l_distribution_id_num_1             NUMBER;
8812 l_distribution_id_num_2             NUMBER;
8813 l_distribution_id_num_3             NUMBER;
8814 l_distribution_id_num_4             NUMBER;
8815 l_distribution_id_num_5             NUMBER;
8816 l_rev_dist_id_char_1                VARCHAR2(30);
8817 l_rev_dist_id_char_2                VARCHAR2(30);
8818 l_rev_dist_id_char_3                VARCHAR2(30);
8819 l_rev_dist_id_char_4                VARCHAR2(30);
8820 l_rev_dist_id_char_5                VARCHAR2(30);
8821 l_rev_dist_id_num_1                 NUMBER;
8822 l_rev_dist_id_num_2                 NUMBER;
8823 l_rev_dist_id_num_3                 NUMBER;
8824 l_rev_dist_id_num_4                 NUMBER;
8825 l_rev_dist_id_num_5                 NUMBER;
8826 l_rev_dist_type                     VARCHAR2(30);
8827 l_actual_upg_option                 VARCHAR2(30);
8828 l_actual_upg_dr_ccid                NUMBER;
8829 l_actual_upg_cr_ccid                NUMBER;
8830 l_actual_upg_dr_entered_amt         NUMBER;
8831 l_actual_upg_cr_entered_amt         NUMBER;
8832 l_actual_upg_dr_entered_curr        VARCHAR2(30);
8833 l_actual_upg_cr_entered_curr        VARCHAR2(30);
8834 l_actual_upg_dr_ledger_amt          NUMBER;
8835 l_actual_upg_cr_ledger_amt          NUMBER;
8836 l_actual_upg_dr_acct_class          VARCHAR2(30);
8837 l_actual_upg_cr_acct_class          VARCHAR2(30);
8838 l_actual_upg_dr_xrate               NUMBER;
8839 l_actual_upg_dr_xrate_type          VARCHAR2(30);
8840 l_actual_upg_dr_xdate               DATE;
8841 l_actual_upg_cr_xrate               NUMBER;
8842 l_actual_upg_cr_xrate_type          VARCHAR2(30);
8843 l_actual_upg_cr_xdate               DATE;
8844 l_enc_upg_option                    VARCHAR2(30);
8845 l_enc_upg_dr_ccid                   NUMBER;
8846 l_enc_upg_cr_ccid                   NUMBER;
8847 l_upg_dr_enc_type_id                NUMBER;
8848 l_upg_cr_enc_type_id                NUMBER;
8849 l_enc_upg_dr_entered_amt            NUMBER;
8850 l_enc_upg_cr_entered_amt            NUMBER;
8851 l_enc_upg_dr_entered_curr           VARCHAR2(30);
8852 l_enc_upg_cr_entered_curr           VARCHAR2(30);
8853 l_enc_upg_dr_ledger_amt             NUMBER;
8854 l_enc_upg_cr_ledger_amt             NUMBER;
8855 l_enc_upg_dr_acct_class             VARCHAR2(30);
8856 l_enc_upg_cr_acct_class             VARCHAR2(30);
8857 l_gl_date                           DATE;
8858 
8859 l_upg_party_type                    VARCHAR2(1);  -- 5845547
8860 l_upg_party_id                      NUMBER;       -- 5845547
8861 l_upg_party_site_id                 NUMBER;       -- 5845547
8862 
8863 
8864 l_tax_line_ref                      NUMBER(15,0);  --7159711
8865 l_tax_summary_line_ref              NUMBER(15,0);  --7159711
8866 l_tax_rec_nrec_dist_ref             NUMBER(15,0);  --7159711
8867 
8868 
8869 l_log_module                        VARCHAR2(240);
8870 
8871 BEGIN
8872    IF g_log_enabled THEN
8873       l_log_module := C_DEFAULT_MODULE||'.SetAcctReversalAttrs';
8874    END IF;
8875 
8876    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8877       trace
8878          (p_msg      => 'BEGIN of SetAcctReversalAttrs'
8879          ,p_level    => C_LEVEL_PROCEDURE
8880          ,p_module   => l_log_module);
8881    END IF;
8882 
8883    FOR i IN 1..p_rec_acct_attrs.array_acct_attr_code.COUNT LOOP
8884       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8885          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8886             trace(p_msg      => 'Loop count = '||i||
8887                                 ' (char) : '||p_rec_acct_attrs.array_acct_attr_code(i)||
8888                                 ' = '||p_rec_acct_attrs.array_char_value(i)
8889                  ,p_level    => C_LEVEL_STATEMENT
8890                  ,p_module   => l_log_module);
8891          ELSIF p_rec_acct_attrs.array_date_value.EXISTS(i) THEN
8892             trace(p_msg      => 'Loop count = '||i||
8893                                 ' (date) : '||p_rec_acct_attrs.array_acct_attr_code(i)||
8894                                 ' = '||p_rec_acct_attrs.array_date_value(i)
8895                  ,p_level    => C_LEVEL_STATEMENT
8896                  ,p_module   => l_log_module);
8897          ELSE
8898             trace(p_msg      => 'Loop count = '||i||
8899                                 ' (num) : '||p_rec_acct_attrs.array_acct_attr_code(i)||
8900                                 ' = '||p_rec_acct_attrs.array_num_value(i)
8901                  ,p_level    => C_LEVEL_STATEMENT
8902                  ,p_module   => l_log_module);
8903          END IF;
8904 
8905       END IF;
8906 
8907       CASE p_rec_acct_attrs.array_acct_attr_code(i)
8908 
8909       WHEN 'GL_DATE'         THEN
8910          l_gl_date := p_rec_acct_attrs.array_date_value(i);
8911 
8912       WHEN 'DISTRIBUTION_TYPE'         THEN
8913          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8914            l_sys_distribution_type := p_rec_acct_attrs.array_char_value(i);
8915          ELSE
8916            l_sys_distribution_type := p_rec_acct_attrs.array_num_value(i);
8917          END IF;
8918 
8919       WHEN 'ACCOUNTING_REVERSAL_OPTION' THEN
8920          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8921            l_acc_reversal_option := p_rec_acct_attrs.array_char_value(i);
8922          ELSE
8923            l_acc_reversal_option := p_rec_acct_attrs.array_num_value(i);
8924          END IF;
8925 
8926       WHEN 'DISTRIBUTION_IDENTIFIER_1' THEN
8927          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8928             l_distribution_id_char_1 := p_rec_acct_attrs.array_char_value(i);
8929          ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8930             l_distribution_id_num_1  := p_rec_acct_attrs.array_num_value(i);
8931          END IF;
8932 
8933       WHEN 'DISTRIBUTION_IDENTIFIER_2' THEN
8934          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8935             l_distribution_id_char_2 := p_rec_acct_attrs.array_char_value(i);
8936          ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8937             l_distribution_id_num_2  := p_rec_acct_attrs.array_num_value(i);
8938          END IF;
8939 
8940       WHEN 'DISTRIBUTION_IDENTIFIER_3' THEN
8941          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8942             l_distribution_id_char_3 := p_rec_acct_attrs.array_char_value(i);
8943          ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8944             l_distribution_id_num_3  := p_rec_acct_attrs.array_num_value(i);
8945          END IF;
8946 
8947       WHEN 'DISTRIBUTION_IDENTIFIER_4' THEN
8948          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8949             l_distribution_id_char_4 := p_rec_acct_attrs.array_char_value(i);
8950          ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8951             l_distribution_id_num_4  := p_rec_acct_attrs.array_num_value(i);
8952          END IF;
8953 
8954       WHEN 'DISTRIBUTION_IDENTIFIER_5' THEN
8955          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8956             l_distribution_id_char_5 := p_rec_acct_attrs.array_char_value(i);
8957          ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8958             l_distribution_id_num_5  := p_rec_acct_attrs.array_num_value(i);
8959          END IF;
8960 
8961       WHEN 'REVERSED_DISTRIBUTION_ID1' THEN
8962          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8963             l_rev_dist_id_char_1 := p_rec_acct_attrs.array_char_value(i);
8964          ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8965             l_rev_dist_id_num_1  := p_rec_acct_attrs.array_num_value(i);
8966          END IF;
8967 
8968       WHEN 'REVERSED_DISTRIBUTION_ID2' THEN
8969          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8970             l_rev_dist_id_char_2 := p_rec_acct_attrs.array_char_value(i);
8971          ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8972             l_rev_dist_id_num_2  := p_rec_acct_attrs.array_num_value(i);
8973          END IF;
8974 
8975       WHEN 'REVERSED_DISTRIBUTION_ID3' THEN
8976          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8977             l_rev_dist_id_char_3 := p_rec_acct_attrs.array_char_value(i);
8978          ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8979             l_rev_dist_id_num_3  := p_rec_acct_attrs.array_num_value(i);
8980          END IF;
8981 
8982       WHEN 'REVERSED_DISTRIBUTION_ID4' THEN
8983          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8984             l_rev_dist_id_char_4 := p_rec_acct_attrs.array_char_value(i);
8985          ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8986             l_rev_dist_id_num_4  := p_rec_acct_attrs.array_num_value(i);
8987          END IF;
8988 
8989       WHEN 'REVERSED_DISTRIBUTION_ID5' THEN
8990          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8991             l_rev_dist_id_char_5 := p_rec_acct_attrs.array_char_value(i);
8992          ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8993             l_rev_dist_id_num_5  := p_rec_acct_attrs.array_num_value(i);
8994          END IF;
8995 
8996       WHEN 'REVERSED_DISTRIBUTION_TYPE'         THEN
8997          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8998            l_rev_dist_type  := p_rec_acct_attrs.array_char_value(i);
8999          ELSE
9000            l_rev_dist_type  := p_rec_acct_attrs.array_num_value(i);
9001          END IF;
9002       --
9003       -- Upgrade attributes
9004       --
9005       WHEN 'ACTUAL_UPG_OPTION' THEN
9006             l_actual_upg_option := p_rec_acct_attrs.array_char_value(i);
9007 
9008       WHEN 'ACTUAL_UPG_DR_CCID' THEN
9009             l_actual_upg_dr_ccid  := p_rec_acct_attrs.array_num_value(i);
9010 
9011       WHEN 'ACTUAL_UPG_CR_CCID' THEN
9012             l_actual_upg_cr_ccid  := p_rec_acct_attrs.array_num_value(i);
9013 
9014       WHEN 'ACTUAL_UPG_DR_ENTERED_AMT' THEN
9015             l_actual_upg_dr_entered_amt  := p_rec_acct_attrs.array_num_value(i);
9016 
9017       WHEN 'ACTUAL_UPG_CR_ENTERED_AMT' THEN
9018             l_actual_upg_cr_entered_amt  := p_rec_acct_attrs.array_num_value(i);
9019 
9020       WHEN 'ACTUAL_UPG_DR_ENTERED_CURR' THEN
9021             l_actual_upg_dr_entered_curr := p_rec_acct_attrs.array_char_value(i);
9022 
9023       WHEN 'ACTUAL_UPG_CR_ENTERED_CURR' THEN
9024             l_actual_upg_cr_entered_curr := p_rec_acct_attrs.array_char_value(i);
9025 
9026       WHEN 'ACTUAL_UPG_DR_LEDGER_AMT' THEN
9027             l_actual_upg_dr_ledger_amt  := p_rec_acct_attrs.array_num_value(i);
9028 
9029       WHEN 'ACTUAL_UPG_CR_LEDGER_AMT' THEN
9030             l_actual_upg_cr_ledger_amt  := p_rec_acct_attrs.array_num_value(i);
9031 
9032       WHEN 'ACTUAL_UPG_DR_ACCT_CLASS' THEN
9033             l_actual_upg_dr_acct_class := p_rec_acct_attrs.array_char_value(i);
9034 
9035       WHEN 'ACTUAL_UPG_CR_ACCT_CLASS' THEN
9036             l_actual_upg_cr_acct_class := p_rec_acct_attrs.array_char_value(i);
9037 
9038       WHEN 'ACTUAL_UPG_DR_XRATE' THEN
9039             l_actual_upg_dr_xrate  := p_rec_acct_attrs.array_num_value(i);
9040 
9041       WHEN 'ACTUAL_UPG_DR_XRATE_TYPE' THEN
9042             l_actual_upg_dr_xrate_type := p_rec_acct_attrs.array_char_value(i);
9043 
9044       WHEN 'ACTUAL_UPG_DR_XDATE' THEN
9045             l_actual_upg_dr_xdate := p_rec_acct_attrs.array_date_value(i);
9046 
9047       WHEN 'ACTUAL_UPG_CR_XRATE' THEN
9048             l_actual_upg_cr_xrate  := p_rec_acct_attrs.array_num_value(i);
9049 
9050       WHEN 'ACTUAL_UPG_CR_XRATE_TYPE' THEN
9051             l_actual_upg_cr_xrate_type := p_rec_acct_attrs.array_char_value(i);
9052 
9053       WHEN 'ACTUAL_UPG_CR_XDATE' THEN
9054             l_actual_upg_cr_xdate := p_rec_acct_attrs.array_date_value(i);
9055 
9056       WHEN 'ENC_UPG_OPTION' THEN
9057             l_enc_upg_option := p_rec_acct_attrs.array_char_value(i);
9058 
9059       WHEN 'ENC_UPG_DR_CCID' THEN
9060            l_enc_upg_dr_ccid  := p_rec_acct_attrs.array_num_value(i);
9061 
9062       WHEN 'ENC_UPG_CR_CCID' THEN
9063            l_enc_upg_cr_ccid  := p_rec_acct_attrs.array_num_value(i);
9064 
9065       WHEN 'UPG_DR_ENC_TYPE_ID' THEN
9066            l_upg_dr_enc_type_id  := p_rec_acct_attrs.array_num_value(i);
9067 
9068       WHEN 'UPG_CR_ENC_TYPE_ID' THEN
9069            l_upg_cr_enc_type_id  := p_rec_acct_attrs.array_num_value(i);
9070 
9071       WHEN 'ENC_UPG_DR_ENTERED_AMT' THEN
9072            l_enc_upg_dr_entered_amt  := p_rec_acct_attrs.array_num_value(i);
9073 
9074       WHEN 'ENC_UPG_CR_ENTERED_AMT' THEN
9075             l_enc_upg_cr_entered_amt  := p_rec_acct_attrs.array_num_value(i);
9076 
9077       WHEN 'ENC_UPG_DR_ENTERED_CURR' THEN
9078             l_enc_upg_dr_entered_curr := p_rec_acct_attrs.array_char_value(i);
9079 
9080       WHEN 'ENC_UPG_CR_ENTERED_CURR' THEN
9081             l_enc_upg_cr_entered_curr := p_rec_acct_attrs.array_char_value(i);
9082 
9083       WHEN 'ENC_UPG_DR_LEDGER_AMT' THEN
9084             l_enc_upg_dr_ledger_amt  := p_rec_acct_attrs.array_num_value(i);
9085 
9086       WHEN 'ENC_UPG_CR_LEDGER_AMT' THEN
9087             l_enc_upg_cr_ledger_amt  := p_rec_acct_attrs.array_num_value(i);
9088 
9089       WHEN 'ENC_UPG_DR_ACCT_CLASS' THEN
9090             l_enc_upg_dr_acct_class := p_rec_acct_attrs.array_char_value(i);
9091 
9092       WHEN 'ENC_UPG_CR_ACCT_CLASS' THEN
9093             l_enc_upg_cr_acct_class := p_rec_acct_attrs.array_char_value(i);
9094       -- 5845547  for reversal
9095       WHEN 'UPG_PARTY_TYPE' THEN
9096             l_upg_party_type        := p_rec_acct_attrs.array_char_value(i);
9097 
9098       WHEN 'UPG_PARTY_ID' THEN
9099             l_upg_party_id          := p_rec_acct_attrs.array_num_value(i);
9100 
9101       WHEN 'UPG_PARTY_SITE_ID' THEN
9102             l_upg_party_site_id     := p_rec_acct_attrs.array_num_value(i);
9103       --
9104       -- end upgrade attributes
9105       --
9106 
9107       --  bug 7159711
9108          WHEN 'TAX_LINE_REF_ID'               THEN
9109             l_tax_line_ref := p_rec_acct_attrs.array_num_value(i);
9110 
9111          WHEN 'TAX_SUMMARY_LINE_REF_ID'       THEN
9112             l_tax_summary_line_ref :=  p_rec_acct_attrs.array_num_value(i);
9113 
9114          WHEN 'TAX_REC_NREC_DIST_REF_ID'      THEN
9115             l_tax_rec_nrec_dist_ref  :=  p_rec_acct_attrs.array_num_value(i);
9116 
9117 
9118       ELSE null;
9119       END CASE;
9120    END LOOP;
9121 
9122    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
9123       trace
9124          (p_msg      => 'l_actual_upg_option = '||l_actual_upg_option
9125          ,p_level    => C_LEVEL_STATEMENT
9126          ,p_module   => l_log_module);
9127       trace
9128          (p_msg      => 'l_enc_upg_option = '||l_enc_upg_option
9129          ,p_level    => C_LEVEL_STATEMENT
9130          ,p_module   => l_log_module);
9131    END IF;
9132 
9133    IF xla_accounting_cache_pkg.GetValueChar
9134          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9135          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('SECONDARY')
9136    OR (NVL(l_actual_upg_option,'N') = 'N' OR NVL(l_enc_upg_option,'N') = 'N')
9137    THEN
9138 
9139       SetNewLine;
9140 
9141       set_ae_header_id (p_ae_header_id => p_event_id,
9142                         p_header_num   => 0);      -- 4262811 by default all zero.  1,2,.. are used by Accl Reversal or MPA.
9143 
9144       g_rec_lines.array_balance_type_code(g_LineNumber) := 'X';
9145 
9146       g_rec_lines.array_ledger_id(g_LineNumber) :=
9147          XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9148 
9149       g_rec_lines.array_event_number(g_LineNumber) := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_number;
9150 
9151       g_rec_lines.array_entity_id(g_LineNumber) := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id;
9152 
9153       g_rec_lines.array_reversal_code(g_LineNumber) := 'DUMMY_LR';
9154 
9155       ------------------------------------------------------------------------------------------
9156       -- 5055878 Handle line reversal method option - SIDE and SIGN
9157       ------------------------------------------------------------------------------------------
9158       IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE' THEN
9159          g_rec_lines.array_switch_side_flag(g_LineNumber) := 'Y';
9160       ELSE
9161          g_rec_lines.array_switch_side_flag(g_LineNumber) := 'N';
9162       END IF;
9163       ------------------------------------------------------------------------------------------
9164 
9165       g_rec_lines.array_sys_distribution_type(g_LineNumber)  := l_sys_distribution_type;
9166       g_rec_lines.array_acc_reversal_option(g_LineNumber)    := l_acc_reversal_option;
9167       g_rec_lines.array_distribution_id_char_1(g_LineNumber) := l_distribution_id_char_1;
9168       g_rec_lines.array_distribution_id_num_1(g_LineNumber)  := l_distribution_id_num_1;
9169       g_rec_lines.array_distribution_id_char_2(g_LineNumber) := l_distribution_id_char_2;
9170       g_rec_lines.array_distribution_id_num_2(g_LineNumber)  := l_distribution_id_num_2;
9171       g_rec_lines.array_distribution_id_char_3(g_LineNumber) := l_distribution_id_char_3;
9172       g_rec_lines.array_distribution_id_num_3(g_LineNumber)  := l_distribution_id_num_3;
9173       g_rec_lines.array_distribution_id_char_4(g_LineNumber) := l_distribution_id_char_4;
9174       g_rec_lines.array_distribution_id_num_4(g_LineNumber)  := l_distribution_id_num_4;
9175       g_rec_lines.array_distribution_id_char_5(g_LineNumber) := l_distribution_id_char_5;
9176       g_rec_lines.array_distribution_id_num_5(g_LineNumber)  := l_distribution_id_num_5;
9177       g_rec_lines.array_rev_dist_id_char_1(g_LineNumber)     := l_rev_dist_id_char_1;
9178       g_rec_lines.array_rev_dist_id_num_1(g_LineNumber)      := l_rev_dist_id_num_1;
9179       g_rec_lines.array_rev_dist_id_char_2(g_LineNumber)     := l_rev_dist_id_char_2;
9180       g_rec_lines.array_rev_dist_id_num_2(g_LineNumber)      := l_rev_dist_id_num_2;
9181       g_rec_lines.array_rev_dist_id_char_3(g_LineNumber)     := l_rev_dist_id_char_3;
9182       g_rec_lines.array_rev_dist_id_num_3(g_LineNumber)      := l_rev_dist_id_num_3;
9183       g_rec_lines.array_rev_dist_id_char_4(g_LineNumber)     := l_rev_dist_id_char_4;
9184       g_rec_lines.array_rev_dist_id_num_4(g_LineNumber)      := l_rev_dist_id_num_4;
9185       g_rec_lines.array_rev_dist_id_char_5(g_LineNumber)     := l_rev_dist_id_char_5;
9186       g_rec_lines.array_rev_dist_id_num_5(g_LineNumber)      := l_rev_dist_id_num_5;
9187       g_rec_lines.array_rev_dist_type(g_LineNumber)          := l_rev_dist_type;
9188       g_rec_lines.array_gl_date(g_LineNumber)                := l_gl_date;    --5194849
9189 
9190       g_rec_lines.array_tax_line_ref(g_LineNumber)           := l_tax_line_ref;           -- Bug7159711
9191       g_rec_lines.array_tax_summary_line_ref(g_LineNumber)   := l_tax_summary_line_ref;   -- Bug7159711
9192       g_rec_lines.array_tax_rec_nrec_dist_ref(g_LineNumber)  := l_tax_rec_nrec_dist_ref;  -- Bug7159711
9193 
9194 
9195       --
9196       -- Validate the distribution links for the extract line
9197       -- if the validation fails, mark the dummy line as 'DUMMY_LR_ERROR'
9198       --
9199       IF NOT ValidateRevLinks THEN
9200          g_rec_lines.array_reversal_code(g_LineNumber) := 'DUMMY_LR_ERROR';
9201       END IF;
9202    END IF;
9203 
9204 
9205    IF xla_accounting_cache_pkg.GetValueChar
9206          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9207          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9208    AND (NVL(l_actual_upg_option,'N') = 'Y')
9209    THEN
9210 
9211       SetNewLine;
9212 
9213       set_ae_header_id
9214          (p_ae_header_id => p_event_id
9215          ,p_header_num   => 0);
9216 
9217       g_rec_lines.array_gl_date(g_LineNumber)           := l_gl_date;
9218       g_rec_lines.array_ledger_id(g_LineNumber)         := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9219       g_rec_lines.array_event_number(g_LineNumber)      := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_number;
9220       g_rec_lines.array_reversal_code(g_LineNumber)     := 'REVERSAL';
9221       g_rec_lines.array_entity_id(g_LineNumber)         := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id;
9222       g_rec_lines.array_balance_type_code(g_LineNumber) := 'A';
9223       g_rec_lines.array_calculate_acctd_flag(g_LineNumber) := p_calculate_acctd_flag;
9224       g_rec_lines.array_calculate_g_l_flag(g_LineNumber)   := p_calculate_g_l_flag;
9225 
9226       g_rec_lines.array_sys_distribution_type(g_LineNumber)  := l_sys_distribution_type;
9227       g_rec_lines.array_distribution_id_char_1(g_LineNumber) := l_distribution_id_char_1;
9228       g_rec_lines.array_distribution_id_num_1(g_LineNumber)  := l_distribution_id_num_1;
9229       g_rec_lines.array_distribution_id_char_2(g_LineNumber) := l_distribution_id_char_2;
9230       g_rec_lines.array_distribution_id_num_2(g_LineNumber)  := l_distribution_id_num_2;
9231       g_rec_lines.array_distribution_id_char_3(g_LineNumber) := l_distribution_id_char_3;
9232       g_rec_lines.array_distribution_id_num_3(g_LineNumber)  := l_distribution_id_num_3;
9233       g_rec_lines.array_distribution_id_char_4(g_LineNumber) := l_distribution_id_char_4;
9234       g_rec_lines.array_distribution_id_num_4(g_LineNumber)  := l_distribution_id_num_4;
9235       g_rec_lines.array_distribution_id_char_5(g_LineNumber) := l_distribution_id_char_5;
9236       g_rec_lines.array_distribution_id_num_5(g_LineNumber)  := l_distribution_id_num_5;
9237       g_rec_lines.array_rev_dist_id_char_1(g_LineNumber)     := l_rev_dist_id_char_1;
9238       g_rec_lines.array_rev_dist_id_num_1(g_LineNumber)      := l_rev_dist_id_num_1;
9239       g_rec_lines.array_rev_dist_id_char_2(g_LineNumber)     := l_rev_dist_id_char_2;
9240       g_rec_lines.array_rev_dist_id_num_2(g_LineNumber)      := l_rev_dist_id_num_2;
9241       g_rec_lines.array_rev_dist_id_char_3(g_LineNumber)     := l_rev_dist_id_char_3;
9242       g_rec_lines.array_rev_dist_id_num_3(g_LineNumber)      := l_rev_dist_id_num_3;
9243       g_rec_lines.array_rev_dist_id_char_4(g_LineNumber)     := l_rev_dist_id_char_4;
9244       g_rec_lines.array_rev_dist_id_num_4(g_LineNumber)      := l_rev_dist_id_num_4;
9245       g_rec_lines.array_rev_dist_id_char_5(g_LineNumber)     := l_rev_dist_id_char_5;
9246       g_rec_lines.array_rev_dist_id_num_5(g_LineNumber)      := l_rev_dist_id_num_5;
9247       g_rec_lines.array_rev_dist_type(g_LineNumber)          := l_rev_dist_type;
9248 
9249       g_rec_lines.array_entered_amount(g_LineNumber)       := l_actual_upg_dr_entered_amt;
9250       g_rec_lines.array_currency_code(g_LineNumber)        := l_actual_upg_dr_entered_curr;
9251       g_rec_lines.array_ledger_amount(g_LineNumber)        := l_actual_upg_dr_ledger_amt;
9252       g_rec_lines.array_accounting_class(g_LineNumber)     := l_actual_upg_dr_acct_class;
9253       g_rec_lines.array_curr_conversion_rate(g_LineNumber) := l_actual_upg_dr_xrate;
9254       g_rec_lines.array_curr_conversion_date(g_LineNumber) := l_actual_upg_dr_xdate;
9255       g_rec_lines.array_curr_conversion_type(g_LineNumber) := l_actual_upg_dr_xrate_type;
9256 
9257       -- 5845547 upgrade party attributes
9258       g_rec_lines.array_party_type_code(g_LineNumber)      := l_upg_party_type;
9259       g_rec_lines.array_party_id(g_LineNumber)             := l_upg_party_id;
9260       g_rec_lines.array_party_site_id(g_LineNumber)        := l_upg_party_site_id;
9261 
9262       g_rec_lines.array_natural_side_code(g_LineNumber)    := 'D';
9263       g_rec_lines.array_acct_entry_type_code(g_LineNumber) := 'A';
9264       g_rec_lines.array_switch_side_flag(g_LineNumber)     := 'Y';
9265       g_rec_lines.array_merge_duplicate_code(g_LineNumber) := 'N';
9266       g_rec_lines.array_gl_transfer_mode(g_LineNumber)     := 'S';
9267 
9268       g_rec_lines.array_currency_mau(g_LineNumber)         :=
9269          xla_accounting_cache_pkg.GetCurrencyMau(g_rec_lines.array_currency_code(g_LineNumber));
9270 
9271       xla_ae_lines_pkg.set_ccid(
9272        p_code_combination_id          => l_actual_upg_dr_ccid
9273      , p_value_type_code              => 'S' --l_adr_value_type_code
9274      , p_transaction_coa_id           => NULL --l_adr_transaction_coa_id
9275      , p_accounting_coa_id            => NULL --l_adr_accounting_coa_id
9276      , p_adr_code                     => NULL --'SS_TEST'
9277      , p_adr_type_code                => NULL --'C'
9278      , p_component_type               => g_accounting_line.component_type --l_component_type
9279      , p_component_code               => g_accounting_line.accounting_line_code  --l_component_code
9280      , p_component_type_code          => g_accounting_line.accounting_line_type_code --l_component_type_code
9281      , p_component_appl_id            => g_accounting_line.accounting_line_appl_id --l_component_appl_id
9282      , p_amb_context_code             => g_accounting_line.amb_context_code --l_amb_context_code
9283      , p_side                         => 'NA'
9284      );
9285 
9286       SetDebitCreditAmounts;
9287 
9288       SetNewLine;
9289 
9290       set_ae_header_id
9291          (p_ae_header_id => p_event_id
9292          ,p_header_num   => 0);
9293 
9294       g_rec_lines.array_gl_date(g_LineNumber)           := l_gl_date;
9295       g_rec_lines.array_ledger_id(g_LineNumber)         := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9296       g_rec_lines.array_event_number(g_LineNumber)      := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_number;
9297       g_rec_lines.array_reversal_code(g_LineNumber)     := 'REVERSAL';
9298       g_rec_lines.array_entity_id(g_LineNumber)         := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id;
9299       g_rec_lines.array_balance_type_code(g_LineNumber) := 'A';
9300       g_rec_lines.array_calculate_acctd_flag(g_LineNumber) := p_calculate_acctd_flag;
9301       g_rec_lines.array_calculate_g_l_flag(g_LineNumber)   := p_calculate_g_l_flag;
9302 
9303       g_rec_lines.array_sys_distribution_type(g_LineNumber)  := l_sys_distribution_type;
9304       g_rec_lines.array_distribution_id_char_1(g_LineNumber) := l_distribution_id_char_1;
9305       g_rec_lines.array_distribution_id_num_1(g_LineNumber)  := l_distribution_id_num_1;
9306       g_rec_lines.array_distribution_id_char_2(g_LineNumber) := l_distribution_id_char_2;
9307       g_rec_lines.array_distribution_id_num_2(g_LineNumber)  := l_distribution_id_num_2;
9308       g_rec_lines.array_distribution_id_char_3(g_LineNumber) := l_distribution_id_char_3;
9309       g_rec_lines.array_distribution_id_num_3(g_LineNumber)  := l_distribution_id_num_3;
9310       g_rec_lines.array_distribution_id_char_4(g_LineNumber) := l_distribution_id_char_4;
9311       g_rec_lines.array_distribution_id_num_4(g_LineNumber)  := l_distribution_id_num_4;
9312       g_rec_lines.array_distribution_id_char_5(g_LineNumber) := l_distribution_id_char_5;
9313       g_rec_lines.array_distribution_id_num_5(g_LineNumber)  := l_distribution_id_num_5;
9314       g_rec_lines.array_rev_dist_id_char_1(g_LineNumber)     := l_rev_dist_id_char_1;
9315       g_rec_lines.array_rev_dist_id_num_1(g_LineNumber)      := l_rev_dist_id_num_1;
9316       g_rec_lines.array_rev_dist_id_char_2(g_LineNumber)     := l_rev_dist_id_char_2;
9317       g_rec_lines.array_rev_dist_id_num_2(g_LineNumber)      := l_rev_dist_id_num_2;
9318       g_rec_lines.array_rev_dist_id_char_3(g_LineNumber)     := l_rev_dist_id_char_3;
9319       g_rec_lines.array_rev_dist_id_num_3(g_LineNumber)      := l_rev_dist_id_num_3;
9320       g_rec_lines.array_rev_dist_id_char_4(g_LineNumber)     := l_rev_dist_id_char_4;
9321       g_rec_lines.array_rev_dist_id_num_4(g_LineNumber)      := l_rev_dist_id_num_4;
9322       g_rec_lines.array_rev_dist_id_char_5(g_LineNumber)     := l_rev_dist_id_char_5;
9323       g_rec_lines.array_rev_dist_id_num_5(g_LineNumber)      := l_rev_dist_id_num_5;
9324       g_rec_lines.array_rev_dist_type(g_LineNumber)          := l_rev_dist_type;
9325 
9326       g_rec_lines.array_entered_amount(g_LineNumber)       := l_actual_upg_cr_entered_amt;
9327       g_rec_lines.array_currency_code(g_LineNumber)        := l_actual_upg_cr_entered_curr;
9328       g_rec_lines.array_ledger_amount(g_LineNumber)        := l_actual_upg_cr_ledger_amt;
9329       g_rec_lines.array_accounting_class(g_LineNumber)     := l_actual_upg_cr_acct_class;
9330       g_rec_lines.array_curr_conversion_rate(g_LineNumber) := l_actual_upg_cr_xrate;
9331       g_rec_lines.array_curr_conversion_date(g_LineNumber) := l_actual_upg_cr_xdate;
9332       g_rec_lines.array_curr_conversion_type(g_LineNumber) := l_actual_upg_cr_xrate_type;
9333 
9334       -- 5845547 upgrade party attributes
9335       g_rec_lines.array_party_type_code(g_LineNumber)      := l_upg_party_type;
9336       g_rec_lines.array_party_id(g_LineNumber)             := l_upg_party_id;
9337       g_rec_lines.array_party_site_id(g_LineNumber)        := l_upg_party_site_id;
9338 
9339       g_rec_lines.array_natural_side_code(g_LineNumber)    := 'C';
9340       g_rec_lines.array_acct_entry_type_code(g_LineNumber) := 'A';
9341       g_rec_lines.array_switch_side_flag(g_LineNumber)     := 'Y';
9342       g_rec_lines.array_merge_duplicate_code(g_LineNumber) := 'N';
9343       g_rec_lines.array_gl_transfer_mode(g_LineNumber)     := 'S';
9344 
9345       g_rec_lines.array_currency_mau(g_LineNumber)         :=
9346          xla_accounting_cache_pkg.GetCurrencyMau(g_rec_lines.array_currency_code(g_LineNumber));
9347 
9348       xla_ae_lines_pkg.set_ccid(
9349        p_code_combination_id          => l_actual_upg_cr_ccid
9350      , p_value_type_code              => 'S' --l_adr_value_type_code
9351      , p_transaction_coa_id           => NULL --l_adr_transaction_coa_id
9352      , p_accounting_coa_id            => NULL --l_adr_accounting_coa_id
9353      , p_adr_code                     => NULL --'SS_TEST'
9354      , p_adr_type_code                => NULL --'C'
9355      , p_component_type               => g_accounting_line.component_type --l_component_type
9356      , p_component_code               => g_accounting_line.accounting_line_code  --l_component_code
9357      , p_component_type_code          => g_accounting_line.accounting_line_type_code --l_component_type_code
9358      , p_component_appl_id            => g_accounting_line.accounting_line_appl_id --l_component_appl_id
9359      , p_amb_context_code             => g_accounting_line.amb_context_code --l_amb_context_code
9360      , p_side                         => 'NA'
9361      );
9362 
9363       SetDebitCreditAmounts;
9364 
9365       --
9366       -- Validate the distribution links for the extract line
9367       -- if the validation fails, mark the dummy line as 'DUMMY_LR_ERROR'
9368       --
9369 --      IF NOT ValidateRevLinks THEN
9370 --         g_rec_lines.array_reversal_code(g_LineNumber) := 'DUMMY_LR_ERROR';
9371 --      END IF;
9372    END IF;
9373 
9374    IF xla_accounting_cache_pkg.GetValueChar
9375          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9376          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9377    AND (l_enc_upg_option = 'Y')
9378    THEN
9379 
9380       IF l_upg_dr_enc_type_id IS NOT NULL THEN
9381          SetNewLine;
9382 
9383          set_ae_header_id
9384             (p_ae_header_id => p_event_id
9385             ,p_header_num   => 0);
9386 
9387          g_rec_lines.array_gl_date(g_LineNumber)           := l_gl_date;
9388          g_rec_lines.array_ledger_id(g_LineNumber)         := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9389          g_rec_lines.array_event_number(g_LineNumber)      := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_number;
9390          g_rec_lines.array_reversal_code(g_LineNumber)     := 'REVERSAL';
9391          g_rec_lines.array_entity_id(g_LineNumber)         := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id;
9392          g_rec_lines.array_balance_type_code(g_LineNumber) := 'E';
9393          g_rec_lines.array_calculate_acctd_flag(g_LineNumber) := 'N';
9394          g_rec_lines.array_calculate_g_l_flag(g_LineNumber)   := 'N';
9395 
9396          g_rec_lines.array_sys_distribution_type(g_LineNumber)  := l_sys_distribution_type;
9397          g_rec_lines.array_distribution_id_char_1(g_LineNumber) := l_distribution_id_char_1;
9398          g_rec_lines.array_distribution_id_num_1(g_LineNumber)  := l_distribution_id_num_1;
9399          g_rec_lines.array_distribution_id_char_2(g_LineNumber) := l_distribution_id_char_2;
9400          g_rec_lines.array_distribution_id_num_2(g_LineNumber)  := l_distribution_id_num_2;
9401          g_rec_lines.array_distribution_id_char_3(g_LineNumber) := l_distribution_id_char_3;
9402          g_rec_lines.array_distribution_id_num_3(g_LineNumber)  := l_distribution_id_num_3;
9403          g_rec_lines.array_distribution_id_char_4(g_LineNumber) := l_distribution_id_char_4;
9404          g_rec_lines.array_distribution_id_num_4(g_LineNumber)  := l_distribution_id_num_4;
9405          g_rec_lines.array_distribution_id_char_5(g_LineNumber) := l_distribution_id_char_5;
9406          g_rec_lines.array_distribution_id_num_5(g_LineNumber)  := l_distribution_id_num_5;
9407          g_rec_lines.array_rev_dist_id_char_1(g_LineNumber)     := l_rev_dist_id_char_1;
9408          g_rec_lines.array_rev_dist_id_num_1(g_LineNumber)      := l_rev_dist_id_num_1;
9409          g_rec_lines.array_rev_dist_id_char_2(g_LineNumber)     := l_rev_dist_id_char_2;
9410          g_rec_lines.array_rev_dist_id_num_2(g_LineNumber)      := l_rev_dist_id_num_2;
9411          g_rec_lines.array_rev_dist_id_char_3(g_LineNumber)     := l_rev_dist_id_char_3;
9412          g_rec_lines.array_rev_dist_id_num_3(g_LineNumber)      := l_rev_dist_id_num_3;
9413          g_rec_lines.array_rev_dist_id_char_4(g_LineNumber)     := l_rev_dist_id_char_4;
9414          g_rec_lines.array_rev_dist_id_num_4(g_LineNumber)      := l_rev_dist_id_num_4;
9415          g_rec_lines.array_rev_dist_id_char_5(g_LineNumber)     := l_rev_dist_id_char_5;
9416          g_rec_lines.array_rev_dist_id_num_5(g_LineNumber)      := l_rev_dist_id_num_5;
9417          g_rec_lines.array_rev_dist_type(g_LineNumber)          := l_rev_dist_type;
9418 
9419          g_rec_lines.array_entered_amount(g_LineNumber)       := l_enc_upg_dr_entered_amt;
9420          g_rec_lines.array_currency_code(g_LineNumber)        := l_enc_upg_dr_entered_curr;
9421          g_rec_lines.array_ledger_amount(g_LineNumber)        := l_enc_upg_dr_ledger_amt;
9422          g_rec_lines.array_accounting_class(g_LineNumber)     := l_enc_upg_dr_acct_class;
9423          g_rec_lines.array_encumbrance_type_id(g_LineNumber)  := l_upg_dr_enc_type_id;  -- 5845547
9424 
9425          -- 5845547 upgrade party attributes
9426          g_rec_lines.array_party_type_code(g_LineNumber)      := l_upg_party_type;
9427          g_rec_lines.array_party_id(g_LineNumber)             := l_upg_party_id;
9428          g_rec_lines.array_party_site_id(g_LineNumber)        := l_upg_party_site_id;
9429 
9430          g_rec_lines.array_natural_side_code(g_LineNumber)    := 'D';
9431          g_rec_lines.array_acct_entry_type_code(g_LineNumber) := 'E';
9432          g_rec_lines.array_switch_side_flag(g_LineNumber)     := 'Y';
9433          g_rec_lines.array_merge_duplicate_code(g_LineNumber) := 'N';
9434          g_rec_lines.array_gl_transfer_mode(g_LineNumber)     := 'S';
9435 
9436          g_rec_lines.array_currency_mau(g_LineNumber)         :=
9437             xla_accounting_cache_pkg.GetCurrencyMau(g_rec_lines.array_currency_code(g_LineNumber));
9438 
9439          xla_ae_lines_pkg.set_ccid(
9440            p_code_combination_id          => l_enc_upg_dr_ccid
9441          , p_value_type_code              => 'S' --l_adr_value_type_code
9442          , p_transaction_coa_id           => NULL --l_adr_transaction_coa_id
9443          , p_accounting_coa_id            => NULL --l_adr_accounting_coa_id
9444          , p_adr_code                     => NULL --'SS_TEST'
9445          , p_adr_type_code                => NULL --'C'
9446          , p_component_type               => g_accounting_line.component_type --l_component_type
9447          , p_component_code               => g_accounting_line.accounting_line_code  --l_component_code
9448          , p_component_type_code          => g_accounting_line.accounting_line_type_code --l_component_type_code
9449          , p_component_appl_id            => g_accounting_line.accounting_line_appl_id --l_component_appl_id
9450          , p_amb_context_code             => g_accounting_line.amb_context_code --l_amb_context_code
9451          , p_side                         => 'NA'
9452          );
9453 
9454                   SetDebitCreditAmounts;
9455       END IF;
9456 
9457       IF l_upg_cr_enc_type_id IS NOT NULL THEN
9458          SetNewLine;
9459 
9460           set_ae_header_id
9461              (p_ae_header_id => p_event_id
9462              ,p_header_num   => 0);
9463 
9464          g_rec_lines.array_gl_date(g_LineNumber)           := l_gl_date;
9465          g_rec_lines.array_ledger_id(g_LineNumber)         := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9466          g_rec_lines.array_event_number(g_LineNumber)      := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_number;
9467          g_rec_lines.array_reversal_code(g_LineNumber)     := 'REVERSAL';
9468          g_rec_lines.array_entity_id(g_LineNumber)         := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id;
9469          g_rec_lines.array_balance_type_code(g_LineNumber) := 'E';
9470          g_rec_lines.array_calculate_acctd_flag(g_LineNumber) := 'N';
9471          g_rec_lines.array_calculate_g_l_flag(g_LineNumber)   := 'N';
9472 
9473          g_rec_lines.array_sys_distribution_type(g_LineNumber)  := l_sys_distribution_type;
9474          g_rec_lines.array_distribution_id_char_1(g_LineNumber) := l_distribution_id_char_1;
9475          g_rec_lines.array_distribution_id_num_1(g_LineNumber)  := l_distribution_id_num_1;
9476          g_rec_lines.array_distribution_id_char_2(g_LineNumber) := l_distribution_id_char_2;
9477          g_rec_lines.array_distribution_id_num_2(g_LineNumber)  := l_distribution_id_num_2;
9478          g_rec_lines.array_distribution_id_char_3(g_LineNumber) := l_distribution_id_char_3;
9479          g_rec_lines.array_distribution_id_num_3(g_LineNumber)  := l_distribution_id_num_3;
9480          g_rec_lines.array_distribution_id_char_4(g_LineNumber) := l_distribution_id_char_4;
9481          g_rec_lines.array_distribution_id_num_4(g_LineNumber)  := l_distribution_id_num_4;
9482          g_rec_lines.array_distribution_id_char_5(g_LineNumber) := l_distribution_id_char_5;
9483          g_rec_lines.array_distribution_id_num_5(g_LineNumber)  := l_distribution_id_num_5;
9484          g_rec_lines.array_rev_dist_id_char_1(g_LineNumber)     := l_rev_dist_id_char_1;
9485          g_rec_lines.array_rev_dist_id_num_1(g_LineNumber)      := l_rev_dist_id_num_1;
9486          g_rec_lines.array_rev_dist_id_char_2(g_LineNumber)     := l_rev_dist_id_char_2;
9487          g_rec_lines.array_rev_dist_id_num_2(g_LineNumber)      := l_rev_dist_id_num_2;
9488          g_rec_lines.array_rev_dist_id_char_3(g_LineNumber)     := l_rev_dist_id_char_3;
9489          g_rec_lines.array_rev_dist_id_num_3(g_LineNumber)      := l_rev_dist_id_num_3;
9490          g_rec_lines.array_rev_dist_id_char_4(g_LineNumber)     := l_rev_dist_id_char_4;
9491          g_rec_lines.array_rev_dist_id_num_4(g_LineNumber)      := l_rev_dist_id_num_4;
9492          g_rec_lines.array_rev_dist_id_char_5(g_LineNumber)     := l_rev_dist_id_char_5;
9493          g_rec_lines.array_rev_dist_id_num_5(g_LineNumber)      := l_rev_dist_id_num_5;
9494          g_rec_lines.array_rev_dist_type(g_LineNumber)          := l_rev_dist_type;
9495 
9496          g_rec_lines.array_entered_amount(g_LineNumber)       := l_enc_upg_cr_entered_amt;
9497          g_rec_lines.array_currency_code(g_LineNumber)        := l_enc_upg_cr_entered_curr;
9498          g_rec_lines.array_ledger_amount(g_LineNumber)        := l_enc_upg_cr_ledger_amt;
9499          g_rec_lines.array_accounting_class(g_LineNumber)     := l_enc_upg_cr_acct_class;
9500          g_rec_lines.array_encumbrance_type_id(g_LineNumber)  := l_upg_cr_enc_type_id;  -- 5845547
9501 
9502          -- 5845547 upgrade party attributes
9503          g_rec_lines.array_party_type_code(g_LineNumber)      := l_upg_party_type;
9504          g_rec_lines.array_party_id(g_LineNumber)             := l_upg_party_id;
9505          g_rec_lines.array_party_site_id(g_LineNumber)        := l_upg_party_site_id;
9506 
9507 
9508          g_rec_lines.array_natural_side_code(g_LineNumber)    := 'C';
9509          g_rec_lines.array_acct_entry_type_code(g_LineNumber) := 'E';
9510          g_rec_lines.array_switch_side_flag(g_LineNumber)     := 'Y';
9511          g_rec_lines.array_merge_duplicate_code(g_LineNumber) := 'N';
9512          g_rec_lines.array_gl_transfer_mode(g_LineNumber)     := 'S';
9513 
9514          g_rec_lines.array_currency_mau(g_LineNumber)         :=
9515             xla_accounting_cache_pkg.GetCurrencyMau(g_rec_lines.array_currency_code(g_LineNumber));
9516 
9517          xla_ae_lines_pkg.set_ccid(
9518           p_code_combination_id          => l_enc_upg_cr_ccid
9519         , p_value_type_code              => 'S' --l_adr_value_type_code
9520         , p_transaction_coa_id           => NULL --l_adr_transaction_coa_id
9521         , p_accounting_coa_id            => NULL --l_adr_accounting_coa_id
9522         , p_adr_code                     => NULL --'SS_TEST'
9523         , p_adr_type_code                => NULL --'C'
9524         , p_component_type               => g_accounting_line.component_type --l_component_type
9525         , p_component_code               => g_accounting_line.accounting_line_code  --l_component_code
9526         , p_component_type_code          => g_accounting_line.accounting_line_type_code --l_component_type_code
9527         , p_component_appl_id            => g_accounting_line.accounting_line_appl_id --l_component_appl_id
9528         , p_amb_context_code             => g_accounting_line.amb_context_code --l_amb_context_code
9529         , p_side                         => 'NA'
9530         );
9531 
9532         SetDebitCreditAmounts;
9533      END IF;
9534 
9535       --
9536       -- Validate the distribution links for the extract line
9537       -- if the validation fails, mark the dummy line as 'DUMMY_LR_ERROR'
9538       --
9539 --      IF NOT ValidateRevLinks THEN
9540 --         g_rec_lines.array_reversal_code(g_LineNumber) := 'DUMMY_LR_ERROR';
9541 --      END IF;
9542    END IF;
9543 
9544    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9545       trace
9546          (p_msg      => 'END of SetAcctReversalAttrs'
9547          ,p_level    => C_LEVEL_PROCEDURE
9548          ,p_module   => l_log_module);
9549    END IF;
9550 END SetAcctReversalAttrs;
9551 
9552 
9553 /*======================================================================+
9554 |                                                                       |
9555 | Public Procedure                                                      |
9556 |                                                                       |
9557 |                                                                       |
9558 +======================================================================*/
9559 PROCEDURE SetTrxReversalAttrs
9560        (p_event_id                     IN NUMBER
9561        ,p_gl_date                      IN DATE
9562        ,p_trx_reversal_source          IN VARCHAR2) IS
9563 l_log_module         VARCHAR2(240);
9564 BEGIN
9565    IF g_log_enabled THEN
9566       l_log_module := C_DEFAULT_MODULE||'.SetTrxReversalAttrs';
9567    END IF;
9568 
9569    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9570       trace
9571          (p_msg      => 'BEGIN of SetTrxReversalAttrs'
9572          ,p_level    => C_LEVEL_PROCEDURE
9573          ,p_module   => l_log_module);
9574    END IF;
9575 
9576    g_temp_line_num := -1;
9577 
9578    SetNewLine;
9579 
9580    set_ae_header_id (p_ae_header_id => p_event_id,
9581                      p_header_num   => 0);      -- 4262811 by default all zero.  1,2,.. are used by Accl Reversal or MPA.
9582 
9583    g_rec_lines.array_balance_type_code(g_LineNumber) := 'X';
9584 
9585    g_rec_lines.array_ledger_id(g_LineNumber) :=
9586       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9587 
9588    g_rec_lines.array_event_number(g_LineNumber) := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_number;
9589 
9590    g_rec_lines.array_entity_id(g_LineNumber) := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id;
9591 
9592    g_rec_lines.array_reversal_code(g_LineNumber) := 'DUMMY_TR';
9593 
9594    g_rec_lines.array_gl_date(g_LineNumber) := p_gl_date;
9595 
9596    ------------------------------------------------------------------------------------------
9597    -- 5055878 Handle transaction reversal method option - SIDE and SIGN
9598    ------------------------------------------------------------------------------------------
9599    IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE' THEN
9600       g_rec_lines.array_switch_side_flag(g_LineNumber) := 'Y';
9601    ELSE
9602       g_rec_lines.array_switch_side_flag(g_LineNumber) := 'N';
9603    END IF;
9604    ------------------------------------------------------------------------------------------
9605 
9606    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9607       trace
9608          (p_msg      => 'END of SetTrxReversalAttrs'
9609          ,p_level    => C_LEVEL_PROCEDURE
9610          ,p_module   => l_log_module);
9611    END IF;
9612 END SetTrxReversalAttrs;
9613 
9614 
9615 PROCEDURE CalculateUnroundedAmounts
9616 is
9617 l_log_module         VARCHAR2(240);
9618 l_ledger_attrs       xla_accounting_cache_pkg.t_array_ledger_attrs;
9619 l_ledger_attrs1       xla_accounting_cache_pkg.t_array_ledger_attrs;
9620 l_primary_ledger_currency  VARCHAR2(30):=null;
9621 l_primary_ledger_id  NUMBER;
9622 l_secondary_ledger_currency  VARCHAR2(30);
9623 l_secondary_ledger_id  NUMBER;
9624 l_ledger_id  NUMBER;
9625 l_count number;
9626 l_max_ledger_index   NUMBER;
9627 l_euro               VARCHAR2(30);
9628 
9629 /*
9630 type t_array_derive_type table of FND_CURRENCY.derive_type%TYPE index by binary_integer;
9631 l_array_from_derive_type  t_array_derive_type;
9632 l_array_to_derive_type    t_array_derive_type;
9633 l_array_from_rate         xla_ae_journal_entry_pkg.t_array_Num;
9634 l_array_to_rate           xla_ae_journal_entry_pkg.t_array_Num;
9635 l_array_from_curr         xla_ae_journal_entry_pkg.t_array_V30L;
9636 l_array_to_curr           xla_ae_journal_entry_pkg.t_array_V30L;
9637 */
9638 
9639 l_array_calculate_amts_flag  xla_ae_journal_entry_pkg.t_array_V1L;
9640 l_array_conversion_type      xla_ae_journal_entry_pkg.t_array_V30L;
9641 l_array_entered_curr         xla_ae_journal_entry_pkg.t_array_V30L;
9642 l_array_conversion_date      xla_ae_journal_entry_pkg.t_array_Date;
9643 l_array_conversion_rate      xla_ae_journal_entry_pkg.t_array_Num;
9644 l_array_new_rate             xla_ae_journal_entry_pkg.t_array_Num;
9645 l_array_new_type             xla_ae_journal_entry_pkg.t_array_V30L;
9646 l_array_ledger_id            xla_ae_journal_entry_pkg.t_array_Int;
9647 l_array_from_type            xla_ae_journal_entry_pkg.t_array_V30L;
9648 l_array_to_type              xla_ae_journal_entry_pkg.t_array_V30L;
9649 l_array_primary_type         xla_ae_journal_entry_pkg.t_array_V30L;
9650 
9651 l_rate   NUMBER;
9652 i        NUMBER;
9653 
9654 cursor csr_lines is
9655   SELECT xal.calculate_acctd_amts_flag
9656         ,xal.currency_conversion_type
9657         ,TRUNC(nvl(xal.currency_conversion_date, xeg.transaction_date))
9658         ,decode(xal.currency_conversion_type, 'User', xal.currency_conversion_rate, -1)
9659         ,xal.currency_code
9660         ,xal.ledger_id
9661         ,decode( fc.derive_type, 'EURO', 'EURO', 'EMU',
9662                   decode( sign( trunc(nvl(xal.currency_conversion_date, xeg.transaction_date)) -
9663                       trunc(fc.derive_effective)), -1, 'OTHER', 'EMU'), 'OTHER' ) from_type
9664         ,decode( fc1.derive_type, 'EURO', 'EURO', 'EMU',
9665                   decode( sign( trunc(nvl(xal.currency_conversion_date, xeg.transaction_date)) -
9666                       trunc(fc1.derive_effective)), -1, 'OTHER', 'EMU'), 'OTHER' ) to_type
9667         ,decode( fc2.derive_type, 'EURO', 'EURO', 'EMU',
9668                   decode( sign( trunc(nvl(xal.currency_conversion_date, xeg.transaction_date)) -
9669                       trunc(fc2.derive_effective)), -1, 'OTHER', 'EMU'), 'OTHER' ) primary_type
9670     FROM xla_ae_lines_gt xal
9671         ,gl_ledgers gl
9672         ,fnd_currencies fc
9673         ,fnd_currencies fc1
9674         ,fnd_currencies fc2
9675         ,xla_events_gt xeg
9676    WHERE xal.ledger_id = gl.ledger_id
9677      AND gl.object_type_code      = 'L' /* only ledgers (not ledger sets) */
9678      AND gl.le_ledger_type_code   = 'L' /* only legal ledgers */
9679      AND xal.currency_code <> gl.currency_code
9680      AND xal.gain_or_loss_flag = 'N'
9681      AND xal.balance_type_code <> 'X'
9682      AND xal.calculate_acctd_amts_flag = 'Y'
9683      AND fc.currency_code = xal.currency_code
9684      AND fc1.currency_code = gl.currency_code
9685      AND fc2.currency_code = l_primary_ledger_currency
9686      AND xal.event_id = xeg.event_id
9687      AND nvl(xal.reversal_code,C_CHAR) <> C_DUMMY_PRIOR
9688   GROUP BY
9689          xal.calculate_acctd_amts_flag
9690         ,xal.currency_conversion_type
9691         ,TRUNC(nvl(xal.currency_conversion_date, xeg.transaction_date))
9692         ,xal.currency_conversion_rate
9693         ,xal.currency_code
9694         ,xal.ledger_id
9695         ,fc.derive_type
9696         ,fc.derive_effective
9697         ,fc1.derive_type
9698         ,fc1.derive_effective
9699         ,fc2.derive_type
9700         ,fc2.derive_effective
9701         ,decode(xal.currency_conversion_type, 'User', xal.currency_conversion_rate, -1)
9702         ;
9703 
9704 BEGIN
9705   IF g_log_enabled THEN
9706       l_log_module := C_DEFAULT_MODULE||'.CalculateUnroundedAmounts';
9707   END IF;
9708 
9709   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9710       trace
9711          (p_msg      => 'BEGIN of CalculateUnroundedAmounts'
9712          ,p_level    => C_LEVEL_PROCEDURE
9713          ,p_module   => l_log_module);
9714   END IF;
9715 
9716   l_euro :='EUR';
9717 
9718   xla_accounting_cache_pkg.BuildLedgerArray(l_ledger_attrs1);
9719 
9720   l_max_ledger_index := l_ledger_attrs1.array_ledger_id.COUNT;
9721   IF (C_LEVEL_STATEMENT>= g_log_level) THEN
9722       trace
9723          (p_msg      => 'l_max_ledger_index:'||to_char(l_max_ledger_index)
9724          ,p_level    => C_LEVEL_STATEMENT
9725          ,p_module   => l_log_module);
9726   END IF;
9727   For i in 1..l_max_ledger_index LOOP
9728     IF (C_LEVEL_STATEMENT>= g_log_level) THEN
9729       trace
9730          (p_msg      => 'i:'||to_char(i)
9731          ,p_level    => C_LEVEL_STATEMENT
9732          ,p_module   => l_log_module);
9733     END IF;
9734     l_ledger_id := l_ledger_attrs1.array_ledger_id(i);
9735     IF(l_ledger_attrs1.array_ledger_type(i) = 'PRIMARY') THEN
9736       l_primary_ledger_currency:= l_ledger_attrs1.array_ledger_currency_code(i);
9737       l_primary_ledger_id := l_ledger_id;
9738     ELSIF(l_ledger_attrs1.array_ledger_type(i) = 'SECONDARY') THEN
9739       l_secondary_ledger_currency:= l_ledger_attrs1.array_ledger_currency_code(i);
9740       l_secondary_ledger_id := l_ledger_id;
9741     END IF;
9742     l_ledger_attrs.array_ledger_currency_code(l_ledger_id)
9743                       := l_ledger_attrs1.array_ledger_currency_code(i);
9744     l_ledger_attrs.array_ledger_type(l_ledger_id)
9745                       := l_ledger_attrs1.array_ledger_type(i);
9746     IF (C_LEVEL_STATEMENT>= g_log_level) THEN
9747       trace
9748          (p_msg      => 'middle of loop, i:'||to_char(i)
9749          ,p_level    => C_LEVEL_STATEMENT
9750          ,p_module   => l_log_module);
9751     END IF;
9752     l_ledger_attrs.array_default_rate_type(l_ledger_id)
9753                       := l_ledger_attrs1.array_default_rate_type(i);
9754     l_ledger_attrs.array_inhert_type_flag(l_ledger_id)
9755                       := l_ledger_attrs1.array_inhert_type_flag(i);
9756     l_ledger_attrs.array_max_roll_date(l_ledger_id)
9757                       := l_ledger_attrs1.array_max_roll_date(i);
9758   END LOOP;
9759 
9760   IF l_primary_ledger_currency is null THEN
9761     l_primary_ledger_currency:=l_secondary_ledger_currency;
9762     l_primary_ledger_id:=l_secondary_ledger_id;
9763   END IF;
9764 
9765   OPEN csr_lines;
9766 
9767   IF (C_LEVEL_STATEMENT>= g_log_level) THEN
9768       trace
9769          (p_msg      => 'Starting Loop'
9770          ,p_level    => C_LEVEL_STATEMENT
9771          ,p_module   => l_log_module);
9772   END IF;
9773   LOOP
9774     FETCH csr_lines
9775     BULK COLLECT INTO
9776          l_array_calculate_amts_flag
9777          ,l_array_conversion_type
9778          ,l_array_conversion_date
9779          ,l_array_conversion_rate
9780          ,l_array_entered_curr
9781          ,l_array_ledger_id
9782          ,l_array_from_type
9783          ,l_array_to_type
9784          ,l_array_primary_type
9785     LIMIT C_BULK_LIMIT;
9786 
9787     IF l_array_conversion_type.COUNT = 0 THEN
9788       EXIT;
9789     END IF;
9790     IF (C_LEVEL_STATEMENT>= g_log_level) THEN
9791       trace
9792          (p_msg      => 'Loop Count:'||to_char(l_array_conversion_type.COUNT)
9793          ,p_level    => C_LEVEL_STATEMENT
9794          ,p_module   => l_log_module);
9795     END IF;
9796 
9797     FOR i in 1..l_array_conversion_type.COUNT LOOP
9798       IF (C_LEVEL_STATEMENT>= g_log_level) THEN
9799           trace
9800              (p_msg      => 'i:'||to_char(i) || ' ledger id:'|| to_char(l_array_ledger_id (i))
9801              ,p_level    => C_LEVEL_STATEMENT
9802              ,p_module   => l_log_module);
9803           trace
9804              (p_msg      => 'ledger currency code:'||l_ledger_attrs.array_ledger_currency_code(l_array_ledger_id (i)) ||' entered curr:'|| l_array_entered_curr(i)
9805              ,p_level    => C_LEVEL_STATEMENT
9806              ,p_module   => l_log_module);
9807           trace
9808              (p_msg      => 'from type:'||l_array_from_type(i) || ' tto type:'||l_array_to_type(i)
9809              ,p_level    => C_LEVEL_STATEMENT
9810              ,p_module   => l_log_module);
9811       END IF;
9812       BEGIN
9813         IF(l_array_from_type(i) in ('EMU', 'EURO')
9814            AND l_array_to_type(i) in ('EMU', 'EURO')) THEN
9815           IF (C_LEVEL_STATEMENT>= g_log_level) THEN
9816               trace
9817                  (p_msg      => 'if block1'
9818                  ,p_level    => C_LEVEL_STATEMENT
9819                  ,p_module   => l_log_module);
9820           END IF;
9821 
9822           l_array_new_type(i) :='EMU Fixed';
9823           l_array_new_rate(i) :=gl_currency_api.get_closest_rate(
9824                 x_from_currency    => l_array_entered_curr(i)
9825                 ,x_to_currency      => l_ledger_attrs.array_ledger_currency_code(l_array_ledger_id (i))
9826                 ,x_conversion_date  => l_array_conversion_date(i)
9827                 ,x_conversion_type  => 'EMU Fixed'
9828                ,x_max_roll_days    => l_ledger_attrs.array_max_roll_date(l_primary_ledger_id));
9829         ELSIF(l_array_ledger_id (i) = l_primary_ledger_id) THEN
9830           IF (C_LEVEL_STATEMENT>= g_log_level) THEN
9831               trace
9832                  (p_msg      => 'if block2'
9833                  ,p_level    => C_LEVEL_STATEMENT
9834                  ,p_module   => l_log_module);
9835           END IF;
9836           l_array_new_type(i) :=l_array_conversion_type(i);
9837           IF (l_array_conversion_type(i) = 'User') THEN
9838             l_array_new_rate(i) := l_array_conversion_rate(i);
9839             IF (C_LEVEL_STATEMENT>= g_log_level) THEN
9840               trace
9841                  (p_msg      => 'if block2:'||to_char(l_array_new_rate(i))
9842                  ,p_level    => C_LEVEL_STATEMENT
9843                  ,p_module   => l_log_module);
9844             END IF;
9845 
9846           ELSE
9847             l_array_new_rate(i):=gl_currency_api.get_closest_rate(
9848                 x_from_currency    => l_array_entered_curr(i)
9849                 ,x_to_currency      => l_primary_ledger_currency
9850                 ,x_conversion_date  => l_array_conversion_date(i)
9851                 ,x_conversion_type  => l_array_conversion_type(i)
9852                ,x_max_roll_days    => l_ledger_attrs.array_max_roll_date(l_primary_ledger_id));
9853             IF (C_LEVEL_STATEMENT>= g_log_level) THEN
9854               trace
9855                  (p_msg      => 'iif block2:'||to_char(l_array_new_rate(i))|| ' ent:'||l_array_entered_curr(i)||' to cur:'|| l_primary_ledger_currency || ' date:'||to_char(l_array_conversion_date(i))||' type:'||l_array_conversion_type(i)
9856                  ,p_level    => C_LEVEL_STATEMENT
9857                  ,p_module   => l_log_module);
9858             END IF;
9859           END IF;
9860         ELSE
9861           IF (C_LEVEL_STATEMENT>= g_log_level) THEN
9862               trace
9863                  (p_msg      => 'if block3'
9864                  ,p_level    => C_LEVEL_STATEMENT
9865                  ,p_module   => l_log_module);
9866           END IF;
9867           IF(l_array_conversion_type(i) = 'User' ) THEN
9868             IF(l_array_primary_type(i) in ('EMU', 'EURO')
9869                  AND l_array_from_type(i) in ('EMU', 'EURO')) THEN
9870               IF (C_LEVEL_STATEMENT>= g_log_level) THEN
9871                   trace
9872                      (p_msg      => 'if block4'
9873                      ,p_level    => C_LEVEL_STATEMENT
9874                      ,p_module   => l_log_module);
9875               END IF;
9876               l_array_new_type(i) :=l_ledger_attrs.array_default_rate_type(l_array_ledger_id (i));
9877               l_array_new_rate(i):=gl_currency_api.get_closest_rate(
9878                 x_from_currency    => l_array_entered_curr(i)
9879                 ,x_to_currency      => l_ledger_attrs.array_ledger_currency_code(l_array_ledger_id (i))
9880                 ,x_conversion_date  => l_array_conversion_date(i)
9881                 ,x_conversion_type  => l_array_new_type(i)
9882            ,x_max_roll_days    => l_ledger_attrs.array_max_roll_date(l_array_ledger_id (i)));
9883             ELSE
9884               IF (C_LEVEL_STATEMENT>= g_log_level) THEN
9885                   trace
9886                      (p_msg      => 'if block5'
9887                      ,p_level    => C_LEVEL_STATEMENT
9888                      ,p_module   => l_log_module);
9889               END IF;
9890               l_array_new_type(i) :=l_array_conversion_type(i);
9891               l_rate:=gl_currency_api.get_closest_rate(
9892                 x_from_currency    => l_primary_ledger_currency
9893                 ,x_to_currency      => l_ledger_attrs.array_ledger_currency_code(l_array_ledger_id (i))
9894                 ,x_conversion_date  => l_array_conversion_date(i)
9895                 ,x_conversion_type  => l_ledger_attrs.array_default_rate_type(l_array_ledger_id (i))
9896            ,x_max_roll_days    => l_ledger_attrs.array_max_roll_date(l_array_ledger_id (i)));
9897               l_array_new_rate(i):= l_array_conversion_rate(i) * l_rate;
9898             END IF;
9899           ELSIF(l_ledger_attrs.array_inhert_type_flag(l_array_ledger_id (i))='Y'and l_array_conversion_type(i) is not null) THEN
9900               IF (C_LEVEL_STATEMENT>= g_log_level) THEN
9901                   trace
9902                      (p_msg      => 'if block6'
9903                      ,p_level    => C_LEVEL_STATEMENT
9904                      ,p_module   => l_log_module);
9905               END IF;
9906             l_array_new_type(i) :=l_array_conversion_type(i);
9907             l_array_new_rate(i):=gl_currency_api.get_closest_rate(
9908                 x_from_currency    => l_array_entered_curr(i)
9909                 ,x_to_currency      => l_ledger_attrs.array_ledger_currency_code(l_array_ledger_id (i))
9910                 ,x_conversion_date  => l_array_conversion_date(i)
9911                 ,x_conversion_type  => l_array_conversion_type(i)
9912            ,x_max_roll_days    => l_ledger_attrs.array_max_roll_date(l_array_ledger_id (i)));
9913           ELSE
9914               IF (C_LEVEL_STATEMENT>= g_log_level) THEN
9915                   trace
9916                      (p_msg      => 'if block7'
9917                      ,p_level    => C_LEVEL_STATEMENT
9918                      ,p_module   => l_log_module);
9919               END IF;
9920             l_array_new_type(i) :=l_ledger_attrs.array_default_rate_type(l_array_ledger_id (i));
9921             l_array_new_rate(i):=gl_currency_api.get_closest_rate(
9922                 x_from_currency    => l_array_entered_curr(i)
9923                 ,x_to_currency      => l_ledger_attrs.array_ledger_currency_code(l_array_ledger_id (i))
9924                 ,x_conversion_date  => l_array_conversion_date(i)
9925                 ,x_conversion_type  => l_array_new_type(i)
9926            ,x_max_roll_days    => l_ledger_attrs.array_max_roll_date(l_array_ledger_id (i)));
9927           END IF;
9928         END IF;
9929       EXCEPTION
9930         WHEN gl_currency_api.NO_RATE THEN
9931           IF (C_LEVEL_EXCEPTION>= g_log_level) THEN
9932               trace
9933                  (p_msg      => 'No rate for:'
9934                  ,p_level    => C_LEVEL_EXCEPTION
9935                  ,p_module   => l_log_module);
9936               trace
9937                  (p_msg      => 'entered:'||l_array_entered_curr(i)
9938                  ,p_level    => C_LEVEL_EXCEPTION
9939                  ,p_module   => l_log_module);
9940               trace
9941                  (p_msg      => 'accounting curr:'||l_ledger_attrs.array_ledger_currency_code(l_array_ledger_id(i))
9942                  ,p_level    => C_LEVEL_EXCEPTION
9943                  ,p_module   => l_log_module);
9944               trace
9945                  (p_msg      => 'date:'||to_char(l_array_conversion_date(i))
9946                  ,p_level    => C_LEVEL_EXCEPTION
9947                  ,p_module   => l_log_module);
9948               trace
9949                  (p_msg      => 'type:'||l_array_conversion_type(i)
9950                  ,p_level    => C_LEVEL_EXCEPTION
9951                  ,p_module   => l_log_module);
9952               trace
9953                  (p_msg      => 'ledger ID:'||to_char(l_array_ledger_id (i))
9954                  ,p_level    => C_LEVEL_EXCEPTION
9955                  ,p_module   => l_log_module);
9956           END IF;
9957           l_array_new_rate(i) := null;
9958         WHEN others THEN
9959           IF (C_LEVEL_EXCEPTION>= g_log_level) THEN
9960               trace
9961                  (p_msg      => 'Exception:'
9962                  ,p_level    => C_LEVEL_EXCEPTION
9963                  ,p_module   => l_log_module);
9964               trace
9965                  (p_msg      => 'entered:'||l_array_entered_curr(i)
9966                  ,p_level    => C_LEVEL_EXCEPTION
9967                  ,p_module   => l_log_module);
9968               trace
9969                  (p_msg      => 'accounting curr:'||l_ledger_attrs.array_ledger_currency_code(l_array_ledger_id(i))
9970                  ,p_level    => C_LEVEL_EXCEPTION
9971                  ,p_module   => l_log_module);
9972               trace
9973                  (p_msg      => 'date:'||to_char(l_array_conversion_date(i))
9974                  ,p_level    => C_LEVEL_EXCEPTION
9975                  ,p_module   => l_log_module);
9976               trace
9977                  (p_msg      => 'type:'||l_array_conversion_type(i)
9978                  ,p_level    => C_LEVEL_EXCEPTION
9979                  ,p_module   => l_log_module);
9980               trace
9981                  (p_msg      => 'ledger ID:'||to_char(l_array_ledger_id (i))
9982                  ,p_level    => C_LEVEL_EXCEPTION
9983                  ,p_module   => l_log_module);
9984           END IF;
9985           RAISE;
9986       END;
9987     END LOOP;
9988 
9989     IF (C_LEVEL_STATEMENT>= g_log_level) THEN
9990       trace
9991          (p_msg      => 'ending Loop'
9992          ,p_level    => C_LEVEL_STATEMENT
9993          ,p_module   => l_log_module);
9994 
9995 /*
9996       FOR i in 1..l_array_conversion_type.COUNT LOOP
9997         trace
9998            (p_msg      => 'i:'||to_char(i)|| ' new rate:'||to_char(l_array_new_rate(i))||' type:'||l_array_new_type(i)
9999            ,p_level    => C_LEVEL_STATEMENT
10000            ,p_module   => l_log_module);
10001         trace
10002            (p_msg      => 'i:'||to_char(i)|| ' ledger id:'||to_char(l_array_ledger_id(i))||' curr:'||l_array_entered_curr(i)||' type:'|| l_array_conversion_type(i)||' date:'||to_char(l_array_conversion_date(i))
10003            ,p_level    => C_LEVEL_STATEMENT
10004            ,p_module   => l_log_module);
10005       END LOOP;
10006 */
10007 
10008     END IF;
10009     FORALL i in 1..l_array_conversion_type.COUNT
10010         UPDATE xla_ae_lines_gt xal
10011            SET currency_conversion_rate = l_array_new_rate(i)
10012               ,currency_conversion_type = l_array_new_type(i)
10013               ,currency_conversion_date = l_array_conversion_date(i)
10014               ,unrounded_accounted_cr   = unrounded_entered_cr * l_array_new_rate(i)
10015               ,unrounded_accounted_dr   = unrounded_entered_dr * l_array_new_rate(i)
10016          WHERE xal.ledger_id = l_array_ledger_id(i)
10017            AND xal.currency_code = l_array_entered_curr(i)
10018            AND xal.gain_or_loss_flag = 'N'
10019            AND xal.balance_type_code <> 'X'
10020            AND xal.calculate_acctd_amts_flag = 'Y'
10021            AND (xal.currency_conversion_type = l_array_conversion_type(i)
10022                  or (xal.currency_conversion_type is null and l_array_conversion_type(i) is null))
10023            AND l_array_conversion_date(i) =
10024                   (select TRUNC(nvl(xal.currency_conversion_date, xeg.transaction_date))
10025                      from xla_events_gt xeg
10026                     where xal.event_id = xeg.event_id)
10027            AND decode(currency_conversion_type, 'User', currency_conversion_rate, -1) = l_array_conversion_rate(i)
10028            AND nvl(xal.reversal_code,'dd') <> C_DUMMY_PRIOR
10029            ;
10030 
10031     IF (C_LEVEL_STATEMENT>= g_log_level) THEN
10032       trace
10033          (p_msg      => 'ending update'
10034          ,p_level    => C_LEVEL_STATEMENT
10035          ,p_module   => l_log_module);
10036     END IF;
10037 
10038   END LOOP;
10039   IF (C_LEVEL_STATEMENT>= g_log_level) THEN
10040       trace
10041          (p_msg      => 'ending loop outside'
10042          ,p_level    => C_LEVEL_STATEMENT
10043          ,p_module   => l_log_module);
10044   END IF;
10045 
10046   CLOSE csr_lines;
10047 
10048   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
10049       trace
10050          (p_msg      => 'Before the assignment of unrounded amount and conversion rate'
10051          ,p_level    => C_LEVEL_STATEMENT
10052          ,p_module   => l_log_module);
10053       trace
10054          (p_msg      => 'l_ledger_attrs.array_ledger_id.count:'||to_char(l_ledger_attrs.array_ledger_id.COUNT)||' loop count:'||to_char(l_max_ledger_index)
10055          ,p_level    => C_LEVEL_STATEMENT
10056          ,p_module   => l_log_module);
10057   END IF;
10058 
10059 /*
10060   FORALL i in 1..l_max_ledger_index
10061     UPDATE xla_ae_lines_gt xal
10062        SET (xal.unrounded_accounted_dr
10063            ,xal.unrounded_accounted_cr
10064            ,xal.currency_conversion_rate
10065            )
10066         =
10067      (SELECT
10068         CASE xal.currency_code
10069         WHEN l_ledger_attrs.array_ledger_currency_code(i) THEN
10070           xal.entered_dr
10071         ELSE
10072           CASE l_ledger_attrs.array_ledger_type(i)
10073           WHEN 'PRIMARY' THEN
10074             CASE calculate_acctd_amts_flag
10075             WHEN 'Y' THEN
10076               CASE xal.currency_conversion_type
10077               WHEN 'User' THEN
10078                 xal.entered_dr * xal.currency_conversion_rate
10079               ELSE
10080                 xal.entered_dr *
10081                 CASE decode( fc.derive_type,'EURO', 'EURO',
10082                      'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10083                      trunc(xah.accounting_date)) -trunc(fc.derive_effective)),
10084                    -1, 'OTHER','EMU'),'OTHER' )
10085                 WHEN 'EMU' THEN
10086                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10087                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10088                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10089                       -1, 'OTHER','EMU'),'OTHER' )
10090                   WHEN 'EMU' THEN
10091                      decode( fc1.derive_type, 'EURO', 1,
10092                   'EMU', fc1.derive_factor,'OTHER', -1 )/
10093                      decode( fc.derive_type, 'EURO', 1,
10094                   'EMU', fc.derive_factor,'OTHER', -1 )
10095                   WHEN 'EURO' THEN
10096                      1/decode( fc.derive_type, 'EURO', 1,
10097                   'EMU', fc.derive_factor,'OTHER', -1 )
10098                   ELSE ra.conversion_rate/decode( fc.derive_type, 'EURO', 1,
10099                   'EMU', fc.derive_factor,'OTHER', -1 )
10100                   END
10101                 WHEN 'EURO' THEN
10102                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10103                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10104                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10105                       -1, 'OTHER','EMU'),'OTHER' )
10106                   WHEN 'EMU' THEN
10107                      decode( fc1.derive_type, 'EURO', 1,
10108                   'EMU', fc1.derive_factor,'OTHER', -1 )
10109                   ELSE ra.conversion_rate
10110                   END
10111                 ELSE
10112                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10113                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10114                        trunc(xah.accounting_date)) - trunc(fc1.derive_effective)),
10115                       -1, 'OTHER','EMU'),'OTHER' )
10116                   WHEN 'EMU' THEN
10117                       ra.conversion_rate*decode( fc1.derive_type, 'EURO', 1,
10118                   'EMU', fc1.derive_factor,'OTHER', -1 )
10119                   ELSE ra.conversion_rate
10120                   END
10121                 END
10122               END
10123             ELSE
10124               xal.unrounded_accounted_dr
10125             END
10126           ELSE
10127             CASE xal.currency_conversion_type
10128             WHEN 'User' THEN
10129               xal.entered_dr * xal.currency_conversion_rate *
10130                 CASE decode( fc.derive_type,'EURO', 'EURO',
10131                      'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10132                      trunc(xah.accounting_date)) -trunc(fc.derive_effective)),
10133                    -1, 'OTHER','EMU'),'OTHER' )
10134                 WHEN 'EMU' THEN
10135                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10136                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10137                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10138                       -1, 'OTHER','EMU'),'OTHER' )
10139                   WHEN 'EMU' THEN
10140                      decode( fc1.derive_type, 'EURO', 1,
10141                   'EMU', fc1.derive_factor,'OTHER', -1 )/
10142                      decode( fc.derive_type, 'EURO', 1,
10143                   'EMU', fc.derive_factor,'OTHER', -1 )
10144                   WHEN 'EURO' THEN
10145                      1/decode( fc.derive_type, 'EURO', 1,
10146                   'EMU', fc.derive_factor,'OTHER', -1 )
10147                   ELSE ra.conversion_rate/decode( fc.derive_type, 'EURO', 1,
10148                   'EMU', fc.derive_factor,'OTHER', -1 )
10149                   END
10150                 WHEN 'EURO' THEN
10151                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10152                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10153                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10154                       -1, 'OTHER','EMU'),'OTHER' )
10155                   WHEN 'EMU' THEN
10156                      decode( fc1.derive_type, 'EURO', 1,
10157                   'EMU', fc1.derive_factor,'OTHER', -1 )
10158                   ELSE ra.conversion_rate
10159                   END
10160                 ELSE
10161                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10162                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10163                        trunc(xah.accounting_date)) - trunc(fc1.derive_effective)),
10164                       -1, 'OTHER','EMU'),'OTHER' )
10165                   WHEN 'EMU' THEN
10166                       ra.conversion_rate*decode( fc1.derive_type, 'EURO', 1,
10167                   'EMU', fc1.derive_factor,'OTHER', -1 )
10168                   ELSE ra.conversion_rate
10169                   END
10170                 END
10171             ELSE
10172               xal.entered_dr *
10173                 CASE decode( fc.derive_type,'EURO', 'EURO',
10174                      'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10175                      trunc(xah.accounting_date)) -trunc(fc.derive_effective)),
10176                    -1, 'OTHER','EMU'),'OTHER' )
10177                 WHEN 'EMU' THEN
10178                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10179                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10180                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10181                       -1, 'OTHER','EMU'),'OTHER' )
10182                   WHEN 'EMU' THEN
10183                      decode( fc1.derive_type, 'EURO', 1,
10184                   'EMU', fc1.derive_factor,'OTHER', -1 )/
10185                      decode( fc.derive_type, 'EURO', 1,
10186                   'EMU', fc.derive_factor,'OTHER', -1 )
10187                   WHEN 'EURO' THEN
10188                      1/decode( fc.derive_type, 'EURO', 1,
10189                   'EMU', fc.derive_factor,'OTHER', -1 )
10190                   ELSE ra.conversion_rate/decode( fc.derive_type, 'EURO', 1,
10191                   'EMU', fc.derive_factor,'OTHER', -1 )
10192                   END
10193                 WHEN 'EURO' THEN
10194                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10195                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10196                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10197                       -1, 'OTHER','EMU'),'OTHER' )
10198                   WHEN 'EMU' THEN
10199                      decode( fc1.derive_type, 'EURO', 1,
10200                   'EMU', fc1.derive_factor,'OTHER', -1 )
10201                   ELSE ra.conversion_rate
10202                   END
10203                 ELSE
10204                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10205                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10206                        trunc(xah.accounting_date)) - trunc(fc1.derive_effective)),
10207                       -1, 'OTHER','EMU'),'OTHER' )
10208                   WHEN 'EMU' THEN
10209                       ra.conversion_rate*decode( fc1.derive_type, 'EURO', 1,
10210                   'EMU', fc1.derive_factor,'OTHER', -1 )
10211                   ELSE ra.conversion_rate
10212                   END
10213                 END
10214             END
10215           END
10216         END,
10217         CASE xal.currency_code
10218         WHEN l_ledger_attrs.array_ledger_currency_code(i) THEN
10219           xal.entered_cr
10220         ELSE
10221           CASE l_ledger_attrs.array_ledger_type(i)
10222           WHEN 'PRIMARY' THEN
10223             CASE calculate_acctd_amts_flag
10224             WHEN 'Y' THEN
10225               CASE xal.currency_conversion_type
10226               WHEN 'User' THEN
10227                 xal.entered_cr * xal.currency_conversion_rate
10228               ELSE
10229                 xal.entered_cr *
10230                 CASE decode( fc.derive_type,'EURO', 'EURO',
10231                      'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10232                      trunc(xah.accounting_date)) -trunc(fc.derive_effective)),
10233                    -1, 'OTHER','EMU'),'OTHER' )
10234                 WHEN 'EMU' THEN
10235                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10236                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10237                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10238                       -1, 'OTHER','EMU'),'OTHER' )
10239                   WHEN 'EMU' THEN
10240                      decode( fc1.derive_type, 'EURO', 1,
10241                   'EMU', fc1.derive_factor,'OTHER', -1 )/
10242                      decode( fc.derive_type, 'EURO', 1,
10243                   'EMU', fc.derive_factor,'OTHER', -1 )
10244                   WHEN 'EURO' THEN
10245                      1/decode( fc.derive_type, 'EURO', 1,
10246                   'EMU', fc.derive_factor,'OTHER', -1 )
10247                   ELSE ra.conversion_rate/decode( fc.derive_type, 'EURO', 1,
10248                   'EMU', fc.derive_factor,'OTHER', -1 )
10249                   END
10250                 WHEN 'EURO' THEN
10251                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10252                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10253                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10254                       -1, 'OTHER','EMU'),'OTHER' )
10255                   WHEN 'EMU' THEN
10256                      decode( fc1.derive_type, 'EURO', 1,
10257                   'EMU', fc1.derive_factor,'OTHER', -1 )
10258                   ELSE ra.conversion_rate
10259                   END
10260                 ELSE
10261                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10262                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10263                        trunc(xah.accounting_date)) - trunc(fc1.derive_effective)),
10264                       -1, 'OTHER','EMU'),'OTHER' )
10265                   WHEN 'EMU' THEN
10266                       ra.conversion_rate*decode( fc1.derive_type, 'EURO', 1,
10267                   'EMU', fc1.derive_factor,'OTHER', -1 )
10268                   ELSE ra.conversion_rate
10269                   END
10270                 END
10271               END
10272             ELSE
10273               xal.unrounded_accounted_cr
10274             END
10275           ELSE
10276             CASE xal.currency_conversion_type
10277             WHEN 'User' THEN
10278               xal.entered_cr * xal.currency_conversion_rate *
10279                 CASE decode( fc.derive_type,'EURO', 'EURO',
10280                      'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10281                      trunc(xah.accounting_date)) -trunc(fc.derive_effective)),
10282                    -1, 'OTHER','EMU'),'OTHER' )
10283                 WHEN 'EMU' THEN
10284                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10285                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10286                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10287                       -1, 'OTHER','EMU'),'OTHER' )
10288                   WHEN 'EMU' THEN
10289                      decode( fc1.derive_type, 'EURO', 1,
10290                   'EMU', fc1.derive_factor,'OTHER', -1 )/
10291                      decode( fc.derive_type, 'EURO', 1,
10292                   'EMU', fc.derive_factor,'OTHER', -1 )
10293                   WHEN 'EURO' THEN
10294                      1/decode( fc.derive_type, 'EURO', 1,
10295                   'EMU', fc.derive_factor,'OTHER', -1 )
10296                   ELSE ra.conversion_rate/decode( fc.derive_type, 'EURO', 1,
10297                   'EMU', fc.derive_factor,'OTHER', -1 )
10298                   END
10299                 WHEN 'EURO' THEN
10300                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10301                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10302                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10303                       -1, 'OTHER','EMU'),'OTHER' )
10304                   WHEN 'EMU' THEN
10305                      decode( fc1.derive_type, 'EURO', 1,
10306                   'EMU', fc1.derive_factor,'OTHER', -1 )
10307                   ELSE ra.conversion_rate
10308                   END
10309                 ELSE
10310                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10311                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10312                        trunc(xah.accounting_date)) - trunc(fc1.derive_effective)),
10313                       -1, 'OTHER','EMU'),'OTHER' )
10314                   WHEN 'EMU' THEN
10315                       ra.conversion_rate*decode( fc1.derive_type, 'EURO', 1,
10316                   'EMU', fc1.derive_factor,'OTHER', -1 )
10317                   ELSE ra.conversion_rate
10318                   END
10319                 END
10320             ELSE
10321               xal.entered_cr *
10322                 CASE decode( fc.derive_type,'EURO', 'EURO',
10323                      'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10324                      trunc(xah.accounting_date)) -trunc(fc.derive_effective)),
10325                    -1, 'OTHER','EMU'),'OTHER' )
10326                 WHEN 'EMU' THEN
10327                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10328                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10329                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10330                       -1, 'OTHER','EMU'),'OTHER' )
10331                   WHEN 'EMU' THEN
10332                      decode( fc1.derive_type, 'EURO', 1,
10333                   'EMU', fc1.derive_factor,'OTHER', -1 )/
10334                      decode( fc.derive_type, 'EURO', 1,
10335                   'EMU', fc.derive_factor,'OTHER', -1 )
10336                   WHEN 'EURO' THEN
10337                      1/decode( fc.derive_type, 'EURO', 1,
10338                   'EMU', fc.derive_factor,'OTHER', -1 )
10339                   ELSE ra.conversion_rate/decode( fc.derive_type, 'EURO', 1,
10340                   'EMU', fc.derive_factor,'OTHER', -1 )
10341                   END
10342                 WHEN 'EURO' THEN
10343                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10344                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10345                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10346                       -1, 'OTHER','EMU'),'OTHER' )
10347                   WHEN 'EMU' THEN
10348                      decode( fc1.derive_type, 'EURO', 1,
10349                   'EMU', fc1.derive_factor,'OTHER', -1 )
10350                   ELSE ra.conversion_rate
10351                   END
10352                 ELSE
10353                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10354                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10355                        trunc(xah.accounting_date)) - trunc(fc1.derive_effective)),
10356                       -1, 'OTHER','EMU'),'OTHER' )
10357                   WHEN 'EMU' THEN
10358                       ra.conversion_rate*decode( fc1.derive_type, 'EURO', 1,
10359                   'EMU', fc1.derive_factor,'OTHER', -1 )
10360                   ELSE ra.conversion_rate
10361                   END
10362                 END
10363             END
10364           END
10365         END,
10366         CASE xal.currency_code
10367         WHEN l_ledger_attrs.array_ledger_currency_code(i) THEN
10368           null
10369         ELSE
10370           CASE l_ledger_attrs.array_ledger_type(i)
10371           WHEN 'PRIMARY' THEN
10372             CASE calculate_acctd_amts_flag
10373             WHEN 'Y' THEN
10374               CASE xal.currency_conversion_type
10375               WHEN 'User' THEN
10376                 xal.currency_conversion_rate
10377               ELSE
10378                 CASE decode( fc.derive_type,'EURO', 'EURO',
10379                      'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10380                      trunc(xah.accounting_date)) -trunc(fc.derive_effective)),
10381                    -1, 'OTHER','EMU'),'OTHER' )
10382                 WHEN 'EMU' THEN
10383                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10384                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10385                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10386                       -1, 'OTHER','EMU'),'OTHER' )
10387                   WHEN 'EMU' THEN
10388                      decode( fc1.derive_type, 'EURO', 1,
10389                   'EMU', fc1.derive_factor,'OTHER', -1 )/
10390                      decode( fc.derive_type, 'EURO', 1,
10391                   'EMU', fc.derive_factor,'OTHER', -1 )
10392                   WHEN 'EURO' THEN
10393                      1/decode( fc.derive_type, 'EURO', 1,
10394                   'EMU', fc.derive_factor,'OTHER', -1 )
10395                   ELSE ra.conversion_rate/decode( fc.derive_type, 'EURO', 1,
10396                   'EMU', fc.derive_factor,'OTHER', -1 )
10397                   END
10398                 WHEN 'EURO' THEN
10399                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10400                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10401                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10402                       -1, 'OTHER','EMU'),'OTHER' )
10403                   WHEN 'EMU' THEN
10404                      decode( fc1.derive_type, 'EURO', 1,
10405                   'EMU', fc1.derive_factor,'OTHER', -1 )
10406                   ELSE ra.conversion_rate
10407                   END
10408                 ELSE
10409                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10410                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10411                        trunc(xah.accounting_date)) - trunc(fc1.derive_effective)),
10412                       -1, 'OTHER','EMU'),'OTHER' )
10413                   WHEN 'EMU' THEN
10414                       ra.conversion_rate*decode( fc1.derive_type, 'EURO', 1,
10415                   'EMU', fc1.derive_factor,'OTHER', -1 )
10416                   ELSE ra.conversion_rate
10417                   END
10418                 END
10419               END
10420             ELSE
10421               xal.currency_conversion_rate
10422             END
10423           ELSE
10424             CASE xal.currency_conversion_type
10425             WHEN 'User' THEN
10426               xal.currency_conversion_rate *
10427                 CASE decode( fc.derive_type,'EURO', 'EURO',
10428                      'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10429                      trunc(xah.accounting_date)) -trunc(fc.derive_effective)),
10430                    -1, 'OTHER','EMU'),'OTHER' )
10431                 WHEN 'EMU' THEN
10432                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10433                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10434                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10435                       -1, 'OTHER','EMU'),'OTHER' )
10436                   WHEN 'EMU' THEN
10437                      decode( fc1.derive_type, 'EURO', 1,
10438                   'EMU', fc1.derive_factor,'OTHER', -1 )/
10439                      decode( fc.derive_type, 'EURO', 1,
10440                   'EMU', fc.derive_factor,'OTHER', -1 )
10441                   WHEN 'EURO' THEN
10442                      1/decode( fc.derive_type, 'EURO', 1,
10443                   'EMU', fc.derive_factor,'OTHER', -1 )
10444                   ELSE ra.conversion_rate/decode( fc.derive_type, 'EURO', 1,
10445                   'EMU', fc.derive_factor,'OTHER', -1 )
10446                   END
10447                 WHEN 'EURO' THEN
10448                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10449                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10450                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10451                       -1, 'OTHER','EMU'),'OTHER' )
10452                   WHEN 'EMU' THEN
10453                      decode( fc1.derive_type, 'EURO', 1,
10454                   'EMU', fc1.derive_factor,'OTHER', -1 )
10455                   ELSE ra.conversion_rate
10456                   END
10457                 ELSE
10458                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10459                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10460                        trunc(xah.accounting_date)) - trunc(fc1.derive_effective)),
10461                       -1, 'OTHER','EMU'),'OTHER' )
10462                   WHEN 'EMU' THEN
10463                       ra.conversion_rate*decode( fc1.derive_type, 'EURO', 1,
10464                   'EMU', fc1.derive_factor,'OTHER', -1 )
10465                   ELSE ra.conversion_rate
10466                   END
10467                 END
10468             ELSE
10469 
10470                 CASE decode( fc.derive_type,'EURO', 'EURO',
10471                      'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10472                      trunc(xah.accounting_date)) -trunc(fc.derive_effective)),
10473                    -1, 'OTHER','EMU'),'OTHER' )
10474                 WHEN 'EMU' THEN
10475                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10476                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10477                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10478                       -1, 'OTHER','EMU'),'OTHER' )
10479                   WHEN 'EMU' THEN
10480                      decode( fc1.derive_type, 'EURO', 1,
10481                   'EMU', fc1.derive_factor,'OTHER', -1 )/
10482                      decode( fc.derive_type, 'EURO', 1,
10483                   'EMU', fc.derive_factor,'OTHER', -1 )
10484                   WHEN 'EURO' THEN
10485                      1/decode( fc.derive_type, 'EURO', 1,
10486                   'EMU', fc.derive_factor,'OTHER', -1 )
10487                   ELSE ra.conversion_rate/decode( fc.derive_type, 'EURO', 1,
10488                   'EMU', fc.derive_factor,'OTHER', -1 )
10489                   END
10490                 WHEN 'EURO' THEN
10491                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10492                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10493                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10494                       -1, 'OTHER','EMU'),'OTHER' )
10495                   WHEN 'EMU' THEN
10496                      decode( fc1.derive_type, 'EURO', 1,
10497                   'EMU', fc1.derive_factor,'OTHER', -1 )
10498                   ELSE ra.conversion_rate
10499                   END
10500                 ELSE
10501                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10502                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10503                        trunc(xah.accounting_date)) - trunc(fc1.derive_effective)),
10504                       -1, 'OTHER','EMU'),'OTHER' )
10505                   WHEN 'EMU' THEN
10506                       ra.conversion_rate*decode( fc1.derive_type, 'EURO', 1,
10507                   'EMU', fc1.derive_factor,'OTHER', -1 )
10508                   ELSE ra.conversion_rate
10509                   END
10510                 END
10511 
10512             END
10513           END
10514         END
10515       FROM   gl_daily_rates ra
10516             ,xla_ae_headers_gt xah
10517             ,FND_CURRENCIES fc
10518             ,FND_CURRENCIES fc1
10519       WHERE  ra.conversion_date(+)=
10520                  nvl(trunc(xal.currency_conversion_date), trunc(xah.accounting_date))
10521         AND  ra.conversion_type        (+)=
10522                CASE l_ledger_attrs.array_ledger_type(i)
10523                WHEN 'PRIMARY' THEN xal.currency_conversion_type
10524                ELSE
10525                  CASE xal.currency_conversion_type
10526                  WHEN 'User' THEN l_ledger_attrs.array_default_rate_type(i)
10527                  ELSE
10528                    CASE l_ledger_attrs.array_inhert_type_flag(i)
10529                    WHEN 'Y' THEN
10530                      CASE xal.currency_code
10531                      WHEN l_primary_ledger_currency THEN
10532                        l_ledger_attrs.array_default_rate_type(i)
10533                      ELSE xal.currency_conversion_type
10534                      END
10535                    ELSE l_ledger_attrs.array_default_rate_type(i)
10536                    END
10537                  END
10538                END
10539        AND  ra.from_currency (+)=
10540                CASE decode( fc.derive_type,'EURO', 'EURO','EMU',
10541                     decode( sign(nvl(trunc(xal.currency_conversion_date),
10542                     trunc(xah.accounting_date)) - trunc(fc.derive_effective)),
10543                     -1, 'OTHER','EMU'),'OTHER' )
10544                WHEN 'EMU' THEN
10545                  CASE decode( fc1.derive_type,'EURO', 'EURO','EMU',
10546                       decode( sign(nvl(trunc(xal.currency_conversion_date),
10547                       trunc(xah.accounting_date)) - trunc(fc1.derive_effective)),
10548                       -1, 'OTHER','EMU'),'OTHER' )
10549                  WHEN 'OTHER' THEN l_euro
10550                  ELSE decode(xal.currency_conversion_type, 'User',
10551                           l_primary_ledger_currency, xal.currency_code)
10552                  END
10553                ELSE decode(xal.currency_conversion_type, 'User',
10554                           l_primary_ledger_currency, xal.currency_code)
10555                END
10556        AND    ra.to_currency (+)=
10557                CASE decode( fc.derive_type,'EURO', 'EURO','EMU',
10558                     decode( sign(nvl(trunc(xal.currency_conversion_date),
10559                     trunc(xah.accounting_date)) - trunc(fc.derive_effective)),
10560                     -1, 'OTHER','EMU'),'OTHER' )
10561                WHEN 'OTHER' THEN
10562                  CASE decode( fc1.derive_type,'EURO', 'EURO','EMU',
10563                       decode( sign(nvl(trunc(xal.currency_conversion_date),
10564                       trunc(xah.accounting_date)) - trunc(fc1.derive_effective)),
10565                       -1, 'OTHER','EMU'),'OTHER' )
10566                  WHEN 'EMU' THEN l_euro
10567                  ELSE l_ledger_attrs.array_ledger_currency_code(i)
10568                  END
10569                ELSE l_ledger_attrs.array_ledger_currency_code(i)
10570                END
10571        AND xal.ae_header_id = xah.ae_header_id
10572        AND xal.ledger_id = xah.ledger_id
10573        AND xal.balance_type_code = xah.balance_type_code
10574        AND xah.balance_type_code <> 'X'
10575           )
10576    WHERE xal.gain_or_loss_flag = 'N'
10577      AND xal.ledger_id = l_ledger_attrs.array_ledger_id(i)
10578 --     AND xal.ledger_amount is null
10579      AND xal.balance_type_code <> 'X'
10580      AND xal.reversal_code is null;
10581 */
10582 /*
10583 
10584   FORALL i in 1..l_max_ledger_index
10585     UPDATE xla_ae_lines_gt xal
10586        SET (xal.unrounded_accounted_dr
10587            ,xal.unrounded_accounted_cr
10588            ,xal.currency_conversion_rate
10589            )
10590         =
10591      (SELECT
10592         CASE xal.currency_code
10593         WHEN l_ledger_attrs.array_ledger_currency_code(i) THEN
10594           xal.entered_dr
10595         ELSE
10596           CASE l_ledger_attrs.array_ledger_type(i)
10597           WHEN 'PRIMARY' THEN
10598             CASE calculate_acctd_amts_flag
10599             WHEN 'Y' THEN
10600               CASE xal.currency_conversion_type
10601               WHEN 'User' THEN
10602                 xal.entered_dr * xal.currency_conversion_rate
10603               ELSE
10604                 xal.entered_dr * ra.conversion_rate
10605               END
10606             ELSE
10607               xal.unrounded_accounted_dr
10608             END
10609           ELSE
10610             CASE xal.currency_conversion_type
10611             WHEN 'User' THEN
10612               xal.entered_dr * xal.currency_conversion_rate * ra.conversion_rate
10613             ELSE
10614               xal.entered_dr * ra.conversion_rate
10615             END
10616           END
10617         END,
10618         CASE xal.currency_code
10619         WHEN l_ledger_attrs.array_ledger_currency_code(i) THEN
10620           xal.entered_cr
10621         ELSE
10622           CASE l_ledger_attrs.array_ledger_type(i)
10623           WHEN 'PRIMARY' THEN
10624             CASE calculate_acctd_amts_flag
10625             WHEN 'Y' THEN
10626               CASE xal.currency_conversion_type
10627               WHEN 'User' THEN
10628                 xal.entered_cr * xal.currency_conversion_rate
10629               ELSE
10630                 xal.entered_cr * ra.conversion_rate
10631               END
10632             ELSE
10633               xal.unrounded_accounted_cr
10634             END
10635           ELSE
10636             CASE xal.currency_conversion_type
10637             WHEN 'User' THEN
10638               xal.entered_cr * xal.currency_conversion_rate * ra.conversion_rate
10639             ELSE
10640               xal.entered_cr * ra.conversion_rate
10641             END
10642           END
10643         END,
10644         CASE xal.currency_code
10645         WHEN l_ledger_attrs.array_ledger_currency_code(i) THEN
10646           null
10647         ELSE
10648           CASE l_ledger_attrs.array_ledger_type(i)
10649           WHEN 'PRIMARY' THEN
10650             CASE calculate_acctd_amts_flag
10651             WHEN 'Y' THEN
10652               CASE xal.currency_conversion_type
10653               WHEN 'User' THEN
10654                 xal.currency_conversion_rate
10655               ELSE
10656                 ra.conversion_rate
10657               END
10658             ELSE
10659               xal.currency_conversion_rate
10660             END
10661           ELSE
10662             CASE xal.currency_conversion_type
10663             WHEN 'User' THEN
10664               xal.currency_conversion_rate * ra.conversion_rate
10665             ELSE
10666               ra.conversion_rate
10667             END
10668           END
10669         END
10670       FROM   gl_daily_rates ra
10671             ,xla_ae_headers_gt xah
10672       WHERE  ra.conversion_date(+)=
10673                  nvl(trunc(xal.currency_conversion_date), trunc(xah.accounting_date))
10674         AND  ra.conversion_type        (+)=
10675                CASE l_ledger_attrs.array_ledger_type(i)
10676                WHEN 'PRIMARY' THEN xal.currency_conversion_type
10677                ELSE
10678                  CASE xal.currency_conversion_type
10679                  WHEN 'User' THEN l_ledger_attrs.array_default_rate_type(i)
10680                  ELSE
10681                    CASE l_ledger_attrs.array_inhert_type_flag(i)
10682                    WHEN 'Y' THEN
10683                      CASE xal.currency_code
10684                      WHEN l_primary_ledger_currency THEN
10685                        l_ledger_attrs.array_default_rate_type(i)
10686                      ELSE xal.currency_conversion_type
10687                      END
10688                    ELSE l_ledger_attrs.array_default_rate_type(i)
10689                    END
10690                  END
10691                END
10692        AND  ra.from_currency (+)= decode(xal.currency_conversion_type, 'User',
10693                           l_primary_ledger_currency, xal.currency_code)
10694        AND    ra.to_currency (+)= l_ledger_attrs.array_ledger_currency_code(i)
10695        AND xal.ae_header_id = xah.ae_header_id
10696        AND xal.ledger_id = xah.ledger_id
10697        AND xal.balance_type_code = xah.balance_type_code
10698        AND xah.balance_type_code <> 'X'
10699           )
10700    WHERE xal.gain_or_loss_flag = 'N'
10701      AND xal.ledger_id = l_ledger_attrs.array_ledger_id(i)
10702      AND xal.balance_type_code <> 'X'
10703      AND xal.reversal_code is null;
10704 */
10705 
10706 
10707   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10708       trace
10709          (p_msg      => 'END of CalculateUnroundedAmounts'
10710          ,p_level    => C_LEVEL_PROCEDURE
10711          ,p_module   => l_log_module);
10712   END IF;
10713 
10714 Exception
10715   When OTHERS THEN
10716     IF (C_LEVEL_UNEXPECTED>= g_log_level) THEN
10717       trace
10718          (p_msg      => 'ERROR HERE:'||sqlerrm
10719          ,p_level    => C_LEVEL_UNEXPECTED
10720          ,p_module   => l_log_module);
10721     END IF;
10722 
10723     raise;
10724 
10725 END CalculateUnroundedAmounts;
10726 
10727 
10728 PROCEDURE CalculateGainLossAmounts
10729 is
10730 l_log_module         VARCHAR2(240);
10731 l_ledger_attrs       xla_accounting_cache_pkg.t_array_ledger_attrs;
10732 l_ledger_currency    xla_accounting_cache_pkg.t_array_varchar;
10733 --l_primary_ledger_id  NUMBER;
10734 l_temp               number;
10735 
10736 l_array_accounted_amount    t_array_number;
10737 l_array_entered_amount      t_array_number;
10738 l_array_currency_code       t_array_char30;
10739 l_array_balance_type_code   t_array_char1;
10740 l_array_ae_header_id        t_array_number;
10741 l_array_gain_or_loss_ref    t_array_char30;
10742 l_array_ledger_id           t_array_number;
10743 l_array_event_id            t_array_number;
10744 l_array_gain_or_loss_flag   t_array_char1;
10745 l_array_cal_g_l_flag        t_array_char1;
10746 
10747 l_res_array_ledger_id          t_array_number;
10748 l_res_array_ae_header_id       t_array_number;
10749 l_res_array_temp_line_num      t_array_number;
10750 l_res_array_ref_ae_header_id   t_array_number;
10751 l_res_array_header_num         t_array_number;
10752 l_res_array_accounted_amount   t_array_number;
10753 l_res_array_entered_amount     t_array_number;
10754 l_res_array_min_currency_code  t_array_char30;
10755 l_res_array_max_currency_code  t_array_char30;
10756 l_res_array_extract_line_num   t_array_number;
10757 
10758 CURSOR csr_gain_loss_amts IS
10759    SELECT ledger_id
10760          ,ae_header_id
10761       FROM XLA_AE_LINES_GT xal2
10762      WHERE nvl(xal2.gain_or_loss_flag, 'N') = 'Y'
10763        AND xal2.balance_type_code          <> 'X'
10764        AND xal2.calculate_g_l_amts_flag    = 'Y'
10765        AND xal2.reversal_code              IS NULL
10766     GROUP BY ledger_id, ae_header_id;
10767    /*  old code
10768  SELECT nvl(sum(xal2.unrounded_accounted_dr), 0)
10769                     - nvl(sum(xal2.unrounded_accounted_cr), 0)
10770           ,min(xal2.currency_code)
10771           ,max(xal2.currency_code)
10772           ,min(xal2.extract_line_num)
10773           ,ledger_id
10774           ,ae_header_id
10775           ,balance_type_code
10776           ,gain_or_loss_ref
10777           ,event_id
10778     FROM XLA_AE_LINES_GT xal2
10779     WHERE nvl(xal2.gain_or_loss_flag, 'N') = 'N'
10780       AND xal2.balance_type_code               <> 'X'
10781       AND xal2.reversal_code               is NULL
10782    HAVING nvl(sum(xal2.unrounded_accounted_dr), 0) <> nvl(sum(xal2.unrounded_accounted_cr), 0)  -- 5745199
10783  GROUP BY ledger_id, ae_header_id, balance_type_code, gain_or_loss_ref, event_id;
10784  */
10785 
10786 BEGIN
10787   IF g_log_enabled THEN
10788       l_log_module := C_DEFAULT_MODULE||'.CalculateGainLossAmounts';
10789   END IF;
10790 
10791   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10792       trace
10793          (p_msg      => 'BEGIN of CalculateGainLossAmounts'
10794          ,p_level    => C_LEVEL_PROCEDURE
10795          ,p_module   => l_log_module);
10796   END IF;
10797 
10798 /*
10799   xla_accounting_cache_pkg.GetLedgerArray(l_ledger_attrs);
10800   For i in 1..l_ledger_attrs.array_ledger_id.COUNT LOOP
10801     l_ledger_currency(l_ledger_attrs.array_ledger_id(i)) := l_ledger_attrs.array_ledger_currency_code(i);
10802   END LOOP;
10803 */
10804   OPEN csr_gain_loss_amts;
10805   LOOP
10806     FETCH csr_gain_loss_amts BULK COLLECT INTO
10807                                               l_array_ledger_id
10808                                              ,l_array_ae_header_id
10809     LIMIT C_BULK_LIMIT;
10810     IF (C_LEVEL_STATEMENT >= g_log_level) THEN
10811       trace
10812            (p_module => l_log_module
10813            ,p_msg => 'Count of lines =' || l_array_ae_header_id.COUNT
10814            ,p_level => C_LEVEL_STATEMENT
10815            );
10816     END IF;
10817 
10818     IF l_array_ae_header_id.COUNT = 0 THEN
10819       EXIT;
10820     END IF;
10821 
10822      FORALL Idx IN 1 .. l_array_ae_header_id.COUNT
10823       UPDATE /*+ index(xal XLA_AE_LINES_GT_N3)*/ xla_ae_lines_gt xal  -- 6658161
10824      SET (xal.unrounded_accounted_cr
10825          , xal.unrounded_entered_cr
10826          , xal.unrounded_accounted_dr
10827          , xal.unrounded_entered_dr
10828             ,xal.currency_code
10829             ,xal.balance_type_code
10830          ) =
10831             (SELECT /*+ index(xal2 XLA_AE_LINES_GT_N4)*/  -- 6658161,6727907
10832                   case sign(nvl(sum(xal2.unrounded_accounted_dr), 0)
10833                     - nvl(sum(xal2.unrounded_accounted_cr), 0))
10834                   when -1 then null
10835                   else nvl(sum(xal2.unrounded_accounted_dr), 0)
10836                                - nvl(sum(xal2.unrounded_accounted_cr), 0)
10837                   end
10838                   , case sign(nvl(sum(xal2.unrounded_accounted_dr), 0)
10839                     - nvl(sum(xal2.unrounded_accounted_cr), 0))
10840                   when -1 then null
10841                   else 0
10842                   end
10843                   , case sign(nvl(sum(xal2.unrounded_accounted_dr), 0)
10844                     - nvl(sum(xal2.unrounded_accounted_cr), 0))
10845                   when -1 then
10846                      nvl(sum(xal2.unrounded_accounted_cr), 0)
10847                      - nvl(sum(xal2.unrounded_accounted_dr), 0)
10848                   else null
10849                   end
10850                   , case sign(nvl(sum(xal2.unrounded_accounted_dr), 0)
10851                     - nvl(sum(xal2.unrounded_accounted_cr), 0))
10852                   when -1 then 0
10853                   else null
10854                   end
10855                  ,case
10856           when xal.currency_code = min(xal2.currency_code)
10857           then max(xal2.currency_code)
10858           else min(xal2.currency_code)
10859           end
10860                  ,case
10861                   when nvl(sum(xal2.unrounded_accounted_dr), 0)
10862                           - nvl(sum(xal2.unrounded_accounted_cr), 0) = 0
10863                   THEN 'X'
10864                   ELSE
10865                     CASE
10866                     WHEN xal.extract_line_num = min(xal2.extract_line_num)
10867                     then xal.balance_type_code
10868                     else 'X'
10869                     END
10870                   END
10871                FROM xla_ae_lines_gt xal2
10872               WHERE xal2.ae_header_id = xal.ae_header_id
10873                 AND xal2.balance_type_code = xal.balance_type_code
10874                 AND xal2.gain_or_loss_ref = xal.gain_or_loss_ref
10875                 AND xal2.ledger_id = xal.ledger_id
10876                 AND xal2.event_id = xal.event_id
10877                 AND nvl(xal2.gain_or_loss_flag, 'N') = 'N'
10878                 AND xal2.balance_type_code <> 'X'
10879                 AND xal2.reversal_code IS NULL)
10880    WHERE nvl(xal.gain_or_loss_flag, 'N') = 'Y'
10881      AND balance_type_code <> 'X'
10882      AND xal.calculate_g_l_amts_flag = 'Y'
10883      AND xal.reversal_code  is NULL
10884      AND xal.ae_header_id = l_array_ae_header_id(Idx)
10885      AND xal.ledger_id = l_array_ledger_id(Idx);
10886 
10887         /* old code
10888          UPDATE xla_ae_lines_gt xal
10889          SET xal.unrounded_accounted_cr =
10890                      CASE sign(l_res_array_accounted_amount(Idx))
10891                      WHEN -1 THEN NULL
10892                      ELSE l_res_array_accounted_amount(Idx)
10893                      END
10894             ,xal.unrounded_entered_cr =
10895                      CASE sign(l_res_array_accounted_amount(Idx))
10896                      WHEN -1 THEN NULL
10897                      ELSE 0
10898                      END
10899             ,xal.unrounded_accounted_dr =
10900                      CASE sign(l_res_array_accounted_amount(Idx))
10901                      WHEN -1 THEN 0-l_res_array_accounted_amount(Idx)
10902                      ELSE NULL
10903                      END
10904             ,xal.unrounded_entered_dr =
10905                      CASE sign(l_res_array_accounted_amount(Idx))
10906                      WHEN -1 THEN 0
10907                      ELSE NULL
10908                      END
10909             ,xal.currency_code =
10910                      DECODE (l_res_array_min_currency_code(Idx),
10911                                xal.currency_code,
10912                                l_res_array_max_currency_code(Idx),
10913                                l_res_array_min_currency_code(Idx))
10914             ,xal.balance_type_code = decode(l_res_array_accounted_amount(Idx), 0, 'X',
10915                                         decode(xal.extract_line_num,
10916                                                l_res_array_extract_line_num(Idx),
10917                                                xal.balance_type_code,
10918                                                'X'))
10919      WHERE nvl(xal.gain_or_loss_flag, 'N') = 'Y'
10920        AND balance_type_code               <> 'X'
10921        AND xal.calculate_g_l_amts_flag     = 'Y'
10922        AND xal.reversal_code               is NULL
10923        AND xal.ae_header_id                = l_array_ae_header_id(Idx)
10924        AND xal.balance_type_code           = l_array_balance_type_code(Idx)
10925        AND xal.gain_or_loss_ref            = l_array_gain_or_loss_ref(Idx)
10926        AND xal.ledger_id                   = l_array_ledger_id(Idx)
10927        AND (xal.currency_code               <> l_res_array_min_currency_code(Idx)
10928             OR xal.currency_code           <> l_res_array_max_currency_code(Idx))
10929        AND xal.event_id                    = l_array_event_id(Idx);
10930       */
10931   END LOOP;
10932   CLOSE csr_gain_loss_amts;
10933 
10934   IF (g_num_bflow_prior_entries > 0) THEN
10935     UPDATE /*+ index(xal2 XLA_AE_LINES_GT_N3)*/ xla_ae_lines_gt xal
10936        SET xal.currency_code =
10937             (SELECT /*+ index(xal2 XLA_AE_LINES_GT_N4)*/  max(currency_code)
10938                FROM xla_ae_lines_gt xal2
10939               WHERE xal2.ae_header_id = xal.ae_header_id
10940                 AND xal2.balance_type_code <> 'X'
10941                 AND xal2.gain_or_loss_ref = xal.gain_or_loss_ref
10942                 AND xal2.ledger_id = xal.ledger_id
10943                 AND xal2.event_id = xal.event_id
10944                 AND nvl(xal2.gain_or_loss_flag, 'N') = 'N'
10945                 AND xal2.reversal_code = C_DUMMY_PRIOR)
10946      WHERE xal.gain_or_loss_flag = 'Y'
10947        AND balance_type_code <> 'X'
10948        AND xal.calculate_g_l_amts_flag = 'Y'
10949        AND xal.reversal_code  is NULL
10950        and (xal.ae_header_id, balance_type_code, gain_or_loss_ref, ledger_id, event_id)
10951            in
10952            (select /*+ index(xal2 XLA_AE_LINES_GT_N4)*/ ae_header_id, balance_type_code, gain_or_loss_ref, ledger_id, event_id
10953               from xla_ae_lines_gt xal3
10954               where xal3.ae_header_id = xal.ae_header_id
10955                 AND xal3.balance_type_code <> 'X'
10956                 AND xal3.gain_or_loss_ref = xal.gain_or_loss_ref
10957                 AND xal3.ledger_id = xal.ledger_id
10958                 AND xal3.event_id = xal.event_id
10959                 AND nvl(xal3.gain_or_loss_flag, 'N') = 'N'
10960                 and xal3.reversal_code = C_DUMMY_PRIOR);
10961   END IF;
10962 
10963 
10964 
10965 
10966 /*
10967   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10968       trace
10969          (p_msg      => 'Before update...'
10970          ,p_level    => C_LEVEL_PROCEDURE
10971          ,p_module   => l_log_module);
10972   END IF;
10973 
10974   UPDATE xla_ae_lines_gt xal
10975      --SET xal.temp_line_num = 0 -- It casues XLA_AE_LINES_GT_U1 violation when
10976                                  -- there are 2 extract lines and g/l is on
10977      SET balance_type_code = 'X'
10978    WHERE xal.gain_or_loss_flag = 'Y'
10979      AND nvl(xal.unrounded_accounted_cr, 0) = 0
10980      AND xal.reversal_code  is NULL;
10981 */
10982 
10983   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10984       trace
10985          (p_msg      => 'END of CalculateGainLossAmounts'
10986          ,p_level    => C_LEVEL_PROCEDURE
10987          ,p_module   => l_log_module);
10988   END IF;
10989 Exception
10990   When OTHERS THEN
10991     raise;
10992 
10993 END CalculateGainLossAmounts;
10994 
10995 
10996 /*======================================================================+
10997 |                                                                       |
10998 | Public Procedure- Business Flow Validaton - 4219869                   |
10999 |                                                                       |
11000 |                                                                       |
11001 +======================================================================*/
11002 PROCEDURE Business_Flow_Validation
11003        (p_business_method_code         IN VARCHAR2
11004        ,p_business_class_code          IN VARCHAR2
11005        ,p_inherit_description_flag     IN VARCHAR2) IS
11006 
11007    l_log_module         VARCHAR2(240);
11008    l_ledger_ccy         VARCHAR2(30);
11009 BEGIN
11010    IF g_log_enabled THEN
11011       l_log_module := C_DEFAULT_MODULE||'.Business_Flow_Validation';
11012    END IF;
11013 --
11014    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11015       trace
11016            (p_msg      => 'BEGIN of Business_Flow_Validation'
11017            ,p_level    => C_LEVEL_PROCEDURE
11018            ,p_module   => l_log_module);
11019    END IF;
11020 
11021    g_rec_lines.array_business_method_code(g_LineNumber) := p_business_method_code;
11022  --g_rec_lines.array_business_class_code(g_LineNumber)  := p_business_class_code;  -- 4336173 move to xla_cmp_acct_line_type_pkg.C_ALT_BODY
11023    g_rec_lines.array_inherit_desc_flag(g_LineNumber)    := p_inherit_description_flag;
11024 
11025    IF p_inherit_description_flag = 'Y' THEN
11026       g_rec_lines.array_description(g_LineNumber) := NULL;
11027    END IF;
11028 
11029    IF p_business_method_code = C_METHOD_PRIOR THEN
11030 
11031       ------------------------------------------------
11032       -- Validate the applied-to accounting attributes
11033       ------------------------------------------------
11034       ValidateBFlowLinks;
11035 
11036       -------------------------------------------------
11037       -- Reset values for certain fields in g_rec_lines
11038       -------------------------------------------------
11039       /* 4482069  This will be set in xla_cmp_acct_line_type_pkg.GetAccountingSources
11040       l_ledger_ccy := xla_accounting_cache_pkg.GetValueChar(
11041                            p_source_code =>       'XLA_CURRENCY_CODE'
11042                           ,p_target_ledger_id=>   g_rec_lines.array_ledger_id(g_LineNumber));
11043       g_rec_lines.array_currency_code(g_LineNumber)         := l_ledger_ccy;
11044       */
11045 
11046       --g_rec_lines.array_currency_mau(g_LineNumber)          := xla_accounting_cache_pkg.GetCurrencyMau(l_ledger_ccy);
11047       g_rec_lines.array_curr_conversion_date(g_LineNumber)  := NULL;
11048       g_rec_lines.array_curr_conversion_rate(g_LineNumber)  := NULL;
11049       g_rec_lines.array_curr_conversion_type(g_LineNumber)  := NULL;
11050       g_rec_lines.array_party_type_code(g_LineNumber)       := NULL;
11051       g_rec_lines.array_party_id(g_LineNumber)              := NULL;
11052       g_rec_lines.array_party_site_id(g_LineNumber)         := NULL;
11053       g_rec_lines.array_encumbrance_type_id(g_LineNumber)   := NULL;
11054 
11055       ----------------------------------
11056       -- Set reversal code to DUMMY_BFPE
11057       ----------------------------------
11058       g_rec_lines.array_reversal_code(g_LineNumber) := C_DUMMY_PRIOR;
11059 
11060       ------------------------------------------------------
11061       -- Increment number of business flow prior entry lines
11062       ------------------------------------------------------
11063       g_num_bflow_prior_entries := g_num_bflow_prior_entries + 1;
11064 
11065    ELSIF p_business_method_code = C_METHOD_SAME THEN
11066 
11067       ----------------------------------
11068       -- Set reversal code to DUMMY_BFSE
11069       ----------------------------------
11070       g_rec_lines.array_reversal_code(g_LineNumber) := C_DUMMY_SAME;
11071 
11072       -----------------------------------------------------
11073       -- Increment number of business flow same entry lines
11074       -----------------------------------------------------
11075       g_num_bflow_same_entries := g_num_bflow_same_entries + 1;
11076 
11077    END IF;
11078 
11079 
11080    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11081       trace
11082            (p_msg      => 'END of Business_Flow_Validation'
11083            ,p_level    => C_LEVEL_PROCEDURE
11084            ,p_module   => l_log_module);
11085    END IF;
11086 
11087 EXCEPTION
11088 --
11089 WHEN xla_exceptions_pkg.application_exception THEN
11090    RAISE;
11091 WHEN OTHERS  THEN
11092    xla_exceptions_pkg.raise_message
11093                (p_location => 'xla_ae_lines_pkg.Business_Flow_Validation');
11094   --
11095 END Business_Flow_Validation;
11096 
11097 
11098 /*======================================================================+
11099 |                                                                       |
11100 | Public Procedure- Business Flow Prior Entry - 4219869                 |
11101 |                                                                       |
11102 |                                                                       |
11103 +======================================================================*/
11104 PROCEDURE BusinessFlowPriorEntries
11105 (p_accounting_mode      IN VARCHAR2
11106 ,p_ledger_id            IN NUMBER
11107 ,p_bc_mode              IN VARCHAR2)
11108 IS
11109 
11110    --------------------------------------------------------------------------------
11111    --  5357406 - prior entry performance fix
11112    l_array_row_id                            XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11113    l_array_ccid                              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11114    l_array_description                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_V4000L;
11115    l_array_currency_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V15L;
11116    l_array_curr_conversion_rate              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11117    l_array_curr_conversion_type              XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11118    l_array_curr_conversion_date              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
11119    l_array_currency_mau                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11120    l_array_unrounded_entered_cr              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11121    l_array_unrounded_entered_dr              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11122    l_array_party_type_code                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_V1L;
11123    l_array_party_id                          XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11124    l_array_party_site_id                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11125    l_array_encumbrance_type_id               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Int;
11126    l_array_ccid_status_code                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11127    l_array_ref_event_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11128    l_array_temp_ref_ae_header_id             XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11129    l_array_ref_ae_line_num                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11130    l_array_ref_temp_line_num                 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11131    l_array_bflow_pe_status_code              XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11132    l_array_pe_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11133 
11134    CURSOR c_bflow_ae_lines IS
11135    SELECT gt.ROW_ID
11136                ,gt.code_combination_id
11137                ,gt.description
11138                ,gt.currency_code
11139                ,gt.currency_conversion_rate
11140                ,gt.currency_conversion_type
11141                ,gt.currency_conversion_date
11142                ,gt.entered_currency_mau
11143                ,gt.unrounded_entered_cr
11144                ,gt.unrounded_entered_dr
11145                ,gt.party_type_code
11146                ,gt.party_id
11147                ,gt.party_site_id
11148                ,gt.encumbrance_type_id
11149                ,gt.code_combination_status_code
11150                ,gt.ref_event_id
11151                ,gt.temp_ref_ae_header_id
11152                ,gt.ref_ae_line_num
11153                ,gt.ref_temp_line_num
11154                ,gt.bflow_prior_entry_status_code
11155                ,gt.applied_to_entity_id
11156    FROM (SELECT /*+Leading(xalg xte xah xdl) use_nl(xalg xte xah xdl) */
11157                xalg.ROWID                                                                       ROW_ID
11158                , RANK() OVER ( PARTITION BY xalg.ROWID
11159                                ORDER BY xdl.ae_header_id desc, xdl.ae_line_num ASC  )             line_rank
11160                ,(NVL(xal.merge_code_combination_id,xal.code_combination_id))                    code_combination_id
11161                ,(DECODE(xalg.inherit_desc_flag, 'Y', xal.description, xalg.description))         description
11162                ,(xal.currency_code)                                                              currency_code
11163                ,(DECODE(xal.currency_code
11164                       ,xla_accounting_cache_pkg.GetValueChar('XLA_CURRENCY_CODE',xalg.ledger_id)
11165                       ,NULL
11166                       ,xal.currency_conversion_rate))                                            currency_conversion_rate
11167                ,(DECODE(xal.currency_code
11168                       ,xla_accounting_cache_pkg.GetValueChar('XLA_CURRENCY_CODE',xalg.ledger_id)
11169                       ,NULL
11170                       ,xal.currency_conversion_type))                                            currency_conversion_type
11171                ,(DECODE(xal.currency_code
11172                       ,xla_accounting_cache_pkg.GetValueChar('XLA_CURRENCY_CODE',xalg.ledger_id)
11173                       ,NULL
11174                       ,xal.currency_conversion_date))                                            currency_conversion_date
11175                ,(xla_accounting_cache_pkg.GetCurrencyMau(xal.currency_code))                     entered_currency_mau
11176                ,(DECODE(xdl.calculate_acctd_amts_flag
11177                       ,'N', DECODE(xalg.currency_code
11178                                  ,xla_accounting_cache_pkg.GetValueChar('XLA_CURRENCY_CODE',xalg.ledger_id)
11179                                  ,NVL(xalg.unrounded_accounted_cr,xalg.unrounded_entered_cr)
11180                                  ,xalg.unrounded_entered_cr)
11181                      ,xalg.unrounded_entered_cr)  )                                               unrounded_entered_cr
11182                ,(DECODE(xdl.calculate_acctd_amts_flag
11183                      ,'N', DECODE(xalg.currency_code
11184                                  ,xla_accounting_cache_pkg.GetValueChar('XLA_CURRENCY_CODE',xalg.ledger_id)
11185                                  ,NVL(xalg.unrounded_accounted_dr,xalg.unrounded_entered_dr)
11186                                  ,xalg.unrounded_entered_dr)
11187                      ,xalg.unrounded_entered_dr))                                               unrounded_entered_dr
11188                ,(xal.party_type_code)                                                          party_type_code
11189                ,(NVL(xal.merge_party_id,xal.party_id))                                        party_id
11190                ,(NVL(xal.merge_party_site_id,xal.party_site_id))                              party_site_id
11191                ,(xal.encumbrance_type_id)                                                      encumbrance_type_id
11192                ,C_CREATED                                                                       code_combination_status_code
11193                ,(xdl.event_id)                                                                 ref_event_id
11194                ,(xdl.ae_header_id)                                                             temp_ref_ae_header_id
11195                ,(xal.ae_line_num)                                                              ref_ae_line_num
11196                ,(xdl.temp_line_num)                                                            ref_temp_line_num
11197                ,(DECODE(xalg.currency_code,xal.currency_code,xah.accounting_entry_status_code,
11198                         DECODE(xalg.bflow_applied_to_amount, NULL, 'X', xah.accounting_entry_status_code))) bflow_prior_entry_status_code
11199                ,(xah.entity_id)                                                                applied_to_entity_id
11200            FROM   xla_ae_lines_gt          xalg
11201                  ,xla_transaction_entities xte
11202                  ,xla_ae_headers    xah
11203                  ,xla_distribution_links   xdl
11204                  ,xla_ae_lines      xal
11205 --               ,xla_ledger_relationships_v  xlr
11206 --               ,xla_gl_ledgers_v            xgl
11207 --               ,xla_ledger_options          xlo
11208            WHERE  xah.application_id               = xdl.application_id
11209            AND    xah.ae_header_id                 = xdl.ae_header_id
11210            AND    xal.application_id               = xdl.application_id
11211            AND    xal.ae_header_id                 = xdl.ae_header_id
11212            AND    xal.ae_line_num                  = xdl.ae_line_num
11213            AND    xal.business_class_code          = xalg.business_class_code
11214            AND    xdl.source_distribution_type     = xalg.bflow_distribution_type
11215            AND    xdl.source_distribution_id_num_1   = NVL(xalg.bflow_dist_id_num_1,-99)
11216            AND    NVL(xdl.source_distribution_id_num_2,-99)   = NVL(xalg.bflow_dist_id_num_2,-99)
11217            AND    NVL(xdl.source_distribution_id_num_3,-99)   = NVL(xalg.bflow_dist_id_num_3,-99)
11218            AND    NVL(xdl.source_distribution_id_num_4,-99)   = NVL(xalg.bflow_dist_id_num_4,-99)
11219            AND    NVL(xdl.source_distribution_id_num_5,-99)   = NVL(xalg.bflow_dist_id_num_5,-99)
11220            AND    NVL(xdl.source_distribution_id_char_1,' ') = NVL(xalg.bflow_dist_id_char_1,' ')
11221            AND    NVL(xdl.source_distribution_id_char_2,' ') = NVL(xalg.bflow_dist_id_char_2,' ')
11222            AND    NVL(xdl.source_distribution_id_char_3,' ') = NVL(xalg.bflow_dist_id_char_3,' ')
11223            AND    NVL(xdl.source_distribution_id_char_4,' ') = NVL(xalg.bflow_dist_id_char_4,' ')
11224            AND    NVL(xdl.source_distribution_id_char_5,' ') = NVL(xalg.bflow_dist_id_char_5,' ')
11225            AND    xah.parent_ae_header_id IS NULL
11226            --
11227            -- exclude reversed entries
11228            -- When running in BC mode, draft reversal entries are not considered
11229        -- ignore exclude reversal for AP.6647974/6614418
11230            AND NOT EXISTS (SELECT /*+ no_unnest */  1
11231                              FROM xla_distribution_links xdl4
11232                                 , xla_ae_headers xah4
11233                             WHERE xdl4.ref_ae_header_id = xdl.ae_header_id
11234                               AND xdl4.application_id   = xdl.application_id
11235                               AND xdl4.temp_line_num    = xdl.temp_line_num * -1
11236                               AND xah4.application_id   = xdl4.application_id
11237                               AND xah4.ae_header_id     = xdl4.ae_header_id
11238                   AND xah4.application_id <> 200
11239                   AND xdl4.application_id <> 200
11240                               AND (xah4.accounting_entry_status_code = 'F' OR
11241                                    (xah4.accounting_entry_status_code = 'D' AND
11242                                     p_accounting_mode = 'D' AND
11243                                     p_bc_mode = 'NONE')))
11244            AND    xdl.application_id       = xalg.bflow_application_id
11245            --
11246 --         AND    xgl.ledger_id          = xalg.ledger_id
11247 --         AND    xlr.ledger_id          = xgl.ledger_id
11248            AND    xte.application_id     = xalg.bflow_application_id
11249            AND    xte.entity_code        = xalg.bflow_entity_code
11250            AND    xte.ledger_id          = p_ledger_id
11251 --         AND    xte.ledger_id          = DECODE(xla_accounting_cache_pkg.GetValueChar('VALUATION_METHOD_FLAG'),
11252 --                                                        'N', xlr.primary_ledger_id,
11253 --                                                        DECODE(xlr.ledger_category_code
11254 --                                                              ,'ALC', xlr.primary_ledger_id
11255 --                                                              ,DECODE(NVL(xlo.capture_event_flag,'N'),'N',xlr.primary_ledger_id
11256 --                                                              ,xlr.ledger_id)))  -- 5204178 requires secondary ledger event
11257 --         AND    xlo.ledger_id (+)      = xgl.ledger_id
11258 --         AND    xlo.application_id (+) = g_application_id
11259            --
11260            AND    NVL(xte.source_id_int_1,-99)   = NVL(xalg.bflow_source_id_num_1,-99)
11261            AND    NVL(xte.source_id_int_2,-99)   = NVL(xalg.bflow_source_id_num_2,-99)
11262            AND    NVL(xte.source_id_int_3,-99)   = NVL(xalg.bflow_source_id_num_3,-99)
11263            AND    NVL(xte.source_id_int_4,-99)   = NVL(xalg.bflow_source_id_num_4,-99)
11264            AND    NVL(xte.source_id_char_1,' ') = NVL(xalg.bflow_source_id_char_1,' ')
11265            AND    NVL(xte.source_id_char_2,' ') = NVL(xalg.bflow_source_id_char_2,' ')
11266            AND    NVL(xte.source_id_char_3,' ') = NVL(xalg.bflow_source_id_char_3,' ')
11267            AND    NVL(xte.source_id_char_4,' ') = NVL(xalg.bflow_source_id_char_4,' ')
11268            --
11269            AND    xah.application_id              = xte.application_id
11270            AND    xah.ledger_id                   = xalg.ledger_id
11271            AND    xah.entity_id                   = xte.entity_id
11272            AND    xah.balance_type_code           = xalg.balance_type_code
11273            --
11274            AND    xdl.event_id                    = xah.event_id
11275            --
11276            AND    xah.accounting_entry_status_code  IN ('F', DECODE(p_bc_mode,'NONE',p_accounting_mode,'F'))
11277            AND    xalg.reversal_code = C_DUMMY_PRIOR
11278           ) gt
11279    WHERE   gt.line_rank = 1;
11280    --------------------------------------------------------------------------------
11281 
11282    CURSOR c_bflow_valid_lines IS
11283    SELECT ae_header_id,
11284           event_id,
11285           ledger_id,
11286           balance_type_code,
11287           temp_line_num
11288      FROM xla_ae_lines_gt
11289     WHERE reversal_code = C_DUMMY_PRIOR
11290       AND bflow_prior_entry_status_code IS NOT NULL AND bflow_prior_entry_status_code <> 'X';  -- 5132302  if applied to amt is null
11291       --AND (bflow_prior_entry_status_code IN ('F', DECODE(p_accounting_mode, 'D', 'D', 'F')));
11292 
11293    l_array_line_num                       xla_cmp_source_pkg.t_array_Num;
11294 
11295 
11296    CURSOR c_bflow_err_lines IS
11297      SELECT ae_header_id
11298          ,xal.temp_line_num
11299          ,xal.event_id
11300          ,xal.ledger_id
11301          ,xal.bflow_prior_entry_status_code
11302          ,xal.balance_type_code
11303          ,xal.entity_id
11304          ,fav.application_name
11305      ,'N'
11306      ,gl.ledger_category_code
11307      ,glp.start_date
11308 
11309      FROM xla_ae_lines_gt xal,
11310           fnd_application_vl fav,
11311       gl_ledgers gl,
11312       gl_period_statuses glp
11313     WHERE ((reversal_code = C_DUMMY_PRIOR
11314       AND  (bflow_prior_entry_status_code IS NULL OR NVL(bflow_prior_entry_status_code,'N') = 'X'))  -- 5132302
11315       OR  reversal_code = C_MPA_PRIOR_ENTRY)      -- 4655713b
11316       AND fav.application_id(+)  = xal.bflow_application_id
11317       AND xal.ledger_id = gl.ledger_id
11318       AND glp.period_name = gl.first_ledger_period_name
11319       AND glp.ledger_id = gl.ledger_id
11320       AND glp.application_id = 101;
11321 
11322 
11323    l_log_module         VARCHAR2(240);
11324    l_array_ae_header_id                   xla_cmp_source_pkg.t_array_Num;
11325    l_array_event_id                       xla_cmp_source_pkg.t_array_Num;
11326    l_array_ledger_id                      xla_cmp_source_pkg.t_array_Num;
11327    l_array_bflow_prior_status             xla_cmp_source_pkg.t_array_VL30;
11328    l_array_balance_type_code              xla_cmp_source_pkg.t_array_VL30;
11329    l_array_entity_id                      xla_cmp_source_pkg.t_array_Num;
11330    l_array_app_name                       xla_cmp_source_pkg.t_array_VL240;
11331    l_array_hist_bflow_err                 xla_cmp_source_pkg.t_array_Num;
11332 
11333 -- 4655713b MPA and Accrual Reversal
11334 l_array_mpa_segment1                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11335 l_array_mpa_segment2                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11336 l_array_mpa_segment3                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11337 l_array_mpa_segment4                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11338 l_array_mpa_segment5                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11339 l_array_mpa_segment6                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11340 l_array_mpa_segment7                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11341 l_array_mpa_segment8                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11342 l_array_mpa_segment9                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11343 l_array_mpa_segment10                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11344 l_array_mpa_segment11                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11345 l_array_mpa_segment12                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11346 l_array_mpa_segment13                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11347 l_array_mpa_segment14                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11348 l_array_mpa_segment15                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11349 l_array_mpa_segment16                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11350 l_array_mpa_segment17                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11351 l_array_mpa_segment18                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11352 l_array_mpa_segment19                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11353 l_array_mpa_segment20                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11354 l_array_mpa_segment21                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11355 l_array_mpa_segment22                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11356 l_array_mpa_segment23                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11357 l_array_mpa_segment24                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11358 l_array_mpa_segment25                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11359 l_array_mpa_segment26                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11360 l_array_mpa_segment27                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11361 l_array_mpa_segment28                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11362 l_array_mpa_segment29                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11363 l_array_mpa_segment30                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11364 l_array_mpa_ccid                         XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11365 l_array_mpa_ccid_status_code             XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11366 l_array_mpa_description                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_V4000L;
11367 l_array_mpa_currency_code                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V15L;
11368 l_array_mpa_currency_code_pe             XLA_AE_JOURNAL_ENTRY_PKG.t_array_V15L;  -- 5132302
11369 l_array_mpa_curr_conv_rate               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11370 l_array_mpa_curr_conv_type               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11371 l_array_mpa_curr_conv_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
11372 l_array_mpa_currency_mau                 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11373 l_array_mpa_party_type_code              XLA_AE_JOURNAL_ENTRY_PKG.t_array_V1L;
11374 l_array_mpa_party_id                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11375 l_array_mpa_party_site_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11376 l_array_mpa_encum_type_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Int;
11377 l_array_mpa_acct_cr_ratio                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11378 l_array_mpa_acct_dr_ratio                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11379 l_array_mpa_ledger_id                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
11380 l_array_mpa_ref_ae_header_id             XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
11381 l_array_mpa_temp_line_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
11382 l_array_mpa_ae_header_id                 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
11383 l_array_mpa_header_num                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
11384 l_array_acc_rev_flag                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V1L;  -- join conditions
11385 
11386 -- Historic upgrade
11387 l_array_ledger_category                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11388 l_array_period_start_date                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
11389 l_array_bflow_historic                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11390 l_primary_start_date                     DATE;
11391 l_hist_count                             NUMBER :=0;
11392 
11393 BEGIN
11394    IF g_log_enabled THEN
11395       l_log_module := C_DEFAULT_MODULE||'.BusinessFlowPriorEntries';
11396    END IF;
11397 --
11398    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11399       trace
11400            (p_msg      => 'BEGIN of BusinessFlowPriorEntries'
11401            ,p_level    => C_LEVEL_PROCEDURE
11402            ,p_module   => l_log_module);
11403       trace
11404            (p_msg      => 'p_accounting_mode = '||p_accounting_mode
11405            ,p_level    => C_LEVEL_PROCEDURE
11406            ,p_module   => l_log_module);
11407       trace
11408            (p_msg      => 'p_bc_mode = '||p_bc_mode
11409            ,p_level    => C_LEVEL_PROCEDURE
11410            ,p_module   => l_log_module);
11411       trace
11412            (p_msg      => 'method = '||xla_accounting_cache_pkg.GetValueChar('VALUATION_METHOD_FLAG')
11413            ,p_level    => C_LEVEL_PROCEDURE
11414            ,p_module   => l_log_module);
11415       trace
11416            (p_msg      => 'g_mpa_accrual_exists = '||xla_accounting_pkg.g_mpa_accrual_exists
11417            ,p_level    => C_LEVEL_PROCEDURE
11418            ,p_module   => l_log_module);
11419    END IF;
11420 
11421    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11422        trace
11423            (p_msg      => 'g_num_bflow_prior_entries = '||g_num_bflow_prior_entries
11424             ,p_level    => C_LEVEL_STATEMENT
11425             ,p_module   => l_log_module);
11426    END IF;
11427 
11428 
11429    IF (g_num_bflow_prior_entries > 0) THEN
11430 
11431      --
11432      -- Update DUMMY_BFPE rows based on upstream journal lines in XLA_AE_LINES
11433      --
11434 
11435      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11436 
11437        FOR c IN c_bflow_ae_lines LOOP
11438             trace
11439                (p_msg      => 'ae_header='||c.temp_ref_ae_header_id||
11440                               ' ae_line='||c.ref_ae_line_num
11441                ,p_level    => C_LEVEL_EVENT
11442                ,p_module   => l_log_module);
11443        END LOOP;
11444 
11445        FOR l IN (SELECT * FROM xla_ae_lines_gt WHERE reversal_code = C_DUMMY_PRIOR) LOOP
11446          trace(p_msg      => 'event_id='||l.event_id||
11447                              ' ae_header_id='||l.ae_header_id
11448               ,p_level    => C_LEVEL_STATEMENT
11449               ,p_module   => l_log_module);
11450          trace(p_msg    => ' business_class_code='||l.business_class_code||
11451                            ' bflow_application_id='||l.bflow_application_id||
11452                            ' ledger_id='||l.ledger_id||
11453                            ' bflow_entity_code='||l.bflow_entity_code||
11454                            ' balance_type_code='||l.balance_type_code||
11455                            ' bflow_applied_to_amt='||l.bflow_applied_to_amount||  -- 5132302
11456                            ' currency_code='||l.currency_code||                   -- 5132302
11457                            ' source_distribution_type='||l.source_distribution_type||
11458                            ' bflow_distribution_type='||l.bflow_distribution_type
11459               ,p_level  => C_LEVEL_STATEMENT
11460               ,p_module => l_log_module);
11461          trace (p_msg   => ' bflow_dist_id_num_1='||l.bflow_dist_id_num_1||
11462                            ' bflow_dist_id_num_2='||l.bflow_dist_id_num_2||
11463                            ' bflow_dist_id_num_3='||l.bflow_dist_id_num_3||
11464                            ' bflow_dist_id_num_4='||l.bflow_dist_id_num_4||
11465                            ' bflow_dist_id_num_5='||l.bflow_dist_id_num_5||
11466                            ' bflow_dist_id_char_1='||l.bflow_dist_id_char_1||
11467                            ' bflow_dist_id_char_2='||l.bflow_dist_id_char_2||
11468                            ' bflow_dist_id_char_3='||l.bflow_dist_id_char_3||
11469                            ' bflow_dist_id_char_4='||l.bflow_dist_id_char_4||
11470                            ' bflow_dist_id_char_5='||l.bflow_dist_id_char_5||
11471                ' override_acctd_amt_flag='||l.override_acctd_amt_flag
11472               ,p_level  => C_LEVEL_STATEMENT
11473               ,p_module => l_log_module);
11474          trace
11475            (p_msg       => ' bflow_source_id_num_1='||l.bflow_source_id_num_1||
11476                            ' bflow_source_id_num_2='||l.bflow_source_id_num_2||
11477                            ' bflow_source_id_num_3='||l.bflow_source_id_num_3||
11478                            ' bflow_source_id_num_4='||l.bflow_source_id_num_4||
11479                            ' bflow_source_id_char_1='||l.bflow_source_id_char_1||
11480                            ' bflow_source_id_char_2='||l.bflow_source_id_char_2||
11481                            ' bflow_source_id_char_3='||l.bflow_source_id_char_3||
11482                            ' bflow_source_id_char_4='||l.bflow_source_id_char_4
11483               ,p_level  => C_LEVEL_STATEMENT
11484               ,p_module => l_log_module);
11485        END LOOP;
11486      END IF;
11487 
11488      ----------------------------------------------------------------
11489      --  5357406 - prior entry performance fix
11490      OPEN c_bflow_ae_lines;
11491 
11492      LOOP FETCH c_bflow_ae_lines BULK COLLECT INTO
11493         l_array_row_id
11494        ,l_array_ccid
11495        ,l_array_description
11496        ,l_array_currency_code
11497        ,l_array_curr_conversion_rate
11498        ,l_array_curr_conversion_type
11499        ,l_array_curr_conversion_date
11500        ,l_array_currency_mau
11501        ,l_array_unrounded_entered_cr
11502        ,l_array_unrounded_entered_dr
11503        ,l_array_party_type_code
11504        ,l_array_party_id
11505        ,l_array_party_site_id
11506        ,l_array_encumbrance_type_id
11507        ,l_array_ccid_status_code
11508        ,l_array_ref_event_id
11509        ,l_array_temp_ref_ae_header_id
11510        ,l_array_ref_ae_line_num
11511        ,l_array_ref_temp_line_num
11512        ,l_array_bflow_pe_status_code
11513        ,l_array_pe_entity_id
11514      LIMIT C_BULK_LIMIT;
11515 
11516      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11517         trace
11518            (p_module => l_log_module
11519            ,p_msg => 'Count of prior entry =' || l_array_row_id.COUNT
11520            ,p_level => C_LEVEL_STATEMENT
11521            );
11522      END IF;
11523 
11524      IF l_array_row_id.COUNT = 0 THEN
11525           EXIT;
11526      END IF;
11527 
11528      FORALL i IN 1..l_array_row_id.LAST
11529           UPDATE xla_ae_lines_gt
11530           SET  code_combination_id = l_array_ccid (i)
11531               ,description         = l_array_description (i)
11532               ,temp_currency_code  = l_array_currency_code (i)     -- upstream currency code
11533               ,currency_conversion_rate = l_array_curr_conversion_rate (i)
11534               ,currency_conversion_type = l_array_curr_conversion_type (i)
11535               ,currency_conversion_date = TRUNC(l_array_curr_conversion_date (i))
11536               ,entered_currency_mau     = l_array_currency_mau (i)
11537               ,unrounded_entered_cr     = l_array_unrounded_entered_cr (i)
11538               ,unrounded_entered_dr     = l_array_unrounded_entered_dr (i)
11539               ,party_type_code          = l_array_party_type_code (i)
11540               ,party_id                 = l_array_party_id (i)
11541               ,party_site_id            = l_array_party_site_id (i)
11542               ,encumbrance_type_id      = l_array_encumbrance_type_id (i)
11543               ,code_combination_status_code = l_array_ccid_status_code (i)
11544               ,ref_event_id             = l_array_ref_event_id (i)
11545               ,temp_ref_ae_header_id    = l_array_temp_ref_ae_header_id (i)
11546               ,ref_ae_line_num          = l_array_ref_ae_line_num (i)
11547               ,ref_temp_line_num        = l_array_ref_temp_line_num (i)
11548               ,bflow_prior_entry_status_code = l_array_bflow_pe_status_code (i)
11549               ,applied_to_entity_id     = l_array_pe_entity_id (i)
11550           WHERE rowid = l_array_row_id (i);
11551      END LOOP;
11552      CLOSE c_bflow_ae_lines;
11553      ----------------------------------------------------------------
11554 
11555      ----------------------------------------------------------------
11556      /*  performance bug 5357406
11557      UPDATE xla_ae_lines_gt xalg
11558       SET (code_combination_id
11559           ,description
11560           ,temp_currency_code       -- upstream currency code
11561           ,currency_conversion_rate
11562           ,currency_conversion_type
11563           ,currency_conversion_date
11564           ,entered_currency_mau      -- 4482069
11565           ,unrounded_entered_cr      -- 4482069
11566           ,unrounded_entered_dr      -- 4482069
11567           ,party_type_code
11568           ,party_id
11569           ,party_site_id
11570           ,encumbrance_type_id
11571           ,code_combination_status_code
11572           ,ref_event_id
11573           ,temp_ref_ae_header_id
11574           ,ref_ae_line_num
11575           ,ref_temp_line_num
11576           ,bflow_prior_entry_status_code
11577           ,applied_to_entity_id
11578          ) =
11579         (SELECT MIN(NVL(xal3.merge_code_combination_id,xal3.code_combination_id))     -- 4967526
11580                ,MIN(DECODE(xalg.inherit_desc_flag, 'Y', xal3.description, xalg.description))
11581                ,MIN(xal3.currency_code)
11582                ,MIN(DECODE(xal3.currency_code
11583                       ,xla_accounting_cache_pkg.GetValueChar('XLA_CURRENCY_CODE',xalg.ledger_id)
11584                       ,NULL
11585                       ,xal3.currency_conversion_rate))
11586                ,MIN(DECODE(xal3.currency_code
11587                       ,xla_accounting_cache_pkg.GetValueChar('XLA_CURRENCY_CODE',xalg.ledger_id)
11588                       ,NULL
11589                       ,xal3.currency_conversion_type))
11590                ,MIN(DECODE(xal3.currency_code
11591                       ,xla_accounting_cache_pkg.GetValueChar('XLA_CURRENCY_CODE',xalg.ledger_id)
11592                       ,NULL
11593                       ,xal3.currency_conversion_date))
11594                ---------------------------------------------------------------------------
11595                -- 4482069 error XLA_AP_INVALID_AMT_BASE
11596                -- Occurs when upstream is invalid so c_bflow_valid_lines
11597                -- is not found hence entered amounts will not calc.
11598                -- Upstream invalid need not prevent this value to be assigned.
11599                ---------------------------------------------------------------------------
11600                ,MIN(xla_accounting_cache_pkg.GetCurrencyMau(xal3.currency_code))
11601                ---------------------------------------------------------------------------
11602                -- 4482069 based on calculate_acctd_amts_flag and transaction currency
11603                -- Note: In theory, when calculate_acctd_amts_flag is 'No', entered and
11604                --       accounted amt should be the same (therefore we need not recalc
11605                --       accounted amt.) But just in case, perform the following copy to
11606                --       make sure they will be the same.
11607                ---------------------------------------------------------------------------
11608                ,MIN(DECODE(calculate_acctd_amts_flag
11609                       ,'N', DECODE(xalg.currency_code
11610                                  ,xla_accounting_cache_pkg.GetValueChar('XLA_CURRENCY_CODE',xalg.ledger_id)
11611                                  ,NVL(xalg.unrounded_accounted_cr,xalg.unrounded_entered_cr)
11612                                  ,xalg.unrounded_entered_cr)
11613                      ,xalg.unrounded_entered_cr)  )
11614                ---------------------------------------------------------------------------
11615                -- 4482069 based on calculate_acctd_amts_flag and transaction currency
11616                ---------------------------------------------------------------------------
11617                ,MIN(DECODE(calculate_acctd_amts_flag
11618                      ,'N', DECODE(xalg.currency_code
11619                                  ,xla_accounting_cache_pkg.GetValueChar('XLA_CURRENCY_CODE',xalg.ledger_id)
11620                                  ,NVL(xalg.unrounded_accounted_dr,xalg.unrounded_entered_dr)
11621                                  ,xalg.unrounded_entered_dr)
11622                      ,xalg.unrounded_entered_dr))
11623               ,MIN(xal3.party_type_code)
11624               ,MIN(NVL(xal3.merge_party_id,xal3.party_id))             -- 4967526
11625               ,MIN(NVL(xal3.merge_party_site_id,xal3.party_site_id))   -- 4967526
11626               ,MIN(xal3.encumbrance_type_id)
11627               ,C_CREATED
11628               ,MIN(xdl3.event_id)
11629               ,MIN(xdl3.ae_header_id)
11630               ,MIN(xal3.ae_line_num)
11631               ,MIN(xdl3.temp_line_num)
11632             --,MIN(xah3.accounting_entry_status_code)
11633               ,MIN(DECODE(xalg.currency_code,xal3.currency_code,xah3.accounting_entry_status_code,                            -- 5132302
11634                                              DECODE(xalg.bflow_applied_to_amount, NULL, 'X', xah3.accounting_entry_status_code))) -- 5132302
11635               ,MIN(xah3.entity_id)
11636           FROM xla_ae_lines xal3
11637              , xla_ae_headers xah3
11638              , xla_distribution_links xdl3
11639          WHERE xah3.application_id               = xdl3.application_id
11640            AND xah3.ae_header_id                 = xdl3.ae_header_id
11641            AND xal3.application_id               = xdl3.application_id
11642            AND xal3.ae_header_id                 = xdl3.ae_header_id
11643            AND xal3.ae_line_num                  = xdl3.ae_line_num
11644            AND xal3.business_class_code          = xalg.business_class_code -- 4336173
11645            AND xdl3.source_distribution_type     = xalg.bflow_distribution_type
11646            AND NVL(xdl3.source_distribution_id_num_1,C_NUM)   = NVL(xalg.bflow_dist_id_num_1,C_NUM)
11647            AND NVL(xdl3.source_distribution_id_num_2,C_NUM)   = NVL(xalg.bflow_dist_id_num_2,C_NUM)
11648            AND NVL(xdl3.source_distribution_id_num_3,C_NUM)   = NVL(xalg.bflow_dist_id_num_3,C_NUM)
11649            AND NVL(xdl3.source_distribution_id_num_4,C_NUM)   = NVL(xalg.bflow_dist_id_num_4,C_NUM)
11650            AND NVL(xdl3.source_distribution_id_num_5,C_NUM)   = NVL(xalg.bflow_dist_id_num_5,C_NUM)
11651            AND NVL(xdl3.source_distribution_id_char_1,C_CHAR) = NVL(xalg.bflow_dist_id_char_1,C_CHAR)
11652            AND NVL(xdl3.source_distribution_id_char_2,C_CHAR) = NVL(xalg.bflow_dist_id_char_2,C_CHAR)
11653            AND NVL(xdl3.source_distribution_id_char_3,C_CHAR) = NVL(xalg.bflow_dist_id_char_3,C_CHAR)
11654            AND NVL(xdl3.source_distribution_id_char_4,C_CHAR) = NVL(xalg.bflow_dist_id_char_4,C_CHAR)
11655            AND NVL(xdl3.source_distribution_id_char_5,C_CHAR) = NVL(xalg.bflow_dist_id_char_5,C_CHAR)
11656            AND xah3.parent_ae_header_id IS NULL -- 4655713b  MPA/Accrual Reversal lines cannot be used as prior entries
11657            -- exclude reversed entries
11658            AND NOT EXISTS (SELECT 1
11659                              FROM xla_distribution_links xdl4
11660                                 , xla_ae_headers xah4
11661                             WHERE xdl4.ref_ae_header_id = xdl3.ae_header_id
11662                               AND xdl4.temp_line_num    = xdl3.temp_line_num * -1
11663                               AND xah4.application_id   = xdl4.application_id
11664                               AND xah4.ae_header_id     = xdl4.ae_header_id
11665                               AND (xah4.accounting_entry_status_code = 'F' OR
11666                                    (xah4.accounting_entry_status_code = 'D' AND
11667                                     p_accounting_mode = 'D' AND
11668                                     p_bc_mode = 'NONE')))
11669            AND xdl3.application_id       = xalg.bflow_application_id
11670            AND xdl3.ae_header_id =
11671         (SELECT MAX(xdl.ae_header_id)
11672           FROM xla_transaction_entities xte
11673              , xla_ae_headers           xah
11674              , xla_distribution_links   xdl
11675              , xla_ae_lines             xal
11676              , xla_ledger_relationships_v  xlr   -- 4478604
11677              , xla_gl_ledgers_v            xgl   -- 4478604
11678              , xla_ledger_options   xlo  -- 5204178
11679          WHERE xgl.ledger_id            = xalg.ledger_id -- 4478604
11680            AND xlr.ledger_id            = xgl.ledger_id -- 4478604
11681            AND xte.application_id       = xalg.bflow_application_id
11682            AND xte.entity_code          = xalg.bflow_entity_code
11683            AND xte.ledger_id            = DECODE(xla_accounting_cache_pkg.GetValueChar('VALUATION_METHOD_FLAG'),
11684                                                   'N', xlr.primary_ledger_id,
11685                                                   DECODE(xlr.ledger_category_code
11686                                                         ,'ALC', xlr.primary_ledger_id
11687                                                         ,DECODE(NVL(xlo.capture_event_flag,'N'),'N',xlr.primary_ledger_id
11688                                                         ,xlr.ledger_id)))  -- 5204178 requires secondary ledger event
11689             AND  xlo.ledger_id (+)      = xgl.ledger_id
11690             AND  xlo.application_id (+) = g_application_id
11691             --
11692             AND NVL(xte.source_id_int_1,C_NUM)   = NVL(xalg.bflow_source_id_num_1,C_NUM)
11693             AND NVL(xte.source_id_int_2,C_NUM)   = NVL(xalg.bflow_source_id_num_2,C_NUM)
11694             AND NVL(xte.source_id_int_3,C_NUM)   = NVL(xalg.bflow_source_id_num_3,C_NUM)
11695             AND NVL(xte.source_id_int_4,C_NUM)   = NVL(xalg.bflow_source_id_num_4,C_NUM)
11696             AND NVL(xte.source_id_char_1,C_CHAR) = NVL(xalg.bflow_source_id_char_1,C_CHAR)
11697             AND NVL(xte.source_id_char_2,C_CHAR) = NVL(xalg.bflow_source_id_char_2,C_CHAR)
11698             AND NVL(xte.source_id_char_3,C_CHAR) = NVL(xalg.bflow_source_id_char_3,C_CHAR)
11699             AND NVL(xte.source_id_char_4,C_CHAR) = NVL(xalg.bflow_source_id_char_4,C_CHAR)
11700             --
11701             AND xah.application_id               = xte.application_id
11702             AND xah.ledger_id                    = xalg.ledger_id
11703             AND xah.entity_id                    = xte.entity_id
11704             AND xah.balance_type_code            = xalg.balance_type_code
11705             --
11706             AND xdl.application_id               = xah.application_id
11707             AND xdl.event_id                     = xah.event_id
11708             AND xdl.ae_header_id                 = xah.ae_header_id
11709             AND xdl.source_distribution_type     = xalg.bflow_distribution_type
11710             AND NVL(xdl.source_distribution_id_num_1,C_NUM)   = NVL(xalg.bflow_dist_id_num_1,C_NUM)
11711             AND NVL(xdl.source_distribution_id_num_2,C_NUM)   = NVL(xalg.bflow_dist_id_num_2,C_NUM)
11712             AND NVL(xdl.source_distribution_id_num_3,C_NUM)   = NVL(xalg.bflow_dist_id_num_3,C_NUM)
11713             AND NVL(xdl.source_distribution_id_num_4,C_NUM)   = NVL(xalg.bflow_dist_id_num_4,C_NUM)
11714             AND NVL(xdl.source_distribution_id_num_5,C_NUM)   = NVL(xalg.bflow_dist_id_num_5,C_NUM)
11715             AND NVL(xdl.source_distribution_id_char_1,C_CHAR) = NVL(xalg.bflow_dist_id_char_1,C_CHAR)
11716             AND NVL(xdl.source_distribution_id_char_2,C_CHAR) = NVL(xalg.bflow_dist_id_char_2,C_CHAR)
11717             AND NVL(xdl.source_distribution_id_char_3,C_CHAR) = NVL(xalg.bflow_dist_id_char_3,C_CHAR)
11718             AND NVL(xdl.source_distribution_id_char_4,C_CHAR) = NVL(xalg.bflow_dist_id_char_4,C_CHAR)
11719             AND NVL(xdl.source_distribution_id_char_5,C_CHAR) = NVL(xalg.bflow_dist_id_char_5,C_CHAR)
11720             --
11721             AND xal.business_class_code           = xalg.business_class_code -- 4336173
11722             AND xal.application_id                = xdl.application_id
11723             AND xal.ae_header_id                  = xdl.ae_header_id
11724             AND xal.ae_line_num                   = xdl.ae_line_num
11725             -- bug 4946123 - limit the status of the prior entry
11726             -- Final entries are always considered
11727             -- If running in BC mode, draft is not considered
11728             -- Otherwise, draft is considered only if running in draft mode
11729             AND xah.accounting_entry_status_code  IN ('F', DECODE(p_bc_mode,'NONE',p_accounting_mode,'F'))
11730             -- exclude reversed entries
11731             -- When running in BC mode, draft reversal entries are not considered
11732             AND NOT EXISTS (SELECT 1
11733                               FROM xla_distribution_links xdl2
11734                                  , xla_ae_headers xah2
11735                              WHERE xdl2.ref_ae_header_id = xdl.ae_header_id
11736                                AND xdl2.temp_line_num    = xdl.temp_line_num * -1
11737                                AND xah2.application_id   = xdl2.application_id
11738                                AND xah2.ae_header_id     = xdl2.ae_header_id
11739                                AND (xah2.accounting_entry_status_code = 'F' OR
11740                                     (xah2.accounting_entry_status_code = 'D' AND
11741                                      p_accounting_mode = 'D' AND
11742                                      p_bc_mode = 'NONE')))
11743             ))
11744       WHERE xalg.reversal_code = C_DUMMY_PRIOR;
11745       */
11746 
11747       -------------------------------------------------------------------------
11748       -- Update the ref_ae_header_id of the line where the prior entry is found
11749       -------------------------------------------------------------------------
11750       OPEN c_bflow_valid_lines;
11751       FETCH c_bflow_valid_lines BULK COLLECT INTO  l_array_ae_header_id
11752                                                   ,l_array_event_id
11753                                                   ,l_array_ledger_id
11754                                                   ,l_array_balance_type_code
11755                                                   ,l_array_line_num;
11756       CLOSE c_bflow_valid_lines;
11757 
11758       IF (C_LEVEL_EVENT >= g_log_level) THEN
11759          trace
11760            (p_msg      => '# bflow valid lines = '||l_array_balance_type_code.COUNT
11761            ,p_level    => C_LEVEL_EVENT
11762            ,p_module   => l_log_module);
11763       END IF;
11764 
11765       IF (l_array_balance_type_code.COUNT > 0) THEN
11766         FORALL i IN 1..l_array_balance_type_code.COUNT
11767            UPDATE /*+ index(xalg xla_ae_lines_gt_n4) */  xla_ae_lines_gt xalg   -- 6990256
11768               SET ref_ae_header_id  = temp_ref_ae_header_id,
11769                   currency_code     = temp_currency_code,
11770                   reversal_code     = null,                -- 5499367
11771                  (unrounded_entered_cr         -- 5132302
11772                  ,unrounded_entered_dr         -- 5132302
11773                  ,unrounded_accounted_cr
11774                  ,unrounded_accounted_dr) =
11775                  ----------------------------------------------------------------------------------------------------------
11776                  -- Modified for bug 4482069
11777                  -- Normally, business flow should be setup between different sides.  So just in case, we first try
11778                  -- to use the amount from the opposite side.  And if it is null, take amount from same side.
11779                  --
11780                  -- Modify for bug 4656703
11781                  -- Modify for bug 4873615 - Handle the 'divided by zero' error
11782                  --
11783                  -- Modify for bug 5132302 - calculate accounted amt from applied_to_amt if currencies are different
11784                  ----------------------------------------------------------------------------------------------------------
11785                  (SELECT  DECODE(xalg.currency_code,xalg.temp_currency_code, xalg.unrounded_entered_cr,
11786                                       DECODE(xalg.unrounded_entered_cr,NULL,NULL,NVL(xalg.bflow_applied_to_amount,xalg.unrounded_entered_cr)))
11787                          ,DECODE(xalg.currency_code,xalg.temp_currency_code, xalg.unrounded_entered_dr,
11788                                       DECODE(xalg.unrounded_entered_dr,NULL,NULL,NVL(xalg.bflow_applied_to_amount,xalg.unrounded_entered_dr)))
11789                          ,DECODE(xalg.override_acctd_amt_flag,'Y'
11790                      ,xalg.unrounded_accounted_cr,
11791                                 (DECODE (xal.unrounded_accounted_dr,NULL
11792                                 ,CASE WHEN xal.unrounded_entered_cr <> 0
11793                                       THEN DECODE(xalg.currency_code,xalg.temp_currency_code,
11794                                            (xal.unrounded_accounted_cr/xal.unrounded_entered_cr)*xalg.unrounded_entered_cr,
11795                                            (xal.unrounded_accounted_cr/xal.unrounded_entered_cr)* DECODE(xalg.unrounded_entered_cr,NULL,NULL,
11796                                                                                  NVL(xalg.bflow_applied_to_amount,xalg.unrounded_entered_cr)))
11797                                       ELSE xalg.unrounded_entered_cr END
11798                                 ,CASE WHEN xal.unrounded_entered_dr <> 0
11799                                       THEN DECODE(xalg.currency_code,xalg.temp_currency_code,
11800                                            (xal.unrounded_accounted_dr/xal.unrounded_entered_dr)*xalg.unrounded_entered_cr,
11801                                            (xal.unrounded_accounted_dr/xal.unrounded_entered_dr)* DECODE(xalg.unrounded_entered_cr,NULL,NULL,
11802                                                                                  NVL(xalg.bflow_applied_to_amount,xalg.unrounded_entered_cr)))
11803                                       ELSE xalg.unrounded_entered_cr END))
11804                                  )
11805 
11806                          ,DECODE(xalg.override_acctd_amt_flag,'Y'
11807                      ,xalg.unrounded_accounted_dr,
11808                                 (DECODE (xal.unrounded_accounted_cr,NULL
11809                                 ,CASE WHEN xal.unrounded_entered_dr <> 0
11810                                       THEN DECODE(xalg.currency_code,xalg.temp_currency_code,
11811                                            (xal.unrounded_accounted_dr/xal.unrounded_entered_dr)*xalg.unrounded_entered_dr,
11812                                            (xal.unrounded_accounted_dr/xal.unrounded_entered_dr)* DECODE(xalg.unrounded_entered_dr,NULL,NULL,
11813                                                                                  NVL(xalg.bflow_applied_to_amount,xalg.unrounded_entered_dr)))
11814                                       ELSE xalg.unrounded_entered_dr END
11815                                 ,CASE WHEN xal.unrounded_entered_cr <> 0
11816                                       THEN DECODE(xalg.currency_code,xalg.temp_currency_code,
11817                                            (xal.unrounded_accounted_cr/xal.unrounded_entered_cr)*xalg.unrounded_entered_dr,
11818                                            (xal.unrounded_accounted_cr/xal.unrounded_entered_cr)* DECODE(xalg.unrounded_entered_dr,NULL,NULL,
11819                                                                                  NVL(xalg.bflow_applied_to_amount,xalg.unrounded_entered_dr)))
11820                                       ELSE xalg.unrounded_entered_dr END))
11821                                  )
11822 
11823                      FROM xla_ae_lines xal
11824                     WHERE xal.application_id              = xalg.bflow_application_id
11825                       AND xal.ae_header_id                = xalg.temp_ref_ae_header_id
11826                       AND xal.ae_line_num                 = xalg.ref_ae_line_num),
11827                   entered_currency_mau = xla_accounting_cache_pkg.GetCurrencyMau(temp_currency_code),
11828                   (segment1,  segment2,  segment3,  segment4,  segment5,  segment6,  segment7,  segment8,  segment9,  segment10
11829                   ,segment11, segment12, segment13, segment14, segment15, segment16, segment17, segment18, segment19, segment20
11830                   ,segment21, segment22, segment23, segment24, segment25, segment26, segment27, segment28, segment29, segment30) =
11831                   (SELECT gcc.segment1,  gcc.segment2,  gcc.segment3,  gcc.segment4,  gcc.segment5
11832                          ,gcc.segment6,  gcc.segment7,  gcc.segment8,  gcc.segment9,  gcc.segment10
11833                          ,gcc.segment11, gcc.segment12, gcc.segment13, gcc.segment14, gcc.segment15
11834                          ,gcc.segment16, gcc.segment17, gcc.segment18, gcc.segment19, gcc.segment20
11835                          ,gcc.segment21, gcc.segment22, gcc.segment23, gcc.segment24, gcc.segment25
11836                          ,gcc.segment26, gcc.segment27, gcc.segment28, gcc.segment29, gcc.segment30
11837                      FROM gl_code_combinations gcc
11838                     WHERE gcc.code_combination_id = xalg.code_combination_id),
11839                          (anc_id_1,  anc_id_2,  anc_id_3,  anc_id_4,  anc_id_5
11840                          ,anc_id_6,  anc_id_7,  anc_id_8,  anc_id_9,  anc_id_10
11841                          ,anc_id_11, anc_id_12, anc_id_13, anc_id_14, anc_id_15
11842                          ,anc_id_16, anc_id_17, anc_id_18, anc_id_19, anc_id_20
11843                          ,anc_id_21, anc_id_22, anc_id_23, anc_id_24, anc_id_25
11844                          ,anc_id_26, anc_id_27, anc_id_28, anc_id_29, anc_id_30
11845                          ,anc_id_31, anc_id_32, anc_id_33, anc_id_34, anc_id_35
11846                          ,anc_id_36, anc_id_37, anc_id_38, anc_id_39, anc_id_40
11847                          ,anc_id_41, anc_id_42, anc_id_43, anc_id_44, anc_id_45
11848                          ,anc_id_46, anc_id_47, anc_id_48, anc_id_49, anc_id_50
11849                          ,anc_id_51, anc_id_52, anc_id_53, anc_id_54, anc_id_55
11850                          ,anc_id_56, anc_id_57, anc_id_58, anc_id_59, anc_id_60
11851                          ,anc_id_61, anc_id_62, anc_id_63, anc_id_64, anc_id_65
11852                          ,anc_id_66, anc_id_67, anc_id_68, anc_id_69, anc_id_70
11853                          ,anc_id_71, anc_id_72, anc_id_73, anc_id_74, anc_id_75
11854                          ,anc_id_76, anc_id_77, anc_id_78, anc_id_79, anc_id_80
11855                          ,anc_id_81, anc_id_82, anc_id_83, anc_id_84, anc_id_85
11856                          ,anc_id_86, anc_id_87, anc_id_88, anc_id_89, anc_id_90
11857                          ,anc_id_91, anc_id_92, anc_id_93, anc_id_94, anc_id_95
11858                          ,anc_id_96, anc_id_97, anc_id_98, anc_id_99, anc_id_100) =
11859                  (SELECT
11860                           MAX(DECODE(rank,1,anc_id))   ,MAX(DECODE(rank,2,anc_id))
11861                          ,MAX(DECODE(rank,3,anc_id))   ,MAX(DECODE(rank,4,anc_id))
11862                          ,MAX(DECODE(rank,5,anc_id))   ,MAX(DECODE(rank,6,anc_id))
11863                          ,MAX(DECODE(rank,7,anc_id))   ,MAX(DECODE(rank,8,anc_id))
11864                          ,MAX(DECODE(rank,9,anc_id))   ,MAX(DECODE(rank,10,anc_id))
11865                          ,MAX(DECODE(rank,11,anc_id))  ,MAX(DECODE(rank,12,anc_id))
11866                          ,MAX(DECODE(rank,13,anc_id))  ,MAX(DECODE(rank,14,anc_id))
11867                          ,MAX(DECODE(rank,15,anc_id))  ,MAX(DECODE(rank,16,anc_id))
11868                          ,MAX(DECODE(rank,17,anc_id))  ,MAX(DECODE(rank,18,anc_id))
11869                          ,MAX(DECODE(rank,19,anc_id))  ,MAX(DECODE(rank,20,anc_id))
11870                          ,MAX(DECODE(rank,21,anc_id))  ,MAX(DECODE(rank,22,anc_id))
11871                          ,MAX(DECODE(rank,23,anc_id))  ,MAX(DECODE(rank,24,anc_id))
11872                          ,MAX(DECODE(rank,25,anc_id))  ,MAX(DECODE(rank,26,anc_id))
11873                          ,MAX(DECODE(rank,27,anc_id))  ,MAX(DECODE(rank,28,anc_id))
11874                          ,MAX(DECODE(rank,29,anc_id))  ,MAX(DECODE(rank,30,anc_id))
11875                          ,MAX(DECODE(rank,31,anc_id))  ,MAX(DECODE(rank,32,anc_id))
11876                          ,MAX(DECODE(rank,33,anc_id))  ,MAX(DECODE(rank,34,anc_id))
11877                          ,MAX(DECODE(rank,35,anc_id))  ,MAX(DECODE(rank,36,anc_id))
11878                          ,MAX(DECODE(rank,37,anc_id))  ,MAX(DECODE(rank,38,anc_id))
11879                          ,MAX(DECODE(rank,39,anc_id))  ,MAX(DECODE(rank,40,anc_id))
11880                          ,MAX(DECODE(rank,41,anc_id))  ,MAX(DECODE(rank,42,anc_id))
11881                          ,MAX(DECODE(rank,43,anc_id))  ,MAX(DECODE(rank,44,anc_id))
11882                          ,MAX(DECODE(rank,45,anc_id))  ,MAX(DECODE(rank,46,anc_id))
11883                          ,MAX(DECODE(rank,47,anc_id))  ,MAX(DECODE(rank,48,anc_id))
11884                          ,MAX(DECODE(rank,49,anc_id))  ,MAX(DECODE(rank,50,anc_id))
11885                          ,MAX(DECODE(rank,51,anc_id))  ,MAX(DECODE(rank,52,anc_id))
11886                          ,MAX(DECODE(rank,53,anc_id))  ,MAX(DECODE(rank,54,anc_id))
11887                          ,MAX(DECODE(rank,55,anc_id))  ,MAX(DECODE(rank,56,anc_id))
11888                          ,MAX(DECODE(rank,57,anc_id))  ,MAX(DECODE(rank,58,anc_id))
11889                          ,MAX(DECODE(rank,59,anc_id))  ,MAX(DECODE(rank,60,anc_id))
11890                          ,MAX(DECODE(rank,61,anc_id))  ,MAX(DECODE(rank,62,anc_id))
11891                          ,MAX(DECODE(rank,63,anc_id))  ,MAX(DECODE(rank,64,anc_id))
11892                          ,MAX(DECODE(rank,65,anc_id))  ,MAX(DECODE(rank,66,anc_id))
11893                          ,MAX(DECODE(rank,67,anc_id))  ,MAX(DECODE(rank,68,anc_id))
11894                          ,MAX(DECODE(rank,69,anc_id))  ,MAX(DECODE(rank,70,anc_id))
11895                          ,MAX(DECODE(rank,71,anc_id))  ,MAX(DECODE(rank,72,anc_id))
11896                          ,MAX(DECODE(rank,73,anc_id))  ,MAX(DECODE(rank,74,anc_id))
11897                          ,MAX(DECODE(rank,75,anc_id))  ,MAX(DECODE(rank,76,anc_id))
11898                          ,MAX(DECODE(rank,77,anc_id))  ,MAX(DECODE(rank,78,anc_id))
11899                          ,MAX(DECODE(rank,79,anc_id))  ,MAX(DECODE(rank,80,anc_id))
11900                          ,MAX(DECODE(rank,81,anc_id))  ,MAX(DECODE(rank,82,anc_id))
11901                          ,MAX(DECODE(rank,83,anc_id))  ,MAX(DECODE(rank,84,anc_id))
11902                          ,MAX(DECODE(rank,85,anc_id))  ,MAX(DECODE(rank,86,anc_id))
11903                          ,MAX(DECODE(rank,87,anc_id))  ,MAX(DECODE(rank,88,anc_id))
11904                          ,MAX(DECODE(rank,89,anc_id))  ,MAX(DECODE(rank,90,anc_id))
11905                          ,MAX(DECODE(rank,91,anc_id))  ,MAX(DECODE(rank,92,anc_id))
11906                          ,MAX(DECODE(rank,93,anc_id))  ,MAX(DECODE(rank,94,anc_id))
11907                          ,MAX(DECODE(rank,95,anc_id))  ,MAX(DECODE(rank,96,anc_id))
11908                          ,MAX(DECODE(rank,97,anc_id))  ,MAX(DECODE(rank,98,anc_id))
11909                          ,MAX(DECODE(rank,99,anc_id))  ,MAX(DECODE(rank,100,anc_id))
11910                     FROM (SELECT ae_header_id
11911                                 ,ae_line_num
11912                                 ,analytical_criterion_code      || '(]' ||
11913                                  analytical_criterion_type_code || '(]' ||
11914                                  amb_context_code               || '(]' ||
11915                                  ac1                            || '(]' ||
11916                                  ac2                            || '(]' ||
11917                                  ac3                            || '(]' ||
11918                                  ac4                            || '(]' ||
11919                                  ac5           anc_id
11920                                 ,RANK() OVER (
11921                                   PARTITION BY ae_header_id, ae_line_num
11922                                       ORDER BY analytical_criterion_code
11923                                               ,analytical_criterion_type_code
11924                                               ,amb_context_code
11925                                               ,ac1
11926                                               ,ac2
11927                                               ,ac3
11928                                               ,ac4
11929                                               ,ac5) rank
11930              FROM xla_ae_line_acs) aed
11931             WHERE aed.ae_header_id        = xalg.temp_ref_ae_header_id
11932               AND aed.ae_line_num         = xalg.ref_ae_line_num)
11933             WHERE balance_type_code = l_array_balance_type_code(i)
11934               AND ae_header_id      = l_array_ae_header_id(i)
11935               AND event_id          = l_array_event_id(i)
11936               AND ledger_id         = l_array_ledger_id(i)
11937               AND temp_line_num     = l_array_line_num(i);
11938       END IF;
11939 
11940 
11941       -------------------------------------------------------------------------------------------------------------------------
11942       -- 4655713b Update MPA and Accrual Reversal lines with Prior Entry
11943       -------------------------------------------------------------------------------------------------------------------------
11944    IF xla_accounting_pkg.g_mpa_accrual_exists = 'Y' THEN                                                                -- 5666366
11945       SELECT /*+ Leading (xal1,xah1,xal2) index(xah1 XLA_AE_HEADERS_GT_U1) index(xal2 XLA_AE_LINES_GT_N2) no_expand */  -- 5666366
11946              xal2.segment1,  xal2.segment2,  xal2.segment3,  xal2.segment4,  xal2.segment5
11947             ,xal2.segment6,  xal2.segment7,  xal2.segment8,  xal2.segment9,  xal2.segment10
11948             ,xal2.segment11, xal2.segment12, xal2.segment13, xal2.segment14, xal2.segment15
11949             ,xal2.segment16, xal2.segment17, xal2.segment18, xal2.segment19, xal2.segment20
11950             ,xal2.segment21, xal2.segment22, xal2.segment23, xal2.segment24, xal2.segment25
11951             ,xal2.segment26, xal2.segment27, xal2.segment28, xal2.segment29, xal2.segment30
11952             ,xal2.code_combination_id
11953             ,xal2.code_combination_status_code
11954             ,DECODE(NVL(xal1.inherit_desc_flag,'N'), 'Y', xal2.description, xal1.description)
11955             ,xal2.currency_code   -- upstream
11956             ,xal1.currency_code   -- downstream  5132302
11957             ,xal2.currency_conversion_rate
11958             ,xal2.currency_conversion_type
11959             ,xal2.currency_conversion_date
11960             ,xal2.entered_currency_mau
11961             ,xal2.party_type_code
11962             ,xal2.party_id
11963             ,xal2.party_site_id
11964             ,xal2.encumbrance_type_id
11965             -- CALCULATE_ACCTD_AMTS_FLAG is ignored for Prior Entry (see bug 4482069 for details). Same applies to MPA lines.
11966             ,DECODE (xal3.unrounded_accounted_dr,NULL
11967                     ,CASE WHEN xal3.unrounded_entered_cr <> 0
11968                           THEN xal3.unrounded_accounted_cr/xal3.unrounded_entered_cr
11969                           ELSE 1 END
11970                     ,CASE WHEN xal3.unrounded_entered_dr <> 0
11971                           THEN xal3.unrounded_accounted_dr/xal3.unrounded_entered_dr
11972                           ELSE 1 END)
11973             ,DECODE (xal3.unrounded_accounted_cr,NULL
11974                     ,CASE WHEN xal3.unrounded_entered_dr <> 0
11975                           THEN xal3.unrounded_accounted_dr/xal3.unrounded_entered_dr
11976                           ELSE 1 END
11977                     ,CASE WHEN xal3.unrounded_entered_cr <> 0
11978                           THEN xal3.unrounded_accounted_cr/xal3.unrounded_entered_cr
11979                           ELSE 1 END)
11980             -- join conditions
11981             ,xal1.ledger_id
11982             ,xal1.ref_ae_header_id
11983             ,xal1.temp_line_num
11984             ,xal1.ae_header_id
11985             ,xal1.header_num
11986             ,DECODE(xah1.parent_ae_line_num,NULL,'Y','N')  -- accrual_reversal_flag
11987       BULK COLLECT INTO
11988              l_array_mpa_segment1 ,l_array_mpa_segment2 ,l_array_mpa_segment3 ,l_array_mpa_segment4 ,l_array_mpa_segment5
11989             ,l_array_mpa_segment6 ,l_array_mpa_segment7 ,l_array_mpa_segment8 ,l_array_mpa_segment9 ,l_array_mpa_segment10
11990             ,l_array_mpa_segment11 ,l_array_mpa_segment12 ,l_array_mpa_segment13 ,l_array_mpa_segment14 ,l_array_mpa_segment15
11991             ,l_array_mpa_segment16 ,l_array_mpa_segment17 ,l_array_mpa_segment18 ,l_array_mpa_segment19 ,l_array_mpa_segment20
11992             ,l_array_mpa_segment21 ,l_array_mpa_segment22 ,l_array_mpa_segment23 ,l_array_mpa_segment24 ,l_array_mpa_segment25
11993             ,l_array_mpa_segment26 ,l_array_mpa_segment27 ,l_array_mpa_segment28 ,l_array_mpa_segment29 ,l_array_mpa_segment30
11994             ,l_array_mpa_ccid
11995             ,l_array_mpa_ccid_status_code
11996             ,l_array_mpa_description
11997             ,l_array_mpa_currency_code
11998             ,l_array_mpa_currency_code_pe  -- 5132302
11999             ,l_array_mpa_curr_conv_rate
12000             ,l_array_mpa_curr_conv_type
12001             ,l_array_mpa_curr_conv_date
12002             ,l_array_mpa_currency_mau
12003             ,l_array_mpa_party_type_code
12004             ,l_array_mpa_party_id
12005             ,l_array_mpa_party_site_id
12006             ,l_array_mpa_encum_type_id
12007             ,l_array_mpa_acct_cr_ratio
12008             ,l_array_mpa_acct_dr_ratio
12009             -- join conditions
12010             ,l_array_mpa_ledger_id
12011             ,l_array_mpa_ref_ae_header_id
12012             ,l_array_mpa_temp_line_num
12013             ,l_array_mpa_ae_header_id
12014             ,l_array_mpa_header_num
12015             ,l_array_acc_rev_flag
12016       FROM  xla_ae_lines_gt   xal2   -- original downstream line
12017            ,xla_ae_headers_gt xah1   -- original downstream header
12018            ,xla_ae_lines_gt   xal1   -- recognition lines
12019            ,xla_ae_lines      xal3   -- upstream line
12020       WHERE xal2.source_distribution_type                  = xal1.source_distribution_type
12021       AND   NVL(xal2.source_distribution_id_num_1,C_NUM)   = NVL(xal1.source_distribution_id_num_1,C_NUM)
12022       AND   NVL(xal2.source_distribution_id_num_2,C_NUM)   = NVL(xal1.source_distribution_id_num_2,C_NUM)
12023       AND   NVL(xal2.source_distribution_id_num_3,C_NUM)   = NVL(xal1.source_distribution_id_num_3,C_NUM)
12024       AND   NVL(xal2.source_distribution_id_num_4,C_NUM)   = NVL(xal1.source_distribution_id_num_4,C_NUM)
12025       AND   NVL(xal2.source_distribution_id_num_5,C_NUM)   = NVL(xal1.source_distribution_id_num_5,C_NUM)
12026       AND   NVL(xal2.source_distribution_id_char_1,C_CHAR) = NVL(xal1.source_distribution_id_char_1,C_CHAR)
12027       AND   NVL(xal2.source_distribution_id_char_2,C_CHAR) = NVL(xal1.source_distribution_id_char_2,C_CHAR)
12028       AND   NVL(xal2.source_distribution_id_char_3,C_CHAR) = NVL(xal1.source_distribution_id_char_3,C_CHAR)
12029       AND   NVL(xal2.source_distribution_id_char_4,C_CHAR) = NVL(xal1.source_distribution_id_char_4,C_CHAR)
12030       AND   NVL(xal2.source_distribution_id_char_5,C_CHAR) = NVL(xal1.source_distribution_id_char_5,C_CHAR)
12031       AND   xal2.event_id                      = xal1.event_id
12032       AND   xal2.ledger_id                     = xal1.ledger_id
12033       AND   xal2.balance_type_code             = xal1.balance_type_code
12034       AND   xal2.event_class_code              = xal1.event_class_code
12035       AND   xal2.event_type_code               = xal1.event_type_code
12036       AND   xal2.line_definition_owner_code    = xal1.line_definition_owner_code
12037       AND   xal2.line_definition_code          = xal1.line_definition_code
12038       AND   xal2.ACCOUNTING_LINE_TYPE_CODE     = xal1.ACCOUNTING_LINE_TYPE_CODE
12039       AND   xal2.ACCOUNTING_LINE_CODE          = xal1.ACCOUNTING_LINE_CODE
12040       --
12041       AND   xah1.ledger_id        = xal1.ledger_id
12042       AND   xah1.ae_header_id     = xal1.ae_header_id
12043       AND   xah1.header_num       = xal1.header_num
12044       AND ((xah1.parent_ae_line_num IS NOT NULL AND xal2.temp_line_num = xah1.parent_ae_line_num)  -- MPA
12045       OR    xah1.parent_ae_line_num IS NULL)                                                       -- Accrual Reversal
12046       --  5666366  -------------------------------------
12047       AND XAL1.BALANCE_TYPE_CODE  = XAH1.BALANCE_TYPE_CODE
12048       AND XAL2.AE_HEADER_ID       = XAL1.AE_HEADER_ID
12049       --------------------------------------------------
12050       AND   xal2.header_num       = 0
12051       AND   xal1.reversal_code    = C_MPA_PRIOR_ENTRY
12052       --
12053       AND   xal2.bflow_prior_entry_status_code IS NOT NULL AND xal2.bflow_prior_entry_status_code <> 'X'  -- 5132302
12054       --
12055       AND   xal3.application_id   = xal2.bflow_application_id
12056       AND   xal3.ae_header_id     = xal2.temp_ref_ae_header_id
12057       AND   xal3.ae_line_num      = xal2.ref_ae_line_num;
12058 
12059       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12060          trace
12061             (p_msg      => 'BusinessFlowPriorEntries - no of MPA/AccRev rows found = '||l_array_mpa_ledger_id.COUNT
12062             ,p_level    => C_LEVEL_STATEMENT
12063             ,p_module   => l_log_module);
12064          FOR i IN 1..l_array_mpa_ledger_id.COUNT LOOP
12065             trace
12066             (p_msg      => 'BusinessFlowPriorEntries - mpa lines  ledger='||l_array_mpa_ledger_id(i)||
12067                            ' ref_header='||l_array_mpa_ref_ae_header_id(i)||
12068                            ' temp_line='||l_array_mpa_temp_line_num(i)||
12069                            ' ae_header='||l_array_mpa_ae_header_id(i)||
12070                            ' header_num='||l_array_mpa_header_num(i)||
12071                            ' up_curr='||l_array_mpa_currency_code(i)||
12072                            ' dn_curr='||l_array_mpa_currency_code_pe(i)||
12073                            ' acc_rev='||l_array_acc_rev_flag(i)
12074             ,p_level    => C_LEVEL_STATEMENT
12075             ,p_module   => l_log_module);
12076          END LOOP;
12077 
12078          FOR i IN (select * from xla_ae_Lines_gt where reversal_code=C_MPA_PRIOR_ENTRY) LOOP
12079             trace
12080             (p_msg      => 'ae_lines_gt  PE dist ledger='||i.ledger_id||' ref_ae_header='||i.ref_ae_header_id||
12081                            ' temp_line='||i.temp_line_num||' ae_header='||i.ae_header_id||' header_num='||i.header_num||
12082                            ' bflow='||i.business_method_code||
12083                            ' curr='||i.currency_code||' applied_amt='||i.bflow_applied_to_amount||  -- 5132302
12084                            ' conv_type='||i.currency_conversion_type||' conv_rate='||i.currency_conversion_rate||
12085                            ' udr='||i.unrounded_ACCOUNTED_DR||' ucr='||i.unrounded_ACCOUNTED_CR||' switch='||i.switch_side_flag||
12086                            ' line='||i.line_definition_code|| ' dist='||i.source_distribution_type||' rev='||i.reversal_code||
12087                            ' n1='||i.source_distribution_id_num_1|| ' n2='||i.source_distribution_id_num_2||
12088                            ' n3='||i.source_distribution_id_num_3|| ' n4='||i.source_distribution_id_num_4||
12089                            ' n5='||i.source_distribution_id_num_5|| ' c1='||i.source_distribution_id_char_1||
12090                            ' c2='||i.source_distribution_id_char_2|| ' c3='||i.source_distribution_id_char_3||
12091                            ' c4='||i.source_distribution_id_char_4|| ' c5='||i.source_distribution_id_char_5||
12092                            ' bal='||i.balance_type_code|| ' side='||i.natural_side_code||
12093                            ' rev='||i.reversal_code
12094             ,p_level    => C_LEVEL_STATEMENT
12095             ,p_module   => l_log_module);
12096          END LOOP;
12097 
12098          FOR i IN (select * from xla_ae_Lines_gt where reversal_code=C_MPA_PRIOR_ENTRY) LOOP
12099              trace
12100             (p_msg      => '                seg s1='||i.segment1||' s2='||i.segment2|| ' s3='||i.segment3||' s4='||i.segment4||
12101                                        ' s5='||i.segment5||' s6='||i.segment6|| ' s7='||i.segment7||' s8='||i.segment8||
12102                                        ' s9='||i.segment9||' s10='||i.segment10|| ' s11='||i.segment11||' s12='||i.segment12||
12103                                        ' s13='||i.segment13||' s14='||i.segment14|| ' s15='||i.segment15||' s16='||i.segment16||
12104                                        ' s17='||i.segment17||' s18='||i.segment18|| ' s19='||i.segment19||' s20='||i.segment20||
12105                                        ' s21='||i.segment21||' s22='||i.segment22|| ' s23='||i.segment23||' s24='||i.segment24||
12106                                        ' s25='||i.segment25||' s26='||i.segment26|| ' s27='||i.segment27||' s28='||i.segment28||
12107                                        ' s29='||i.segment29||' s30='||i.segment30||' ccid='||i.code_combination_id
12108             ,p_level    => C_LEVEL_STATEMENT
12109             ,p_module   => l_log_module);
12110          END LOOP;
12111 
12112       END IF;
12113 
12114       ---------------------------------------------------------------------------------------------------------------
12115       -- Updates only the Accrual-Reversal or MPA-Accrual line which is a PRIOR_ENTRY.
12116       -- NOTE: for Accrual-Reversal, one line may be Prior Entry and the rest may not, so update only Prior Entry line.
12117       ---------------------------------------------------------------------------------------------------------------
12118       FORALL i in 1..l_array_mpa_ledger_id.COUNT
12119          UPDATE xla_ae_lines_gt xal
12120          SET      segment1  = l_array_mpa_segment1(i)
12121                 , segment2  = l_array_mpa_segment2(i)
12122                 , segment3  = l_array_mpa_segment3(i)
12123                 , segment4  = l_array_mpa_segment4(i)
12124                 , segment5  = l_array_mpa_segment5(i)
12125                 , segment6  = l_array_mpa_segment6(i)
12126                 , segment7  = l_array_mpa_segment7(i)
12127                 , segment8  = l_array_mpa_segment8(i)
12128                 , segment9  = l_array_mpa_segment9(i)
12129                 , segment10 = l_array_mpa_segment10(i)
12130                 , segment11 = l_array_mpa_segment11(i)
12131                 , segment12 = l_array_mpa_segment12(i)
12132                 , segment13 = l_array_mpa_segment13(i)
12133                 , segment14 = l_array_mpa_segment14(i)
12134                 , segment15 = l_array_mpa_segment15(i)
12135                 , segment16 = l_array_mpa_segment16(i)
12136                 , segment17 = l_array_mpa_segment17(i)
12137                 , segment18 = l_array_mpa_segment18(i)
12138                 , segment19 = l_array_mpa_segment19(i)
12139                 , segment20 = l_array_mpa_segment20(i)
12140                 , segment21 = l_array_mpa_segment21(i)
12141                 , segment22 = l_array_mpa_segment22(i)
12142                 , segment23 = l_array_mpa_segment23(i)
12143                 , segment24 = l_array_mpa_segment24(i)
12144                 , segment25 = l_array_mpa_segment25(i)
12145                 , segment26 = l_array_mpa_segment26(i)
12146                 , segment27 = l_array_mpa_segment27(i)
12147                 , segment28 = l_array_mpa_segment28(i)
12148                 , segment29 = l_array_mpa_segment29(i)
12149                 , segment30 = l_array_mpa_segment30(i)
12150                 , description              = l_array_mpa_description(i)
12151                 , code_combination_id      = l_array_mpa_ccid(i)
12152                 , code_combination_status_code = DECODE(l_array_mpa_ccid(i),NULL,C_PROCESSING     -- 4655713b used in Create_CCID
12153                                                                                 ,l_array_mpa_ccid_status_code(i))
12154                 , reversal_code            = null
12155                 --
12156                 , currency_code            = l_array_mpa_currency_code(i)
12157                 , currency_conversion_rate = l_array_mpa_curr_conv_rate(i)
12158                 , currency_conversion_type = l_array_mpa_curr_conv_type(i)
12159                 , currency_conversion_date = TRUNC(l_array_mpa_curr_conv_date(i))
12160                 , party_type_code          = l_array_mpa_party_type_code(i)
12161                 , party_id                 = l_array_mpa_party_id(i)
12162                 , party_site_id            = l_array_mpa_party_site_id(i)
12163                 , encumbrance_type_id      = l_array_mpa_encum_type_id(i)
12164                 , unrounded_entered_cr     = DECODE(l_array_mpa_currency_code(i),l_array_mpa_currency_code_pe(i),  -- 5132302
12165                                                     unrounded_entered_cr,
12166                                                     DECODE(unrounded_entered_cr,NULL,NULL,NVL(bflow_applied_to_amount,unrounded_entered_cr)))
12167                 , unrounded_entered_dr     = DECODE(l_array_mpa_currency_code(i),l_array_mpa_currency_code_pe(i),  -- 5132302
12168                                                     unrounded_entered_dr,
12169                                                     DECODE(unrounded_entered_dr,NULL,NULL,NVL(bflow_applied_to_amount,unrounded_entered_dr)))
12170                 , unrounded_accounted_cr   = DECODE(l_array_mpa_currency_code(i),l_array_mpa_currency_code_pe(i),  -- 5132302
12171                                                     unrounded_entered_cr*l_array_mpa_acct_cr_ratio(i),
12172                                                     DECODE(unrounded_entered_cr,NULL,NULL,
12173                                                            NVL(bflow_applied_to_amount,unrounded_entered_cr))*l_array_mpa_acct_cr_ratio(i))
12174                 , unrounded_accounted_dr   = DECODE(l_array_mpa_currency_code(i),l_array_mpa_currency_code_pe(i),  -- 5132302
12175                                                     unrounded_entered_dr*l_array_mpa_acct_dr_ratio(i),
12176                                                     DECODE(unrounded_entered_dr,NULL,NULL,
12177                                                            NVL(bflow_applied_to_amount,unrounded_entered_dr))*l_array_mpa_acct_dr_ratio(i))
12178            WHERE xal.ledger_id             = l_array_mpa_ledger_id(i)
12179            AND   xal.ref_ae_header_id      = l_array_mpa_ref_ae_header_id(i)
12180            AND   xal.temp_line_num         = l_array_mpa_temp_line_num(i)  -- Acc-Rev or MPA-Accrual line which is a PRIOR_ENTR
12181            AND   xal.ae_header_id          = l_array_mpa_ae_header_id(i)
12182            AND   NVL(xal.header_num,0)     = l_array_mpa_header_num(i);
12183 
12184 
12185       ---------------------------------------------------------------------------------------------------------------
12186       -- a) Updates MPA-Recognition lines only (MPA-Accrual and Accrual-Reversal lines are updated above.)
12187       -- b) Both MPA-Accrual and MPA-Recognition lines need to inherit values from Prior Entry.
12188       -- c) GetRecognitionEntries sets unrounded_accounted amounts to NULL when CALCULATE_ACCTD_AMTS_FLAG is 'Y'
12189       --    which is correct for non-bflow MPA.  When it is bflow, flag is ignored.
12190       --
12191       -- NOTE: some columns are set to NULL during Business_Flow_Validation
12192       ---------------------------------------------------------------------------------------------------------------
12193       FORALL i in 1..l_array_mpa_ledger_id.COUNT
12194          UPDATE xla_ae_lines_gt xal
12195          SET      currency_code            = DECODE(l_array_acc_rev_flag(i),'N',l_array_mpa_currency_code(i)
12196                                                                                ,currency_code)
12197                 , currency_conversion_rate = DECODE(l_array_acc_rev_flag(i),'N',l_array_mpa_curr_conv_rate(i)
12198                                                                                ,currency_conversion_rate)
12199                 , currency_conversion_type = DECODE(l_array_acc_rev_flag(i),'N',l_array_mpa_curr_conv_type(i)
12200                                                                                ,currency_conversion_type)
12201                 , currency_conversion_date = DECODE(l_array_acc_rev_flag(i),'N',TRUNC(l_array_mpa_curr_conv_date(i))
12202                                                                                ,TRUNC(currency_conversion_date))
12203                 , party_type_code          = DECODE(l_array_acc_rev_flag(i),'N',l_array_mpa_party_type_code(i)
12204                                                                                ,party_type_code)
12205                 , party_id                 = DECODE(l_array_acc_rev_flag(i),'N',l_array_mpa_party_id(i)
12206                                                                                ,party_id)
12207                 , party_site_id            = DECODE(l_array_acc_rev_flag(i),'N',l_array_mpa_party_site_id(i)
12208                                                                                ,party_site_id)
12209          --       , encumbrance_type_id      = DECODE(l_array_acc_rev_flag(i),'N',encumbrance_type_id,l_array_mpa_encum_type_id(i)
12210          --                                                                      ,encumbrance_type_id)
12211                 , entered_currency_mau     = DECODE(l_array_acc_rev_flag(i),'N',l_array_mpa_currency_mau(i)
12212                                                                                ,entered_currency_mau)
12213                 , unrounded_entered_cr     = DECODE(l_array_acc_rev_flag(i),'N',DECODE(l_array_mpa_currency_code(i),l_array_mpa_currency_code_pe(i),  -- 5132302
12214                                                     unrounded_entered_cr,
12215                                                     DECODE(unrounded_entered_cr,NULL,NULL,NVL(bflow_applied_to_amount,unrounded_entered_cr)))
12216                                                    ,unrounded_entered_cr)
12217                 , unrounded_entered_dr     = DECODE(l_array_acc_rev_flag(i),'N',DECODE(l_array_mpa_currency_code(i),l_array_mpa_currency_code_pe(i),  -- 5132302
12218                                                     unrounded_entered_dr,
12219                                                     DECODE(unrounded_entered_dr,NULL,NULL,NVL(bflow_applied_to_amount,unrounded_entered_dr)))
12220                                                    ,unrounded_entered_dr)
12221                 , unrounded_accounted_cr   = DECODE(l_array_acc_rev_flag(i),'N',DECODE(l_array_mpa_currency_code(i),l_array_mpa_currency_code_pe(i),  -- 5132302
12222                                                                                        unrounded_entered_cr*l_array_mpa_acct_cr_ratio(i),
12223                                                                                        DECODE(unrounded_entered_cr,NULL,NULL,
12224                                                                                        NVL(bflow_applied_to_amount,unrounded_entered_cr)*l_array_mpa_acct_cr_ratio(i)))
12225                                                                                ,unrounded_accounted_cr)
12226                 , unrounded_accounted_dr   = DECODE(l_array_acc_rev_flag(i),'N',DECODE(l_array_mpa_currency_code(i),l_array_mpa_currency_code_pe(i),  -- 5132302
12227                                                                                        unrounded_entered_dr*l_array_mpa_acct_dr_ratio(i),
12228                                                                                        DECODE(unrounded_entered_dr,NULL,NULL,
12229                                                                                        NVL(bflow_applied_to_amount,unrounded_entered_dr)*l_array_mpa_acct_dr_ratio(i)))
12230                                                                                ,unrounded_accounted_dr)
12231            WHERE xal.ledger_id         = l_array_mpa_ledger_id(i)
12232            AND   xal.ref_ae_header_id  = l_array_mpa_ref_ae_header_id(i)
12233            AND   xal.ae_header_id      = l_array_mpa_ae_header_id(i)
12234            AND   NVL(xal.header_num,0) = l_array_mpa_header_num(i);
12235    END IF;  -- 5666366  xla_accounting_pkg.g_mpa_accrual_exists = 'Y'
12236       -------------------------------------------------------------------------------------------------------------------------
12237 
12238 
12239       -------------------------------------------------------------------------
12240       -- Log error messages for the rows still with DUMMY_BFPE
12241       -------------------------------------------------------------------------
12242 
12243       OPEN c_bflow_err_lines;
12244       FETCH c_bflow_err_lines BULK COLLECT INTO  l_array_ae_header_id
12245                                                 ,l_array_line_num
12246                                                 ,l_array_event_id
12247                                                 ,l_array_ledger_id
12248                                                 ,l_array_bflow_prior_status
12249                                                 ,l_array_balance_type_code
12250                                                 ,l_array_entity_id
12251                                                 ,l_array_app_name
12252                         ,l_array_bflow_historic
12253                         ,l_array_ledger_category
12254                         ,l_array_period_start_date;
12255       CLOSE c_bflow_err_lines;
12256 
12257       IF (C_LEVEL_EVENT >= g_log_level) THEN
12258          trace
12259            (p_msg      => '# bflow error lines = '||l_array_balance_type_code.COUNT
12260            ,p_level    => C_LEVEL_EVENT
12261            ,p_module   => l_log_module);
12262       END IF;
12263 
12264       -------------------------------------------------------------------------
12265       -- Historic Upgrade enhancement
12266       -------------------------------------------------------------------------
12267 
12268       -- Get the start_date of the Primary ledger
12269       SELECT glp.start_date
12270        INTO l_primary_start_date
12271       FROM  gl_period_statuses glp
12272            ,gl_ledgers gl
12273       WHERE glp.period_name = gl.first_ledger_period_name
12274       AND  glp.ledger_id = gl.ledger_id
12275       AND  glp.application_id = 101
12276       AND  gl.ledger_id = p_ledger_id;
12277 
12278        IF (l_array_bflow_prior_status.COUNT > 0) THEN -- prior entry status
12279 
12280         FOR i IN 1..l_array_bflow_prior_status.COUNT LOOP
12281               IF NVL(l_array_bflow_prior_status(i),'N') = 'X' THEN   -- 5132302
12282 
12283                  xla_accounting_err_pkg.build_message
12284                      (p_appli_s_name  => 'XLA'
12285                      ,p_msg_name      => 'XLA_AP_BFLOW_PE_NO_APPLIED_AMT'
12286                      ,p_entity_id     => l_array_entity_id(i)
12287                      ,p_event_id      => l_array_event_id(i)
12288                      ,p_ledger_id     => l_array_ledger_id(i));
12289 
12290               ELSE
12291 
12292                -- If the errored line belongs to primary ledger,
12293            -- throw the error 'prior entry not found'.
12294 
12295            IF(l_array_ledger_category (i) = 'PRIMARY') THEN
12296                  XLA_AE_JOURNAL_ENTRY_PKG.g_global_status  :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
12297                  xla_accounting_err_pkg.build_message(p_appli_s_name  => 'XLA'
12298                                             ,p_msg_name      => 'XLA_AP_BFLOW_PE_NOT_FOUND'
12299                                     ,p_token_1       => 'APPLICATION_NAME'
12300                             ,p_value_1       => l_array_app_name(i)
12301                             ,p_entity_id     => l_array_entity_id(i)
12302                                 ,p_event_id      => l_array_event_id(i)
12303                                     ,p_ledger_id     => l_array_ledger_id(i));
12304 
12305 
12306 
12307                ELSE -- for secondary/alc
12308 
12309            -- If the problematic line belongs to secondary/alc ledger, compare the startdate
12310            -- of the first open period for that ledger with that of primary ledger. If it is
12311            -- less than or equal to the start date of primary, throw the error. Else,
12312            -- assume that historic upgrade process is run, and don't raise any error.
12313            -- Bug 5339999
12314 
12315 
12316         IF (l_array_period_start_date(i) <= l_primary_start_date) then
12317          XLA_AE_JOURNAL_ENTRY_PKG.g_global_status  :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
12318              xla_accounting_err_pkg.build_message(p_appli_s_name  => 'XLA'
12319                              ,p_msg_name      => 'XLA_AP_BFLOW_PE_NOT_FOUND'
12320                                              ,p_token_1       => 'APPLICATION_NAME'
12321                              ,p_value_1       => l_array_app_name(i)
12322                              ,p_entity_id     => l_array_entity_id(i)
12323                              ,p_event_id      => l_array_event_id(i)
12324                                      ,p_ledger_id     => l_array_ledger_id(i));
12325 
12326 
12327 
12328                 ELSE
12329           l_array_bflow_historic (i) :='Y';  -- This line belongs to historic upgraded data.
12330           l_array_hist_bflow_err(l_array_event_id(i)) :=1;
12331           xla_accounting_cache_pkg.g_hist_bflow_error_exists := TRUE;
12332                 END IF;
12333 
12334                END IF;  -- for secondary
12335               END IF; -- 5132302
12336 
12337         END LOOP;
12338 
12339        -- Print out all the events whose upstream entries are not upgraded in secondary/alc ledgers.
12340        IF l_array_hist_bflow_err.COUNT>0 THEN
12341          print_logfile('******************************************************************************');
12342          print_logfile('The following events do not have historic entries replicated in secondary/alc ledgers');
12343          print_logfile('Manual gl adjustments in the secondary/alc ledgers needs to be done for these events');
12344          print_logfile('==============================================================================');
12345          l_hist_count := l_array_hist_bflow_err.FIRST;
12346          WHILE (l_hist_count <= l_array_hist_bflow_err.LAST) LOOP
12347            print_logfile('event_id :'||l_hist_count);
12348            l_hist_count := l_array_hist_bflow_err.next(l_hist_count);
12349          END LOOP;
12350          print_logfile('==============================================================================');
12351        END IF;
12352 
12353 
12354 
12355 
12356        --
12357        -- Bug 5339999 Delete the problematic lines from xla_ae_lines_gt.
12358        --
12359        FORALL i IN 1..l_array_balance_type_code.COUNT
12360        DELETE FROM XLA_AE_LINES_GT
12361        WHERE ae_header_id      = l_array_ae_header_id(i)
12362        AND event_id            = l_array_event_id(i)
12363        AND ledger_id           = l_array_ledger_id(i)
12364        AND 'Y'                 = l_array_bflow_historic (i);
12365 
12366        --
12367        -- Bug 5339999 Delete the problematic lines from xla_ae_headers_gt.
12368        --
12369 
12370        FORALL i IN 1..l_array_balance_type_code.COUNT
12371        DELETE FROM XLA_AE_HEADERS_GT
12372        WHERE ae_header_id    = l_array_ae_header_id(i)
12373        AND event_id          = l_array_event_id(i)
12374        AND ledger_id         = l_array_ledger_id(i)
12375        AND 'Y'               = l_array_bflow_historic (i);
12376 
12377 
12378 
12379 
12380 
12381 -------------------------------------------------------------------------
12382  -- Update JE header status for invalid entries
12383  -------------------------------------------------------------------------
12384 
12385  FORALL i IN 1..l_array_balance_type_code.COUNT
12386 
12387            UPDATE xla_ae_headers_gt
12388               SET accounting_entry_status_code = XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID  -- C_INVALID_STATUS
12389             WHERE balance_type_code = l_array_balance_type_code(i)
12390             AND ae_header_id        = l_array_ae_header_id(i)
12391             AND event_id            = l_array_event_id(i)
12392             AND ledger_id           = l_array_ledger_id(i);
12393 
12394 
12395 -------------------------------------------------------------------------
12396  -- Update JE line for invalid entries
12397  -------------------------------------------------------------------------
12398 
12399         FORALL i IN 1..l_array_balance_type_code.COUNT
12400            UPDATE /*+ index(xalg xla_ae_lines_gt_n2) */ xla_ae_lines_gt xalg
12401               SET xalg.code_combination_status_code = C_INVALID
12402                 , xalg.code_combination_id = -1
12403             WHERE xalg.balance_type_code = l_array_balance_type_code(i)
12404             AND xalg.ae_header_id        = l_array_ae_header_id(i)
12405             AND xalg.temp_line_num       = l_array_line_num(i)
12406             AND xalg.event_id            = l_array_event_id(i)
12407             AND xalg.ledger_id           = l_array_ledger_id(i);
12408 
12409      END IF;
12410    END IF;
12411 
12412 
12413    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12414       trace(p_msg      => 'END of BusinessFlowPriorEntries'
12415            ,p_level    => C_LEVEL_PROCEDURE
12416            ,p_module   => l_log_module);
12417    END IF;
12418 
12419 EXCEPTION
12420    --
12421    WHEN xla_exceptions_pkg.application_exception THEN
12422       RAISE;
12423    WHEN OTHERS  THEN
12424       xla_exceptions_pkg.raise_message
12425                   (p_location => 'xla_ae_lines_pkg.BusinessFlowPriorEntries');
12426    --
12427 END BusinessFlowPriorEntries;
12428 
12429 /*======================================================================+
12430 |                                                                       |
12431 | Public Procedure- Business Flow Same Entry - 4219869                  |
12432 |                                                                       |
12433 |                                                                       |
12434 +======================================================================*/
12435 PROCEDURE BusinessFlowSameEntries IS
12436 
12437    l_log_module         VARCHAR2(240);
12438    --
12439    -- Define local variables
12440    --
12441    l_err_count INTEGER;
12442    l_array_ae_header_id                   xla_cmp_source_pkg.t_array_Num;
12443    l_array_temp_line_num                  xla_cmp_source_pkg.t_array_Num; -- 5443083 l_array_ae_line_num
12444    l_array_event_id                       xla_cmp_source_pkg.t_array_Num;
12445    l_array_ledger_id                      xla_cmp_source_pkg.t_array_Num;
12446    l_array_balance_type_code              xla_cmp_source_pkg.t_array_VL30;
12447    l_array_entity_id                      xla_cmp_source_pkg.t_array_Num;
12448    l_array_ref_ae_header_id               xla_cmp_source_pkg.t_array_Num;  -- 5443083
12449    l_array_header_num                     xla_cmp_source_pkg.t_array_Num;  -- 5443083
12450    l_array_ledger_category                xla_cmp_source_pkg.t_array_VL30; -- 5443083
12451    l_array_zero_amount_flag               xla_cmp_source_pkg.t_array_VL1;  -- 5443083
12452    --
12453    -- Cursor to return the same entry lines that are not processed
12454    --
12455    CURSOR c_bflow_unprocessed_lines IS
12456      SELECT l.ae_header_id
12457           , l.temp_line_num           -- 5443083 l.ae_line_num
12458           , l.event_id
12459           , l.ledger_id
12460           , l.balance_type_code
12461           , h.entity_id
12462           , l.ref_ae_header_id        -- 5443083
12463           , l.header_num              -- 5443083
12464           , xlr.ledger_category_code  -- 5443083
12465           , DECODE(NVL(l.unrounded_entered_dr,0)
12466                       ,0, DECODE(NVL(l.unrounded_entered_cr,0)
12467                                 ,0, DECODE(NVL(l.unrounded_accounted_dr,0)
12468                                           ,0, DECODE(NVL(l.unrounded_accounted_cr,0)
12469                                                     ,0,'Y'
12470                                                     ,'N')
12471                                           ,'N')
12472                                 ,'N')
12473                       ,'N')           -- 5443083
12474        FROM xla_ae_lines_gt l
12475            ,xla_ae_headers_gt h
12476            ,xla_gl_ledgers_v  xlr
12477       WHERE (reversal_code = C_DUMMY_SAME
12478       OR     reversal_code = C_MPA_SAME_ENTRY)  -- 4655713b
12479       AND   l.ae_header_id      = h.ae_header_id
12480       AND   l.ledger_id         = h.ledger_id            -- 5443083
12481       AND   l.balance_type_code = h.balance_type_code    -- 5443083
12482       AND   l.header_num        = h.header_num           -- 5443083
12483       AND   l.ledger_id         = xlr.ledger_id          -- 5443083
12484      ORDER BY l.ae_header_id;
12485 
12486 -- 4913967 for performance fix
12487 l_array_same_segment1                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12488 l_array_same_segment2                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12489 l_array_same_segment3                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12490 l_array_same_segment4                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12491 l_array_same_segment5                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12492 l_array_same_segment6                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12493 l_array_same_segment7                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12494 l_array_same_segment8                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12495 l_array_same_segment9                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12496 l_array_same_segment10                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12497 l_array_same_segment11                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12498 l_array_same_segment12                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12499 l_array_same_segment13                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12500 l_array_same_segment14                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12501 l_array_same_segment15                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12502 l_array_same_segment16                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12503 l_array_same_segment17                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12504 l_array_same_segment18                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12505 l_array_same_segment19                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12506 l_array_same_segment20                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12507 l_array_same_segment21                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12508 l_array_same_segment22                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12509 l_array_same_segment23                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12510 l_array_same_segment24                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12511 l_array_same_segment25                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12512 l_array_same_segment26                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12513 l_array_same_segment27                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12514 l_array_same_segment28                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12515 l_array_same_segment29                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12516 l_array_same_segment30                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12517 l_array_same_ccid                         XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
12518 l_array_same_description                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_V4000L;
12519 l_array_same_reversal_code                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12520 l_array_join_ledger_id                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
12521 l_array_join_ref_ae_header_id             XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
12522 l_array_join_temp_line_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
12523 l_array_join_ae_header_id                 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
12524 l_array_join_header_num                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
12525 
12526 -- 4655713b MPA and Accrual Reversal
12527 l_array_mpa_segment1                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12528 l_array_mpa_segment2                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12529 l_array_mpa_segment3                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12530 l_array_mpa_segment4                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12531 l_array_mpa_segment5                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12532 l_array_mpa_segment6                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12533 l_array_mpa_segment7                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12534 l_array_mpa_segment8                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12535 l_array_mpa_segment9                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12536 l_array_mpa_segment10                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12537 l_array_mpa_segment11                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12538 l_array_mpa_segment12                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12539 l_array_mpa_segment13                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12540 l_array_mpa_segment14                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12541 l_array_mpa_segment15                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12542 l_array_mpa_segment16                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12543 l_array_mpa_segment17                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12544 l_array_mpa_segment18                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12545 l_array_mpa_segment19                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12546 l_array_mpa_segment20                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12547 l_array_mpa_segment21                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12548 l_array_mpa_segment22                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12549 l_array_mpa_segment23                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12550 l_array_mpa_segment24                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12551 l_array_mpa_segment25                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12552 l_array_mpa_segment26                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12553 l_array_mpa_segment27                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12554 l_array_mpa_segment28                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12555 l_array_mpa_segment29                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12556 l_array_mpa_segment30                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12557 l_array_mpa_ccid                         XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
12558 l_array_mpa_ccid_status_code             XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12559 l_array_mpa_description                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_V4000L;
12560 l_array_mpa_ledger_id                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
12561 l_array_mpa_ref_ae_header_id             XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
12562 l_array_mpa_temp_line_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
12563 l_array_mpa_ae_header_id                 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
12564 l_array_mpa_header_num                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
12565 
12566 BEGIN
12567 
12568    IF g_log_enabled THEN
12569       l_log_module := C_DEFAULT_MODULE||'.BusinessFlowSameEntries';
12570    END IF;
12571 --
12572    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12573       trace
12574            (p_msg      => 'BEGIN of BusinessFlowSameEntries'
12575            ,p_level    => C_LEVEL_PROCEDURE
12576            ,p_module   => l_log_module);
12577    END IF;
12578 
12579    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12580        trace
12581            (p_msg      => 'g_num_bflow_same_entries = '||g_num_bflow_same_entries
12582             ,p_level    => C_LEVEL_STATEMENT
12583             ,p_module   => l_log_module);
12584    END IF;
12585 
12586 
12587    IF (g_num_bflow_same_entries > 0) THEN
12588 --
12589       -- Update DUMMY_BFSE rows based on the other line in the same entry
12590       -- If not exactly one line is found for the same entry, it is an error
12591       --
12592       --
12593       -- Fix bug4384869 - if segment values is null from the same entry, determine
12594       -- the segment from the ccid of the prior entry
12595 
12596       -----------------------------------------------------------------------------------------------------------
12597       -- 4913967  Modify for performance
12598       -----------------------------------------------------------------------------------------------------------
12599       SELECT      CASE WHEN count(*) = 1
12600                        THEN MIN(DECODE(xal.segment1, C_CHAR, NVL(xal2.segment1,gcc.segment1), xal.segment1))
12601                        ELSE MIN(DECODE(xal.segment1, C_CHAR, NULL, xal.segment1)) END
12602                 , CASE WHEN count(*) = 1
12603                        THEN MIN(DECODE(xal.segment2, C_CHAR, NVL(xal2.segment2,gcc.segment2), xal.segment2))
12604                        ELSE MIN(DECODE(xal.segment2, C_CHAR, NULL, xal.segment2)) END
12605                 , CASE WHEN count(*) = 1
12606                        THEN MIN(DECODE(xal.segment3, C_CHAR, NVL(xal2.segment3,gcc.segment3), xal.segment3))
12607                        ELSE MIN(DECODE(xal.segment3, C_CHAR, NULL, xal.segment3)) END
12608                 , CASE WHEN count(*) = 1
12609                        THEN MIN(DECODE(xal.segment4, C_CHAR, NVL(xal2.segment4,gcc.segment4), xal.segment4))
12610                        ELSE MIN(DECODE(xal.segment4, C_CHAR, NULL, xal.segment4)) END
12611                 , CASE WHEN count(*) = 1
12612                        THEN MIN(DECODE(xal.segment5, C_CHAR, NVL(xal2.segment5,gcc.segment5), xal.segment5))
12613                        ELSE MIN(DECODE(xal.segment5, C_CHAR, NULL, xal.segment5)) END
12614                 , CASE WHEN count(*) = 1
12615                        THEN MIN(DECODE(xal.segment6, C_CHAR, NVL(xal2.segment6,gcc.segment6), xal.segment6))
12616                        ELSE MIN(DECODE(xal.segment6, C_CHAR, NULL, xal.segment6)) END
12617                 , CASE WHEN count(*) = 1
12618                        THEN MIN(DECODE(xal.segment7, C_CHAR, NVL(xal2.segment7,gcc.segment7), xal.segment7))
12619                        ELSE MIN(DECODE(xal.segment7, C_CHAR, NULL, xal.segment7)) END
12620                 , CASE WHEN count(*) = 1
12621                        THEN MIN(DECODE(xal.segment8, C_CHAR, NVL(xal2.segment8,gcc.segment8), xal.segment8))
12622                        ELSE MIN(DECODE(xal.segment8, C_CHAR, NULL, xal.segment8)) END
12623                 , CASE WHEN count(*) = 1
12624                        THEN MIN(DECODE(xal.segment9, C_CHAR, NVL(xal2.segment9,gcc.segment9), xal.segment9))
12625                        ELSE MIN(DECODE(xal.segment9, C_CHAR, NULL, xal.segment9)) END
12626                 , CASE WHEN count(*) = 1
12627                        THEN MIN(DECODE(xal.segment10, C_CHAR, NVL(xal2.segment10,gcc.segment10), xal.segment10))
12628                        ELSE MIN(DECODE(xal.segment10, C_CHAR, NULL, xal.segment10)) END
12629                 , CASE WHEN count(*) = 1
12630                        THEN MIN(DECODE(xal.segment11, C_CHAR, NVL(xal2.segment11,gcc.segment11), xal.segment11))
12631                        ELSE MIN(DECODE(xal.segment11, C_CHAR, NULL, xal.segment11)) END
12632                 , CASE WHEN count(*) = 1
12633                        THEN MIN(DECODE(xal.segment12, C_CHAR, NVL(xal2.segment12,gcc.segment12), xal.segment12))
12634                        ELSE MIN(DECODE(xal.segment12, C_CHAR, NULL, xal.segment12)) END
12635                 , CASE WHEN count(*) = 1
12636                        THEN MIN(DECODE(xal.segment13, C_CHAR, NVL(xal2.segment13,gcc.segment13), xal.segment13))
12637                        ELSE MIN(DECODE(xal.segment13, C_CHAR, NULL, xal.segment13)) END
12638                 , CASE WHEN count(*) = 1
12639                        THEN MIN(DECODE(xal.segment14, C_CHAR, NVL(xal2.segment14,gcc.segment14), xal.segment14))
12640                        ELSE MIN(DECODE(xal.segment14, C_CHAR, NULL, xal.segment14)) END
12641                 , CASE WHEN count(*) = 1
12642                        THEN MIN(DECODE(xal.segment15, C_CHAR, NVL(xal2.segment15,gcc.segment15), xal.segment15))
12643                        ELSE MIN(DECODE(xal.segment15, C_CHAR, NULL, xal.segment15)) END
12644                 , CASE WHEN count(*) = 1
12645                        THEN MIN(DECODE(xal.segment16, C_CHAR, NVL(xal2.segment16,gcc.segment16), xal.segment16))
12646                        ELSE MIN(DECODE(xal.segment16, C_CHAR, NULL, xal.segment16)) END
12647                 , CASE WHEN count(*) = 1
12648                        THEN MIN(DECODE(xal.segment17, C_CHAR, NVL(xal2.segment17,gcc.segment17), xal.segment17))
12649                        ELSE MIN(DECODE(xal.segment17, C_CHAR, NULL, xal.segment17)) END
12650                 , CASE WHEN count(*) = 1
12651                        THEN MIN(DECODE(xal.segment18, C_CHAR, NVL(xal2.segment18,gcc.segment18), xal.segment18))
12652                        ELSE MIN(DECODE(xal.segment18, C_CHAR, NULL, xal.segment18)) END
12653                 , CASE WHEN count(*) = 1
12654                        THEN MIN(DECODE(xal.segment19, C_CHAR, NVL(xal2.segment19,gcc.segment19), xal.segment19))
12655                        ELSE MIN(DECODE(xal.segment19, C_CHAR, NULL, xal.segment19)) END
12656                 , CASE WHEN count(*) = 1
12657                        THEN MIN(DECODE(xal.segment20, C_CHAR, NVL(xal2.segment20,gcc.segment20), xal.segment20))
12658                        ELSE MIN(DECODE(xal.segment20, C_CHAR, NULL, xal.segment20)) END
12659                 , CASE WHEN count(*) = 1
12660                        THEN MIN(DECODE(xal.segment21, C_CHAR, NVL(xal2.segment21,gcc.segment21), xal.segment21))
12661                        ELSE MIN(DECODE(xal.segment21, C_CHAR, NULL, xal.segment21)) END
12662                 , CASE WHEN count(*) = 1
12663                        THEN MIN(DECODE(xal.segment22, C_CHAR, NVL(xal2.segment22,gcc.segment22), xal.segment22))
12664                        ELSE MIN(DECODE(xal.segment22, C_CHAR, NULL, xal.segment22)) END
12665                 , CASE WHEN count(*) = 1
12666                        THEN MIN(DECODE(xal.segment23, C_CHAR, NVL(xal2.segment23,gcc.segment23), xal.segment23))
12667                        ELSE MIN(DECODE(xal.segment23, C_CHAR, NULL, xal.segment23)) END
12668                 , CASE WHEN count(*) = 1
12669                        THEN MIN(DECODE(xal.segment24, C_CHAR, NVL(xal2.segment24,gcc.segment24), xal.segment24))
12670                        ELSE MIN(DECODE(xal.segment24, C_CHAR, NULL, xal.segment24)) END
12671                 , CASE WHEN count(*) = 1
12672                        THEN MIN(DECODE(xal.segment25, C_CHAR, NVL(xal2.segment25,gcc.segment25), xal.segment25))
12673                        ELSE MIN(DECODE(xal.segment25, C_CHAR, NULL, xal.segment25)) END
12674                 , CASE WHEN count(*) = 1
12675                        THEN MIN(DECODE(xal.segment26, C_CHAR, NVL(xal2.segment26,gcc.segment26), xal.segment26))
12676                        ELSE MIN(DECODE(xal.segment26, C_CHAR, NULL, xal.segment26)) END
12677                 , CASE WHEN count(*) = 1
12678                        THEN MIN(DECODE(xal.segment27, C_CHAR, NVL(xal2.segment27,gcc.segment27), xal.segment27))
12679                        ELSE MIN(DECODE(xal.segment27, C_CHAR, NULL, xal.segment27)) END
12680                 , CASE WHEN count(*) = 1
12681                        THEN MIN(DECODE(xal.segment28, C_CHAR, NVL(xal2.segment28,gcc.segment28), xal.segment28))
12682                        ELSE MIN(DECODE(xal.segment28, C_CHAR, NULL, xal.segment28)) END
12683                 , CASE WHEN count(*) = 1
12684                        THEN MIN(DECODE(xal.segment29, C_CHAR, NVL(xal2.segment29,gcc.segment29), xal.segment29))
12685                        ELSE MIN(DECODE(xal.segment29, C_CHAR, NULL, xal.segment29)) END
12686                 , CASE WHEN count(*) = 1
12687                        THEN MIN(DECODE(xal.segment30, C_CHAR, NVL(xal2.segment30,gcc.segment30), xal.segment30))
12688                        ELSE MIN(DECODE(xal.segment30, C_CHAR, NULL, xal.segment30)) END
12689                 , CASE WHEN count(*) = 1
12690                        THEN MIN(DECODE(xal.code_combination_id, C_NUM, xal2.code_combination_id, xal.code_combination_id))
12691                        ELSE -1 END
12692                 , CASE WHEN count(*) = 1
12693                        THEN MIN(DECODE(xal.inherit_desc_flag, 'Y', xal2.description, xal.description)) ELSE NULL END
12694                 , CASE WHEN count(*) = 1
12695                        THEN NULL ELSE MIN(xal.reversal_code) END
12696                 -- join conditions
12697                 , CASE WHEN count(*) = 1
12698                        THEN xal.ledger_id ELSE NULL END
12699                 , CASE WHEN count(*) = 1
12700                        THEN xal.ref_ae_header_id ELSE NULL END
12701                 , CASE WHEN count(*) = 1
12702                        THEN xal.temp_line_num ELSE NULL END
12703                 , CASE WHEN count(*) = 1
12704                        THEN xal.ae_header_id ELSE NULL END
12705                 , CASE WHEN count(*) = 1
12706                        THEN NVL(xal.header_num,0) ELSE NULL END
12707       BULK COLLECT INTO
12708                   l_array_same_segment1
12709                 , l_array_same_segment2
12710                 , l_array_same_segment3
12711                 , l_array_same_segment4
12712                 , l_array_same_segment5
12713                 , l_array_same_segment6
12714                 , l_array_same_segment7
12715                 , l_array_same_segment8
12716                 , l_array_same_segment9
12717                 , l_array_same_segment10
12718                 , l_array_same_segment11
12719                 , l_array_same_segment12
12720                 , l_array_same_segment13
12721                 , l_array_same_segment14
12722                 , l_array_same_segment15
12723                 , l_array_same_segment16
12724                 , l_array_same_segment17
12725                 , l_array_same_segment18
12726                 , l_array_same_segment19
12727                 , l_array_same_segment20
12728                 , l_array_same_segment21
12729                 , l_array_same_segment22
12730                 , l_array_same_segment23
12731                 , l_array_same_segment24
12732                 , l_array_same_segment25
12733                 , l_array_same_segment26
12734                 , l_array_same_segment27
12735                 , l_array_same_segment28
12736                 , l_array_same_segment29
12737                 , l_array_same_segment30
12738                 , l_array_same_ccid
12739                 , l_array_same_description
12740                 , l_array_same_reversal_code
12741                 -- join conditions
12742                 , l_array_join_ledger_id
12743                 , l_array_join_ref_ae_header_id
12744                 , l_array_join_temp_line_num
12745                 , l_array_join_ae_header_id
12746                 , l_array_join_header_num
12747       FROM  xla_ae_lines_gt          xal2
12748          ,  xla_ae_lines_gt          xal
12749          ,  gl_code_combinations     gcc
12750       WHERE xal2.source_distribution_type                  = xal.source_distribution_type
12751       AND   NVL(xal2.source_distribution_id_num_1,C_NUM)   = NVL(xal.source_distribution_id_num_1,C_NUM)
12752       AND   NVL(xal2.source_distribution_id_num_2,C_NUM)   = NVL(xal.source_distribution_id_num_2,C_NUM)
12753       AND   NVL(xal2.source_distribution_id_num_3,C_NUM)   = NVL(xal.source_distribution_id_num_3,C_NUM)
12754       AND   NVL(xal2.source_distribution_id_num_4,C_NUM)   = NVL(xal.source_distribution_id_num_4,C_NUM)
12755       AND   NVL(xal2.source_distribution_id_num_5,C_NUM)   = NVL(xal.source_distribution_id_num_5,C_NUM)
12756       AND   NVL(xal2.source_distribution_id_char_1,C_CHAR) = NVL(xal.source_distribution_id_char_1,C_CHAR)
12757       AND   NVL(xal2.source_distribution_id_char_2,C_CHAR) = NVL(xal.source_distribution_id_char_2,C_CHAR)
12758       AND   NVL(xal2.source_distribution_id_char_3,C_CHAR) = NVL(xal.source_distribution_id_char_3,C_CHAR)
12759       AND   NVL(xal2.source_distribution_id_char_4,C_CHAR) = NVL(xal.source_distribution_id_char_4,C_CHAR)
12760       AND   NVL(xal2.source_distribution_id_char_5,C_CHAR) = NVL(xal.source_distribution_id_char_5,C_CHAR)
12761       AND   xal2.event_id                      = xal.event_id
12762       AND   xal2.ledger_id                     = xal.ledger_id
12763       AND   xal2.balance_type_code             = xal.balance_type_code
12764       AND   xal2.event_class_code              = xal.event_class_code
12765       AND   xal2.event_type_code               = xal.event_type_code
12766       AND   xal2.line_definition_owner_code    = xal.line_definition_owner_code
12767       AND   xal2.line_definition_code          = xal.line_definition_code
12768       AND   xal2.natural_side_code             = DECODE(xal.natural_side_code, 'C', 'D', 'C')
12769       AND   gcc.code_combination_id(+)         = xal2.code_combination_id -- bug4384869
12770    -- AND   nvl(xal2.reversal_code, 'A') not in (C_DUMMY_SAME, C_DUMMY_PRIOR)  -- 5001981
12771       AND   xal.reversal_code = C_DUMMY_SAME
12772       AND   NVL(xal2.header_num,0) = 0  -- 4655713b  excludes MPA/Accrual Reversal lines,cannot be used for bflow
12773       GROUP BY xal.ledger_id    -- 5068675
12774               ,xal.ref_ae_header_id
12775               ,xal.temp_line_num
12776               ,xal.ae_header_id
12777               ,xal.header_num;
12778 
12779       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12780          trace
12781             (p_msg      => 'Number of events = '||l_array_join_ledger_id.COUNT
12782             ,p_level    => C_LEVEL_STATEMENT
12783             ,p_module   => l_log_module);
12784 
12785          FOR i IN 1..l_array_join_ledger_id.COUNT LOOP
12786              trace
12787             (p_msg      => 'from array    ledger='||l_array_join_ledger_id(i)|| ' ref_ae_header='||l_array_join_ref_ae_header_id(i)||
12788                            ' temp_line='||l_array_join_temp_line_num(i)|| ' ae_header='||l_array_join_ae_header_id(i)||
12789                            ' header_num='||l_array_join_header_num(i)||
12790                            ' s1='||l_array_same_segment1(i)||' s2='||l_array_same_segment2(i)||
12791                            ' s3='||l_array_same_segment3(i)||' s4='||l_array_same_segment4(i)||
12792                            ' s5='||l_array_same_segment5(i)||' s6='||l_array_same_segment6(i)||
12793                            ' s7='||l_array_same_segment7(i)||' s8='||l_array_same_segment8(i)||
12794                            ' s9='||l_array_same_segment9(i)||' s10='||l_array_same_segment10(i)||
12795                            ' s11='||l_array_same_segment11(i)||' s12='||l_array_same_segment12(i)||
12796                            ' s13='||l_array_same_segment13(i)||' s14='||l_array_same_segment14(i)||
12797                            ' s15='||l_array_same_segment15(i)||' s16='||l_array_same_segment16(i)||
12798                            ' s17='||l_array_same_segment17(i)||' s18='||l_array_same_segment18(i)||
12799                            ' s19='||l_array_same_segment19(i)||' s20='||l_array_same_segment20(i)||
12800                            ' s21='||l_array_same_segment21(i)||' s22='||l_array_same_segment22(i)||
12801                            ' s23='||l_array_same_segment23(i)||' s24='||l_array_same_segment24(i)||
12802                            ' s25='||l_array_same_segment25(i)||' s26='||l_array_same_segment26(i)||
12803                            ' s27='||l_array_same_segment27(i)||' s28='||l_array_same_segment28(i)||
12804                            ' s29='||l_array_same_segment29(i)||' s30='||l_array_same_segment30(i)||
12805                            ' ccid='||l_array_same_ccid(i)
12806             ,p_level    => C_LEVEL_STATEMENT
12807             ,p_module   => l_log_module);
12808          END LOOP;
12809 
12810          FOR i IN (select * from xla_ae_Lines_gt where reversal_code=C_DUMMY_SAME) LOOP
12811             trace
12812             (p_msg      => 'ae_lines_gt  SE dist ledger='||i.ledger_id||' ref_ae_header='||i.ref_ae_header_id||
12813                            ' temp_line='||i.temp_line_num||' ae_header='||i.ae_header_id||' header_num='||i.header_num||
12814                            ' bflow='||i.business_method_code||
12815                            ' line='||i.line_definition_code|| ' dist='||i.source_distribution_type||' rev='||i.reversal_code||
12816                            ' n1='||i.source_distribution_id_num_1|| ' n2='||i.source_distribution_id_num_2||
12817                            ' n3='||i.source_distribution_id_num_3|| ' n4='||i.source_distribution_id_num_4||
12818                            ' n5='||i.source_distribution_id_num_5|| ' c1='||i.source_distribution_id_char_1||
12819                            ' c2='||i.source_distribution_id_char_2|| ' c3='||i.source_distribution_id_char_3||
12820                            ' c4='||i.source_distribution_id_char_4|| ' c5='||i.source_distribution_id_char_5||
12821                            ' bal='||i.balance_type_code|| ' side='||i.natural_side_code||
12822                            ' rev='||i.reversal_code
12823             ,p_level    => C_LEVEL_STATEMENT
12824             ,p_module   => l_log_module);
12825          END LOOP;
12826 
12827          FOR i IN (select * from xla_ae_Lines_gt where reversal_code=C_DUMMY_SAME) LOOP
12828              trace
12829             (p_msg      => '                seg s1='||i.segment1||' s2='||i.segment2|| ' s3='||i.segment3||' s4='||i.segment4||
12830                                        ' s5='||i.segment5||' s6='||i.segment6|| ' s7='||i.segment7||' s8='||i.segment8||
12831                                        ' s9='||i.segment9||' s10='||i.segment10|| ' s11='||i.segment11||' s12='||i.segment12||
12832                                        ' s13='||i.segment13||' s14='||i.segment14|| ' s15='||i.segment15||' s16='||i.segment16||
12833                                        ' s17='||i.segment17||' s18='||i.segment18|| ' s19='||i.segment19||' s20='||i.segment20||
12834                                        ' s21='||i.segment21||' s22='||i.segment22|| ' s23='||i.segment23||' s24='||i.segment24||
12835                                        ' s25='||i.segment25||' s26='||i.segment26|| ' s27='||i.segment27||' s28='||i.segment28||
12836                                        ' s29='||i.segment29||' s30='||i.segment30||' ccid='||i.code_combination_id
12837             ,p_level    => C_LEVEL_STATEMENT
12838             ,p_module   => l_log_module);
12839          END LOOP;
12840 
12841       END IF;
12842 
12843       FORALL i IN 1..l_array_join_ledger_id.COUNT
12844          UPDATE xla_ae_lines_gt xal
12845          SET      segment1  = l_array_same_segment1(i)
12846                 , segment2  = l_array_same_segment2(i)
12847                 , segment3  = l_array_same_segment3(i)
12848                 , segment4  = l_array_same_segment4(i)
12849                 , segment5  = l_array_same_segment5(i)
12850                 , segment6  = l_array_same_segment6(i)
12851                 , segment7  = l_array_same_segment7(i)
12852                 , segment8  = l_array_same_segment8(i)
12853                 , segment9  = l_array_same_segment9(i)
12854                 , segment10 = l_array_same_segment10(i)
12855                 , segment11 = l_array_same_segment11(i)
12856                 , segment12 = l_array_same_segment12(i)
12857                 , segment13 = l_array_same_segment13(i)
12858                 , segment14 = l_array_same_segment14(i)
12859                 , segment15 = l_array_same_segment15(i)
12860                 , segment16 = l_array_same_segment16(i)
12861                 , segment17 = l_array_same_segment17(i)
12862                 , segment18 = l_array_same_segment18(i)
12863                 , segment19 = l_array_same_segment19(i)
12864                 , segment20 = l_array_same_segment20(i)
12865                 , segment21 = l_array_same_segment21(i)
12866                 , segment22 = l_array_same_segment22(i)
12867                 , segment23 = l_array_same_segment23(i)
12868                 , segment24 = l_array_same_segment24(i)
12869                 , segment25 = l_array_same_segment25(i)
12870                 , segment26 = l_array_same_segment26(i)
12871                 , segment27 = l_array_same_segment27(i)
12872                 , segment28 = l_array_same_segment28(i)
12873                 , segment29 = l_array_same_segment29(i)
12874                 , segment30 = l_array_same_segment30(i)
12875                 , code_combination_id  = l_array_same_ccid(i)
12876                 , code_combination_status_code = DECODE(l_array_same_ccid(i),NULL,C_PROCESSING     -- 4655713b used in Create_CCID
12877                                                                                  ,C_NOT_PROCESSED) -- 4655713  used in Override_CCID
12878                 , description          = l_array_same_description(i)
12879                 , reversal_code        = l_array_same_reversal_code(i)
12880            WHERE xal.ledger_id         = l_array_join_ledger_id(i)
12881            AND   xal.ref_ae_header_id  = l_array_join_ref_ae_header_id(i)
12882            AND   xal.temp_line_num     = l_array_join_temp_line_num(i)
12883            AND   xal.ae_header_id      = l_array_join_ae_header_id(i)
12884            AND   NVL(xal.header_num,0) = l_array_join_header_num(i);
12885 
12886       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12887          trace
12888             (p_msg      => 'BusinessFlowSameEntries - no of rows updated = '||SQL%ROWCOUNT
12889             ,p_level    => C_LEVEL_STATEMENT
12890             ,p_module   => l_log_module);
12891       END IF;
12892 
12893       -------------------------------------------------------------------------------------------------------------------------
12894       -- 4655713b Updates MPA-Accrual (not MPA-Recognition) and Accrual Reversal lines with Same Entry
12895       -------------------------------------------------------------------------------------------------------------------------
12896    IF xla_accounting_pkg.g_mpa_accrual_exists = 'Y' THEN                                                                -- 7128871
12897             SELECT /*+ Leading (xal1,xah1,xal2) index(xah1 XLA_AE_HEADERS_GT_U1) index(xal2 XLA_AE_LINES_GT_N2) no_expand */  -- 7128871
12898                    xal2.segment1,  xal2.segment2,  xal2.segment3,  xal2.segment4,  xal2.segment5
12899             ,xal2.segment6,  xal2.segment7,  xal2.segment8,  xal2.segment9,  xal2.segment10
12900             ,xal2.segment11, xal2.segment12, xal2.segment13, xal2.segment14, xal2.segment15
12901             ,xal2.segment16, xal2.segment17, xal2.segment18, xal2.segment19, xal2.segment20
12902             ,xal2.segment21, xal2.segment22, xal2.segment23, xal2.segment24, xal2.segment25
12903             ,xal2.segment26, xal2.segment27, xal2.segment28, xal2.segment29, xal2.segment30
12904             ,xal2.code_combination_id
12905             ,xal2.code_combination_status_code
12906             ,DECODE(NVL(xal1.inherit_desc_flag,'N'), 'Y', xal2.description, xal1.description)
12907             -- join conditions
12908             ,xal1.ledger_id
12909             ,xal1.ref_ae_header_id
12910             ,xal1.temp_line_num
12911             ,xal1.ae_header_id
12912             ,xal1.header_num
12913       BULK COLLECT INTO
12914              l_array_mpa_segment1 ,l_array_mpa_segment2 ,l_array_mpa_segment3 ,l_array_mpa_segment4 ,l_array_mpa_segment5
12915             ,l_array_mpa_segment6 ,l_array_mpa_segment7 ,l_array_mpa_segment8 ,l_array_mpa_segment9 ,l_array_mpa_segment10
12916             ,l_array_mpa_segment11 ,l_array_mpa_segment12 ,l_array_mpa_segment13 ,l_array_mpa_segment14 ,l_array_mpa_segment15
12917             ,l_array_mpa_segment16 ,l_array_mpa_segment17 ,l_array_mpa_segment18 ,l_array_mpa_segment19 ,l_array_mpa_segment20
12918             ,l_array_mpa_segment21 ,l_array_mpa_segment22 ,l_array_mpa_segment23 ,l_array_mpa_segment24 ,l_array_mpa_segment25
12919             ,l_array_mpa_segment26 ,l_array_mpa_segment27 ,l_array_mpa_segment28 ,l_array_mpa_segment29 ,l_array_mpa_segment30
12920             ,l_array_mpa_ccid
12921             ,l_array_mpa_ccid_status_code
12922             ,l_array_mpa_description
12923             -- join conditions
12924             ,l_array_mpa_ledger_id
12925             ,l_array_mpa_ref_ae_header_id
12926             ,l_array_mpa_temp_line_num
12927             ,l_array_mpa_ae_header_id
12928             ,l_array_mpa_header_num
12929       FROM  xla_ae_lines_gt   xal2   -- Original line
12930            ,xla_ae_headers_gt xah1
12931            ,xla_ae_lines_gt   xal1   -- MPA line
12932       WHERE xal2.source_distribution_type                  = xal1.source_distribution_type
12933       AND   NVL(xal2.source_distribution_id_num_1,C_NUM)   = NVL(xal1.source_distribution_id_num_1,C_NUM)
12934       AND   NVL(xal2.source_distribution_id_num_2,C_NUM)   = NVL(xal1.source_distribution_id_num_2,C_NUM)
12935       AND   NVL(xal2.source_distribution_id_num_3,C_NUM)   = NVL(xal1.source_distribution_id_num_3,C_NUM)
12936       AND   NVL(xal2.source_distribution_id_num_4,C_NUM)   = NVL(xal1.source_distribution_id_num_4,C_NUM)
12937       AND   NVL(xal2.source_distribution_id_num_5,C_NUM)   = NVL(xal1.source_distribution_id_num_5,C_NUM)
12938       AND   NVL(xal2.source_distribution_id_char_1,C_CHAR) = NVL(xal1.source_distribution_id_char_1,C_CHAR)
12939       AND   NVL(xal2.source_distribution_id_char_2,C_CHAR) = NVL(xal1.source_distribution_id_char_2,C_CHAR)
12940       AND   NVL(xal2.source_distribution_id_char_3,C_CHAR) = NVL(xal1.source_distribution_id_char_3,C_CHAR)
12941       AND   NVL(xal2.source_distribution_id_char_4,C_CHAR) = NVL(xal1.source_distribution_id_char_4,C_CHAR)
12942       AND   NVL(xal2.source_distribution_id_char_5,C_CHAR) = NVL(xal1.source_distribution_id_char_5,C_CHAR)
12943       AND   xal2.event_id                      = xal1.event_id
12944       AND   xal2.ledger_id                     = xal1.ledger_id
12945       AND   xal2.balance_type_code             = xal1.balance_type_code
12946       AND   xal2.event_class_code              = xal1.event_class_code
12947       AND   xal2.event_type_code               = xal1.event_type_code
12948       AND   xal2.line_definition_owner_code    = xal1.line_definition_owner_code
12949       AND   xal2.line_definition_code          = xal1.line_definition_code
12950       AND   xal2.ACCOUNTING_LINE_TYPE_CODE     = xal1.ACCOUNTING_LINE_TYPE_CODE
12951       AND   xal2.ACCOUNTING_LINE_CODE          = xal1.ACCOUNTING_LINE_CODE
12952       --
12953       AND   xah1.ledger_id        = xal1.ledger_id
12954       AND   xah1.ae_header_id     = xal1.ae_header_id
12955       AND   xah1.header_num       = xal1.header_num
12956       AND ((xah1.parent_ae_line_num IS NOT NULL AND xal2.temp_line_num = xah1.parent_ae_line_num)  -- MPA
12957       OR    xah1.parent_ae_line_num IS NULL)                                                       -- Accrual Reversal
12958       --  7128871  -------------------------------------
12959       AND XAL1.BALANCE_TYPE_CODE  = XAH1.BALANCE_TYPE_CODE
12960       AND XAL2.AE_HEADER_ID       = XAL1.AE_HEADER_ID
12961       --------------------------------------------------
12962       AND   xal2.header_num       = 0
12963       AND   xal2.reversal_code IS NULL     -- 5443083 found the same entry
12964       AND   xal1.reversal_code    = C_MPA_SAME_ENTRY;
12965 
12966       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12967          trace
12968             (p_msg      => 'BusinessFlowSameEntries - no of MPA/AccRev rows found = '||l_array_mpa_ledger_id.COUNT
12969             ,p_level    => C_LEVEL_STATEMENT
12970             ,p_module   => l_log_module);
12971          FOR i IN 1..l_array_mpa_ledger_id.COUNT LOOP
12972             trace
12973             (p_msg      => 'BusinessFlowSameEntries - mpa lines  ledger='||l_array_mpa_ledger_id(i)||
12974                            ' ref_header='||l_array_mpa_ref_ae_header_id(i)||
12975                            ' temp_line='||l_array_mpa_temp_line_num(i)||
12976                            ' ae_header='||l_array_mpa_ae_header_id(i)||
12977                            ' header_num='||l_array_mpa_header_num(i)
12978             ,p_level    => C_LEVEL_STATEMENT
12979             ,p_module   => l_log_module);
12980          END LOOP;
12981       END IF;
12982 
12983       FORALL i in 1..l_array_mpa_ledger_id.COUNT
12984          UPDATE xla_ae_lines_gt xal
12985          SET      segment1  = l_array_mpa_segment1(i)
12986                 , segment2  = l_array_mpa_segment2(i)
12987                 , segment3  = l_array_mpa_segment3(i)
12988                 , segment4  = l_array_mpa_segment4(i)
12989                 , segment5  = l_array_mpa_segment5(i)
12990                 , segment6  = l_array_mpa_segment6(i)
12991                 , segment7  = l_array_mpa_segment7(i)
12992                 , segment8  = l_array_mpa_segment8(i)
12993                 , segment9  = l_array_mpa_segment9(i)
12994                 , segment10 = l_array_mpa_segment10(i)
12995                 , segment11 = l_array_mpa_segment11(i)
12996                 , segment12 = l_array_mpa_segment12(i)
12997                 , segment13 = l_array_mpa_segment13(i)
12998                 , segment14 = l_array_mpa_segment14(i)
12999                 , segment15 = l_array_mpa_segment15(i)
13000                 , segment16 = l_array_mpa_segment16(i)
13001                 , segment17 = l_array_mpa_segment17(i)
13002                 , segment18 = l_array_mpa_segment18(i)
13003                 , segment19 = l_array_mpa_segment19(i)
13004                 , segment20 = l_array_mpa_segment20(i)
13005                 , segment21 = l_array_mpa_segment21(i)
13006                 , segment22 = l_array_mpa_segment22(i)
13007                 , segment23 = l_array_mpa_segment23(i)
13008                 , segment24 = l_array_mpa_segment24(i)
13009                 , segment25 = l_array_mpa_segment25(i)
13010                 , segment26 = l_array_mpa_segment26(i)
13011                 , segment27 = l_array_mpa_segment27(i)
13012                 , segment28 = l_array_mpa_segment28(i)
13013                 , segment29 = l_array_mpa_segment29(i)
13014                 , segment30 = l_array_mpa_segment30(i)
13015                 , code_combination_id          = l_array_mpa_ccid(i)
13016                 , code_combination_status_code = l_array_mpa_ccid_status_code(i)  -- 4655713 used in Override_CCID
13017                 , description          = l_array_mpa_description(i)
13018                 , reversal_code        = null
13019            WHERE xal.ledger_id         = l_array_mpa_ledger_id(i)
13020            AND   xal.ref_ae_header_id  = l_array_mpa_ref_ae_header_id(i)
13021            AND   xal.temp_line_num     = l_array_mpa_temp_line_num(i)
13022            AND   xal.ae_header_id      = l_array_mpa_ae_header_id(i)
13023            AND   NVL(xal.header_num,0) = l_array_mpa_header_num(i);
13024       -------------------------------------------------------------------------------------------------------------------------
13025    END IF;  -- 7128871  xla_accounting_pkg.g_mpa_accrual_exists = 'Y'
13026 
13027 
13028      /*-------------------------------------------------------------------------------------------------------------------
13029      -- Replaced for performance fix above
13030      ---------------------------------------------------------------------------------------------------------------------
13031       UPDATE xla_ae_lines_gt xal
13032       SET (segment1,  segment2,  segment3,  segment4,  segment5,  segment6,  segment7,  segment8,  segment9,  segment10
13033           ,segment11, segment12, segment13, segment14, segment15, segment16, segment17, segment18, segment19, segment20
13034           ,segment21, segment22, segment23, segment24, segment25, segment26, segment27, segment28, segment29, segment30
13035           ,code_combination_id
13036           ,description
13037           ,reversal_code) =
13038           (SELECT CASE WHEN count(*) = 1
13039                        THEN MIN(DECODE(xal.segment1, C_CHAR, NVL(xal2.segment1,gcc.segment1), xal.segment1))
13040                        ELSE MIN(DECODE(xal.segment1, C_CHAR, NULL, xal.segment1)) END
13041                 , CASE WHEN count(*) = 1
13042                        THEN MIN(DECODE(xal.segment2, C_CHAR, NVL(xal2.segment2,gcc.segment2), xal.segment2))
13043                        ELSE MIN(DECODE(xal.segment2, C_CHAR, NULL, xal.segment2)) END
13044                 , CASE WHEN count(*) = 1
13045                        THEN MIN(DECODE(xal.segment3, C_CHAR, NVL(xal2.segment3,gcc.segment3), xal.segment3))
13046                        ELSE MIN(DECODE(xal.segment3, C_CHAR, NULL, xal.segment3)) END
13047                 , CASE WHEN count(*) = 1
13048                        THEN MIN(DECODE(xal.segment4, C_CHAR, NVL(xal2.segment4,gcc.segment4), xal.segment4))
13049                        ELSE MIN(DECODE(xal.segment4, C_CHAR, NULL, xal.segment4)) END
13050                 , CASE WHEN count(*) = 1
13051                        THEN MIN(DECODE(xal.segment5, C_CHAR, NVL(xal2.segment5,gcc.segment5), xal.segment5))
13052                        ELSE MIN(DECODE(xal.segment5, C_CHAR, NULL, xal.segment5)) END
13053                 , CASE WHEN count(*) = 1
13054                        THEN MIN(DECODE(xal.segment6, C_CHAR, NVL(xal2.segment6,gcc.segment6), xal.segment6))
13055                        ELSE MIN(DECODE(xal.segment6, C_CHAR, NULL, xal.segment6)) END
13056                 , CASE WHEN count(*) = 1
13057                        THEN MIN(DECODE(xal.segment7, C_CHAR, NVL(xal2.segment7,gcc.segment7), xal.segment7))
13058                        ELSE MIN(DECODE(xal.segment7, C_CHAR, NULL, xal.segment7)) END
13059                 , CASE WHEN count(*) = 1
13060                        THEN MIN(DECODE(xal.segment8, C_CHAR, NVL(xal2.segment8,gcc.segment8), xal.segment8))
13061                        ELSE MIN(DECODE(xal.segment8, C_CHAR, NULL, xal.segment8)) END
13062                 , CASE WHEN count(*) = 1
13063                        THEN MIN(DECODE(xal.segment9, C_CHAR, NVL(xal2.segment9,gcc.segment9), xal.segment9))
13064                        ELSE MIN(DECODE(xal.segment9, C_CHAR, NULL, xal.segment9)) END
13065                 , CASE WHEN count(*) = 1
13066                        THEN MIN(DECODE(xal.segment10, C_CHAR, NVL(xal2.segment10,gcc.segment10), xal.segment10))
13067                        ELSE MIN(DECODE(xal.segment10, C_CHAR, NULL, xal.segment10)) END
13068                 , CASE WHEN count(*) = 1
13069                        THEN MIN(DECODE(xal.segment11, C_CHAR, NVL(xal2.segment11,gcc.segment11), xal.segment11))
13070                        ELSE MIN(DECODE(xal.segment11, C_CHAR, NULL, xal.segment11)) END
13071                 , CASE WHEN count(*) = 1
13072                        THEN MIN(DECODE(xal.segment12, C_CHAR, NVL(xal2.segment12,gcc.segment12), xal.segment12))
13073                        ELSE MIN(DECODE(xal.segment12, C_CHAR, NULL, xal.segment12)) END
13074                 , CASE WHEN count(*) = 1
13075                        THEN MIN(DECODE(xal.segment13, C_CHAR, NVL(xal2.segment13,gcc.segment13), xal.segment13))
13076                        ELSE MIN(DECODE(xal.segment13, C_CHAR, NULL, xal.segment13)) END
13077                 , CASE WHEN count(*) = 1
13078                        THEN MIN(DECODE(xal.segment14, C_CHAR, NVL(xal2.segment14,gcc.segment14), xal.segment14))
13079                        ELSE MIN(DECODE(xal.segment14, C_CHAR, NULL, xal.segment14)) END
13080                 , CASE WHEN count(*) = 1
13081                        THEN MIN(DECODE(xal.segment15, C_CHAR, NVL(xal2.segment15,gcc.segment15), xal.segment15))
13082                        ELSE MIN(DECODE(xal.segment15, C_CHAR, NULL, xal.segment15)) END
13083                 , CASE WHEN count(*) = 1
13084                        THEN MIN(DECODE(xal.segment16, C_CHAR, NVL(xal2.segment16,gcc.segment16), xal.segment16))
13085                        ELSE MIN(DECODE(xal.segment16, C_CHAR, NULL, xal.segment16)) END
13086                 , CASE WHEN count(*) = 1
13087                        THEN MIN(DECODE(xal.segment17, C_CHAR, NVL(xal2.segment17,gcc.segment17), xal.segment17))
13088                        ELSE MIN(DECODE(xal.segment17, C_CHAR, NULL, xal.segment17)) END
13089                 , CASE WHEN count(*) = 1
13090                        THEN MIN(DECODE(xal.segment18, C_CHAR, NVL(xal2.segment18,gcc.segment18), xal.segment18))
13091                        ELSE MIN(DECODE(xal.segment18, C_CHAR, NULL, xal.segment18)) END
13092                 , CASE WHEN count(*) = 1
13093                        THEN MIN(DECODE(xal.segment19, C_CHAR, NVL(xal2.segment19,gcc.segment19), xal.segment19))
13094                        ELSE MIN(DECODE(xal.segment19, C_CHAR, NULL, xal.segment19)) END
13095                 , CASE WHEN count(*) = 1
13096                        THEN MIN(DECODE(xal.segment20, C_CHAR, NVL(xal2.segment20,gcc.segment20), xal.segment20))
13097                        ELSE MIN(DECODE(xal.segment20, C_CHAR, NULL, xal.segment20)) END
13098                 , CASE WHEN count(*) = 1
13099                        THEN MIN(DECODE(xal.segment21, C_CHAR, NVL(xal2.segment21,gcc.segment21), xal.segment21))
13100                        ELSE MIN(DECODE(xal.segment21, C_CHAR, NULL, xal.segment21)) END
13101                 , CASE WHEN count(*) = 1
13102                        THEN MIN(DECODE(xal.segment22, C_CHAR, NVL(xal2.segment22,gcc.segment22), xal.segment22))
13103                        ELSE MIN(DECODE(xal.segment22, C_CHAR, NULL, xal.segment22)) END
13104                 , CASE WHEN count(*) = 1
13105                        THEN MIN(DECODE(xal.segment23, C_CHAR, NVL(xal2.segment23,gcc.segment23), xal.segment23))
13106                        ELSE MIN(DECODE(xal.segment23, C_CHAR, NULL, xal.segment23)) END
13107                 , CASE WHEN count(*) = 1
13108                        THEN MIN(DECODE(xal.segment24, C_CHAR, NVL(xal2.segment24,gcc.segment24), xal.segment24))
13109                        ELSE MIN(DECODE(xal.segment24, C_CHAR, NULL, xal.segment24)) END
13110                 , CASE WHEN count(*) = 1
13111                        THEN MIN(DECODE(xal.segment25, C_CHAR, NVL(xal2.segment25,gcc.segment25), xal.segment25))
13112                        ELSE MIN(DECODE(xal.segment25, C_CHAR, NULL, xal.segment25)) END
13113                 , CASE WHEN count(*) = 1
13114                        THEN MIN(DECODE(xal.segment26, C_CHAR, NVL(xal2.segment26,gcc.segment26), xal.segment26))
13115                        ELSE MIN(DECODE(xal.segment26, C_CHAR, NULL, xal.segment26)) END
13116                 , CASE WHEN count(*) = 1
13117                        THEN MIN(DECODE(xal.segment27, C_CHAR, NVL(xal2.segment27,gcc.segment27), xal.segment27))
13118                        ELSE MIN(DECODE(xal.segment27, C_CHAR, NULL, xal.segment27)) END
13119                 , CASE WHEN count(*) = 1
13120                        THEN MIN(DECODE(xal.segment28, C_CHAR, NVL(xal2.segment28,gcc.segment28), xal.segment28))
13121                        ELSE MIN(DECODE(xal.segment28, C_CHAR, NULL, xal.segment28)) END
13122                 , CASE WHEN count(*) = 1
13123                        THEN MIN(DECODE(xal.segment29, C_CHAR, NVL(xal2.segment29,gcc.segment29), xal.segment29))
13124                        ELSE MIN(DECODE(xal.segment29, C_CHAR, NULL, xal.segment29)) END
13125                 , CASE WHEN count(*) = 1
13126                        THEN MIN(DECODE(xal.segment30, C_CHAR, NVL(xal2.segment30,gcc.segment30), xal.segment30))
13127                        ELSE MIN(DECODE(xal.segment30, C_CHAR, NULL, xal.segment30)) END
13128                 , CASE WHEN count(*) = 1
13129                        THEN MIN(DECODE(xal.code_combination_id, C_NUM, xal2.code_combination_id, xal.code_combination_id))
13130                        ELSE -1 END
13131                 , CASE WHEN count(*) = 1
13132                        THEN MIN(DECODE(xal.inherit_desc_flag, 'Y', xal2.description, xal.description)) ELSE NULL END
13133                 , CASE WHEN count(*) = 1
13134                        THEN NULL ELSE xal.reversal_code END
13135            FROM  xla_ae_lines_gt          xal2
13136               ,  gl_code_combinations     gcc   -- bug4384869
13137            WHERE xal2.source_distribution_type      = xal.source_distribution_type
13138            AND   NVL(xal2.source_distribution_id_num_1,C_NUM)   = NVL(xal.source_distribution_id_num_1,C_NUM)
13139            AND   NVL(xal2.source_distribution_id_num_2,C_NUM)   = NVL(xal.source_distribution_id_num_2,C_NUM)
13140            AND   NVL(xal2.source_distribution_id_num_3,C_NUM)   = NVL(xal.source_distribution_id_num_3,C_NUM)
13141            AND   NVL(xal2.source_distribution_id_num_4,C_NUM)   = NVL(xal.source_distribution_id_num_4,C_NUM)
13142            AND   NVL(xal2.source_distribution_id_num_5,C_NUM)   = NVL(xal.source_distribution_id_num_5,C_NUM)
13143            AND   NVL(xal2.source_distribution_id_char_1,C_CHAR) = NVL(xal.source_distribution_id_char_1,C_CHAR)
13144            AND   NVL(xal2.source_distribution_id_char_2,C_CHAR) = NVL(xal.source_distribution_id_char_2,C_CHAR)
13145            AND   NVL(xal2.source_distribution_id_char_3,C_CHAR) = NVL(xal.source_distribution_id_char_3,C_CHAR)
13146            AND   NVL(xal2.source_distribution_id_char_4,C_CHAR) = NVL(xal.source_distribution_id_char_4,C_CHAR)
13147            AND   NVL(xal2.source_distribution_id_char_5,C_CHAR) = NVL(xal.source_distribution_id_char_5,C_CHAR)
13148            AND   xal2.event_id                      = xal.event_id
13149            AND   xal2.ledger_id                     = xal.ledger_id
13150            AND   xal2.balance_type_code             = xal.balance_type_code
13151            AND   xal2.event_class_code              = xal.event_class_code
13152            AND   xal2.event_type_code               = xal.event_type_code
13153            AND   xal2.line_definition_owner_code    = xal.line_definition_owner_code
13154            AND   xal2.line_definition_code          = xal.line_definition_code
13155            AND   xal2.natural_side_code             = DECODE(xal.natural_side_code, 'C', 'D', 'C')
13156            AND   gcc.code_combination_id(+)         = xal2.code_combination_id -- bug4384869
13157            AND   nvl(xal2.reversal_code, 'A') not in (C_DUMMY_SAME, C_DUMMY_PRIOR)
13158            )
13159       WHERE xal.reversal_code = C_DUMMY_SAME;
13160      -------------------------------------------------------------------------------------------------------------------*/
13161 
13162       --
13163       -- Handle the same entry line that are not processed - ERROR
13164       --
13165       OPEN c_bflow_unprocessed_lines;
13166       LOOP FETCH c_bflow_unprocessed_lines BULK COLLECT INTO l_array_ae_header_id,
13167                                                              l_array_temp_line_num,        -- 5443083 l_array_ae_line_num
13168                                                              l_array_event_id,
13169                                                              l_array_ledger_id,
13170                                                              l_array_balance_type_code,
13171                                                              l_array_entity_id,
13172                                                              l_array_ref_ae_header_id,     -- 5443083
13173                                                              l_array_header_num,           -- 5443083
13174                                                              l_array_ledger_category,      -- 5443083
13175                                                              l_array_zero_amount_flag      -- 5443083
13176                                                              LIMIT C_BULK_LIMIT;
13177 
13178          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13179             trace
13180                (p_module => l_log_module
13181                ,p_msg => 'Count of unprocessed same entry =' || l_array_ae_header_id.COUNT
13182                ,p_level => C_LEVEL_STATEMENT
13183                );
13184          END IF;
13185 
13186          IF l_array_ae_header_id.COUNT = 0 THEN
13187               EXIT;
13188          END IF;
13189 
13190 
13191          FOR i IN 1..l_array_ae_header_id.COUNT LOOP
13192 
13193              IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13194                 trace
13195                    (p_module => l_log_module
13196                    ,p_msg => 'same entry ledger='||l_array_ledger_id(i)||
13197                              ' category='||l_array_ledger_category(i)||
13198                              ' ref_ae_header='||l_array_ref_ae_header_id(i)||
13199                              ' line='||l_array_temp_line_num(i)||
13200                              ' ae_header='||l_array_ae_header_id(i)||
13201                              ' header_num='||l_array_header_num(i)||
13202                              ' zero='||l_array_zero_amount_flag(i)||
13203                              ' event='||l_array_event_id(i)||
13204                              ' bal_type='||l_array_balance_type_code(i)
13205                    ,p_level => C_LEVEL_STATEMENT
13206                    );
13207              END IF;
13208 
13209              IF l_array_zero_amount_flag(i) = 'Y' AND l_array_ledger_category(i) IN ('ALC','SECONDARY') THEN  -- 5443083
13210 
13211                 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13212                    trace
13213                       (p_module => l_log_module
13214                       ,p_msg => 'zero amt same entry ledger='||l_array_ledger_id(i)||
13215                                 ' ref_ae_header='||l_array_ref_ae_header_id(i)||
13216                                 ' temp_line='||l_array_temp_line_num(i)||
13217                                 ' ae_header='||l_array_ae_header_id(i)||
13218                                 ' header_num='||l_array_header_num(i)||
13219                                 ' event='||l_array_event_id(i)
13220                    ,p_level => C_LEVEL_STATEMENT
13221                    );
13222                 END IF;
13223 
13224                 DELETE xla_ae_lines_gt
13225                 WHERE  ledger_id        = l_array_ledger_id(i)
13226                 AND    ref_ae_header_id = l_array_ref_ae_header_id(i)
13227                 AND    temp_line_num    = l_array_temp_line_num(i)
13228                 AND    ae_header_id     = l_array_ae_header_id(i)
13229                 AND    header_num       = l_array_header_num(i);
13230 
13231                 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13232                    trace
13233                       (p_module => l_log_module
13234                       ,p_msg => '     zero amt line deleted='||SQL%ROWCOUNT
13235                       ,p_level => C_LEVEL_STATEMENT
13236                    );
13237                 END IF;
13238 
13239                 DELETE xla_ae_headers_gt hgt
13240                 WHERE  ledger_id         = l_array_ledger_id(i)
13241                 AND    ae_header_id      = l_array_ae_header_id(i)
13242                 AND    balance_type_code = l_array_balance_type_code(i)
13243                 AND    header_num        = l_array_header_num(i)
13244                 AND NOT EXISTS  (SELECT /*+ index(lgt XLA_AE_LINES_GT_N2) */ 1
13245                                  FROM   xla_ae_lines_gt lgt
13246                                  WHERE  lgt.ledger_id    = hgt.ledger_id
13247                                  AND    lgt.ae_header_id = hgt.ae_header_id
13248                                  AND    lgt.header_num   = hgt.header_num
13249                                  AND    lgt.balance_type_code = hgt.balance_type_code);
13250 
13251                 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13252                    trace
13253                       (p_module => l_log_module
13254                       ,p_msg => '     zero amt header deleted='||SQL%ROWCOUNT
13255                       ,p_level => C_LEVEL_STATEMENT
13256                    );
13257                 END IF;
13258 
13259              ELSE
13260                 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status  :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
13261                 xla_accounting_err_pkg.build_message
13262                          (p_appli_s_name  => 'XLA'
13263                          ,p_msg_name      => 'XLA_AP_BFLOW_SE_NOT_FOUND'
13264                          ,p_entity_id     => l_array_entity_id(i)    -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13265                          ,p_event_id      => l_array_event_id(i)     -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13266                          ,p_ledger_id     => l_array_ledger_id(i));  -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13267              END IF;
13268          END LOOP;
13269 
13270          --
13271          -- Update JE lines for those that encountered error
13272          --
13273          FORALL i IN 1..l_array_balance_type_code.COUNT
13274                  UPDATE xla_ae_lines_gt
13275                  SET    description = DECODE(description, C_CHAR, NULL, description)
13276                       , code_combination_id = DECODE(code_combination_id, C_NUM, -1, code_combination_id)
13277                       , code_combination_status_code = C_INVALID     -- 4655713
13278                       , segment1  = DECODE(segment1,   C_CHAR, NULL, segment1)
13279                       , segment2  = DECODE(segment2,   C_CHAR, NULL, segment2)
13280                       , segment3  = DECODE(segment3,   C_CHAR, NULL, segment3)
13281                       , segment4  = DECODE(segment4,   C_CHAR, NULL, segment4)
13282                       , segment5  = DECODE(segment5,   C_CHAR, NULL, segment5)
13283                       , segment6  = DECODE(segment6,   C_CHAR, NULL, segment6)
13284                       , segment7  = DECODE(segment7,   C_CHAR, NULL, segment7)
13285                       , segment8  = DECODE(segment8,   C_CHAR, NULL, segment8)
13286                       , segment9  = DECODE(segment9,   C_CHAR, NULL, segment9)
13287                       , segment10 = DECODE(segment10,  C_CHAR, NULL, segment10)
13288                       , segment11 = DECODE(segment11,  C_CHAR, NULL, segment11)
13289                       , segment12 = DECODE(segment12,  C_CHAR, NULL, segment12)
13290                       , segment13 = DECODE(segment13,  C_CHAR, NULL, segment13)
13291                       , segment14 = DECODE(segment14,  C_CHAR, NULL, segment14)
13292                       , segment15 = DECODE(segment15,  C_CHAR, NULL, segment15)
13293                       , segment16 = DECODE(segment16,  C_CHAR, NULL, segment16)
13294                       , segment17 = DECODE(segment17,  C_CHAR, NULL, segment17)
13295                       , segment18 = DECODE(segment18,  C_CHAR, NULL, segment18)
13296                       , segment19 = DECODE(segment19,  C_CHAR, NULL, segment19)
13297                       , segment20 = DECODE(segment20,  C_CHAR, NULL, segment20)
13298                       , segment21 = DECODE(segment21,  C_CHAR, NULL, segment21)
13299                       , segment22 = DECODE(segment22,  C_CHAR, NULL, segment22)
13300                       , segment23 = DECODE(segment23,  C_CHAR, NULL, segment23)
13301                       , segment24 = DECODE(segment24,  C_CHAR, NULL, segment24)
13302                       , segment25 = DECODE(segment25,  C_CHAR, NULL, segment25)
13303                       , segment26 = DECODE(segment26,  C_CHAR, NULL, segment26)
13304                       , segment27 = DECODE(segment27,  C_CHAR, NULL, segment27)
13305                       , segment28 = DECODE(segment28,  C_CHAR, NULL, segment28)
13306                       , segment29 = DECODE(segment29,  C_CHAR, NULL, segment29)
13307                       , segment30 = DECODE(segment30,  C_CHAR, NULL, segment30)
13308                  WHERE ae_header_id      = l_array_ae_header_id(i)
13309              --  AND   ae_line_num       = l_array_ae_line_num(i)        -- 5443083
13310                  AND   temp_line_num     = l_array_temp_line_num(i)      -- 5443083
13311                  AND   ref_ae_header_id  = l_array_ref_ae_header_id(i)   -- 5443083
13312                  AND   header_num        = l_array_header_num(i)         -- 5443083
13313                  AND   event_id          = l_array_event_id(i)
13314                  AND   ledger_id         = l_array_ledger_id(i)
13315                  AND   balance_type_code = l_array_balance_type_code(i);
13316 
13317          --
13318          -- Update JE header status for invalid entries
13319          --
13320          FORALL i IN 1..l_array_balance_type_code.COUNT
13321                  UPDATE xla_ae_headers_gt hgt
13322                  SET   accounting_entry_status_code = XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID  -- C_INVALID_STATUS
13323                  WHERE ae_header_id      = l_array_ae_header_id(i)
13324                  AND   event_id          = l_array_event_id(i)
13325                  AND   ledger_id         = l_array_ledger_id(i)
13326                  AND   header_num        = l_array_header_num(i)         -- 5443083
13327                  AND   balance_type_code = l_array_balance_type_code(i)
13328                  AND EXISTS  (SELECT /*+ index(lgt XLA_AE_LINES_GT_N2) */ 1  - 5443083
13329                               FROM   xla_ae_lines_gt lgt
13330                               WHERE  lgt.ledger_id    = hgt.ledger_id
13331                               AND    lgt.ae_header_id = hgt.ae_header_id
13332                               AND    lgt.header_num   = hgt.header_num
13333                               AND    lgt.balance_type_code = hgt.balance_type_code
13334                               AND   (lgt.reversal_code = C_DUMMY_SAME
13335                               OR     lgt.reversal_code = C_MPA_SAME_ENTRY));
13336 
13337       END LOOP;
13338       CLOSE c_bflow_unprocessed_lines;
13339 
13340    END IF; -- g_num_bflow_same_entries > 0
13341 
13342 
13343    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13344       trace
13345            (p_msg      => 'END of BusinessFlowSameEntries'
13346            ,p_level    => C_LEVEL_PROCEDURE
13347            ,p_module   => l_log_module);
13348    END IF;
13349 
13350 EXCEPTION
13351 --
13352    WHEN xla_exceptions_pkg.application_exception THEN
13353       RAISE;
13354    WHEN OTHERS  THEN
13355       xla_exceptions_pkg.raise_message
13356                (p_location => 'xla_ae_lines_pkg.BusinessFlowSameEntries');
13357   --
13358 END BusinessFlowSameEntries;
13359 
13360 /*======================================================================+
13361 |                                                                       |
13362 | Public Procedure- Validate Business Flow Applied To Links - 4219869   |
13363 |                   (Refer to ValidateLinks for similar logic.)         |
13364 |                                                                       |
13365 +======================================================================*/
13366 PROCEDURE ValidateBFlowLinks IS
13367 
13368    l_log_module         VARCHAR2(240);
13369    l_source_temp        NUMBER;
13370    l_dist_temp          NUMBER;
13371    l_app_name           VARCHAR2(240);
13372 
13373 BEGIN
13374    IF g_log_enabled THEN
13375       l_log_module := C_DEFAULT_MODULE||'.ValidateBFlowLinks';
13376    END IF;
13377 
13378    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13379       trace
13380            (p_msg      => 'BEGIN of ValidateBFlowLinks'
13381            ,p_level    => C_LEVEL_PROCEDURE
13382            ,p_module   => l_log_module);
13383    END IF;
13384 
13385 
13386  --IF g_rec_lines.array_bflow_application_id(g_LineNumber) IS NOT NULL THEN
13387 
13388       IF g_rec_lines.array_bflow_application_id(g_LineNumber) IS NULL OR   -- log error if application id is null
13389          g_rec_lines.array_bflow_entity_code(g_LineNumber) IS NULL OR
13390          g_rec_lines.array_bflow_distribution_type(g_LineNumber) IS NULL OR
13391         (g_rec_lines.array_bflow_source_id_char_1(g_LineNumber) IS NULL AND
13392          g_rec_lines.array_bflow_source_id_num_1(g_LineNumber) IS NULL) OR
13393         (g_rec_lines.array_bflow_dist_id_char_1(g_LineNumber) IS NULL AND
13394          g_rec_lines.array_bflow_dist_id_num_1(g_LineNumber) IS NULL)  THEN
13395 
13396          XLA_AE_JOURNAL_ENTRY_PKG.g_global_status  :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
13397          xla_accounting_err_pkg.build_message
13398                (p_appli_s_name  => 'XLA'
13399                ,p_msg_name      => 'XLA_AP_BFPE_INVALID_APPLIED_TO'
13400                ,p_entity_id     => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13401                ,p_event_id      => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13402                ,p_ledger_id     => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
13403 
13404       ELSE
13405 
13406          l_app_name := xla_accounting_cache_pkg.GetSessionValueChar('XLA_EVENT_APPL_NAME');
13407 
13408          ---------------------------------------------------------------------
13409          -- Verify applied-to system transaction ids
13410          ---------------------------------------------------------------------
13411          IF g_rec_lines.array_bflow_source_id_char_4(g_LineNumber) IS NULL AND
13412             g_rec_lines.array_bflow_source_id_num_4(g_LineNumber) IS NULL THEN
13413             l_source_temp := 0;
13414          ELSE
13415            l_source_temp := 1;
13416          END IF;
13417          IF g_rec_lines.array_bflow_source_id_char_3(g_LineNumber) IS NOT NULL OR
13418             g_rec_lines.array_bflow_source_id_num_3(g_LineNumber) IS NOT NULL THEN
13419             l_source_temp := 2+l_source_temp;
13420          END IF;
13421          IF g_rec_lines.array_bflow_source_id_char_2(g_LineNumber) IS NOT NULL OR
13422             g_rec_lines.array_bflow_source_id_num_2(g_LineNumber) IS NOT NULL THEN
13423             l_source_temp := 4+l_source_temp;
13424          END IF;
13425 
13426          IF (g_rec_lines.array_bflow_source_id_char_1(g_LineNumber) IS NULL AND
13427              g_rec_lines.array_bflow_source_id_num_1(g_LineNumber) IS NULL) OR
13428              l_source_temp not in (0, 4, 6, 7) THEN
13429 
13430              xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
13431              xla_accounting_err_pkg.build_message
13432                                            (p_appli_s_name            => 'XLA'
13433                                            ,p_msg_name                => 'XLA_AP_BFLOW_NO_SYS_TRX_ID'
13434                                            ,p_token_1                 => 'LINE_NUMBER'
13435                                            ,p_value_1                 =>  g_ExtractLine
13436                                            ,p_token_2                 => 'LINE_TYPE_NAME'
13437                                            ,p_value_2                 =>  xla_ae_sources_pkg.GetComponentName (
13438                                                                            g_accounting_line.component_type
13439                                                                          , g_accounting_line.accounting_line_code
13440                                                                          , g_accounting_line.accounting_line_type_code
13441                                                                          , g_accounting_line.accounting_line_appl_id
13442                                                                          , g_accounting_line.amb_context_code
13443                                                                          , g_accounting_line.entity_code
13444                                                                          , g_accounting_line.event_class_code)
13445                                            ,p_token_3                 => 'OWNER'
13446                                            ,p_value_3                 => xla_lookups_pkg.get_meaning(
13447                                                                            'XLA_OWNER_TYPE'
13448                                                                           , g_rec_lines.array_accounting_line_type(g_LineNumber))
13449                                            ,p_token_4                 => 'PRODUCT_NAME'
13450                                          --,p_value_4                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
13451                                            ,p_value_4                 => l_app_name
13452                                            ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
13453                                            ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
13454                                            ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
13455                                            ,p_ae_header_id            => NULL);
13456 
13457             IF (C_LEVEL_ERROR >= g_log_level) THEN
13458                    trace
13459                         (p_msg      => 'ERROR: XLA_AP_BFLOW_NO_SYS_TRX_ID'
13460                         ,p_level    => C_LEVEL_ERROR
13461                         ,p_module   => l_log_module);
13462             END IF;
13463 
13464          END IF;  -- g_rec_lines.array_bflow_source_id_char_1(g_LineNumber) IS NULL
13465 
13466          ---------------------------------------------------------------------
13467          -- Verify applied-to distribution ids
13468          ---------------------------------------------------------------------
13469          IF g_rec_lines.array_bflow_dist_id_char_5(g_LineNumber) IS NULL AND
13470             g_rec_lines.array_bflow_dist_id_num_5(g_LineNumber) IS NULL THEN
13471             l_dist_temp := 0;
13472          ELSE
13473             l_dist_temp := 1;
13474          END IF;
13475          IF g_rec_lines.array_bflow_dist_id_char_4(g_LineNumber) IS NOT NULL OR
13476             g_rec_lines.array_bflow_dist_id_num_4(g_LineNumber) IS NOT NULL THEN
13477             l_dist_temp := 2+l_dist_temp;
13478          END IF;
13479          IF g_rec_lines.array_bflow_dist_id_char_3(g_LineNumber) IS NOT NULL OR
13480             g_rec_lines.array_bflow_dist_id_num_3(g_LineNumber) IS NOT NULL THEN
13481             l_dist_temp := 4+l_dist_temp;
13482          END IF;
13483          IF g_rec_lines.array_bflow_dist_id_char_2(g_LineNumber) IS NOT NULL OR
13484             g_rec_lines.array_bflow_dist_id_num_2(g_LineNumber) IS NOT NULL THEN
13485             l_dist_temp := 8+l_dist_temp;
13486          END IF;
13487 
13488          IF (g_rec_lines.array_bflow_dist_id_char_1(g_LineNumber) IS NULL AND
13489              g_rec_lines.array_bflow_dist_id_num_1(g_LineNumber) IS NULL) OR
13490              l_dist_temp not in (0, 8, 12, 14, 15) THEN
13491 
13492              xla_ae_journal_entry_pkg.g_global_status :=  xla_ae_journal_entry_pkg.C_INVALID;
13493              xla_accounting_err_pkg.build_message
13494                                            (p_appli_s_name            => 'XLA'
13495                                            ,p_msg_name                => 'XLA_AP_BFLOW_NO_DIST_LINK_ID'
13496                                            ,p_token_1                 => 'LINE_NUMBER'
13497                                            ,p_value_1                 =>  g_ExtractLine
13498                                            ,p_token_2                 => 'LINE_TYPE_NAME'
13499                                            ,p_value_2                 =>  xla_ae_sources_pkg.GetComponentName (
13500                                                                            g_accounting_line.component_type
13501                                                                          , g_accounting_line.accounting_line_code
13502                                                                          , g_accounting_line.accounting_line_type_code
13503                                                                          , g_accounting_line.accounting_line_appl_id
13504                                                                          , g_accounting_line.amb_context_code
13505                                                                          , g_accounting_line.entity_code
13506                                                                          , g_accounting_line.event_class_code)
13507                                            ,p_token_3                 => 'OWNER'
13508                                            ,p_value_3                 => xla_lookups_pkg.get_meaning(
13509                                                                            'XLA_OWNER_TYPE'
13510                                                                           , g_rec_lines.array_accounting_line_type(g_LineNumber))
13511                                            ,p_token_4                 => 'PRODUCT_NAME'
13512                                          --,p_value_4                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
13513                                            ,p_value_4                 => l_app_name
13514                                            ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
13515                                            ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
13516                                            ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
13517                                            ,p_ae_header_id            => NULL);
13518 
13519             IF (C_LEVEL_ERROR >= g_log_level) THEN
13520                    trace
13521                         (p_msg      => 'ERROR: XLA_AP_BFLOW_NO_DIST_LINK_ID'
13522                         ,p_level    => C_LEVEL_ERROR
13523                         ,p_module   => l_log_module);
13524             END IF;
13525          END IF; -- (g_rec_lines.array_bflow_dist_id_char_1(g_LineNumber) IS NULL
13526 
13527       END IF; -- if bflow_entity_code is null
13528 
13529  --END IF;  -- if bflow_application_id is not null
13530 
13531    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13532       trace
13533            (p_msg      => 'END of ValidateBFlowLinks'
13534            ,p_level    => C_LEVEL_PROCEDURE
13535            ,p_module   => l_log_module);
13536    END IF;
13537 
13538 EXCEPTION
13539 --
13540 WHEN xla_exceptions_pkg.application_exception THEN
13541    RAISE;
13542 WHEN OTHERS  THEN
13543    xla_exceptions_pkg.raise_message
13544                (p_location => 'xla_ae_lines_pkg.ValidateBFlowLinks');
13545   --
13546 END ValidateBFlowLinks;
13547 
13548 /*======================================================================+
13549 |                                                                       |
13550 | Public Procedure-  4262811                                            |
13551 |                                                                       |
13552 |                                                                       |
13553 +======================================================================*/
13554 PROCEDURE CopyLineInfo(
13555    p_line_num   NUMBER
13556 ) IS
13557 
13558    l_log_module         VARCHAR2(240);
13559 
13560 BEGIN
13561    IF g_log_enabled THEN
13562       l_log_module := C_DEFAULT_MODULE||'.CopyLineInfo';
13563    END IF;
13564 
13565    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13566       trace
13567            (p_msg      => 'BEGIN of CopyLineInfo'
13568            ,p_level    => C_LEVEL_PROCEDURE
13569            ,p_module   => l_log_module);
13570    END IF;
13571 
13572    SetNewLine;
13573 
13574    -------------------------------------------------------------------------------------------------------
13575    -- Copy all information in g_rec_lines from p_line_num to g_LineNumber with the following exceptions:
13576    -------------------------------------------------------------------------------------------------------
13577    --
13578    --
13579    -------------------------------------------------------------------------------------------------------
13580    -- Skipped a TEMP_LINE_NUM in distribution links for MPA as SetNewLine also increased by 1
13581    --
13582    -- following sets the temp line number
13583    -- g_rec_lines.array_line_num(g_LineNumber)     := NVL(g_temp_line_num ,0) + 1;
13584    -------------------------------------------------------------------------------------------------------
13585    --
13586    g_rec_lines.array_ae_header_id(g_LineNumber) := g_rec_lines.array_ae_header_id(p_line_num);
13587    g_rec_lines.array_header_num(g_LineNumber)   := g_rec_lines.array_header_num(p_line_num);
13588 
13589    -- =================================================================================================
13590    g_rec_lines.array_accounting_class(g_LineNumber)      := g_rec_lines.array_accounting_class(p_line_num);
13591    g_rec_lines.array_rounding_class(g_LineNumber)        := g_rec_lines.array_rounding_class(p_line_num);
13592    g_rec_lines.array_doc_rounding_level(g_LineNumber)    := g_rec_lines.array_doc_rounding_level(p_line_num);
13593    g_rec_lines.array_gain_or_loss_ref(g_LineNumber):=    g_rec_lines.array_gain_or_loss_ref(p_line_num);
13594    g_rec_lines.array_event_class_code(g_LineNumber)      := g_rec_lines.array_event_class_code(p_line_num);
13595    g_rec_lines.array_event_type_code(g_LineNumber)       := g_rec_lines.array_event_type_code(p_line_num);
13596    g_rec_lines.array_line_defn_owner_code(g_LineNumber)  := g_rec_lines.array_line_defn_owner_code(p_line_num);
13597    g_rec_lines.array_line_defn_code(g_LineNumber)        := g_rec_lines.array_line_defn_code(p_line_num);
13598    g_rec_lines.array_accounting_line_code(g_LineNumber)  := g_rec_lines.array_accounting_line_code(p_line_num);
13599    g_rec_lines.array_accounting_line_type(g_LineNumber)  := g_rec_lines.array_accounting_line_type(p_line_num);
13600    g_rec_lines.array_calculate_acctd_flag(g_LineNumber)  := g_rec_lines.array_calculate_acctd_flag(p_line_num);
13601    g_rec_lines.array_calculate_g_l_flag(g_LineNumber)    := g_rec_lines.array_calculate_g_l_flag(p_line_num);
13602    g_rec_lines.array_gain_or_loss_flag(g_LineNumber)    := g_rec_lines.array_gain_or_loss_flag(p_line_num);
13603 
13604    --
13605    -- following sets the extract line number
13606    --
13607    g_rec_lines.array_extract_line_num(g_LineNumber) := g_rec_lines.array_extract_line_num(p_line_num);
13608 
13609    --
13610    -- line flexfield accounts
13611    --
13612    g_rec_lines.array_ccid_flag(g_LineNumber)  := g_rec_lines.array_ccid_flag(p_line_num);
13613    g_rec_lines.array_ccid(g_LineNumber)       := g_rec_lines.array_ccid(p_line_num);
13614    --
13615    g_rec_lines.array_accounting_coa_id(g_LineNumber)   := g_rec_lines.array_accounting_coa_id(p_line_num);
13616    g_rec_lines.array_transaction_coa_id(g_LineNumber)  := g_rec_lines.array_transaction_coa_id(p_line_num);
13617    g_rec_lines.array_sl_coa_mapping_name(g_LineNumber) := g_rec_lines.array_sl_coa_mapping_name(p_line_num);
13618    --
13619    g_rec_lines.array_segment1(g_LineNumber)   := g_rec_lines.array_segment1(p_line_num);
13620    g_rec_lines.array_segment2(g_LineNumber)   := g_rec_lines.array_segment2(p_line_num);
13621    g_rec_lines.array_segment3(g_LineNumber)   := g_rec_lines.array_segment3(p_line_num);
13622    g_rec_lines.array_segment4(g_LineNumber)   := g_rec_lines.array_segment4(p_line_num);
13623    g_rec_lines.array_segment5(g_LineNumber)   := g_rec_lines.array_segment5(p_line_num);
13624    g_rec_lines.array_segment6(g_LineNumber)   := g_rec_lines.array_segment6(p_line_num);
13625    g_rec_lines.array_segment7(g_LineNumber)   := g_rec_lines.array_segment7(p_line_num);
13626    g_rec_lines.array_segment8(g_LineNumber)   := g_rec_lines.array_segment8(p_line_num);
13627    g_rec_lines.array_segment9(g_LineNumber)   := g_rec_lines.array_segment9(p_line_num);
13628    g_rec_lines.array_segment10(g_LineNumber)  := g_rec_lines.array_segment10(p_line_num);
13629    g_rec_lines.array_segment11(g_LineNumber)  := g_rec_lines.array_segment11(p_line_num);
13630    g_rec_lines.array_segment12(g_LineNumber)  := g_rec_lines.array_segment12(p_line_num);
13631    g_rec_lines.array_segment13(g_LineNumber)  := g_rec_lines.array_segment13(p_line_num);
13632    g_rec_lines.array_segment14(g_LineNumber)  := g_rec_lines.array_segment14(p_line_num);
13633    g_rec_lines.array_segment15(g_LineNumber)  := g_rec_lines.array_segment15(p_line_num);
13634    g_rec_lines.array_segment16(g_LineNumber)  := g_rec_lines.array_segment16(p_line_num);
13635    g_rec_lines.array_segment17(g_LineNumber)  := g_rec_lines.array_segment17(p_line_num);
13636    g_rec_lines.array_segment18(g_LineNumber)  := g_rec_lines.array_segment18(p_line_num);
13637    g_rec_lines.array_segment19(g_LineNumber)  := g_rec_lines.array_segment19(p_line_num);
13638    g_rec_lines.array_segment20(g_LineNumber)  := g_rec_lines.array_segment20(p_line_num);
13639    g_rec_lines.array_segment21(g_LineNumber)  := g_rec_lines.array_segment21(p_line_num);
13640    g_rec_lines.array_segment22(g_LineNumber)  := g_rec_lines.array_segment22(p_line_num);
13641    g_rec_lines.array_segment23(g_LineNumber)  := g_rec_lines.array_segment23(p_line_num);
13642    g_rec_lines.array_segment24(g_LineNumber)  := g_rec_lines.array_segment24(p_line_num);
13643    g_rec_lines.array_segment25(g_LineNumber)  := g_rec_lines.array_segment25(p_line_num);
13644    g_rec_lines.array_segment26(g_LineNumber)  := g_rec_lines.array_segment26(p_line_num);
13645    g_rec_lines.array_segment27(g_LineNumber)  := g_rec_lines.array_segment27(p_line_num);
13646    g_rec_lines.array_segment28(g_LineNumber)  := g_rec_lines.array_segment28(p_line_num);
13647    g_rec_lines.array_segment29(g_LineNumber)  := g_rec_lines.array_segment29(p_line_num);
13648    g_rec_lines.array_segment30(g_LineNumber)  := g_rec_lines.array_segment30(p_line_num);
13649    --
13650    g_rec_lines.alt_array_ccid_flag(g_LineNumber)  := g_rec_lines.alt_array_ccid_flag(p_line_num);
13651    g_rec_lines.alt_array_ccid(g_LineNumber)       := g_rec_lines.alt_array_ccid(p_line_num);
13652    g_rec_lines.alt_array_segment1(g_LineNumber)   := g_rec_lines.alt_array_segment1(p_line_num);
13653    g_rec_lines.alt_array_segment2(g_LineNumber)   := g_rec_lines.alt_array_segment2(p_line_num);
13654    g_rec_lines.alt_array_segment3(g_LineNumber)   := g_rec_lines.alt_array_segment3(p_line_num);
13655    g_rec_lines.alt_array_segment4(g_LineNumber)   := g_rec_lines.alt_array_segment4(p_line_num);
13656    g_rec_lines.alt_array_segment5(g_LineNumber)   := g_rec_lines.alt_array_segment5(p_line_num);
13657    g_rec_lines.alt_array_segment6(g_LineNumber)   := g_rec_lines.alt_array_segment6(p_line_num);
13658    g_rec_lines.alt_array_segment7(g_LineNumber)   := g_rec_lines.alt_array_segment7(p_line_num);
13659    g_rec_lines.alt_array_segment8(g_LineNumber)   := g_rec_lines.alt_array_segment8(p_line_num);
13660    g_rec_lines.alt_array_segment9(g_LineNumber)   := g_rec_lines.alt_array_segment9(p_line_num);
13661    g_rec_lines.alt_array_segment10(g_LineNumber)  := g_rec_lines.alt_array_segment10(p_line_num);
13662    g_rec_lines.alt_array_segment11(g_LineNumber)  := g_rec_lines.alt_array_segment11(p_line_num);
13663    g_rec_lines.alt_array_segment12(g_LineNumber)  := g_rec_lines.alt_array_segment12(p_line_num);
13664    g_rec_lines.alt_array_segment13(g_LineNumber)  := g_rec_lines.alt_array_segment13(p_line_num);
13665    g_rec_lines.alt_array_segment14(g_LineNumber)  := g_rec_lines.alt_array_segment14(p_line_num);
13666    g_rec_lines.alt_array_segment15(g_LineNumber)  := g_rec_lines.alt_array_segment15(p_line_num);
13667    g_rec_lines.alt_array_segment16(g_LineNumber)  := g_rec_lines.alt_array_segment16(p_line_num);
13668    g_rec_lines.alt_array_segment17(g_LineNumber)  := g_rec_lines.alt_array_segment17(p_line_num);
13669    g_rec_lines.alt_array_segment18(g_LineNumber)  := g_rec_lines.alt_array_segment18(p_line_num);
13670    g_rec_lines.alt_array_segment19(g_LineNumber)  := g_rec_lines.alt_array_segment19(p_line_num);
13671    g_rec_lines.alt_array_segment20(g_LineNumber)  := g_rec_lines.alt_array_segment20(p_line_num);
13672    g_rec_lines.alt_array_segment21(g_LineNumber)  := g_rec_lines.alt_array_segment21(p_line_num);
13673    g_rec_lines.alt_array_segment22(g_LineNumber)  := g_rec_lines.alt_array_segment22(p_line_num);
13674    g_rec_lines.alt_array_segment23(g_LineNumber)  := g_rec_lines.alt_array_segment23(p_line_num);
13675    g_rec_lines.alt_array_segment24(g_LineNumber)  := g_rec_lines.alt_array_segment24(p_line_num);
13676    g_rec_lines.alt_array_segment25(g_LineNumber)  := g_rec_lines.alt_array_segment25(p_line_num);
13677    g_rec_lines.alt_array_segment26(g_LineNumber)  := g_rec_lines.alt_array_segment26(p_line_num);
13678    g_rec_lines.alt_array_segment27(g_LineNumber)  := g_rec_lines.alt_array_segment27(p_line_num);
13679    g_rec_lines.alt_array_segment28(g_LineNumber)  := g_rec_lines.alt_array_segment28(p_line_num);
13680    g_rec_lines.alt_array_segment29(g_LineNumber)  := g_rec_lines.alt_array_segment29(p_line_num);
13681    g_rec_lines.alt_array_segment30(g_LineNumber)  := g_rec_lines.alt_array_segment30(p_line_num);
13682    --
13683    -- Option lines
13684    --
13685    g_rec_lines.array_gl_transfer_mode(g_LineNumber)      := g_rec_lines.array_gl_transfer_mode(p_line_num);
13686    g_rec_lines.array_natural_side_code(g_LineNumber)     := g_rec_lines.array_natural_side_code(p_line_num);
13687    g_rec_lines.array_acct_entry_type_code(g_LineNumber)  := g_rec_lines.array_acct_entry_type_code(p_line_num);
13688    g_rec_lines.array_switch_side_flag(g_LineNumber)      := g_rec_lines.array_switch_side_flag(p_line_num);
13689    g_rec_lines.array_merge_duplicate_code(g_LineNumber)  := g_rec_lines.array_merge_duplicate_code(p_line_num);
13690    --
13691    -- line amounts
13692    --
13693    g_rec_lines.array_entered_amount(g_LineNumber)        := g_rec_lines.array_entered_amount(p_line_num);
13694    g_rec_lines.array_ledger_amount(g_LineNumber)         := g_rec_lines.array_ledger_amount(p_line_num);
13695    g_rec_lines.array_entered_dr(g_LineNumber)            := g_rec_lines.array_entered_dr(p_line_num);
13696    g_rec_lines.array_entered_cr(g_LineNumber)            := g_rec_lines.array_entered_cr(p_line_num);
13697    g_rec_lines.array_accounted_dr(g_LineNumber)          := g_rec_lines.array_accounted_dr(p_line_num);
13698    g_rec_lines.array_accounted_cr(g_LineNumber)          := g_rec_lines.array_accounted_cr(p_line_num);
13699    g_rec_lines.array_currency_code(g_LineNumber)         := g_rec_lines.array_currency_code(p_line_num);
13700    g_rec_lines.array_currency_mau(g_LineNumber)          := xla_accounting_cache_pkg.GetCurrencyMau(g_rec_lines.array_currency_code(g_LineNumber));
13701    g_rec_lines.array_curr_conversion_date(g_LineNumber)  := g_rec_lines.array_curr_conversion_date(p_line_num);
13702    g_rec_lines.array_curr_conversion_rate(g_LineNumber)  := g_rec_lines.array_curr_conversion_rate(p_line_num);
13703    g_rec_lines.array_curr_conversion_type(g_LineNumber)  := g_rec_lines.array_curr_conversion_type(p_line_num);
13704    g_rec_lines.array_description(g_LineNumber)           := g_rec_lines.array_description(p_line_num);
13705    --
13706    -- line descriptions
13707    --
13708    g_rec_lines.array_party_id(g_LineNumber)              := g_rec_lines.array_party_id(p_line_num);
13709    g_rec_lines.array_party_site_id(g_LineNumber)         := g_rec_lines.array_party_site_id(p_line_num);
13710    g_rec_lines.array_party_type_code(g_LineNumber)       := g_rec_lines.array_party_type_code(p_line_num);
13711    --
13712    g_rec_lines.array_statistical_amount(g_LineNumber)    := g_rec_lines.array_statistical_amount(p_line_num);
13713    g_rec_lines.array_ussgl_transaction(g_LineNumber)     := g_rec_lines.array_ussgl_transaction(p_line_num);
13714    --
13715    g_rec_lines.array_jgzz_recon_ref(g_LineNumber)           := g_rec_lines.array_jgzz_recon_ref(p_line_num);
13716    --
13717    -- distribution links
13718    --
13719    g_rec_lines.array_distribution_id_char_1(g_LineNumber)  := g_rec_lines.array_distribution_id_char_1(p_line_num);
13720    g_rec_lines.array_distribution_id_char_2(g_LineNumber)  := g_rec_lines.array_distribution_id_char_2(p_line_num);
13721    g_rec_lines.array_distribution_id_char_3(g_LineNumber)  := g_rec_lines.array_distribution_id_char_3(p_line_num);
13722    g_rec_lines.array_distribution_id_char_4(g_LineNumber)  := g_rec_lines.array_distribution_id_char_4(p_line_num);
13723    g_rec_lines.array_distribution_id_char_5(g_LineNumber)  := g_rec_lines.array_distribution_id_char_5(p_line_num);
13724    g_rec_lines.array_distribution_id_num_1(g_LineNumber)   := g_rec_lines.array_distribution_id_num_1(p_line_num);
13725    g_rec_lines.array_distribution_id_num_2(g_LineNumber)   := g_rec_lines.array_distribution_id_num_2(p_line_num);
13726    g_rec_lines.array_distribution_id_num_3(g_LineNumber)   := g_rec_lines.array_distribution_id_num_3(p_line_num);
13727    g_rec_lines.array_distribution_id_num_4(g_LineNumber)   := g_rec_lines.array_distribution_id_num_4(p_line_num);
13728    g_rec_lines.array_distribution_id_num_5(g_LineNumber)   := g_rec_lines.array_distribution_id_num_5(p_line_num);
13729    g_rec_lines.array_sys_distribution_type(g_LineNumber)   := g_rec_lines.array_sys_distribution_type(p_line_num);
13730    --
13731    -- reverse distribution links
13732    --
13733    g_rec_lines.array_rev_dist_id_char_1(g_LineNumber)  := g_rec_lines.array_rev_dist_id_char_1(p_line_num);
13734    g_rec_lines.array_rev_dist_id_char_2(g_LineNumber)  := g_rec_lines.array_rev_dist_id_char_2(p_line_num);
13735    g_rec_lines.array_rev_dist_id_char_3(g_LineNumber)  := g_rec_lines.array_rev_dist_id_char_3(p_line_num);
13736    g_rec_lines.array_rev_dist_id_char_4(g_LineNumber)  := g_rec_lines.array_rev_dist_id_char_4(p_line_num);
13737    g_rec_lines.array_rev_dist_id_char_5(g_LineNumber)  := g_rec_lines.array_rev_dist_id_char_5(p_line_num);
13738    g_rec_lines.array_rev_dist_id_num_1(g_LineNumber)   := g_rec_lines.array_rev_dist_id_num_1(p_line_num);
13739    g_rec_lines.array_rev_dist_id_num_2(g_LineNumber)   := g_rec_lines.array_rev_dist_id_num_2(p_line_num);
13740    g_rec_lines.array_rev_dist_id_num_3(g_LineNumber)   := g_rec_lines.array_rev_dist_id_num_3(p_line_num);
13741    g_rec_lines.array_rev_dist_id_num_4(g_LineNumber)   := g_rec_lines.array_rev_dist_id_num_4(p_line_num);
13742    g_rec_lines.array_rev_dist_id_num_5(g_LineNumber)   := g_rec_lines.array_rev_dist_id_num_5(p_line_num);
13743    g_rec_lines.array_rev_dist_type(g_LineNumber)       := g_rec_lines.array_rev_dist_type(p_line_num);
13744    --
13745    -- multiperiod accounting
13746    --
13747    -- DO NOT COPY g_rec_lines.array_mpa_acc_entry_flag
13748    g_rec_lines.array_header_num(g_LineNumber)          := g_rec_lines.array_header_num(p_line_num);
13749    g_rec_lines.array_mpa_option(g_LineNumber)          := g_rec_lines.array_mpa_option(p_line_num);
13750    g_rec_lines.array_mpa_start_date(g_LineNumber)      := g_rec_lines.array_mpa_start_date(p_line_num);
13751    g_rec_lines.array_mpa_end_date(g_LineNumber)        := g_rec_lines.array_mpa_end_date(p_line_num);
13752    --
13753    -- reversal info
13754    --
13755    g_rec_lines.array_acc_reversal_option(g_LineNumber)   := g_rec_lines.array_acc_reversal_option(p_line_num);
13756    --
13757    -- tax info
13758    --
13759    g_rec_lines.array_tax_line_ref(g_LineNumber)           := g_rec_lines.array_tax_line_ref(p_line_num);
13760    g_rec_lines.array_tax_summary_line_ref(g_LineNumber)   := g_rec_lines.array_tax_summary_line_ref(p_line_num);
13761    g_rec_lines.array_tax_rec_nrec_dist_ref(g_LineNumber)  := g_rec_lines.array_tax_rec_nrec_dist_ref(p_line_num);
13762    --
13763    --
13764    g_rec_lines.array_anc_balance_flag(g_LineNumber)      := g_rec_lines.array_anc_balance_flag(p_line_num);
13765    g_rec_lines.array_anc_id_1(g_LineNumber)              := g_rec_lines.array_anc_id_1(p_line_num);
13766    g_rec_lines.array_anc_id_2(g_LineNumber)              := g_rec_lines.array_anc_id_2(p_line_num);
13767    g_rec_lines.array_anc_id_3(g_LineNumber)              := g_rec_lines.array_anc_id_3(p_line_num);
13768    g_rec_lines.array_anc_id_4(g_LineNumber)              := g_rec_lines.array_anc_id_4(p_line_num);
13769    g_rec_lines.array_anc_id_5(g_LineNumber)              := g_rec_lines.array_anc_id_5(p_line_num);
13770    g_rec_lines.array_anc_id_6(g_LineNumber)              := g_rec_lines.array_anc_id_6(p_line_num);
13771    g_rec_lines.array_anc_id_7(g_LineNumber)              := g_rec_lines.array_anc_id_7(p_line_num);
13772    g_rec_lines.array_anc_id_8(g_LineNumber)              := g_rec_lines.array_anc_id_8(p_line_num);
13773    g_rec_lines.array_anc_id_9(g_LineNumber)              := g_rec_lines.array_anc_id_9(p_line_num);
13774    g_rec_lines.array_anc_id_10(g_LineNumber)             := g_rec_lines.array_anc_id_10(p_line_num);
13775    g_rec_lines.array_anc_id_11(g_LineNumber)             := g_rec_lines.array_anc_id_11(p_line_num);
13776    g_rec_lines.array_anc_id_12(g_LineNumber)             := g_rec_lines.array_anc_id_12(p_line_num);
13777    g_rec_lines.array_anc_id_13(g_LineNumber)             := g_rec_lines.array_anc_id_13(p_line_num);
13778    g_rec_lines.array_anc_id_14(g_LineNumber)             := g_rec_lines.array_anc_id_14(p_line_num);
13779    g_rec_lines.array_anc_id_15(g_LineNumber)             := g_rec_lines.array_anc_id_15(p_line_num);
13780    g_rec_lines.array_anc_id_16(g_LineNumber)             := g_rec_lines.array_anc_id_16(p_line_num);
13781    g_rec_lines.array_anc_id_17(g_LineNumber)             := g_rec_lines.array_anc_id_17(p_line_num);
13782    g_rec_lines.array_anc_id_18(g_LineNumber)             := g_rec_lines.array_anc_id_18(p_line_num);
13783    g_rec_lines.array_anc_id_19(g_LineNumber)             := g_rec_lines.array_anc_id_19(p_line_num);
13784    g_rec_lines.array_anc_id_20(g_LineNumber)             := g_rec_lines.array_anc_id_20(p_line_num);
13785    g_rec_lines.array_anc_id_21(g_LineNumber)             := g_rec_lines.array_anc_id_21(p_line_num);
13786    g_rec_lines.array_anc_id_22(g_LineNumber)             := g_rec_lines.array_anc_id_22(p_line_num);
13787    g_rec_lines.array_anc_id_23(g_LineNumber)             := g_rec_lines.array_anc_id_23(p_line_num);
13788    g_rec_lines.array_anc_id_24(g_LineNumber)             := g_rec_lines.array_anc_id_24(p_line_num);
13789    g_rec_lines.array_anc_id_25(g_LineNumber)             := g_rec_lines.array_anc_id_25(p_line_num);
13790    g_rec_lines.array_anc_id_26(g_LineNumber)             := g_rec_lines.array_anc_id_26(p_line_num);
13791    g_rec_lines.array_anc_id_27(g_LineNumber)             := g_rec_lines.array_anc_id_27(p_line_num);
13792    g_rec_lines.array_anc_id_28(g_LineNumber)             := g_rec_lines.array_anc_id_28(p_line_num);
13793    g_rec_lines.array_anc_id_29(g_LineNumber)             := g_rec_lines.array_anc_id_29(p_line_num);
13794    g_rec_lines.array_anc_id_30(g_LineNumber)             := g_rec_lines.array_anc_id_30(p_line_num);
13795    g_rec_lines.array_anc_id_31(g_LineNumber)             := g_rec_lines.array_anc_id_31(p_line_num);
13796    g_rec_lines.array_anc_id_32(g_LineNumber)             := g_rec_lines.array_anc_id_32(p_line_num);
13797    g_rec_lines.array_anc_id_33(g_LineNumber)             := g_rec_lines.array_anc_id_33(p_line_num);
13798    g_rec_lines.array_anc_id_34(g_LineNumber)             := g_rec_lines.array_anc_id_34(p_line_num);
13799    g_rec_lines.array_anc_id_35(g_LineNumber)             := g_rec_lines.array_anc_id_35(p_line_num);
13800    g_rec_lines.array_anc_id_36(g_LineNumber)             := g_rec_lines.array_anc_id_36(p_line_num);
13801    g_rec_lines.array_anc_id_37(g_LineNumber)             := g_rec_lines.array_anc_id_37(p_line_num);
13802    g_rec_lines.array_anc_id_38(g_LineNumber)             := g_rec_lines.array_anc_id_38(p_line_num);
13803    g_rec_lines.array_anc_id_39(g_LineNumber)             := g_rec_lines.array_anc_id_39(p_line_num);
13804    g_rec_lines.array_anc_id_40(g_LineNumber)             := g_rec_lines.array_anc_id_40(p_line_num);
13805    g_rec_lines.array_anc_id_41(g_LineNumber)             := g_rec_lines.array_anc_id_41(p_line_num);
13806    g_rec_lines.array_anc_id_42(g_LineNumber)             := g_rec_lines.array_anc_id_42(p_line_num);
13807    g_rec_lines.array_anc_id_43(g_LineNumber)             := g_rec_lines.array_anc_id_43(p_line_num);
13808    g_rec_lines.array_anc_id_44(g_LineNumber)             := g_rec_lines.array_anc_id_44(p_line_num);
13809    g_rec_lines.array_anc_id_45(g_LineNumber)             := g_rec_lines.array_anc_id_45(p_line_num);
13810    g_rec_lines.array_anc_id_46(g_LineNumber)             := g_rec_lines.array_anc_id_46(p_line_num);
13811    g_rec_lines.array_anc_id_47(g_LineNumber)             := g_rec_lines.array_anc_id_47(p_line_num);
13812    g_rec_lines.array_anc_id_48(g_LineNumber)             := g_rec_lines.array_anc_id_48(p_line_num);
13813    g_rec_lines.array_anc_id_49(g_LineNumber)             := g_rec_lines.array_anc_id_49(p_line_num);
13814    g_rec_lines.array_anc_id_50(g_LineNumber)             := g_rec_lines.array_anc_id_50(p_line_num);
13815    g_rec_lines.array_anc_id_51(g_LineNumber)             := g_rec_lines.array_anc_id_51(p_line_num);
13816    g_rec_lines.array_anc_id_52(g_LineNumber)             := g_rec_lines.array_anc_id_52(p_line_num);
13817    g_rec_lines.array_anc_id_53(g_LineNumber)             := g_rec_lines.array_anc_id_53(p_line_num);
13818    g_rec_lines.array_anc_id_54(g_LineNumber)             := g_rec_lines.array_anc_id_54(p_line_num);
13819    g_rec_lines.array_anc_id_55(g_LineNumber)             := g_rec_lines.array_anc_id_55(p_line_num);
13820    g_rec_lines.array_anc_id_56(g_LineNumber)             := g_rec_lines.array_anc_id_56(p_line_num);
13821    g_rec_lines.array_anc_id_57(g_LineNumber)             := g_rec_lines.array_anc_id_57(p_line_num);
13822    g_rec_lines.array_anc_id_58(g_LineNumber)             := g_rec_lines.array_anc_id_58(p_line_num);
13823    g_rec_lines.array_anc_id_59(g_LineNumber)             := g_rec_lines.array_anc_id_59(p_line_num);
13824    g_rec_lines.array_anc_id_60(g_LineNumber)             := g_rec_lines.array_anc_id_60(p_line_num);
13825    g_rec_lines.array_anc_id_61(g_LineNumber)             := g_rec_lines.array_anc_id_61(p_line_num);
13826    g_rec_lines.array_anc_id_62(g_LineNumber)             := g_rec_lines.array_anc_id_62(p_line_num);
13827    g_rec_lines.array_anc_id_63(g_LineNumber)             := g_rec_lines.array_anc_id_63(p_line_num);
13828    g_rec_lines.array_anc_id_64(g_LineNumber)             := g_rec_lines.array_anc_id_64(p_line_num);
13829    g_rec_lines.array_anc_id_65(g_LineNumber)             := g_rec_lines.array_anc_id_65(p_line_num);
13830    g_rec_lines.array_anc_id_66(g_LineNumber)             := g_rec_lines.array_anc_id_66(p_line_num);
13831    g_rec_lines.array_anc_id_67(g_LineNumber)             := g_rec_lines.array_anc_id_67(p_line_num);
13832    g_rec_lines.array_anc_id_68(g_LineNumber)             := g_rec_lines.array_anc_id_68(p_line_num);
13833    g_rec_lines.array_anc_id_69(g_LineNumber)             := g_rec_lines.array_anc_id_69(p_line_num);
13834    g_rec_lines.array_anc_id_70(g_LineNumber)             := g_rec_lines.array_anc_id_70(p_line_num);
13835    g_rec_lines.array_anc_id_71(g_LineNumber)             := g_rec_lines.array_anc_id_71(p_line_num);
13836    g_rec_lines.array_anc_id_72(g_LineNumber)             := g_rec_lines.array_anc_id_72(p_line_num);
13837    g_rec_lines.array_anc_id_73(g_LineNumber)             := g_rec_lines.array_anc_id_73(p_line_num);
13838    g_rec_lines.array_anc_id_74(g_LineNumber)             := g_rec_lines.array_anc_id_74(p_line_num);
13839    g_rec_lines.array_anc_id_75(g_LineNumber)             := g_rec_lines.array_anc_id_75(p_line_num);
13840    g_rec_lines.array_anc_id_76(g_LineNumber)             := g_rec_lines.array_anc_id_76(p_line_num);
13841    g_rec_lines.array_anc_id_77(g_LineNumber)             := g_rec_lines.array_anc_id_77(p_line_num);
13842    g_rec_lines.array_anc_id_78(g_LineNumber)             := g_rec_lines.array_anc_id_78(p_line_num);
13843    g_rec_lines.array_anc_id_79(g_LineNumber)             := g_rec_lines.array_anc_id_79(p_line_num);
13844    g_rec_lines.array_anc_id_80(g_LineNumber)             := g_rec_lines.array_anc_id_80(p_line_num);
13845    g_rec_lines.array_anc_id_81(g_LineNumber)             := g_rec_lines.array_anc_id_81(p_line_num);
13846    g_rec_lines.array_anc_id_82(g_LineNumber)             := g_rec_lines.array_anc_id_82(p_line_num);
13847    g_rec_lines.array_anc_id_83(g_LineNumber)             := g_rec_lines.array_anc_id_83(p_line_num);
13848    g_rec_lines.array_anc_id_84(g_LineNumber)             := g_rec_lines.array_anc_id_84(p_line_num);
13849    g_rec_lines.array_anc_id_85(g_LineNumber)             := g_rec_lines.array_anc_id_85(p_line_num);
13850    g_rec_lines.array_anc_id_86(g_LineNumber)             := g_rec_lines.array_anc_id_86(p_line_num);
13851    g_rec_lines.array_anc_id_87(g_LineNumber)             := g_rec_lines.array_anc_id_87(p_line_num);
13852    g_rec_lines.array_anc_id_88(g_LineNumber)             := g_rec_lines.array_anc_id_88(p_line_num);
13853    g_rec_lines.array_anc_id_89(g_LineNumber)             := g_rec_lines.array_anc_id_89(p_line_num);
13854    g_rec_lines.array_anc_id_90(g_LineNumber)             := g_rec_lines.array_anc_id_90(p_line_num);
13855    g_rec_lines.array_anc_id_91(g_LineNumber)             := g_rec_lines.array_anc_id_91(p_line_num);
13856    g_rec_lines.array_anc_id_92(g_LineNumber)             := g_rec_lines.array_anc_id_92(p_line_num);
13857    g_rec_lines.array_anc_id_93(g_LineNumber)             := g_rec_lines.array_anc_id_93(p_line_num);
13858    g_rec_lines.array_anc_id_94(g_LineNumber)             := g_rec_lines.array_anc_id_94(p_line_num);
13859    g_rec_lines.array_anc_id_95(g_LineNumber)             := g_rec_lines.array_anc_id_95(p_line_num);
13860    g_rec_lines.array_anc_id_96(g_LineNumber)             := g_rec_lines.array_anc_id_96(p_line_num);
13861    g_rec_lines.array_anc_id_97(g_LineNumber)             := g_rec_lines.array_anc_id_97(p_line_num);
13862    g_rec_lines.array_anc_id_98(g_LineNumber)             := g_rec_lines.array_anc_id_98(p_line_num);
13863    g_rec_lines.array_anc_id_99(g_LineNumber)             := g_rec_lines.array_anc_id_99(p_line_num);
13864    g_rec_lines.array_anc_id_100(g_LineNumber)            := g_rec_lines.array_anc_id_100(p_line_num);
13865    --
13866    --
13867    g_rec_lines.array_event_number(g_LineNumber)          := g_rec_lines.array_event_number(p_line_num);
13868    g_rec_lines.array_entity_id(g_LineNumber)             := g_rec_lines.array_entity_id(p_line_num);
13869    g_rec_lines.array_reversal_code(g_LineNumber)         := g_rec_lines.array_reversal_code(p_line_num);
13870    g_rec_lines.array_balance_type_code(g_LineNumber)     := g_rec_lines.array_balance_type_code(p_line_num);
13871    g_rec_lines.array_ledger_id(g_LineNumber)             := g_rec_lines.array_ledger_id(p_line_num);
13872    --
13873    -- business flow
13874    --
13875    g_rec_lines.array_business_method_code(g_LineNumber)   := g_rec_lines.array_business_method_code(p_line_num);
13876    g_rec_lines.array_business_class_code(g_LineNumber)    := g_rec_lines.array_business_class_code(p_line_num);
13877    g_rec_lines.array_inherit_desc_flag(g_LineNumber)      := g_rec_lines.array_inherit_desc_flag(p_line_num);
13878    g_rec_lines.array_bflow_application_id(g_LineNumber)   := g_rec_lines.array_bflow_application_id(p_line_num);
13879 
13880    g_rec_lines.array_bflow_entity_code(g_LineNumber)      := g_rec_lines.array_bflow_entity_code(p_line_num);
13881    g_rec_lines.array_bflow_source_id_num_1(g_LineNumber)  := g_rec_lines.array_bflow_source_id_num_1(p_line_num);
13882    g_rec_lines.array_bflow_source_id_num_2(g_LineNumber)  := g_rec_lines.array_bflow_source_id_num_2(p_line_num);
13883    g_rec_lines.array_bflow_source_id_num_3(g_LineNumber)  := g_rec_lines.array_bflow_source_id_num_3(p_line_num);
13884    g_rec_lines.array_bflow_source_id_num_4(g_LineNumber)  := g_rec_lines.array_bflow_source_id_num_4(p_line_num);
13885    g_rec_lines.array_bflow_source_id_char_1(g_LineNumber) := g_rec_lines.array_bflow_source_id_char_1(p_line_num);
13886    g_rec_lines.array_bflow_source_id_char_2(g_LineNumber) := g_rec_lines.array_bflow_source_id_char_2(p_line_num);
13887    g_rec_lines.array_bflow_source_id_char_3(g_LineNumber) := g_rec_lines.array_bflow_source_id_char_3(p_line_num);
13888    g_rec_lines.array_bflow_source_id_char_4(g_LineNumber) := g_rec_lines.array_bflow_source_id_char_4(p_line_num);
13889 
13890    g_rec_lines.array_bflow_distribution_type(g_LineNumber):= g_rec_lines.array_bflow_distribution_type(p_line_num);
13891    g_rec_lines.array_bflow_dist_id_num_1(g_LineNumber)    := g_rec_lines.array_bflow_dist_id_num_1(p_line_num);
13892    g_rec_lines.array_bflow_dist_id_num_2(g_LineNumber)    := g_rec_lines.array_bflow_dist_id_num_2(p_line_num);
13893    g_rec_lines.array_bflow_dist_id_num_3(g_LineNumber)    := g_rec_lines.array_bflow_dist_id_num_3(p_line_num);
13894    g_rec_lines.array_bflow_dist_id_num_4(g_LineNumber)    := g_rec_lines.array_bflow_dist_id_num_4(p_line_num);
13895    g_rec_lines.array_bflow_dist_id_num_5(g_LineNumber)    := g_rec_lines.array_bflow_dist_id_num_5(p_line_num);
13896    g_rec_lines.array_bflow_dist_id_char_1(g_LineNumber)   := g_rec_lines.array_bflow_dist_id_char_1(p_line_num);
13897    g_rec_lines.array_bflow_dist_id_char_2(g_LineNumber)   := g_rec_lines.array_bflow_dist_id_char_2(p_line_num);
13898    g_rec_lines.array_bflow_dist_id_char_3(g_LineNumber)   := g_rec_lines.array_bflow_dist_id_char_3(p_line_num);
13899    g_rec_lines.array_bflow_dist_id_char_4(g_LineNumber)   := g_rec_lines.array_bflow_dist_id_char_4(p_line_num);
13900    g_rec_lines.array_bflow_dist_id_char_5(g_LineNumber)   := g_rec_lines.array_bflow_dist_id_char_5(p_line_num);
13901 
13902    g_rec_lines.array_override_acctd_amt_flag(g_LineNumber)   := g_rec_lines.array_override_acctd_amt_flag(p_line_num);
13903 
13904 
13905    g_rec_lines.array_bflow_applied_to_amt(g_LineNumber)   := g_rec_lines.array_bflow_applied_to_amt(p_line_num); -- 5132302
13906    --
13907    -- Allocation Attributes
13908    --
13909    g_rec_lines.array_alloct_application_id(g_LineNumber)   := g_rec_lines.array_alloct_application_id(p_line_num);
13910 
13911    g_rec_lines.array_alloct_entity_code(g_LineNumber)      := g_rec_lines.array_alloct_entity_code(p_line_num);
13912    g_rec_lines.array_alloct_source_id_num_1(g_LineNumber)  := g_rec_lines.array_alloct_source_id_num_1(p_line_num);
13913    g_rec_lines.array_alloct_source_id_num_2(g_LineNumber)  := g_rec_lines.array_alloct_source_id_num_2(p_line_num);
13914    g_rec_lines.array_alloct_source_id_num_3(g_LineNumber)  := g_rec_lines.array_alloct_source_id_num_3(p_line_num);
13915    g_rec_lines.array_alloct_source_id_num_4(g_LineNumber)  := g_rec_lines.array_alloct_source_id_num_4(p_line_num);
13916    g_rec_lines.array_alloct_source_id_char_1(g_LineNumber) := g_rec_lines.array_alloct_source_id_char_1(p_line_num);
13917    g_rec_lines.array_alloct_source_id_char_2(g_LineNumber) := g_rec_lines.array_alloct_source_id_char_2(p_line_num);
13918    g_rec_lines.array_alloct_source_id_char_3(g_LineNumber) := g_rec_lines.array_alloct_source_id_char_3(p_line_num);
13919    g_rec_lines.array_alloct_source_id_char_4(g_LineNumber) := g_rec_lines.array_alloct_source_id_char_4(p_line_num);
13920 
13921    g_rec_lines.array_alloct_distribution_type(g_LineNumber):= g_rec_lines.array_alloct_distribution_type(p_line_num);
13922    g_rec_lines.array_alloct_dist_id_num_1(g_LineNumber)    := g_rec_lines.array_alloct_dist_id_num_1(p_line_num);
13923    g_rec_lines.array_alloct_dist_id_num_2(g_LineNumber)    := g_rec_lines.array_alloct_dist_id_num_2(p_line_num);
13924    g_rec_lines.array_alloct_dist_id_num_3(g_LineNumber)    := g_rec_lines.array_alloct_dist_id_num_3(p_line_num);
13925    g_rec_lines.array_alloct_dist_id_num_4(g_LineNumber)    := g_rec_lines.array_alloct_dist_id_num_4(p_line_num);
13926    g_rec_lines.array_alloct_dist_id_num_5(g_LineNumber)    := g_rec_lines.array_alloct_dist_id_num_5(p_line_num);
13927    g_rec_lines.array_alloct_dist_id_char_1(g_LineNumber)   := g_rec_lines.array_alloct_dist_id_char_1(p_line_num);
13928    g_rec_lines.array_alloct_dist_id_char_2(g_LineNumber)   := g_rec_lines.array_alloct_dist_id_char_2(p_line_num);
13929    g_rec_lines.array_alloct_dist_id_char_3(g_LineNumber)   := g_rec_lines.array_alloct_dist_id_char_3(p_line_num);
13930    g_rec_lines.array_alloct_dist_id_char_4(g_LineNumber)   := g_rec_lines.array_alloct_dist_id_char_4(p_line_num);
13931    g_rec_lines.array_alloct_dist_id_char_5(g_LineNumber)   := g_rec_lines.array_alloct_dist_id_char_5(p_line_num);
13932    -- =================================================================================================
13933    --
13934    -- for 7029018
13935    IF NVL(g_rec_lines.array_balance_type_code(g_LineNumber),'N')='E'  THEN
13936       IF ((NVL(g_rec_lines.array_actual_upg_option(p_line_num), 'N') = 'Y') OR
13937           (NVL(g_rec_lines.array_enc_upg_option(p_line_num), 'N') = 'Y')) THEN
13938        --temp fix for Period End Accrual Encumbrance for Upgraded Entries.
13939            g_rec_lines.array_encumbrance_type_id(g_LineNumber) := nvl(g_rec_lines.array_upg_cr_enc_type_id(p_line_num),
13940                                                               g_rec_lines.array_upg_dr_enc_type_id(p_line_num));
13941             IF (C_LEVEL_EVENT >= g_log_level) THEN
13942                 trace
13943                (p_msg       =>   'Period End Accrual Encumbrance for Upgraded Entries'
13944                ,p_level     =>   C_LEVEL_EVENT
13945                ,p_module    =>   l_log_module);
13946             END IF;
13947        END IF;
13948     END IF;
13949 
13950    --
13951    -- Validate line accounting attributes
13952    --
13953    IF g_rec_lines.array_mpa_option(g_LineNumber) NOT IN ('Y','N') THEN
13954       XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
13955       xla_accounting_err_pkg.build_message
13956            (p_appli_s_name            => 'XLA'
13957            ,p_msg_name                => 'XLA_MA_INVALID_OPTION'    -- 4262811a
13958            ,p_token_1                 => 'LINE_NUMBER'
13959            ,p_value_1                 =>  g_ExtractLine
13960            ,p_token_2                 => 'ACCOUNTING_SOURCE_NAME'
13961            ,p_value_2                 => XLA_AE_SOURCES_PKG.GetAccountingSourceName('MULTIPERIOD_OPTION')
13962                                                          --(g_rec_lines.array_acct_attr_code(p_line_num))
13963            ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13964            ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13965            ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
13966    END IF;
13967 
13968    IF g_rec_lines.array_sys_distribution_type(g_LineNumber) IS NULL THEN
13969       XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
13970       xla_accounting_err_pkg.build_message
13971            (p_appli_s_name            => 'XLA'
13972            ,p_msg_name                => 'XLA_AP_NO_DIST_LINK_TYPE'
13973            ,p_token_1                 => 'LINE_NUMBER'
13974            ,p_value_1                 =>  g_ExtractLine
13975            ,p_token_2                 => 'ACCOUNTING_SOURCE_NAME'
13976            ,p_value_2                 => XLA_AE_SOURCES_PKG.GetAccountingSourceName('DISTRIBUTION_TYPE')
13977                                                              --(p_rec_acct_attrs.array_acct_attr_code(i))
13978            ,p_token_3                 => 'SOURCE_NAME'
13979            ,p_value_3                 => NULL
13980            ,p_token_4                 => 'LINE_TYPE_NAME'
13981            ,p_value_4                 =>  XLA_AE_SOURCES_PKG.GetComponentName (
13982                                                      g_accounting_line.component_type
13983                                                    , g_accounting_line.accounting_line_code
13984                                                    , g_accounting_line.accounting_line_type_code
13985                                                    , g_accounting_line.accounting_line_appl_id
13986                                                    , g_accounting_line.amb_context_code
13987                                                    , g_accounting_line.entity_code
13988                                                    , g_accounting_line.event_class_code
13989                                                   )
13990            ,p_token_5                 => 'OWNER'
13991            ,p_value_5                 => xla_lookups_pkg.get_meaning(
13992                                                      'XLA_OWNER_TYPE'
13993                                                     , g_rec_lines.array_accounting_line_type(g_LineNumber)
13994                                                    )
13995            ,p_token_6                 => 'PRODUCT_NAME'
13996            ,p_value_6                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13997            ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13998            ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13999            ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
14000    END IF;
14001 
14002 ----------------------------------------------
14003 -- 4623638  This change is on top of 120.85
14004 ----------------------------------------------
14005 IF nvl(g_rec_lines.array_calculate_acctd_flag(g_LineNumber), 'N')= 'N' OR
14006      (nvl(g_rec_lines.array_calculate_g_l_flag(g_LineNumber), 'N')='N' AND
14007       g_rec_lines.array_natural_side_code(g_LineNumber) = 'G') THEN
14008 
14009    IF g_rec_lines.array_ledger_amount(g_LineNumber) IS NULL THEN
14010       XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
14011       xla_accounting_err_pkg.build_message
14012            (p_appli_s_name            => 'XLA'
14013            ,p_msg_name                => 'XLA_AP_NO_LEDGER_AMOUNT'
14014            ,p_token_1                 => 'LINE_NUMBER'
14015            ,p_value_1                 =>  g_ExtractLine
14016            ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14017            ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14018            ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
14019    END IF;
14020 
14021 END IF;
14022 
14023 EXCEPTION
14024 --
14025    WHEN xla_exceptions_pkg.application_exception THEN
14026       RAISE;
14027    WHEN OTHERS  THEN
14028       xla_exceptions_pkg.raise_message
14029                (p_location => 'xla_ae_lines_pkg.CopyLineInfo');
14030   --
14031 END CopyLineInfo;
14032 
14033 /*======================================================================+
14034 |                                                                       |
14035 | Public Procedure-  Business Flow Upgrade Entries                      |
14036 |                                                                       |
14037 |                                                                       |
14038 +======================================================================*/
14039 
14040 PROCEDURE BflowUpgEntry
14041        (p_business_method_code      IN VARCHAR2
14042        ,p_business_class_code       IN VARCHAR2
14043        ,p_balance_type              IN VARCHAR2) IS
14044 l_ledger_ccy            VARCHAR2(30);
14045 l_ccid                  NUMBER;
14046 l_enc_type_id           NUMBER;
14047 l_entered_amt           NUMBER;
14048 l_accounted_amt         NUMBER;
14049 l_entered_curr          VARCHAR2(30);
14050 l_xchange_rate          NUMBER;
14051 l_xchange_type          VARCHAR2(30);
14052 l_xchange_date          DATE;
14053 
14054 l_log_module            VARCHAR2(240); -- Bug 4922099
14055 
14056 BEGIN
14057    -- Bug 4922099
14058    IF g_log_enabled THEN
14059       l_log_module := C_DEFAULT_MODULE || '.BflowUpgEntry';
14060    END IF;
14061 
14062    g_rec_lines.array_business_method_code(g_LineNumber) :=  p_business_method_code;
14063 
14064    -- Bug 4922099
14065    IF ((g_rec_lines.array_actual_upg_option(g_LineNumber) = 'O' OR g_rec_lines.array_enc_upg_option(g_LineNumber) = 'O')
14066        AND g_rec_lines.array_acc_reversal_option(g_LineNumber) IN ('Y', 'B')) THEN
14067       xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
14068       xla_accounting_err_pkg.build_message
14069            (p_appli_s_name            => 'XLA'
14070            ,p_msg_name                => 'XLA_UPG_OVERRIDE_NA_REVERSAL'
14071            ,p_token_1                 => 'LINE_NUMBER'
14072            ,p_value_1                 =>  g_ExtractLine
14073            ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14074            ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14075            ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
14076 
14077       IF (C_LEVEL_ERROR >= g_log_level) THEN
14078           trace
14079                (p_msg       =>   'ERROR: XLA_UPG_OVERRIDE_NA_REVERSAL'
14080                ,p_level     =>   C_LEVEL_ERROR
14081                ,p_module    =>   l_log_module);
14082       END IF;
14083     END IF;
14084 
14085 
14086    ------------------------------------------------
14087    -- Validate the applied-to accounting attributes
14088    ------------------------------------------------
14089    ValidateBFlowLinks;
14090 
14091    -------------------------------------------------
14092    -- Reset values for certain fields in g_rec_lines
14093    -------------------------------------------------
14094 
14095    IF p_balance_type = 'A' THEN
14096       IF g_rec_lines.array_natural_side_code(g_LineNumber) = C_CREDIT THEN
14097          -- Bug 4922099
14098          IF (NVL(g_rec_lines.array_actual_upg_option(g_LineNumber), 'N') = 'Y') THEN
14099            l_ccid           := g_rec_lines.array_actual_upg_cr_ccid(g_LineNumber);
14100          END IF;
14101          l_enc_type_id    := NULL;
14102          l_entered_amt    := g_rec_lines.array_actual_upg_cr_ent_amt(g_LineNumber);
14103          l_accounted_amt  := g_rec_lines.array_actual_upg_cr_ledger_amt(g_LineNumber);
14104          l_entered_curr   := g_rec_lines.array_actual_upg_cr_ent_curr(g_LineNumber);
14105          l_xchange_rate   := g_rec_lines.array_actual_upg_cr_xrate(g_LineNumber);
14106          l_xchange_type   := g_rec_lines.array_actual_upg_cr_xrate_type(g_LineNumber);
14107          l_xchange_date   := g_rec_lines.array_actual_upg_cr_xdate(g_LineNumber);
14108       ELSE
14109          -- Bug 4922099
14110          IF (NVL(g_rec_lines.array_actual_upg_option(g_LineNumber), 'N') = 'Y') THEN
14111            l_ccid           := g_rec_lines.array_actual_upg_dr_ccid(g_LineNumber);
14112          END IF;
14113          l_enc_type_id    := NULL;
14114          l_entered_amt    := g_rec_lines.array_actual_upg_dr_ent_amt(g_LineNumber);
14115          l_accounted_amt  := g_rec_lines.array_actual_upg_dr_ledger_amt(g_LineNumber);
14116          l_entered_curr   := g_rec_lines.array_actual_upg_dr_ent_curr(g_LineNumber);
14117          l_xchange_rate   := g_rec_lines.array_actual_upg_dr_xrate(g_LineNumber);
14118          l_xchange_type   := g_rec_lines.array_actual_upg_dr_xrate_type(g_LineNumber);
14119          l_xchange_date   := g_rec_lines.array_actual_upg_dr_xdate(g_LineNumber);
14120       END IF;
14121    ELSIF p_balance_type = 'E' THEN
14122       IF g_rec_lines.array_natural_side_code(g_LineNumber) = C_CREDIT THEN
14123         -- Bug 4922099
14124          IF (NVL(g_rec_lines.array_enc_upg_option(g_LineNumber), 'N') = 'Y') THEN
14125            l_ccid           := g_rec_lines.array_enc_upg_cr_ccid(g_LineNumber);
14126          END IF;
14127          l_enc_type_id    := g_rec_lines.array_upg_cr_enc_type_id(g_LineNumber);
14128          l_entered_amt    := g_rec_lines.array_enc_upg_cr_ent_amt(g_LineNumber);
14129          l_accounted_amt  := g_rec_lines.array_enc_upg_cr_ledger_amt(g_LineNumber);
14130          l_entered_curr   := g_rec_lines.array_enc_upg_cr_ent_curr(g_LineNumber);
14131       ELSE
14132          -- Bug 4922099
14133          IF (NVL(g_rec_lines.array_enc_upg_option(g_LineNumber), 'N') = 'Y') THEN
14134            l_ccid           := g_rec_lines.array_enc_upg_dr_ccid(g_LineNumber);
14135          END IF;
14136          l_enc_type_id    := g_rec_lines.array_upg_dr_enc_type_id(g_LineNumber);
14137          l_entered_amt    := g_rec_lines.array_enc_upg_dr_ent_amt(g_LineNumber);
14138          l_accounted_amt  := g_rec_lines.array_enc_upg_dr_ledger_amt(g_LineNumber);
14139          l_entered_curr   := g_rec_lines.array_enc_upg_dr_ent_curr(g_LineNumber);
14140       END IF;
14141 
14142       g_override_acctd_amt_flag                           := 'Y';
14143    END IF;
14144 
14145    g_rec_lines.array_encumbrance_type_id(g_LineNumber) := l_enc_type_id;
14146    g_rec_lines.array_entered_amount(g_LineNumber)      := l_entered_amt;
14147    g_rec_lines.array_ledger_amount(g_LineNumber)    := l_accounted_amt;
14148    g_rec_lines.array_currency_code(g_LineNumber)       := l_entered_curr;
14149    g_rec_lines.array_curr_conversion_date(g_LineNumber):= l_xchange_date;
14150    g_rec_lines.array_curr_conversion_rate(g_LineNumber):= l_xchange_rate;
14151    g_rec_lines.array_curr_conversion_type(g_LineNumber):= l_xchange_type;
14152    -- 5845547
14153    g_rec_lines.array_party_type_code(g_LineNumber)     := g_rec_lines.array_upg_party_type_code(g_LineNumber);
14154    g_rec_lines.array_party_id(g_LineNumber)            := g_rec_lines.array_upg_party_id(g_LineNumber);
14155    g_rec_lines.array_party_site_id(g_LineNumber)       := g_rec_lines.array_upg_party_site_id(g_LineNumber);
14156 
14157   -- Bug 4922099
14158   IF ((NVL(g_rec_lines.array_actual_upg_option(g_LineNumber), 'N') = 'Y') OR
14159       (NVL(g_rec_lines.array_enc_upg_option(g_LineNumber), 'N') = 'Y')) THEN
14160    xla_ae_lines_pkg.set_ccid(
14161     p_code_combination_id          => l_ccid
14162   , p_value_type_code              => 'S'  --l_adr_value_type_code
14163   , p_transaction_coa_id           => NULL --l_adr_transaction_coa_id
14164   , p_accounting_coa_id            => NULL --l_adr_accounting_coa_id
14165   , p_adr_code                     => NULL --'SS_TEST'
14166   , p_adr_type_code                => NULL --'C'
14167   , p_component_type               => g_accounting_line.component_type --l_component_type
14168   , p_component_code               => g_accounting_line.accounting_line_code  --l_component_code
14169   , p_component_type_code          => g_accounting_line.accounting_line_type_code --l_component_type_code
14170   , p_component_appl_id            => g_accounting_line.accounting_line_appl_id --l_component_appl_id
14171   , p_amb_context_code             => g_accounting_line.amb_context_code --l_amb_context_code
14172   , p_side                         => 'NA'
14173   );
14174   END IF;
14175 
14176 END BflowUpgEntry;
14177 
14178 PROCEDURE CreateGainOrLossLine
14179        (p_event_id                  IN NUMBER
14180        ,p_application_id            IN NUMBER
14181        ,p_amb_context_code          IN VARCHAR2
14182        ,p_entity_code               IN VARCHAR2
14183        ,p_event_class_code          IN VARCHAR2
14184        ,p_event_type_code           IN VARCHAR2
14185        ,p_gain_ccid                 IN NUMBER
14186        ,p_loss_ccid                 IN NUMBER
14187 /*
14188        ,p_rounding_class            IN VARCHAR2
14189        ,p_doc_rounding_level        IN VARCHAR2
14190        ,p_merge_duplicate_code      IN VARCHAR2
14191        ,p_gl_transfer_mode_code     IN VARCHAR2
14192 */
14193        ,p_distribution_id_char_1    IN VARCHAR2
14194        ,p_distribution_id_char_2    IN VARCHAR2
14195        ,p_distribution_id_char_3    IN VARCHAR2
14196        ,p_distribution_id_char_4    IN VARCHAR2
14197        ,p_distribution_id_char_5    IN VARCHAR2
14198        ,p_distribution_id_num_1     IN NUMBER
14199        ,p_distribution_id_num_2     IN NUMBER
14200        ,p_distribution_id_num_3     IN NUMBER
14201        ,p_distribution_id_num_4     IN NUMBER
14202        ,p_distribution_id_num_5     IN NUMBER
14203        ,p_distribution_type         IN VARCHAR2
14204        ,p_gl_date                   IN DATE
14205        ,p_gain_loss_ref             IN VARCHAR2
14206        ,p_balance_type_flag         IN VARCHAR2
14207 ) IS
14208 l_ledger_ccy            VARCHAR2(30);
14209 l_ccid                  NUMBER;
14210 l_enc_type_id           NUMBER;
14211 l_entered_amt           NUMBER;
14212 l_accounted_amt         NUMBER;
14213 l_entered_curr          VARCHAR2(30);
14214 l_ae_header_id          NUMBER;
14215 l_Idx                   NUMBER;
14216 
14217 l_log_module            VARCHAR2(240);
14218 -- extract line num is in g_ExtractLine
14219 BEGIN
14220   IF g_log_enabled THEN
14221     l_log_module := C_DEFAULT_MODULE || '.CreateGainOrLossLine';
14222   END IF;
14223   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14224     trace
14225            (p_msg      => 'BEGIN of CreateGainOrLossLine'
14226            ,p_level    => C_LEVEL_PROCEDURE
14227            ,p_module   => l_log_module);
14228     trace
14229            (p_msg      => 'p_gain_ccid:'||to_char(p_gain_ccid)||' p_loss_ccid:'||to_char(p_loss_ccid)
14230            ,p_level    => C_LEVEL_PROCEDURE
14231            ,p_module   => l_log_module);
14232   END IF;
14233 
14234   -- this need to be called before SetNewLine
14235   SetNewLine;
14236 
14237   set_ae_header_id (p_ae_header_id => p_event_id ,
14238                                 p_header_num   => 0);
14239 
14240   -- this is a gain/loss line
14241   l_ae_header_id := SetAcctLineOption(
14242            p_natural_side_code          => 'G'
14243          , p_gain_or_loss_flag          => 'Y'
14244          , p_gl_transfer_mode_code      => 'D' -- always use detail
14245          , p_acct_entry_type_code       => 'A'
14246          , p_switch_side_flag           => 'Y'
14247          , p_merge_duplicate_code       => 'A' --p_merge_duplicate_code
14248          );
14249   SetAcctLineType
14250       (p_component_type             => 'AUTO_GEN_GAIN_LOSS'
14251       ,p_event_type_code            => p_event_type_code
14252       ,p_line_definition_owner_code => 'O'
14253       ,p_line_definition_code       => 'AUTO_GEN_GAIN_LOSS'
14254       ,p_accounting_line_code       => 'AUTO_GEN_GAIN_LOSS'
14255       ,p_accounting_line_type_code  => 'S'
14256       ,p_accounting_line_appl_id    => p_application_id
14257       ,p_amb_context_code           => p_amb_context_code
14258       ,p_entity_code                => p_entity_code
14259       ,p_event_class_code           => p_event_class_code);
14260   SetAcctClass(
14261            p_accounting_class_code  => 'DUMMY_EXCHANGE_GAIN_LOSS_DUMMY'
14262 --           p_accounting_class_code  => 'EXCHANGE_GAIN_LOSS'
14263          , p_ae_header_id           => l_ae_header_id
14264          );
14265 
14266   g_rec_lines.array_calculate_acctd_flag(g_LineNumber) := 'Y';
14267   g_rec_lines.array_calculate_g_l_flag(g_LineNumber) := 'Y';
14268   g_rec_lines.array_balance_type_code(g_LineNumber) := p_balance_type_flag;
14269 
14270   g_rec_lines.array_ledger_id(g_LineNumber) :=
14271       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
14272 
14273   g_rec_lines.array_gl_date(g_LineNumber) := p_gl_date;
14274 
14275   g_rec_lines.array_distribution_id_char_1(g_LineNumber) := p_distribution_id_char_1;
14276   g_rec_lines.array_distribution_id_char_2(g_LineNumber) := p_distribution_id_char_2;
14277   g_rec_lines.array_distribution_id_char_3(g_LineNumber) := p_distribution_id_char_3;
14278   g_rec_lines.array_distribution_id_char_4(g_LineNumber) := p_distribution_id_char_4;
14279   g_rec_lines.array_distribution_id_char_5(g_LineNumber) := p_distribution_id_char_5;
14280   g_rec_lines.array_distribution_id_num_1(g_LineNumber)  := p_distribution_id_num_1;
14281   g_rec_lines.array_distribution_id_num_2(g_LineNumber)  := p_distribution_id_num_2;
14282   g_rec_lines.array_distribution_id_num_3(g_LineNumber)  := p_distribution_id_num_3;
14283   g_rec_lines.array_distribution_id_num_4(g_LineNumber)  := p_distribution_id_num_4;
14284   g_rec_lines.array_distribution_id_num_5(g_LineNumber)  := p_distribution_id_num_5;
14285   g_rec_lines.array_sys_distribution_type(g_LineNumber)  := p_distribution_type;
14286   g_rec_lines.array_sys_distribution_type(g_LineNumber)  := p_distribution_type;
14287   g_rec_lines.array_gain_or_loss_ref(g_LineNumber)       := p_gain_loss_ref;
14288   g_rec_lines.array_currency_code(g_LineNumber)          :=
14289                                   XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.currency_code;
14290 
14291   IF(p_gain_ccid is null or p_gain_ccid = -1 ) THEN
14292     g_rec_lines.array_ccid(g_LineNumber)          := -1;
14293     g_rec_lines.array_ccid_flag(g_LineNumber)     := C_INVALID;
14294   ELSIF( XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.target_coa_id <>
14295          XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.source_coa_id ) THEN
14296     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14297       trace
14298            (p_msg      => 'credit map here, sl_coa_mapping_id is:'||XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.sl_coa_mapping_id
14299            ,p_level    => C_LEVEL_PROCEDURE
14300            ,p_module   => l_log_module);
14301       trace
14302            (p_msg      => 'map here, ledger_id is:'||XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14303            ,p_level    => C_LEVEL_PROCEDURE
14304            ,p_module   => l_log_module);
14305       trace
14306            (p_msg      => 'map here, array_ae_header_id is:'||g_rec_lines.array_ae_header_id(g_LineNumber)
14307            ,p_level    => C_LEVEL_PROCEDURE
14308            ,p_module   => l_log_module);
14309       trace
14310            (p_msg      => 'map here, temp_line_num is:'||g_rec_lines.array_line_num(g_LineNumber)
14311            ,p_level    => C_LEVEL_PROCEDURE
14312            ,p_module   => l_log_module);
14313       trace
14314            (p_msg      => 'map here, ccid is:'||p_gain_ccid
14315            ,p_level    => C_LEVEL_PROCEDURE
14316            ,p_module   => l_log_module);
14317     END IF;
14318     g_rec_lines.array_ccid_flag(g_LineNumber)     := C_INVALID;
14319     IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.sl_coa_mapping_id IS NULL THEN
14320       null;
14321     ELSE
14322       l_Idx := NVL(g_transaction_accounts.array_ae_header_id.COUNT,0) + 1;
14323       g_transaction_accounts.array_line_num(l_Idx)        := l_Idx ;
14324       g_transaction_accounts.array_ae_header_id(l_Idx)    := g_rec_lines.array_ae_header_id(g_LineNumber);
14325       g_transaction_accounts.array_temp_line_num(l_Idx)   := g_rec_lines.array_line_num(g_LineNumber);
14326       g_transaction_accounts.array_code_combination_id (l_Idx)   := p_gain_ccid;
14327       g_transaction_accounts.array_segment(l_Idx)                := NULL;
14328       g_transaction_accounts.array_from_segment_code(l_Idx)      := NULL;
14329       g_transaction_accounts.array_to_segment_code(l_Idx)        := NULL;
14330       g_transaction_accounts.array_processing_status_code(l_Idx) := C_MAP_CCID;
14331       g_transaction_accounts.array_side_code(l_Idx)              := 'CREDIT';
14332     END IF;
14333   ELSE
14334     g_rec_lines.array_ccid(g_LineNumber)          := p_gain_ccid;
14335     g_rec_lines.array_ccid_flag(g_LineNumber)     := C_CREATED;
14336   END IF;
14337 
14338   IF(p_loss_ccid is null or p_loss_ccid = -1) THEN
14339     g_rec_lines.alt_array_ccid(g_LineNumber)      :=  -1;
14340     g_rec_lines.alt_array_ccid_flag(g_LineNumber) := C_INVALID;
14341   ELSIF( XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.target_coa_id <>
14342          XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.source_coa_id ) THEN
14343 
14344     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14345       trace
14346            (p_msg      => 'debit map here, sl_coa_mapping_id is:'||XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.sl_coa_mapping_id
14347            ,p_level    => C_LEVEL_PROCEDURE
14348            ,p_module   => l_log_module);
14349       trace
14350            (p_msg      => 'map here, ledger_id is:'||XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14351            ,p_level    => C_LEVEL_PROCEDURE
14352            ,p_module   => l_log_module);
14353       trace
14354            (p_msg      => 'map here, array_ae_header_id is:'||g_rec_lines.array_ae_header_id(g_LineNumber)
14355            ,p_level    => C_LEVEL_PROCEDURE
14356            ,p_module   => l_log_module);
14357       trace
14358            (p_msg      => 'map here, temp_line_num is:'||g_rec_lines.array_line_num(g_LineNumber)
14359            ,p_level    => C_LEVEL_PROCEDURE
14360            ,p_module   => l_log_module);
14361       trace
14362            (p_msg      => 'map here, ccid is:'||p_loss_ccid
14363            ,p_level    => C_LEVEL_PROCEDURE
14364            ,p_module   => l_log_module);
14365     END IF;
14366     g_rec_lines.array_ccid_flag(g_LineNumber)     := C_INVALID;
14367     IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.sl_coa_mapping_id IS NULL THEN
14368       null;
14369     ELSE
14370       l_Idx := NVL(g_transaction_accounts.array_ae_header_id.COUNT,0) + 1;
14371       g_transaction_accounts.array_line_num(l_Idx)        := l_Idx ;
14372       g_transaction_accounts.array_ae_header_id(l_Idx)    := g_rec_lines.array_ae_header_id(g_LineNumber);
14373       g_transaction_accounts.array_temp_line_num(l_Idx)   := g_rec_lines.array_line_num(g_LineNumber);
14374       g_transaction_accounts.array_code_combination_id (l_Idx)   := p_loss_ccid;
14375       g_transaction_accounts.array_segment(l_Idx)                := NULL;
14376       g_transaction_accounts.array_from_segment_code(l_Idx)      := NULL;
14377       g_transaction_accounts.array_to_segment_code(l_Idx)        := NULL;
14378       g_transaction_accounts.array_processing_status_code(l_Idx) := C_MAP_CCID;
14379       g_transaction_accounts.array_side_code(l_Idx)              := 'DEBIT';
14380     END IF;
14381   ELSE
14382     g_rec_lines.alt_array_ccid(g_LineNumber)      :=  p_loss_ccid;
14383     g_rec_lines.alt_array_ccid_flag(g_LineNumber) := C_CREATED;
14384   END IF;
14385 
14386   g_rec_lines.array_entered_cr(g_LineNumber)    := 0;
14387 
14388   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14389     trace
14390            (p_msg      => 'END of CreateGainOrLossLine'
14391            ,p_level    => C_LEVEL_PROCEDURE
14392            ,p_module   => l_log_module);
14393   END IF;
14394 END CreateGainOrLossLine;
14395 
14396 PROCEDURE CreateGainOrLossLines
14397        (p_event_id                  IN NUMBER
14398        ,p_application_id            IN NUMBER
14399        ,p_amb_context_code          IN VARCHAR2
14400        ,p_entity_code               IN VARCHAR2
14401        ,p_event_class_code          IN VARCHAR2
14402        ,p_event_type_code           IN VARCHAR2
14403        ,p_gain_ccid                 IN NUMBER
14404        ,p_loss_ccid                 IN NUMBER
14405        ,p_actual_flag               IN VARCHAR2
14406        ,p_enc_flag                  IN VARCHAR2
14407        ,p_actual_g_l_ref            IN VARCHAR2
14408        ,p_enc_g_l_ref               IN VARCHAR2
14409 ) IS
14410 l_ledger_ccy            VARCHAR2(30);
14411 l_ccid                  NUMBER;
14412 l_enc_type_id           NUMBER;
14413 l_entered_amt           NUMBER;
14414 l_accounted_amt         NUMBER;
14415 l_entered_curr          VARCHAR2(30);
14416 l_ae_header_id          NUMBER;
14417 l_rounding_class        VARCHAR2(30);
14418 l_doc_rounding_level    VARCHAR2(30);
14419 l_gain_or_loss_ref      VARCHAR2(30);
14420 l_merge_duplicate_code  VARCHAR2(30);
14421 l_gl_transfer_mode_code VARCHAR2(30);
14422 
14423 l_distribution_id_char_1 VARCHAR2(30);
14424 l_distribution_id_char_2 VARCHAR2(30);
14425 l_distribution_id_char_3 VARCHAR2(30);
14426 l_distribution_id_char_4 VARCHAR2(30);
14427 l_distribution_id_char_5 VARCHAR2(30);
14428 l_distribution_id_num_1  NUMBER;
14429 l_distribution_id_num_2  NUMBER;
14430 l_distribution_id_num_3  NUMBER;
14431 l_distribution_id_num_4  NUMBER;
14432 l_distribution_id_num_5  NUMBER;
14433 l_distribution_type      VARCHAR2(30);
14434 l_gl_date                DATE;
14435 
14436 l_log_module            VARCHAR2(240);
14437 -- extract line num is in g_ExtractLine
14438 BEGIN
14439   IF g_log_enabled THEN
14440     l_log_module := C_DEFAULT_MODULE || '.CreateGainOrLossLines';
14441   END IF;
14442   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14443     trace
14444            (p_msg      => 'BEGIN of CreateGainOrLossLines'
14445            ,p_level    => C_LEVEL_PROCEDURE
14446            ,p_module   => l_log_module);
14447   END IF;
14448 
14449   IF(p_actual_flag = 'A') THEN
14450 
14451     -- this need to be called before SetNewLine
14452     l_rounding_class := g_rec_lines.array_rounding_class(g_LineNumber);
14453     l_doc_rounding_level:= g_rec_lines.array_doc_rounding_level(g_LineNumber);
14454     l_gain_or_loss_ref:= g_rec_lines.array_gain_or_loss_ref(g_LineNumber);
14455     l_merge_duplicate_code := g_rec_lines.array_merge_duplicate_code(g_LineNumber);
14456     l_gl_transfer_mode_code := g_rec_lines.array_gl_transfer_mode(g_LineNumber);
14457     l_distribution_id_char_1 := g_rec_lines.array_distribution_id_char_1(g_LineNumber);
14458     l_distribution_id_char_2 := g_rec_lines.array_distribution_id_char_2(g_LineNumber);
14459     l_distribution_id_char_3 := g_rec_lines.array_distribution_id_char_3(g_LineNumber);
14460     l_distribution_id_char_4 := g_rec_lines.array_distribution_id_char_4(g_LineNumber);
14461     l_distribution_id_char_5 := g_rec_lines.array_distribution_id_char_5(g_LineNumber);
14462     l_distribution_id_num_1  := g_rec_lines.array_distribution_id_num_1(g_LineNumber);
14463     l_distribution_id_num_2  := g_rec_lines.array_distribution_id_num_2(g_LineNumber);
14464     l_distribution_id_num_3  := g_rec_lines.array_distribution_id_num_3(g_LineNumber);
14465     l_distribution_id_num_4  := g_rec_lines.array_distribution_id_num_4(g_LineNumber);
14466     l_distribution_id_num_5  := g_rec_lines.array_distribution_id_num_5(g_LineNumber);
14467     l_distribution_type      := g_rec_lines.array_sys_distribution_type(g_LineNumber);
14468     l_gl_date                := g_rec_lines.array_gl_date(g_LineNumber);
14469 
14470   -- need create a gain/loss for actual lines
14471     CreateGainOrLossLine
14472        (p_event_id                  => p_event_id
14473        ,p_application_id            => p_application_id
14474        ,p_amb_context_code          => p_amb_context_code
14475        ,p_entity_code               => p_entity_code
14476        ,p_event_class_code          => p_event_class_code
14477        ,p_event_type_code           => p_event_type_code
14478        ,p_gain_ccid                 => p_gain_ccid
14479        ,p_loss_ccid                 => p_loss_ccid
14480        ,p_distribution_id_char_1    => l_distribution_id_char_1
14481        ,p_distribution_id_char_2    => l_distribution_id_char_2
14482        ,p_distribution_id_char_3    => l_distribution_id_char_3
14483        ,p_distribution_id_char_4    => l_distribution_id_char_4
14484        ,p_distribution_id_char_5    => l_distribution_id_char_5
14485        ,p_distribution_id_num_1     => l_distribution_id_num_1
14486        ,p_distribution_id_num_2     => l_distribution_id_num_2
14487        ,p_distribution_id_num_3     => l_distribution_id_num_3
14488        ,p_distribution_id_num_4     => l_distribution_id_num_4
14489        ,p_distribution_id_num_5     => l_distribution_id_num_5
14490        ,p_distribution_type         => l_distribution_type
14491        ,p_gl_date                   => l_gl_date
14492        ,p_gain_loss_ref             => p_actual_g_l_ref
14493        ,p_balance_type_flag         => 'A');
14494   END IF;
14495 /*
14496 
14497   IF(p_enc_flag = 'E') THEN
14498   -- need create a gain/loss for actual lines
14499     CreateGainOrLossLine
14500        (p_event_id                  => p_event_id
14501        ,p_application_id            => p_application_id
14502        ,p_amb_context_code          => p_amb_context_code
14503        ,p_entity_code               => p_entity_code
14504        ,p_event_class_code          => p_event_class_code
14505        ,p_event_type_code           => p_event_type_code
14506        ,p_gain_ccid                 => p_gain_ccid
14507        ,p_loss_ccid                 => p_loss_ccid
14508        ,p_distribution_id_char_1    => l_distribution_id_char_1
14509        ,p_distribution_id_char_2    => l_distribution_id_char_2
14510        ,p_distribution_id_char_3    => l_distribution_id_char_3
14511        ,p_distribution_id_char_4    => l_distribution_id_char_4
14512        ,p_distribution_id_char_5    => l_distribution_id_char_5
14513        ,p_distribution_id_num_1     => l_distribution_id_num_1
14514        ,p_distribution_id_num_2     => l_distribution_id_num_2
14515        ,p_distribution_id_num_3     => l_distribution_id_num_3
14516        ,p_distribution_id_num_4     => l_distribution_id_num_4
14517        ,p_distribution_id_num_5     => l_distribution_id_num_5
14518        ,p_distribution_type         => l_distribution_type
14519        ,p_gl_date                   => l_gl_date
14520        ,p_gain_loss_ref             => p_enc_g_l_ref
14521        ,p_balance_type_flag         => 'E');
14522   END IF;
14523 */
14524 
14525   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14526     trace
14527            (p_msg      => 'END of CreateGainOrLossLines'
14528            ,p_level    => C_LEVEL_PROCEDURE
14529            ,p_module   => l_log_module);
14530   END IF;
14531 END CreateGainOrLossLines;
14532 
14533 --=============================================================================
14534 --
14535 --
14536 --
14537 --
14538 --
14539 --
14540 --
14541 --
14542 --
14543 --
14544 --
14545 --
14546 --
14547 --
14548 --
14549 --
14550 --
14551 --
14552 --
14553 --
14554 --
14555 --
14556 --=============================================================================
14557 --=============================================================================
14558 --          *********** Initialization routine **********
14559 --=============================================================================
14560 
14561 BEGIN
14562    g_application_id := xla_accounting_cache_pkg.GetValueNum('XLA_EVENT_APPL_ID');
14563 
14564    ----------------------------------------
14565    -- 4219869 Init Business Flow counts
14566    ----------------------------------------
14567    g_num_bflow_prior_entries := 0;
14568    g_num_bflow_same_entries  := 0;
14569 
14570    ----------------------------------------
14571    -- 5108415 Incomplete MPA
14572    ----------------------------------------
14573    g_incomplete_mpa_acc_LR := NULL;
14574    g_incomplete_mpa_acc_TR := NULL;
14575 
14576    g_log_level      := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
14577    g_log_enabled    := fnd_log.test
14578                           (log_level  => g_log_level
14579                           ,module     => C_DEFAULT_MODULE);
14580 
14581    IF NOT g_log_enabled  THEN
14582       g_log_level := C_LEVEL_LOG_DISABLED;
14583    END IF;
14584 
14585 END xla_ae_lines_pkg;