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.237.12020000.3 2012/08/25 23:40:48 vdamerla 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 |     27-NOV-2008 VGOPISET    7581008 - Reverting C_BULK_LIMIT to 1000 from  |
240 |                                       5000.                                |
241 |     29-JAN-2009 VGOPISET    7704240 - SetDebitCreditAmount changed to have |
242 |                                       absolute BFLOW APPLIED AMOUNT when   |
243 |                                       change SIDE is used for negative     |
244 |                                       amounts passed from Subledgers.      |
245 |     26-FEB-2009 VGOPISET    8277823 - Populate REF_EVENT_ID as negative    |
246 |                                       in AccountingReversal when Original  |
247 |                                       and Reversal accounted in same Run   |
248 |     2-mar-2009 ssawhney    8250875   changed hint in businessflowpriorentry|
249 |                                      cursor                                |
250 |     1-MAR-2009 VGOPISET     7109881 - Included new procedures like         |
251 |                                       InsertMPALineInfo,SetNullMPALineInfo |
252 |                                       and overloaded CopyLineInfo.         |
253 |     9-MAR-2009 schodava     7541615 - Procedure SetDebitCreditAmounts -    |
254 |                                       Nullified the currency conversion    |
255 |                                       type and rate if entered currency is |
256 |                                       same as ledger currency              |
257 |    02-Jun-2009 VGOPISET     8505463 - Changes in AccountingReversal for    |
258 |                                       MPA Cancellation.                    |
259 |    20-sep-2009 ssawhney     8773083   Modified CalculateGainLossAmounts    |
260 |              and 8452052 and 8920369  completely.  Added hint to pick      |
261 |	                                XALG_U1 for update xla_ae_lines_gt   |
262 |					in SameEntry/PriorEntry              |
263 |    18-Mar-2010 ssawhney     9483834   incorrect alias in the hints in CalculateGainLossAmounts |
264 |    26-Mar-2010 krsankar     8810416   Modified the currency conversion     |
265 |                                       details in FUNCTION InsertLines for  |
266 |                                       merging lines issue between Primary  |
267 |                                       and Secondary Ledgers                |
268 |    30-Mar-2010 M.S.Narayanan 9352035  Changed BusinessFlowPriorEntries to store|
269 |                                       exchange rate derived from xla_distribution_links|
270 |                                       of upstream transactions. This derived exchange rate|
271 |                                       is used for accounted amount calculation of downstream|
272 |                                       transactions whose corresponding upstream|
273 |                                       transactions are merged to zero.	|
274 |                                       transactions are merged to zero.	|
275 |     06-Sep-2010 VGOPISET    9954676   Included new procedures like         |
276 |                          SetNullMpaTrxAcctCopyInfo,InsertMpaTrxAcctCopyInfo|
277 |                          CopyMpaTrxAcctCopyInfo to support COA Mapping     |
278 |                          for MPA set up in Secondary Ledger(COA Mapping)   |
279 |     29-Jan-2011 VGOPISET   11671933  Changes in AccountingReversal for the |
280 |                          i) Change SIGN considered for ExchangeGainLoss    |
281 |                         ii) Change SIGN considered for Transaction Revesal |
282 |                             in Draft Mode as well.                         |
283 |     02-Feb-2011 VGOPISET  11066172 Changes in BusinessFlowSameEntries to   |
284 |                           mark all the Headers as INVALID after all dummy  |
285 |                           lines are deleted from xla_ae_lines_gt           |
286 |     18-Oct-2011 Narayanan M.S. Bug 12379106 Changes in business flow cursor|
287 |                                in procedure BusinessFlowPriorEntries to    |
288 |                                include event_number when deciding the line |
289 |                                rank.                                       |
290 |     11-Nov-2011 VGOPISET  13018249 changes for STAT Currency Journals in   |
291 |                           Calculate Unrounded and GainLoss Amounts.        |
292 |     17-Nov-2011 VGOPISET    13023651 Changed Parameter Names of procedures |
293 |                         InsertMpaTrxAcctCopyInfo and CopyMpaTrxAcctCopyInfo|
294 |    14-Dec-2011  NMIKKILI    13493286     Updated event_status_code to 'I'  |
295 |                                          in BusinessFlowPriorEntries and   |
296 |                                          BusinessFlowSameEntries procedures|
297 |    23-May-2012  NMIKKILI   13636827	Added case for ALC ledger having same|
298 |                            (14105252) currency at event class level        |
299 +===========================================================================*/
300 --
301 --+==========================================================================+
302 --|                                                                          |
303 --|                                                                          |
304 --| CONSTANT                                                                 |
305 --|                                                                          |
306 --|                                                                          |
307 --+==========================================================================+
308 --
309 C_MAXROWS             CONSTANT NATURAL     := 1000;
310 C_BULK_LIMIT          CONSTANT NUMBER      := 500; -- 5000; reverted,for bug:7581008, reverted again for bug9360982
311 --
312 --
313 -- Accounting entry type code
314 --
315 C_STANDARD               CONSTANT VARCHAR2(30) := 'STANDARD';
316 C_INVALID_STATUS         CONSTANT VARCHAR2(1)  := 'I';
317 C_DRAFT_STATUS           CONSTANT VARCHAR2(1)  := 'D';
318 C_FINAL_STATUS           CONSTANT VARCHAR2(1)  := 'F';
319 
320 -- ccid status
321 C_CREATED                CONSTANT VARCHAR2(30)  := 'CREATED';
322 C_PROCESSING             CONSTANT VARCHAR2(30)  := 'PROCESSING';
323 C_NOT_PROCESSED          CONSTANT VARCHAR2(30)  := 'NOT_PROCESSED';
324 C_INVALID                CONSTANT VARCHAR2(30)  := 'INVALID';
325 
326 C_MAP_CCID                   CONSTANT    VARCHAR2(30)  := 'MAP_CCID';
327 C_MAP_QUALIFIER              CONSTANT    VARCHAR2(30)  := 'MAP_QUALIFIER';
328 C_MAP_SEGMENT                CONSTANT    VARCHAR2(30)  := 'MAP_SEGMENT';
329 
330 --
331 C_ACTUAL            CONSTANT VARCHAR2(1)       := 'A';
332 C_BUDGET            CONSTANT VARCHAR2(1)       := 'B';
333 C_ENCUMBRANCE       CONSTANT VARCHAR2(1)       := 'E';
334 --
335 C_DEBIT             CONSTANT VARCHAR2(1)       := 'D';
336 C_CREDIT            CONSTANT VARCHAR2(1)       := 'C';
337 --
338 C_SWITCH               CONSTANT VARCHAR2(1)    := 'Y';
339 C_NO_SWITCH            CONSTANT VARCHAR2(1)    := 'N';
340 --
341 C_ALL                 CONSTANT  VARCHAR2(1)    := 'A';
342 C_SAME_SIDE           CONSTANT  VARCHAR2(1)    := 'W';
343 C_NO_MERGE            CONSTANT  VARCHAR2(1)    := 'N';
344 --
345 -- 4669308
346 C_NO_REVERSAL         CONSTANT  VARCHAR2(20)   := 'NO_MPA_REVERSAL';
347 --+==========================================================================+
348 --|                                                                          |
349 --|                                                                          |
350 --|  GLobal structure  For Accounting Reversal                               |
351 --|                                                                          |
352 --|                                                                          |
353 --+==========================================================================+
354 
355 --
356 TYPE t_rec_reverse_line IS RECORD (
357 --
358  ae_header_id                      NUMBER,
359  line_num                          NUMBER,
360  accounting_class                  VARCHAR2(30),
361 --
362  ccid                              NUMBER,
363 --
364  gl_transfer_mode                  VARCHAR2(1),
365  acct_entry_type_code              VARCHAR2(1),
366  merge_duplicate_code              VARCHAR2(1),
367  --
368  entered_amount                    NUMBER,
369  ledger_amount                     NUMBER,
370  entered_dr                        NUMBER,
371  entered_cr                        NUMBER,
372  accounted_dr                      NUMBER,
373  accounted_cr                      NUMBER,
374  currency_code                     VARCHAR2(15),
375  curr_conversion_date              DATE,
376  curr_conversion_rate              NUMBER,
377  curr_conversion_type              VARCHAR2(30),
378  description                       VARCHAR2(1996),
379  --
380  -- line descriptions
381  --
382  party_id                          NUMBER,
383  party_site_id                     NUMBER,
384  party_type_code                   VARCHAR2(1),
385  --
386  statistical_amount                NUMBER,
387  ussgl_transaction                 VARCHAR2(30),
388 --
389  jgzz_recon_ref                    VARCHAR2(240),
390 --
391  distribution_id_char_1            VARCHAR2(240),
392  distribution_id_char_2            VARCHAR2(240),
393  distribution_id_char_3            VARCHAR2(240),
394  distribution_id_char_4            VARCHAR2(240),
395  distribution_id_char_5            VARCHAR2(240),
396  distribution_id_num_1             NUMBER,
397  distribution_id_num_2             NUMBER,
398  distribution_id_num_3             NUMBER,
399  distribution_id_num_4             NUMBER,
400  distribution_id_num_5             NUMBER,
401  sys_distribution_type             VARCHAR2(30),
402 --
403  rev_distrib_id_char_1             VARCHAR2(240),
404  rev_distrib_id_char_2             VARCHAR2(240),
405  rev_distrib_id_char_3             VARCHAR2(240),
406  rev_distrib_id_char_4             VARCHAR2(240),
407  rev_distrib_id_char_5             VARCHAR2(240),
408  rev_distrib_id_num_1              NUMBER,
409  rev_distrib_id_num_2              NUMBER,
410  rev_distrib_id_num_3              NUMBER,
411  rev_distrib_id_num_4              NUMBER,
412  rev_distrib_id_num_5              NUMBER,
413  rev_sys_distribution_type         VARCHAR2(30),
414 --
415  acc_reversal_option               VARCHAR2(1),
416  reversal_credit_ccid              NUMBER,
417  reversal_debit_ccid               NUMBER,
418 --
419  mpa_option                        VARCHAR2(30),  -- 4262811
420  mpa_start_date                    DATE,          -- 4262811
421  mpa_end_date                      DATE,          -- 4262811
422 -- Removed for 4262811 MPA
423 -- deferred_indicator                VARCHAR2(1),
424 -- deferred_start_date               DATE,
425 -- deferred_end_date                 DATE,
426 -- deferred_no_period                NUMBER,
427 -- deferred_period_type              VARCHAR2(1),
428 --
429  tax_line_ref                      NUMBER,
430  tax_summary_line_ref              NUMBER,
431  tax_rec_nrec_dist_ref             NUMBER
432 --
433 );
434 
435 --
436 -- cache accounting line type information
437 --
438 --g_accounting_line
439 TYPE t_rec_accounting_line IS RECORD (
440     component_type              VARCHAR2(30)
441   , accounting_line_code        VARCHAR2(30)
442   , accounting_line_type_code   VARCHAR2(1)
443   , accounting_line_appl_id     INTEGER
444   , amb_context_code            VARCHAR2(30)
445   , entity_code                 VARCHAR2(30)
446   , event_class_code            VARCHAR2(30)
447 )
448 ;
449 
450 --g_transaction_accounts
451 TYPE t_rec_transaction_accounts IS RECORD (
452  array_line_num                          XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num,
453  array_ae_header_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num,
454  array_temp_line_num                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num,
455  array_code_combination_id               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num,
456  array_segment                           XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L,
457  array_from_segment_code                 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V15L,
458  array_to_segment_code                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_V15L,
459  array_processing_status_code            XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L,
460  array_side_code                         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L
461 )
462 ;
463 
464 --+==========================================================================+
465 --|                                                                          |
466 --|                                                                          |
467 --|  GLobal variables                                                        |
468 --|                                                                          |
469 --|                                                                          |
470 --+==========================================================================+
471 
472 g_reverse_lines                t_rec_reverse_line;
473 g_application_id               INTEGER;
474 g_accounting_line              t_rec_accounting_line;
475 g_transaction_accounts         t_rec_transaction_accounts;
476 g_mpa_transaction_accounts     t_rec_transaction_accounts; --bug#9954676
477 --+==========================================================================+
478 --|                                                                          |
479 --|                                                                          |
480 --|  GLobal variables  For Business Flow - 4219869                           |
481 --|                                                                          |
482 --|                                                                          |
483 --+==========================================================================+
484 --
485 g_num_bflow_prior_entries INTEGER;
486 g_num_bflow_same_entries  INTEGER;
487 C_METHOD_PRIOR    CONSTANT VARCHAR2(30) := 'PRIOR_ENTRY';
488 C_METHOD_SAME     CONSTANT VARCHAR2(30) := 'SAME_ENTRY';
489 C_DUMMY_PRIOR     CONSTANT VARCHAR2(10) := 'DUMMY_BFPE';
490 C_DUMMY_SAME      CONSTANT VARCHAR2(10) := 'DUMMY_BFSE';
491 C_MPA_PRIOR_ENTRY CONSTANT VARCHAR2(30) := 'MPA_PRIOR_ENTRY';  -- 4655713b
492 C_MPA_SAME_ENTRY  CONSTANT VARCHAR2(30) := 'MPA_SAME_ENTRY';   -- 4655713b
493 C_CHAR            CONSTANT VARCHAR2(1)  := fnd_global.local_chr(12);
494 C_NUM             CONSTANT NUMBER       := 9.99E125;
495 
496 --====================================================================
497 --
498 --
499 --
500 --
501 --
502 --                                   FND_LOG trace
503 --
504 --
505 --
506 --
507 --
508 --
509 --
510 --
511 --
512 --
513 --
514 --
515 --
516 --
517 --
518 --
519 --======================================================================
520 --
521 --=============================================================================
522 --               *********** Local Trace Routine **********
523 --=============================================================================
524 
525 C_LEVEL_STATEMENT     CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
526 C_LEVEL_PROCEDURE     CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
527 C_LEVEL_EVENT         CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
528 C_LEVEL_EXCEPTION     CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
529 C_LEVEL_ERROR         CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
530 C_LEVEL_UNEXPECTED    CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
531 
532 C_LEVEL_LOG_DISABLED  CONSTANT NUMBER := 99;
533 C_DEFAULT_MODULE      CONSTANT VARCHAR2(240) := 'xla.plsql.XLA_AE_LINES_PKG';
534 
535 g_log_level           NUMBER;
536 g_log_enabled         BOOLEAN;
537 
538 PROCEDURE trace
539            (p_msg                        IN VARCHAR2
540            ,p_level                      IN NUMBER
541            ,p_module                     IN VARCHAR2) IS
542 BEGIN
543 IF (p_msg IS NULL AND p_level >= g_log_level) THEN
544           fnd_log.message(p_level, p_module);
545 ELSIF p_level >= g_log_level THEN
546           fnd_log.string(p_level, p_module, p_msg);
547 END IF;
548 
549 EXCEPTION
550        WHEN xla_exceptions_pkg.application_exception THEN
551           RAISE;
552        WHEN OTHERS THEN
553           xla_exceptions_pkg.raise_message
554              (p_location   => 'XLA_AE_LINES_PKG.trace');
555 END trace;
556 
557 --=============================================================================
558 --                   ******* Print Log File **********
559 --=============================================================================
560 PROCEDURE print_logfile(p_msg  IN  VARCHAR2) IS
561 BEGIN
562 
563    fnd_file.put_line(fnd_file.log,p_msg);
564 
565 EXCEPTION
566    WHEN xla_exceptions_pkg.application_exception THEN
567       RAISE;
568    WHEN OTHERS THEN
569       xla_exceptions_pkg.raise_message
570          (p_location   => 'xla_ae_lines_pkg.print_logfile');
571 END print_logfile;
572 --
573 --====================================================================
574 --
575 --
576 --
577 --
578 -- Forward declaration of local routines
579 --
580 --
581 --
582 --
583 --======================================================================
584 --
585 
586 --
587 PROCEDURE ValidateLinks
588 ;
589 
590 --
591 --4219869 : making this a public function for Business Flow
592 --PROCEDURE SetDebitCreditAmounts
593 --;
594 --
595 --
596 
597 FUNCTION ValidateRevLinks
598 RETURN BOOLEAN
599 ;
600 
601 --===================================================================
602 --
603 --
604 --
605 --
606 --
607 --                     STANDARD ACCOUNTING PROCESS
608 --
609 --
610 --
611 --
612 --
613 --
614 --
615 --
616 --
617 --
618 --
619 --
620 --
621 --
622 --
623 --
624 --=====================================================================
625 --
626 
627 --====================================================================
628 --
629 --
630 --
631 --
632 --
633 --        PRIVATE  procedures and functions
634 --
635 --
636 --
637 --
638 --
639 --
640 --
641 --
642 --
643 --
644 --
645 --
646 --
647 --
648 --
649 --
650 --======================================================================
651 --
652 /*======================================================================+
653 |                                                                       |
654 | Private Procedure                                                     |
655 |                                                                       |
656 |                                                                       |
657 +======================================================================*/
658 PROCEDURE ValidateLinks
659 IS
660 l_log_module         VARCHAR2(240);
661 l_temp               NUMBER;
662 BEGIN
663 --
664 IF g_log_enabled THEN
665       l_log_module := C_DEFAULT_MODULE||'.ValidateLinks';
666 END IF;
667 --
668 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
669       trace
670          (p_msg      => 'BEGIN of ValidateLinks'
671          ,p_level    => C_LEVEL_PROCEDURE
672          ,p_module   => l_log_module);
673 
674 END IF;
675 
676 -- We need check: 1. distribution_id_1 must be assigned
677 --                2. distribution_id_2..5 must be assigned in order, that means
678 --                    if id_3 is assigned, then 2 must be assigned.
679 --                    if id_4 is assigned, then 2 and 3 must be assigned.
680 --                    if id_5 is assigned, then 2, 3 and 4 must be assigned.
681 --                We are using generate a number, l_temp
682 --                1*decode(id5 is assigned, 1, 0)+
683 --                2*decode(id4 is assigned, 1, 0)+
684 --                4*decode(id3 is assigned, 1, 0)+
685 --                8*decode(id2 is assigned, 1, 0)
686 --                The valid case, l_temp can only be
687 --                0 -- no one is assigned
688 --                8 -- id2 is assigned
689 --                12 -- id2 and id3 are assigned
690 --                14 -- id2 , id3 and id4 are assigned
691 --                15 -- all are assigned
692 
693 
694 IF g_rec_lines.array_distribution_id_char_5(g_LineNumber) IS NULL AND
695       g_rec_lines.array_distribution_id_num_5(g_LineNumber) IS NULL THEN
696   l_temp := 0;
697 ELSE
698   l_temp := 1;
699 END IF;
700 IF g_rec_lines.array_distribution_id_char_4(g_LineNumber) IS NOT NULL OR
701       g_rec_lines.array_distribution_id_num_4(g_LineNumber) IS NOT NULL THEN
702   l_temp := 2+l_temp;
703 END IF;
704 IF g_rec_lines.array_distribution_id_char_3(g_LineNumber) IS NOT NULL OR
705       g_rec_lines.array_distribution_id_num_3(g_LineNumber) IS NOT NULL THEN
706   l_temp := 4+l_temp;
707 END IF;
708 IF g_rec_lines.array_distribution_id_char_2(g_LineNumber) IS NOT NULL OR
709       g_rec_lines.array_distribution_id_num_2(g_LineNumber) IS NOT NULL THEN
710   l_temp := 8+l_temp;
711 END IF;
712 IF (g_rec_lines.array_distribution_id_char_1(g_LineNumber) IS NULL AND
713       g_rec_lines.array_distribution_id_num_1(g_LineNumber) IS NULL) OR
714       l_temp not in (0, 8, 12, 14, 15) THEN
715 
716     xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
717     xla_accounting_err_pkg.build_message
718                                   (p_appli_s_name            => 'XLA'
719                                   ,p_msg_name                => 'XLA_AP_NO_DIST_LINK_ID'
720                                   ,p_token_1                 => 'LINE_NUMBER'
721                                   ,p_value_1                 =>  g_ExtractLine
722                                   ,p_token_2                 => 'LINE_TYPE_NAME'
723                                   ,p_value_2                 =>  xla_ae_sources_pkg.GetComponentName (
724                                                                   g_accounting_line.component_type
725                                                                 , g_accounting_line.accounting_line_code
726                                                                 , g_accounting_line.accounting_line_type_code
727                                                                 , g_accounting_line.accounting_line_appl_id
728                                                                 , g_accounting_line.amb_context_code
729                                                                 , g_accounting_line.entity_code
730                                                                 , g_accounting_line.event_class_code
731                                                                )
732                                   ,p_token_3                 => 'OWNER'
733                                   ,p_value_3                 => xla_lookups_pkg.get_meaning(
734                                                                   'XLA_OWNER_TYPE'
735                                                                  , g_rec_lines.array_accounting_line_type(g_LineNumber)
736                                                                 )
737                                   ,p_token_4                 => 'PRODUCT_NAME'
738                                   ,p_value_4                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
739                                   ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
740                                   ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
741                                   ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
742                                   ,p_ae_header_id            => NULL --p_ae_header_id
743                          );
744 
745          IF (C_LEVEL_ERROR >= g_log_level) THEN
746                 trace
747                      (p_msg      => 'ERROR: XLA_AP_NO_DIST_LINK_ID'
748                      ,p_level    => C_LEVEL_ERROR
749                      ,p_module   => l_log_module);
750          END IF;
751 END IF;
752 
753 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
754 
755       trace
756          (p_msg      => 'END of ValidateLinks'
757          ,p_level    => C_LEVEL_PROCEDURE
758          ,p_module   => l_log_module);
759 
760 END IF;
761 
762 EXCEPTION
763 WHEN xla_exceptions_pkg.application_exception THEN
764   RAISE;
765 WHEN OTHERS  THEN
766    xla_exceptions_pkg.raise_message
767            (p_location => 'xla_ae_lines_pkg.ValidateLinks');
768   --
769 END ValidateLinks;
770 --
771 --
772 /*======================================================================+
773 |                                                                       |
774 | Private Procedure                                                     |
775 |       SetDebitCreditAmounts                                           |
776 |                                                                       |
777 +======================================================================*/
778 PROCEDURE SetDebitCreditAmounts
779 IS
780 l_log_module         VARCHAR2(240);
781 BEGIN
782 --
783 IF g_log_enabled THEN
784       l_log_module := C_DEFAULT_MODULE||'.SetDebitCreditAmounts';
785 END IF;
786 --
787 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
788       trace
789          (p_msg      => 'BEGIN of SetDebitCreditAmounts'
790          ,p_level    => C_LEVEL_PROCEDURE
791          ,p_module   => l_log_module);
792 
793 END IF;
794 
795 IF(nvl(g_override_acctd_amt_flag, 'N') = 'Y') THEN
796   g_rec_lines.array_calculate_acctd_flag(g_LineNumber) := 'N';
797   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
798     trace
799        (p_msg      => 'set amts flag to N '
800        ,p_level    => C_LEVEL_STATEMENT
801        ,p_module   => l_log_module);
802   END IF;
803 
804 END IF;
805 /*
806 1. for alc enabled apps
807  primary ledger, the calculate amts flag will be set as user set in the forms
808  secondary ledger, if the currency is same as primary, the calculate amts flag will be
809      set as user set in the forms
810      if not same, the calculate amts flag will be set to 'Y'
811  for ALC, the calculate amts flag will be set to 'Y'
812  2. For alc not enabled apps:
813  primaryledger, the flag set as user set in the form
814  secondary, same as the alc_enabled_apps
815  ALC, the calculate amts flag is set to 'N'
816 */
817 -- Bug 13636827 (14105252)
818 if(XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code = 'ALC' and
819         XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.currency_code = xla_accounting_cache_pkg.g_primary_ledger_currency and
820         XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.calculate_amts_flag='N') then
821      	g_rec_lines.array_calculate_acctd_flag(g_LineNumber) := 'N';
822         g_rec_lines.array_calculate_g_l_flag(g_LineNumber) := 'N';
823 elsif(XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code = 'ALC' and
824         XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.currency_code = xla_accounting_cache_pkg.g_primary_ledger_currency and                                      XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.calculate_amts_flag='Y') then
825         g_rec_lines.array_calculate_acctd_flag(g_LineNumber) := 'Y';
826         g_rec_lines.array_calculate_g_l_flag(g_LineNumber) := 'Y';  --Bug 13636827 (14105252)
827 elsIF((XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code = 'SECONDARY' or
828        XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code = 'ALC') and
829       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.calculate_amts_flag='Y') THEN
830        g_rec_lines.array_calculate_acctd_flag(g_LineNumber) := 'Y';
831        g_rec_lines.array_calculate_g_l_flag(g_LineNumber) := 'Y';
832 ELSIF(XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code = 'ALC' and
833       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.calculate_amts_flag='N') THEN
834        g_rec_lines.array_calculate_acctd_flag(g_LineNumber) := 'N';
835        g_rec_lines.array_calculate_g_l_flag(g_LineNumber) := 'N';
836 END IF;
837 
838 
839 -- for performance bug 5394727, set the currency to ledger currency
840 -- since we need ledger currency later when set the currency code
841 -- for these gain/loss lines.
842 IF (g_rec_lines.array_natural_side_code(g_LineNumber) = 'G'
843           AND (nvl(g_rec_lines.array_calculate_g_l_flag(g_LineNumber), 'N') = 'Y')) THEN
844   g_rec_lines.array_currency_code(g_LineNumber)
845                       := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.currency_code;
846 END IF;
847 
848 IF (nvl(g_rec_lines.array_calculate_acctd_flag(g_LineNumber), 'N')= 'N' AND
849       g_rec_lines.array_natural_side_code(g_LineNumber) <> 'G') OR
850      (nvl(g_rec_lines.array_calculate_g_l_flag(g_LineNumber), 'N')='N' AND
851       g_rec_lines.array_natural_side_code(g_LineNumber) = 'G') THEN
852 
853   IF g_rec_lines.array_ledger_amount(g_LineNumber) is null THEN
854     XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
855     xla_accounting_err_pkg.build_message
856            (p_appli_s_name            => 'XLA'
857            ,p_msg_name                => 'XLA_AP_NO_LEDGER_AMOUNT'
858            ,p_token_1                 => 'LINE_NUMBER'
859            ,p_value_1                 =>  g_ExtractLine
860            ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
861            ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
862            ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
863   END IF;
864 --ELSE
865 --  g_rec_lines.array_ledger_amount(g_LineNumber) := null;
866 END IF;
867 
868 --
869 -- SetEnteredAmount
870 -- change for business flow, if business flow, won't set the entered_amount
871 -- since at this time the final entered currency code is not decided yet.
872 IF NVL(g_rec_lines.array_currency_code(g_LineNumber),
873            XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.currency_code) =
874            XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.currency_code
875      AND g_rec_lines.array_natural_side_code(g_LineNumber) <> 'G'
876      AND  nvl(g_rec_lines.array_gain_or_loss_flag(g_LineNumber), 'N') <> 'Y'
877 AND nvl(g_rec_lines.array_reversal_code(g_LineNumber), 'DUMMY') <> C_DUMMY_PRIOR
878 THEN
879 
880   IF nvl(g_rec_lines.array_calculate_acctd_flag(g_LineNumber), 'N')= 'N' THEN
881     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));
882   ELSE
883   --ledger currency proj, assign the entered amount to ledger amount instead
884     g_rec_lines.array_ledger_amount(g_LineNumber) :=  g_rec_lines.array_entered_amount(g_LineNumber);
885   END IF;
886 
887 END IF;
888 --
889 
890 -- Bug 7541615
891 -- Nullified the currency conversion type and rate if the entered currency is the same as ledger currency.
892 -- This nullification was inadvertently done only for non GAIN LOSS lines as a part of bug 4634321
893 -- This is fixed now, with the rate and type made null for all lines (except BFLow lines)
894 
895 IF NVL(g_rec_lines.array_currency_code(g_LineNumber),
896            XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.currency_code) =
897            XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.currency_code
898 AND nvl(g_rec_lines.array_reversal_code(g_LineNumber), 'DUMMY') <> C_DUMMY_PRIOR
899 THEN
900 
901     --=======================================
902     -- bug 2988192, removed by bug 3592650
903     --=======================================
904     g_rec_lines.array_curr_conversion_rate(g_LineNumber):= null;
905     g_rec_lines.array_curr_conversion_type(g_LineNumber):= null;
906   --
907 END IF;
908 --
909 -- bug 5259353
910 IF(g_rec_lines.array_natural_side_code(g_LineNumber) = 'G' or
911                        g_rec_lines.array_gain_or_loss_flag(g_LineNumber) = 'Y') THEN
912   g_rec_lines.array_entered_amount(g_LineNumber) := 0;
913 END IF;
914 
915 
916 IF(g_rec_lines.array_natural_side_code(g_LineNumber) <> 'G'
917    AND  nvl(g_rec_lines.array_gain_or_loss_flag(g_LineNumber), 'N') <> 'Y'
918    AND nvl(g_rec_lines.array_reversal_code(g_LineNumber), 'DUMMY') <> C_DUMMY_PRIOR) THEN
919   IF g_rec_lines.array_entered_amount(g_LineNumber) is null THEN
920     XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
921     xla_accounting_err_pkg.build_message
922            (p_appli_s_name            => 'XLA'
923            ,p_msg_name                => 'XLA_AP_NO_ENTERED_AMOUNT'
924            ,p_token_1                 => 'LINE_NUMBER'
925            ,p_value_1                 =>  g_ExtractLine
926            ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
927            ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
928            ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
929   ELSIF (nvl(g_rec_lines.array_calculate_acctd_flag(g_LineNumber), 'N')= 'N'
930            AND ((sign(g_rec_lines.array_entered_amount(g_LineNumber)) > 0 and
931                sign(g_rec_lines.array_ledger_amount(g_LineNumber))<0) or
932            (sign(g_rec_lines.array_entered_amount(g_LineNumber)) < 0 and
933                sign(g_rec_lines.array_ledger_amount(g_LineNumber))>0))
934         ) THEN
935     XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
936     xla_accounting_err_pkg.build_message
937            (p_appli_s_name            => 'XLA'
938            ,p_msg_name                => 'XLA_AP_DIFFERENT_SIGN_AMOUNTS'
939            ,p_token_1                 => 'LINE_NUMBER'
940            ,p_value_1                 =>  g_ExtractLine
941            ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
942            ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
943            ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
944   END IF;
945 END IF;
946 
947 --
948 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
949            trace
950               (p_msg      => 'Entered Amount = '||g_rec_lines.array_entered_amount(g_LineNumber)
951               ,p_level    => C_LEVEL_STATEMENT
952               ,p_module   => l_log_module);
953 
954            trace
955               (p_msg      => 'Ledger Amount = '||g_rec_lines.array_ledger_amount(g_LineNumber)
956               ,p_level    => C_LEVEL_STATEMENT
957               ,p_module   => l_log_module);
958 END IF;
959 --
960 IF g_rec_lines.array_switch_side_flag(g_LineNumber) = C_SWITCH AND
961   (   g_rec_lines.array_ledger_amount(g_LineNumber) < 0  OR
962     ( g_rec_lines.array_ledger_amount(g_LineNumber) = 0 AND
963       g_rec_lines.array_entered_amount(g_LineNumber) < 0 )
964   )
965 THEN
966 
967  --switch side
968 
969    CASE g_rec_lines.array_natural_side_code(g_LineNumber)
970 
971       WHEN C_DEBIT THEN
972          -- store amount in credit side
973           g_rec_lines.array_accounted_cr(g_LineNumber) := ABS(g_rec_lines.array_ledger_amount(g_LineNumber))  ;
974           g_rec_lines.array_accounted_dr(g_LineNumber) := NULL;
975           --
976           g_rec_lines.array_entered_cr(g_LineNumber)   := ABS(g_rec_lines.array_entered_amount(g_LineNumber)) ;
977           g_rec_lines.array_entered_dr(g_LineNumber)   := NULL;
978 
979       WHEN C_CREDIT THEN
980          -- store amount in debit side
981           g_rec_lines.array_accounted_dr(g_LineNumber) := ABS(g_rec_lines.array_ledger_amount(g_LineNumber)) ;
982           g_rec_lines.array_accounted_cr(g_LineNumber) := NULL;
983           --
984           g_rec_lines.array_entered_dr(g_LineNumber)   := ABS(g_rec_lines.array_entered_amount(g_LineNumber)) ;
985           g_rec_lines.array_entered_cr(g_LineNumber)   := NULL;
986 
987       ELSE null;
988 
989   END CASE;
990 
991      --7704240: Bflow Applied Amount to be ABSOLUTE, when SWITCH SIDE, so that all Entered, Accounted and BflowApplied Amounts are POSITIVE
992      g_rec_lines.array_bflow_applied_to_amt(g_LineNumber) := ABS(g_rec_lines.array_bflow_applied_to_amt(g_LineNumber)) ;
993 
994 ELSE
995 
996  -- no switch
997 
998    CASE g_rec_lines.array_natural_side_code(g_LineNumber)
999 
1000       WHEN C_DEBIT THEN
1001          -- store amount in debit side
1002           g_rec_lines.array_accounted_dr(g_LineNumber) := g_rec_lines.array_ledger_amount(g_LineNumber) ;
1003           g_rec_lines.array_accounted_cr(g_LineNumber) := NULL;
1004           --
1005           g_rec_lines.array_entered_dr(g_LineNumber)   := g_rec_lines.array_entered_amount(g_LineNumber) ;
1006           g_rec_lines.array_entered_cr(g_LineNumber)   := NULL;
1007 
1008       WHEN C_CREDIT THEN
1009          -- store amount in credit side
1010           g_rec_lines.array_accounted_cr(g_LineNumber) := g_rec_lines.array_ledger_amount(g_LineNumber)  ;
1011           g_rec_lines.array_accounted_dr(g_LineNumber) := NULL;
1012           --
1013           g_rec_lines.array_entered_cr(g_LineNumber)   := g_rec_lines.array_entered_amount(g_LineNumber) ;
1014           g_rec_lines.array_entered_dr(g_LineNumber)   := NULL;
1015 
1016       ELSE null;
1017 
1018   END CASE;
1019 END IF;
1020 --
1021 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1022 
1023            trace
1024               (p_msg      => 'Entered_DR = '||g_rec_lines.array_entered_dr(g_LineNumber)
1025               ,p_level    => C_LEVEL_STATEMENT
1026               ,p_module   => l_log_module);
1027 
1028            trace
1029               (p_msg      => 'Entered_CR = '||g_rec_lines.array_entered_cr(g_LineNumber)
1030               ,p_level    => C_LEVEL_STATEMENT
1031               ,p_module   => l_log_module);
1032 
1033            trace
1034               (p_msg      => 'Accounted_DR = '||g_rec_lines.array_accounted_dr(g_LineNumber)
1035               ,p_level    => C_LEVEL_STATEMENT
1036               ,p_module   => l_log_module);
1037 
1038            trace
1039               (p_msg      => 'Accounted_CR = '||g_rec_lines.array_accounted_cr(g_LineNumber)
1040               ,p_level    => C_LEVEL_STATEMENT
1041               ,p_module   => l_log_module);
1042 END IF;
1043 --
1044 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1045       trace
1046          (p_msg      => 'END of SetDebitCreditAmounts'
1047          ,p_level    => C_LEVEL_PROCEDURE
1048          ,p_module   => l_log_module);
1049 
1050 END IF;
1051 EXCEPTION
1052 WHEN xla_exceptions_pkg.application_exception THEN
1053    XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
1054    RAISE;
1055 WHEN OTHERS  THEN
1056    xla_exceptions_pkg.raise_message
1057            (p_location => 'XLA_AE_LINES_PKG.SetDebitCreditAmounts');
1058   --
1059 END SetDebitCreditAmounts;
1060 --
1061 --====================================================================
1062 --
1063 --
1064 --
1065 --
1066 --
1067 --        PUBLIC  procedures and functions
1068 --
1069 --
1070 --
1071 --
1072 --
1073 --
1074 --
1075 --
1076 --
1077 --
1078 --
1079 --
1080 --
1081 --
1082 --
1083 --
1084 --======================================================================
1085 --
1086 /*======================================================================+
1087 |                                                                       |
1088 | PUBLIC Procedure                                                      |
1089 |        InitLines  : Reset temporary journal line pl/sql structures    |
1090 |                                                                       |
1091 +======================================================================*/
1092 PROCEDURE InitLines
1093 --
1094 IS
1095 --
1096 l_null_lines          t_rec_lines;
1097 l_null_rev_line       t_rec_reverse_line;
1098 l_null_trans_accounts t_rec_transaction_accounts;
1099 l_log_module          VARCHAR2(240);
1100 --
1101 BEGIN
1102 IF g_log_enabled THEN
1103       l_log_module := C_DEFAULT_MODULE||'.InitLines';
1104 END IF;
1105 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1106       trace
1107          (p_msg      => 'BEGIN of InitLines'
1108          ,p_level    => C_LEVEL_PROCEDURE
1109          ,p_module   => l_log_module);
1110 
1111 END IF;
1112 
1113 g_rec_lines                    := l_null_lines;
1114 g_transaction_accounts         := l_null_trans_accounts;
1115 g_reverse_lines                := l_null_rev_line;
1116 g_LineNumber                   := 0;
1117 g_ExtractLine                  := 0;
1118 g_ActualLineNum                := 0;
1119 g_BudgetLineNum                := 0;
1120 g_EncumbLineNum                := 0;
1121 
1122 
1123 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1124       trace
1125          (p_msg      => 'END of InitLines'
1126          ,p_level    => C_LEVEL_PROCEDURE
1127          ,p_module   => l_log_module);
1128 
1129 END IF;
1130 EXCEPTION
1131 WHEN xla_exceptions_pkg.application_exception THEN
1132   RAISE;
1133 WHEN OTHERS  THEN
1134    xla_exceptions_pkg.raise_message
1135            (p_location => 'XLA_AE_LINES_PKG.InitLines');
1136   --
1137 END InitLines;
1138 --
1139 --
1140 /*======================================================================+
1141 |                                                                       |
1142 | PUBLIC Procedure                                                      |
1143 |                                                                       |
1144 |                                                                       |
1145 +======================================================================*/
1146 PROCEDURE SetExtractLine(p_extract_line IN NUMBER)
1147 IS
1148 l_log_module         VARCHAR2(240);
1149 BEGIN
1150 --
1151 IF g_log_enabled THEN
1152       l_log_module := C_DEFAULT_MODULE||'.SetExtractLine';
1153 END IF;
1154 --
1155 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1156       trace
1157          (p_msg      => 'BEGIN of SetExtractLine'
1158          ,p_level    => C_LEVEL_PROCEDURE
1159          ,p_module   => l_log_module);
1160 
1161 END IF;
1162 
1163 IF (C_LEVEL_EVENT >= g_log_level) THEN
1164 
1165        trace
1166          (p_msg      => 'Extract line number = '||p_extract_line
1167          ,p_level    => C_LEVEL_EVENT
1168          ,p_module   => l_log_module);
1169 
1170 END IF;
1171 
1172 g_ExtractLine                  := p_extract_line;
1173 
1174 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1175 
1176       trace
1177          (p_msg      => 'END of SetExtractLine'
1178          ,p_level    => C_LEVEL_PROCEDURE
1179          ,p_module   => l_log_module);
1180 
1181 END IF;
1182 
1183 EXCEPTION
1184 WHEN xla_exceptions_pkg.application_exception THEN
1185   g_ExtractLine                := null;
1186   RAISE;
1187 WHEN OTHERS  THEN
1188    xla_exceptions_pkg.raise_message
1189            (p_location => 'XLA_AE_LINES_PKG.SetExtractLine');
1190   --
1191 END SetExtractLine;
1192 --
1193 /*======================================================================+
1194 |                                                                       |
1195 | Public Procedure                                                      |
1196 |                                                                       |
1197 |                                                                       |
1198 +======================================================================*/
1199 --
1200 PROCEDURE SetNullLine
1201 IS
1202 l_log_module         VARCHAR2(240);
1203 BEGIN
1204 --
1205 IF g_log_enabled THEN
1206       l_log_module := C_DEFAULT_MODULE||'.SetNullLine';
1207 END IF;
1208 --
1209 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1210       trace
1211          (p_msg      => 'BEGIN of SetNullLine'
1212          ,p_level    => C_LEVEL_PROCEDURE
1213          ,p_module   => l_log_module);
1214 
1215 END IF;
1216 FOR Idx IN 1 .. C_BULK_LIMIT LOOP
1217 --
1218 -- init new line
1219 --
1220  g_null_lines.array_ae_header_id(Idx)          := NULL;
1221 -- g_null_lines.array_line_num(Idx)            := NULL;
1222  g_null_lines.array_accounting_class(Idx)      := NULL;
1223  g_null_lines.array_rounding_class(Idx)        := NULL;
1224  g_null_lines.array_doc_rounding_level(Idx)    := NULL;
1225  g_null_lines.array_gain_or_loss_ref(Idx)      := NULL;
1226  g_null_lines.array_event_class_code(Idx)      := NULL;
1227  g_null_lines.array_event_type_code(Idx)       := NULL;
1228  g_null_lines.array_line_defn_owner_code(Idx)  := NULL;
1229  g_null_lines.array_line_defn_code(Idx)        := NULL;
1230  g_null_lines.array_accounting_line_code(Idx)  := NULL;
1231  g_null_lines.array_accounting_line_type(Idx)  := NULL;
1232  g_null_lines.array_calculate_acctd_flag(Idx)  := NULL;
1233  g_null_lines.array_calculate_g_l_flag(Idx)    := NULL;
1234  g_null_lines.array_gain_or_loss_flag(Idx)    := NULL;
1235 --
1236 -- line flexfield accounts
1237 --
1238  g_null_lines.array_ccid_flag(Idx)  := C_INVALID;
1239  g_null_lines.array_ccid(Idx)       := NULL;
1240 --
1241  g_null_lines.array_accounting_coa_id(Idx)   := NULL;
1242  g_null_lines.array_transaction_coa_id(Idx)  := NULL;
1243  g_null_lines.array_sl_coa_mapping_name(Idx) := NULL;
1244 --
1245  g_null_lines.array_segment1(Idx)   := NULL;
1246  g_null_lines.array_segment2(Idx)   := NULL;
1247  g_null_lines.array_segment3(Idx)   := NULL;
1248  g_null_lines.array_segment4(Idx)   := NULL;
1249  g_null_lines.array_segment5(Idx)   := NULL;
1250  g_null_lines.array_segment6(Idx)   := NULL;
1251  g_null_lines.array_segment7(Idx)   := NULL;
1252  g_null_lines.array_segment8(Idx)   := NULL;
1253  g_null_lines.array_segment9(Idx)   := NULL;
1254  g_null_lines.array_segment10(Idx)  := NULL;
1255  g_null_lines.array_segment11(Idx)  := NULL;
1256  g_null_lines.array_segment12(Idx)  := NULL;
1257  g_null_lines.array_segment13(Idx)  := NULL;
1258  g_null_lines.array_segment14(Idx)  := NULL;
1259  g_null_lines.array_segment15(Idx)  := NULL;
1260  g_null_lines.array_segment16(Idx)  := NULL;
1261  g_null_lines.array_segment17(Idx)  := NULL;
1262  g_null_lines.array_segment18(Idx)  := NULL;
1263  g_null_lines.array_segment19(Idx)  := NULL;
1264  g_null_lines.array_segment20(Idx)  := NULL;
1265  g_null_lines.array_segment21(Idx)  := NULL;
1266  g_null_lines.array_segment22(Idx)  := NULL;
1267  g_null_lines.array_segment23(Idx)  := NULL;
1268  g_null_lines.array_segment24(Idx)  := NULL;
1269  g_null_lines.array_segment25(Idx)  := NULL;
1270  g_null_lines.array_segment26(Idx)  := NULL;
1271  g_null_lines.array_segment27(Idx)  := NULL;
1272  g_null_lines.array_segment28(Idx)  := NULL;
1273  g_null_lines.array_segment29(Idx)  := NULL;
1274  g_null_lines.array_segment30(Idx)  := NULL;
1275 --
1276  g_null_lines.alt_array_ccid_flag(Idx)   := C_INVALID;
1277  g_null_lines.alt_array_ccid(Idx)       := NULL;
1278  g_null_lines.alt_array_segment1(Idx)   := NULL;
1279  g_null_lines.alt_array_segment2(Idx)   := NULL;
1280  g_null_lines.alt_array_segment3(Idx)   := NULL;
1281  g_null_lines.alt_array_segment4(Idx)   := NULL;
1282  g_null_lines.alt_array_segment5(Idx)   := NULL;
1283  g_null_lines.alt_array_segment6(Idx)   := NULL;
1284  g_null_lines.alt_array_segment7(Idx)   := NULL;
1285  g_null_lines.alt_array_segment8(Idx)   := NULL;
1286  g_null_lines.alt_array_segment9(Idx)   := NULL;
1287  g_null_lines.alt_array_segment10(Idx)  := NULL;
1288  g_null_lines.alt_array_segment11(Idx)  := NULL;
1289  g_null_lines.alt_array_segment12(Idx)  := NULL;
1290  g_null_lines.alt_array_segment13(Idx)  := NULL;
1291  g_null_lines.alt_array_segment14(Idx)  := NULL;
1292  g_null_lines.alt_array_segment15(Idx)  := NULL;
1293  g_null_lines.alt_array_segment16(Idx)  := NULL;
1294  g_null_lines.alt_array_segment17(Idx)  := NULL;
1295  g_null_lines.alt_array_segment18(Idx)  := NULL;
1296  g_null_lines.alt_array_segment19(Idx)  := NULL;
1297  g_null_lines.alt_array_segment20(Idx)  := NULL;
1298  g_null_lines.alt_array_segment21(Idx)  := NULL;
1299  g_null_lines.alt_array_segment22(Idx)  := NULL;
1300  g_null_lines.alt_array_segment23(Idx)  := NULL;
1301  g_null_lines.alt_array_segment24(Idx)  := NULL;
1302  g_null_lines.alt_array_segment25(Idx)  := NULL;
1303  g_null_lines.alt_array_segment26(Idx)  := NULL;
1304  g_null_lines.alt_array_segment27(Idx)  := NULL;
1305  g_null_lines.alt_array_segment28(Idx)  := NULL;
1306  g_null_lines.alt_array_segment29(Idx)  := NULL;
1307  g_null_lines.alt_array_segment30(Idx)  := NULL;
1308 --
1309 -- Option lines
1310 --
1311  g_null_lines.array_gl_transfer_mode(Idx)      := NULL;
1312  g_null_lines.array_natural_side_code(Idx)     := NULL;
1313  g_null_lines.array_acct_entry_type_code(Idx)  := NULL;
1314  g_null_lines.array_switch_side_flag(Idx)      := NULL;
1315  g_null_lines.array_merge_duplicate_code(Idx)  := NULL;
1316  --
1317  -- line amounts
1318  --
1319  g_null_lines.array_entered_amount(Idx)        := NULL;
1320  g_null_lines.array_ledger_amount(Idx)         := NULL;
1321  g_null_lines.array_entered_dr(Idx)            := NULL;
1322  g_null_lines.array_entered_cr(Idx)            := NULL;
1323  g_null_lines.array_accounted_dr(Idx)          := NULL;
1324  g_null_lines.array_accounted_cr(Idx)          := NULL;
1325  g_null_lines.array_currency_code(Idx)         := NULL;
1326  g_null_lines.array_currency_mau(Idx)          := NULL;
1327  g_null_lines.array_curr_conversion_date(Idx)  := NULL;
1328  g_null_lines.array_curr_conversion_rate(Idx)  := NULL;
1329  g_null_lines.array_curr_conversion_type(Idx)  := NULL;
1330  g_null_lines.array_description(Idx)           := NULL;
1331  --
1332  -- line descriptions
1333  --
1334  g_null_lines.array_party_id(Idx)              := NULL;
1335  g_null_lines.array_party_site_id(Idx)         := NULL;
1336  g_null_lines.array_party_type_code(Idx)       := NULL;
1337  --
1338  g_null_lines.array_statistical_amount(Idx)    := NULL;
1339  g_null_lines.array_ussgl_transaction(Idx)     := NULL;
1340 --
1341  g_null_lines.array_jgzz_recon_ref(Idx)        := NULL;
1342 --
1343 -- distribution links
1344 --
1345  g_null_lines.array_distribution_id_char_1(Idx)  := NULL;
1346  g_null_lines.array_distribution_id_char_2(Idx)  := NULL;
1347  g_null_lines.array_distribution_id_char_3(Idx)  := NULL;
1348  g_null_lines.array_distribution_id_char_4(Idx)  := NULL;
1349  g_null_lines.array_distribution_id_char_5(Idx)  := NULL;
1350  g_null_lines.array_distribution_id_num_1(Idx)   := NULL;
1351  g_null_lines.array_distribution_id_num_2(Idx)   := NULL;
1352  g_null_lines.array_distribution_id_num_3(Idx)   := NULL;
1353  g_null_lines.array_distribution_id_num_4(Idx)   := NULL;
1354  g_null_lines.array_distribution_id_num_5(Idx)   := NULL;
1355  g_null_lines.array_sys_distribution_type(Idx)   := NULL;
1356 --
1357 -- reverse distribution links
1358 --
1359  g_null_lines.array_rev_dist_id_char_1(Idx)  := NULL;
1360  g_null_lines.array_rev_dist_id_char_2(Idx)  := NULL;
1361  g_null_lines.array_rev_dist_id_char_3(Idx)  := NULL;
1362  g_null_lines.array_rev_dist_id_char_4(Idx)  := NULL;
1363  g_null_lines.array_rev_dist_id_char_5(Idx)  := NULL;
1364  g_null_lines.array_rev_dist_id_num_1(Idx)   := NULL;
1365  g_null_lines.array_rev_dist_id_num_2(Idx)   := NULL;
1366  g_null_lines.array_rev_dist_id_num_3(Idx)   := NULL;
1367  g_null_lines.array_rev_dist_id_num_4(Idx)   := NULL;
1368  g_null_lines.array_rev_dist_id_num_5(Idx)   := NULL;
1369  g_null_lines.array_rev_dist_type(Idx)       := NULL;
1370 
1371 -- 4262811 MPA
1372  g_null_lines.array_header_num(Idx)          := NULL;
1373  g_null_lines.array_mpa_acc_entry_flag(Idx)  := 'N';
1374  g_null_lines.array_mpa_option(Idx)          := NULL;
1375  g_null_lines.array_mpa_start_date(Idx)      := NULL;
1376  g_null_lines.array_mpa_end_date(Idx)        := NULL;
1377 --
1378 -- deferred info - replace by MPA
1379 --
1380 -- g_null_lines.array_deferred_indicator(Idx)    := NULL;
1381 -- g_null_lines.array_deferred_start_date(Idx)   := NULL;
1382 -- g_null_lines.array_deferred_end_date(Idx)     := NULL;
1383 -- g_null_lines.array_deferred_no_period(Idx)    := NULL;
1384 -- g_null_lines.array_deferred_period_type(Idx)  := NULL;
1385 --
1386 -- reversal info
1387 --
1388  g_null_lines.array_acc_reversal_option(Idx)   := NULL;
1389 --
1390 -- tax info
1391 --
1392  g_null_lines.array_tax_line_ref(Idx)           := NULL;
1393  g_null_lines.array_tax_summary_line_ref(Idx)   := NULL;
1394  g_null_lines.array_tax_rec_nrec_dist_ref(Idx)  := NULL;
1395 --
1396 -- Analytical Criteria
1397 --
1398  g_null_lines.array_anc_balance_flag(Idx)      := NULL;
1399  g_null_lines.array_anc_id_1(Idx)              := NULL;
1400  g_null_lines.array_anc_id_2(Idx)              := NULL;
1401  g_null_lines.array_anc_id_3(Idx)              := NULL;
1402  g_null_lines.array_anc_id_4(Idx)              := NULL;
1403  g_null_lines.array_anc_id_5(Idx)              := NULL;
1404  g_null_lines.array_anc_id_6(Idx)              := NULL;
1405  g_null_lines.array_anc_id_7(Idx)              := NULL;
1406  g_null_lines.array_anc_id_8(Idx)              := NULL;
1407  g_null_lines.array_anc_id_9(Idx)              := NULL;
1408  g_null_lines.array_anc_id_10(Idx)             := NULL;
1409  g_null_lines.array_anc_id_11(Idx)             := NULL;
1410  g_null_lines.array_anc_id_12(Idx)             := NULL;
1411  g_null_lines.array_anc_id_13(Idx)             := NULL;
1412  g_null_lines.array_anc_id_14(Idx)             := NULL;
1413  g_null_lines.array_anc_id_15(Idx)             := NULL;
1414  g_null_lines.array_anc_id_16(Idx)             := NULL;
1415  g_null_lines.array_anc_id_17(Idx)             := NULL;
1416  g_null_lines.array_anc_id_18(Idx)             := NULL;
1417  g_null_lines.array_anc_id_19(Idx)             := NULL;
1418  g_null_lines.array_anc_id_20(Idx)             := NULL;
1419  g_null_lines.array_anc_id_21(Idx)             := NULL;
1420  g_null_lines.array_anc_id_22(Idx)             := NULL;
1421  g_null_lines.array_anc_id_23(Idx)             := NULL;
1422  g_null_lines.array_anc_id_24(Idx)             := NULL;
1423  g_null_lines.array_anc_id_25(Idx)             := NULL;
1424  g_null_lines.array_anc_id_26(Idx)             := NULL;
1425  g_null_lines.array_anc_id_27(Idx)             := NULL;
1426  g_null_lines.array_anc_id_28(Idx)             := NULL;
1427  g_null_lines.array_anc_id_29(Idx)             := NULL;
1428  g_null_lines.array_anc_id_30(Idx)             := NULL;
1429  g_null_lines.array_anc_id_31(Idx)             := NULL;
1430  g_null_lines.array_anc_id_32(Idx)             := NULL;
1431  g_null_lines.array_anc_id_33(Idx)             := NULL;
1432  g_null_lines.array_anc_id_34(Idx)             := NULL;
1433  g_null_lines.array_anc_id_35(Idx)             := NULL;
1434  g_null_lines.array_anc_id_36(Idx)             := NULL;
1435  g_null_lines.array_anc_id_37(Idx)             := NULL;
1436  g_null_lines.array_anc_id_38(Idx)             := NULL;
1437  g_null_lines.array_anc_id_39(Idx)             := NULL;
1438  g_null_lines.array_anc_id_40(Idx)             := NULL;
1439  g_null_lines.array_anc_id_41(Idx)             := NULL;
1440  g_null_lines.array_anc_id_42(Idx)             := NULL;
1441  g_null_lines.array_anc_id_43(Idx)             := NULL;
1442  g_null_lines.array_anc_id_44(Idx)             := NULL;
1443  g_null_lines.array_anc_id_45(Idx)             := NULL;
1444  g_null_lines.array_anc_id_46(Idx)             := NULL;
1445  g_null_lines.array_anc_id_47(Idx)             := NULL;
1446  g_null_lines.array_anc_id_48(Idx)             := NULL;
1447  g_null_lines.array_anc_id_49(Idx)             := NULL;
1448  g_null_lines.array_anc_id_50(Idx)             := NULL;
1449  g_null_lines.array_anc_id_51(Idx)             := NULL;
1450  g_null_lines.array_anc_id_52(Idx)             := NULL;
1451  g_null_lines.array_anc_id_53(Idx)             := NULL;
1452  g_null_lines.array_anc_id_54(Idx)             := NULL;
1453  g_null_lines.array_anc_id_55(Idx)             := NULL;
1454  g_null_lines.array_anc_id_56(Idx)             := NULL;
1455  g_null_lines.array_anc_id_57(Idx)             := NULL;
1456  g_null_lines.array_anc_id_58(Idx)             := NULL;
1457  g_null_lines.array_anc_id_59(Idx)             := NULL;
1458  g_null_lines.array_anc_id_60(Idx)             := NULL;
1459  g_null_lines.array_anc_id_61(Idx)             := NULL;
1460  g_null_lines.array_anc_id_62(Idx)             := NULL;
1461  g_null_lines.array_anc_id_63(Idx)             := NULL;
1462  g_null_lines.array_anc_id_64(Idx)             := NULL;
1463  g_null_lines.array_anc_id_65(Idx)             := NULL;
1464  g_null_lines.array_anc_id_66(Idx)             := NULL;
1465  g_null_lines.array_anc_id_67(Idx)             := NULL;
1466  g_null_lines.array_anc_id_68(Idx)             := NULL;
1467  g_null_lines.array_anc_id_69(Idx)             := NULL;
1468  g_null_lines.array_anc_id_70(Idx)             := NULL;
1469  g_null_lines.array_anc_id_71(Idx)             := NULL;
1470  g_null_lines.array_anc_id_72(Idx)             := NULL;
1471  g_null_lines.array_anc_id_73(Idx)             := NULL;
1472  g_null_lines.array_anc_id_74(Idx)             := NULL;
1473  g_null_lines.array_anc_id_75(Idx)             := NULL;
1474  g_null_lines.array_anc_id_76(Idx)             := NULL;
1475  g_null_lines.array_anc_id_77(Idx)             := NULL;
1476  g_null_lines.array_anc_id_78(Idx)             := NULL;
1477  g_null_lines.array_anc_id_79(Idx)             := NULL;
1478  g_null_lines.array_anc_id_80(Idx)             := NULL;
1479  g_null_lines.array_anc_id_81(Idx)             := NULL;
1480  g_null_lines.array_anc_id_82(Idx)             := NULL;
1481  g_null_lines.array_anc_id_83(Idx)             := NULL;
1482  g_null_lines.array_anc_id_84(Idx)             := NULL;
1483  g_null_lines.array_anc_id_85(Idx)             := NULL;
1484  g_null_lines.array_anc_id_86(Idx)             := NULL;
1485  g_null_lines.array_anc_id_87(Idx)             := NULL;
1486  g_null_lines.array_anc_id_88(Idx)             := NULL;
1487  g_null_lines.array_anc_id_89(Idx)             := NULL;
1488  g_null_lines.array_anc_id_90(Idx)             := NULL;
1489  g_null_lines.array_anc_id_91(Idx)             := NULL;
1490  g_null_lines.array_anc_id_92(Idx)             := NULL;
1491  g_null_lines.array_anc_id_93(Idx)             := NULL;
1492  g_null_lines.array_anc_id_94(Idx)             := NULL;
1493  g_null_lines.array_anc_id_95(Idx)             := NULL;
1494  g_null_lines.array_anc_id_96(Idx)             := NULL;
1495  g_null_lines.array_anc_id_97(Idx)             := NULL;
1496  g_null_lines.array_anc_id_98(Idx)             := NULL;
1497  g_null_lines.array_anc_id_99(Idx)             := NULL;
1498  g_null_lines.array_anc_id_100(Idx)            := NULL;
1499 --
1500  g_null_lines.array_event_number(Idx)          := NULL;
1501  g_null_lines.array_entity_id(Idx)             := NULL;
1502  g_null_lines.array_reversal_code(Idx)         := NULL;
1503 --------------------------------------------------------------------------
1504 -- 4262811 - Initialised to prevent element at index[x] does not exist error
1505  g_null_lines.array_balance_type_code(Idx)     := NULL;
1506  g_null_lines.array_ledger_id(Idx)             := NULL;
1507  g_null_lines.array_override_acctd_amt_flag(Idx) := NULL;
1508 --------------------------------------------------------------------------
1509  g_null_lines.array_encumbrance_type_id(Idx)   := NULL;
1510 --
1511  --------------------------------------
1512  -- 4219869
1513  -- Business Flow Applied To Attributes
1514  --------------------------------------
1515  g_null_lines.array_business_method_code(Idx)   := NULL;
1516  g_null_lines.array_business_class_code(Idx)    := NULL;
1517  g_null_lines.array_inherit_desc_flag(Idx)      := 'N';
1518  g_null_lines.array_bflow_application_id(Idx)   := NULL;
1519 
1520  g_null_lines.array_bflow_entity_code(Idx)      := NULL;
1521  g_null_lines.array_bflow_source_id_num_1(Idx)  := NULL;
1522  g_null_lines.array_bflow_source_id_num_2(Idx)  := NULL;
1523  g_null_lines.array_bflow_source_id_num_3(Idx)  := NULL;
1524  g_null_lines.array_bflow_source_id_num_4(Idx)  := NULL;
1525  g_null_lines.array_bflow_source_id_char_1(Idx) := NULL;
1526  g_null_lines.array_bflow_source_id_char_2(Idx) := NULL;
1527  g_null_lines.array_bflow_source_id_char_3(Idx) := NULL;
1528  g_null_lines.array_bflow_source_id_char_4(Idx) := NULL;
1529 
1530  g_null_lines.array_bflow_distribution_type(Idx):= NULL;
1531  g_null_lines.array_bflow_dist_id_num_1(Idx)    := NULL;
1532  g_null_lines.array_bflow_dist_id_num_2(Idx)    := NULL;
1533  g_null_lines.array_bflow_dist_id_num_3(Idx)    := NULL;
1534  g_null_lines.array_bflow_dist_id_num_4(Idx)    := NULL;
1535  g_null_lines.array_bflow_dist_id_num_5(Idx)    := NULL;
1536  g_null_lines.array_bflow_dist_id_char_1(Idx)   := NULL;
1537  g_null_lines.array_bflow_dist_id_char_2(Idx)   := NULL;
1538  g_null_lines.array_bflow_dist_id_char_3(Idx)   := NULL;
1539  g_null_lines.array_bflow_dist_id_char_4(Idx)   := NULL;
1540  g_null_lines.array_bflow_dist_id_char_5(Idx)   := NULL;
1541 
1542  g_null_lines.array_bflow_applied_to_amt(Idx)   := NULL;  -- 5132302
1543 --
1544 --
1545 -- Upgrade Attributes
1546 --
1547 
1548 
1549 g_null_lines.array_actual_upg_option(Idx)         := NULL;
1550 g_null_lines.array_actual_upg_dr_ccid(Idx)        := NULL;
1551 g_null_lines.array_actual_upg_cr_ccid(Idx)        := NULL;
1552 g_null_lines.array_actual_upg_dr_ent_amt(Idx)     := NULL;
1553 g_null_lines.array_actual_upg_cr_ent_amt(Idx)     := NULL;
1554 g_null_lines.array_actual_upg_dr_ent_curr(Idx)    := NULL;
1555 g_null_lines.array_actual_upg_cr_ent_curr(Idx)    := NULL;
1556 g_null_lines.array_actual_upg_dr_ledger_amt(Idx)  := NULL;
1557 g_null_lines.array_actual_upg_cr_ledger_amt(Idx)  := NULL;
1558 g_null_lines.array_actual_upg_dr_acct_class(Idx)  := NULL;
1559 g_null_lines.array_actual_upg_cr_acct_class(Idx)  := NULL;
1560 g_null_lines.array_actual_upg_dr_xrate(Idx)       := NULL;
1561 g_null_lines.array_actual_upg_dr_xrate_type(Idx)  := NULL;
1562 g_null_lines.array_actual_upg_dr_xdate(Idx)       := NULL;
1563 g_null_lines.array_actual_upg_cr_xrate(Idx)       := NULL;
1564 g_null_lines.array_actual_upg_cr_xrate_type(Idx)  := NULL;
1565 g_null_lines.array_actual_upg_cr_xdate(Idx)       := NULL;
1566 g_null_lines.array_enc_upg_option(Idx)            := NULL;
1567 g_null_lines.array_enc_upg_dr_ccid(Idx)           := NULL;
1568 g_null_lines.array_enc_upg_cr_ccid(Idx)           := NULL;
1569 g_null_lines.array_upg_dr_enc_type_id(Idx)        := NULL;
1570 g_null_lines.array_upg_cr_enc_type_id(Idx)        := NULL;
1571 g_null_lines.array_enc_upg_dr_ent_amt(Idx)        := NULL;
1572 g_null_lines.array_enc_upg_cr_ent_amt(Idx)        := NULL;
1573 g_null_lines.array_enc_upg_dr_ent_curr(Idx)       := NULL;
1574 g_null_lines.array_enc_upg_cr_ent_curr(Idx)       := NULL;
1575 g_null_lines.array_enc_upg_dr_ledger_amt(Idx)     := NULL;
1576 g_null_lines.array_enc_upg_cr_ledger_amt(Idx)     := NULL;
1577 g_null_lines.array_enc_upg_dr_acct_class(Idx)     := NULL;
1578 g_null_lines.array_enc_upg_cr_acct_class(Idx)     := NULL;
1579 --  5845547
1580 g_null_lines.array_upg_party_type_code(Idx)       := NULL;
1581 g_null_lines.array_upg_party_id(Idx)              := NULL;
1582 g_null_lines.array_upg_party_site_id(Idx)         := NULL;
1583 --
1584 --
1585 -- Allocation Attributes
1586 --
1587 g_null_lines.array_alloct_application_id(Idx)   := NULL;
1588 
1589 g_null_lines.array_alloct_entity_code(Idx)      := NULL;
1590 g_null_lines.array_alloct_source_id_num_1(Idx)  := NULL;
1591 g_null_lines.array_alloct_source_id_num_2(Idx)  := NULL;
1592 g_null_lines.array_alloct_source_id_num_3(Idx)  := NULL;
1593 g_null_lines.array_alloct_source_id_num_4(Idx)  := NULL;
1594 g_null_lines.array_alloct_source_id_char_1(Idx) := NULL;
1595 g_null_lines.array_alloct_source_id_char_2(Idx) := NULL;
1596 g_null_lines.array_alloct_source_id_char_3(Idx) := NULL;
1597 g_null_lines.array_alloct_source_id_char_4(Idx) := NULL;
1598 
1599 g_null_lines.array_alloct_distribution_type(Idx):= NULL;
1600 g_null_lines.array_alloct_dist_id_num_1(Idx)    := NULL;
1601 g_null_lines.array_alloct_dist_id_num_2(Idx)    := NULL;
1602 g_null_lines.array_alloct_dist_id_num_3(Idx)    := NULL;
1603 g_null_lines.array_alloct_dist_id_num_4(Idx)    := NULL;
1604 g_null_lines.array_alloct_dist_id_num_5(Idx)    := NULL;
1605 g_null_lines.array_alloct_dist_id_char_1(Idx)   := NULL;
1606 g_null_lines.array_alloct_dist_id_char_2(Idx)   := NULL;
1607 g_null_lines.array_alloct_dist_id_char_3(Idx)   := NULL;
1608 g_null_lines.array_alloct_dist_id_char_4(Idx)   := NULL;
1609 g_null_lines.array_alloct_dist_id_char_5(Idx)   := NULL;
1610 
1611 --
1612 -- bug 4955764
1613 --
1614 g_null_lines.array_gl_date(Idx)                 := NULL;
1615 
1616 
1617 --
1618 END LOOP;
1619 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1620       trace
1621          (p_msg      => 'END of SetNullLine'
1622          ,p_level    => C_LEVEL_PROCEDURE
1623          ,p_module   => l_log_module);
1624 END IF;
1625 EXCEPTION
1626 WHEN xla_exceptions_pkg.application_exception THEN
1627   RAISE;
1628 WHEN OTHERS  THEN
1629    xla_exceptions_pkg.raise_message
1630            (p_location => 'XLA_AE_LINES_PKG.SetNullLine');
1631   --
1632 END SetNullLine;
1633 --
1634 /*======================================================================+
1635 |                                                                       |
1636 | Public Procedure                                                      |
1637 |                                                                       |
1638 |                                                                       |
1639 +======================================================================*/
1640 PROCEDURE SetNewLine
1641 IS
1642 l_log_module         VARCHAR2(240);
1643 l_result                   BOOLEAN;
1644 BEGIN
1645 --
1646 IF g_log_enabled THEN
1647       l_log_module := C_DEFAULT_MODULE||'.SetNewLine';
1648 END IF;
1649 --
1650 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1651       trace
1652          (p_msg      => 'BEGIN of SetNewLine'
1653          ,p_level    => C_LEVEL_PROCEDURE
1654          ,p_module   => l_log_module);
1655 
1656 END IF;
1657 
1658 IF NVL(g_LineNumber,0) = 0 THEN
1659    g_rec_lines := g_null_lines;
1660 
1661 ELSIF g_LineNumber = C_BULK_LIMIT THEN
1662    --
1663    -- insert headers into xla_ae_lines_gt table
1664    --
1665    l_result := xla_ae_lines_pkg.InsertLines;
1666    g_LineNumber := 0;
1667    g_rec_lines  := g_null_lines;
1668 
1669 END IF;
1670 
1671 g_LineNumber       := NVL(g_LineNumber ,0) + 1;
1672 g_override_acctd_amt_flag :='N';
1673 g_temp_line_num    := NVL(g_temp_line_num ,0) + 1;
1674 
1675 --
1676 -- following sets the temp line number
1677 --
1678 g_rec_lines.array_line_num(g_LineNumber) := g_temp_line_num;
1679 --
1680 -- following sets the extract line number
1681 --
1682 g_rec_lines.array_extract_line_num(g_LineNumber) := g_ExtractLine;
1683 
1684 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1685       trace
1686          (p_msg      => 'END of SetNewLine'
1687          ,p_level    => C_LEVEL_PROCEDURE
1688          ,p_module   => l_log_module);
1689 END IF;
1690 EXCEPTION
1691 WHEN xla_exceptions_pkg.application_exception THEN
1692   RAISE;
1693 WHEN OTHERS  THEN
1694    xla_exceptions_pkg.raise_message
1695            (p_location => 'XLA_AE_LINES_PKG.SetNewLine');
1696   --
1697 END SetNewLine;
1698 --
1699 --
1700 /*======================================================================+
1701 |                                                                       |
1702 | Public Procedure                                                      |
1703 |                                                                       |
1704 |                                                                       |
1705 +======================================================================*/
1706 PROCEDURE SetAcctLineType(
1707   p_component_type                   IN VARCHAR2
1708 , p_event_type_code                  IN VARCHAR2
1709 , p_line_definition_owner_code       IN VARCHAR2
1710 , p_line_definition_code             IN VARCHAR2
1711 , p_accounting_line_code             IN VARCHAR2
1712 , p_accounting_line_type_code        IN VARCHAR2
1713 , p_accounting_line_appl_id          IN INTEGER
1714 , p_amb_context_code                 IN VARCHAR2
1715 , p_entity_code                      IN VARCHAR2
1716 , p_event_class_code                 IN VARCHAR2
1717 )
1718 IS
1719 l_log_module         VARCHAR2(240);
1720 BEGIN
1721 --
1722 IF g_log_enabled THEN
1723       l_log_module := C_DEFAULT_MODULE||'.SetAcctLineType';
1724 END IF;
1725 --
1726 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1727       trace
1728          (p_msg      => 'BEGIN of SetAcctLineType'
1729          ,p_level    => C_LEVEL_PROCEDURE
1730          ,p_module   => l_log_module);
1731       trace
1732          (p_msg      => 'p_accounting_line_type_code = '||p_accounting_line_type_code||
1733                         '- p_accounting_line_code= '||p_accounting_line_code
1734          ,p_level    => C_LEVEL_PROCEDURE
1735          ,p_module   => l_log_module);
1736 
1737 END IF;
1738 --
1739 --
1740 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1741 
1742       trace
1743          (p_msg      => 'p_component_type = '||p_component_type||
1744                         ' - p_accounting_line_appl_id = '||p_accounting_line_appl_id||
1745                         ' - p_amb_context_code = '||p_amb_context_code||
1746                         ' - p_entity_code = '||p_entity_code||
1747                         ' - p_event_class_code = '||p_event_class_code
1748          ,p_level    => C_LEVEL_STATEMENT
1749          ,p_module   => l_log_module);
1750 END IF;
1751 
1752  g_rec_lines.array_event_class_code(g_LineNumber)      := p_event_class_code;
1753  g_rec_lines.array_event_type_code(g_LineNumber)       := p_event_type_code;
1754  g_rec_lines.array_line_defn_owner_code(g_LineNumber)  := p_line_definition_owner_code;
1755  g_rec_lines.array_line_defn_code(g_LineNumber)        := p_line_definition_code;
1756  g_rec_lines.array_accounting_line_code(g_LineNumber)  := p_accounting_line_code;
1757  g_rec_lines.array_accounting_line_type(g_LineNumber)  := p_accounting_line_type_code;
1758 
1759 --
1760 -- cache accounting line type information
1761 --
1762  g_accounting_line.component_type              := p_component_type;
1763  g_accounting_line.accounting_line_code        := p_accounting_line_code;
1764  g_accounting_line.accounting_line_type_code   := p_accounting_line_type_code;
1765  g_accounting_line.accounting_line_appl_id     := p_accounting_line_appl_id;
1766  g_accounting_line.amb_context_code            := p_amb_context_code;
1767  g_accounting_line.entity_code                 := p_entity_code;
1768  g_accounting_line.event_class_code            := p_event_class_code;
1769 
1770 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1771       trace
1772          (p_msg      => 'END of SetAcctLineType'
1773          ,p_level    => C_LEVEL_PROCEDURE
1774          ,p_module   => l_log_module);
1775 END IF;
1776 EXCEPTION
1777 WHEN xla_exceptions_pkg.application_exception THEN
1778    RAISE;
1779 WHEN OTHERS  THEN
1780    xla_exceptions_pkg.raise_message
1781            (p_location => 'XLA_AE_LINES_PKG.SetAcctLineType');
1782   --
1783 END SetAcctLineType;
1784 
1785 /*======================================================================+
1786 |                                                                       |
1787 | Public Function                                                       |
1788 |                                                                       |
1789 |                                                                       |
1790 +======================================================================*/
1791 Function SetAcctLineOption(
1792   p_natural_side_code          IN VARCHAR2
1793 , p_gain_or_loss_flag          IN VARCHAR2
1794 , p_gl_transfer_mode_code      IN VARCHAR2
1795 , p_acct_entry_type_code       IN VARCHAR2
1796 , p_switch_side_flag           IN VARCHAR2
1797 , p_merge_duplicate_code       IN VARCHAR2
1798 )
1799 RETURN NUMBER
1800 IS
1801 l_ae_header_id        NUMBER;
1802 l_log_module         VARCHAR2(240);
1803 BEGIN
1804 --
1805 IF g_log_enabled THEN
1806       l_log_module := C_DEFAULT_MODULE||'.SetAcctLineOption';
1807 END IF;
1808 --
1809 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1810       trace
1811          (p_msg      => 'BEGIN of SetAcctLineOption'
1812          ,p_level    => C_LEVEL_PROCEDURE
1813          ,p_module   => l_log_module);
1814 
1815       trace
1816          (p_msg      => 'p_natural_side_code = '||p_natural_side_code||
1817                         ' - p_gl_transfer_mode_code = '||p_gl_transfer_mode_code||
1818                         ' - p_acct_entry_type_code = '||p_acct_entry_type_code||
1819                         ' - p_switch_side_flag = '||p_switch_side_flag||
1820                         ' - p_merge_duplicate_code = '||p_merge_duplicate_code
1821          ,p_level    => C_LEVEL_PROCEDURE
1822          ,p_module   => l_log_module);
1823 END IF;
1824 --
1825 --
1826 -- I THINK WE DONT' NEED THIS IN BULK APPROACH
1827 --
1828 --  SetHdrLineNum(p_balance_type_code => p_acct_entry_type_code);
1829 --
1830   --
1831   g_rec_lines.array_gl_transfer_mode(g_LineNumber)      := p_gl_transfer_mode_code ;
1832   g_rec_lines.array_natural_side_code(g_LineNumber)     := p_natural_side_code     ;
1833   g_rec_lines.array_gain_or_loss_flag(g_LineNumber)     := p_gain_or_loss_flag     ;
1834   g_rec_lines.array_acct_entry_type_code(g_LineNumber)  := p_acct_entry_type_code  ;
1835   g_rec_lines.array_switch_side_flag(g_LineNumber)      := p_switch_side_flag      ;
1836   g_rec_lines.array_merge_duplicate_code(g_LineNumber)  := p_merge_duplicate_code  ;
1837 --
1838 --
1839     l_ae_header_id := g_rec_lines.array_ae_header_id(g_LineNumber);
1840     --
1841 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1842 
1843       trace
1844          (p_msg      => 'return value. = '||TO_CHAR(l_ae_header_id)
1845          ,p_level    => C_LEVEL_PROCEDURE
1846          ,p_module   => l_log_module);
1847 
1848       trace
1849          (p_msg      => 'END of SetAcctLineOption'
1850          ,p_level    => C_LEVEL_PROCEDURE
1851          ,p_module   => l_log_module);
1852 
1853 END IF;
1854 RETURN l_ae_header_id;
1855 EXCEPTION
1856 WHEN xla_exceptions_pkg.application_exception THEN
1857  RAISE;
1858 WHEN OTHERS  THEN
1859    xla_exceptions_pkg.raise_message
1860            (p_location => 'XLA_AE_LINES_PKG.SetAcctLineOption');
1861   --
1862 END SetAcctLineOption;
1863 --
1864 /*======================================================================+
1865 |                                                                       |
1866 | Public Procedure                                                      |
1867 |                                                                       |
1868 |                                                                       |
1869 +======================================================================*/
1870 PROCEDURE SetLineDescription(p_description      IN VARCHAR2
1871                             ,p_ae_header_id     IN NUMBER)
1872 IS
1873 l_log_module         VARCHAR2(240);
1874 BEGIN
1875 --
1876 IF g_log_enabled THEN
1877       l_log_module := C_DEFAULT_MODULE||'.SetLineDescription';
1878 END IF;
1879 --
1880 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1881       trace
1882          (p_msg      => 'BEGIN of SetLineDescription'
1883          ,p_level    => C_LEVEL_PROCEDURE
1884          ,p_module   => l_log_module);
1885 
1886 END IF;
1887 --
1888   g_rec_lines.array_description(g_LineNumber)  := SUBSTR(p_description,1,1996);
1889 --
1890 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1891 
1892       trace
1893          (p_msg      => 'END of SetLineDescription'
1894          ,p_level    => C_LEVEL_PROCEDURE
1895          ,p_module   => l_log_module);
1896 
1897 END IF;
1898 --
1899 EXCEPTION
1900 WHEN xla_exceptions_pkg.application_exception THEN
1901   RAISE;
1902 WHEN OTHERS  THEN
1903    xla_exceptions_pkg.raise_message
1904            (p_location => 'XLA_AE_LINES_PKG.SetLineDescription');
1905   --
1906 END SetLineDescription;
1907 --
1908 --
1909 /*======================================================================+
1910 |                                                                       |
1911 | Public Procedure                                                      |
1912 |                                                                       |
1913 |    set_ccid                                                           |
1914 |                                                                       |
1915 | Caches the transaction and accounting CCIDs in the JE temporary lines |
1916 |                                                                       |
1917 +======================================================================*/
1918 --replace SetCcid
1919 PROCEDURE  set_ccid(
1920   p_code_combination_id      IN NUMBER
1921 , p_value_type_code          IN VARCHAR2
1922 , p_transaction_coa_id       IN NUMBER
1923 , p_accounting_coa_id        IN NUMBER
1924 , p_adr_code                 IN VARCHAR2
1925 , p_adr_type_code            IN VARCHAR2
1926 , p_component_type           IN VARCHAR2
1927 , p_component_code           IN VARCHAR2
1928 , p_component_type_code      IN VARCHAR2
1929 , p_component_appl_id        IN INTEGER
1930 , p_amb_context_code         IN VARCHAR2
1931 , p_side                     IN VARCHAR2
1932 )
1933 IS
1934 l_Idx                BINARY_INTEGER;
1935 null_combination_id  EXCEPTION;
1936 no_sl_coa_mapping    EXCEPTION;
1937 l_log_module         VARCHAR2(240);
1938 BEGIN
1939 --
1940 IF g_log_enabled THEN
1941       l_log_module := C_DEFAULT_MODULE||'.set_ccid';
1942 END IF;
1943 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1944       trace
1945          (p_msg      => 'BEGIN of set_ccid'
1946          ,p_level    => C_LEVEL_PROCEDURE
1947          ,p_module   => l_log_module);
1948 
1949  trace
1950          (p_msg      => ' p_side = '||p_side ||
1951                         ', p_code_combination_id = '||p_code_combination_id
1952          ,p_level    => C_LEVEL_PROCEDURE
1953          ,p_module   => l_log_module);
1954 END IF;
1955 
1956 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1957        trace
1958          (p_msg      => ' p_value_type_code   = '||p_value_type_code ||
1959                         ', p_transaction_coa_id = '|| p_transaction_coa_id||
1960                         ', p_accounting_coa_id = '||p_accounting_coa_id
1961          ,p_level    => C_LEVEL_PROCEDURE
1962          ,p_module   => l_log_module);
1963 
1964        trace
1965          (p_msg      => ' p_adr_code   = '||p_adr_code||
1966                         ', p_adr_type_code = '|| p_adr_type_code
1967          ,p_level    => C_LEVEL_PROCEDURE
1968          ,p_module   => l_log_module);
1969 
1970       trace
1971          (p_msg      => ' p_component_type = '||p_component_type||
1972                         ', p_component_code = '||p_component_code||
1973                         ', p_component_type_code = '||p_component_type_code||
1974                         ', p_component_appl_id = '||p_component_appl_id||
1975                         ', p_amb_context_code = '||p_amb_context_code
1976          ,p_level    => C_LEVEL_STATEMENT
1977          ,p_module   => l_log_module);
1978 
1979 END IF;
1980 
1981 IF p_code_combination_id IS NULL OR p_code_combination_id = -1 THEN  -- 5163338
1982   RAISE null_combination_id;
1983 END IF;
1984 
1985 IF p_value_type_code ='S' AND
1986    ( XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.target_coa_id <>
1987     XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.source_coa_id ) THEN
1988 -- transaction ccid
1989 
1990    IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.sl_coa_mapping_id IS NULL THEN
1991      RAISE no_sl_coa_mapping ;
1992    END IF;
1993 
1994    l_Idx := NVL(g_transaction_accounts.array_ae_header_id.COUNT,0) + 1;
1995    g_transaction_accounts.array_line_num(l_Idx)        := l_Idx ;
1996    g_transaction_accounts.array_ae_header_id(l_Idx)    := g_rec_lines.array_ae_header_id(g_LineNumber);
1997    g_transaction_accounts.array_temp_line_num(l_Idx)   := g_rec_lines.array_line_num(g_LineNumber);
1998    g_transaction_accounts.array_code_combination_id (l_Idx)   := p_code_combination_id;
1999    g_transaction_accounts.array_segment(l_Idx)                := NULL;
2000    g_transaction_accounts.array_from_segment_code(l_Idx)      := NULL;
2001    g_transaction_accounts.array_to_segment_code(l_Idx)        := NULL;
2002    g_transaction_accounts.array_processing_status_code(l_Idx) := C_MAP_CCID;
2003    g_transaction_accounts.array_side_code(l_Idx)              := p_side;
2004 
2005 
2006   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2007        trace
2008          (p_msg      => ' Transaction ccid  = '||p_code_combination_id
2009          ,p_level    => C_LEVEL_PROCEDURE
2010          ,p_module   => l_log_module);
2011   END IF;
2012 
2013 ELSE
2014 -- accounting ccid
2015 
2016   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2017        trace
2018          (p_msg      => ' Accounting ccid   = '||p_code_combination_id
2019          ,p_level    => C_LEVEL_PROCEDURE
2020          ,p_module   => l_log_module);
2021   END IF;
2022 
2023   CASE p_side
2024 
2025    WHEN 'ALL' THEN
2026       g_rec_lines.array_ccid(g_LineNumber)     := p_code_combination_id ;
2027       g_rec_lines.alt_array_ccid(g_LineNumber) := p_code_combination_id ;
2028 
2029       CASE nvl(g_rec_lines.array_ccid_flag(g_LineNumber),C_INVALID)
2030         WHEN C_INVALID    THEN g_rec_lines.array_ccid_flag(g_LineNumber) := C_CREATED;
2031         WHEN C_PROCESSING THEN g_rec_lines.array_ccid_flag(g_LineNumber) := C_NOT_PROCESSED;
2032         ELSE null;
2033       END CASE;
2034 
2035       CASE nvl(g_rec_lines.alt_array_ccid_flag(g_LineNumber),C_INVALID)
2036         WHEN C_INVALID    THEN g_rec_lines.alt_array_ccid_flag(g_LineNumber) := C_CREATED;
2037         WHEN C_PROCESSING THEN g_rec_lines.alt_array_ccid_flag(g_LineNumber) := C_NOT_PROCESSED;
2038         ELSE null;
2039       END CASE;
2040 
2041    WHEN 'NA'     THEN
2042       g_rec_lines.array_ccid(g_LineNumber) := p_code_combination_id ;
2043 
2044       CASE nvl(g_rec_lines.array_ccid_flag(g_LineNumber),C_INVALID)
2045         WHEN C_INVALID    THEN g_rec_lines.array_ccid_flag(g_LineNumber) := C_CREATED;
2046         WHEN C_PROCESSING THEN g_rec_lines.array_ccid_flag(g_LineNumber) := C_NOT_PROCESSED;
2047         ELSE null;
2048       END CASE;
2049 
2050    WHEN 'CREDIT' THEN
2051       g_rec_lines.array_ccid(g_LineNumber) := p_code_combination_id ;
2052 
2053       CASE nvl(g_rec_lines.array_ccid_flag(g_LineNumber),C_INVALID)
2054         WHEN C_INVALID    THEN g_rec_lines.array_ccid_flag(g_LineNumber) := C_CREATED;
2055         WHEN C_PROCESSING THEN g_rec_lines.array_ccid_flag(g_LineNumber) := C_NOT_PROCESSED;
2056         ELSE null;
2057       END CASE;
2058 
2059    WHEN 'DEBIT'  THEN
2060       g_rec_lines.alt_array_ccid(g_LineNumber) := p_code_combination_id ;
2061 
2062       CASE nvl(g_rec_lines.alt_array_ccid_flag(g_LineNumber),C_INVALID)
2063         WHEN C_INVALID    THEN g_rec_lines.alt_array_ccid_flag(g_LineNumber) := C_CREATED;
2064         WHEN C_PROCESSING THEN g_rec_lines.alt_array_ccid_flag(g_LineNumber) := C_NOT_PROCESSED;
2065         ELSE null;
2066       END CASE;
2067 
2068   ELSE
2069      g_rec_lines.array_ccid(g_LineNumber) := p_code_combination_id ;
2070 
2071       CASE nvl(g_rec_lines.array_ccid_flag(g_LineNumber),C_INVALID)
2072         WHEN C_INVALID    THEN g_rec_lines.array_ccid_flag(g_LineNumber) := C_CREATED;
2073         WHEN C_PROCESSING THEN g_rec_lines.array_ccid_flag(g_LineNumber) := C_NOT_PROCESSED;
2074         ELSE null;
2075       END CASE;
2076   END CASE;
2077 
2078 END IF;
2079 
2080 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2081       trace
2082          (p_msg      => 'End of set_ccid'
2083          ,p_level    => C_LEVEL_PROCEDURE
2084          ,p_module   => l_log_module);
2085 END IF;
2086 EXCEPTION
2087 WHEN null_combination_id THEN
2088 
2089   CASE p_side
2090    WHEN 'ALL' THEN
2091       g_rec_lines.array_ccid(g_LineNumber)     := -1;
2092       g_rec_lines.alt_array_ccid(g_LineNumber) := -1;
2093       g_rec_lines.array_ccid_flag(g_LineNumber)    := C_INVALID;
2094       g_rec_lines.alt_array_ccid_flag(g_LineNumber):= C_INVALID;
2095    WHEN 'NA'     THEN
2096       g_rec_lines.array_ccid(g_LineNumber) := -1;
2097       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2098    WHEN 'CREDIT' THEN
2099       g_rec_lines.array_ccid(g_LineNumber) := -1;
2100       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2101    WHEN 'DEBIT'  THEN
2102       g_rec_lines.alt_array_ccid(g_LineNumber) := -1;
2103       g_rec_lines.alt_array_ccid_flag(g_LineNumber):= C_INVALID;
2104    ELSE
2105       g_rec_lines.array_ccid(g_LineNumber) := -1;
2106       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2107   END CASE;
2108 
2109   XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
2110   xla_accounting_err_pkg.build_message
2111                  (p_appli_s_name            => 'XLA'
2112                  ,p_msg_name                => 'XLA_AP_CCID_NULL'
2113                  ,p_token_1                 => 'COMPONENT_NAME'
2114                  ,p_value_1                 => XLA_AE_SOURCES_PKG.GetComponentName (
2115                                                                  'AMB_ADR'
2116                                                                 ,p_adr_code
2117                                                                 ,p_adr_type_code
2118                                                                 ,p_component_appl_id
2119                                                                 ,p_amb_context_code
2120                                                                )
2121                  ,p_token_2                 => 'OWNER'
2122                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2123                                                                  'XLA_OWNER_TYPE'
2124                                                                 ,p_component_type_code
2125                                                                 )
2126                  ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2127                  ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2128                  ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2129                  ,p_ae_header_id            => NULL
2130                 );
2131 
2132   IF (C_LEVEL_ERROR >= g_log_level) THEN
2133              trace
2134                   (p_msg      => 'ERROR: XLA_AP_CCID_NULL'
2135                   ,p_level    => C_LEVEL_ERROR
2136                   ,p_module   => l_log_module);
2137   END IF;
2138 WHEN no_sl_coa_mapping THEN
2139 
2140   CASE p_side
2141    WHEN 'ALL' THEN
2142       g_rec_lines.array_ccid(g_LineNumber)     := -1;
2143       g_rec_lines.alt_array_ccid(g_LineNumber) := -1;
2144       g_rec_lines.array_ccid_flag(g_LineNumber)    := C_INVALID;
2145       g_rec_lines.alt_array_ccid_flag(g_LineNumber):= C_INVALID;
2146    WHEN 'NA'     THEN
2147       g_rec_lines.array_ccid(g_LineNumber) := -1;
2148       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2149    WHEN 'CREDIT' THEN
2150       g_rec_lines.array_ccid(g_LineNumber) := -1;
2151       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2152    WHEN 'DEBIT'  THEN
2153       g_rec_lines.alt_array_ccid(g_LineNumber) := -1;
2154       g_rec_lines.alt_array_ccid_flag(g_LineNumber):= C_INVALID;
2155    ELSE
2156       g_rec_lines.array_ccid(g_LineNumber) := -1;
2157       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2158   END CASE;
2159 
2160   XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
2161 
2162   xla_accounting_err_pkg.build_message
2163                  (p_appli_s_name            => 'XLA'
2164                  ,p_msg_name                => 'XLA_AP_NO_SL_COA_MAPPING'
2165                  ,p_token_1                 => 'SEGMENT_RULE_NAME'
2166                  ,p_value_1                 => XLA_AE_SOURCES_PKG.GetComponentName (
2167                                                                  'AMB_ADR'
2168                                                                 ,p_adr_code
2169                                                                 ,p_adr_type_code
2170                                                                 ,p_component_appl_id
2171                                                                 ,p_amb_context_code
2172                                                                )
2173                  ,p_token_2                 => 'OWNER'
2174                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2175                                                                  'XLA_OWNER_TYPE'
2176                                                                 ,p_adr_type_code
2177                                                                 )
2178                  ,p_token_3                 => 'LEDGER_NAME'
2179                  ,p_value_3                 => xla_accounting_cache_pkg.GetValueChar
2180                                              (
2181                                              p_source_code => 'XLA_LEDGER_NAME'
2182                                            , p_target_ledger_id  =>
2183                                              XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2184                                              )
2185                  ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2186                  ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2187                  ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2188                  ,p_ae_header_id            => NULL
2189                 );
2190 
2191   IF (C_LEVEL_ERROR >= g_log_level) THEN
2192              trace
2193                   (p_msg      => 'ERROR: XLA_AP_NO_SL_COA_MAPPING'
2194                   ,p_level    => C_LEVEL_ERROR
2195                   ,p_module   => l_log_module);
2196   END IF;
2197 WHEN xla_exceptions_pkg.application_exception THEN
2198   IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2199        trace
2200            (p_msg      => 'Error. = '||sqlerrm
2201            ,p_level    => C_LEVEL_PROCEDURE
2202            ,p_module   => l_log_module);
2203   END IF;
2204   RAISE;
2205 WHEN OTHERS  THEN
2206    IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2207        trace
2208            (p_msg      => 'Error. = '||sqlerrm
2209            ,p_level    => C_LEVEL_PROCEDURE
2210            ,p_module   => l_log_module);
2211    END IF;
2212    xla_exceptions_pkg.raise_message
2213            (p_location => 'XLA_AE_LINES_PKG.set_ccid');
2214 END set_ccid;
2215 
2216 /*=========================================================================+
2217 |                                                                          |
2218 | Public Procedure                                                         |
2219 |                                                                          |
2220 |    set_segment                                                           |
2221 |                                                                          |
2222 | Caches the transaction and accounting segments in the JE temporary lines |
2223 |                                                                          |
2224 +=========================================================================*/
2225 
2226 PROCEDURE set_segment(
2227   p_to_segment_code         IN VARCHAR2
2228 , p_segment_value           IN VARCHAR2
2229 , p_from_segment_code       IN VARCHAR2
2230 , p_from_combination_id     IN NUMBER
2231 , p_value_type_code         IN VARCHAR2
2232 , p_transaction_coa_id      IN NUMBER
2233 , p_accounting_coa_id       IN NUMBER
2234 , p_flexfield_segment_code  IN VARCHAR2
2235 , p_flex_value_set_id       IN NUMBER
2236 , p_adr_code                IN VARCHAR2
2237 , p_adr_type_code           IN VARCHAR2
2238 , p_component_type          IN VARCHAR2
2239 , p_component_code          IN VARCHAR2
2240 , p_component_type_code     IN VARCHAR2
2241 , p_component_appl_id       IN INTEGER
2242 , p_amb_context_code        IN VARCHAR2
2243 , p_entity_code             IN VARCHAR2
2244 , p_event_class_code        IN VARCHAR2
2245 , p_side                    IN VARCHAR2
2246 )
2247 IS
2248 l_Idx                     BINARY_INTEGER;
2249 l_accounting_values       BOOLEAN;
2250 l_to_segment_code         VARCHAR2(30);
2251 l_from_segment_code       VARCHAR2(30);
2252 l_segment_value           VARCHAR2(30);
2253 l_coa_name                VARCHAR2(240);
2254 invalid_segment_code      EXCEPTION;
2255 invalid_segment_qualifier EXCEPTION;
2256 null_segment_value        EXCEPTION;
2257 no_sl_coa_mapping         EXCEPTION;
2258 l_log_module              VARCHAR2(240);
2259 BEGIN
2260 IF g_log_enabled THEN
2261       l_log_module := C_DEFAULT_MODULE||'.set_segment';
2262 END IF;
2263 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2264       trace
2265          (p_msg      => 'BEGIN of set_segment'
2266          ,p_level    => C_LEVEL_PROCEDURE
2267          ,p_module   => l_log_module);
2268   trace
2269          (p_msg      => 'p_to_segment_code = '||p_to_segment_code ||
2270                         ', p_segment_value = '||p_segment_value||
2271                         ',p_side ='||p_side
2272          ,p_level    => C_LEVEL_PROCEDURE
2273          ,p_module   => l_log_module);
2274 
2275 END IF;
2276 
2277 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2278      trace
2279          (p_msg      => 'p_from_segment_code = '||p_from_segment_code ||
2280                         ', p_from_combination_id   = '||p_from_combination_id ||
2281                         ', p_value_type_code   = '||p_value_type_code
2282          ,p_level    => C_LEVEL_PROCEDURE
2283          ,p_module   => l_log_module);
2284 
2285      trace
2286          (p_msg      => ' p_adr_code   = '||p_adr_code||
2287                         ', p_adr_type_code = '|| p_adr_type_code
2288          ,p_level    => C_LEVEL_PROCEDURE
2289          ,p_module   => l_log_module);
2290 
2291      trace
2292          (p_msg      => '  p_flexfield_segment_code = '||p_flexfield_segment_code ||
2293                         ', p_flex_value_set_id   = '||p_flex_value_set_id ||
2294                         ', p_transaction_coa_id = '|| p_transaction_coa_id||
2295                         ', p_accounting_coa_id = '||p_accounting_coa_id
2296          ,p_level    => C_LEVEL_PROCEDURE
2297          ,p_module   => l_log_module);
2298     trace
2299          (p_msg      => ' p_component_type = '||p_component_type||
2300                         ', p_component_code = '||p_component_code||
2301                         ', p_component_type_code = '||p_component_type_code||
2302                         ', p_component_appl_id = '||p_component_appl_id||
2303                         ', p_amb_context_code = '||p_amb_context_code
2304          ,p_level    => C_LEVEL_STATEMENT
2305          ,p_module   => l_log_module);
2306 END IF;
2307 
2308 
2309 l_segment_value       := p_segment_value;
2310 l_from_segment_code   := p_from_segment_code;
2311 l_to_segment_code     := p_to_segment_code;
2312 l_accounting_values   := TRUE;
2313 
2314 
2315 IF l_from_segment_code IS NOT NULL AND l_from_segment_code NOT LIKE 'SEGMENT%' THEN
2316 
2317     l_from_segment_code   := xla_ae_code_combination_pkg.get_segment_code(
2318        p_flex_application_id    => 101
2319       ,p_application_short_name =>  'SQLGL'
2320       ,p_id_flex_code           => 'GL#'
2321       ,p_id_flex_num            => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.source_coa_id
2322       ,p_segment_qualifier      => l_from_segment_code
2323       ,p_component_type         => p_component_type
2324       ,p_component_code         => p_component_code
2325       ,p_component_type_code    => p_component_type_code
2326       ,p_component_appl_id      => p_component_appl_id
2327       ,p_amb_context_code       => p_amb_context_code
2328       ,p_entity_code            => p_entity_code
2329       ,p_event_class_code       => p_event_class_code
2330                         );
2331 END IF;
2332 
2333 IF l_to_segment_code IS NOT NULL AND l_to_segment_code NOT LIKE 'SEGMENT%' THEN
2334 
2335     l_to_segment_code     := xla_ae_code_combination_pkg.get_segment_code(
2336        p_flex_application_id    => 101
2337       ,p_application_short_name =>  'SQLGL'
2338       ,p_id_flex_code           => 'GL#'
2339       ,p_id_flex_num            => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.target_coa_id
2340       ,p_segment_qualifier      => l_to_segment_code
2341       ,p_component_type         => p_component_type
2342       ,p_component_code         => p_component_code
2343       ,p_component_type_code    => p_component_type_code
2344       ,p_component_appl_id      => p_component_appl_id
2345       ,p_amb_context_code       => p_amb_context_code
2346       ,p_entity_code            => p_entity_code
2347       ,p_event_class_code       => p_event_class_code
2348                         );
2349 END IF;
2350 
2351 IF l_to_segment_code IS NULL THEN
2352        RAISE invalid_segment_code;
2353 END IF;
2354 
2355 
2356 IF ( XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.target_coa_id <>
2357     XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.source_coa_id ) AND
2358     p_accounting_coa_id                                   IS NULL AND
2359     p_value_type_code ='S'                                        AND
2360     p_from_combination_id                                 IS NULL AND
2361     p_flexfield_segment_code                          IS NOT NULL THEN
2362     -- segment qualifier, secondary ledger , not value set
2363 
2364     IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.sl_coa_mapping_id IS NULL THEN
2365       RAISE no_sl_coa_mapping ;
2366     END IF;
2367 
2368     IF p_segment_value IS NULL THEN
2369        RAISE null_segment_value;
2370     END IF;
2371 
2372     IF nvl(p_flexfield_segment_code ,'X') NOT IN ('GL_BALANCING',
2373                                          'GL_ACCOUNT'  ,
2374                                          'GL_INTERCOMPANY',
2375                                          'GL_MANAGEMENT',
2376                                          'FA_COST_CTR'
2377                                          ) THEN
2378         RAISE invalid_segment_qualifier;
2379     END IF;
2380 
2381     l_Idx := NVL(g_transaction_accounts.array_ae_header_id.COUNT,0)+1;
2382     g_transaction_accounts.array_line_num(l_Idx)        := l_Idx ;
2383     g_transaction_accounts.array_ae_header_id(l_Idx)    := g_rec_lines.array_ae_header_id(g_LineNumber);
2384     g_transaction_accounts.array_temp_line_num(l_Idx)        := g_rec_lines.array_line_num(g_LineNumber);
2385     g_transaction_accounts.array_code_combination_id(l_Idx)    := NULL;
2386     g_transaction_accounts.array_segment (l_Idx)               := p_segment_value;
2387     g_transaction_accounts.array_from_segment_code (l_Idx)     := p_flexfield_segment_code;
2388     g_transaction_accounts.array_to_segment_code(l_Idx)        := l_to_segment_code;
2389     g_transaction_accounts.array_processing_status_code(l_Idx) := C_MAP_QUALIFIER;
2390     g_transaction_accounts.array_side_code(l_Idx)              := p_side;
2391 
2392     l_accounting_values := FALSE;
2393 
2394     IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2395        trace
2396          (p_msg      => ' Transaction seg qualifier  = '||p_segment_value
2397          ,p_level    => C_LEVEL_PROCEDURE
2398          ,p_module   => l_log_module);
2399     END IF;
2400 
2401 ELSIF ( XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.target_coa_id <>
2402     XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.source_coa_id ) AND
2403     p_value_type_code ='S'                                        AND
2404     p_from_combination_id                            IS NOT NULL THEN
2405     --transaction segment, secondary ledger
2406 
2407     IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.sl_coa_mapping_id IS NULL THEN
2408       RAISE no_sl_coa_mapping ;
2409     END IF;
2410 
2411     l_Idx := NVL(g_transaction_accounts.array_ae_header_id.COUNT,0) + 1;
2412     g_transaction_accounts.array_line_num(l_Idx)        := l_Idx ;
2413     g_transaction_accounts.array_ae_header_id(l_Idx)    := g_rec_lines.array_ae_header_id(g_LineNumber);
2414     g_transaction_accounts.array_temp_line_num(l_Idx)        := g_rec_lines.array_line_num(g_LineNumber);
2415     g_transaction_accounts.array_code_combination_id(l_Idx)    := p_from_combination_id;
2416     g_transaction_accounts.array_segment (l_Idx)               := NULL;
2417     g_transaction_accounts.array_from_segment_code (l_Idx)     := l_from_segment_code;
2418     g_transaction_accounts.array_to_segment_code (l_Idx)       := l_to_segment_code;
2419     g_transaction_accounts.array_processing_status_code(l_Idx) := C_MAP_SEGMENT;
2420     g_transaction_accounts.array_side_code(l_Idx)              := p_side;
2421 
2422     l_accounting_values := FALSE;
2423 
2424    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2425        trace
2426          (p_msg      => ' get seg '||l_from_segment_code||'from ccid  = '||p_from_combination_id
2427          ,p_level    => C_LEVEL_PROCEDURE
2428          ,p_module   => l_log_module);
2429     END IF;
2430 
2431 ELSIF ( XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.target_coa_id =
2432     XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.source_coa_id )     AND
2433 --    p_accounting_coa_id                                   IS NOT NULL AND -- bug 4304098
2434     p_value_type_code ='S'                                            AND
2435     p_from_combination_id                                IS NOT NULL THEN
2436 
2437     -- primary ledger
2438     l_segment_value := xla_ae_code_combination_pkg.get_flex_segment_value(
2439            p_combination_id         => p_from_combination_id
2440           ,p_segment_code           => l_from_segment_code
2441           ,p_id_flex_code           => 'GL#'
2442           ,p_flex_application_id    => 101
2443           ,p_application_short_name => 'SQLGL'
2444           ,p_component_type         => p_component_type
2445           ,p_component_code         => p_component_code
2446           ,p_component_type_code    => p_component_type_code
2447           ,p_component_appl_id      => p_component_appl_id
2448           ,p_amb_context_code       => p_amb_context_code
2449           ,p_entity_code            => p_entity_code
2450           ,p_event_class_code       => p_event_class_code
2451           ,p_ae_header_id           => NULL
2452            );
2453 
2454    l_accounting_values := TRUE;
2455 
2456 END IF;
2457 
2458 IF l_accounting_values THEN
2459 
2460 IF p_side = 'CREDIT' or p_side = 'ALL' or p_side = 'NA' OR p_side is null THEN
2461 
2462  CASE NVL(g_rec_lines.array_ccid_flag(g_LineNumber),C_INVALID)
2463    WHEN C_CREATED       THEN g_rec_lines.array_ccid_flag(g_LineNumber)   := C_NOT_PROCESSED;
2464    WHEN C_INVALID       THEN
2465          IF g_rec_lines.array_ccid(g_LineNumber) IS NULL THEN
2466               g_rec_lines.array_ccid_flag(g_LineNumber)   := C_PROCESSING;
2467          END IF;
2468    ELSE null;
2469   END CASE;
2470 
2471  CASE  l_to_segment_code
2472   WHEN  'SEGMENT1'   THEN g_rec_lines.array_segment1(g_LineNumber)  := l_segment_value;
2473   WHEN  'SEGMENT2'   THEN g_rec_lines.array_segment2(g_LineNumber)  := l_segment_value;
2474   WHEN  'SEGMENT3'   THEN g_rec_lines.array_segment3(g_LineNumber)  := l_segment_value;
2475   WHEN  'SEGMENT4'   THEN g_rec_lines.array_segment4(g_LineNumber)  := l_segment_value;
2476   WHEN  'SEGMENT5'   THEN g_rec_lines.array_segment5(g_LineNumber)  := l_segment_value;
2477   WHEN  'SEGMENT6'   THEN g_rec_lines.array_segment6(g_LineNumber)  := l_segment_value;
2478   WHEN  'SEGMENT7'   THEN g_rec_lines.array_segment7(g_LineNumber)  := l_segment_value;
2479   WHEN  'SEGMENT8'   THEN g_rec_lines.array_segment8(g_LineNumber)  := l_segment_value;
2480   WHEN  'SEGMENT9'   THEN g_rec_lines.array_segment9(g_LineNumber)  := l_segment_value;
2481   WHEN  'SEGMENT10'  THEN g_rec_lines.array_segment10(g_LineNumber) := l_segment_value;
2482   WHEN  'SEGMENT11'  THEN g_rec_lines.array_segment11(g_LineNumber) := l_segment_value;
2483   WHEN  'SEGMENT12'  THEN g_rec_lines.array_segment12(g_LineNumber) := l_segment_value;
2484   WHEN  'SEGMENT13'  THEN g_rec_lines.array_segment13(g_LineNumber) := l_segment_value;
2485   WHEN  'SEGMENT14'  THEN g_rec_lines.array_segment14(g_LineNumber) := l_segment_value;
2486   WHEN  'SEGMENT15'  THEN g_rec_lines.array_segment15(g_LineNumber) := l_segment_value;
2487   WHEN  'SEGMENT16'  THEN g_rec_lines.array_segment16(g_LineNumber) := l_segment_value;
2488   WHEN  'SEGMENT17'  THEN g_rec_lines.array_segment17(g_LineNumber) := l_segment_value;
2489   WHEN  'SEGMENT18'  THEN g_rec_lines.array_segment18(g_LineNumber) := l_segment_value;
2490   WHEN  'SEGMENT19'  THEN g_rec_lines.array_segment19(g_LineNumber) := l_segment_value;
2491   WHEN  'SEGMENT20'  THEN g_rec_lines.array_segment20(g_LineNumber) := l_segment_value;
2492   WHEN  'SEGMENT21'  THEN g_rec_lines.array_segment21(g_LineNumber) := l_segment_value;
2493   WHEN  'SEGMENT22'  THEN g_rec_lines.array_segment22(g_LineNumber) := l_segment_value;
2494   WHEN  'SEGMENT23'  THEN g_rec_lines.array_segment23(g_LineNumber) := l_segment_value;
2495   WHEN  'SEGMENT24'  THEN g_rec_lines.array_segment24(g_LineNumber) := l_segment_value;
2496   WHEN  'SEGMENT25'  THEN g_rec_lines.array_segment25(g_LineNumber) := l_segment_value;
2497   WHEN  'SEGMENT26'  THEN g_rec_lines.array_segment26(g_LineNumber) := l_segment_value;
2498   WHEN  'SEGMENT27'  THEN g_rec_lines.array_segment27(g_LineNumber) := l_segment_value;
2499   WHEN  'SEGMENT28'  THEN g_rec_lines.array_segment28(g_LineNumber) := l_segment_value;
2500   WHEN  'SEGMENT29'  THEN g_rec_lines.array_segment29(g_LineNumber) := l_segment_value;
2501   WHEN  'SEGMENT30'  THEN g_rec_lines.array_segment30(g_LineNumber) := l_segment_value;
2502   ELSE
2503      RAISE invalid_segment_code;
2504  END CASE;
2505 
2506 END IF;
2507 
2508 IF p_side = 'DEBIT' or p_side = 'ALL' THEN
2509 
2510  CASE NVL(g_rec_lines.alt_array_ccid_flag(g_LineNumber),C_INVALID)
2511    WHEN C_CREATED       THEN g_rec_lines.alt_array_ccid_flag(g_LineNumber)   := C_NOT_PROCESSED;
2512    WHEN C_INVALID       THEN
2513          IF g_rec_lines.alt_array_ccid(g_LineNumber) IS NULL THEN
2514               g_rec_lines.alt_array_ccid_flag(g_LineNumber)   := C_PROCESSING;
2515          END IF;
2516    ELSE null;
2517   END CASE;
2518 
2519  CASE  l_to_segment_code
2520   WHEN  'SEGMENT1'   THEN g_rec_lines.alt_array_segment1(g_LineNumber)  := l_segment_value;
2521   WHEN  'SEGMENT2'   THEN g_rec_lines.alt_array_segment2(g_LineNumber)  := l_segment_value;
2522   WHEN  'SEGMENT3'   THEN g_rec_lines.alt_array_segment3(g_LineNumber)  := l_segment_value;
2523   WHEN  'SEGMENT4'   THEN g_rec_lines.alt_array_segment4(g_LineNumber)  := l_segment_value;
2524   WHEN  'SEGMENT5'   THEN g_rec_lines.alt_array_segment5(g_LineNumber)  := l_segment_value;
2525   WHEN  'SEGMENT6'   THEN g_rec_lines.alt_array_segment6(g_LineNumber)  := l_segment_value;
2526   WHEN  'SEGMENT7'   THEN g_rec_lines.alt_array_segment7(g_LineNumber)  := l_segment_value;
2527   WHEN  'SEGMENT8'   THEN g_rec_lines.alt_array_segment8(g_LineNumber)  := l_segment_value;
2528   WHEN  'SEGMENT9'   THEN g_rec_lines.alt_array_segment9(g_LineNumber)  := l_segment_value;
2529   WHEN  'SEGMENT10'  THEN g_rec_lines.alt_array_segment10(g_LineNumber) := l_segment_value;
2530   WHEN  'SEGMENT11'  THEN g_rec_lines.alt_array_segment11(g_LineNumber) := l_segment_value;
2531   WHEN  'SEGMENT12'  THEN g_rec_lines.alt_array_segment12(g_LineNumber) := l_segment_value;
2532   WHEN  'SEGMENT13'  THEN g_rec_lines.alt_array_segment13(g_LineNumber) := l_segment_value;
2533   WHEN  'SEGMENT14'  THEN g_rec_lines.alt_array_segment14(g_LineNumber) := l_segment_value;
2534   WHEN  'SEGMENT15'  THEN g_rec_lines.alt_array_segment15(g_LineNumber) := l_segment_value;
2535   WHEN  'SEGMENT16'  THEN g_rec_lines.alt_array_segment16(g_LineNumber) := l_segment_value;
2536   WHEN  'SEGMENT17'  THEN g_rec_lines.alt_array_segment17(g_LineNumber) := l_segment_value;
2537   WHEN  'SEGMENT18'  THEN g_rec_lines.alt_array_segment18(g_LineNumber) := l_segment_value;
2538   WHEN  'SEGMENT19'  THEN g_rec_lines.alt_array_segment19(g_LineNumber) := l_segment_value;
2539   WHEN  'SEGMENT20'  THEN g_rec_lines.alt_array_segment20(g_LineNumber) := l_segment_value;
2540   WHEN  'SEGMENT21'  THEN g_rec_lines.alt_array_segment21(g_LineNumber) := l_segment_value;
2541   WHEN  'SEGMENT22'  THEN g_rec_lines.alt_array_segment22(g_LineNumber) := l_segment_value;
2542   WHEN  'SEGMENT23'  THEN g_rec_lines.alt_array_segment23(g_LineNumber) := l_segment_value;
2543   WHEN  'SEGMENT24'  THEN g_rec_lines.alt_array_segment24(g_LineNumber) := l_segment_value;
2544   WHEN  'SEGMENT25'  THEN g_rec_lines.alt_array_segment25(g_LineNumber) := l_segment_value;
2545   WHEN  'SEGMENT26'  THEN g_rec_lines.alt_array_segment26(g_LineNumber) := l_segment_value;
2546   WHEN  'SEGMENT27'  THEN g_rec_lines.alt_array_segment27(g_LineNumber) := l_segment_value;
2547   WHEN  'SEGMENT28'  THEN g_rec_lines.alt_array_segment28(g_LineNumber) := l_segment_value;
2548   WHEN  'SEGMENT29'  THEN g_rec_lines.alt_array_segment29(g_LineNumber) := l_segment_value;
2549   WHEN  'SEGMENT30'  THEN g_rec_lines.alt_array_segment30(g_LineNumber) := l_segment_value;
2550   ELSE
2551       RAISE invalid_segment_code;
2552  END CASE;
2553 
2554 END IF;
2555 
2556     IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2557        trace
2558          (p_msg      => ' Accounting seg = '||l_segment_value
2559          ,p_level    => C_LEVEL_PROCEDURE
2560          ,p_module   => l_log_module);
2561     END IF;
2562 
2563 END IF;
2564 
2565 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2566      trace
2567          (p_msg      => 'l_to_segment_code = '||l_to_segment_code ||
2568                         ', l_segment_value   = '||l_segment_value
2569          ,p_level    => C_LEVEL_PROCEDURE
2570          ,p_module   => l_log_module);
2571 END IF;
2572 
2573 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2574       trace
2575          (p_msg      => 'END of set_segment'
2576          ,p_level    => C_LEVEL_PROCEDURE
2577          ,p_module   => l_log_module);
2578 END IF;
2579 EXCEPTION
2580 WHEN no_sl_coa_mapping THEN
2581 
2582   CASE p_side
2583    WHEN 'ALL' THEN
2584       g_rec_lines.array_ccid(g_LineNumber)     := -1;
2585       g_rec_lines.alt_array_ccid(g_LineNumber) := -1;
2586       g_rec_lines.array_ccid_flag(g_LineNumber)    := C_INVALID;
2587       g_rec_lines.alt_array_ccid_flag(g_LineNumber):= C_INVALID;
2588    WHEN 'NA'     THEN
2589       g_rec_lines.array_ccid(g_LineNumber) := -1;
2590       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2591    WHEN 'CREDIT' THEN
2592       g_rec_lines.array_ccid(g_LineNumber) := -1;
2593       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2594    WHEN 'DEBIT'  THEN
2595       g_rec_lines.alt_array_ccid(g_LineNumber) := -1;
2596       g_rec_lines.alt_array_ccid_flag(g_LineNumber):= C_INVALID;
2597    ELSE
2598       g_rec_lines.array_ccid(g_LineNumber) := -1;
2599       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2600   END CASE;
2601 
2602   XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
2603 
2604   xla_accounting_err_pkg.build_message
2605                  (p_appli_s_name            => 'XLA'
2606                  ,p_msg_name                => 'XLA_AP_NO_SL_COA_MAPPING'
2607                  ,p_token_1                 => 'SEGMENT_RULE_NAME'
2608                  ,p_value_1                 => XLA_AE_SOURCES_PKG.GetComponentName (
2609                                                                  'AMB_ADR'
2610                                                                 ,p_adr_code
2611                                                                 ,p_adr_type_code
2612                                                                 ,p_component_appl_id
2613                                                                 ,p_amb_context_code
2614                                                                )
2615                  ,p_token_2                 => 'OWNER'
2616                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2617                                                                  'XLA_OWNER_TYPE'
2618                                                                 ,p_adr_type_code
2619                                                                 )
2620                  ,p_token_3                 => 'LEDGER_NAME'
2621                  ,p_value_3                 => xla_accounting_cache_pkg.GetValueChar
2622                                              (
2623                                              p_source_code => 'XLA_LEDGER_NAME'
2624                                            , p_target_ledger_id  =>
2625                                              XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2626                                              )
2627                  ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2628                  ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2629                  ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2630                  ,p_ae_header_id            => NULL
2631                 );
2632 
2633   IF (C_LEVEL_ERROR >= g_log_level) THEN
2634              trace
2635                   (p_msg      => 'ERROR: XLA_AP_NO_SL_COA_MAPPING'
2636                   ,p_level    => C_LEVEL_ERROR
2637                   ,p_module   => l_log_module);
2638   END IF;
2639 
2640 WHEN invalid_segment_code THEN
2641 
2642    CASE p_side
2643    WHEN 'ALL' THEN
2644       g_rec_lines.array_ccid(g_LineNumber)     := -1;
2645       g_rec_lines.alt_array_ccid(g_LineNumber) := -1;
2646       g_rec_lines.array_ccid_flag(g_LineNumber)    := C_INVALID;
2647       g_rec_lines.alt_array_ccid_flag(g_LineNumber):= C_INVALID;
2648    WHEN 'NA'     THEN
2649       g_rec_lines.array_ccid(g_LineNumber) := -1;
2650       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2651    WHEN 'CREDIT' THEN
2652       g_rec_lines.array_ccid(g_LineNumber) := -1;
2653       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2654    WHEN 'DEBIT'  THEN
2655       g_rec_lines.alt_array_ccid(g_LineNumber) := -1;
2656       g_rec_lines.alt_array_ccid_flag(g_LineNumber):= C_INVALID;
2657    ELSE
2658       g_rec_lines.array_ccid(g_LineNumber) := -1;
2659       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2660    END CASE;
2661 
2662    XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
2663 
2664    l_coa_name := xla_accounting_cache_pkg.GetValueChar
2665      (
2666       p_source_code       => 'XLA_COA_NAME'
2667     , p_target_ledger_id  => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2668      );
2669 
2670    xla_accounting_err_pkg.build_message
2671                       (p_appli_s_name            => 'XLA'
2672                       ,p_msg_name                => 'XLA_AP_INVALID_SEGMENT'
2673                       ,p_token_1                 => 'COMPONENT_TYPE'
2674                       ,p_value_1                 => xla_lookups_pkg.get_meaning(
2675                                                             'XLA_AMB_COMPONENT_TYPE'
2676                                                            , p_component_type
2677                                                             )
2678                       ,p_token_2                 => 'COMPONENT_NAME'
2679                       ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
2680                                                                  p_component_type
2681                                                                 ,p_component_code
2682                                                                 ,p_component_type_code
2683                                                                 ,p_component_appl_id
2684                                                                 ,p_amb_context_code
2685                                                                 ,p_entity_code
2686                                                                 ,p_event_class_code
2687                                                                )
2688                       ,p_token_3                 => 'OWNER'
2689                       ,p_value_3                 => xla_lookups_pkg.get_meaning(
2690                                                                  'XLA_OWNER_TYPE'
2691                                                                 ,p_component_type_code
2692                                                                 )
2693                       ,p_token_4                 => 'QUALIFIER_NAME'
2694                       ,p_value_4                 => xla_lookups_pkg.get_meaning(
2695                                                         p_lookup_type    => 'XLA_FLEXFIELD_SEGMENTS_QUAL'
2696                                                       , p_lookup_code    => p_to_segment_code
2697                                                       )
2698                       ,p_token_5                 => 'ACCOUNTING_COA'
2699                       ,p_value_5                 => l_coa_name
2700                       ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2701                       ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2702                       ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2703                       ,p_ae_header_id            => NULL -- p_ae_header_id
2704                 );
2705 
2706      IF (C_LEVEL_ERROR >= g_log_level) THEN
2707              trace
2708                   (p_msg      => 'ERROR: XLA_AP_INVALID_SEGMENT'
2709                   ,p_level    => C_LEVEL_ERROR
2710                   ,p_module   => l_log_module);
2711      END IF;
2712 
2713 WHEN null_segment_value THEN
2714 
2715    CASE p_side
2716    WHEN 'ALL' THEN
2717       g_rec_lines.array_ccid(g_LineNumber)     := -1;
2718       g_rec_lines.alt_array_ccid(g_LineNumber) := -1;
2719       g_rec_lines.array_ccid_flag(g_LineNumber)    := C_INVALID;
2720       g_rec_lines.alt_array_ccid_flag(g_LineNumber):= C_INVALID;
2721    WHEN 'NA'     THEN
2722       g_rec_lines.array_ccid(g_LineNumber) := -1;
2723       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2724    WHEN 'CREDIT' THEN
2725       g_rec_lines.array_ccid(g_LineNumber) := -1;
2726       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2727    WHEN 'DEBIT'  THEN
2728       g_rec_lines.alt_array_ccid(g_LineNumber) := -1;
2729       g_rec_lines.alt_array_ccid_flag(g_LineNumber):= C_INVALID;
2730    ELSE
2731       g_rec_lines.array_ccid(g_LineNumber) := -1;
2732       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2733    END CASE;
2734 
2735    XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
2736 
2737    xla_accounting_err_pkg.build_message
2738                       (p_appli_s_name            => 'XLA'
2739                       ,p_msg_name                => 'XLA_AP_NULL_SEGMENT_VALUE'
2740                       ,p_token_1                 => 'SEGMENT_RULE_NAME'
2741                       ,p_value_1                 => XLA_AE_SOURCES_PKG.GetComponentName (
2742                                                                  'AMB_ADR'
2743                                                                 ,p_adr_code
2744                                                                 ,p_adr_type_code
2745                                                                 ,p_component_appl_id
2746                                                                 ,p_amb_context_code
2747                                                                )
2748                       ,p_token_2                 => 'OWNER'
2749                       ,p_value_2                 => xla_lookups_pkg.get_meaning(
2750                                                                  'XLA_OWNER_TYPE'
2751                                                                 ,p_adr_type_code
2752                                                                 )
2753                       ,p_token_3                 => 'QUALIFIER_NAME'
2754                       ,p_value_3                 => xla_lookups_pkg.get_meaning(
2755                                                         p_lookup_type    => 'XLA_FLEXFIELD_SEGMENTS_QUAL'
2756                                                       , p_lookup_code    => p_flexfield_segment_code
2757                                                       )
2758                       ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2759                       ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2760                       ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2761                       ,p_ae_header_id            => NULL -- p_ae_header_id
2762                 );
2763 
2764      IF (C_LEVEL_ERROR >= g_log_level) THEN
2765              trace
2766                   (p_msg      => 'ERROR: XLA_AP_NULL_SEGMENT_VALUE'
2767                   ,p_level    => C_LEVEL_ERROR
2768                   ,p_module   => l_log_module);
2769      END IF;
2770 
2771 WHEN invalid_segment_qualifier THEN
2772 
2773    CASE p_side
2774    WHEN 'ALL' THEN
2775       g_rec_lines.array_ccid(g_LineNumber)     := -1;
2776       g_rec_lines.alt_array_ccid(g_LineNumber) := -1;
2777       g_rec_lines.array_ccid_flag(g_LineNumber)    := C_INVALID;
2778       g_rec_lines.alt_array_ccid_flag(g_LineNumber):= C_INVALID;
2779    WHEN 'NA'     THEN
2780       g_rec_lines.array_ccid(g_LineNumber) := -1;
2781       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2782    WHEN 'CREDIT' THEN
2783       g_rec_lines.array_ccid(g_LineNumber) := -1;
2784       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2785    WHEN 'DEBIT'  THEN
2786       g_rec_lines.alt_array_ccid(g_LineNumber) := -1;
2787       g_rec_lines.alt_array_ccid_flag(g_LineNumber):= C_INVALID;
2788    ELSE
2789       g_rec_lines.array_ccid(g_LineNumber) := -1;
2790       g_rec_lines.array_ccid_flag(g_LineNumber) := C_INVALID;
2791    END CASE;
2792 
2793    XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
2794 
2795    l_coa_name := xla_accounting_cache_pkg.GetValueChar
2796      (
2797       p_source_code       => 'XLA_COA_NAME'
2798     , p_target_ledger_id  => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2799      );
2800 
2801    xla_accounting_err_pkg.build_message
2802                       (p_appli_s_name            => 'XLA'
2803                       ,p_msg_name                => 'XLA_AP_INV_SEGMENT_QUAL'
2804                       ,p_token_1                 => 'SEGMENT_RULE_NAME'
2805                       ,p_value_1                 => XLA_AE_SOURCES_PKG.GetComponentName (
2806                                                                  'AMB_ADR'
2807                                                                 ,p_adr_code
2808                                                                 ,p_adr_type_code
2809                                                                 ,p_component_appl_id
2810                                                                 ,p_amb_context_code
2811                                                                )
2812                       ,p_token_2                 => 'OWNER'
2813                       ,p_value_2                 => xla_lookups_pkg.get_meaning(
2814                                                                  'XLA_OWNER_TYPE'
2815                                                                 ,p_adr_type_code
2816                                                                 )
2817 
2818                       ,p_token_3                 => 'QUALIFIER_NAME'
2819                       ,p_value_3                 => xla_lookups_pkg.get_meaning(
2820                                                         p_lookup_type    => 'XLA_FLEXFIELD_SEGMENTS_QUAL'
2821                                                       , p_lookup_code    => p_flexfield_segment_code
2822                                                       )
2823                       ,p_token_4                 => 'ACCOUNTING_COA'
2824                       ,p_value_4                 => l_coa_name
2825                       ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2826                       ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2827                       ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2828                       ,p_ae_header_id            => NULL -- p_ae_header_id
2829                 );
2830 
2831      IF (C_LEVEL_ERROR >= g_log_level) THEN
2832              trace
2833                   (p_msg      => 'ERROR: XLA_AP_INV_SEGMENT_QUAL'
2834                   ,p_level    => C_LEVEL_ERROR
2835                   ,p_module   => l_log_module);
2836      END IF;
2837 WHEN xla_exceptions_pkg.application_exception THEN
2838   IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2839        trace
2840            (p_msg      => 'Error. = '||sqlerrm
2841            ,p_level    => C_LEVEL_PROCEDURE
2842            ,p_module   => l_log_module);
2843   END IF;
2844   RAISE;
2845 WHEN OTHERS  THEN
2846   IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2847        trace
2848            (p_msg      => 'Error. = '||sqlerrm
2849            ,p_level    => C_LEVEL_PROCEDURE
2850            ,p_module   => l_log_module);
2851   END IF;
2852   xla_exceptions_pkg.raise_message
2853            (p_location => 'XLA_AE_LINES_PKG.set_segment');
2854 END set_segment;
2855 
2856 --
2857 /*======================================================================+
2858 |                                                                       |
2859 | Public Procedure                                                      |
2860 |   ValidateCurrentLine                                                 |
2861 |                                                                       |
2862 +======================================================================*/
2863 PROCEDURE ValidateCurrentLine
2864 IS
2865 l_log_module         VARCHAR2(240);
2866 BEGIN
2867 IF g_log_enabled THEN
2868       l_log_module := C_DEFAULT_MODULE||'.ValidateCurrentLine';
2869 END IF;
2870 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2871       trace
2872          (p_msg      => 'BEGIN of ValidateCurrentLine'
2873          ,p_level    => C_LEVEL_PROCEDURE
2874          ,p_module   => l_log_module);
2875 
2876 END IF;
2877 
2878 IF nvl(g_LineNumber,0) > 0 THEN
2879 
2880      -----------------------------------------------------------
2881      -- 4219869 Business Flow
2882      -- Call is moved to XLA_CMP_ACCT_LINE_TYPE_PKG.C_ALT_BODY
2883      -----------------------------------------------------------
2884      -- SetDebitCreditAmounts(p_ae_header_id => p_ae_header_id);
2885      -----------------------------------------------------------
2886 
2887      ValidateLinks;
2888 
2889 END IF;
2890 
2891 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2892       trace
2893          (p_msg      => 'END of ValidateCurrentLine = '||g_LineNumber
2894          ,p_level    => C_LEVEL_PROCEDURE
2895          ,p_module   => l_log_module);
2896 
2897 END IF;
2898 EXCEPTION
2899 WHEN xla_exceptions_pkg.application_exception THEN
2900   RAISE;
2901 WHEN OTHERS  THEN
2902    xla_exceptions_pkg.raise_message
2903            (p_location => 'XLA_AE_LINES_PKG.ValidateCurrentLine');
2904   --
2905 END ValidateCurrentLine;
2906 --
2907 /*======================================================================+
2908 |                                                                       |
2909 | Public Procedure                                                      |
2910 |                                                                       |
2911 |                                                                       |
2912 +======================================================================*/
2913 PROCEDURE SetAcctClass(p_accounting_class_code      IN VARCHAR2
2914                       ,p_ae_header_id               IN NUMBER)
2915 IS
2916 l_log_module         VARCHAR2(240);
2917 BEGIN
2918 IF g_log_enabled THEN
2919       l_log_module := C_DEFAULT_MODULE||'.SetAcctClass';
2920 END IF;
2921 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2922       trace
2923          (p_msg      => 'BEGIN of SetAcctClass'
2924          ,p_level    => C_LEVEL_PROCEDURE
2925          ,p_module   => l_log_module);
2926 
2927       trace
2928          (p_msg      => 'p_accounting_class_code = '||p_accounting_class_code
2929          ,p_level    => C_LEVEL_PROCEDURE
2930          ,p_module   => l_log_module);
2931 END IF;
2932 
2933   g_rec_lines.array_accounting_class(g_LineNumber) := p_accounting_class_code;
2934 
2935 
2936 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2937       trace
2938          (p_msg      => 'END of SetAcctClass'
2939          ,p_level    => C_LEVEL_PROCEDURE
2940          ,p_module   => l_log_module);
2941 END IF;
2942 EXCEPTION
2943 WHEN xla_exceptions_pkg.application_exception THEN
2944    XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
2945    RAISE;
2946 WHEN OTHERS  THEN
2947    xla_exceptions_pkg.raise_message
2948            (p_location => 'XLA_AE_LINES_PKG.SetAcctClass');
2949 END SetAcctClass;
2950 --
2951 
2952 /*======================================================================+
2953 |                                                                       |
2954 | Public Function                                                       |
2955 |                                                                       |
2956 |   SetAnalyticalCriteria                                               |
2957 |                                                                       |
2958 +======================================================================*/
2959 --
2960 FUNCTION SetAnalyticalCriteria(
2961    p_analytical_criterion_name    IN VARCHAR2
2962  , p_analytical_criterion_owner   IN VARCHAR2
2963  , p_analytical_criterion_code    IN VARCHAR2
2964  , p_amb_context_code             IN VARCHAR2
2965  , p_balancing_flag               IN VARCHAR2
2966  , p_analytical_detail_char_1     IN VARCHAR2
2967  , p_analytical_detail_num_1      IN NUMBER
2968  , p_analytical_detail_date_1     IN DATE
2969  , p_analytical_detail_char_2     IN VARCHAR2
2970  , p_analytical_detail_num_2      IN NUMBER
2971  , p_analytical_detail_date_2     IN DATE
2972  , p_analytical_detail_char_3     IN VARCHAR2
2973  , p_analytical_detail_num_3      IN NUMBER
2974  , p_analytical_detail_date_3     IN DATE
2975  , p_analytical_detail_char_4     IN VARCHAR2
2976  , p_analytical_detail_num_4      IN NUMBER
2977  , p_analytical_detail_date_4     IN DATE
2978  , p_analytical_detail_char_5     IN VARCHAR2
2979  , p_analytical_detail_num_5      IN NUMBER
2980  , p_analytical_detail_date_5     IN DATE
2981  , p_ae_header_id                 IN NUMBER
2982 )
2983 RETURN VARCHAR2
2984 IS
2985 l_analytical_criteria  VARCHAR2(240);
2986 l_log_module           VARCHAR2(240);
2987 BEGIN
2988 --
2989 IF g_log_enabled THEN
2990       l_log_module := C_DEFAULT_MODULE||'.SetAnalyticalCriteria';
2991 END IF;
2992 --
2993 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2994       trace
2995          (p_msg      => 'BEGIN of SetAnalyticalCriteria'
2996          ,p_level    => C_LEVEL_PROCEDURE
2997          ,p_module   => l_log_module);
2998 
2999       trace
3000           (p_msg      => '-> CALL XLA_ANALYTICAL_CRITERIA_PKG.concat_detail_values API'
3001          ,p_level    => C_LEVEL_PROCEDURE
3002          ,p_module   => l_log_module);
3003 
3004 END IF;
3005 
3006  l_analytical_criteria :=  XLA_ANALYTICAL_CRITERIA_PKG.concat_detail_values
3007                 ( p_anacri_code              => p_analytical_criterion_code
3008                  ,p_anacri_type_code         => p_analytical_criterion_owner
3009                  ,p_amb_context_code         => p_amb_context_code
3010                  ,p_detail_char_1            => p_analytical_detail_char_1
3011                  ,p_detail_date_1            => p_analytical_detail_date_1
3012                  ,p_detail_number_1          => p_analytical_detail_num_1
3013                  ,p_detail_char_2            => p_analytical_detail_char_2
3014                  ,p_detail_date_2            => p_analytical_detail_date_2
3015                  ,p_detail_number_2          => p_analytical_detail_num_2
3016                  ,p_detail_char_3            => p_analytical_detail_char_3
3017                  ,p_detail_date_3            => p_analytical_detail_date_3
3018                  ,p_detail_number_3          => p_analytical_detail_num_3
3019                  ,p_detail_char_4            => p_analytical_detail_char_4
3020                  ,p_detail_date_4            => p_analytical_detail_date_4
3021                  ,p_detail_number_4          => p_analytical_detail_num_4
3022                  ,p_detail_char_5            => p_analytical_detail_char_5
3023                  ,p_detail_date_5            => p_analytical_detail_date_5
3024                  ,p_detail_number_5          => p_analytical_detail_num_5
3025                 );
3026 IF g_rec_lines.array_anc_balance_flag(g_LineNumber) IS NULL AND
3027     nvl(p_balancing_flag,'N') = 'Y'
3028 THEN
3029     g_rec_lines.array_anc_balance_flag(g_LineNumber) := 'P';
3030 END IF;
3031 
3032 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3033 
3034       trace
3035          (p_msg      => 'return value. = '||TO_CHAR(l_analytical_criteria)
3036          ,p_level    => C_LEVEL_PROCEDURE
3037          ,p_module   => l_log_module);
3038 
3039       trace
3040          (p_msg      => 'END of SetAnalyticalCriteria'
3041          ,p_level    => C_LEVEL_PROCEDURE
3042          ,p_module   => l_log_module);
3043 
3044 END IF;
3045 RETURN l_analytical_criteria;
3046 EXCEPTION
3047 WHEN xla_exceptions_pkg.application_exception THEN
3048  XLA_AE_JOURNAL_ENTRY_PKG.g_global_status :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
3049  RAISE;
3050 WHEN OTHERS  THEN
3051    xla_exceptions_pkg.raise_message
3052            (p_location => 'XLA_AE_LINES_PKG.SetAnalyticalCriteria');
3053   --
3054 END SetAnalyticalCriteria;
3055 
3056 
3057 --
3058 /*======================================================================+
3059 |                                                                       |
3060 | Public Procedure                                                      |
3061 |                                                                       |
3062 |                                                                       |
3063 +======================================================================*/
3064 FUNCTION InsertLines
3065 RETURN BOOLEAN
3066 IS
3067 l_result                   BOOLEAN;
3068 l_ledger_currency          VARCHAR2(30);
3069 l_ledger_category_code     VARCHAR2(30);
3070 l_rowcount                 NUMBER;
3071 l_null_trans_accounts t_rec_transaction_accounts;
3072 l_log_module               VARCHAR2(240);
3073 errors                     NUMBER; -- 7453943
3074 ERR_IND                    NUMBER; -- 7453943
3075 ERR_CODE                   VARCHAR2(100); -- 7453943
3076 dml_errors                 EXCEPTION; -- 7453943
3077 PRAGMA exception_init(dml_errors, -24381); -- 7453943
3078 BEGIN
3079 IF g_log_enabled THEN
3080       l_log_module := C_DEFAULT_MODULE||'.InsertLines';
3081 END IF;
3082 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3083       trace
3084          (p_msg      => 'BEGIN of InsertLines'
3085          ,p_level    => C_LEVEL_PROCEDURE
3086          ,p_module   => l_log_module);
3087 END IF;
3088 
3089 l_result   :=TRUE;
3090 
3091 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3092  trace
3093   (p_msg      => '# temporary journal lines to insert into GT xla_ae_lines_gt = '||g_rec_lines.array_line_num.COUNT
3094   ,p_level    => C_LEVEL_STATEMENT
3095   ,p_module   => l_log_module);
3096 END IF;
3097 
3098 --
3099 -- Bug 4458708
3100 --
3101 IF g_rec_lines.array_line_num.COUNT > 0 THEN
3102 
3103   l_result   := FALSE;
3104   l_rowcount := 0;
3105 
3106   --cache accounting COA
3107   xla_ae_code_combination_pkg.cache_coa
3108        (p_coa_id     => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.target_coa_id
3109        ,p_target_coa => 'Y');
3110 
3111   --get the ledger currency
3112   -- when this fuction is called, all the lines are always for one ledger
3113 
3114   l_ledger_currency := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.currency_code;
3115   l_ledger_category_code:= XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code;
3116 
3117   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3118       trace
3119          (p_msg      => 'ledger_currency:'||l_ledger_currency||' category_coe:'||l_ledger_category_code
3120          ,p_level    => C_LEVEL_STATEMENT
3121          ,p_module   => l_log_module);
3122   END IF;
3123 
3124   IF l_ledger_category_code = 'ALC' THEN
3125     IF (xla_accounting_cache_pkg.GetValueChar('XLA_ALC_ENABLED_FLAG')='N') THEN
3126       l_ledger_category_code :='PRIMARY';
3127     END IF;
3128   END IF;
3129 
3130   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3131       trace
3132          (p_msg      => 'SQL - Insert into xla_ae_lines_gt'
3133          ,p_level    => C_LEVEL_STATEMENT
3134          ,p_module   => l_log_module);
3135   END IF;
3136 
3137   ------------------------------------------------------------------------------------------------------
3138 
3139   FORALL Idx IN g_rec_lines.array_line_num.FIRST .. g_rec_lines.array_line_num.LAST SAVE EXCEPTIONS --7453943
3140    INSERT INTO xla_ae_lines_gt
3141          ( ae_header_id
3142          , temp_line_num
3143          , extract_line_num
3144          , event_id
3145          , ref_ae_header_id
3146          --
3147          , accounting_date        --4955764
3148          , accounting_class_code
3149          , rounding_class_code
3150          , event_class_code
3151          , event_type_code
3152          , line_definition_owner_code
3153          , line_definition_code
3154          , accounting_line_type_code
3155          , accounting_line_code
3156          , document_rounding_level
3157          , gain_or_loss_ref
3158          --
3159          , calculate_acctd_amts_flag
3160          , calculate_g_l_amts_flag
3161          , gain_or_loss_flag
3162          --
3163          , code_combination_status_code
3164          , code_combination_id
3165          , sl_coa_mapping_name
3166          , sl_coa_mapping_id
3167          , dynamic_insert_flag
3168          , source_coa_id
3169          , ccid_coa_id
3170          , segment1
3171          , segment2
3172          , segment3
3173          , segment4
3174          , segment5
3175          , segment6
3176          , segment7
3177          , segment8
3178          , segment9
3179          , segment10
3180          , segment11
3181          , segment12
3182          , segment13
3183          , segment14
3184          , segment15
3185          , segment16
3186          , segment17
3187          , segment18
3188          , segment19
3189          , segment20
3190          , segment21
3191          , segment22
3192          , segment23
3193          , segment24
3194          , segment25
3195          , segment26
3196          , segment27
3197          , segment28
3198          , segment29
3199          , segment30
3200          --
3201          , alt_ccid_status_code
3202          , alt_code_combination_id
3203          , alt_segment1
3204          , alt_segment2
3205          , alt_segment3
3206          , alt_segment4
3207          , alt_segment5
3208          , alt_segment6
3209          , alt_segment7
3210          , alt_segment8
3211          , alt_segment9
3212          , alt_segment10
3213          , alt_segment11
3214          , alt_segment12
3215          , alt_segment13
3216          , alt_segment14
3217          , alt_segment15
3218          , alt_segment16
3219          , alt_segment17
3220          , alt_segment18
3221          , alt_segment19
3222          , alt_segment20
3223          , alt_segment21
3224          , alt_segment22
3225          , alt_segment23
3226          , alt_segment24
3227          , alt_segment25
3228          , alt_segment26
3229          , alt_segment27
3230          , alt_segment28
3231          , alt_segment29
3232          , alt_segment30
3233          --
3234          , description
3235          , gl_transfer_mode_code
3236          , merge_duplicate_code
3237          , switch_side_flag
3238          --
3239          , entered_amount
3240          , ledger_amount
3241          , unrounded_entered_dr
3242          , unrounded_entered_cr
3243          , unrounded_accounted_dr
3244          , unrounded_accounted_cr
3245          , entered_currency_mau
3246          , currency_code
3247          , currency_conversion_date
3248          , currency_conversion_rate
3249          , currency_conversion_type
3250          , statistical_amount
3251          --
3252          , party_id
3253          , party_site_id
3254          , party_type_code
3255          --
3256          , ussgl_transaction_code
3257          , jgzz_recon_ref
3258          , source_distribution_id_char_1
3259          , source_distribution_id_char_2
3260          , source_distribution_id_char_3
3261          , source_distribution_id_char_4
3262          , source_distribution_id_char_5
3263          , source_distribution_id_num_1
3264          , source_distribution_id_num_2
3265          , source_distribution_id_num_3
3266          , source_distribution_id_num_4
3267          , source_distribution_id_num_5
3268          , source_distribution_type
3269          --
3270          , reverse_dist_id_char_1
3271          , reverse_dist_id_char_2
3272          , reverse_dist_id_char_3
3273          , reverse_dist_id_char_4
3274          , reverse_dist_id_char_5
3275          , reverse_dist_id_num_1
3276          , reverse_dist_id_num_2
3277          , reverse_dist_id_num_3
3278          , reverse_dist_id_num_4
3279          , reverse_dist_id_num_5
3280          , reverse_distribution_type
3281          --
3282          , tax_line_ref_id
3283          , tax_summary_line_ref_id
3284          , tax_rec_nrec_dist_ref_id
3285          --
3286          --
3287          -- 4262811
3288          , header_num
3289          , mpa_accrual_entry_flag
3290          , multiperiod_option_flag
3291          , multiperiod_start_date
3292          , multiperiod_end_date
3293          --
3294          , analytical_balance_flag
3295          , anc_id_1
3296          , anc_id_2
3297          , anc_id_3
3298          , anc_id_4
3299          , anc_id_5
3300          , anc_id_6
3301          , anc_id_7
3302          , anc_id_8
3303          , anc_id_9
3304          , anc_id_10
3305          , anc_id_11
3306          , anc_id_12
3307          , anc_id_13
3308          , anc_id_14
3309          , anc_id_15
3310          , anc_id_16
3311          , anc_id_17
3312          , anc_id_18
3313          , anc_id_19
3314          , anc_id_20
3315          , anc_id_21
3316          , anc_id_22
3317          , anc_id_23
3318          , anc_id_24
3319          , anc_id_25
3320          , anc_id_26
3321          , anc_id_27
3322          , anc_id_28
3323          , anc_id_29
3324          , anc_id_30
3325          , anc_id_31
3326          , anc_id_32
3327          , anc_id_33
3328          , anc_id_34
3329          , anc_id_35
3330          , anc_id_36
3331          , anc_id_37
3332          , anc_id_38
3333          , anc_id_39
3334          , anc_id_40
3335          , anc_id_41
3336          , anc_id_42
3337          , anc_id_43
3338          , anc_id_44
3339          , anc_id_45
3340          , anc_id_46
3341          , anc_id_47
3342          , anc_id_48
3343          , anc_id_49
3344          , anc_id_50
3345          , anc_id_51
3346          , anc_id_52
3347          , anc_id_53
3348          , anc_id_54
3349          , anc_id_55
3350          , anc_id_56
3351          , anc_id_57
3352          , anc_id_58
3353          , anc_id_59
3354          , anc_id_60
3355          , anc_id_61
3356          , anc_id_62
3357          , anc_id_63
3358          , anc_id_64
3359          , anc_id_65
3360          , anc_id_66
3361          , anc_id_67
3362          , anc_id_68
3363          , anc_id_69
3364          , anc_id_70
3365          , anc_id_71
3366          , anc_id_72
3367          , anc_id_73
3368          , anc_id_74
3369          , anc_id_75
3370          , anc_id_76
3371          , anc_id_77
3372          , anc_id_78
3373          , anc_id_79
3374          , anc_id_80
3375          , anc_id_81
3376          , anc_id_82
3377          , anc_id_83
3378          , anc_id_84
3379          , anc_id_85
3380          , anc_id_86
3381          , anc_id_87
3382          , anc_id_88
3383          , anc_id_89
3384          , anc_id_90
3385          , anc_id_91
3386          , anc_id_92
3387          , anc_id_93
3388          , anc_id_94
3389          , anc_id_95
3390          , anc_id_96
3391          , anc_id_97
3392          , anc_id_98
3393          , anc_id_99
3394          , anc_id_100
3395          --, deferred_indicator
3396          --, deferred_start_date
3397          --, deferred_end_date
3398          --, deferred_no_period
3399          --, deferred_period_type
3400         -- bulk performance
3401          , balance_type_code  -- element at index [x] does not exist.
3402          , ledger_id          -- element at index [x] does not exist.
3403          , event_number
3404          , entity_id
3405          , reversal_code
3406          , encumbrance_type_id -- 4458381
3407          --------------------------------------
3408          -- 4219869
3409          -- Business Flow Applied To attributes
3410          --------------------------------------
3411          ,inherit_desc_flag
3412          ,natural_side_code
3413          ,business_method_code
3414          ,business_class_code
3415          ,bflow_application_id
3416          ,bflow_entity_code
3417          ,bflow_source_id_num_1
3418          ,bflow_source_id_num_2
3419          ,bflow_source_id_num_3
3420          ,bflow_source_id_num_4
3421          ,bflow_source_id_char_1
3422          ,bflow_source_id_char_2
3423          ,bflow_source_id_char_3
3424          ,bflow_source_id_char_4
3425          ,bflow_distribution_type
3426          ,bflow_dist_id_num_1
3427          ,bflow_dist_id_num_2
3428          ,bflow_dist_id_num_3
3429          ,bflow_dist_id_num_4
3430          ,bflow_dist_id_num_5
3431          ,bflow_dist_id_char_1
3432          ,bflow_dist_id_char_2
3433          ,bflow_dist_id_char_3
3434          ,bflow_dist_id_char_4
3435          ,bflow_dist_id_char_5
3436          ,bflow_applied_to_amount  -- 5132302
3437      ,override_acctd_amt_flag
3438          --
3439          -- Allocation Attributes
3440          --
3441          ,alloc_to_application_id
3442          ,alloc_to_entity_code
3443          ,alloc_to_source_id_num_1
3444          ,alloc_to_source_id_num_2
3445          ,alloc_to_source_id_num_3
3446          ,alloc_to_source_id_num_4
3447          ,alloc_to_source_id_char_1
3448          ,alloc_to_source_id_char_2
3449          ,alloc_to_source_id_char_3
3450          ,alloc_to_source_id_char_4
3451          ,alloc_to_distribution_type
3452          ,alloc_to_dist_id_num_1
3453          ,alloc_to_dist_id_num_2
3454          ,alloc_to_dist_id_num_3
3455          ,alloc_to_dist_id_num_4
3456          ,alloc_to_dist_id_num_5
3457          ,alloc_to_dist_id_char_1
3458          ,alloc_to_dist_id_char_2
3459          ,alloc_to_dist_id_char_3
3460          ,alloc_to_dist_id_char_4
3461          ,alloc_to_dist_id_char_5
3462    )
3463    VALUES
3464    (
3465      g_rec_lines.array_ae_header_id(Idx)
3466    , g_rec_lines.array_line_num(Idx)
3467    , g_rec_lines.array_extract_line_num(Idx)
3468    , g_rec_lines.array_ae_header_id(Idx)
3469    , g_rec_lines.array_ae_header_id(Idx)
3470   --
3471    , g_rec_lines.array_gl_date(Idx)           --4955764
3472    , g_rec_lines.array_accounting_class(Idx)
3473    , g_rec_lines.array_rounding_class(Idx)
3474    , g_rec_lines.array_event_class_code(Idx)
3475    , g_rec_lines.array_event_type_code(Idx)
3476    , g_rec_lines.array_line_defn_owner_code(Idx)
3477    , g_rec_lines.array_line_defn_code(Idx)
3478    , g_rec_lines.array_accounting_line_type(Idx)
3479    , g_rec_lines.array_accounting_line_code(Idx)
3480    , g_rec_lines.array_doc_rounding_level(Idx)
3481    , nvl(g_rec_lines.array_gain_or_loss_ref(Idx), '#line#'||g_rec_lines.array_extract_line_num(Idx))
3482    --
3483    , g_rec_lines.array_calculate_acctd_flag(Idx)
3484    , g_rec_lines.array_calculate_g_l_flag(Idx)
3485    , decode(g_rec_lines.array_gain_or_loss_flag(Idx), 'Y', 'Y', decode(g_rec_lines.array_natural_side_code(Idx), 'G', 'Y', 'N'))
3486    --
3487    , g_rec_lines.array_ccid_flag(Idx)
3488    , g_rec_lines.array_ccid(Idx)
3489    --
3490    , XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.sl_coa_mapping_name
3491    , XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.sl_coa_mapping_id
3492   --
3493    , XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.dynamic_insert_flag
3494    , XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.source_coa_id
3495    , XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.target_coa_id
3496   --
3497    , g_rec_lines.array_segment1(Idx)
3498    , g_rec_lines.array_segment2(Idx)
3499    , g_rec_lines.array_segment3(Idx)
3500    , g_rec_lines.array_segment4(Idx)
3501    , g_rec_lines.array_segment5(Idx)
3502    , g_rec_lines.array_segment6(Idx)
3503    , g_rec_lines.array_segment7(Idx)
3504    , g_rec_lines.array_segment8(Idx)
3505    , g_rec_lines.array_segment9(Idx)
3506    , g_rec_lines.array_segment10(Idx)
3507    , g_rec_lines.array_segment11(Idx)
3508    , g_rec_lines.array_segment12(Idx)
3509    , g_rec_lines.array_segment13(Idx)
3510    , g_rec_lines.array_segment14(Idx)
3511    , g_rec_lines.array_segment15(Idx)
3512    , g_rec_lines.array_segment16(Idx)
3513    , g_rec_lines.array_segment17(Idx)
3514    , g_rec_lines.array_segment18(Idx)
3515    , g_rec_lines.array_segment19(Idx)
3516    , g_rec_lines.array_segment20(Idx)
3517    , g_rec_lines.array_segment21(Idx)
3518    , g_rec_lines.array_segment22(Idx)
3519    , g_rec_lines.array_segment23(Idx)
3520    , g_rec_lines.array_segment24(Idx)
3521    , g_rec_lines.array_segment25(Idx)
3522    , g_rec_lines.array_segment26(Idx)
3523    , g_rec_lines.array_segment27(Idx)
3524    , g_rec_lines.array_segment28(Idx)
3525    , g_rec_lines.array_segment29(Idx)
3526    , g_rec_lines.array_segment30(Idx)
3527     --
3528    , g_rec_lines.alt_array_ccid_flag(Idx)
3529    , g_rec_lines.alt_array_ccid(Idx)
3530    , g_rec_lines.alt_array_segment1(Idx)
3531    , g_rec_lines.alt_array_segment2(Idx)
3532    , g_rec_lines.alt_array_segment3(Idx)
3533    , g_rec_lines.alt_array_segment4(Idx)
3534    , g_rec_lines.alt_array_segment5(Idx)
3535    , g_rec_lines.alt_array_segment6(Idx)
3536    , g_rec_lines.alt_array_segment7(Idx)
3537    , g_rec_lines.alt_array_segment8(Idx)
3538    , g_rec_lines.alt_array_segment9(Idx)
3539    , g_rec_lines.alt_array_segment10(Idx)
3540    , g_rec_lines.alt_array_segment11(Idx)
3541    , g_rec_lines.alt_array_segment12(Idx)
3542    , g_rec_lines.alt_array_segment13(Idx)
3543    , g_rec_lines.alt_array_segment14(Idx)
3544    , g_rec_lines.alt_array_segment15(Idx)
3545    , g_rec_lines.alt_array_segment16(Idx)
3546    , g_rec_lines.alt_array_segment17(Idx)
3547    , g_rec_lines.alt_array_segment18(Idx)
3548    , g_rec_lines.alt_array_segment19(Idx)
3549    , g_rec_lines.alt_array_segment20(Idx)
3550    , g_rec_lines.alt_array_segment21(Idx)
3551    , g_rec_lines.alt_array_segment22(Idx)
3552    , g_rec_lines.alt_array_segment23(Idx)
3553    , g_rec_lines.alt_array_segment24(Idx)
3554    , g_rec_lines.alt_array_segment25(Idx)
3555    , g_rec_lines.alt_array_segment26(Idx)
3556    , g_rec_lines.alt_array_segment27(Idx)
3557    , g_rec_lines.alt_array_segment28(Idx)
3558    , g_rec_lines.alt_array_segment29(Idx)
3559    , g_rec_lines.alt_array_segment30(Idx)
3560     --
3561    , g_rec_lines.array_description(Idx)
3562    , g_rec_lines.array_gl_transfer_mode(Idx)
3563    , g_rec_lines.array_merge_duplicate_code(Idx)
3564    , decode(g_rec_lines.array_natural_side_code(Idx), 'G', 'Y',
3565            g_rec_lines.array_switch_side_flag(Idx))
3566       --
3567    , g_rec_lines.array_entered_amount(Idx)
3568    , g_rec_lines.array_ledger_amount(Idx)
3569    , g_rec_lines.array_entered_dr(Idx)
3570    , g_rec_lines.array_entered_cr(Idx)
3571    , g_rec_lines.array_accounted_dr(Idx)
3572    , g_rec_lines.array_accounted_cr(Idx)
3573    -- currency mau, put some dummy value for gain/loss line
3574    , decode(g_rec_lines.array_natural_side_code(Idx), 'G', .01
3575             , g_rec_lines.array_currency_mau(Idx))
3576    , decode(g_rec_lines.array_natural_side_code(Idx), 'G', l_ledger_currency
3577             , g_rec_lines.array_currency_code(Idx))--
3578    /*, decode(l_ledger_category_code
3579            ,'PRIMARY',TRUNC(g_rec_lines.array_curr_conversion_date(Idx))
3580            ,decode(l_ledger_currency
3581                   ,g_rec_lines.array_currency_code(Idx),NULL
3582                   ,TRUNC(g_rec_lines.array_curr_conversion_date(Idx))
3583                   )
3584            )    -- currency_conversion_date*/
3585    /* Modified for bug 8810416 */
3586    ,decode(l_ledger_currency ,g_rec_lines.array_currency_code(Idx),NULL,
3587               TRUNC(g_rec_lines.array_curr_conversion_date(Idx))) -- currency_conversion_date
3588    /*, decode(l_ledger_category_code, 'PRIMARY',
3589         g_rec_lines.array_curr_conversion_rate(Idx)
3590         ,decode(l_ledger_currency, g_rec_lines.array_currency_code(Idx),
3591            null, g_rec_lines.array_curr_conversion_rate(Idx))) */
3592    /* Modified for bug 8810416 */
3593     ,decode(l_ledger_currency, g_rec_lines.array_currency_code(Idx),null
3594             , g_rec_lines.array_curr_conversion_rate(Idx)) -- currency_conversion_rate
3595    /*, decode(l_ledger_category_code, 'PRIMARY',
3596         g_rec_lines.array_curr_conversion_type(Idx)
3597         ,decode(l_ledger_currency, g_rec_lines.array_currency_code(Idx),
3598            null, g_rec_lines.array_curr_conversion_type(Idx))) */
3599    /* Modified for bug 8810416 */
3600       ,decode(l_ledger_currency, g_rec_lines.array_currency_code(Idx),null,
3601                   g_rec_lines.array_curr_conversion_type(Idx)) -- currency_conversion_type
3602    , g_rec_lines.array_statistical_amount(Idx)
3603     --
3604    , g_rec_lines.array_party_id(Idx)
3605    , g_rec_lines.array_party_site_id(Idx)
3606    , g_rec_lines.array_party_type_code(Idx)
3607     --
3608    , g_rec_lines.array_ussgl_transaction(Idx)
3609    , g_rec_lines.array_jgzz_recon_ref(Idx)
3610     --
3611    , g_rec_lines.array_distribution_id_char_1(Idx)
3612    , g_rec_lines.array_distribution_id_char_2(Idx)
3613    , g_rec_lines.array_distribution_id_char_3(Idx)
3614    , g_rec_lines.array_distribution_id_char_4(Idx)
3615    , g_rec_lines.array_distribution_id_char_5(Idx)
3616    , g_rec_lines.array_distribution_id_num_1(Idx)
3617    , g_rec_lines.array_distribution_id_num_2(Idx)
3618    , g_rec_lines.array_distribution_id_num_3(Idx)
3619    , g_rec_lines.array_distribution_id_num_4(Idx)
3620    , g_rec_lines.array_distribution_id_num_5(Idx)
3621    , g_rec_lines.array_sys_distribution_type(Idx)
3622    --
3623    , g_rec_lines.array_rev_dist_id_char_1(Idx)
3624    , g_rec_lines.array_rev_dist_id_char_2(Idx)
3625    , g_rec_lines.array_rev_dist_id_char_3(Idx)
3626    , g_rec_lines.array_rev_dist_id_char_4(Idx)
3627    , g_rec_lines.array_rev_dist_id_char_5(Idx)
3628    , g_rec_lines.array_rev_dist_id_num_1(Idx)
3629    , g_rec_lines.array_rev_dist_id_num_2(Idx)
3630    , g_rec_lines.array_rev_dist_id_num_3(Idx)
3631    , g_rec_lines.array_rev_dist_id_num_4(Idx)
3632    , g_rec_lines.array_rev_dist_id_num_5(Idx)
3633    , g_rec_lines.array_rev_dist_type(Idx)
3634    --
3635    , g_rec_lines.array_tax_line_ref(Idx)
3636    , g_rec_lines.array_tax_summary_line_ref(Idx)
3637    , g_rec_lines.array_tax_rec_nrec_dist_ref(Idx)
3638   -- 4262811
3639    , NVL(g_rec_lines.array_header_num(Idx),0)  -- 5100860  always assign a value
3640    , g_rec_lines.array_mpa_acc_entry_flag(Idx)
3641    , g_rec_lines.array_mpa_option(Idx)
3642    , g_rec_lines.array_mpa_start_date(Idx)
3643    , g_rec_lines.array_mpa_end_date(Idx)
3644    -- Analytical Criteria
3645    , g_rec_lines.array_anc_balance_flag(Idx)
3646    , g_rec_lines.array_anc_id_1(Idx)
3647    , g_rec_lines.array_anc_id_2(Idx)
3648    , g_rec_lines.array_anc_id_3(Idx)
3649    , g_rec_lines.array_anc_id_4(Idx)
3650    , g_rec_lines.array_anc_id_5(Idx)
3651    , g_rec_lines.array_anc_id_6(Idx)
3652    , g_rec_lines.array_anc_id_7(Idx)
3653    , g_rec_lines.array_anc_id_8(Idx)
3654    , g_rec_lines.array_anc_id_9(Idx)
3655    , g_rec_lines.array_anc_id_10(Idx)
3656    , g_rec_lines.array_anc_id_11(Idx)
3657    , g_rec_lines.array_anc_id_12(Idx)
3658    , g_rec_lines.array_anc_id_13(Idx)
3659    , g_rec_lines.array_anc_id_14(Idx)
3660    , g_rec_lines.array_anc_id_15(Idx)
3661    , g_rec_lines.array_anc_id_16(Idx)
3662    , g_rec_lines.array_anc_id_17(Idx)
3663    , g_rec_lines.array_anc_id_18(Idx)
3664    , g_rec_lines.array_anc_id_19(Idx)
3665    , g_rec_lines.array_anc_id_20(Idx)
3666    , g_rec_lines.array_anc_id_21(Idx)
3667    , g_rec_lines.array_anc_id_22(Idx)
3668    , g_rec_lines.array_anc_id_23(Idx)
3669    , g_rec_lines.array_anc_id_24(Idx)
3670    , g_rec_lines.array_anc_id_25(Idx)
3671    , g_rec_lines.array_anc_id_26(Idx)
3672    , g_rec_lines.array_anc_id_27(Idx)
3673    , g_rec_lines.array_anc_id_28(Idx)
3674    , g_rec_lines.array_anc_id_29(Idx)
3675    , g_rec_lines.array_anc_id_30(Idx)
3676    , g_rec_lines.array_anc_id_31(Idx)
3677    , g_rec_lines.array_anc_id_32(Idx)
3678    , g_rec_lines.array_anc_id_33(Idx)
3679    , g_rec_lines.array_anc_id_34(Idx)
3680    , g_rec_lines.array_anc_id_35(Idx)
3681    , g_rec_lines.array_anc_id_36(Idx)
3682    , g_rec_lines.array_anc_id_37(Idx)
3683    , g_rec_lines.array_anc_id_38(Idx)
3684    , g_rec_lines.array_anc_id_39(Idx)
3685    , g_rec_lines.array_anc_id_40(Idx)
3686    , g_rec_lines.array_anc_id_41(Idx)
3687    , g_rec_lines.array_anc_id_42(Idx)
3688    , g_rec_lines.array_anc_id_43(Idx)
3689    , g_rec_lines.array_anc_id_44(Idx)
3690    , g_rec_lines.array_anc_id_45(Idx)
3691    , g_rec_lines.array_anc_id_46(Idx)
3692    , g_rec_lines.array_anc_id_47(Idx)
3693    , g_rec_lines.array_anc_id_48(Idx)
3694    , g_rec_lines.array_anc_id_49(Idx)
3695    , g_rec_lines.array_anc_id_50(Idx)
3696    , g_rec_lines.array_anc_id_51(Idx)
3697    , g_rec_lines.array_anc_id_52(Idx)
3698    , g_rec_lines.array_anc_id_53(Idx)
3699    , g_rec_lines.array_anc_id_54(Idx)
3700    , g_rec_lines.array_anc_id_55(Idx)
3701    , g_rec_lines.array_anc_id_56(Idx)
3702    , g_rec_lines.array_anc_id_57(Idx)
3703    , g_rec_lines.array_anc_id_58(Idx)
3704    , g_rec_lines.array_anc_id_59(Idx)
3705    , g_rec_lines.array_anc_id_60(Idx)
3706    , g_rec_lines.array_anc_id_61(Idx)
3707    , g_rec_lines.array_anc_id_62(Idx)
3708    , g_rec_lines.array_anc_id_63(Idx)
3709    , g_rec_lines.array_anc_id_64(Idx)
3710    , g_rec_lines.array_anc_id_65(Idx)
3711    , g_rec_lines.array_anc_id_66(Idx)
3712    , g_rec_lines.array_anc_id_67(Idx)
3713    , g_rec_lines.array_anc_id_68(Idx)
3714    , g_rec_lines.array_anc_id_69(Idx)
3715    , g_rec_lines.array_anc_id_70(Idx)
3716    , g_rec_lines.array_anc_id_71(Idx)
3717    , g_rec_lines.array_anc_id_72(Idx)
3718    , g_rec_lines.array_anc_id_73(Idx)
3719    , g_rec_lines.array_anc_id_74(Idx)
3720    , g_rec_lines.array_anc_id_75(Idx)
3721    , g_rec_lines.array_anc_id_76(Idx)
3722    , g_rec_lines.array_anc_id_77(Idx)
3723    , g_rec_lines.array_anc_id_78(Idx)
3724    , g_rec_lines.array_anc_id_79(Idx)
3725    , g_rec_lines.array_anc_id_80(Idx)
3726    , g_rec_lines.array_anc_id_81(Idx)
3727    , g_rec_lines.array_anc_id_82(Idx)
3728    , g_rec_lines.array_anc_id_83(Idx)
3729    , g_rec_lines.array_anc_id_84(Idx)
3730    , g_rec_lines.array_anc_id_85(Idx)
3731    , g_rec_lines.array_anc_id_86(Idx)
3732    , g_rec_lines.array_anc_id_87(Idx)
3733    , g_rec_lines.array_anc_id_88(Idx)
3734    , g_rec_lines.array_anc_id_89(Idx)
3735    , g_rec_lines.array_anc_id_90(Idx)
3736    , g_rec_lines.array_anc_id_91(Idx)
3737    , g_rec_lines.array_anc_id_92(Idx)
3738    , g_rec_lines.array_anc_id_93(Idx)
3739    , g_rec_lines.array_anc_id_94(Idx)
3740    , g_rec_lines.array_anc_id_95(Idx)
3741    , g_rec_lines.array_anc_id_96(Idx)
3742    , g_rec_lines.array_anc_id_97(Idx)
3743    , g_rec_lines.array_anc_id_98(Idx)
3744    , g_rec_lines.array_anc_id_99(Idx)
3745    , g_rec_lines.array_anc_id_100(Idx)
3746   -- , g_rec_lines.array_deferred_indicator(Idx)
3747   -- , g_rec_lines.array_deferred_start_date(Idx)
3748   -- , g_rec_lines.array_deferred_end_date(Idx)
3749   -- , g_rec_lines.array_deferred_no_period(Idx)
3750   -- , g_rec_lines.array_deferred_period_type(Idx)
3751   -- bulk performance
3752    , g_rec_lines.array_balance_type_code(Idx)  -- element at index [x] does not exist.
3753    , g_rec_lines.array_ledger_id(Idx)          -- element at index [x] does not exist.
3754    , g_rec_lines.array_event_number(Idx)
3755    , g_rec_lines.array_entity_id(Idx)
3756    , g_rec_lines.array_reversal_code(Idx)
3757    , g_rec_lines.array_encumbrance_type_id(Idx) -- 4458381
3758    --------------------------------------
3759    -- 4219869
3760    -- Business Flow Applied To attributes
3761    --------------------------------------
3762    , g_rec_lines.array_inherit_desc_flag(Idx)
3763    , g_rec_lines.array_natural_side_code(Idx)
3764    , g_rec_lines.array_business_method_code(Idx)
3765    , g_rec_lines.array_business_class_code(Idx)
3766    , g_rec_lines.array_bflow_application_id(Idx)
3767    --
3768    , g_rec_lines.array_bflow_entity_code(Idx)
3769    , g_rec_lines.array_bflow_source_id_num_1(Idx)
3770    , g_rec_lines.array_bflow_source_id_num_2(Idx)
3771    , g_rec_lines.array_bflow_source_id_num_3(Idx)
3772    , g_rec_lines.array_bflow_source_id_num_4(Idx)
3773    , g_rec_lines.array_bflow_source_id_char_1(Idx)
3774    , g_rec_lines.array_bflow_source_id_char_2(Idx)
3775    , g_rec_lines.array_bflow_source_id_char_3(Idx)
3776    , g_rec_lines.array_bflow_source_id_char_4(Idx)
3777    --
3778    , g_rec_lines.array_bflow_distribution_type(Idx)
3779    , g_rec_lines.array_bflow_dist_id_num_1(Idx)
3780    , g_rec_lines.array_bflow_dist_id_num_2(Idx)
3781    , g_rec_lines.array_bflow_dist_id_num_3(Idx)
3782    , g_rec_lines.array_bflow_dist_id_num_4(Idx)
3783    , g_rec_lines.array_bflow_dist_id_num_5(Idx)
3784    , g_rec_lines.array_bflow_dist_id_char_1(Idx)
3785    , g_rec_lines.array_bflow_dist_id_char_2(Idx)
3786    , g_rec_lines.array_bflow_dist_id_char_3(Idx)
3787    , g_rec_lines.array_bflow_dist_id_char_4(Idx)
3788    , g_rec_lines.array_bflow_dist_id_char_5(Idx)
3789    , g_rec_lines.array_bflow_applied_to_amt(Idx)  -- 5132302
3790    , g_rec_lines.array_override_acctd_amt_flag(Idx)
3791    --
3792    -- Allocation Attributes
3793    --
3794    , g_rec_lines.array_alloct_application_id(Idx)
3795    , g_rec_lines.array_alloct_entity_code(Idx)
3796    , g_rec_lines.array_alloct_source_id_num_1(Idx)
3797    , g_rec_lines.array_alloct_source_id_num_2(Idx)
3798    , g_rec_lines.array_alloct_source_id_num_3(Idx)
3799    , g_rec_lines.array_alloct_source_id_num_4(Idx)
3800    , g_rec_lines.array_alloct_source_id_char_1(Idx)
3801    , g_rec_lines.array_alloct_source_id_char_2(Idx)
3802    , g_rec_lines.array_alloct_source_id_char_3(Idx)
3803    , g_rec_lines.array_alloct_source_id_char_4(Idx)
3804    , g_rec_lines.array_alloct_distribution_type(Idx)
3805    , g_rec_lines.array_alloct_dist_id_num_1(Idx)
3806    , g_rec_lines.array_alloct_dist_id_num_2(Idx)
3807    , g_rec_lines.array_alloct_dist_id_num_3(Idx)
3808    , g_rec_lines.array_alloct_dist_id_num_4(Idx)
3809    , g_rec_lines.array_alloct_dist_id_num_5(Idx)
3810    , g_rec_lines.array_alloct_dist_id_char_1(Idx)
3811    , g_rec_lines.array_alloct_dist_id_char_2(Idx)
3812    , g_rec_lines.array_alloct_dist_id_char_3(Idx)
3813    , g_rec_lines.array_alloct_dist_id_char_4(Idx)
3814    , g_rec_lines.array_alloct_dist_id_char_5(Idx)
3815    )
3816   ;
3817 
3818   l_rowcount := SQL%ROWCOUNT;
3819   l_result   := ( l_rowcount> 0);
3820 
3821   IF (C_LEVEL_EVENT >= g_log_level) THEN
3822     trace
3823       (p_msg      => '# temporary journal lines inserted into GT xla_ae_lines_gt = '||TO_CHAR(l_rowcount)
3824       ,p_level    => C_LEVEL_EVENT
3825       ,p_module   => l_log_module);
3826   END IF;
3827 
3828 END IF; --  g_rec_lines.array_line_num.COUNT > 0
3829 
3830 IF g_transaction_accounts.array_line_num.COUNT > 0 AND l_result THEN
3831 
3832   FORALL Jdx IN g_transaction_accounts.array_line_num.FIRST .. g_transaction_accounts.array_line_num.LAST
3833     INSERT INTO xla_transaction_accts_gt
3834        (line_number,
3835         ae_header_id,
3836         temp_line_num,
3837         ledger_id,
3838         code_combination_id,
3839         segment,
3840         from_segment_code,
3841         to_segment_code,
3842         processing_status_code,
3843         side_code,
3844         sl_coa_mapping_id
3845        )
3846     VALUES
3847        (g_transaction_accounts.array_line_num(Jdx),
3848         g_transaction_accounts.array_ae_header_id(Jdx),
3849         g_transaction_accounts.array_temp_line_num(Jdx),
3850         XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id,
3851         g_transaction_accounts.array_code_combination_id(Jdx),
3852         g_transaction_accounts.array_segment(Jdx),
3853         g_transaction_accounts.array_from_segment_code(Jdx),
3854         g_transaction_accounts.array_to_segment_code(Jdx),
3855         g_transaction_accounts.array_processing_status_code(Jdx),
3856         g_transaction_accounts.array_side_code(Jdx),
3857         XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.sl_coa_mapping_id
3858   )
3859   ;
3860 
3861   l_rowcount := SQL%ROWCOUNT;
3862 
3863   IF (C_LEVEL_EVENT >= g_log_level) THEN
3864       trace
3865          (p_msg      => '# lines inserted into xla_transaction_accts_gt = '||TO_CHAR(l_rowcount)
3866          ,p_level    => C_LEVEL_EVENT
3867          ,p_module   => l_log_module);
3868 
3869   END IF;
3870   g_transaction_accounts         := l_null_trans_accounts;
3871 
3872 ELSE
3873   IF (C_LEVEL_EVENT >= g_log_level) THEN
3874       trace
3875          (p_msg      => 'No rows to insert into xla_transaction_accts_gt'
3876          ,p_level    => C_LEVEL_EVENT
3877          ,p_module   => l_log_module);
3878   END IF;
3879 END IF;
3880 
3881 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3882       trace
3883          (p_msg      => 'END of InsertLines'
3884          ,p_level    => C_LEVEL_PROCEDURE
3885          ,p_module   => l_log_module);
3886 END IF;
3887 RETURN l_result;
3888 EXCEPTION
3889 ----Added to handle Exceptions and send to Out file  7453943------------
3890 WHEN dml_errors THEN
3891    errors := SQL%BULK_EXCEPTIONS.COUNT;
3892    FOR i IN 1..errors LOOP
3893       ERR_IND:= SQL%BULK_EXCEPTIONS(i).ERROR_INDEX;
3894       ERR_CODE:= SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE);
3895       fnd_file.put_line(fnd_file.log, 'ERROR : '|| UPPER(ERR_CODE)); -- added in 12.1.1
3896       fnd_file.put_line(fnd_file.output, 'temp_line_num: '||g_rec_lines.array_line_num(ERR_IND));
3897       fnd_file.put_line(fnd_file.output, 'extract_line_num: '||g_rec_lines.array_extract_line_num(ERR_IND));
3898       fnd_file.put_line(fnd_file.output, 'event_id: '||g_rec_lines.array_ae_header_id(ERR_IND));
3899       fnd_file.put_line(fnd_file.output, 'accounting_class_code: '||g_rec_lines.array_accounting_class(ERR_IND));
3900       fnd_file.put_line(fnd_file.output, 'event_type_code: '||g_rec_lines.array_event_type_code(ERR_IND));
3901       fnd_file.put_line(fnd_file.output, 'balance_type_code: '||g_rec_lines.array_balance_type_code(ERR_IND));
3902   END LOOP;
3903 --------------------------------------------------------------------------
3904 
3905 WHEN xla_exceptions_pkg.application_exception THEN
3906    IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
3907        trace
3908            (p_msg      => 'Error. = '||sqlerrm
3909            ,p_level    => C_LEVEL_PROCEDURE
3910            ,p_module   => l_log_module);
3911    END IF;
3912    RAISE;
3913 WHEN OTHERS  THEN
3914   IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
3915        trace
3916            (p_msg      => 'Error. = '||sqlerrm
3917            ,p_level    => C_LEVEL_PROCEDURE
3918            ,p_module   => l_log_module);
3919    END IF;
3920    xla_exceptions_pkg.raise_message
3921       (p_location => 'XLA_AE_LINES_PKG.InsertLines');
3922 END InsertLines;
3923 --
3924 /*======================================================================+
3925 |                                                                       |
3926 | Public Procedure                                                      |
3927 |                                                                       |
3928 |                                                                       |
3929 +======================================================================*/
3930 PROCEDURE RefreshLines
3931 IS
3932 l_null_lines          t_rec_lines;
3933 l_null_rev_line       t_rec_reverse_line;
3934 l_null_accounts       t_rec_transaction_accounts;
3935 l_log_module          VARCHAR2(240);
3936 BEGIN
3937 IF g_log_enabled THEN
3938       l_log_module := C_DEFAULT_MODULE||'.RefreshLines';
3939 END IF;
3940 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3941       trace
3942          (p_msg      => 'BEGIN of RefreshLines'
3943          ,p_level    => C_LEVEL_PROCEDURE
3944          ,p_module   => l_log_module);
3945 END IF;
3946 
3947 g_rec_lines                    := l_null_lines;
3948 g_transaction_accounts         := l_null_accounts;
3949 g_LineNumber                   := null;
3950 g_ExtractLine                  := null;
3951 g_ActualLineNum                := null;
3952 g_BudgetLineNum                := null;
3953 g_EncumbLineNum                := null;
3954 
3955 g_reverse_lines                := l_null_rev_line;
3956 
3957 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3958       trace
3959          (p_msg      => 'END of RefreshLines'
3960          ,p_level    => C_LEVEL_PROCEDURE
3961          ,p_module   => l_log_module);
3962 END IF;
3963 EXCEPTION
3964 WHEN xla_exceptions_pkg.application_exception THEN
3965   RAISE;
3966 WHEN OTHERS  THEN
3967    xla_exceptions_pkg.raise_message
3968            (p_location => 'XLA_AE_LINES_PKG.RefreshLines');
3969 END RefreshLines;
3970 --
3971 --
3972 --====================================================================
3973 --
3974 --
3975 --
3976 --
3977 --
3978 --                    REVERSAL ACCOUNTING PROCESS
3979 --
3980 --
3981 --
3982 --
3983 --
3984 --
3985 --
3986 --
3987 --
3988 --
3989 --
3990 --
3991 --
3992 --
3993 --
3994 --
3995 --====================================================================
3996 --
3997 --====================================================================
3998 --
3999 --
4000 --
4001 --
4002 --
4003 --        PRIVATE  procedures and functions
4004 --
4005 --
4006 --
4007 --
4008 --
4009 --
4010 --
4011 --
4012 --
4013 --
4014 --
4015 --
4016 --
4017 --
4018 --
4019 --
4020 --======================================================================
4021 --
4022 
4023 
4024 --
4025 --
4026 /*======================================================================+
4027 |                                                                       |
4028 | Private Procedure                                                     |
4029 |                                                                       |
4030 |                                                                       |
4031 +======================================================================*/
4032 FUNCTION ValidateRevLinks
4033 RETURN BOOLEAN
4034 IS
4035 l_log_module         VARCHAR2(240);
4036 l_temp               NUMBER;
4037 BEGIN
4038 --
4039 IF g_log_enabled THEN
4040       l_log_module := C_DEFAULT_MODULE||'.ValidateRevLinks';
4041 END IF;
4042 --
4043 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4044 
4045       trace
4046          (p_msg      => 'BEGIN of ValidateRevLinks'
4047          ,p_level    => C_LEVEL_PROCEDURE
4048          ,p_module   => l_log_module);
4049 
4050 END IF;
4051 
4052 -- please refer to the comments in method ValidateLinks for explanation.
4053 
4054 IF g_rec_lines.array_distribution_id_char_5(g_LineNumber) IS NULL AND
4055       g_rec_lines.array_distribution_id_num_5(g_LineNumber) IS NULL THEN
4056   l_temp := 0;
4057 ELSE
4058   l_temp := 1;
4059 END IF;
4060 IF g_rec_lines.array_distribution_id_char_4(g_LineNumber) IS NOT NULL OR
4061       g_rec_lines.array_distribution_id_num_4(g_LineNumber) IS NOT NULL THEN
4062   l_temp := 2+l_temp;
4063 END IF;
4064 IF g_rec_lines.array_distribution_id_char_3(g_LineNumber) IS NOT NULL OR
4065       g_rec_lines.array_distribution_id_num_3(g_LineNumber) IS NOT NULL THEN
4066   l_temp := 4+l_temp;
4067 END IF;
4068 IF g_rec_lines.array_distribution_id_char_2(g_LineNumber) IS NOT NULL OR
4069       g_rec_lines.array_distribution_id_num_2(g_LineNumber) IS NOT NULL THEN
4070   l_temp := 8+l_temp;
4071 END IF;
4072 IF g_rec_lines.array_sys_distribution_type(g_LineNumber) IS NULL
4073    OR (g_rec_lines.array_distribution_id_char_1(g_LineNumber) IS NULL AND
4074       g_rec_lines.array_distribution_id_num_1(g_LineNumber) IS NULL)
4075    OR   l_temp not in (0, 8, 12, 14, 15) THEN
4076 
4077     xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
4078     xla_accounting_err_pkg.build_message
4079                                   (p_appli_s_name            => 'XLA'
4080                                   ,p_msg_name                => 'XLA_AP_NO_DIST_LINK_ID'
4081                                   ,p_token_1                 => 'LINE_NUMBER'
4082                                   ,p_value_1                 =>  g_ExtractLine
4083                                   ,p_token_2                 => 'LINE_TYPE_NAME'
4084                                   ,p_value_2                 => 'Accounting Reversal'
4085                                   ,p_token_3                 => 'OWNER'
4086                                   ,p_value_3                 => xla_lookups_pkg.get_meaning(
4087                                                                       p_lookup_type    => 'XLA_OWNER_TYPE'
4088                                                                     , p_lookup_code    => 'S'
4089                                                                     )
4090                                   ,p_token_4                 => 'PRODUCT_NAME'
4091                                   ,p_value_4                 => 'Subledger Accounting Architecture'
4092                                   ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4093                                   ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
4094                                   ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4095                          );
4096 
4097      IF (C_LEVEL_ERROR >= g_log_level) THEN
4098                         trace
4099                            (p_msg      => 'ERROR: XLA_AP_NO_DIST_LINK_ID'
4100                            ,p_level    => C_LEVEL_ERROR
4101                            ,p_module   => l_log_module);
4102      END IF;
4103 
4104      IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4105            trace
4106               (p_msg      => 'return value. = FALSE'
4107               ,p_level    => C_LEVEL_PROCEDURE
4108               ,p_module   => l_log_module);
4109            trace
4110               (p_msg      => 'END of ValidateRevLinks'
4111               ,p_level    => C_LEVEL_PROCEDURE
4112               ,p_module   => l_log_module);
4113 
4114      END IF;
4115      RETURN FALSE;
4116 ELSE
4117 -- please refer to the comments in method ValidateLinks for explanation.
4118 
4119   IF g_rec_lines.array_rev_dist_id_char_5(g_LineNumber) IS NULL AND
4120         g_rec_lines.array_rev_dist_id_num_5(g_LineNumber) IS NULL THEN
4121     l_temp := 0;
4122   ELSE
4123     l_temp := 1;
4124   END IF;
4125   IF g_rec_lines.array_rev_dist_id_char_4(g_LineNumber) IS NOT NULL OR
4126         g_rec_lines.array_rev_dist_id_num_4(g_LineNumber) IS NOT NULL THEN
4127     l_temp := 2+l_temp;
4128   END IF;
4129   IF g_rec_lines.array_rev_dist_id_char_3(g_LineNumber) IS NOT NULL OR
4130         g_rec_lines.array_rev_dist_id_num_3(g_LineNumber) IS NOT NULL THEN
4131     l_temp := 4+l_temp;
4132   END IF;
4133   IF g_rec_lines.array_rev_dist_id_char_2(g_LineNumber) IS NOT NULL OR
4134         g_rec_lines.array_rev_dist_id_num_2(g_LineNumber) IS NOT NULL THEN
4135     l_temp := 8+l_temp;
4136   END IF;
4137   IF g_rec_lines.array_rev_dist_type(g_LineNumber) IS NULL
4138      OR (g_rec_lines.array_rev_dist_id_char_1(g_LineNumber) IS NULL AND
4139         g_rec_lines.array_rev_dist_id_num_1(g_LineNumber) IS NULL)
4140      OR   l_temp not in (0, 8, 12, 14, 15) THEN
4141 
4142       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
4143       xla_accounting_err_pkg.build_message
4144                                   (p_appli_s_name            => 'XLA'
4145                                   ,p_msg_name                => 'XLA_AP_NO_REV_DIST_LINK_ID'
4146                                   ,p_token_1                 => 'LINE_NUMBER'
4147                                   ,p_value_1                 =>  g_ExtractLine
4148                                   ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4149                                   ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
4150                                   ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4151                          );
4152 
4153        IF (C_LEVEL_ERROR >= g_log_level) THEN
4154                         trace
4155                            (p_msg      => 'ERROR: XLA_AP_NO_REV_DIST_LINK_ID'
4156                            ,p_level    => C_LEVEL_ERROR
4157                            ,p_module   => l_log_module);
4158        END IF;
4159 
4160        IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4161            trace
4162               (p_msg      => 'return value. = FALSE'
4163               ,p_level    => C_LEVEL_PROCEDURE
4164               ,p_module   => l_log_module);
4165            trace
4166               (p_msg      => 'END of ValidateRevLinks'
4167               ,p_level    => C_LEVEL_PROCEDURE
4168               ,p_module   => l_log_module);
4169 
4170        END IF;
4171        RETURN FALSE;
4172   ELSE
4173      IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4174            trace
4175               (p_msg      => 'return value. = TRUE'
4176               ,p_level    => C_LEVEL_PROCEDURE
4177               ,p_module   => l_log_module);
4178            trace
4179               (p_msg      => 'END of ValidateRevLinks'
4180               ,p_level    => C_LEVEL_PROCEDURE
4181               ,p_module   => l_log_module);
4182 
4183      END IF;
4184      RETURN TRUE;
4185   END IF;
4186 END IF;
4187 
4188 
4189 EXCEPTION
4190 WHEN xla_exceptions_pkg.application_exception THEN
4191   RAISE;
4192 WHEN OTHERS  THEN
4193    xla_exceptions_pkg.raise_message
4194            (p_location => 'xla_ae_lines_pkg.ValidateRevLinks');
4195   --
4196 END ValidateRevLinks;
4197 --
4198 /*======================================================================+
4199 |                                                                       |
4200 | Public Procedure                                                      |
4201 |                                                                       |
4202 |                                                                       |
4203 +======================================================================*/
4204 
4205 --
4206 --====================================================================
4207 --
4208 --
4209 --
4210 --
4211 --
4212 --        PUBLIC  procedures and functions
4213 --
4214 --
4215 --
4216 --
4217 --
4218 --
4219 --
4220 --
4221 --
4222 --
4223 --
4224 --
4225 --
4226 --
4227 --
4228 --
4229 --======================================================================
4230 PROCEDURE AccountingReversal (
4231   p_accounting_mode      IN VARCHAR2
4232 ) IS
4233 
4234 l_log_module         VARCHAR2(240);
4235 l_array_event_id                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4236 l_array_ledger_id                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4237 l_array_source_dist_id_num_1         XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4238 l_array_source_dist_id_num_2         XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4239 l_array_source_dist_id_num_3         XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4240 l_array_source_dist_id_num_4         XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4241 l_array_source_dist_id_num_5         XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4242 l_array_source_dist_id_char_1        XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4243 l_array_source_dist_id_char_2        XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4244 l_array_source_dist_id_char_3        XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4245 l_array_source_dist_id_char_4        XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4246 l_array_source_dist_id_char_5        XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4247 l_array_source_dist_type             XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4248 l_array_rev_dist_id_num_1            XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4249 l_array_rev_dist_id_num_2            XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4250 l_array_rev_dist_id_num_3            XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4251 l_array_rev_dist_id_num_4            XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4252 l_array_rev_dist_id_num_5            XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4253 l_array_rev_dist_id_char_1           XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4254 l_array_rev_dist_id_char_2           XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4255 l_array_rev_dist_id_char_3           XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4256 l_array_rev_dist_id_char_4           XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4257 l_array_rev_dist_id_char_5           XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4258 l_array_rev_dist_type                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
4259 
4260 l_array_balance_type_code            XLA_AE_JOURNAL_ENTRY_PKG.t_array_V1L;
4261 l_array_entry_status_code            XLA_AE_JOURNAL_ENTRY_PKG.t_array_V1L;
4262 l_array_event_number                 XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4263 l_array_entity_id                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4264 l_array_header_num                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;    -- 4262811c MPA header for Line reversal
4265 l_array_switch_side_flag             XLA_AE_JOURNAL_ENTRY_PKG.t_array_V1L;    -- 5055878 Reversal method. Y=SIDE, N=SIGN
4266 l_array_tax_line_ref                 XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;  -- bug 7159711
4267 l_array_tax_summary_line_ref         XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;  -- bug 7159711
4268 l_array_tax_rec_nrec_dist_ref        XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;  -- bug 7159711
4269 
4270 l_application_id                     NUMBER;
4271 
4272 -- 5086984 Performance fix
4273 l_array_mpa_acc_ledger_id            XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4274 l_array_mpa_acc_event_id             XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4275 l_array_mpa_acc_ref_ae_header        XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4276 l_array_mpa_acc_temp_line_num        XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4277 l_array_mpa_acc_ae_header_id         XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4278 l_array_mpa_acc_header_num           XLA_AE_JOURNAL_ENTRY_PKG.t_array_num;
4279 l_array_mpa_acc_balance_type         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V1L;
4280 
4281 l_array_gl_date                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_date;  -- 5189664
4282 l_array_accounting_date              XLA_AE_JOURNAL_ENTRY_PKG.t_array_date;  -- 8505463
4283 
4284 l_default_switch_side_flag           CHAR(1);
4285 l_ledger_attrs                       XLA_ACCOUNTING_CACHE_PKG.t_array_ledger_attrs;   --7135700
4286 l_upgrade_check                      NUMBER  DEFAULT 0;                               --7135700
4287 l_primary_ledger_id                  NUMBER;                                          --7135700
4288 l_max_first_open_period              DATE   DEFAULT NULL;                             --7135700
4289 l_min_ref_event_date                 DATE   DEFAULT NULL;                             --7135700
4290 l_error_count                        NUMBER DEFAULT 0;                                --7135700 + 7253269
4291 
4292 
4293 
4294 BEGIN
4295    IF g_log_enabled THEN
4296       l_log_module := C_DEFAULT_MODULE||'.AccountingReversal';
4297    END IF;
4298 
4299    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4300       trace
4301          (p_msg      => 'BEGIN of AccountingReversal'
4302          ,p_level    => C_LEVEL_PROCEDURE
4303          ,p_module   => l_log_module);
4304    END IF;
4305 
4306    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
4307       trace
4308          (p_msg      => 'Performing line level accounting reversal'
4309          ,p_level    => C_LEVEL_STATEMENT
4310          ,p_module   => l_log_module);
4311    END IF;
4312 
4313   l_application_id :=  xla_accounting_cache_pkg.getvaluenum('XLA_EVENT_APPL_ID');
4314 
4315   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
4316      trace
4317         (p_msg      => 'Application ID ='||to_char(l_application_id)
4318         ,p_level    => C_LEVEL_STATEMENT
4319         ,p_module   => l_log_module);
4320      trace -- 5412560
4321         (p_msg      => 'MPA Line Reversal exists = '||xla_accounting_pkg.g_mpa_accrual_exists
4322         ,p_level    => C_LEVEL_STATEMENT
4323         ,p_module   => l_log_module);
4324   END IF;
4325 
4326   ----------------------------------------
4327   -- 5108415 Incomplete MPA
4328   ----------------------------------------
4329   g_incomplete_mpa_acc_LR := NULL;
4330   g_incomplete_mpa_acc_TR := NULL;
4331 
4332 
4333 --***************************************************************************************************************
4334 --***************************************************************************************************************
4335 --*******************    L I N E      R E V E R S A L    ********************************************************
4336 --***************************************************************************************************************
4337 --***************************************************************************************************************
4338 
4339    --
4340    -- selecting all the dummy lines from xla_ae_lines_gt that are due to
4341    -- line level reversal option
4342    --
4343    SELECT event_id
4344          ,ledger_id
4345          ,event_number
4346          ,entity_id
4347          ,source_distribution_type
4348          ,source_distribution_id_num_1
4349          ,source_distribution_id_num_2
4350          ,source_distribution_id_num_3
4351          ,source_distribution_id_num_4
4352          ,source_distribution_id_num_5
4353          ,source_distribution_id_char_1
4354          ,source_distribution_id_char_2
4355          ,source_distribution_id_char_3
4356          ,source_distribution_id_char_4
4357          ,source_distribution_id_char_5
4358          ,reverse_distribution_type
4359          ,reverse_dist_id_num_1
4360          ,reverse_dist_id_num_2
4361          ,reverse_dist_id_num_3
4362          ,reverse_dist_id_num_4
4363          ,reverse_dist_id_num_5
4364          ,reverse_dist_id_char_1
4365          ,reverse_dist_id_char_2
4366          ,reverse_dist_id_char_3
4367          ,reverse_dist_id_char_4
4368          ,reverse_dist_id_char_5
4369          ,switch_side_flag        -- 5055878
4370          ,accounting_date         -- 5189664
4371          ,tax_line_ref_id            -- 7159711
4372          ,tax_summary_line_ref_id    -- 7159711
4373          ,tax_rec_nrec_dist_ref_id   -- 7159711
4374      BULK COLLECT INTO
4375           l_array_event_id
4376          ,l_array_ledger_id
4377          ,l_array_event_number
4378          ,l_array_entity_id
4379          ,l_array_source_dist_type
4380          ,l_array_source_dist_id_num_1
4381          ,l_array_source_dist_id_num_2
4382          ,l_array_source_dist_id_num_3
4383          ,l_array_source_dist_id_num_4
4384          ,l_array_source_dist_id_num_5
4385          ,l_array_source_dist_id_char_1
4386          ,l_array_source_dist_id_char_2
4387          ,l_array_source_dist_id_char_3
4388          ,l_array_source_dist_id_char_4
4389          ,l_array_source_dist_id_char_5
4390          ,l_array_rev_dist_type
4391          ,l_array_rev_dist_id_num_1
4392          ,l_array_rev_dist_id_num_2
4393          ,l_array_rev_dist_id_num_3
4394          ,l_array_rev_dist_id_num_4
4395          ,l_array_rev_dist_id_num_5
4396          ,l_array_rev_dist_id_char_1
4397          ,l_array_rev_dist_id_char_2
4398          ,l_array_rev_dist_id_char_3
4399          ,l_array_rev_dist_id_char_4
4400          ,l_array_rev_dist_id_char_5
4401          ,l_array_switch_side_flag     -- 5055878
4402          ,l_array_gl_date              -- 5189664
4403          ,l_array_tax_line_ref           -- 7159711
4404          ,l_array_tax_summary_line_ref   -- 7159711
4405          ,l_array_tax_rec_nrec_dist_ref  -- 7159711
4406      FROM xla_ae_lines_gt
4407     WHERE reversal_code = 'DUMMY_LR'
4408     ORDER by entity_id, event_number;
4409 
4410    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
4411       trace
4412          (p_msg      => 'Line Reversal - Extract lines with reversal option set to Y = '||SQL%ROWCOUNT
4413          ,p_level    => C_LEVEL_STATEMENT
4414          ,p_module   => l_log_module);
4415    END IF;
4416 
4417    --=======================================================================================================
4418    -- 4669308 Delete the MPA/Accrual Line Reversal (still in GT ables, not in distribution links yet)
4419    --=======================================================================================================
4420    --
4421    ---------------------------------------------------------------------------------------------------------
4422    -- 4669308 Delete the MPA/Accrual Line Reversal in xla_ae_lines_gt (not in distribution links yet)
4423    ---------------------------------------------------------------------------------------------------------
4424    --
4425    IF xla_accounting_pkg.g_mpa_accrual_exists = 'Y' THEN  -- 5412560
4426       -- Modify for performance bug 5086984
4427       FOR i IN 1..l_array_entity_id.count LOOP
4428          SELECT /*+ Leading(HGT) cardinality(hgt 1) index(lgt XLA_AE_LINES_GT_U1) */
4429                 lgt.ledger_id
4430                ,lgt.event_id
4431                ,lgt.ref_ae_header_id
4432                ,lgt.temp_line_num
4433                ,lgt.ae_header_id
4434                ,lgt.header_num
4435                ,lgt.balance_type_code
4436          BULK COLLECT INTO
4437                 l_array_mpa_acc_ledger_id
4438                ,l_array_mpa_acc_event_id
4439                ,l_array_mpa_acc_ref_ae_header
4440                ,l_array_mpa_acc_temp_line_num
4441                ,l_array_mpa_acc_ae_header_id
4442                ,l_array_mpa_acc_header_num
4443                ,l_array_mpa_acc_balance_type
4444          FROM   xla_ae_lines_gt   lgt
4445                ,xla_ae_headers_gt hgt
4446          WHERE l_array_ledger_id(i)                   = lgt.ledger_id
4447            AND l_array_rev_dist_type(i)               = lgt.source_distribution_type
4448            AND nvl(l_array_rev_dist_id_num_1(i),-99)  = nvl(lgt.source_distribution_id_num_1,-99)
4449            AND nvl(l_array_rev_dist_id_num_2(i),-99)  = nvl(lgt.source_distribution_id_num_2,-99)
4450            AND nvl(l_array_rev_dist_id_num_3(i),-99)  = nvl(lgt.source_distribution_id_num_3,-99)
4451            AND nvl(l_array_rev_dist_id_num_4(i),-99)  = nvl(lgt.source_distribution_id_num_4,-99)
4452            AND nvl(l_array_rev_dist_id_num_5(i),-99)  = nvl(lgt.source_distribution_id_num_5,-99)
4453            AND nvl(l_array_rev_dist_id_char_1(i),' ') = nvl(lgt.source_distribution_id_char_1,' ')
4454            AND nvl(l_array_rev_dist_id_char_2(i),' ') = nvl(lgt.source_distribution_id_char_2,' ')
4455            AND nvl(l_array_rev_dist_id_char_3(i),' ') = nvl(lgt.source_distribution_id_char_3,' ')
4456            AND nvl(l_array_rev_dist_id_char_4(i),' ') = nvl(lgt.source_distribution_id_char_4,' ')
4457            AND nvl(l_array_rev_dist_id_char_5(i),' ') = nvl(lgt.source_distribution_id_char_5,' ')
4458            AND lgt.reversal_code IS NULL        -- the lines created form revesal are not reversed again
4459             -- 5412560 replacement
4460            AND NVL(lgt.header_num,0) > 0
4461            AND lgt.header_num          = hgt.header_num
4462            AND hgt.event_id            = lgt.event_id
4463            AND hgt.ledger_id           = lgt.ledger_id
4464            AND hgt.balance_type_code   = lgt.balance_type_code
4465            AND hgt.ae_header_id        = lgt.ae_header_id
4466            AND hgt.entity_id           = l_array_entity_id(i)
4467            AND hgt.event_number        < l_array_event_number(i);
4468            /* 5412560 replaced
4469            AND NOT EXISTS (                     -- the lines already reversed are not reversed again
4470                       SELECT 1
4471                       FROM xla_ae_lines_gt
4472                       WHERE ledger_id        = lgt.ledger_id
4473                         AND ref_ae_header_id = lgt.ref_ae_header_id
4474                         AND temp_line_num    = lgt.temp_line_num * -1)
4475            AND NVL(lgt.header_num,0) > 0
4476            AND lgt.header_num          = hgt.header_num
4477            AND hgt.event_id            = lgt.event_id
4478            AND hgt.ledger_id           = lgt.ledger_id
4479            AND hgt.balance_type_code   = lgt.balance_type_code
4480            AND hgt.entity_id           = l_array_entity_id(i)
4481            AND hgt.event_number        < l_array_event_number(i);
4482            */
4483 
4484          IF (C_LEVEL_STATEMENT >= g_log_level) THEN  -- 5412560
4485                trace
4486                (p_msg      => 'MPA Line Reversal entity='||l_array_entity_id(i)||
4487                               ' count = '||l_array_mpa_acc_ae_header_id.COUNT
4488                ,p_level    => C_LEVEL_STATEMENT
4489                ,p_module   => l_log_module);
4490             for a in 1..l_array_mpa_acc_ae_header_id.count loop
4491                trace
4492                (p_msg      => 'MPA Line Reversal ledger='||l_array_mpa_acc_ledger_id(a)||
4493                               ' ref_header='||l_array_mpa_acc_ref_ae_header(a)||
4494                               ' line='||l_array_mpa_acc_temp_line_num(a)||
4495                               '  header='||l_array_mpa_acc_ae_header_id(a)
4496                ,p_level    => C_LEVEL_STATEMENT
4497                ,p_module   => l_log_module);
4498             end loop;
4499          END IF;
4500 
4501          ---------------------------------------------------------------------------------------------------------
4502          -- 4669308 Delete the MPA/Accrual Line Reversal in xla_ae_lines_gt (not in distribution links yet)
4503          ---------------------------------------------------------------------------------------------------------
4504          FORALL j IN 1..l_array_mpa_acc_ae_header_id.count
4505             DELETE xla_ae_lines_gt
4506             WHERE  ledger_id        = l_array_mpa_acc_ledger_id(j)
4507             AND    ref_ae_header_id = l_array_mpa_acc_ref_ae_header(j)
4508             AND    temp_line_num    = l_array_mpa_acc_temp_line_num(j)
4509             AND    ae_header_id     = l_array_mpa_acc_ae_header_id(j)
4510             AND    header_num       = l_array_mpa_acc_header_num(j);
4511 
4512          ---------------------------------------------------------------------------------------------------------
4513          -- 4669308 Delete the MPA/Accrual Line Reversal in xla_ae_headers_gt (not in distribution links yet)
4514          ---------------------------------------------------------------------------------------------------------
4515          FORALL j IN 1..l_array_mpa_acc_event_id.count
4516             DELETE xla_ae_headers_gt
4517             WHERE  ledger_id         = l_array_mpa_acc_ledger_id(j)
4518             AND    event_id          = l_array_mpa_acc_event_id(j)
4519             AND    ae_header_id      = l_array_mpa_acc_ae_header_id(j)
4520             AND    balance_type_code = l_array_mpa_acc_balance_type(j)
4521             AND    header_num        = l_array_mpa_acc_header_num(j);
4522 
4523       END LOOP;
4524       --
4525    END IF; -- xla_accounting_pkg.g_mpa_accrual_exists = 'Y'
4526    -------------------------------------------------------------------------------------------------------------------------
4527    /****** CHANGES FOR MPA CANCELLATION  *******/
4528   /*    ACCOUNTING BOTH ORIGINAL AND MPA/ACCRUAL REVERSAL PRIOR TO CANCELLATION DATE
4529  	                                   IS REVERSED ON THE CANCELLATION DATE.
4530  	       FUTURE PERIODS FINAL ACCOUNTED DATA WOULD BE REVERSED WITH THE RESPECTIVE
4531  	                                   FUTURE ACCOUNTING DATES.
4532 
4533   NOTE: Changes have been done only for Cancellation from XLA_AE_LINES and not LINES_GT as the
4534         MPA/Accrual Reversal data is deleted from above when Original and cancellation Event
4535         are accounted in the same Run.
4536   */
4537    --
4538       -- reverse the lines in xla_ae_lines_gt table (not in distribution links yet)
4539    --
4540    INSERT INTO xla_ae_lines_gt
4541       (ae_header_id
4542       ,temp_line_num
4543       ,event_id
4544       ,ref_ae_header_id
4545       ,ref_ae_line_num
4546       ,ref_temp_line_num
4547       ,ref_event_id
4548       ,ledger_id
4549       ,balance_type_code
4550       ,accounting_class_code
4551       ,event_class_code
4552       ,event_type_code
4553       ,line_definition_owner_code
4554       ,line_definition_code
4555       ,accounting_line_type_code
4556       ,accounting_line_code
4557       ,code_combination_status_code
4558       ,code_combination_id
4559       ,sl_coa_mapping_name
4560       ,dynamic_insert_flag
4561       ,source_coa_id
4562       ,ccid_coa_id
4563       ,calculate_acctd_amts_flag
4564       ,calculate_g_l_amts_flag
4565       ,gain_or_loss_flag
4566       ,rounding_class_code
4567       ,document_rounding_level
4568       ,DOC_ROUNDING_ACCTD_AMT
4569       ,DOC_ROUNDING_ENTERED_AMT
4570       ,alt_ccid_status_code
4571       ,alt_code_combination_id
4572       ,alt_segment1
4573       ,alt_segment2
4574       ,alt_segment3
4575       ,alt_segment4
4576       ,alt_segment5
4577       ,alt_segment6
4578       ,alt_segment7
4579       ,alt_segment8
4580       ,alt_segment9
4581       ,alt_segment10
4582       ,alt_segment11
4583       ,alt_segment12
4584       ,alt_segment13
4585       ,alt_segment14
4586       ,alt_segment15
4587       ,alt_segment16
4588       ,alt_segment17
4589       ,alt_segment18
4590       ,alt_segment19
4591       ,alt_segment20
4592       ,alt_segment21
4593       ,alt_segment22
4594       ,alt_segment23
4595       ,alt_segment24
4596       ,alt_segment25
4597       ,alt_segment26
4598       ,alt_segment27
4599       ,alt_segment28
4600       ,alt_segment29
4601       ,alt_segment30
4602       ,segment1
4603       ,segment2
4604       ,segment3
4605       ,segment4
4606       ,segment5
4607       ,segment6
4608       ,segment7
4609       ,segment8
4610       ,segment9
4611       ,segment10
4612       ,segment11
4613       ,segment12
4614       ,segment13
4615       ,segment14
4616       ,segment15
4617       ,segment16
4618       ,segment17
4619       ,segment18
4620       ,segment19
4621       ,segment20
4622       ,segment21
4623       ,segment22
4624       ,segment23
4625       ,segment24
4626       ,segment25
4627       ,segment26
4628       ,segment27
4629       ,segment28
4630       ,segment29
4631       ,segment30
4632       ,description
4633       ,gl_transfer_mode_code
4634       ,merge_duplicate_code
4635       ,switch_side_flag
4636       ,unrounded_entered_dr
4637       ,unrounded_entered_cr
4638       ,unrounded_accounted_dr
4639       ,unrounded_accounted_cr
4640       ,entered_currency_mau
4641       ,currency_code
4642       ,currency_conversion_date
4643       ,currency_conversion_rate
4644       ,currency_conversion_type
4645       ,statistical_amount
4646       ,party_id
4647       ,party_site_id
4648       ,party_type_code
4649       ,ussgl_transaction_code
4650       ,jgzz_recon_ref
4651       ,source_distribution_id_char_1
4652       ,source_distribution_id_char_2
4653       ,source_distribution_id_char_3
4654       ,source_distribution_id_char_4
4655       ,source_distribution_id_char_5
4656       ,source_distribution_id_num_1
4657       ,source_distribution_id_num_2
4658       ,source_distribution_id_num_3
4659       ,source_distribution_id_num_4
4660       ,source_distribution_id_num_5
4661       ,source_distribution_type
4662       ,reverse_dist_id_char_1
4663       ,reverse_dist_id_char_2
4664       ,reverse_dist_id_char_3
4665       ,reverse_dist_id_char_4
4666       ,reverse_dist_id_char_5
4667       ,reverse_dist_id_num_1
4668       ,reverse_dist_id_num_2
4669       ,reverse_dist_id_num_3
4670       ,reverse_dist_id_num_4
4671       ,reverse_dist_id_num_5
4672       ,reverse_distribution_type
4673       ,tax_line_ref_id
4674       ,tax_summary_line_ref_id
4675       ,tax_rec_nrec_dist_ref_id
4676       -- 4262811
4677       ,header_num
4678       ,mpa_accrual_entry_flag
4679       ,multiperiod_option_flag
4680       ,multiperiod_start_date
4681       ,multiperiod_end_date
4682       ,reversal_code
4683       ,inherit_desc_flag              -- 4219869
4684       ,encumbrance_type_id            -- 4458381
4685       ,accounting_entry_status_code
4686       ,accounting_date
4687       , BFLOW_APPLICATION_ID
4688         , BFLOW_ENTITY_CODE
4689         , APPLIED_TO_ENTITY_ID
4690         , BFLOW_SOURCE_ID_NUM_1
4691         , BFLOW_SOURCE_ID_NUM_2
4692         , BFLOW_SOURCE_ID_NUM_3
4693         , BFLOW_SOURCE_ID_NUM_4
4694         , BFLOW_SOURCE_ID_CHAR_1
4695         , BFLOW_SOURCE_ID_CHAR_2
4696         , BFLOW_SOURCE_ID_CHAR_3
4697         , BFLOW_SOURCE_ID_CHAR_4
4698         , BFLOW_DISTRIBUTION_TYPE
4699         , BFLOW_DIST_ID_NUM_1
4700         , BFLOW_DIST_ID_NUM_2
4701         , BFLOW_DIST_ID_NUM_3
4702         , BFLOW_DIST_ID_NUM_4
4703         , BFLOW_DIST_ID_NUM_5
4704         , BFLOW_DIST_ID_CHAR_1
4705         , BFLOW_DIST_ID_CHAR_2
4706         , BFLOW_DIST_ID_CHAR_3
4707         , BFLOW_DIST_ID_CHAR_4
4708         , BFLOW_DIST_ID_CHAR_5
4709  , alloc_to_application_id
4710  , alloc_to_entity_code
4711  , alloc_to_source_id_num_1
4712  , alloc_to_source_id_num_2
4713  , alloc_to_source_id_num_3
4714  , alloc_to_source_id_num_4
4715  , alloc_to_source_id_char_1
4716  , alloc_to_source_id_char_2
4717  , alloc_to_source_id_char_3
4718  , alloc_to_source_id_char_4
4719  , alloc_to_distribution_type
4720  , alloc_to_dist_id_char_1
4721  , alloc_to_dist_id_char_2
4722  , alloc_to_dist_id_char_3
4723  , alloc_to_dist_id_char_4
4724  , alloc_to_dist_id_char_5
4725  , alloc_to_dist_id_num_1
4726  , alloc_to_dist_id_num_2
4727  , alloc_to_dist_id_num_3
4728  , alloc_to_dist_id_num_4
4729  , alloc_to_dist_id_num_5    -- 4955764
4730   , analytical_balance_flag  -- Bug 7382288
4731  , anc_id_1
4732  , anc_id_2
4733  , anc_id_3
4734  , anc_id_4
4735  , anc_id_5
4736  , anc_id_6
4737  , anc_id_7
4738  , anc_id_8
4739  , anc_id_9
4740  , anc_id_10
4741  , anc_id_11
4742  , anc_id_12
4743  , anc_id_13
4744  , anc_id_14
4745  , anc_id_15
4746  , anc_id_16
4747  , anc_id_17
4748  , anc_id_18
4749  , anc_id_19
4750  , anc_id_20
4751  , anc_id_21
4752  , anc_id_22
4753  , anc_id_23
4754  , anc_id_24
4755  , anc_id_25
4756  , anc_id_26
4757  , anc_id_27
4758  , anc_id_28
4759  , anc_id_29
4760  , anc_id_30
4761  , anc_id_31
4762  , anc_id_32
4763  , anc_id_33
4764  , anc_id_34
4765  , anc_id_35
4766  , anc_id_36
4767  , anc_id_37
4768  , anc_id_38
4769  , anc_id_39
4770  , anc_id_40
4771  , anc_id_41
4772  , anc_id_42
4773  , anc_id_43
4774  , anc_id_44
4775  , anc_id_45
4776  , anc_id_46
4777  , anc_id_47
4778  , anc_id_48
4779  , anc_id_49
4780  , anc_id_50
4781  , anc_id_51
4782  , anc_id_52
4783  , anc_id_53
4784  , anc_id_54
4785  , anc_id_55
4786  , anc_id_56
4787  , anc_id_57
4788  , anc_id_58
4789  , anc_id_59
4790  , anc_id_60
4791  , anc_id_61
4792  , anc_id_62
4793  , anc_id_63
4794  , anc_id_64
4795  , anc_id_65
4796  , anc_id_66
4797  , anc_id_67
4798  , anc_id_68
4799  , anc_id_69
4800  , anc_id_70
4801  , anc_id_71
4802  , anc_id_72
4803  , anc_id_73
4804  , anc_id_74
4805  , anc_id_75
4806  , anc_id_76
4807  , anc_id_77
4808  , anc_id_78
4809  , anc_id_79
4810  , anc_id_80
4811  , anc_id_81
4812  , anc_id_82
4813  , anc_id_83
4814  , anc_id_84
4815  , anc_id_85
4816  , anc_id_86
4817  , anc_id_87
4818  , anc_id_88
4819  , anc_id_89
4820  , anc_id_90
4821  , anc_id_91
4822  , anc_id_92
4823  , anc_id_93
4824  , anc_id_94
4825  , anc_id_95
4826  , anc_id_96
4827  , anc_id_97
4828  , anc_id_98
4829  , anc_id_99
4830  , anc_id_100)
4831   (SELECT
4832        ae_header_id
4833       ,temp_line_num
4834       ,event_id
4835       ,ref_ae_header_id
4836       ,ref_ae_line_num
4837       ,ref_temp_line_num
4838       ,ref_event_id
4839       ,ledger_id
4840       ,balance_type_code
4841       ,accounting_class_code
4842       ,event_class_code
4843       ,event_type_code
4844       ,line_definition_owner_code
4845       ,line_definition_code
4846       ,accounting_line_type_code
4847       ,accounting_line_code
4848       ,code_combination_status_code
4849       ,code_combination_id
4850       ,sl_coa_mapping_name
4851       ,dynamic_insert_flag
4852       ,source_coa_id
4853       ,ccid_coa_id
4854       ,calculate_acctd_amts_flag
4855       ,calculate_g_l_amts_flag
4856       ,gain_or_loss_flag
4857       ,rounding_class_code
4858       ,document_rounding_level
4859       ,doc_rounding_acctd_amt
4860       ,doc_rounding_entered_amt
4861       ,alt_ccid_status_code
4862       ,alt_code_combination_id
4863       ,alt_segment1
4864       ,alt_segment2
4865       ,alt_segment3
4866       ,alt_segment4
4867       ,alt_segment5
4868       ,alt_segment6
4869       ,alt_segment7
4870       ,alt_segment8
4871       ,alt_segment9
4872       ,alt_segment10
4873       ,alt_segment11
4874       ,alt_segment12
4875       ,alt_segment13
4876       ,alt_segment14
4877       ,alt_segment15
4878       ,alt_segment16
4879       ,alt_segment17
4880       ,alt_segment18
4881       ,alt_segment19
4882       ,alt_segment20
4883       ,alt_segment21
4884       ,alt_segment22
4885       ,alt_segment23
4886       ,alt_segment24
4887       ,alt_segment25
4888       ,alt_segment26
4889       ,alt_segment27
4890       ,alt_segment28
4891       ,alt_segment29
4892       ,alt_segment30
4893       ,segment1
4894       ,segment2
4895       ,segment3
4896       ,segment4
4897       ,segment5
4898       ,segment6
4899       ,segment7
4900       ,segment8
4901       ,segment9
4902       ,segment10
4903       ,segment11
4904       ,segment12
4905       ,segment13
4906       ,segment14
4907       ,segment15
4908       ,segment16
4909       ,segment17
4910       ,segment18
4911       ,segment19
4912       ,segment20
4913       ,segment21
4914       ,segment22
4915       ,segment23
4916       ,segment24
4917       ,segment25
4918       ,segment26
4919       ,segment27
4920       ,segment28
4921       ,segment29
4922       ,segment30
4923       ,description
4924       ,gl_transfer_mode_code
4925       ,merge_duplicate_code
4926       ,switch_side_flag
4927       ,unrounded_entered_dr
4928       ,unrounded_entered_cr
4929       ,unrounded_accounted_dr
4930       ,unrounded_accounted_cr
4931       ,entered_currency_mau
4932       ,currency_code
4933       ,currency_conversion_date
4934       ,currency_conversion_rate
4935       ,currency_conversion_type
4936       ,statistical_amount
4937       ,party_id
4938       ,party_site_id
4939       ,party_type_code
4940       ,ussgl_transaction_code
4941       ,jgzz_recon_ref
4942       ,source_distribution_id_char_1
4943       ,source_distribution_id_char_2
4944       ,source_distribution_id_char_3
4945       ,source_distribution_id_char_4
4946       ,source_distribution_id_char_5
4947       ,source_distribution_id_num_1
4948       ,source_distribution_id_num_2
4949       ,source_distribution_id_num_3
4950       ,source_distribution_id_num_4
4951       ,source_distribution_id_num_5
4952       ,source_distribution_type
4953       ,reverse_dist_id_char_1
4954       ,reverse_dist_id_char_2
4955       ,reverse_dist_id_char_3
4956       ,reverse_dist_id_char_4
4957       ,reverse_dist_id_char_5
4958       ,reverse_dist_id_num_1
4959       ,reverse_dist_id_num_2
4960       ,reverse_dist_id_num_3
4961       ,reverse_dist_id_num_4
4962       ,reverse_dist_id_num_5
4963       ,reverse_distribution_type
4964       ,tax_line_ref_id
4965       ,tax_summary_line_ref_id
4966       ,tax_rec_nrec_dist_ref_id
4967       ,header_num
4968       ,mpa_accrual_entry_flag
4969       ,multiperiod_option_flag
4970       ,multiperiod_start_date
4971       ,multiperiod_end_date
4972       ,reversal_code
4973       ,inherit_desc_flag
4974       ,encumbrance_type_id
4975       ,accounting_entry_status_code
4976       ,accounting_date
4977  , BFLOW_APPLICATION_ID
4978         , BFLOW_ENTITY_CODE
4979         , APPLIED_TO_ENTITY_ID
4980         , BFLOW_SOURCE_ID_NUM_1
4981         , BFLOW_SOURCE_ID_NUM_2
4982         , BFLOW_SOURCE_ID_NUM_3
4983         , BFLOW_SOURCE_ID_NUM_4
4984         , BFLOW_SOURCE_ID_CHAR_1
4985         , BFLOW_SOURCE_ID_CHAR_2
4986         , BFLOW_SOURCE_ID_CHAR_3
4987         , BFLOW_SOURCE_ID_CHAR_4
4988         , BFLOW_DISTRIBUTION_TYPE
4989         , BFLOW_DIST_ID_NUM_1
4990         , BFLOW_DIST_ID_NUM_2
4991         , BFLOW_DIST_ID_NUM_3
4992         , BFLOW_DIST_ID_NUM_4
4993         , BFLOW_DIST_ID_NUM_5
4994         , BFLOW_DIST_ID_CHAR_1
4995         , BFLOW_DIST_ID_CHAR_2
4996         , BFLOW_DIST_ID_CHAR_3
4997         , BFLOW_DIST_ID_CHAR_4
4998         , BFLOW_DIST_ID_CHAR_5
4999  , alloc_to_application_id
5000  , alloc_to_entity_code
5001  , alloc_to_source_id_num_1
5002  , alloc_to_source_id_num_2
5003  , alloc_to_source_id_num_3
5004  , alloc_to_source_id_num_4
5005  , alloc_to_source_id_char_1
5006  , alloc_to_source_id_char_2
5007  , alloc_to_source_id_char_3
5008  , alloc_to_source_id_char_4
5009  , alloc_to_distribution_type
5010  , alloc_to_dist_id_char_1
5011  , alloc_to_dist_id_char_2
5012  , alloc_to_dist_id_char_3
5013  , alloc_to_dist_id_char_4
5014  , alloc_to_dist_id_char_5
5015  , alloc_to_dist_id_num_1
5016  , alloc_to_dist_id_num_2
5017  , alloc_to_dist_id_num_3
5018  , alloc_to_dist_id_num_4
5019  , alloc_to_dist_id_num_5
5020  , analytical_balance_flag  -- Bug 7382288 Included analytical criteria
5021  , anc_id_1
5022  , anc_id_2
5023  , anc_id_3
5024  , anc_id_4
5025  , anc_id_5
5026  , anc_id_6
5027  , anc_id_7
5028  , anc_id_8
5029  , anc_id_9
5030  , anc_id_10
5031  , anc_id_11
5032  , anc_id_12
5033  , anc_id_13
5034  , anc_id_14
5035  , anc_id_15
5036  , anc_id_16
5037  , anc_id_17
5038  , anc_id_18
5039  , anc_id_19
5040  , anc_id_20
5041  , anc_id_21
5042  , anc_id_22
5043  , anc_id_23
5044  , anc_id_24
5045  , anc_id_25
5046  , anc_id_26
5047  , anc_id_27
5048  , anc_id_28
5049  , anc_id_29
5050  , anc_id_30
5051  , anc_id_31
5052  , anc_id_32
5053  , anc_id_33
5054  , anc_id_34
5055  , anc_id_35
5056  , anc_id_36
5057  , anc_id_37
5058  , anc_id_38
5059  , anc_id_39
5060  , anc_id_40
5061  , anc_id_41
5062  , anc_id_42
5063  , anc_id_43
5064  , anc_id_44
5065  , anc_id_45
5066  , anc_id_46
5067  , anc_id_47
5068  , anc_id_48
5069  , anc_id_49
5070  , anc_id_50
5071  , anc_id_51
5072  , anc_id_52
5073  , anc_id_53
5074  , anc_id_54
5075  , anc_id_55
5076  , anc_id_56
5077  , anc_id_57
5078  , anc_id_58
5079  , anc_id_59
5080  , anc_id_60
5081  , anc_id_61
5082  , anc_id_62
5083  , anc_id_63
5084  , anc_id_64
5085  , anc_id_65
5086  , anc_id_66
5087  , anc_id_67
5088  , anc_id_68
5089  , anc_id_69
5090  , anc_id_70
5091  , anc_id_71
5092  , anc_id_72
5093  , anc_id_73
5094  , anc_id_74
5095  , anc_id_75
5096  , anc_id_76
5097  , anc_id_77
5098  , anc_id_78
5099  , anc_id_79
5100  , anc_id_80
5101  , anc_id_81
5102  , anc_id_82
5103  , anc_id_83
5104  , anc_id_84
5105  , anc_id_85
5106  , anc_id_86
5107  , anc_id_87
5108  , anc_id_88
5109  , anc_id_89
5110  , anc_id_90
5111  , anc_id_91
5112  , anc_id_92
5113  , anc_id_93
5114  , anc_id_94
5115  , anc_id_95
5116  , anc_id_96
5117  , anc_id_97
5118  , anc_id_98
5119  , anc_id_99
5120  , anc_id_100
5121     FROM
5122      (SELECT /*+ ORDERED USE_HASH(lgt2) USE_NL(hgt) */
5123          -- populates ae_header_id which is same as event_id till this point
5124           lgt1.event_id                                AE_HEADER_ID
5125          -- populates temp_line_num which is (-ve) of original line
5126          ,0-lgt2.temp_line_num                         TEMP_LINE_NUM
5127          -- populates event_id which is the event_id of event under process
5128          ,lgt1.event_id                                EVENT_ID
5129          -- populates ref_ae_header_id which is ae_header_id of original line
5130          ,hgt.ae_header_id                             REF_AE_HEADER_ID
5131          -- populates ref_ae_line_num which is ae_line_num of original line
5132          ,lgt2.ae_line_num                             REF_AE_LINE_NUM
5133          -- populates ref_temp_line_num which is ae_line_num of original line
5134          ,lgt2.temp_line_num                           REF_TEMP_LINE_NUM
5135          -- populates ref_event_id which is event_id of original line
5136          ,0-lgt2.event_id                                REF_EVENT_ID  -- REF_EVENT_ID made negative for Bug:8277823
5137          ,lgt2.ledger_id                               LEDGER_ID
5138          ,lgt2.balance_type_code                       BALANCE_TYPE_CODE
5139          ,lgt2.accounting_class_code                   ACCOUNTING_CLASS_CODE
5140          ,lgt2.event_class_code                        EVENT_CLASS_CODE
5141          ,lgt2.event_type_code                         EVENT_TYPE_CODE
5142          ,lgt2.line_definition_owner_code              LINE_DEFINITION_OWNER_CODE
5143          ,lgt2.line_definition_code                    LINE_DEFINITION_CODE
5144          ,lgt2.accounting_line_type_code               ACCOUNTING_LINE_TYPE_CODE
5145          ,lgt2.accounting_line_code                    ACCOUNTING_LINE_CODE
5146                   ,decode(lgt2.gain_or_loss_flag, 'Y'
5147              ,decode(lgt2.calculate_g_l_amts_flag,'Y'
5148                 ,lgt2.alt_ccid_status_code,lgt2.code_combination_status_code)
5149          ,lgt2.code_combination_status_code)
5150                                                        CODE_COMBINATION_STATUS_CODE
5151          ,decode(lgt2.gain_or_loss_flag, 'Y'
5152             ,decode(lgt2.calculate_g_l_amts_flag,'Y'
5153                 ,lgt2.alt_code_combination_id, lgt2.code_combination_id)
5154         , lgt2.code_combination_id)
5155                                                        CODE_COMBINATION_ID
5156          ,lgt2.sl_coa_mapping_name                    SL_COA_MAPPING_NAME
5157          ,lgt2.dynamic_insert_flag                     DYNAMIC_INSERT_FLAG
5158          ,lgt2.source_coa_id                           SOURCE_COA_ID
5159          ,lgt2.ccid_coa_id                             CCID_COA_ID
5160          ,lgt2.calculate_acctd_amts_flag               CALCULATE_ACCTD_AMTS_FLAG
5161          ,lgt2.calculate_g_l_amts_flag                 CALCULATE_G_L_AMTS_FLAG
5162          ,lgt2.gain_or_loss_flag                       GAIN_OR_LOSS_FLAG
5163          ,lgt2.rounding_class_code                     ROUNDING_CLASS_CODE
5164          ,lgt2.document_rounding_level                 DOCUMENT_ROUNDING_LEVEL
5165          ,lgt2.doc_rounding_acctd_amt                  DOC_ROUNDING_ACCTD_AMT
5166          ,lgt2.doc_rounding_entered_amt                DOC_ROUNDING_ENTERED_AMT
5167          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.code_combination_status_code ,lgt2.alt_ccid_status_code)
5168                                                        ALT_CCID_STATUS_CODE
5169          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.code_combination_id ,lgt2.alt_code_combination_id)
5170                                                        ALT_CODE_COMBINATION_ID
5171          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment1,lgt2.alt_segment1)     ALT_SEGMENT1
5172          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment2,lgt2.alt_segment2)     ALT_SEGMENT2
5173          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment3,lgt2.alt_segment3)     ALT_SEGMENT3
5174          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment4,lgt2.alt_segment4)     ALT_SEGMENT4
5175          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment5,lgt2.alt_segment5)     ALT_SEGMENT5
5176          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment6,lgt2.alt_segment6)     ALT_SEGMENT6
5177          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment7,lgt2.alt_segment7)     ALT_SEGMENT7
5178          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment8,lgt2.alt_segment8)     ALT_SEGMENT8
5179          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment9,lgt2.alt_segment9)     ALT_SEGMENT9
5180          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment10,lgt2.alt_segment10)   ALT_SEGMENT10
5181          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment11,lgt2.alt_segment11)   ALT_SEGMENT11
5182          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment12,lgt2.alt_segment12)   ALT_SEGMENT12
5183          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment13,lgt2.alt_segment13)   ALT_SEGMENT13
5184          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment14,lgt2.alt_segment14)   ALT_SEGMENT14
5185          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment15,lgt2.alt_segment15)   ALT_SEGMENT15
5186          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment16,lgt2.alt_segment16)   ALT_SEGMENT16
5187          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment17,lgt2.alt_segment17)   ALT_SEGMENT17
5188          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment18,lgt2.alt_segment18)   ALT_SEGMENT18
5189          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment19,lgt2.alt_segment19)   ALT_SEGMENT19
5190          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment20,lgt2.alt_segment20)   ALT_SEGMENT20
5191          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment21,lgt2.alt_segment21)   ALT_SEGMENT21
5192          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment22,lgt2.alt_segment22)   ALT_SEGMENT22
5193          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment23,lgt2.alt_segment23)   ALT_SEGMENT23
5194          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment24,lgt2.alt_segment24)   ALT_SEGMENT24
5195          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment25,lgt2.alt_segment25)   ALT_SEGMENT25
5196          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment26,lgt2.alt_segment26)   ALT_SEGMENT26
5197          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment27,lgt2.alt_segment27)   ALT_SEGMENT27
5198          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment28,lgt2.alt_segment28)   ALT_SEGMENT28
5199          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment29,lgt2.alt_segment29)   ALT_SEGMENT29
5200          ,decode(lgt2.gain_or_loss_flag, 'Y', lgt2.segment30,lgt2.alt_segment30)   ALT_SEGMENT30
5201          ,decode(lgt2.gain_or_loss_flag, 'Y'
5202          ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment1,lgt2.segment1)
5203          ,lgt2.segment1)                                                   SEGMENT1
5204          ,decode(lgt2.gain_or_loss_flag, 'Y'
5205              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment2,lgt2.segment2)
5206          ,lgt2.segment2)                                                   SEGMENT2
5207 
5208          ,decode(lgt2.gain_or_loss_flag, 'Y'
5209              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment3,lgt2.segment3)
5210          ,lgt2.segment3)                                                   SEGMENT3
5211 
5212          ,decode(lgt2.gain_or_loss_flag, 'Y'
5213              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment4,lgt2.segment4)
5214          ,lgt2.segment4)                                                     SEGMENT4
5215 
5216          ,decode(lgt2.gain_or_loss_flag, 'Y'
5217              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment5,lgt2.segment5)
5218          ,lgt2.segment5)                                                   SEGMENT5
5219 
5220          ,decode(lgt2.gain_or_loss_flag, 'Y'
5221              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment6,lgt2.segment6)
5222          ,lgt2.segment6)                                                   SEGMENT6
5223 
5224          ,decode(lgt2.gain_or_loss_flag, 'Y'
5225              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment7,lgt2.segment7)
5226          ,lgt2.segment7)                                                  SEGMENT7
5227 
5228          ,decode(lgt2.gain_or_loss_flag, 'Y'
5229              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment8,lgt2.segment8)
5230          ,lgt2.segment8)                                                   SEGMENT8
5231 
5232          ,decode(lgt2.gain_or_loss_flag, 'Y'
5233                 ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment9,lgt2.segment9)
5234          ,lgt2.segment9)                                                   SEGMENT9
5235 
5236          ,decode(lgt2.gain_or_loss_flag, 'Y'
5237               ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment10,lgt2.segment10)
5238          ,lgt2.segment10)                                                   SEGMENT10
5239 
5240          ,decode(lgt2.gain_or_loss_flag, 'Y'
5241              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment11,lgt2.segment11)
5242          ,lgt2.segment11)                                                   SEGMENT11
5243 
5244          ,decode(lgt2.gain_or_loss_flag, 'Y'
5245              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment12,lgt2.segment12)
5246          ,lgt2.segment12)                                                   SEGMENT12
5247 
5248          ,decode(lgt2.gain_or_loss_flag, 'Y'
5249                ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment13,lgt2.segment13)
5250          ,lgt2.segment13)                                                   SEGMENT13
5251 
5252          ,decode(lgt2.gain_or_loss_flag, 'Y'
5253              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment14,lgt2.segment14)
5254          ,lgt2.segment14)                                                   SEGMENT14
5255 
5256          ,decode(lgt2.gain_or_loss_flag, 'Y'
5257              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment15,lgt2.segment15)
5258          ,lgt2.segment15)                                                   SEGMENT15
5259 
5260          ,decode(lgt2.gain_or_loss_flag, 'Y'
5261               ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment16,lgt2.segment16)
5262          ,lgt2.segment16)                                                   SEGMENT16
5263 
5264          ,decode(lgt2.gain_or_loss_flag, 'Y'
5265               ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment17,lgt2.segment17)
5266          ,lgt2.segment17)                                                   SEGMENT17
5267 
5268          ,decode(lgt2.gain_or_loss_flag, 'Y'
5269              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment18,lgt2.segment18)
5270          ,lgt2.segment18)                                                   SEGMENT18
5271 
5272          ,decode(lgt2.gain_or_loss_flag, 'Y'
5273              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment19,lgt2.segment19)
5274          ,lgt2.segment19)                                                   SEGMENT19
5275 
5276          ,decode(lgt2.gain_or_loss_flag, 'Y'
5277              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment20,lgt2.segment20)
5278          ,lgt2.segment20)                                                  SEGMENT20
5279 
5280          ,decode(lgt2.gain_or_loss_flag, 'Y'
5281              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment21,lgt2.segment21)
5282          ,lgt2.segment21)                                                   SEGMENT21
5283 
5284          ,decode(lgt2.gain_or_loss_flag, 'Y'
5285              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment22,lgt2.segment22)
5286          ,lgt2.segment22)                                                   SEGMENT22
5287 
5288          ,decode(lgt2.gain_or_loss_flag, 'Y'
5289              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment23,lgt2.segment23)
5290          ,lgt2.segment23)                                                   SEGMENT23
5291 
5292          ,decode(lgt2.gain_or_loss_flag, 'Y'
5293              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment24,lgt2.segment24)
5294          ,lgt2.segment24)                                                   SEGMENT24
5295 
5296          ,decode(lgt2.gain_or_loss_flag, 'Y'
5297              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment25,lgt2.segment25)
5298          ,lgt2.segment25)                                                   SEGMENT25
5299 
5300          ,decode(lgt2.gain_or_loss_flag, 'Y'
5301              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment26,lgt2.segment26)
5302          ,lgt2.segment26)                                                   SEGMENT26
5303 
5304          ,decode(lgt2.gain_or_loss_flag, 'Y'
5305              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment27,lgt2.segment27)
5306          ,lgt2.segment27)                                                   SEGMENT27
5307 
5308          ,decode(lgt2.gain_or_loss_flag, 'Y'
5309              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment28,lgt2.segment28)
5310          ,lgt2.segment28)                                                  SEGMENT28
5311 
5312          ,decode(lgt2.gain_or_loss_flag, 'Y'
5313              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment29,lgt2.segment29)
5314          ,lgt2.segment29)                                                   SEGMENT29
5315 
5316          ,decode(lgt2.gain_or_loss_flag, 'Y'
5317              ,decode(lgt2.calculate_g_l_amts_flag,'Y',lgt2.alt_segment30,lgt2.segment30)
5318          ,lgt2.segment30)                                                   SEGMENT30
5319          ,lgt2.description                             DESCRIPTION
5320          ,lgt2.gl_transfer_mode_code                   GL_TRANSFER_MODE_CODE
5321          ,lgt2.merge_duplicate_code                    MERGE_DUPLICATE_CODE
5322    -- commented for bug#11671933 to consider change sign even for gain/loss
5323          --,decode(lgt2.gain_or_loss_flag, 'Y', decode(lgt2.calculate_g_l_amts_flag, 'Y', 'Y', 'N'), lgt1.switch_side_flag)
5324          --                                              SWITCH_SIDE_FLAG -- bug:7337288 changed lgt2 to lgt1 for switch side flag
5325          ,lgt1.switch_side_flag -- added for bug#11671933
5326          -- 5055878 amounts modified for reversal method of SIDE or SIGN
5327          ,DECODE(lgt1.switch_side_flag,'Y',lgt2.unrounded_entered_cr,  -lgt2.unrounded_entered_dr)       UNROUNDED_ENTERED_DR
5328          ,DECODE(lgt1.switch_side_flag,'Y',lgt2.unrounded_entered_dr,  -lgt2.unrounded_entered_cr)       UNROUNDED_ENTERED_CR
5329          ,DECODE(lgt1.switch_side_flag,'Y',lgt2.unrounded_accounted_cr,-lgt2.unrounded_accounted_dr)     UNROUNDED_ACCOUNTED_DR
5330          ,DECODE(lgt1.switch_side_flag,'Y',lgt2.unrounded_accounted_dr,-lgt2.unrounded_accounted_cr)     UNROUNDED_ACCOUNTED_CR
5331          --
5332          ,lgt2.entered_currency_mau                    ENTERED_CURRENCY_MAU
5333          ,lgt2.currency_code                           CURRENCY_CODE
5334          ,lgt2.currency_conversion_date                CURRENCY_CONVERSION_DATE
5335          ,lgt2.currency_conversion_rate                CURRENCY_CONVERSION_RATE
5336          ,lgt2.currency_conversion_type                CURRENCY_CONVERSION_TYPE
5337          --,DECODE(lgt1.switch_side_flag,'Y',lgt2.statistical_amount, -1 * lgt2.statistical_amount)  STATISTICAL_AMOUNT  --bug12726599
5338 	 ,-1 * lgt2.statistical_amount STATISTICAL_AMOUNT -- bug12823865
5339          ,lgt2.party_id                                PARTY_ID
5340          ,lgt2.party_site_id                           PARTY_SITE_ID
5341          ,lgt2.party_type_code                         PARTY_TYPE_CODE
5342          ,lgt2.ussgl_transaction_code                  USSGL_TRANSACTION_CODE
5343          ,lgt2.jgzz_recon_ref                          JGZZ_RECON_REF
5344          ,lgt1.source_distribution_id_char_1           SOURCE_DISTRIBUTION_ID_CHAR_1
5345          ,lgt1.source_distribution_id_char_2           SOURCE_DISTRIBUTION_ID_CHAR_2
5346          ,lgt1.source_distribution_id_char_3           SOURCE_DISTRIBUTION_ID_CHAR_3
5347          ,lgt1.source_distribution_id_char_4           SOURCE_DISTRIBUTION_ID_CHAR_4
5348          ,lgt1.source_distribution_id_char_5           SOURCE_DISTRIBUTION_ID_CHAR_5
5349          ,lgt1.source_distribution_id_num_1            SOURCE_DISTRIBUTION_ID_NUM_1
5350          ,lgt1.source_distribution_id_num_2            SOURCE_DISTRIBUTION_ID_NUM_2
5351          ,lgt1.source_distribution_id_num_3            SOURCE_DISTRIBUTION_ID_NUM_3
5352          ,lgt1.source_distribution_id_num_4            SOURCE_DISTRIBUTION_ID_NUM_4
5353          ,lgt1.source_distribution_id_num_5            SOURCE_DISTRIBUTION_ID_NUM_5
5354          ,lgt1.source_distribution_type                SOURCE_DISTRIBUTION_TYPE
5355          ,lgt2.source_distribution_id_char_1           REVERSE_DIST_ID_CHAR_1
5356          ,lgt2.source_distribution_id_char_2           REVERSE_DIST_ID_CHAR_2
5357          ,lgt2.source_distribution_id_char_3           REVERSE_DIST_ID_CHAR_3
5358          ,lgt2.source_distribution_id_char_4           REVERSE_DIST_ID_CHAR_4
5359          ,lgt2.source_distribution_id_char_5           REVERSE_DIST_ID_CHAR_5
5360          ,lgt2.source_distribution_id_num_1            REVERSE_DIST_ID_NUM_1
5361          ,lgt2.source_distribution_id_num_2            REVERSE_DIST_ID_NUM_2
5362          ,lgt2.source_distribution_id_num_3            REVERSE_DIST_ID_NUM_3
5363          ,lgt2.source_distribution_id_num_4            REVERSE_DIST_ID_NUM_4
5364          ,lgt2.source_distribution_id_num_5            REVERSE_DIST_ID_NUM_5
5365          ,lgt2.source_distribution_type                REVERSE_DISTRIBUTION_TYPE
5366          ,nvl(lgt1.tax_line_ref_id,lgt2.tax_line_ref_id)                   TAX_LINE_REF_ID          -- bug 7159711
5367          ,nvl(lgt1.tax_summary_line_ref_id,lgt2.tax_summary_line_ref_id)   TAX_SUMMARY_LINE_REF_ID  -- bug 7159711
5368          ,nvl(lgt1.tax_rec_nrec_dist_ref_id,lgt2.tax_rec_nrec_dist_ref_id) TAX_REC_NREC_DIST_REF_ID -- bug 7159711
5369          ,NVL(lgt2.header_num,0)                       HEADER_NUM
5370          ,lgt2.mpa_accrual_entry_flag                  MPA_ACCRUAL_ENTRY_FLAG
5371          ,lgt2.multiperiod_option_flag                 MULTIPERIOD_OPTION_FLAG
5372          ,lgt2.multiperiod_start_date                  MULTIPERIOD_START_DATE
5373          ,lgt2.multiperiod_end_date                    MULTIPERIOD_END_DATE
5374          -- populate reversal_code indicating that line is result of reversal
5375          ,'REVERSAL'                                   REVERSAL_CODE
5376          ,'N'                                          INHERIT_DESC_FLAG
5377          ,lgt2.encumbrance_type_id                     ENCUMBRANCE_TYPE_ID
5378          -- denormalises entry status from headers to line to determine the status of entry being created
5379          ,hgt.accounting_entry_status_code             ACCOUNTING_ENTRY_STATUS_CODE
5380          ,lgt1.accounting_date                         ACCOUNTING_DATE
5381          -- the following assigns duplicate rownum to reversal lines created from same
5382          -- original line. This is used to filter duplicate rows in the outer query.
5383          ,row_number() over
5384               (partition by lgt2.ref_ae_header_Id, lgt2.ledger_id,lgt2.temp_line_num
5385                    order by lgt1.event_number
5386               ) rn
5387  , lgt2.BFLOW_APPLICATION_ID
5388         , lgt2.BFLOW_ENTITY_CODE
5389         , lgt2.APPLIED_TO_ENTITY_ID
5390         , lgt2.BFLOW_SOURCE_ID_NUM_1
5391         , lgt2.BFLOW_SOURCE_ID_NUM_2
5392         , lgt2.BFLOW_SOURCE_ID_NUM_3
5393         , lgt2.BFLOW_SOURCE_ID_NUM_4
5394         , lgt2.BFLOW_SOURCE_ID_CHAR_1
5395         , lgt2.BFLOW_SOURCE_ID_CHAR_2
5396         , lgt2.BFLOW_SOURCE_ID_CHAR_3
5397         , lgt2.BFLOW_SOURCE_ID_CHAR_4
5398         , lgt2.BFLOW_DISTRIBUTION_TYPE
5399         , lgt2.BFLOW_DIST_ID_NUM_1
5400         , lgt2.BFLOW_DIST_ID_NUM_2
5401         , lgt2.BFLOW_DIST_ID_NUM_3
5402         , lgt2.BFLOW_DIST_ID_NUM_4
5403         , lgt2.BFLOW_DIST_ID_NUM_5
5404         , lgt2.BFLOW_DIST_ID_CHAR_1
5405         , lgt2.BFLOW_DIST_ID_CHAR_2
5406         , lgt2.BFLOW_DIST_ID_CHAR_3
5407         , lgt2.BFLOW_DIST_ID_CHAR_4
5408         , lgt2.BFLOW_DIST_ID_CHAR_5
5409  , lgt2.alloc_to_application_id     alloc_to_application_id
5410  , lgt2.alloc_to_entity_code        alloc_to_entity_code
5411  , lgt2.alloc_to_source_id_num_1        alloc_to_source_id_num_1
5412  , lgt2.alloc_to_source_id_num_2        alloc_to_source_id_num_2
5413  , lgt2.alloc_to_source_id_num_3        alloc_to_source_id_num_3
5414  , lgt2.alloc_to_source_id_num_4        alloc_to_source_id_num_4
5415  , lgt2.alloc_to_source_id_char_1   alloc_to_source_id_char_1
5416  , lgt2.alloc_to_source_id_char_2   alloc_to_source_id_char_2
5417  , lgt2.alloc_to_source_id_char_3   alloc_to_source_id_char_3
5418  , lgt2.alloc_to_source_id_char_4   alloc_to_source_id_char_4
5419  , lgt2.alloc_to_distribution_type  alloc_to_distribution_type
5420  , lgt2.alloc_to_dist_id_char_1     alloc_to_dist_id_char_1
5421  , lgt2.alloc_to_dist_id_char_2     alloc_to_dist_id_char_2
5422  , lgt2.alloc_to_dist_id_char_3     alloc_to_dist_id_char_3
5423  , lgt2.alloc_to_dist_id_char_4     alloc_to_dist_id_char_4
5424  , lgt2.alloc_to_dist_id_char_5     alloc_to_dist_id_char_5
5425  , lgt2.alloc_to_dist_id_num_1      alloc_to_dist_id_num_1
5426  , lgt2.alloc_to_dist_id_num_2      alloc_to_dist_id_num_2
5427  , lgt2.alloc_to_dist_id_num_3      alloc_to_dist_id_num_3
5428  , lgt2.alloc_to_dist_id_num_4      alloc_to_dist_id_num_4
5429  , lgt2.alloc_to_dist_id_num_5      alloc_to_dist_id_num_5
5430  , lgt2.analytical_balance_flag -- Bug 7382288- Included analytical criteria
5431  , lgt2.anc_id_1
5432  , lgt2.anc_id_2
5433  , lgt2.anc_id_3
5434  , lgt2.anc_id_4
5435  , lgt2.anc_id_5
5436  , lgt2.anc_id_6
5437  , lgt2.anc_id_7
5438  , lgt2.anc_id_8
5439  , lgt2.anc_id_9
5440  , lgt2.anc_id_10
5441  , lgt2.anc_id_11
5442  , lgt2.anc_id_12
5443  , lgt2.anc_id_13
5444  , lgt2.anc_id_14
5445  , lgt2.anc_id_15
5446  , lgt2.anc_id_16
5447  , lgt2.anc_id_17
5448  , lgt2.anc_id_18
5449  , lgt2.anc_id_19
5450  , lgt2.anc_id_20
5451  , lgt2.anc_id_21
5452  , lgt2.anc_id_22
5453  , lgt2.anc_id_23
5454  , lgt2.anc_id_24
5455  , lgt2.anc_id_25
5456  , lgt2.anc_id_26
5457  , lgt2.anc_id_27
5458  , lgt2.anc_id_28
5459  , lgt2.anc_id_29
5460  , lgt2.anc_id_30
5461  , lgt2.anc_id_31
5462  , lgt2.anc_id_32
5463  , lgt2.anc_id_33
5464  , lgt2.anc_id_34
5465  , lgt2.anc_id_35
5466  , lgt2.anc_id_36
5467  , lgt2.anc_id_37
5468  , lgt2.anc_id_38
5469  , lgt2.anc_id_39
5470  , lgt2.anc_id_40
5471  , lgt2.anc_id_41
5472  , lgt2.anc_id_42
5473  , lgt2.anc_id_43
5474  , lgt2.anc_id_44
5475  , lgt2.anc_id_45
5476  , lgt2.anc_id_46
5477  , lgt2.anc_id_47
5478  , lgt2.anc_id_48
5479  , lgt2.anc_id_49
5480  , lgt2.anc_id_50
5481  , lgt2.anc_id_51
5482  , lgt2.anc_id_52
5483  , lgt2.anc_id_53
5484  , lgt2.anc_id_54
5485  , lgt2.anc_id_55
5486  , lgt2.anc_id_56
5487  , lgt2.anc_id_57
5488  , lgt2.anc_id_58
5489  , lgt2.anc_id_59
5490  , lgt2.anc_id_60
5491  , lgt2.anc_id_61
5492  , lgt2.anc_id_62
5493  , lgt2.anc_id_63
5494  , lgt2.anc_id_64
5495  , lgt2.anc_id_65
5496  , lgt2.anc_id_66
5497  , lgt2.anc_id_67
5498  , lgt2.anc_id_68
5499  , lgt2.anc_id_69
5500  , lgt2.anc_id_70
5501  , lgt2.anc_id_71
5502  , lgt2.anc_id_72
5503  , lgt2.anc_id_73
5504  , lgt2.anc_id_74
5505  , lgt2.anc_id_75
5506  , lgt2.anc_id_76
5507  , lgt2.anc_id_77
5508  , lgt2.anc_id_78
5509  , lgt2.anc_id_79
5510  , lgt2.anc_id_80
5511  , lgt2.anc_id_81
5512  , lgt2.anc_id_82
5513  , lgt2.anc_id_83
5514  , lgt2.anc_id_84
5515  , lgt2.anc_id_85
5516  , lgt2.anc_id_86
5517  , lgt2.anc_id_87
5518  , lgt2.anc_id_88
5519  , lgt2.anc_id_89
5520  , lgt2.anc_id_90
5521  , lgt2.anc_id_91
5522  , lgt2.anc_id_92
5523  , lgt2.anc_id_93
5524  , lgt2.anc_id_94
5525  , lgt2.anc_id_95
5526  , lgt2.anc_id_96
5527  , lgt2.anc_id_97
5528  , lgt2.anc_id_98
5529  , lgt2.anc_id_99
5530  , lgt2.anc_id_100
5531         FROM
5532           xla_ae_lines_gt     lgt1
5533          ,xla_ae_lines_gt     lgt2
5534          ,xla_ae_headers_gt   hgt
5535       WHERE lgt1.reversal_code                              = 'DUMMY_LR'
5536         AND lgt2.ledger_id                                  = lgt1.ledger_id
5537         AND lgt2.source_distribution_type                   = lgt1.reverse_distribution_type
5538         AND nvl(lgt2.source_distribution_id_num_1,-99)      = nvl(lgt1.reverse_dist_id_num_1,-99)
5539         AND nvl(lgt2.source_distribution_id_num_2,-99)      = nvl(lgt1.reverse_dist_id_num_2,-99)
5540         AND nvl(lgt2.source_distribution_id_num_3,-99)      = nvl(lgt1.reverse_dist_id_num_3,-99)
5541         AND nvl(lgt2.source_distribution_id_num_4,-99)      = nvl(lgt1.reverse_dist_id_num_4,-99)
5542         AND nvl(lgt2.source_distribution_id_num_5,-99)      = nvl(lgt1.reverse_dist_id_num_5,-99)
5543         AND nvl(lgt2.source_distribution_id_char_1,' ')     = nvl(lgt1.reverse_dist_id_char_1,' ')
5544         AND nvl(lgt2.source_distribution_id_char_2,' ')     = nvl(lgt1.reverse_dist_id_char_2,' ')
5545         AND nvl(lgt2.source_distribution_id_char_3,' ')     = nvl(lgt1.reverse_dist_id_char_3,' ')
5546         AND nvl(lgt2.source_distribution_id_char_4,' ')     = nvl(lgt1.reverse_dist_id_char_4,' ')
5547         AND nvl(lgt2.source_distribution_id_char_5,' ')     = nvl(lgt1.reverse_dist_id_char_5,' ')
5548         AND hgt.event_id            = lgt2.event_id
5549         AND hgt.ledger_id           = lgt2.ledger_id
5550         AND hgt.balance_type_code   = lgt2.balance_type_code
5551         AND hgt.entity_id           = lgt1.entity_id
5552         -- lines for events with event number > current event number are not reversed.
5553         AND hgt.event_number        < lgt1.event_number
5554         AND hgt.header_num          = lgt2.header_num-- 4262811c  Line Reversal (xla_ae_lines_gt_u1 error)
5555         AND hgt.ae_header_id        = lgt2.ae_header_id
5556      )
5557     WHERE rn = 1
5558   );
5559 
5560 
5561    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
5562       trace
5563          (p_msg      => 'Line Reversal - Reversal lines created from xla_ae_lines_gt = '||SQL%ROWCOUNT
5564          ,p_level    => C_LEVEL_STATEMENT
5565          ,p_module   => l_log_module);
5566    END IF;
5567 
5568    --------------------------------------------------------------------------------------------------------
5569    -- 5108415 For Line Reversal, Store the incomplete MPA/AccRev entries to be used in DeleteIncompleteMPA
5570    --------------------------------------------------------------------------------------------------------
5571    IF p_accounting_mode IN ('F','RESERVE_FUNDS') THEN
5572 
5573       SELECT /*+ Leading(LGT,XDL)  use_nl(lgt xdl aeh ael)*/  -- 5262950
5574              ael.ae_header_id
5575             ,ael.ae_line_num
5576             ,aeh.parent_ae_header_id
5577       BULK COLLECT INTO
5578              g_incomplete_mpa_acc_LR.l_array_ae_header_id
5579             ,g_incomplete_mpa_acc_LR.l_array_ae_line_num
5580             ,g_incomplete_mpa_acc_LR.l_array_parent_ae_header
5581       FROM
5582            xla_ae_lines_gt           lgt
5583           ,xla_ae_lines              ael
5584           ,xla_ae_headers            aeh
5585           ,xla_distribution_links    xdl
5586       WHERE xdl.application_id                          = l_application_id
5587         AND xdl.source_distribution_type                = lgt.reverse_distribution_type
5588         AND lgt.reversal_code                           = 'DUMMY_LR'
5589         AND     xdl.source_distribution_id_num_1        =     lgt.reverse_dist_id_num_1       -- 5479652
5590         AND nvl(xdl.source_distribution_id_num_2,-99)   = nvl(lgt.reverse_dist_id_num_2,-99)
5591         AND nvl(xdl.source_distribution_id_num_3,-99)   = nvl(lgt.reverse_dist_id_num_3,-99)
5592         AND nvl(xdl.source_distribution_id_num_4,-99)   = nvl(lgt.reverse_dist_id_num_4,-99)
5593         AND nvl(xdl.source_distribution_id_num_5,-99)   = nvl(lgt.reverse_dist_id_num_5,-99)
5594         AND nvl(xdl.source_distribution_id_char_1,' ')  = nvl(lgt.reverse_dist_id_char_1,' ')
5595         AND nvl(xdl.source_distribution_id_char_2,' ')  = nvl(lgt.reverse_dist_id_char_2,' ')
5596         AND nvl(xdl.source_distribution_id_char_3,' ')  = nvl(lgt.reverse_dist_id_char_3,' ')
5597         AND nvl(xdl.source_distribution_id_char_4,' ')  = nvl(lgt.reverse_dist_id_char_4,' ')
5598         AND nvl(xdl.source_distribution_id_char_5,' ')  = nvl(lgt.reverse_dist_id_char_5,' ')
5599         AND aeh.application_id                          = xdl.application_id
5600         AND aeh.ae_header_id                            = xdl.ae_header_id
5601         AND aeh.ledger_id                               = lgt.ledger_id
5602         AND aeh.entity_id                               = lgt.entity_id
5603         AND ael.application_id                          = aeh.application_id
5604         AND ael.ae_header_id                            = aeh.ae_header_id
5605         AND ael.ae_line_num                             = xdl.ae_line_num
5606         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
5607 
5608       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
5609          trace
5610                (p_msg      => 'Incomplete mpa_acc_LR  count='||g_incomplete_mpa_acc_LR.l_array_ae_header_id.COUNT
5611                ,p_level    => C_LEVEL_STATEMENT
5612                ,p_module   => l_log_module);
5613          FOR i in 1..g_incomplete_mpa_acc_LR.l_array_ae_header_id.COUNT LOOP
5614             trace
5615                (p_msg      => 'Incomplete mpa_acc_LR  ae_header='||g_incomplete_mpa_acc_LR.l_array_ae_header_id(i)||
5616                               ' ae_line='||g_incomplete_mpa_acc_LR.l_array_ae_line_num(i)||
5617                               ' parent='||g_incomplete_mpa_acc_LR.l_array_parent_ae_header(i)
5618                ,p_level    => C_LEVEL_STATEMENT
5619                ,p_module   => l_log_module);
5620          END LOOP;
5621       END IF;
5622    END IF;
5623    -------------------------------------------------------------------------------------------
5624 
5625    --
5626    ---------------------------------------------------------------------------------------------------------
5627    -- Reverse the lines in xla_ae_lines table
5628    --
5629    -- Some for 4669308:
5630    --          For MPA entries, only reverse what is necessary , ie create reversal for Complete MPA only.
5631    --          Do not create reversal for incomplete entry (since it will get deleted anyway).
5632    --          Also, since the redundant lines will affect ROUNDING calculation.
5633    --          Need to create reversal in Draft mode also (so can be viewed).
5634    ---------------------------------------------------------------------------------------------------------
5635    --
5636    INSERT INTO xla_ae_lines_gt
5637       (ae_header_id
5638       ,temp_line_num
5639       ,event_id
5640       ,ref_ae_header_id
5641       ,ref_ae_line_num
5642       ,ref_temp_line_num
5643       ,ref_event_id
5644       ,ledger_id
5645       ,balance_type_code
5646       ,accounting_class_code
5647       ,event_class_code
5648       ,event_type_code
5649       ,line_definition_owner_code
5650       ,line_definition_code
5651       ,accounting_line_type_code
5652       ,accounting_line_code
5653       ,code_combination_status_code
5654       ,code_combination_id
5655       ,alt_ccid_status_code
5656       ,alt_code_combination_id
5657       ,description
5658       ,gl_transfer_mode_code
5659       ,merge_duplicate_code
5660       ,switch_side_flag  -- 5055878
5661       ,unrounded_entered_dr
5662       ,unrounded_entered_cr
5663       ,unrounded_accounted_dr
5664       ,unrounded_accounted_cr
5665       ,calculate_acctd_amts_flag
5666       ,calculate_g_l_amts_flag
5667       ,gain_or_loss_flag
5668       ,rounding_class_code
5669       ,document_rounding_level
5670       ,doc_rounding_acctd_amt
5671       ,doc_rounding_entered_amt
5672       ,entered_currency_mau
5673       ,currency_code
5674       ,currency_conversion_date
5675       ,currency_conversion_rate
5676       ,currency_conversion_type
5677       ,statistical_amount
5678       ,party_id
5679       ,party_site_id
5680       ,party_type_code
5681       ,ussgl_transaction_code
5682       ,jgzz_recon_ref
5683       ,source_distribution_id_char_1
5684       ,source_distribution_id_char_2
5685       ,source_distribution_id_char_3
5686       ,source_distribution_id_char_4
5687       ,source_distribution_id_char_5
5688       ,source_distribution_id_num_1
5689       ,source_distribution_id_num_2
5690       ,source_distribution_id_num_3
5691       ,source_distribution_id_num_4
5692       ,source_distribution_id_num_5
5693       ,source_distribution_type
5694       ,reverse_dist_id_char_1
5695       ,reverse_dist_id_char_2
5696       ,reverse_dist_id_char_3
5697       ,reverse_dist_id_char_4
5698       ,reverse_dist_id_char_5
5699       ,reverse_dist_id_num_1
5700       ,reverse_dist_id_num_2
5701       ,reverse_dist_id_num_3
5702       ,reverse_dist_id_num_4
5703       ,reverse_dist_id_num_5
5704       ,reverse_distribution_type
5705       ,reversal_code
5706       ,accounting_entry_status_code
5707       ,inherit_desc_flag
5708       ,header_num
5709       ,encumbrance_type_id
5710       ,mpa_accrual_entry_flag
5711       ,accounting_date
5712        , BFLOW_APPLICATION_ID
5713         , BFLOW_ENTITY_CODE
5714         , APPLIED_TO_ENTITY_ID
5715         , BFLOW_SOURCE_ID_NUM_1
5716         , BFLOW_SOURCE_ID_NUM_2
5717         , BFLOW_SOURCE_ID_NUM_3
5718         , BFLOW_SOURCE_ID_NUM_4
5719         , BFLOW_SOURCE_ID_CHAR_1
5720         , BFLOW_SOURCE_ID_CHAR_2
5721         , BFLOW_SOURCE_ID_CHAR_3
5722         , BFLOW_SOURCE_ID_CHAR_4
5723         , BFLOW_DISTRIBUTION_TYPE
5724         , BFLOW_DIST_ID_NUM_1
5725         , BFLOW_DIST_ID_NUM_2
5726         , BFLOW_DIST_ID_NUM_3
5727         , BFLOW_DIST_ID_NUM_4
5728         , BFLOW_DIST_ID_NUM_5
5729         , BFLOW_DIST_ID_CHAR_1
5730         , BFLOW_DIST_ID_CHAR_2
5731         , BFLOW_DIST_ID_CHAR_3
5732         , BFLOW_DIST_ID_CHAR_4
5733         , BFLOW_DIST_ID_CHAR_5
5734  , alloc_to_application_id
5735  , alloc_to_entity_code
5736  , alloc_to_source_id_num_1
5737  , alloc_to_source_id_num_2
5738  , alloc_to_source_id_num_3
5739  , alloc_to_source_id_num_4
5740  , alloc_to_source_id_char_1
5741  , alloc_to_source_id_char_2
5742  , alloc_to_source_id_char_3
5743  , alloc_to_source_id_char_4
5744  , alloc_to_distribution_type
5745  , alloc_to_dist_id_char_1
5746  , alloc_to_dist_id_char_2
5747  , alloc_to_dist_id_char_3
5748  , alloc_to_dist_id_char_4
5749  , alloc_to_dist_id_char_5
5750  , alloc_to_dist_id_num_1
5751  , alloc_to_dist_id_num_2
5752  , alloc_to_dist_id_num_3
5753  , alloc_to_dist_id_num_4
5754  , alloc_to_dist_id_num_5
5755  ,TAX_LINE_REF_ID           -- Bug 7159711
5756  ,TAX_SUMMARY_LINE_REF_ID   -- Bug 7159711
5757  ,TAX_REC_NREC_DIST_REF_ID  -- Bug 7159711
5758  ,analytical_balance_flag   -- Bug 7382288
5759  ,ANC_ID_1 -- 8691573
5760  )
5761    (SELECT
5762        ae_header_id
5763       ,temp_line_num
5764       ,event_id
5765       ,ref_ae_header_id
5766       ,ref_ae_line_num
5767       ,ref_temp_line_num
5768       ,ref_event_id
5769       ,ledger_id
5770       ,balance_type_code
5771       ,accounting_class_code
5772       ,event_class_code
5773       ,event_type_code
5774       ,line_definition_owner_code
5775       ,line_definition_code
5776       ,accounting_line_type_code
5777       ,accounting_line_code
5778       ,code_combination_status_code
5779       ,code_combination_id
5780       ,code_combination_status_code
5781       ,code_combination_id
5782       ,description
5783       ,gl_transfer_mode_code
5784       ,merge_duplicate_code
5785       ,switch_side_flag  -- 5055878
5786       ,unrounded_entered_dr
5787       ,unrounded_entered_cr
5788       ,unrounded_accounted_dr
5789       ,unrounded_accounted_cr
5790       ,calculate_acctd_amts_flag
5791       ,calculate_g_l_amts_flag
5792       ,gain_or_loss_flag
5793       ,rounding_class_code
5794       ,document_rounding_level
5795       ,doc_rounding_acctd_amt
5796       ,doc_rounding_entered_amt
5797       ,entered_currency_mau
5798       ,currency_code
5799       ,currency_conversion_date
5800       ,currency_conversion_rate
5801       ,currency_conversion_type
5802       ,statistical_amount
5803       ,party_id
5804       ,party_site_id
5805       ,party_type_code
5806       ,ussgl_transaction_code
5807       ,jgzz_recon_ref
5808       ,source_distribution_id_char_1
5809       ,source_distribution_id_char_2
5810       ,source_distribution_id_char_3
5811       ,source_distribution_id_char_4
5812       ,source_distribution_id_char_5
5813       ,source_distribution_id_num_1
5814       ,source_distribution_id_num_2
5815       ,source_distribution_id_num_3
5816       ,source_distribution_id_num_4
5817       ,source_distribution_id_num_5
5818       ,source_distribution_type
5819       ,reverse_dist_id_char_1
5820       ,reverse_dist_id_char_2
5821       ,reverse_dist_id_char_3
5822       ,reverse_dist_id_char_4
5823       ,reverse_dist_id_char_5
5824       ,reverse_dist_id_num_1
5825       ,reverse_dist_id_num_2
5826       ,reverse_dist_id_num_3
5827       ,reverse_dist_id_num_4
5828       ,reverse_dist_id_num_5
5829       ,reverse_distribution_type
5830       ,reversal_code
5831       ,accounting_entry_status_code
5832       ,inherit_desc_flag
5833       ,header_num
5834       ,encumbrance_type_id
5835       ,mpa_accrual_entry_flag
5836       ,accounting_date
5837        , APPLIED_TO_APPLICATION_ID
5838  , APPLIED_TO_ENTITY_CODE
5839  , APPLIED_TO_ENTITY_ID
5840  , APPLIED_TO_SOURCE_ID_NUM_1
5841  , APPLIED_TO_SOURCE_ID_NUM_2
5842  , APPLIED_TO_SOURCE_ID_NUM_3
5843  , APPLIED_TO_SOURCE_ID_NUM_4
5844  , APPLIED_TO_SOURCE_ID_CHAR_1
5845  , APPLIED_TO_SOURCE_ID_CHAR_2
5846  , APPLIED_TO_SOURCE_ID_CHAR_3
5847  , APPLIED_TO_SOURCE_ID_CHAR_4
5848  , APPLIED_TO_DISTRIBUTION_TYPE
5849  , APPLIED_TO_DIST_ID_NUM_1
5850  , APPLIED_TO_DIST_ID_NUM_2
5851  , APPLIED_TO_DIST_ID_NUM_3
5852  , APPLIED_TO_DIST_ID_NUM_4
5853  , APPLIED_TO_DIST_ID_NUM_5
5854  , APPLIED_TO_DIST_ID_CHAR_1
5855  , APPLIED_TO_DIST_ID_CHAR_2
5856  , APPLIED_TO_DIST_ID_CHAR_3
5857  , APPLIED_TO_DIST_ID_CHAR_4
5858  , APPLIED_TO_DIST_ID_CHAR_5
5859  , alloc_to_application_id
5860  , alloc_to_entity_code
5861  , alloc_to_source_id_num_1
5862  , alloc_to_source_id_num_2
5863  , alloc_to_source_id_num_3
5864  , alloc_to_source_id_num_4
5865  , alloc_to_source_id_char_1
5866  , alloc_to_source_id_char_2
5867  , alloc_to_source_id_char_3
5868  , alloc_to_source_id_char_4
5869  , alloc_to_distribution_type
5870  , alloc_to_dist_id_char_1
5871  , alloc_to_dist_id_char_2
5872  , alloc_to_dist_id_char_3
5873  , alloc_to_dist_id_char_4
5874  , alloc_to_dist_id_char_5
5875  , alloc_to_dist_id_num_1
5876  , alloc_to_dist_id_num_2
5877  , alloc_to_dist_id_num_3
5878  , alloc_to_dist_id_num_4
5879  , alloc_to_dist_id_num_5
5880  ,TAX_LINE_REF_ID           -- Bug 7159711
5881  ,TAX_SUMMARY_LINE_REF_ID   -- Bug 7159711
5882  ,TAX_REC_NREC_DIST_REF_ID  -- Bug 7159711
5883  ,analytical_balance_flag   -- Bug 7382288
5884  ,ANC_ID_1 -- 8691573
5885    FROM
5886       (SELECT /*+ leading(lgt) use_nl(xdl,ael,aeh) */
5887           -- populates ae_header_id which is same as event_id till this point
5888           lgt.event_id                                          AE_HEADER_ID
5889          -- populates temp_line_num which is (-ve) of original line
5890          ,0 - xdl.temp_line_num                                 TEMP_LINE_NUM
5891          -- populates event_id which is the event_id of event under process
5892          ,lgt.event_id                                          EVENT_ID
5893          -- populates ref_ae_header_id which is ae_header_id of original line
5894          ,ael.ae_header_id                                      REF_AE_HEADER_ID
5895          -- populates ref_ae_line_num which is ae_line_num of original line
5896          ,ael.ae_line_num                                       REF_AE_LINE_NUM
5897          -- populates ref_temp_line_num which is ae_line_num of original line
5898          ,xdl.temp_line_num                                     REF_TEMP_LINE_NUM
5899          -- populates ref_event_id which is event_id of original line
5900          ,xdl.event_id                                          REF_EVENT_ID
5901          ,lgt.ledger_id                                         LEDGER_ID
5902          ,aeh.balance_type_code                                 BALANCE_TYPE_CODE
5903          ,ael.accounting_class_code                             ACCOUNTING_CLASS_CODE
5904          ,xdl.event_class_code                                  EVENT_CLASS_CODE
5905          ,xdl.event_type_code                                   EVENT_TYPE_CODE
5906          ,xdl.line_definition_owner_code                        LINE_DEFINITION_OWNER_CODE
5907          ,xdl.line_definition_code                              LINE_DEFINITION_CODE
5908          ,xdl.accounting_line_type_code                         ACCOUNTING_LINE_TYPE_CODE
5909          ,xdl.accounting_line_code                              ACCOUNTING_LINE_CODE
5910          ,C_CREATED                                             CODE_COMBINATION_STATUS_CODE
5911          ,ael.code_combination_id                               CODE_COMBINATION_ID
5912          ,ael.description                                       DESCRIPTION
5913          ,ael.gl_transfer_mode_code                             GL_TRANSFER_MODE_CODE
5914          ,xdl.merge_duplicate_code                              MERGE_DUPLICATE_CODE
5915     -- commented for bug#11671933 to consider change sign even for gain/loss
5916          --,decode(ael.gain_or_loss_flag, 'Y', decode(xdl.calculate_g_l_amts_flag, 'Y', 'Y', 'N'), lgt.switch_side_flag)
5917          --                                                       SWITCH_SIDE_FLAG
5918         , lgt.switch_side_flag -- added for bug#11671933
5919          -- 5055878 amounts modified for reversal method of SIDE or SIGN
5920          ,DECODE(lgt.switch_side_flag,'Y',xdl.unrounded_entered_cr,  -xdl.unrounded_entered_dr)     UNROUNDED_ENTERED_DR
5921          ,DECODE(lgt.switch_side_flag,'Y',xdl.unrounded_entered_dr,  -xdl.unrounded_entered_cr)     UNROUNDED_ENTERED_CR
5922          ,DECODE(lgt.switch_side_flag,'Y',xdl.unrounded_accounted_cr,-xdl.unrounded_accounted_dr)   UNROUNDED_ACCOUNTED_DR
5923          ,DECODE(lgt.switch_side_flag,'Y',xdl.unrounded_accounted_dr,-xdl.unrounded_accounted_cr)   UNROUNDED_ACCOUNTED_CR
5924          --
5925          ,xdl.calculate_acctd_amts_flag                         CALCULATE_ACCTD_AMTS_FLAG
5926          ,xdl.calculate_g_l_amts_flag                           CALCULATE_G_L_AMTS_FLAG
5927          ,ael.gain_or_loss_flag                                 GAIN_OR_LOSS_FLAG
5928          ,xdl.rounding_class_code                               ROUNDING_CLASS_CODE
5929          ,xdl.document_rounding_level                           DOCUMENT_ROUNDING_LEVEL
5930          ,NULL                                                  DOC_ROUNDING_ACCTD_AMT
5931          ,NULL                                                  DOC_ROUNDING_ENTERED_AMT
5932          -- bug8642358 ,nvl(fcu.minimum_accountable_unit, power(10, -1*fcu.precision))         ENTERED_CURRENCY_MAU
5933          ,decode(ael.gain_or_loss_flag, 'Y', 0.01, nvl(fcu.minimum_accountable_unit, power(10, -1* fcu.precision))) ENTERED_CURRENCY_MAU
5934 	 ,ael.currency_code                                     CURRENCY_CODE
5935          ,ael.currency_conversion_date                          CURRENCY_CONVERSION_DATE
5936          ,ael.currency_conversion_rate                          CURRENCY_CONVERSION_RATE
5937          ,ael.currency_conversion_type                          CURRENCY_CONVERSION_TYPE
5938          --,DECODE(lgt.switch_side_flag,'Y',xdl.statistical_amount, -1 * xdl.statistical_amount )  STATISTICAL_AMOUNT -- changed from xal to xdl for bug12726599
5939 	 ,-1 * xdl.statistical_amount STATISTICAL_AMOUNT -- bug12823865
5940          ,ael.party_id                                          PARTY_ID
5941          ,ael.party_site_id                                     PARTY_SITE_ID
5942          ,ael.party_type_code                                   PARTY_TYPE_CODE
5943          ,ael.ussgl_transaction_code                            USSGL_TRANSACTION_CODE
5944          ,ael.jgzz_recon_ref                                    JGZZ_RECON_REF
5945          ,lgt.source_distribution_id_char_1                     SOURCE_DISTRIBUTION_ID_CHAR_1
5946          ,lgt.source_distribution_id_char_2                     SOURCE_DISTRIBUTION_ID_CHAR_2
5947          ,lgt.source_distribution_id_char_3                     SOURCE_DISTRIBUTION_ID_CHAR_3
5948          ,lgt.source_distribution_id_char_4                     SOURCE_DISTRIBUTION_ID_CHAR_4
5949          ,lgt.source_distribution_id_char_5                     SOURCE_DISTRIBUTION_ID_CHAR_5
5950          ,lgt.source_distribution_id_num_1                      SOURCE_DISTRIBUTION_ID_NUM_1
5951          ,lgt.source_distribution_id_num_2                      SOURCE_DISTRIBUTION_ID_NUM_2
5952          ,lgt.source_distribution_id_num_3                      SOURCE_DISTRIBUTION_ID_NUM_3
5953          ,lgt.source_distribution_id_num_4                      SOURCE_DISTRIBUTION_ID_NUM_4
5954          ,lgt.source_distribution_id_num_5                      SOURCE_DISTRIBUTION_ID_NUM_5
5955          ,lgt.source_distribution_type                          SOURCE_DISTRIBUTION_TYPE
5956          ,lgt.reverse_dist_id_char_1                            REVERSE_DIST_ID_CHAR_1
5957          ,lgt.reverse_dist_id_char_2                            REVERSE_DIST_ID_CHAR_2
5958          ,lgt.reverse_dist_id_char_3                            REVERSE_DIST_ID_CHAR_3
5959          ,lgt.reverse_dist_id_char_4                            REVERSE_DIST_ID_CHAR_4
5960          ,lgt.reverse_dist_id_char_5                            REVERSE_DIST_ID_CHAR_5
5961          ,lgt.reverse_dist_id_num_1                             REVERSE_DIST_ID_NUM_1
5962          ,lgt.reverse_dist_id_num_2                             REVERSE_DIST_ID_NUM_2
5963          ,lgt.reverse_dist_id_num_3                             REVERSE_DIST_ID_NUM_3
5964          ,lgt.reverse_dist_id_num_4                             REVERSE_DIST_ID_NUM_4
5965          ,lgt.reverse_dist_id_num_5                             REVERSE_DIST_ID_NUM_5
5966          ,lgt.reverse_distribution_type                         REVERSE_DISTRIBUTION_TYPE
5967          -- populate reversal_code indicating that line is result of reversal
5968          ,'REVERSAL'                                            REVERSAL_CODE
5969          -- denormalises entry status from headers to line to determine the status of entry being created
5970          -- populates 0 for a valid entry (F or D) else poulates 1
5971          ,DECODE(aeh.accounting_entry_status_code,'F',0,'D',0,1) ACCOUNTING_ENTRY_STATUS_CODE
5972          ,'N'                                                    INHERIT_DESC_FLAG
5973           -- 4669308 combine header with reversal of original entry
5974          --,0                                                      HEADER_NUM -- commented for bug8505463`
5975          , DECODE(aeh.parent_ae_header_id , NULL , 0 ,
5976                                             CASE
5977                                             WHEN aeh.accounting_date <= lgt.accounting_date
5978                                                  THEN 0
5979                                             ELSE -1 * dense_rank() over ( partition by aeh.parent_ae_header_id , aeh.parent_ae_line_num
5980  	                                                                      order by aeh.ae_header_Id )
5981                                             END
5982            )                                              HEADER_NUM -- added for bug8505463 for MPA Cancellation
5983          ,ael.encumbrance_type_id                                ENCUMBRANCE_TYPE_ID
5984          ,'N'                                                    MPA_ACCRUAL_ENTRY_FLAG
5985          --,lgt.accounting_date                                    ACCOUNTING_DATE -- commented for bug8505463
5986 	 , DECODE(aeh.parent_ae_header_id , NULL , lgt.accounting_date ,  -- Regular Cancellation, hence Cancellation Event Date
5987  	                                    CASE
5988  	                                    WHEN aeh.accounting_date <= lgt.accounting_date
5989  	                                         THEN lgt.accounting_date  -- Accounting Date of Cancellation Event for prior Period's MPA Accounting
5990  	                                    ELSE  aeh.accounting_date          -- Accounting Date of Original MPA Accounting
5991  	                                    END
5992  	                   )                                              ACCOUNTING_DATE -- added for bug8505463 for MPA Cancellation
5993             -- original line. This is used to filter duplicate rows in the outer query.
5994          ,row_number() over
5995               (partition by xdl.ae_header_Id,xdl.temp_line_num
5996                    order by lgt.event_number
5997               ) rn
5998       , xdl.APPLIED_TO_APPLICATION_ID   APPLIED_TO_APPLICATION_ID
5999  , xdl.APPLIED_TO_ENTITY_CODE       APPLIED_TO_ENTITY_CODE
6000  , xdl.APPLIED_TO_ENTITY_ID     APPLIED_TO_ENTITY_ID
6001  , xdl.APPLIED_TO_SOURCE_ID_NUM_1   APPLIED_TO_SOURCE_ID_NUM_1
6002  , xdl.APPLIED_TO_SOURCE_ID_NUM_2   APPLIED_TO_SOURCE_ID_NUM_2
6003  , xdl.APPLIED_TO_SOURCE_ID_NUM_3   APPLIED_TO_SOURCE_ID_NUM_3
6004  , xdl.APPLIED_TO_SOURCE_ID_NUM_4   APPLIED_TO_SOURCE_ID_NUM_4
6005  , xdl.APPLIED_TO_SOURCE_ID_CHAR_1  APPLIED_TO_SOURCE_ID_CHAR_1
6006  , xdl.APPLIED_TO_SOURCE_ID_CHAR_2  APPLIED_TO_SOURCE_ID_CHAR_2
6007  , xdl.APPLIED_TO_SOURCE_ID_CHAR_3  APPLIED_TO_SOURCE_ID_CHAR_3
6008  , xdl.APPLIED_TO_SOURCE_ID_CHAR_4  APPLIED_TO_SOURCE_ID_CHAR_4
6009  , xdl.APPLIED_TO_DISTRIBUTION_TYPE APPLIED_TO_DISTRIBUTION_TYPE
6010  , xdl.APPLIED_TO_DIST_ID_NUM_1     APPLIED_TO_DIST_ID_NUM_1
6011  , xdl.APPLIED_TO_DIST_ID_NUM_2     APPLIED_TO_DIST_ID_NUM_2
6012  , xdl.APPLIED_TO_DIST_ID_NUM_3     APPLIED_TO_DIST_ID_NUM_3
6013  , xdl.APPLIED_TO_DIST_ID_NUM_4     APPLIED_TO_DIST_ID_NUM_4
6014  , xdl.APPLIED_TO_DIST_ID_NUM_5     APPLIED_TO_DIST_ID_NUM_5
6015  , xdl.APPLIED_TO_DIST_ID_CHAR_1    APPLIED_TO_DIST_ID_CHAR_1
6016  , xdl.APPLIED_TO_DIST_ID_CHAR_2    APPLIED_TO_DIST_ID_CHAR_2
6017  , xdl.APPLIED_TO_DIST_ID_CHAR_3    APPLIED_TO_DIST_ID_CHAR_3
6018  , xdl.APPLIED_TO_DIST_ID_CHAR_4    APPLIED_TO_DIST_ID_CHAR_4
6019  , xdl.APPLIED_TO_DIST_ID_CHAR_5    APPLIED_TO_DIST_ID_CHAR_5
6020  , xdl.alloc_to_application_id      alloc_to_application_id
6021  , xdl.alloc_to_entity_code     alloc_to_entity_code
6022  , xdl.alloc_to_source_id_num_1     alloc_to_source_id_num_1
6023  , xdl.alloc_to_source_id_num_2     alloc_to_source_id_num_2
6024  , xdl.alloc_to_source_id_num_3     alloc_to_source_id_num_3
6025  , xdl.alloc_to_source_id_num_4     alloc_to_source_id_num_4
6026  , xdl.alloc_to_source_id_char_1    alloc_to_source_id_char_1
6027  , xdl.alloc_to_source_id_char_2    alloc_to_source_id_char_2
6028  , xdl.alloc_to_source_id_char_3    alloc_to_source_id_char_3
6029  , xdl.alloc_to_source_id_char_4    alloc_to_source_id_char_4
6030  , xdl.alloc_to_distribution_type   alloc_to_distribution_type
6031  , xdl.alloc_to_dist_id_char_1      alloc_to_dist_id_char_1
6032  , xdl.alloc_to_dist_id_char_2      alloc_to_dist_id_char_2
6033  , xdl.alloc_to_dist_id_char_3      alloc_to_dist_id_char_3
6034  , xdl.alloc_to_dist_id_char_4      alloc_to_dist_id_char_4
6035  , xdl.alloc_to_dist_id_char_5      alloc_to_dist_id_char_5
6036  , xdl.alloc_to_dist_id_num_1       alloc_to_dist_id_num_1
6037  , xdl.alloc_to_dist_id_num_2       alloc_to_dist_id_num_2
6038  , xdl.alloc_to_dist_id_num_3       alloc_to_dist_id_num_3
6039  , xdl.alloc_to_dist_id_num_4       alloc_to_dist_id_num_4
6040  , xdl.alloc_to_dist_id_num_5       alloc_to_dist_id_num_5
6041  ,nvl(lgt.tax_line_ref_id, xdl.tax_line_ref_id)                   TAX_LINE_REF_ID          -- Bug 7159711
6042  ,nvl(lgt.tax_summary_line_ref_id, xdl.tax_summary_line_ref_id)   TAX_SUMMARY_LINE_REF_ID  -- Bug 7159711
6043  ,nvl(lgt.tax_rec_nrec_dist_ref_id, xdl.tax_rec_nrec_dist_ref_id) TAX_REC_NREC_DIST_REF_ID -- Bug 7159711
6044  ,decode(ael.analytical_balance_flag, 'Y','P',
6045                                   'P','P',
6046                                   null) analytical_balance_flag   -- Bug 7382288
6047 ,nvl2(ael.analytical_balance_flag, 'DUMMY_ANC_'||ael.ae_header_id||ael.ae_line_num,null) ANC_ID_1 --Bug 8691573
6048        FROM
6049            xla_ae_lines_gt           lgt
6050           ,xla_distribution_links    xdl
6051           ,xla_ae_lines              ael
6052           ,xla_ae_headers            aeh
6053           ,fnd_currencies            fcu
6054           ,xla_events                evt
6055        WHERE lgt.reversal_code                              = 'DUMMY_LR'
6056          AND xdl.application_id                             = l_application_id
6057          AND xdl.source_distribution_type                   = lgt.reverse_distribution_type
6058          AND xdl.source_distribution_id_num_1               = nvl(lgt.reverse_dist_id_num_1,-99)
6059          AND nvl(xdl.source_distribution_id_num_2,-99)      = nvl(lgt.reverse_dist_id_num_2,-99)
6060          AND nvl(xdl.source_distribution_id_num_3,-99)      = nvl(lgt.reverse_dist_id_num_3,-99)
6061          AND nvl(xdl.source_distribution_id_num_4,-99)      = nvl(lgt.reverse_dist_id_num_4,-99)
6062          AND nvl(xdl.source_distribution_id_num_5,-99)      = nvl(lgt.reverse_dist_id_num_5,-99)
6063          AND nvl(xdl.source_distribution_id_char_1,' ')     = nvl(lgt.reverse_dist_id_char_1,' ')
6064          AND nvl(xdl.source_distribution_id_char_2,' ')     = nvl(lgt.reverse_dist_id_char_2,' ')
6065          AND nvl(xdl.source_distribution_id_char_3,' ')     = nvl(lgt.reverse_dist_id_char_3,' ')
6066          AND nvl(xdl.source_distribution_id_char_4,' ')     = nvl(lgt.reverse_dist_id_char_4,' ')
6067          AND nvl(xdl.source_distribution_id_char_5,' ')     = nvl(lgt.reverse_dist_id_char_5,' ')
6068          -- lines that are due to reversals are not reversed again
6069          AND NVL(xdl.temp_line_num,0)                    >= 0
6070          AND aeh.application_id                          = xdl.application_id
6071          AND aeh.ae_header_id                            = xdl.ae_header_id
6072          AND aeh.ledger_id                               = lgt.ledger_id
6073          AND aeh.entity_id                               = lgt.entity_id
6074          AND ael.application_id                          = aeh.application_id
6075          AND ael.ae_header_id                            = aeh.ae_header_id
6076          AND ael.ae_line_num                             = xdl.ae_line_num
6077          AND fcu.currency_code                           = ael.currency_code
6078          -- lines that have been reversed before in previous run are not reversed again
6079          AND NOT EXISTS (
6080                     SELECT /*+ no_unnest */ 1
6081                     FROM xla_distribution_links
6082                     WHERE ref_ae_header_id = xdl.ae_header_id
6083                       AND temp_line_num    = xdl.temp_line_num * -1
6084                       AND application_id   = xdl.application_id
6085                    )
6086          AND evt.application_id                          = aeh.application_id
6087          AND evt.event_id                                = aeh.event_id
6088          AND NVL(evt.budgetary_control_flag,'N')         = DECODE(p_accounting_mode
6089                                                                  ,'FUNDS_CHECK','Y'
6090                                                                  ,'FUNDS_RESERVE','Y'
6091                                                                  ,'N'
6092                                                                  )
6093          AND  ((aeh.parent_ae_header_id IS NOT NULL AND aeh.accounting_entry_status_code = 'F') OR
6094                (aeh.parent_ae_header_id IS NULL)
6095               )
6096       )
6097    WHERE rn = 1
6098    );
6099 
6100   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6101       trace
6102          (p_msg      => 'Line Reversal - Reversal lines created from xla_ae_lines = '||SQL%ROWCOUNT
6103          ,p_level    => C_LEVEL_STATEMENT
6104          ,p_module   => l_log_module);
6105    END IF;
6106 
6107 
6108 -- bug7135700 code change, case: reversal lines created for primary but not for secondary for same event.
6109 -- Note: This code may not, or may unnessecarily throw this warning for cash basis secondary legders also,
6110 --       that case has not been considered
6111 
6112  l_upgrade_check := 0;
6113  xla_accounting_cache_pkg.GetLedgerArray(l_ledger_attrs);
6114 
6115  FOR i in 1..l_ledger_attrs.array_ledger_id.COUNT
6116  LOOP
6117   IF l_ledger_attrs.array_ledger_type(i) = 'PRIMARY' THEN
6118     l_primary_ledger_id := l_ledger_attrs.array_ledger_id(i);
6119   END IF;
6120  END LOOP;
6121 
6122 
6123  IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6124       trace
6125          (p_msg      => 'l_primary_ledger_id = '|| l_primary_ledger_id
6126          ,p_level    => C_LEVEL_STATEMENT
6127          ,p_module   => l_log_module);
6128  END IF;
6129 
6130 
6131  BEGIN
6132     SELECT 1
6133     INTO l_upgrade_check
6134     FROM DUAL
6135     WHERE EXISTS
6136         (SELECT 1
6137         FROM gl_ledger_relationships
6138         WHERE hist_conv_status_code = 'SUCCESSFUL'
6139         AND primary_ledger_id = l_primary_ledger_id
6140         AND relationship_enabled_flag = 'Y');
6141  EXCEPTION WHEN OTHERS THEN
6142      l_upgrade_check := 0;
6143  END;
6144 
6145 
6146  IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6147       trace
6148          (p_msg      => 'l_upgrade_check = '|| l_upgrade_check
6149          ,p_level    => C_LEVEL_STATEMENT
6150          ,p_module   => l_log_module);
6151  END IF;
6152 
6153 
6154  IF l_upgrade_check = 1 THEN
6155 
6156  -- find the latest 'first ledger open period name' of all the secondary/alc ledgers
6157 
6158     SELECT max(glp.start_date)
6159       INTO l_max_first_open_period
6160       FROM  gl_period_statuses glp,
6161             gl_ledgers gl,
6162             gl_ledger_relationships glr
6163       WHERE glp.period_name = gl.first_ledger_period_name
6164       AND  glp.ledger_id = gl.ledger_id
6165       AND  glp.application_id = 101
6166       AND  gl.ledger_id = glr.target_ledger_id
6167       AND  glr.primary_ledger_id = l_primary_ledger_id
6168       AND  glr.relationship_enabled_flag = 'Y'
6169       AND  gl.ledger_category_code <> 'PRIMARY';
6170 
6171 
6172 -- find the reference event (upstream entry exists for primary but not alc/secondary) with the least accounting date
6173 
6174 
6175   SELECT min(xla_ae_headers.accounting_date)
6176     INTO l_min_ref_event_date
6177     FROM xla_ae_lines_gt gt1, xla_ae_headers
6178    WHERE gt1.reversal_code = 'REVERSAL'
6179      AND gt1.ref_event_id = xla_ae_headers.event_id;
6180 
6181 
6182 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6183       trace
6184          (p_msg      => 'l_max_first_open_period = '|| l_max_first_open_period
6185          ,p_level    => C_LEVEL_STATEMENT
6186          ,p_module   => l_log_module);
6187  END IF;
6188 
6189 
6190 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6191       trace
6192          (p_msg      => 'l_min_ref_event_date = '|| l_min_ref_event_date
6193          ,p_level    => C_LEVEL_STATEMENT
6194          ,p_module   => l_log_module);
6195  END IF;
6196 
6197 
6198 END IF;  --l_upgrade_check if end
6199 
6200 
6201  IF l_upgrade_check = 1 AND l_min_ref_event_date <= l_max_first_open_period THEN
6202 
6203 
6204  print_logfile('***************************************************************************************************');
6205  print_logfile('The following REVERSAL (LR) events do not have historic entries replicated in secondary/alc ledgers');
6206  print_logfile('Manual GL adjustments in the secondary/alc ledgers needs to be done for these events');
6207 
6208 
6209  FOR c_not_reversed_entries IN
6210  (SELECT DISTINCT gt1.event_id, gt1.ledger_id
6211  FROM xla_ae_lines_gt gt1, gl_ledgers gll
6212  WHERE gt1.reversal_code = 'DUMMY_LR'
6213  AND gll.ledger_id = gt1.ledger_id
6214  AND gll.ledger_category_code <> 'PRIMARY'
6215  AND NOT EXISTS (SELECT 1
6216                  FROM xla_ae_lines_gt gt2
6217          WHERE gt2.reversal_code = 'REVERSAL'
6218          AND gt1.event_id = gt2.event_id
6219          AND gt1.ledger_id = gt2.ledger_id)
6220  AND EXISTS (SELECT 1
6221             FROM xla_ae_lines_gt gt3
6222             WHERE gt3.reversal_code = 'REVERSAL'
6223         AND gt1.event_id = gt3.event_id))
6224 
6225  LOOP
6226   --IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6227   --    trace
6228   --       (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.'
6229   --       ,p_level    => C_LEVEL_STATEMENT
6230   --       ,p_module   => l_log_module);
6231   --END IF;
6232   print_logfile('Event ' || c_not_reversed_entries.event_id || ' of ledger ' || c_not_reversed_entries.ledger_id);
6233   l_error_count := l_error_count + 1;
6234  END LOOP;
6235 
6236  IF l_error_count > 0 THEN
6237    g_hist_reversal_error_exists := TRUE;
6238  END IF;
6239 
6240  IF l_error_count = 0 THEN
6241  print_logfile('    NO SUCH ENTRIES');
6242  END IF;
6243 
6244  print_logfile('***************************************************************************************************');
6245 
6246 END IF;
6247 
6248 
6249 -- bug7135700 code change end;
6250 
6251 
6252 
6253 
6254    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6255       trace
6256          (p_msg      => 'Performing transaction level accounting reversal'
6257          ,p_level    => C_LEVEL_STATEMENT
6258          ,p_module   => l_log_module);
6259    END IF;
6260 
6261 
6262 --***************************************************************************************************************
6263 --***************************************************************************************************************
6264 --*************    T R A N S A C T I O N      R E V E R S A L    ************************************************
6265 --***************************************************************************************************************
6266 --***************************************************************************************************************
6267 
6268    --
6269    -- selecting all the dummy lines from xla_ae_lines_gt that are due to
6270    -- transaction level reversal option
6271    --
6272    SELECT event_id
6273          ,ledger_id
6274          ,event_number
6275          ,entity_id
6276          ,source_distribution_type
6277          ,source_distribution_id_num_1
6278          ,source_distribution_id_num_2
6279          ,source_distribution_id_num_3
6280          ,source_distribution_id_num_4
6281          ,source_distribution_id_num_5
6282          ,source_distribution_id_char_1
6283          ,source_distribution_id_char_2
6284          ,source_distribution_id_char_3
6285          ,source_distribution_id_char_4
6286          ,source_distribution_id_char_5
6287          ,switch_side_flag        -- 5055878
6288          ,accounting_date         -- 5189664
6289          ,tax_line_ref_id            -- 7226263
6290          ,tax_summary_line_ref_id    -- 7226263
6291          ,tax_rec_nrec_dist_ref_id   -- 7226263
6292      BULK COLLECT INTO
6293           l_array_event_id
6294          ,l_array_ledger_id
6295          ,l_array_event_number
6296          ,l_array_entity_id
6297          ,l_array_source_dist_type
6298          ,l_array_source_dist_id_num_1
6299          ,l_array_source_dist_id_num_2
6300          ,l_array_source_dist_id_num_3
6301          ,l_array_source_dist_id_num_4
6302          ,l_array_source_dist_id_num_5
6303          ,l_array_source_dist_id_char_1
6304          ,l_array_source_dist_id_char_2
6305          ,l_array_source_dist_id_char_3
6306          ,l_array_source_dist_id_char_4
6307          ,l_array_source_dist_id_char_5
6308          ,l_array_switch_side_flag     -- 5055878
6309          ,l_array_gl_date              -- 5189664
6310          ,l_array_tax_line_ref           -- 7226263
6311          ,l_array_tax_summary_line_ref   -- 7226263
6312          ,l_array_tax_rec_nrec_dist_ref  -- 7226263
6313      FROM xla_ae_lines_gt
6314     WHERE reversal_code = 'DUMMY_TR'
6315     ORDER by entity_id, event_number;
6316 
6317    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6318       trace
6319          (p_msg      => 'Transaction Revesal - Events with reversal options set to Y = '||SQL%ROWCOUNT
6320          ,p_level    => C_LEVEL_STATEMENT
6321          ,p_module   => l_log_module);
6322    END IF;
6323 
6324    --=======================================================================================================
6325    -- 4669308 Delete the MPA/Accrual Transaction Reversal (still in GT tables, not in distribution links yet)
6326    --=======================================================================================================
6327    --
6328    ---------------------------------------------------------------------------------------------------------
6329    -- 4669308 Delete the MPA/Accrual Transaction Reversal in xla_ae_lines_gt (not in distribution links yet)
6330    ---------------------------------------------------------------------------------------------------------
6331    --
6332    IF xla_accounting_pkg.g_mpa_accrual_exists = 'Y' THEN  -- 5412560
6333       FORALL i IN 1..l_array_entity_id.count
6334       DELETE xla_ae_lines_gt lgt
6335       WHERE l_array_ledger_id(i)          = lgt.ledger_id
6336         AND lgt.reversal_code IS NULL        -- the lines created from reversal are not reversed again
6337         AND NOT EXISTS (                     -- the lines already reversed are not reversed again
6338                    SELECT 1
6339                    FROM xla_ae_lines_gt
6340                    WHERE ledger_id        = lgt.ledger_id
6341                      AND ref_ae_header_id = lgt.ae_header_id  -- 5499367 lgt.ref_ae_header_id
6342                      AND temp_line_num    = lgt.temp_line_num * -1
6343                   )
6344         AND  NVL(lgt.header_num,0) > 0
6345         AND lgt.header_num IN
6346             (SELECT hgt.header_num
6347              FROM   xla_ae_headers_gt hgt
6348              WHERE  hgt.entity_id           = l_array_entity_id(i)
6349              AND    hgt.ledger_id           = l_array_ledger_id(i)
6350              AND    hgt.event_number        < l_array_event_number(i)
6351              AND    lgt.event_id            = hgt.event_id
6352              AND    lgt.ledger_id           = hgt.ledger_id
6353              AND    lgt.balance_type_code   = hgt.balance_type_code
6354              AND    lgt.header_num          = hgt.header_num)
6355       ;
6356       --
6357       ---------------------------------------------------------------------------------------------------------
6358       -- 4669308 Delete the MPA/Accrual Transaction Reversal in xla_ae_headers_gt (not in distribution links yet)
6359       ---------------------------------------------------------------------------------------------------------
6360       --
6361       FORALL i IN 1..l_array_entity_id.count
6362       DELETE xla_ae_headers_gt hgt
6363       WHERE  hgt.ledger_id         = l_array_ledger_id(i)
6364       AND    hgt.entity_id         = l_array_entity_id(i)
6365       AND    hgt.event_number      < l_array_event_number(i)
6366       AND    NVL(hgt.header_num,0) > 0
6367       ;
6368    END IF;
6369    ---------------------------------------------------------------------------------------------------------
6370 
6371 
6372    --
6373    -- reverse the lines in xla_ae_lines_gt table (not in distribution links yet)
6374    --
6375    FORALL i IN 1..l_array_event_id.count
6376    INSERT INTO xla_ae_lines_gt
6377       (ae_header_id
6378       ,temp_line_num
6379       ,event_id
6380       ,ref_ae_header_id
6381       ,ref_ae_line_num
6382       ,ref_temp_line_num
6383       ,ref_event_id
6384       ,ledger_id
6385       ,balance_type_code
6386       ,accounting_class_code
6387       ,event_class_code
6388       ,event_type_code
6389       ,line_definition_owner_code
6390       ,line_definition_code
6391       ,accounting_line_type_code
6392       ,accounting_line_code
6393       ,code_combination_status_code
6394       ,code_combination_id
6395       ,sl_coa_mapping_name
6396       ,dynamic_insert_flag
6397       ,source_coa_id
6398       ,ccid_coa_id
6399       ,segment1
6400       ,segment2
6401       ,segment3
6402       ,segment4
6403       ,segment5
6404       ,segment6
6405       ,segment7
6406       ,segment8
6407       ,segment9
6408       ,segment10
6409       ,segment11
6410       ,segment12
6411       ,segment13
6412       ,segment14
6413       ,segment15
6414       ,segment16
6415       ,segment17
6416       ,segment18
6417       ,segment19
6418       ,segment20
6419       ,segment21
6420       ,segment22
6421       ,segment23
6422       ,segment24
6423       ,segment25
6424       ,segment26
6425       ,segment27
6426       ,segment28
6427       ,segment29
6428       ,segment30
6429       , calculate_acctd_amts_flag
6430       , calculate_g_l_amts_flag
6431       , gain_or_loss_flag
6432       , rounding_class_code
6433       , document_rounding_level
6434       , doc_rounding_acctd_amt
6435       , doc_rounding_entered_amt
6436       ,alt_ccid_status_code
6437       ,alt_code_combination_id
6438       ,alt_segment1
6439       ,alt_segment2
6440       ,alt_segment3
6441       ,alt_segment4
6442       ,alt_segment5
6443       ,alt_segment6
6444       ,alt_segment7
6445       ,alt_segment8
6446       ,alt_segment9
6447       ,alt_segment10
6448       ,alt_segment11
6449       ,alt_segment12
6450       ,alt_segment13
6451       ,alt_segment14
6452       ,alt_segment15
6453       ,alt_segment16
6454       ,alt_segment17
6455       ,alt_segment18
6456       ,alt_segment19
6457       ,alt_segment20
6458       ,alt_segment21
6459       ,alt_segment22
6460       ,alt_segment23
6461       ,alt_segment24
6462       ,alt_segment25
6463       ,alt_segment26
6464       ,alt_segment27
6465       ,alt_segment28
6466       ,alt_segment29
6467       ,alt_segment30
6468       ,description
6469       ,gl_transfer_mode_code
6470       ,merge_duplicate_code
6471       ,switch_side_flag
6472 --      ,entered_amount
6473 --      ,ledger_amount
6474       ,unrounded_entered_dr
6475       ,unrounded_entered_cr
6476       ,unrounded_accounted_dr
6477       ,unrounded_accounted_cr
6478       ,entered_currency_mau
6479       ,currency_code
6480       ,currency_conversion_date
6481       ,currency_conversion_rate
6482       ,currency_conversion_type
6483       ,statistical_amount
6484       ,party_id
6485       ,party_site_id
6486       ,party_type_code
6487       ,ussgl_transaction_code
6488       ,jgzz_recon_ref
6489       ,source_distribution_id_char_1
6490       ,source_distribution_id_char_2
6491       ,source_distribution_id_char_3
6492       ,source_distribution_id_char_4
6493       ,source_distribution_id_char_5
6494       ,source_distribution_id_num_1
6495       ,source_distribution_id_num_2
6496       ,source_distribution_id_num_3
6497       ,source_distribution_id_num_4
6498       ,source_distribution_id_num_5
6499       ,source_distribution_type
6500       ,reverse_dist_id_char_1
6501       ,reverse_dist_id_char_2
6502       ,reverse_dist_id_char_3
6503       ,reverse_dist_id_char_4
6504       ,reverse_dist_id_char_5
6505       ,reverse_dist_id_num_1
6506       ,reverse_dist_id_num_2
6507       ,reverse_dist_id_num_3
6508       ,reverse_dist_id_num_4
6509       ,reverse_dist_id_num_5
6510       ,reverse_distribution_type
6511       ,tax_line_ref_id
6512       ,tax_summary_line_ref_id
6513       ,tax_rec_nrec_dist_ref_id
6514     -- 4262811
6515       ,header_num
6516       ,mpa_accrual_entry_flag
6517       ,multiperiod_option_flag
6518       ,multiperiod_start_date
6519       ,multiperiod_end_date
6520     --,deferred_indicator
6521     --,deferred_start_date
6522     --,deferred_end_date
6523     --,deferred_no_period
6524     --,deferred_period_type
6525       ,reversal_code
6526       ,accounting_entry_status_code
6527       ,encumbrance_type_id -- 4458381
6528       ,inherit_desc_flag   -- 4219869
6529       ,accounting_date
6530       , BFLOW_APPLICATION_ID
6531         , BFLOW_ENTITY_CODE
6532         , APPLIED_TO_ENTITY_ID
6533         , BFLOW_SOURCE_ID_NUM_1
6534         , BFLOW_SOURCE_ID_NUM_2
6535         , BFLOW_SOURCE_ID_NUM_3
6536         , BFLOW_SOURCE_ID_NUM_4
6537         , BFLOW_SOURCE_ID_CHAR_1
6538         , BFLOW_SOURCE_ID_CHAR_2
6539         , BFLOW_SOURCE_ID_CHAR_3
6540         , BFLOW_SOURCE_ID_CHAR_4
6541         , BFLOW_DISTRIBUTION_TYPE
6542         , BFLOW_DIST_ID_NUM_1
6543         , BFLOW_DIST_ID_NUM_2
6544         , BFLOW_DIST_ID_NUM_3
6545         , BFLOW_DIST_ID_NUM_4
6546         , BFLOW_DIST_ID_NUM_5
6547         , BFLOW_DIST_ID_CHAR_1
6548         , BFLOW_DIST_ID_CHAR_2
6549         , BFLOW_DIST_ID_CHAR_3
6550         , BFLOW_DIST_ID_CHAR_4
6551         , BFLOW_DIST_ID_CHAR_5
6552  , alloc_to_application_id
6553  , alloc_to_entity_code
6554  , alloc_to_source_id_num_1
6555  , alloc_to_source_id_num_2
6556  , alloc_to_source_id_num_3
6557  , alloc_to_source_id_num_4
6558  , alloc_to_source_id_char_1
6559  , alloc_to_source_id_char_2
6560  , alloc_to_source_id_char_3
6561  , alloc_to_source_id_char_4
6562  , alloc_to_distribution_type
6563  , alloc_to_dist_id_char_1
6564  , alloc_to_dist_id_char_2
6565  , alloc_to_dist_id_char_3
6566  , alloc_to_dist_id_char_4
6567  , alloc_to_dist_id_char_5
6568  , alloc_to_dist_id_num_1
6569  , alloc_to_dist_id_num_2
6570  , alloc_to_dist_id_num_3
6571  , alloc_to_dist_id_num_4
6572  , alloc_to_dist_id_num_5
6573  , analytical_balance_flag    --8417496
6574  , anc_id_1
6575  , anc_id_2
6576  , anc_id_3
6577  , anc_id_4
6578  , anc_id_5
6579  , anc_id_6
6580  , anc_id_7
6581  , anc_id_8
6582  , anc_id_9
6583  , anc_id_10
6584  , anc_id_11
6585  , anc_id_12
6586  , anc_id_13
6587  , anc_id_14
6588  , anc_id_15
6589  , anc_id_16
6590  , anc_id_17
6591  , anc_id_18
6592  , anc_id_19
6593  , anc_id_20
6594  , anc_id_21
6595  , anc_id_22
6596  , anc_id_23
6597  , anc_id_24
6598  , anc_id_25
6599  , anc_id_26
6600  , anc_id_27
6601  , anc_id_28
6602  , anc_id_29
6603  , anc_id_30
6604  , anc_id_31
6605  , anc_id_32
6606  , anc_id_33
6607  , anc_id_34
6608  , anc_id_35
6609  , anc_id_36
6610  , anc_id_37
6611  , anc_id_38
6612  , anc_id_39
6613  , anc_id_40
6614  , anc_id_41
6615  , anc_id_42
6616  , anc_id_43
6617  , anc_id_44
6618  , anc_id_45
6619  , anc_id_46
6620  , anc_id_47
6621  , anc_id_48
6622  , anc_id_49
6623  , anc_id_50
6624  , anc_id_51
6625  , anc_id_52
6626  , anc_id_53
6627  , anc_id_54
6628  , anc_id_55
6629  , anc_id_56
6630  , anc_id_57
6631  , anc_id_58
6632  , anc_id_59
6633  , anc_id_60
6634  , anc_id_61
6635  , anc_id_62
6636  , anc_id_63
6637  , anc_id_64
6638  , anc_id_65
6639  , anc_id_66
6640  , anc_id_67
6641  , anc_id_68
6642  , anc_id_69
6643  , anc_id_70
6644  , anc_id_71
6645  , anc_id_72
6646  , anc_id_73
6647  , anc_id_74
6648  , anc_id_75
6649  , anc_id_76
6650  , anc_id_77
6651  , anc_id_78
6652  , anc_id_79
6653  , anc_id_80
6654  , anc_id_81
6655  , anc_id_82
6656  , anc_id_83
6657  , anc_id_84
6658  , anc_id_85
6659  , anc_id_86
6660  , anc_id_87
6661  , anc_id_88
6662  , anc_id_89
6663  , anc_id_90
6664  , anc_id_91
6665  , anc_id_92
6666  , anc_id_93
6667  , anc_id_94
6668  , anc_id_95
6669  , anc_id_96
6670  , anc_id_97
6671  , anc_id_98
6672  , anc_id_99
6673  , anc_id_100)
6674 
6675    SELECT
6676        -- populates ae_header_id which is same as event_id till this point
6677        l_array_event_id(i)
6678       -- populates temp_line_num which is (-ve) of original line
6679       ,0-lgt.temp_line_num
6680       -- populates event_id which is the event_id of event under process
6681       ,l_array_event_id(i)
6682       -- populates ref_ae_header_id which is ae_header_id of original line
6683       ,hgt.ae_header_id
6684       -- populates ref_ae_line_num which is ae_line_num of original line
6685       ,lgt.ae_line_num
6686       -- populates ref_temp_line_num which is ae_line_num of original line
6687       ,lgt.temp_line_num
6688       -- populates ref_event_id which is event_id of original line
6689       ,0-lgt.event_id                                           -- REF_EVENT_ID made negative for Bug:8277823
6690       ,lgt.ledger_id
6691       ,lgt.balance_type_code
6692       ,lgt.accounting_class_code
6693       ,lgt.event_class_code
6694       ,lgt.event_type_code
6695       ,lgt.line_definition_owner_code
6696       ,lgt.line_definition_code
6697       ,lgt.accounting_line_type_code
6698       ,lgt.accounting_line_code
6699       ,decode(lgt.gain_or_loss_flag, 'Y'
6700              ,decode(lgt.calculate_g_l_amts_flag,'Y'
6701                 ,lgt.alt_ccid_status_code,lgt.code_combination_status_code)
6702          ,lgt.code_combination_status_code)
6703                                                        CODE_COMBINATION_STATUS_CODE
6704       ,decode(lgt.gain_or_loss_flag, 'Y'
6705             ,decode(lgt.calculate_g_l_amts_flag,'Y'
6706                  ,lgt.alt_code_combination_id, lgt.code_combination_id)
6707        , lgt.code_combination_id)
6708                                                        CODE_COMBINATION_ID
6709       ,lgt.sl_coa_mapping_name
6710       ,lgt.dynamic_insert_flag
6711       ,lgt.source_coa_id
6712       ,lgt.ccid_coa_id
6713          ,decode(lgt.gain_or_loss_flag, 'Y'
6714              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment1,lgt.segment1)
6715          ,lgt.segment1)                                                   SEGMENT1
6716          ,decode(lgt.gain_or_loss_flag, 'Y'
6717              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment2,lgt.segment2)
6718          ,lgt.segment2)                                                   SEGMENT2
6719 
6720          ,decode(lgt.gain_or_loss_flag, 'Y'
6721              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment3,lgt.segment3)
6722          ,lgt.segment3)                                                   SEGMENT3
6723 
6724          ,decode(lgt.gain_or_loss_flag, 'Y'
6725              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment4,lgt.segment4)
6726          ,lgt.segment4)                                                     SEGMENT4
6727 
6728          ,decode(lgt.gain_or_loss_flag, 'Y'
6729              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment5,lgt.segment5)
6730          ,lgt.segment5)                                                   SEGMENT5
6731 
6732          ,decode(lgt.gain_or_loss_flag, 'Y'
6733              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment6,lgt.segment6)
6734          ,lgt.segment6)                                                   SEGMENT6
6735 
6736          ,decode(lgt.gain_or_loss_flag, 'Y'
6737              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment7,lgt.segment7)
6738          ,lgt.segment7)                                                  SEGMENT7
6739 
6740          ,decode(lgt.gain_or_loss_flag, 'Y'
6741              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment8,lgt.segment8)
6742          ,lgt.segment8)                                                   SEGMENT8
6743 
6744          ,decode(lgt.gain_or_loss_flag, 'Y'
6745                 ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment9,lgt.segment9)
6746          ,lgt.segment9)                                                   SEGMENT9
6747 
6748          ,decode(lgt.gain_or_loss_flag, 'Y'
6749               ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment10,lgt.segment10)
6750          ,lgt.segment10)                                                   SEGMENT10
6751 
6752          ,decode(lgt.gain_or_loss_flag, 'Y'
6753              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment11,lgt.segment11)
6754          ,lgt.segment11)                                                   SEGMENT11
6755 
6756          ,decode(lgt.gain_or_loss_flag, 'Y'
6757              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment12,lgt.segment12)
6758          ,lgt.segment12)                                                   SEGMENT12
6759 
6760          ,decode(lgt.gain_or_loss_flag, 'Y'
6761                ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment13,lgt.segment13)
6762          ,lgt.segment13)                                                   SEGMENT13
6763 
6764          ,decode(lgt.gain_or_loss_flag, 'Y'
6765              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment14,lgt.segment14)
6766          ,lgt.segment14)                                                   SEGMENT14
6767 
6768          ,decode(lgt.gain_or_loss_flag, 'Y'
6769              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment15,lgt.segment15)
6770          ,lgt.segment15)                                                   SEGMENT15
6771 
6772          ,decode(lgt.gain_or_loss_flag, 'Y'
6773               ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment16,lgt.segment16)
6774          ,lgt.segment16)                                                   SEGMENT16
6775 
6776          ,decode(lgt.gain_or_loss_flag, 'Y'
6777               ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment17,lgt.segment17)
6778          ,lgt.segment17)                                                   SEGMENT17
6779 
6780          ,decode(lgt.gain_or_loss_flag, 'Y'
6781              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment18,lgt.segment18)
6782          ,lgt.segment18)                                                   SEGMENT18
6783 
6784          ,decode(lgt.gain_or_loss_flag, 'Y'
6785              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment19,lgt.segment19)
6786          ,lgt.segment19)                                                   SEGMENT19
6787 
6788          ,decode(lgt.gain_or_loss_flag, 'Y'
6789              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment20,lgt.segment20)
6790          ,lgt.segment20)                                                  SEGMENT20
6791 
6792          ,decode(lgt.gain_or_loss_flag, 'Y'
6793              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment21,lgt.segment21)
6794          ,lgt.segment21)                                                   SEGMENT21
6795 
6796          ,decode(lgt.gain_or_loss_flag, 'Y'
6797              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment22,lgt.segment22)
6798          ,lgt.segment22)                                                   SEGMENT22
6799 
6800          ,decode(lgt.gain_or_loss_flag, 'Y'
6801              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment23,lgt.segment23)
6802          ,lgt.segment23)                                                   SEGMENT23
6803 
6804          ,decode(lgt.gain_or_loss_flag, 'Y'
6805              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment24,lgt.segment24)
6806          ,lgt.segment24)                                                   SEGMENT24
6807 
6808          ,decode(lgt.gain_or_loss_flag, 'Y'
6809              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment25,lgt.segment25)
6810          ,lgt.segment25)                                                   SEGMENT25
6811 
6812          ,decode(lgt.gain_or_loss_flag, 'Y'
6813              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment26,lgt.segment26)
6814          ,lgt.segment26)                                                   SEGMENT26
6815 
6816          ,decode(lgt.gain_or_loss_flag, 'Y'
6817              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment27,lgt.segment27)
6818          ,lgt.segment27)                                                   SEGMENT27
6819 
6820          ,decode(lgt.gain_or_loss_flag, 'Y'
6821              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment28,lgt.segment28)
6822          ,lgt.segment28)                                                  SEGMENT28
6823 
6824          ,decode(lgt.gain_or_loss_flag, 'Y'
6825              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment29,lgt.segment29)
6826          ,lgt.segment29)                                                   SEGMENT29
6827 
6828          ,decode(lgt.gain_or_loss_flag, 'Y'
6829              ,decode(lgt.calculate_g_l_amts_flag,'Y',lgt.alt_segment30,lgt.segment30)
6830          ,lgt.segment30)                                                   SEGMENT30
6831       ,lgt.calculate_acctd_amts_flag
6832       ,lgt.calculate_g_l_amts_flag
6833       ,lgt.gain_or_loss_flag
6834       ,lgt.rounding_class_code
6835       ,lgt.document_rounding_level
6836       ,lgt.doc_rounding_acctd_amt
6837       ,lgt.doc_rounding_entered_amt
6838       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.code_combination_status_code ,lgt.alt_ccid_status_code)
6839                                                        ALT_CCID_STATUS_CODE
6840       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.code_combination_id ,lgt.alt_code_combination_id)
6841                                                        ALT_CODE_COMBINATION_ID
6842       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment1,lgt.alt_segment1)     ALT_SEGMENT1
6843       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment2,lgt.alt_segment2)     ALT_SEGMENT2
6844       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment3,lgt.alt_segment3)     ALT_SEGMENT3
6845       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment4,lgt.alt_segment4)     ALT_SEGMENT4
6846       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment5,lgt.alt_segment5)     ALT_SEGMENT5
6847       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment6,lgt.alt_segment6)     ALT_SEGMENT6
6848       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment7,lgt.alt_segment7)     ALT_SEGMENT7
6849       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment8,lgt.alt_segment8)     ALT_SEGMENT8
6850       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment9,lgt.alt_segment9)     ALT_SEGMENT9
6851       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment10,lgt.alt_segment10)   ALT_SEGMENT10
6852       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment11,lgt.alt_segment11)   ALT_SEGMENT11
6853       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment12,lgt.alt_segment12)   ALT_SEGMENT12
6854       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment13,lgt.alt_segment13)   ALT_SEGMENT13
6855       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment14,lgt.alt_segment14)   ALT_SEGMENT14
6856       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment15,lgt.alt_segment15)   ALT_SEGMENT15
6857       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment16,lgt.alt_segment16)   ALT_SEGMENT16
6858       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment17,lgt.alt_segment17)   ALT_SEGMENT17
6859       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment18,lgt.alt_segment18)   ALT_SEGMENT18
6860       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment19,lgt.alt_segment19)   ALT_SEGMENT19
6861       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment20,lgt.alt_segment20)   ALT_SEGMENT20
6862       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment21,lgt.alt_segment21)   ALT_SEGMENT21
6863       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment22,lgt.alt_segment22)   ALT_SEGMENT22
6864       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment23,lgt.alt_segment23)   ALT_SEGMENT23
6865       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment24,lgt.alt_segment24)   ALT_SEGMENT24
6866       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment25,lgt.alt_segment25)   ALT_SEGMENT25
6867       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment26,lgt.alt_segment26)   ALT_SEGMENT26
6868       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment27,lgt.alt_segment27)   ALT_SEGMENT27
6869       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment28,lgt.alt_segment28)   ALT_SEGMENT28
6870       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment29,lgt.alt_segment29)   ALT_SEGMENT29
6871       ,decode(lgt.gain_or_loss_flag, 'Y', lgt.segment30,lgt.alt_segment30)   ALT_SEGMENT30
6872       ,lgt.description
6873       ,lgt.gl_transfer_mode_code
6874       ,lgt.merge_duplicate_code
6875     -- commented for bug#11671933 to consider change sign even for gain/loss
6876       --,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
6877       , l_array_switch_side_flag(i) -- added for bug#11671933
6878 --      ,lgt.entered_amount
6879 --      ,lgt.ledger_amount
6880       -- 5055878 amounts modified for reversal method of SIDE or SIGN
6881       ,DECODE(l_array_switch_side_flag(i),'Y',lgt.unrounded_entered_cr,  -lgt.unrounded_entered_dr)
6882       ,DECODE(l_array_switch_side_flag(i),'Y',lgt.unrounded_entered_dr,  -lgt.unrounded_entered_cr)
6883       ,DECODE(l_array_switch_side_flag(i),'Y',lgt.unrounded_accounted_cr,-lgt.unrounded_accounted_dr)
6884       ,DECODE(l_array_switch_side_flag(i),'Y',lgt.unrounded_accounted_dr,-lgt.unrounded_accounted_cr)
6885       --
6886 /*
6887       ,DECODE(lgt.switch_side_flag
6888              ,C_NO_SWITCH, - lgt.entered_dr
6889              ,C_SWITCH, lgt.entered_cr
6890              )
6891       ,DECODE(lgt.switch_side_flag
6892              ,C_NO_SWITCH, - lgt.entered_cr
6893              ,C_SWITCH,   lgt.entered_dr
6894              )
6895       ,DECODE(lgt.switch_side_flag
6896              ,C_NO_SWITCH, - lgt.unrounded_accounted_dr
6897              ,C_SWITCH,lgt.unrounded_accounted_cr
6898              )
6899       ,DECODE(lgt.switch_side_flag
6900              ,C_NO_SWITCH, - lgt.unrounded_accounted_cr
6901              ,C_SWITCH, lgt.unrounded_accounted_dr
6902              )
6903 */
6904       ,lgt.entered_currency_mau
6905       ,lgt.currency_code
6906       ,lgt.currency_conversion_date
6907       ,lgt.currency_conversion_rate
6908       ,lgt.currency_conversion_type
6909       --,DECODE(l_array_switch_side_flag(i),'Y',lgt.statistical_amount, -1 * lgt.statistical_amount ) -- bug12726599
6910       ,-1 * lgt.statistical_amount --bug12823865
6911       ,lgt.party_id
6912       ,lgt.party_site_id
6913       ,lgt.party_type_code
6914       ,lgt.ussgl_transaction_code
6915       ,lgt.jgzz_recon_ref
6916       -- if there are no distributions for this event
6917       -- populate with the distribution if lines that is being reversed
6918       ,NVL(l_array_source_dist_id_char_1(i),lgt.source_distribution_id_char_1)
6919       ,NVL(l_array_source_dist_id_char_2(i),lgt.source_distribution_id_char_2)
6920       ,NVL(l_array_source_dist_id_char_3(i),lgt.source_distribution_id_char_3)
6921       ,NVL(l_array_source_dist_id_char_4(i),lgt.source_distribution_id_char_4)
6922       ,NVL(l_array_source_dist_id_char_5(i),lgt.source_distribution_id_char_5)
6923       ,NVL(l_array_source_dist_id_num_1(i),lgt.source_distribution_id_num_1)
6924       ,NVL(l_array_source_dist_id_num_2(i),lgt.source_distribution_id_num_2)
6925       ,NVL(l_array_source_dist_id_num_3(i),lgt.source_distribution_id_num_3)
6926       ,NVL(l_array_source_dist_id_num_4(i),lgt.source_distribution_id_num_4)
6927       ,NVL(l_array_source_dist_id_num_5(i),lgt.source_distribution_id_num_5)
6928       ,NVL(l_array_source_dist_type(i),lgt.source_distribution_type)
6929       -- populate reverse distibutions from original line
6930       ,lgt.source_distribution_id_char_1
6931       ,lgt.source_distribution_id_char_2
6932       ,lgt.source_distribution_id_char_3
6933       ,lgt.source_distribution_id_char_4
6934       ,lgt.source_distribution_id_char_5
6935       ,lgt.source_distribution_id_num_1
6936       ,lgt.source_distribution_id_num_2
6937       ,lgt.source_distribution_id_num_3
6938       ,lgt.source_distribution_id_num_4
6939       ,lgt.source_distribution_id_num_5
6940       ,lgt.source_distribution_type
6941       ,lgt.tax_line_ref_id
6942       ,lgt.tax_summary_line_ref_id
6943       ,lgt.tax_rec_nrec_dist_ref_id
6944     -- 4262811
6945       ,NVL(lgt.header_num,0)  -- 4963422
6946       ,lgt.mpa_accrual_entry_flag
6947       ,lgt.multiperiod_option_flag
6948       ,lgt.multiperiod_start_date
6949       ,lgt.multiperiod_end_date
6950     --,lgt.deferred_indicator
6951     --,lgt.deferred_start_date
6952     --,lgt.deferred_end_date
6953     --,lgt.deferred_no_period
6954     --,lgt.deferred_period_type
6955       -- populate reversal_code to indicate that line is due to a reversal
6956       ,'REVERSAL'
6957       -- denormalize entry status to lines from header to decide on status of new entry
6958       ,hgt.accounting_entry_status_code
6959       ,lgt.encumbrance_type_id -- 4458381
6960       ,'N'    -- lgt.inherit_desc_flag            -- 4219869  Should it be from l_array
6961       ,l_array_gl_date(i)      -- 5189664     hgt.accounting_date     -- 4955764
6962       , lgt.BFLOW_APPLICATION_ID
6963         , lgt.BFLOW_ENTITY_CODE
6964         , lgt.APPLIED_TO_ENTITY_ID
6965         , lgt.BFLOW_SOURCE_ID_NUM_1
6966         , lgt.BFLOW_SOURCE_ID_NUM_2
6967         , lgt.BFLOW_SOURCE_ID_NUM_3
6968         , lgt.BFLOW_SOURCE_ID_NUM_4
6969         , lgt.BFLOW_SOURCE_ID_CHAR_1
6970         , lgt.BFLOW_SOURCE_ID_CHAR_2
6971         , lgt.BFLOW_SOURCE_ID_CHAR_3
6972         , lgt.BFLOW_SOURCE_ID_CHAR_4
6973         , lgt.BFLOW_DISTRIBUTION_TYPE
6974         , lgt.BFLOW_DIST_ID_NUM_1
6975         , lgt.BFLOW_DIST_ID_NUM_2
6976         , lgt.BFLOW_DIST_ID_NUM_3
6977         , lgt.BFLOW_DIST_ID_NUM_4
6978         , lgt.BFLOW_DIST_ID_NUM_5
6979         , lgt.BFLOW_DIST_ID_CHAR_1
6980         , lgt.BFLOW_DIST_ID_CHAR_2
6981         , lgt.BFLOW_DIST_ID_CHAR_3
6982         , lgt.BFLOW_DIST_ID_CHAR_4
6983         , lgt.BFLOW_DIST_ID_CHAR_5
6984  , lgt.alloc_to_application_id      alloc_to_application_id
6985  , lgt.alloc_to_entity_code     alloc_to_entity_code
6986  , lgt.alloc_to_source_id_num_1     alloc_to_source_id_num_1
6987  , lgt.alloc_to_source_id_num_2     alloc_to_source_id_num_2
6988  , lgt.alloc_to_source_id_num_3     alloc_to_source_id_num_3
6989  , lgt.alloc_to_source_id_num_4     alloc_to_source_id_num_4
6990  , lgt.alloc_to_source_id_char_1    alloc_to_source_id_char_1
6991  , lgt.alloc_to_source_id_char_2    alloc_to_source_id_char_2
6992  , lgt.alloc_to_source_id_char_3    alloc_to_source_id_char_3
6993  , lgt.alloc_to_source_id_char_4    alloc_to_source_id_char_4
6994  , lgt.alloc_to_distribution_type   alloc_to_distribution_type
6995  , lgt.alloc_to_dist_id_char_1      alloc_to_dist_id_char_1
6996  , lgt.alloc_to_dist_id_char_2      alloc_to_dist_id_char_2
6997  , lgt.alloc_to_dist_id_char_3      alloc_to_dist_id_char_3
6998  , lgt.alloc_to_dist_id_char_4      alloc_to_dist_id_char_4
6999  , lgt.alloc_to_dist_id_char_5      alloc_to_dist_id_char_5
7000  , lgt.alloc_to_dist_id_num_1       alloc_to_dist_id_num_1
7001  , lgt.alloc_to_dist_id_num_2       alloc_to_dist_id_num_2
7002  , lgt.alloc_to_dist_id_num_3       alloc_to_dist_id_num_3
7003  , lgt.alloc_to_dist_id_num_4       alloc_to_dist_id_num_4
7004  , lgt.alloc_to_dist_id_num_5       alloc_to_dist_id_num_5
7005  , lgt.analytical_balance_flag      analytical_balance_flag  --8417496
7006  , lgt.anc_id_1
7007  , lgt.anc_id_2
7008  , lgt.anc_id_3
7009  , lgt.anc_id_4
7010  , lgt.anc_id_5
7011  , lgt.anc_id_6
7012  , lgt.anc_id_7
7013  , lgt.anc_id_8
7014  , lgt.anc_id_9
7015  , lgt.anc_id_10
7016  , lgt.anc_id_11
7017  , lgt.anc_id_12
7018  , lgt.anc_id_13
7019  , lgt.anc_id_14
7020  , lgt.anc_id_15
7021  , lgt.anc_id_16
7022  , lgt.anc_id_17
7023  , lgt.anc_id_18
7024  , lgt.anc_id_19
7025  , lgt.anc_id_20
7026  , lgt.anc_id_21
7027  , lgt.anc_id_22
7028  , lgt.anc_id_23
7029  , lgt.anc_id_24
7030  , lgt.anc_id_25
7031  , lgt.anc_id_26
7032  , lgt.anc_id_27
7033  , lgt.anc_id_28
7034  , lgt.anc_id_29
7035  , lgt.anc_id_30
7036  , lgt.anc_id_31
7037  , lgt.anc_id_32
7038  , lgt.anc_id_33
7039  , lgt.anc_id_34
7040  , lgt.anc_id_35
7041  , lgt.anc_id_36
7042  , lgt.anc_id_37
7043  , lgt.anc_id_38
7044  , lgt.anc_id_39
7045  , lgt.anc_id_40
7046  , lgt.anc_id_41
7047  , lgt.anc_id_42
7048  , lgt.anc_id_43
7049  , lgt.anc_id_44
7050  , lgt.anc_id_45
7051  , lgt.anc_id_46
7052  , lgt.anc_id_47
7053  , lgt.anc_id_48
7054  , lgt.anc_id_49
7055  , lgt.anc_id_50
7056  , lgt.anc_id_51
7057  , lgt.anc_id_52
7058  , lgt.anc_id_53
7059  , lgt.anc_id_54
7060  , lgt.anc_id_55
7061  , lgt.anc_id_56
7062  , lgt.anc_id_57
7063  , lgt.anc_id_58
7064  , lgt.anc_id_59
7065  , lgt.anc_id_60
7066  , lgt.anc_id_61
7067  , lgt.anc_id_62
7068  , lgt.anc_id_63
7069  , lgt.anc_id_64
7070  , lgt.anc_id_65
7071  , lgt.anc_id_66
7072  , lgt.anc_id_67
7073  , lgt.anc_id_68
7074  , lgt.anc_id_69
7075  , lgt.anc_id_70
7076  , lgt.anc_id_71
7077  , lgt.anc_id_72
7078  , lgt.anc_id_73
7079  , lgt.anc_id_74
7080  , lgt.anc_id_75
7081  , lgt.anc_id_76
7082  , lgt.anc_id_77
7083  , lgt.anc_id_78
7084  , lgt.anc_id_79
7085  , lgt.anc_id_80
7086  , lgt.anc_id_81
7087  , lgt.anc_id_82
7088  , lgt.anc_id_83
7089  , lgt.anc_id_84
7090  , lgt.anc_id_85
7091  , lgt.anc_id_86
7092  , lgt.anc_id_87
7093  , lgt.anc_id_88
7094  , lgt.anc_id_89
7095  , lgt.anc_id_90
7096  , lgt.anc_id_91
7097  , lgt.anc_id_92
7098  , lgt.anc_id_93
7099  , lgt.anc_id_94
7100  , lgt.anc_id_95
7101  , lgt.anc_id_96
7102  , lgt.anc_id_97
7103  , lgt.anc_id_98
7104  , lgt.anc_id_99
7105  , lgt.anc_id_100
7106 
7107     FROM xla_ae_lines_gt     lgt
7108         ,xla_ae_headers_gt   hgt
7109    WHERE hgt.entity_id                  = l_array_entity_id(i)
7110      AND hgt.ledger_id                  = l_array_ledger_id(i)
7111      AND hgt.event_number               < l_array_event_number(i)
7112      AND lgt.event_id                   = hgt.event_id
7113      AND lgt.ledger_id                  = hgt.ledger_id
7114      AND lgt.balance_type_code          = hgt.balance_type_code
7115      -- lines that are reversal lines are not revrsed again
7116      AND lgt.reversal_code              IS NULL
7117      -- lines that are reversed earlier are not reversed again
7118      AND NOT EXISTS (
7119                 SELECT 1
7120                 FROM xla_ae_lines_gt
7121                 WHERE ledger_id        = lgt.ledger_id
7122                   AND ref_ae_header_id = lgt.ae_header_id  -- 5499367 lgt.ref_ae_header_id
7123                   AND temp_line_num    = lgt.temp_line_num * -1
7124                )
7125      AND lgt.header_num = hgt.header_num     -- 4262811c  Transaction Reversal (not yet finalised)
7126    ;
7127 
7128    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7129       trace
7130          (p_msg      => 'Transaction Reversal - Reversal lines created from xla_ae_lines_gt = '||SQL%ROWCOUNT
7131          ,p_level    => C_LEVEL_STATEMENT
7132          ,p_module   => l_log_module);
7133    END IF;
7134 
7135 
7136    --------------------------------------------------------------------------------------------------------------
7137    -- 5108415 For Transaction Reversal, Store the incomplete MPA/AccRev entries to be used in DeleteIncompleteMPA
7138    --------------------------------------------------------------------------------------------------------------
7139    IF p_accounting_mode IN ('F','RESERVE_FUNDS') THEN
7140 
7141       SELECT /*+ Leading(LGT,XET) use_nl(lgt xet aeh ael)*/  -- 5262950
7142              ael.ae_header_id
7143             ,ael.ae_line_num
7144             ,aeh.parent_ae_header_id
7145       BULK COLLECT INTO
7146              g_incomplete_mpa_acc_TR.l_array_ae_header_id
7147             ,g_incomplete_mpa_acc_TR.l_array_ae_line_num
7148             ,g_incomplete_mpa_acc_TR.l_array_parent_ae_header
7149       FROM
7150            xla_ae_lines_gt           lgt
7151           ,xla_ae_lines              ael
7152           ,xla_ae_headers            aeh
7153           ,xla_events                xet -- 5262950
7154       WHERE aeh.application_id                        = l_application_id
7155       AND lgt.reversal_code                           = 'DUMMY_TR'
7156       AND xet.application_id                          = l_application_id -- 5262950
7157       AND xet.entity_id                               = lgt.entity_id    -- 5262950
7158       AND aeh.event_id                                = xet.event_id     -- 5262950
7159       AND aeh.ledger_id                               = lgt.ledger_id
7160       AND aeh.entity_id                               = xet.entity_id    -- 5262950 lgt.entity_id
7161    -- AND aeh.entity_id                               = lgt.entity_id
7162       AND ael.application_id                          = aeh.application_id   -- 5262950
7163       AND ael.ae_header_id                            = aeh.ae_header_id     -- 5262950
7164       AND aeh.parent_ae_header_id IS NOT NULL AND aeh.accounting_entry_status_code IN ('D','N','I','R','RELATED_EVENT_ERROR');  -- 5262950
7165 
7166       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7167          trace
7168                (p_msg      => 'Incomplete mpa_acc_TR  count='||g_incomplete_mpa_acc_TR.l_array_ae_header_id.COUNT
7169                ,p_level    => C_LEVEL_STATEMENT
7170                ,p_module   => l_log_module);
7171          FOR i in 1..g_incomplete_mpa_acc_TR.l_array_ae_header_id.COUNT LOOP
7172             trace
7173                (p_msg      => 'Incomplete mpa_acc_TR  ae_header='||g_incomplete_mpa_acc_TR.l_array_ae_header_id(i)||
7174                               ' ae_line='||g_incomplete_mpa_acc_TR.l_array_ae_line_num(i)||
7175                               ' parent='||g_incomplete_mpa_acc_TR.l_array_parent_ae_header(i)
7176                ,p_level    => C_LEVEL_STATEMENT
7177                ,p_module   => l_log_module);
7178          END LOOP;
7179       END IF;
7180 
7181    END IF;
7182 
7183    --bug#6933157 24-Apr-2008
7184    -- To consider switch_side_flag depending on the ledger reversal option when gain_or_loss_flag is not
7185    -- equal to 'Y'. In the following insert below it was defaulted to 'N' due to which the merge_index
7186    -- was getting calculated differently, leading to receivable being debited with double the amount in case
7187    -- of receipt reversals on create accounting.
7188 
7189    IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE' THEN
7190       l_default_switch_side_flag := 'Y';
7191    ELSE
7192       l_default_switch_side_flag := 'N';
7193    END IF;
7194 
7195    --end bug#6933157 24-Apr-2008
7196 
7197    --
7198    ---------------------------------------------------------------------------------------------------------
7199    -- reverse the lines in xla_ae_lines table
7200    --
7201    -- Some for 4669308:
7202    --          For MPA entries, only reverse what is necessary , ie create reversal for Complete MPA only.
7203    --          Do not create reversal for incomplete entry (since it will get deleted anyway).
7204    --          Also, since the redundant lines will affect ROUNDING calculation.
7205    --          Need to create reversal in Draft mode also (so can be viewed).
7206    ---------------------------------------------------------------------------------------------------------
7207    --
7208    FORALL i IN 1..l_array_event_id.count
7209    INSERT INTO xla_ae_lines_gt
7210       (ae_header_id
7211       ,temp_line_num
7212       ,event_id
7213       ,ref_ae_header_id
7214       ,ref_ae_line_num
7215       ,ref_temp_line_num
7216       ,ref_event_id
7217       ,balance_type_code
7218       ,ledger_id
7219       ,accounting_class_code
7220       ,event_class_code
7221       ,event_type_code
7222       ,line_definition_owner_code
7223       ,line_definition_code
7224       ,accounting_line_type_code
7225       ,accounting_line_code
7226       ,code_combination_status_code
7227       ,code_combination_id
7228       ,alt_ccid_status_code
7229       ,alt_code_combination_id
7230       ,description
7231       ,gl_transfer_mode_code
7232       ,merge_duplicate_code
7233       ,switch_side_flag   -- 5055878
7234 --      ,entered_amount
7235 --      ,ledger_amount
7236       ,unrounded_entered_dr
7237       ,unrounded_entered_cr
7238       ,unrounded_accounted_dr
7239       ,unrounded_accounted_cr
7240       ,calculate_acctd_amts_flag
7241       ,calculate_g_l_amts_flag
7242       ,gain_or_loss_flag
7243       ,rounding_class_code
7244       ,document_rounding_level
7245       ,doc_rounding_acctd_amt
7246       ,doc_rounding_entered_amt
7247       ,entered_currency_mau
7248       ,currency_code
7249       ,currency_conversion_date
7250       ,currency_conversion_rate
7251       ,currency_conversion_type
7252       ,statistical_amount
7253       ,party_id
7254       ,party_site_id
7255       ,party_type_code
7256       ,ussgl_transaction_code
7257       ,jgzz_recon_ref
7258       ,tax_line_ref_id                  -- bug 7159711
7259       ,tax_summary_line_ref_id          -- bug 7159711
7260       ,tax_rec_nrec_dist_ref_id         -- bug 7159711
7261       ,source_distribution_id_char_1
7262       ,source_distribution_id_char_2
7263       ,source_distribution_id_char_3
7264       ,source_distribution_id_char_4
7265       ,source_distribution_id_char_5
7266       ,source_distribution_id_num_1
7267       ,source_distribution_id_num_2
7268       ,source_distribution_id_num_3
7269       ,source_distribution_id_num_4
7270       ,source_distribution_id_num_5
7271       ,source_distribution_type
7272       ,reverse_dist_id_char_1
7273       ,reverse_dist_id_char_2
7274       ,reverse_dist_id_char_3
7275       ,reverse_dist_id_char_4
7276       ,reverse_dist_id_char_5
7277       ,reverse_dist_id_num_1
7278       ,reverse_dist_id_num_2
7279       ,reverse_dist_id_num_3
7280       ,reverse_dist_id_num_4
7281       ,reverse_dist_id_num_5
7282       ,reverse_distribution_type
7283       ,reversal_code
7284       ,accounting_entry_status_code
7285       ,encumbrance_type_id -- 4458381
7286       ,inherit_desc_flag   -- 4219869
7287       ,header_num               -- 4669308
7288       ,mpa_accrual_entry_flag   -- 4262811
7289       ,accounting_date
7290       , BFLOW_APPLICATION_ID
7291         , BFLOW_ENTITY_CODE
7292         , APPLIED_TO_ENTITY_ID
7293         , BFLOW_SOURCE_ID_NUM_1
7294         , BFLOW_SOURCE_ID_NUM_2
7295         , BFLOW_SOURCE_ID_NUM_3
7296         , BFLOW_SOURCE_ID_NUM_4
7297         , BFLOW_SOURCE_ID_CHAR_1
7298         , BFLOW_SOURCE_ID_CHAR_2
7299         , BFLOW_SOURCE_ID_CHAR_3
7300         , BFLOW_SOURCE_ID_CHAR_4
7301         , BFLOW_DISTRIBUTION_TYPE
7302         , BFLOW_DIST_ID_NUM_1
7303         , BFLOW_DIST_ID_NUM_2
7304         , BFLOW_DIST_ID_NUM_3
7305         , BFLOW_DIST_ID_NUM_4
7306         , BFLOW_DIST_ID_NUM_5
7307         , BFLOW_DIST_ID_CHAR_1
7308         , BFLOW_DIST_ID_CHAR_2
7309         , BFLOW_DIST_ID_CHAR_3
7310         , BFLOW_DIST_ID_CHAR_4
7311         , BFLOW_DIST_ID_CHAR_5
7312  , alloc_to_application_id
7313  , alloc_to_entity_code
7314  , alloc_to_source_id_num_1
7315  , alloc_to_source_id_num_2
7316  , alloc_to_source_id_num_3
7317  , alloc_to_source_id_num_4
7318  , alloc_to_source_id_char_1
7319  , alloc_to_source_id_char_2
7320  , alloc_to_source_id_char_3
7321  , alloc_to_source_id_char_4
7322  , alloc_to_distribution_type
7323  , alloc_to_dist_id_char_1
7324  , alloc_to_dist_id_char_2
7325  , alloc_to_dist_id_char_3
7326  , alloc_to_dist_id_char_4
7327  , alloc_to_dist_id_char_5
7328  , alloc_to_dist_id_num_1
7329  , alloc_to_dist_id_num_2
7330  , alloc_to_dist_id_num_3
7331  , alloc_to_dist_id_num_4
7332  , alloc_to_dist_id_num_5         -- 4955764
7333  , analytical_balance_flag     --8417496
7334  ,ANC_ID_1 --   8691573
7335  )
7336    SELECT /*+ index(xdl XLA_DISTRIBUTION_LINKS_N3) */
7337        -- populates ae_header_id which is same as event_id till this point
7338        l_array_event_id(i)
7339       -- populates temp_line_num which is (-ve) of original line
7340       ,0 - xdl.temp_line_num
7341       -- populates event_id which is the event_id of event under process
7342       ,l_array_event_id(i)
7343       -- populates ref_ae_header_id which is ae_header_id of original line
7344       ,ael.ae_header_id
7345       -- populates ref_ae_line_num which is ae_line_num of original line
7346       ,ael.ae_line_num
7347       -- populates ref_temp_line_num which is ae_line_num of original line
7348       ,xdl.temp_line_num
7349       -- populates ref_event_id which is event_id of original line
7350       ,xdl.event_id
7351       ,aeh.balance_type_code
7352       ,l_array_ledger_id(i)
7353       ,ael.accounting_class_code
7354       ,xdl.event_class_code
7355       ,xdl.event_type_code
7356       ,xdl.line_definition_owner_code
7357       ,xdl.line_definition_code
7358       ,xdl.accounting_line_type_code
7359       ,xdl.accounting_line_code
7360       ,C_CREATED
7361       ,ael.code_combination_id
7362       ,C_CREATED
7363       ,ael.code_combination_id
7364       ,ael.description
7365       ,ael.gl_transfer_mode_code
7366       ,xdl.merge_duplicate_code
7367       --,decode(ael.gain_or_loss_flag, 'Y', decode(xdl.calculate_g_l_amts_flag, 'Y', 'Y', 'N'), 'N')
7368                             -- 5055878  switch_side_flag
7369       -- 5055878 amounts modified for reversal method of SIDE or SIGN
7370      -- commented for bug#11671933 to consider change sign even for gain/loss
7371       --, decode(ael.gain_or_loss_flag, 'Y', decode(xdl.calculate_g_l_amts_flag, 'Y', 'Y', 'N'), l_default_switch_side_flag)
7372       ,l_array_switch_side_flag(i) --added for bug#11671933
7373       --bug#6933157 24-Apr-2008
7374       ,DECODE(l_array_switch_side_flag(i),'Y',xdl.unrounded_entered_cr,  -xdl.unrounded_entered_dr)
7375       ,DECODE(l_array_switch_side_flag(i),'Y',xdl.unrounded_entered_dr,  -xdl.unrounded_entered_cr)
7376       ,DECODE(l_array_switch_side_flag(i),'Y',xdl.unrounded_accounted_cr,-xdl.unrounded_accounted_dr)
7377       ,DECODE(l_array_switch_side_flag(i),'Y',xdl.unrounded_accounted_dr,-xdl.unrounded_accounted_cr)
7378       --
7379       ,xdl.calculate_acctd_amts_flag
7380       ,xdl.calculate_g_l_amts_flag
7381       ,ael.gain_or_loss_flag
7382       ,xdl.rounding_class_code
7383       ,xdl.document_rounding_level
7384       ,NULL     -- xdl.doc_rounding_acctd_amt    4669308 creates wrong ROUNDING line for MPA reversal
7385       ,NULL     -- xdl.doc_rounding_entered_amt  4669308 creates wrong ROUNDING line for MPA reversal
7386 /*
7387       ,xdl.entered_amount
7388       ,xdl.ledger_amount
7389       -- populates entered_dr. amount should be equal to the entered amount in distribution links
7390       ,DECODE(ael.entered_cr,NULL,NULL,xdl.entered_amount)
7391       -- populates entered_cr. amount should be equal to the entered amount in distribution links
7392       ,DECODE(ael.entered_dr,NULL,NULL,xdl.entered_amount)
7393       -- populates accounted_dr. amount should be equal to the ledger amount in distribution links
7394       ,DECODE(ael.accounted_cr,NULL,NULL,xdl.ledger_amount)
7395       -- populates accounted_cr. amount should be equal to the ledger amount in distribution links
7396       ,DECODE(ael.accounted_dr,NULL,NULL,xdl.ledger_amount)
7397 */
7398 --      ,ael.entered_cr
7399 --      ,ael.entered_dr
7400 --      ,ael.accounted_cr
7401 --      ,ael.accounted_dr
7402        --  bug8642358 ,nvl(fcu.minimum_accountable_unit, power(10, -1* fcu.precision))
7403       ,decode(ael.gain_or_loss_flag, 'Y', 0.01, nvl(fcu.minimum_accountable_unit, power(10, -1* fcu.precision)))
7404       ,ael.currency_code
7405       ,ael.currency_conversion_date
7406       ,ael.currency_conversion_rate
7407       ,ael.currency_conversion_type
7408       --,DECODE(l_array_switch_side_flag(i),'Y',xdl.statistical_amount, -1 * xdl.statistical_amount) -- changed from xal to xdl for bug12726599
7409       ,-1 * xdl.statistical_amount --bug12823865
7410       ,ael.party_id
7411       ,ael.party_site_id
7412       ,ael.party_type_code
7413       ,ael.ussgl_transaction_code
7414       ,ael.jgzz_recon_ref
7415       -- if there are no distributions for this event
7416       -- populate with the distribution if lines that is being reversed
7417       ,NVL(l_array_tax_line_ref(i),xdl.tax_line_ref_id)                   -- bug7159711
7418       ,NVL(l_array_tax_summary_line_ref(i),xdl.tax_summary_line_ref_id)   -- bug7159711
7419       ,NVL(l_array_tax_rec_nrec_dist_ref(i),xdl.tax_rec_nrec_dist_ref_id) -- bug7159711
7420       ,NVL(l_array_source_dist_id_char_1(i),xdl.source_distribution_id_char_1)
7421       ,NVL(l_array_source_dist_id_char_2(i),xdl.source_distribution_id_char_2)
7422       ,NVL(l_array_source_dist_id_char_3(i),xdl.source_distribution_id_char_3)
7423       ,NVL(l_array_source_dist_id_char_4(i),xdl.source_distribution_id_char_4)
7424       ,NVL(l_array_source_dist_id_char_5(i),xdl.source_distribution_id_char_5)
7425       ,NVL(l_array_source_dist_id_num_1(i),xdl.source_distribution_id_num_1)
7426       ,NVL(l_array_source_dist_id_num_2(i),xdl.source_distribution_id_num_2)
7427       ,NVL(l_array_source_dist_id_num_3(i),xdl.source_distribution_id_num_3)
7428       ,NVL(l_array_source_dist_id_num_4(i),xdl.source_distribution_id_num_4)
7429       ,NVL(l_array_source_dist_id_num_5(i),xdl.source_distribution_id_num_5)
7430       ,NVL(l_array_source_dist_type(i),xdl.source_distribution_type)
7431       ,xdl.source_distribution_id_char_1
7432       ,xdl.source_distribution_id_char_2
7433       ,xdl.source_distribution_id_char_3
7434       ,xdl.source_distribution_id_char_4
7435       ,xdl.source_distribution_id_char_5
7436       ,xdl.source_distribution_id_NUM_1
7437       ,xdl.source_distribution_id_NUM_2
7438       ,xdl.source_distribution_id_NUM_3
7439       ,xdl.source_distribution_id_NUM_4
7440       ,xdl.source_distribution_id_NUM_5
7441       ,xdl.source_distribution_type
7442       -- populate reversal_code indicating that line is result of reversal
7443       ,'REVERSAL'
7444       -- denormalises entry status from headers to line to determine the status of entry being created
7445       -- populates 0 for a valid entry (F or D) else poulates 1
7446       ,DECODE(aeh.accounting_entry_status_code,'F',0,'D',0,1)
7447       ,ael.encumbrance_type_id  -- 4458381
7448       ,'N'            -- 4219869 inherit_desc_flag  Should it be from l_array?
7449      -- ,0              -- 4669308 combine header with reversal of original entry -- commented  for bug8505463
7450      , DECODE(aeh.parent_ae_header_id , NULL , 0 ,
7451                                         CASE
7452                                         WHEN aeh.accounting_date <= l_array_gl_date(i)
7453                                         THEN 0
7454                                         ELSE -1 * dense_rank() over ( partition by aeh.parent_ae_header_id , aeh.parent_ae_line_num
7455                                                                       order by ael.ae_header_Id )
7456                                         END
7457             )                                              HEADER_NUM -- added for bug8505463 for MPA Cancellation
7458       ,'N'            -- 4262811 mpa_accrual_entry_flag
7459 --      ,l_array_gl_date(i)    -- 5189664    aeh.accounting_date  -- 4955764 -- commented  for bug8505463
7460      , DECODE(aeh.parent_ae_header_id , NULL , l_array_gl_date(i) ,  -- Regular Cancellation, hence Cancellation Event Date
7461                                         CASE
7462                                         WHEN aeh.accounting_date <= l_array_gl_date(i)
7463                                              THEN l_array_gl_date(i)  -- Accounting Date of Cancellation Event for prior Period's MPA Accounting
7464                                         ELSE aeh.accounting_date          -- Accounting Date of Original MPA Accounting
7465                                         END
7466  	               )                          ACCOUNTING_DATE                 -- added for bug8505463 for MPA Cancellation
7467       , xdl.APPLIED_TO_APPLICATION_ID   APPLIED_TO_APPLICATION_ID
7468  , xdl.APPLIED_TO_ENTITY_CODE       APPLIED_TO_ENTITY_CODE
7469  , xdl.APPLIED_TO_ENTITY_ID     APPLIED_TO_ENTITY_ID
7470  , xdl.APPLIED_TO_SOURCE_ID_NUM_1   APPLIED_TO_SOURCE_ID_NUM_1
7471  , xdl.APPLIED_TO_SOURCE_ID_NUM_2   APPLIED_TO_SOURCE_ID_NUM_2
7472  , xdl.APPLIED_TO_SOURCE_ID_NUM_3   APPLIED_TO_SOURCE_ID_NUM_3
7473  , xdl.APPLIED_TO_SOURCE_ID_NUM_4   APPLIED_TO_SOURCE_ID_NUM_4
7474  , xdl.APPLIED_TO_SOURCE_ID_CHAR_1  APPLIED_TO_SOURCE_ID_CHAR_1
7475  , xdl.APPLIED_TO_SOURCE_ID_CHAR_2  APPLIED_TO_SOURCE_ID_CHAR_2
7476  , xdl.APPLIED_TO_SOURCE_ID_CHAR_3  APPLIED_TO_SOURCE_ID_CHAR_3
7477  , xdl.APPLIED_TO_SOURCE_ID_CHAR_4  APPLIED_TO_SOURCE_ID_CHAR_4
7478  , xdl.APPLIED_TO_DISTRIBUTION_TYPE APPLIED_TO_DISTRIBUTION_TYPE
7479  , xdl.APPLIED_TO_DIST_ID_NUM_1     APPLIED_TO_DIST_ID_NUM_1
7480  , xdl.APPLIED_TO_DIST_ID_NUM_2     APPLIED_TO_DIST_ID_NUM_2
7481  , xdl.APPLIED_TO_DIST_ID_NUM_3     APPLIED_TO_DIST_ID_NUM_3
7482  , xdl.APPLIED_TO_DIST_ID_NUM_4     APPLIED_TO_DIST_ID_NUM_4
7483  , xdl.APPLIED_TO_DIST_ID_NUM_5     APPLIED_TO_DIST_ID_NUM_5
7484  , xdl.APPLIED_TO_DIST_ID_CHAR_1    APPLIED_TO_DIST_ID_CHAR_1
7485  , xdl.APPLIED_TO_DIST_ID_CHAR_2    APPLIED_TO_DIST_ID_CHAR_2
7486  , xdl.APPLIED_TO_DIST_ID_CHAR_3    APPLIED_TO_DIST_ID_CHAR_3
7487  , xdl.APPLIED_TO_DIST_ID_CHAR_4    APPLIED_TO_DIST_ID_CHAR_4
7488  , xdl.APPLIED_TO_DIST_ID_CHAR_5    APPLIED_TO_DIST_ID_CHAR_5
7489  , xdl.alloc_to_application_id      alloc_to_application_id
7490  , xdl.alloc_to_entity_code     alloc_to_entity_code
7491  , xdl.alloc_to_source_id_num_1     alloc_to_source_id_num_1
7492  , xdl.alloc_to_source_id_num_2     alloc_to_source_id_num_2
7493  , xdl.alloc_to_source_id_num_3     alloc_to_source_id_num_3
7494  , xdl.alloc_to_source_id_num_4     alloc_to_source_id_num_4
7495  , xdl.alloc_to_source_id_char_1    alloc_to_source_id_char_1
7496  , xdl.alloc_to_source_id_char_2    alloc_to_source_id_char_2
7497  , xdl.alloc_to_source_id_char_3    alloc_to_source_id_char_3
7498  , xdl.alloc_to_source_id_char_4    alloc_to_source_id_char_4
7499  , xdl.alloc_to_distribution_type   alloc_to_distribution_type
7500  , xdl.alloc_to_dist_id_char_1      alloc_to_dist_id_char_1
7501  , xdl.alloc_to_dist_id_char_2      alloc_to_dist_id_char_2
7502  , xdl.alloc_to_dist_id_char_3      alloc_to_dist_id_char_3
7503  , xdl.alloc_to_dist_id_char_4      alloc_to_dist_id_char_4
7504  , xdl.alloc_to_dist_id_char_5      alloc_to_dist_id_char_5
7505  , xdl.alloc_to_dist_id_num_1       alloc_to_dist_id_num_1
7506  , xdl.alloc_to_dist_id_num_2       alloc_to_dist_id_num_2
7507  , xdl.alloc_to_dist_id_num_3       alloc_to_dist_id_num_3
7508  , xdl.alloc_to_dist_id_num_4       alloc_to_dist_id_num_4
7509  , xdl.alloc_to_dist_id_num_5       alloc_to_dist_id_num_5
7510  , decode(ael.analytical_balance_flag, 'Y','P',
7511                                   'P','P',
7512                                   null) analytical_balance_flag  --8417496
7513 ,nvl2(ael.analytical_balance_flag,'DUMMY_ANC_'||ael.ae_header_id||ael.ae_line_num,null) ANC_ID_1 --Bug 8691573
7514 
7515    FROM
7516         xla_ae_lines              ael
7517        ,xla_ae_headers            aeh
7518        ,xla_distribution_links    xdl
7519        ,fnd_currencies            fcu
7520        ,xla_events                xe
7521    WHERE aeh.application_id                          = l_application_id
7522      AND aeh.ledger_id                               = l_array_ledger_id(i)
7523      AND aeh.entity_id                               = l_array_entity_id(i)
7524      AND aeh.ae_header_id                            = ael.ae_header_id  /* bug 9194744 */
7525    --  AND aeh.event_number                            < l_array_event_number(i)
7526      AND xdl.application_id                          = aeh.application_id
7527      AND xdl.ae_header_id                        = aeh.ae_header_id         -- 5499367
7528      -- AND xdl.ref_temp_line_num                       IS NULL  -- 5019460 old
7529      AND NVL(xdl.temp_line_num,0)                    >= 0        -- 5019460 new
7530      AND ael.application_id                          = xdl.application_id
7531      AND ael.ae_header_id                            = xdl.ae_header_id     -- 5499367
7532      AND ael.ae_line_num                             = xdl.ae_line_num
7533      AND ael.currency_code                           = fcu.currency_code
7534      AND NOT EXISTS (
7535                 SELECT /*+ no_unnest */ 1
7536                 FROM xla_distribution_links
7537                 WHERE ref_ae_header_id = xdl.ae_header_id
7538                   AND temp_line_num    = xdl.temp_line_num * -1
7539                   AND application_id   = xdl.application_id
7540                )
7541      AND NOT EXISTS (
7542                 SELECT /*+ no_unnest */ 1
7543                 FROM xla_ae_lines_gt
7544                 WHERE ref_ae_header_id = xdl.ae_header_id
7545                   AND temp_line_num    = xdl.temp_line_num * -1
7546                   AND ledger_id        = l_array_ledger_id(i)
7547                )
7548      AND xe.application_id                  = aeh.application_id
7549      AND xe.event_id                        = aeh.event_id
7550      AND NVL(xe.budgetary_control_flag,'N') = DECODE(p_accounting_mode
7551                                                     ,'FUNDS_CHECK','Y'
7552                                                     ,'FUNDS_RESERVE','Y'
7553                                                     ,'N')
7554      AND  ((aeh.parent_ae_header_id IS NOT NULL AND aeh.accounting_entry_status_code = 'F') OR  -- 4669308
7555            (aeh.parent_ae_header_id IS NULL))                                                   -- 4669308
7556    GROUP BY
7557        (0 - xdl.temp_line_num)
7558       ,ael.ae_header_id
7559       ,ael.ae_line_num
7560       ,xdl.temp_line_num
7561       ,xdl.event_id
7562       ,aeh.balance_type_code
7563       ,ael.accounting_class_code
7564       ,xdl.event_class_code
7565       ,xdl.event_type_code
7566       ,xdl.line_definition_owner_code
7567       ,xdl.line_definition_code
7568       ,xdl.accounting_line_type_code
7569       ,xdl.accounting_line_code
7570       ,xdl.unrounded_entered_cr
7571       ,xdl.unrounded_entered_dr
7572       ,xdl.unrounded_accounted_cr
7573       ,xdl.unrounded_accounted_dr
7574       ,xdl.calculate_acctd_amts_flag
7575       ,xdl.calculate_g_l_amts_flag
7576       ,ael.gain_or_loss_flag
7577       ,xdl.rounding_class_code
7578       ,xdl.document_rounding_level
7579       ,xdl.doc_rounding_acctd_amt
7580       ,xdl.doc_rounding_entered_amt
7581       ,ael.code_combination_id
7582       ,ael.description
7583       ,ael.gl_transfer_mode_code
7584       ,xdl.merge_duplicate_code
7585 --      ,ael.entered_cr
7586 --      ,ael.entered_dr
7587 --      ,ael.accounted_cr
7588 --      ,ael.accounted_dr
7589       ,nvl(fcu.minimum_accountable_unit, power(10, -1* fcu.precision))
7590       ,ael.currency_code
7591       ,ael.currency_conversion_date
7592       ,ael.currency_conversion_rate
7593       ,ael.currency_conversion_type
7594       ,xdl.statistical_amount  -- changed from xal to xdl for bug12726599
7595       ,ael.party_id
7596       ,ael.party_site_id
7597       ,ael.party_type_code
7598       ,ael.ussgl_transaction_code
7599       ,ael.jgzz_recon_ref
7600       ,aeh.accounting_entry_status_code
7601       ,ael.encumbrance_type_id
7602       ,xdl.tax_line_ref_id              -- bug7226263
7603       ,xdl.tax_summary_line_ref_id      -- bug7226263
7604       ,xdl.tax_rec_nrec_dist_ref_id     -- bug7226263
7605       ,xdl.source_distribution_id_char_1
7606       ,xdl.source_distribution_id_char_2
7607       ,xdl.source_distribution_id_char_3
7608       ,xdl.source_distribution_id_char_4
7609       ,xdl.source_distribution_id_char_5
7610       ,xdl.source_distribution_id_NUM_1
7611       ,xdl.source_distribution_id_NUM_2
7612       ,xdl.source_distribution_id_NUM_3
7613       ,xdl.source_distribution_id_NUM_4
7614       ,xdl.source_distribution_id_NUM_5
7615       ,xdl.source_distribution_type
7616       ,aeh.accounting_date
7617       , aeh.parent_ae_header_id  -- added for bug8505463
7618       , aeh.parent_ae_line_num -- added for bug8505463
7619       , xdl.APPLIED_TO_APPLICATION_ID
7620  , xdl.APPLIED_TO_ENTITY_CODE
7621  , xdl.APPLIED_TO_ENTITY_ID
7622  , xdl.APPLIED_TO_SOURCE_ID_NUM_1
7623  , xdl.APPLIED_TO_SOURCE_ID_NUM_2
7624  , xdl.APPLIED_TO_SOURCE_ID_NUM_3
7625  , xdl.APPLIED_TO_SOURCE_ID_NUM_4
7626  , xdl.APPLIED_TO_SOURCE_ID_CHAR_1
7627  , xdl.APPLIED_TO_SOURCE_ID_CHAR_2
7628  , xdl.APPLIED_TO_SOURCE_ID_CHAR_3
7629  , xdl.APPLIED_TO_SOURCE_ID_CHAR_4
7630  , xdl.APPLIED_TO_DISTRIBUTION_TYPE
7631  , xdl.APPLIED_TO_DIST_ID_NUM_1
7632  , xdl.APPLIED_TO_DIST_ID_NUM_2
7633  , xdl.APPLIED_TO_DIST_ID_NUM_3
7634  , xdl.APPLIED_TO_DIST_ID_NUM_4
7635  , xdl.APPLIED_TO_DIST_ID_NUM_5
7636  , xdl.APPLIED_TO_DIST_ID_CHAR_1
7637  , xdl.APPLIED_TO_DIST_ID_CHAR_2
7638  , xdl.APPLIED_TO_DIST_ID_CHAR_3
7639  , xdl.APPLIED_TO_DIST_ID_CHAR_4
7640  , xdl.APPLIED_TO_DIST_ID_CHAR_5
7641  , xdl.alloc_to_application_id
7642  , xdl.alloc_to_entity_code
7643  , xdl.alloc_to_source_id_num_1
7644  , xdl.alloc_to_source_id_num_2
7645  , xdl.alloc_to_source_id_num_3
7646  , xdl.alloc_to_source_id_num_4
7647  , xdl.alloc_to_source_id_char_1
7648  , xdl.alloc_to_source_id_char_2
7649  , xdl.alloc_to_source_id_char_3
7650  , xdl.alloc_to_source_id_char_4
7651  , xdl.alloc_to_distribution_type
7652  , xdl.alloc_to_dist_id_char_1
7653  , xdl.alloc_to_dist_id_char_2
7654  , xdl.alloc_to_dist_id_char_3
7655  , xdl.alloc_to_dist_id_char_4
7656  , xdl.alloc_to_dist_id_char_5
7657  , xdl.alloc_to_dist_id_num_1
7658  , xdl.alloc_to_dist_id_num_2
7659  , xdl.alloc_to_dist_id_num_3
7660  , xdl.alloc_to_dist_id_num_4
7661  , xdl.alloc_to_dist_id_num_5
7662  , ael.analytical_balance_flag --8417496
7663 , nvl2(ael.analytical_balance_flag,'DUMMY_ANC_'||ael.ae_header_id||ael.ae_line_num,null) --Bug 8691573
7664    ;
7665 
7666   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7667       trace
7668          (p_msg      => 'Transaction Reversal - Reversal lines created from xla_ae_lines = '||SQL%ROWCOUNT
7669          ,p_level    => C_LEVEL_STATEMENT
7670          ,p_module   => l_log_module);
7671    END IF;
7672 
7673  -- 8919497 : update DUMMY value into anc_id_1 column in xla_ae_lines_gt to avoid merging of lines which has supporting reference details.
7674   update xla_ae_lines_gt gt
7675   set anc_id_1 = (select 'DUMMY_ANC_'||xac.ae_header_id||xac.ae_line_num
7676                   from xla_ae_line_acs xac
7677                   where gt.ref_ae_header_id= xac.ae_header_id
7678                   and gt.ref_ae_line_num=xac.ae_line_num
7679                   and rownum<2
7680                   )
7681   where gt.temp_line_num <0
7682   and gt.reversal_code='REVERSAL'
7683   --and gt.ref_ae_header_id<> gt.ae_header_id
7684   and anc_id_1 is null; --bug     9668528
7685 
7686    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7687         trace
7688            (p_msg      => 'Supporting Reference - Lines updated in xla_ae_lines_gt = '||SQL%ROWCOUNT
7689            ,p_level    => C_LEVEL_STATEMENT
7690            ,p_module   => l_log_module);
7691    END IF;
7692 
7693   -- bug7135700 code change, case: reversal lines created for primary but not for secondary for same event.
7694 
7695 IF l_upgrade_check = 1 THEN
7696 
7697 SELECT min(xla_ae_headers.accounting_date)
7698 INTO l_min_ref_event_date
7699 FROM xla_ae_lines_gt gt1, xla_ae_headers
7700 WHERE gt1.reversal_code = 'REVERSAL'
7701 AND gt1.ref_event_id = xla_ae_headers.event_id;
7702 
7703 l_error_count := 0;
7704 
7705 
7706 
7707  IF l_min_ref_event_date <= l_max_first_open_period  THEN
7708 
7709  print_logfile('***************************************************************************************************');
7710  print_logfile('The following REVERSAL (TR) events do not have historic entries replicated in secondary/alc ledgers');
7711  print_logfile('Manual GL adjustments in the secondary/alc ledgers needs to be done for these events');
7712 
7713 
7714  FOR c_not_reversed_entries IN
7715  (SELECT DISTINCT gt1.event_id, gt1.ledger_id
7716  FROM xla_ae_lines_gt gt1, gl_ledgers gll
7717  WHERE gt1.reversal_code = 'DUMMY_TR'
7718  AND gll.ledger_id = gt1.ledger_id
7719  AND gll.ledger_category_code <> 'PRIMARY'
7720  AND NOT EXISTS (SELECT 1
7721                  FROM xla_ae_lines_gt gt2
7722          WHERE gt2.reversal_code = 'REVERSAL'
7723          AND gt1.event_id = gt2.event_id
7724          AND gt1.ledger_id = gt2.ledger_id)
7725  AND EXISTS (SELECT 1
7726             FROM xla_ae_lines_gt gt3
7727             WHERE gt3.reversal_code = 'REVERSAL'
7728         AND gt1.event_id = gt3.event_id))
7729 
7730  LOOP
7731   --IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7732   --    trace
7733   --       (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.'
7734   --       ,p_level    => C_LEVEL_STATEMENT
7735   --       ,p_module   => l_log_module);
7736   --END IF;
7737   print_logfile('Event ' || c_not_reversed_entries.event_id || ' of ledger ' || c_not_reversed_entries.ledger_id);
7738   l_error_count := l_error_count + 1;
7739  END LOOP;
7740 
7741  IF l_error_count > 0 THEN
7742    g_hist_reversal_error_exists := TRUE;
7743  END IF;
7744 
7745  IF l_error_count = 0 THEN
7746  print_logfile('    NO SUCH ENTRIES');
7747  END IF;
7748 
7749  print_logfile('***************************************************************************************************');
7750 
7751 END IF;
7752 END IF;
7753 
7754  -- bug7135700 code change end
7755 
7756 
7757    --
7758    -- select all the reversal lines that do not have a header in xla_ae_headers_gt
7759    --
7760    SELECT event_id
7761          ,ledger_id
7762          ,balance_type_code
7763          ,max(accounting_entry_status_code)
7764          ,NVL(header_num,0)                   -- 4262811c missing mpa reversal lines, 4963422 set header_num to 0
7765 	 ,accounting_date                 -- added for bug8505463
7766      BULK COLLECT INTO
7767           l_array_event_id
7768          ,l_array_ledger_id
7769          ,l_array_balance_type_code
7770          ,l_array_entry_status_code
7771          ,l_array_header_num                  -- 4262811c missing mpa reversal lines
7772 	 ,l_array_accounting_date         -- added for bug8505463
7773      FROM xla_ae_lines_gt  lgt
7774     WHERE reversal_code = 'REVERSAL'
7775       AND NOT EXISTS
7776          (SELECT 1
7777             FROM xla_ae_headers_gt
7778            WHERE event_id = lgt.event_id
7779              AND ledger_id = lgt.ledger_id
7780           -- AND nvl(header_num, -1) = nvl(lgt.header_num, -1)  -- 4262811c missing mpa reversal lines
7781                                                                 -- 4669308  NVL(-1) give separate headers for MPA
7782                                                                 --          also causing XLA_AE_LINES_U1 error
7783              AND nvl(header_num,  0) = nvl(lgt.header_num,  0)  -- 4669308  NVL(0) combine replacement and MPA to 1 header
7784              AND balance_type_code = lgt.balance_type_code
7785 	     AND accounting_date   = lgt.accounting_date ) -- added for bug8505463
7786     GROUP BY event_id
7787             ,ledger_id
7788             ,header_num                       -- 4262811c missing mpa reversal lines
7789             ,balance_type_code
7790 	    ,accounting_date
7791     ORDER BY event_id
7792              ,ledger_id
7793              ,balance_type_code
7794              ,accounting_date
7795              ,header_num ;   -- added for bug 8505463 to sequence the headers based on accounting_date when multiple headers
7796 
7797    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7798       trace
7799          (p_msg      => 'Number of Headers that need to be created for reversal lines = '||SQL%ROWCOUNT
7800          ,p_level    => C_LEVEL_STATEMENT
7801          ,p_module   => l_log_module);
7802    END IF;
7803 
7804    --
7805    -- inserting new rows in xla_ae_headers_gt for the reversal lines that did not have a header
7806    --
7807    FORALL I IN 1..l_array_event_id.count
7808       INSERT INTO xla_ae_headers_gt
7809           ( ae_header_id
7810           , accounting_entry_status_code
7811           , accounting_entry_type_code
7812           , ledger_id
7813           , entity_id
7814           , event_id
7815           , event_type_code
7816           , accounting_date
7817           , product_rule_type_code
7818           , product_rule_code
7819           , product_rule_version
7820           , je_category_name
7821           , period_name
7822           , doc_sequence_id
7823           , doc_sequence_value
7824           , description
7825           , budget_version_id
7826           --, encumbrance_type_id
7827           , balance_type_code
7828           , amb_context_code
7829           , doc_category_code
7830           , gl_transfer_status_code
7831           , event_status_code
7832           , header_num              -- 4262811c  MPA header for line reversal
7833           ,accrual_reversal_flag)   -- 4262811
7834        (SELECT
7835             ae_header_id
7836           , l_array_entry_status_code(i)
7837           , accounting_entry_type_code
7838           , ledger_id
7839           , entity_id
7840           , event_id
7841           , event_type_code
7842           --, accounting_date commented for bug8505463
7843 	  , CASE
7844               WHEN l_array_header_num(i) <>  0
7845               THEN l_array_accounting_date(i)
7846               ELSE accounting_date
7847               END                                -- added for bug8505463
7848           , product_rule_type_code
7849           , product_rule_code
7850           , product_rule_version
7851           , je_category_name
7852           , period_name
7853           , doc_sequence_id
7854           , doc_sequence_value
7855           , description
7856           , DECODE(l_array_balance_type_code(i),'B',budget_version_id,NULL) -- 4924492
7857           --, encumbrance_type_id
7858           , l_array_balance_type_code(i)
7859           , amb_context_code
7860           , doc_category_code
7861           , gl_transfer_status_code
7862           , decode(l_array_entry_status_code(i),XLA_AE_JOURNAL_ENTRY_PKG.C_VALID,'X','I')
7863           , l_array_header_num(i)    -- 4262811c  MPA header for line reversal
7864           , accrual_reversal_flag    -- 4262811a
7865        FROM xla_ae_headers_gt
7866       WHERE event_id = l_array_event_id(i)
7867         AND ledger_id = l_array_ledger_id(i)
7868         AND balance_type_code = 'X'
7869         AND NVL(header_num,0) = 0);   -- 5183946  xla_ae_headers_gt_u1 error
7870 
7871 
7872    IF (C_LEVEL_EVENT >= g_log_level) THEN
7873       trace
7874          (p_msg      => 'Headers inserted in xla_ae_headers_gt = '||TO_CHAR(SQL%ROWCOUNT)
7875          ,p_level    => C_LEVEL_EVENT
7876          ,p_module   => l_log_module);
7877    END IF;
7878    --
7879 
7880 -- bug 7253269 reversal error start
7881 
7882  l_error_count := 0;
7883 
7884   /* Commented bug 11687439
7885  print_logfile('***************************************************************************************************');
7886  print_logfile('The following REVERSAL events could not be processed. The event/process status is U/U: ');
7887  print_logfile('Note: this warning may be ignored for any events whose ledger is a cash-basis ledger');*/
7888 
7889 
7890 
7891  FOR c_not_reversed_entries IN
7892  (SELECT DISTINCT gt1.event_id, gt1.ledger_id
7893  FROM xla_ae_lines_gt gt1
7894  WHERE gt1.reversal_code IN ('DUMMY_LR', 'DUMMY_TR')
7895  AND NOT EXISTS (SELECT 1
7896                  FROM xla_ae_lines_gt gt2
7897          WHERE gt2.reversal_code = 'REVERSAL'
7898          AND gt1.event_id = gt2.event_id
7899          AND gt1.ledger_id = gt2.ledger_id))
7900 
7901 
7902  LOOP
7903  --added bug 11687439
7904  IF  l_error_count = 0 THEN
7905  print_logfile('***************************************************************************************************');
7906  print_logfile('The following REVERSAL events could not be processed. The event/process status is U/U: ');
7907  print_logfile('Note: this warning may be ignored for any events whose ledger is a cash-basis ledger');
7908  END IF;
7909  -- end bug 11687439
7910 
7911   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7912       trace
7913          (p_msg      => 'EVENT not reversed ' || c_not_reversed_entries.event_id || ' of ledger ' || c_not_reversed_entries.ledger_id
7914          ,p_level    => C_LEVEL_STATEMENT
7915          ,p_module   => l_log_module);
7916   END IF;
7917   print_logfile('Event ' || c_not_reversed_entries.event_id || ' of ledger ' || c_not_reversed_entries.ledger_id);
7918   l_error_count := l_error_count + 1;
7919  END LOOP;
7920 
7921  IF l_error_count > 0 THEN
7922    xla_accounting_cache_pkg.g_reversal_error := TRUE;
7923    --added bug 11687439
7924    print_logfile('***************************************************************************************************');
7925    -- end bug 11687439
7926  END IF;
7927 
7928  IF l_error_count = 0 THEN
7929    -- commented bug 11687439
7930   -- print_logfile('-------NO SUCH EVENTS-----------');
7931   IF (C_LEVEL_EVENT >= g_log_level) THEN
7932       trace
7933          (p_msg      => 'No errors related to reversal'
7934          ,p_level    => C_LEVEL_EVENT
7935          ,p_module   => l_log_module);
7936    END IF;
7937  END IF;
7938 
7939  -- commented bug 11687439
7940  --print_logfile('***************************************************************************************************');
7941 
7942 
7943 
7944 -- bug 7253269 reversal error end
7945 
7946 
7947 
7948    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7949       trace
7950          (p_msg      => 'END of AccountingReversal'
7951          ,p_level    => C_LEVEL_PROCEDURE
7952          ,p_module   => l_log_module);
7953    END IF;
7954 EXCEPTION
7955 WHEN xla_exceptions_pkg.application_exception THEN
7956    RAISE;
7957 WHEN OTHERS  THEN
7958    xla_exceptions_pkg.raise_message
7959       (p_location => 'xla_ae_lines_pkg.AccountingReversal');
7960 END AccountingReversal;
7961 --
7962 /*======================================================================+
7963 |                                                                       |
7964 | PUBLIC Procedure                                                      |
7965 |                                                                       |
7966 |                                                                       |
7967 +======================================================================*/
7968 FUNCTION SetLineNum(
7969   p_balance_type_code      IN VARCHAR2
7970 )
7971 RETURN NUMBER
7972 IS
7973 l_line_num                  NUMBER;
7974 l_log_module                VARCHAR2(240);
7975 BEGIN
7976 --
7977 IF g_log_enabled THEN
7978       l_log_module := C_DEFAULT_MODULE||'.SetLineNum';
7979 END IF;
7980 --
7981 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7982 
7983       trace
7984          (p_msg      => 'BEGIN of SetLineNum'
7985          ,p_level    => C_LEVEL_PROCEDURE
7986          ,p_module   => l_log_module);
7987 
7988       trace
7989          (p_msg      => 'p_balance_type_code = '||p_balance_type_code
7990          ,p_level    => C_LEVEL_PROCEDURE
7991          ,p_module   => l_log_module);
7992 END IF;
7993 --
7994 CASE p_balance_type_code
7995   --
7996   WHEN C_ACTUAL         THEN
7997      --
7998      g_ActualLineNum                                     := NVL(g_ActualLineNum,0) + 1 ;
7999      l_line_num                                          := g_ActualLineNum;
8000      --
8001   WHEN C_BUDGET         THEN
8002      --
8003      g_BudgetLineNum                                     := NVL(g_BudgetLineNum,0) + 1 ;
8004      l_line_num                                          := g_BudgetLineNum;
8005      --
8006   WHEN C_ENCUMBRANCE    THEN
8007      --
8008      g_EncumbLineNum                                     := NVL(g_EncumbLineNum,0) + 1 ;
8009      l_line_num                                          := g_EncumbLineNum;
8010      --
8011   ELSE  null;
8012 --
8013 END CASE;
8014 --
8015 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8016       trace
8017          (p_msg      => 'return value. = '||TO_CHAR(l_line_num)
8018          ,p_level    => C_LEVEL_PROCEDURE
8019          ,p_module   => l_log_module);
8020       trace
8021          (p_msg      => 'END of SetLineNum'
8022          ,p_level    => C_LEVEL_PROCEDURE
8023          ,p_module   => l_log_module);
8024 
8025 END IF;
8026 
8027 RETURN l_line_num;
8028 EXCEPTION
8029 WHEN xla_exceptions_pkg.application_exception THEN
8030    XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
8031    RAISE;
8032 WHEN OTHERS  THEN
8033    xla_exceptions_pkg.raise_message
8034            (p_location => 'XLA_AE_LINES_PKG.SetLineNum');
8035   --
8036 END SetLineNum;
8037 --
8038 --
8039 /*======================================================================+
8040 |                                                                       |
8041 | Public Procedure                                                      |
8042 |                                                                       |
8043 |                                                                       |
8044 +======================================================================*/
8045 PROCEDURE SetRevAccountingSource (
8046   p_accounting_source      IN VARCHAR2
8047 , p_standard_source        IN VARCHAR2
8048 , p_source_code            IN VARCHAR2
8049 , p_source_type_code       IN VARCHAR2
8050 , p_source_application_id  IN NUMBER
8051 )
8052 IS
8053 l_log_module         VARCHAR2(240);
8054 BEGIN
8055 --
8056 IF g_log_enabled THEN
8057       l_log_module := C_DEFAULT_MODULE||'.SetRevAccountingSource';
8058 END IF;
8059 --
8060 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8061       trace
8062          (p_msg      => 'BEGIN of SetRevAccountingSource'
8063          ,p_level    => C_LEVEL_PROCEDURE
8064          ,p_module   => l_log_module);
8065 
8066       trace
8067          (p_msg      => 'p_accounting_source = '||p_accounting_source
8068          ,p_level    => C_LEVEL_PROCEDURE
8069          ,p_module   => l_log_module);
8070 
8071       trace
8072           (p_msg      => 'p_standard_source = '||p_standard_source
8073          ,p_level    => C_LEVEL_PROCEDURE
8074          ,p_module   => l_log_module);
8075 END IF;
8076 
8077 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8078 
8079            trace
8080               (p_msg      => 'p_source_code = '||p_source_code
8081               ,p_level    => C_LEVEL_STATEMENT
8082               ,p_module   => l_log_module);
8083 
8084            trace
8085               (p_msg      => 'p_source_type_code = '||p_source_type_code
8086               ,p_level    => C_LEVEL_STATEMENT
8087               ,p_module   => l_log_module);
8088 
8089            trace
8090               (p_msg      => 'p_source_application_id = '||p_source_application_id
8091               ,p_level    => C_LEVEL_STATEMENT
8092               ,p_module   => l_log_module);
8093 
8094 END IF;
8095 --
8096 CASE p_accounting_source
8097   --
8098   -- line accounting sources
8099   --
8100   WHEN 'PARTY_TYPE'                THEN
8101 
8102              g_reverse_lines.party_type_code        := p_standard_source;
8103 
8104   WHEN 'ENTERED_CURRENCY_CODE'     THEN g_reverse_lines.currency_code          := p_standard_source;
8105   --
8106   -- accounting reversal
8107   --
8108   WHEN 'ACCOUNTING_REVERSAL_OPTION' THEN g_reverse_lines.acc_reversal_option   := p_standard_source;
8109   WHEN 'REVERSED_DISTRIBUTION_TYPE' THEN g_reverse_lines.sys_distribution_type := p_standard_source;
8110   WHEN 'DISTRIBUTION_TYPE'          THEN g_reverse_lines.rev_sys_distribution_type := p_standard_source;
8111   WHEN 'REVERSED_DISTRIBUTION_ID1'  THEN g_reverse_lines.distribution_id_char_1 := p_standard_source;
8112   WHEN 'REVERSED_DISTRIBUTION_ID2'  THEN g_reverse_lines.distribution_id_char_2 := p_standard_source;
8113   WHEN 'REVERSED_DISTRIBUTION_ID3'  THEN g_reverse_lines.distribution_id_char_3 := p_standard_source;
8114   WHEN 'REVERSED_DISTRIBUTION_ID4'  THEN g_reverse_lines.distribution_id_char_4 := p_standard_source;
8115   WHEN 'REVERSED_DISTRIBUTION_ID5'  THEN g_reverse_lines.distribution_id_char_5 := p_standard_source;
8116   --
8117   WHEN 'DISTRIBUTION_IDENTIFIER_1'  THEN g_reverse_lines.rev_distrib_id_char_1 := p_standard_source;
8118   WHEN 'DISTRIBUTION_IDENTIFIER_2'  THEN g_reverse_lines.rev_distrib_id_char_2 := p_standard_source;
8119   WHEN 'DISTRIBUTION_IDENTIFIER_3'  THEN g_reverse_lines.rev_distrib_id_char_3 := p_standard_source;
8120   WHEN 'DISTRIBUTION_IDENTIFIER_4'  THEN g_reverse_lines.rev_distrib_id_char_4 := p_standard_source;
8121   WHEN 'DISTRIBUTION_IDENTIFIER_5'  THEN g_reverse_lines.rev_distrib_id_char_5 := p_standard_source;
8122   --
8123   -- line base currency accounting sources
8124   --
8125   WHEN 'EXCHANGE_RATE_TYPE'        THEN g_reverse_lines.curr_conversion_type := p_standard_source;
8126   WHEN 'USSGL_TRANSACTION_CODE'    THEN g_reverse_lines.ussgl_transaction    := p_standard_source;
8127   WHEN 'RECON_REF'                 THEN g_reverse_lines.jgzz_recon_ref       := p_standard_source;
8128 
8129   ELSE null;
8130 --
8131 END CASE;
8132 --
8133 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8134 
8135       trace
8136          (p_msg      => 'END of SetRevAccountingSource'
8137          ,p_level    => C_LEVEL_PROCEDURE
8138          ,p_module   => l_log_module);
8139 
8140 END IF;
8141 EXCEPTION
8142 WHEN xla_exceptions_pkg.application_exception THEN
8143    XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
8144    RAISE;
8145 WHEN OTHERS  THEN
8146    xla_exceptions_pkg.raise_message
8147            (p_location => 'XLA_AE_LINES_PKG.SetRevAccountingSource');
8148   --
8149 END SetRevAccountingSource;
8150 --
8151 --
8152 /*======================================================================+
8153 |                                                                       |
8154 | Public Procedure                                                      |
8155 |                                                                       |
8156 |                                                                       |
8157 +======================================================================*/
8158 PROCEDURE SetRevAccountingSource (
8159   p_accounting_source      IN VARCHAR2
8160 , p_standard_source        IN NUMBER
8161 , p_source_code            IN VARCHAR2
8162 , p_source_type_code       IN VARCHAR2
8163 , p_source_application_id  IN NUMBER
8164 )
8165 IS
8166 l_log_module         VARCHAR2(240);
8167 BEGIN
8168 --
8169 IF g_log_enabled THEN
8170       l_log_module := C_DEFAULT_MODULE||'.SetRevAccountingSource';
8171 END IF;
8172 --
8173 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8174       trace
8175          (p_msg      => 'BEGIN of SetRevAccountingSource'
8176          ,p_level    => C_LEVEL_PROCEDURE
8177          ,p_module   => l_log_module);
8178 
8179       trace
8180          (p_msg      => 'p_accounting_source = '||p_accounting_source
8181          ,p_level    => C_LEVEL_PROCEDURE
8182          ,p_module   => l_log_module);
8183 
8184       trace
8185           (p_msg      => 'p_standard_source = '||p_standard_source
8186          ,p_level    => C_LEVEL_PROCEDURE
8187          ,p_module   => l_log_module);
8188 END IF;
8189 
8190 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8191 
8192            trace
8193               (p_msg      => 'p_source_code = '||p_source_code
8194               ,p_level    => C_LEVEL_STATEMENT
8195               ,p_module   => l_log_module);
8196 
8197            trace
8198               (p_msg      => 'p_source_type_code = '||p_source_type_code
8199               ,p_level    => C_LEVEL_STATEMENT
8200               ,p_module   => l_log_module);
8201 
8202            trace
8203               (p_msg      => 'p_source_application_id = '||p_source_application_id
8204               ,p_level    => C_LEVEL_STATEMENT
8205               ,p_module   => l_log_module);
8206 
8207 END IF;
8208 
8209 --
8210 CASE p_accounting_source
8211 
8212   WHEN 'LEDGER_AMOUNT'                 THEN g_reverse_lines.ledger_amount             := p_standard_source;
8213   WHEN 'EXCHANGE_RATE'                 THEN g_reverse_lines.curr_conversion_rate      := p_standard_source;
8214   WHEN 'PARTY_ID'                      THEN g_reverse_lines.party_id                  := p_standard_source;
8215   WHEN 'PARTY_SITE_ID'                 THEN g_reverse_lines.party_site_id             := p_standard_source;
8216   WHEN 'ENTERED_CURRENCY_AMOUNT'       THEN g_reverse_lines.entered_amount            := p_standard_source;
8217   WHEN 'STATISTICAL_AMOUNT'            THEN g_reverse_lines.statistical_amount        := p_standard_source;
8218 
8219 
8220   WHEN 'TAX_LINE_REF_ID'               THEN g_reverse_lines.tax_line_ref          := p_standard_source;
8221   WHEN 'TAX_SUMMARY_LINE_REF_ID'       THEN g_reverse_lines.tax_summary_line_ref  := p_standard_source;
8222   WHEN 'TAX_REC_NREC_DIST_REF_ID'      THEN g_reverse_lines.tax_rec_nrec_dist_ref := p_standard_source;
8223 --
8224   WHEN 'REVERSED_DISTRIBUTION_ID1'    THEN g_reverse_lines.distribution_id_num_1   := p_standard_source;
8225   WHEN 'REVERSED_DISTRIBUTION_ID2'    THEN g_reverse_lines.distribution_id_num_2   := p_standard_source;
8226   WHEN 'REVERSED_DISTRIBUTION_ID3'    THEN g_reverse_lines.distribution_id_num_3   := p_standard_source;
8227   WHEN 'REVERSED_DISTRIBUTION_ID4'    THEN g_reverse_lines.distribution_id_num_4   := p_standard_source;
8228   WHEN 'REVERSED_DISTRIBUTION_ID5'    THEN g_reverse_lines.distribution_id_num_5   := p_standard_source;
8229   --
8230   WHEN 'DISTRIBUTION_IDENTIFIER_1'    THEN g_reverse_lines.rev_distrib_id_num_1   := p_standard_source;
8231   WHEN 'DISTRIBUTION_IDENTIFIER_2'    THEN g_reverse_lines.rev_distrib_id_num_2   := p_standard_source;
8232   WHEN 'DISTRIBUTION_IDENTIFIER_3'    THEN g_reverse_lines.rev_distrib_id_num_3   := p_standard_source;
8233   WHEN 'DISTRIBUTION_IDENTIFIER_4'    THEN g_reverse_lines.rev_distrib_id_num_4   := p_standard_source;
8234   WHEN 'DISTRIBUTION_IDENTIFIER_5'    THEN g_reverse_lines.rev_distrib_id_num_5   := p_standard_source;
8235   --
8236   WHEN 'REVERSED_UPGRADE_DEBIT_CCID'  THEN g_reverse_lines.reversal_debit_ccid     := p_standard_source;
8237   WHEN 'REVERSED_UPGRADE_CREDIT_CCID' THEN g_reverse_lines.reversal_credit_ccid    := p_standard_source;
8238   --
8239   ELSE null;
8240 --
8241 END CASE;
8242 --
8243 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8244 
8245       trace
8246          (p_msg      => 'END of SetRevAccountingSource'
8247          ,p_level    => C_LEVEL_PROCEDURE
8248          ,p_module   => l_log_module);
8249 
8250 END IF;
8251 --
8252 EXCEPTION
8253 WHEN xla_exceptions_pkg.application_exception THEN
8254    XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
8255    RAISE;
8256 WHEN OTHERS  THEN
8257    xla_exceptions_pkg.raise_message
8258            (p_location => 'XLA_AE_LINES_PKG.SetRevAccountingSource');
8259   --
8260 END SetRevAccountingSource;
8261 --
8262 /*======================================================================+
8263 |                                                                       |
8264 | Public Procedure                                                      |
8265 |                                                                       |
8266 |                                                                       |
8267 +======================================================================*/
8268 PROCEDURE SetRevAccountingSource (
8269   p_accounting_source      IN VARCHAR2
8270 , p_standard_source        IN DATE
8271 , p_source_code            IN VARCHAR2
8272 , p_source_type_code       IN VARCHAR2
8273 , p_source_application_id  IN NUMBER
8274 )
8275 IS
8276 l_log_module         VARCHAR2(240);
8277 BEGIN
8278 --
8279 IF g_log_enabled THEN
8280       l_log_module := C_DEFAULT_MODULE||'.SetRevAccountingSource';
8281 END IF;
8282 --
8283 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8284       trace
8285          (p_msg      => 'BEGIN of SetRevAccountingSource'
8286          ,p_level    => C_LEVEL_PROCEDURE
8287          ,p_module   => l_log_module);
8288 
8289       trace
8290          (p_msg      => 'p_accounting_source = '||p_accounting_source
8291          ,p_level    => C_LEVEL_PROCEDURE
8292          ,p_module   => l_log_module);
8293 
8294       trace
8295           (p_msg      => 'p_standard_source = '||p_standard_source
8296          ,p_level    => C_LEVEL_PROCEDURE
8297          ,p_module   => l_log_module);
8298 END IF;
8299 
8300 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8301 
8302            trace
8303               (p_msg      => 'p_source_code = '||p_source_code
8304               ,p_level    => C_LEVEL_STATEMENT
8305               ,p_module   => l_log_module);
8306 
8307            trace
8308               (p_msg      => 'p_source_type_code = '||p_source_type_code
8309               ,p_level    => C_LEVEL_STATEMENT
8310               ,p_module   => l_log_module);
8311 
8312            trace
8313               (p_msg      => 'p_source_application_id = '||p_source_application_id
8314               ,p_level    => C_LEVEL_STATEMENT
8315               ,p_module   => l_log_module);
8316 
8317 END IF;
8318 --
8319 CASE p_accounting_source
8320   --
8321   -- line accounting sources
8322   --
8323   -- 4262811 MPA ------------------------------------------------------------------------------------
8324   WHEN 'MULTIPERIOD_START_DATE'    THEN g_reverse_lines.mpa_start_date      := p_standard_source;
8325   WHEN 'MULTIPERIOD_END_DATE'      THEN g_reverse_lines.mpa_end_date        := p_standard_source;
8326 --WHEN 'DEFERRED_START_DATE'       THEN g_reverse_lines.deferred_start_date := p_standard_source;
8327 --WHEN 'DEFERRED_END_DATE'         THEN g_reverse_lines.deferred_end_date   := p_standard_source;
8328   ---------------------------------------------------------------------------------------------------
8329   WHEN 'EXCHANGE_DATE'             THEN g_reverse_lines.curr_conversion_date:= p_standard_source;
8330   --
8331   ELSE null;
8332 --
8333 END CASE;
8334 --
8335 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8336 
8337       trace
8338          (p_msg      => 'END of SetRevAccountingSource'
8339          ,p_level    => C_LEVEL_PROCEDURE
8340          ,p_module   => l_log_module);
8341 
8342 END IF;
8343 --
8344 EXCEPTION
8345 WHEN xla_exceptions_pkg.application_exception THEN
8346    XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
8347    RAISE;
8348 WHEN OTHERS  THEN
8349    xla_exceptions_pkg.raise_message
8350            (p_location => 'XLA_AE_LINES_PKG.SetRevAccountingSource');
8351 END SetRevAccountingSource;
8352 --
8353 --
8354 /*======================================================================+
8355 |                                                                       |
8356 | Public Procedure                                                      |
8357 | This procedure is no longer used after attribute enhancement project  |
8358 |                                                                       |
8359 +======================================================================*/
8360 --
8361 -- This might not be needed with bulk perfromance changes
8362 --
8363 /*
8364 PROCEDURE accounting_reversal(p_accounting_reversal_option IN VARCHAR2
8365                              ,p_transaction_reversal       IN OUT NOCOPY NUMBER)
8366 IS
8367 l_null_rev_line        t_rec_reverse_line;
8368 l_transaction_reversal NUMBER;
8369 l_log_module           VARCHAR2(240);
8370 BEGIN
8371 --
8372 IF g_log_enabled THEN
8373       l_log_module := C_DEFAULT_MODULE||'.accounting_reversal';
8374 END IF;
8375 --
8376 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8377 
8378       trace
8379          (p_msg      => 'BEGIN of accounting_reversal'
8380          ,p_level    => C_LEVEL_PROCEDURE
8381          ,p_module   => l_log_module);
8382 
8383       trace
8384           (p_msg      => 'p_accounting_reversal_option = '||p_accounting_reversal_option
8385          ,p_level    => C_LEVEL_PROCEDURE
8386          ,p_module   => l_log_module);
8387 
8388       trace
8389          (p_msg      => 'p_transaction_reversal = '||p_transaction_reversal
8390          ,p_level    => C_LEVEL_PROCEDURE
8391          ,p_module   => l_log_module);
8392 
8393 END IF;
8394 
8395 l_transaction_reversal:= p_transaction_reversal ;
8396 --
8397 
8398   IF   p_accounting_reversal_option IN ('Y','B','Z','C') AND
8399        g_reverse_lines.sys_distribution_type IS NULL AND
8400        l_transaction_reversal = 0 THEN
8401 
8402 --       TransactionReversal;
8403        l_transaction_reversal:= 1;
8404 
8405   ELSIF p_accounting_reversal_option IN ('Y','B','Z','C') AND
8406         g_reverse_lines.sys_distribution_type IS NOT NULL AND
8407         l_transaction_reversal IN (0,2) THEN
8408 
8409 --    StandardAccountingReversal;
8410 --      (p_accounting_reversal_option => p_accounting_reversal_option
8411 --      );
8412     l_transaction_reversal:= 2;
8413 
8414 
8415   ELSIF p_accounting_reversal_option = 'U' THEN
8416 
8417     UpgradeAccountingReversal;
8418 
8419   ELSIF p_accounting_reversal_option IN ('Y','B','Z','C') AND
8420         g_reverse_lines.sys_distribution_type IS NULL AND
8421         l_transaction_reversal = 1
8422   THEN
8423      XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
8424 
8425      xla_accounting_err_pkg.build_message
8426                                         (p_appli_s_name            => 'XLA'
8427                                         ,p_msg_name                => 'XLA_AP_TRANS_REVERSAL_INCONST'
8428                                         ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8429                                         ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8430                                         ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8431     );
8432 
8433     IF (C_LEVEL_ERROR >= g_log_level) THEN
8434                         trace
8435                            (p_msg      => 'ERROR: XLA_AP_TRANS_REVERSAL_INCONST'
8436                            ,p_level    => C_LEVEL_ERROR
8437                            ,p_module   => l_log_module);
8438     END IF;
8439 
8440   ELSE
8441       XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
8442 
8443       xla_accounting_err_pkg.build_message
8444                                               (p_appli_s_name            => 'XLA'
8445                                               ,p_msg_name                => 'XLA_AP_REVERSAL_INCONSISTENT'
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     );
8450 
8451     IF (C_LEVEL_ERROR >= g_log_level) THEN
8452                         trace
8453                            (p_msg      => 'ERROR: XLA_AP_REVERSAL_INCONSISTENT'
8454                            ,p_level    => C_LEVEL_ERROR
8455                            ,p_module   => l_log_module);
8456     END IF;
8457 
8458   END IF;
8459 
8460   p_transaction_reversal:= l_transaction_reversal ;
8461 --
8462 -- Reset reverse line record
8463 --
8464   g_reverse_lines                := l_null_rev_line;
8465 --
8466 --
8467 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8468       trace
8469          (p_msg      => 'return value. p_transaction_reversal = '||p_transaction_reversal
8470          ,p_level    => C_LEVEL_PROCEDURE
8471          ,p_module   => l_log_module);
8472 
8473       trace
8474          (p_msg      => 'END of accounting_reversal'
8475          ,p_level    => C_LEVEL_PROCEDURE
8476          ,p_module   => l_log_module);
8477 
8478 END IF;
8479 --
8480 EXCEPTION
8481 WHEN xla_exceptions_pkg.application_exception THEN
8482   XLA_AE_JOURNAL_ENTRY_PKG.g_global_status       := XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
8483   RAISE;
8484 WHEN OTHERS  THEN
8485    xla_exceptions_pkg.raise_message
8486            (p_location => 'XLA_AE_LINES_PKG.accounting_reversal');
8487   --
8488 END accounting_reversal;
8489 --
8490 */
8491 --
8492 /*======================================================================+
8493 |                                                                       |
8494 | Public Procedure                                                      |
8495 |                                                                       |
8496 +======================================================================*/
8497 --
8498 --bulk performance
8499 --
8500 procedure set_ae_header_id
8501        (p_ae_header_id      in number
8502        ,p_header_num        in number) is   -- 4262811
8503 
8504 l_log_module     varchar2(240);
8505 begin
8506 IF g_log_enabled THEN
8507       l_log_module := C_DEFAULT_MODULE||'.set_ae_header_id';
8508 END IF;
8509 --
8510 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8511       trace
8512          (p_msg      => 'BEGIN of set_ae_header_id'
8513          ,p_level    => C_LEVEL_PROCEDURE
8514          ,p_module   => l_log_module);
8515       trace
8516          (p_msg      => 'p_ae_header_id = '||p_ae_header_id
8517          ,p_level    => C_LEVEL_PROCEDURE
8518          ,p_module   => l_log_module);
8519 
8520 END IF;
8521 --
8522 g_rec_lines.array_ae_header_id(g_LineNumber) := p_ae_header_id;
8523 g_rec_lines.array_header_num(g_LineNumber)   := p_header_num;   -- 4262811
8524 
8525 --
8526 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8527       trace
8528          (p_msg      => 'END of set_ae_header_id'
8529          ,p_level    => C_LEVEL_PROCEDURE
8530          ,p_module   => l_log_module);
8531 
8532 END IF;
8533 end set_ae_header_id;
8534 --
8535 /*======================================================================+
8536 |                                                                       |
8537 |                                                                       |
8538 |                                                                       |
8539 +======================================================================*/
8540 procedure SetLineAcctAttrs
8541        (p_rec_acct_attrs    in t_rec_acct_attrs) is
8542 l_log_module                 VARCHAR2(240);
8543 l_attr_error                 VARCHAR2(30);
8544 l_invalid_attr               VARCHAR2(30) := 'XLA_AP_INVALID_LINE_ATTR';
8545 l_missing_attr               VARCHAR2(30) := 'XLA_AP_MISSING_LINE_ATTR';
8546 
8547 BEGIN
8548 
8549 IF g_log_enabled THEN
8550       l_log_module := C_DEFAULT_MODULE||'.SetLineAcctAttrs';
8551 END IF;
8552 
8553 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8554    trace
8555       (p_msg      => 'BEGIN of SetLineAcctAttrs'
8556       ,p_level    => C_LEVEL_PROCEDURE
8557       ,p_module   => l_log_module);
8558 END IF;
8559 
8560 FOR i in 1..p_rec_acct_attrs.array_acct_attr_code.count loop
8561 
8562   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8563      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8564         trace(p_msg      => 'Loop count = '||i||
8565                             ' (char) : '||p_rec_acct_attrs.array_acct_attr_code(i)||
8566                             ' = '||p_rec_acct_attrs.array_char_value(i)
8567              ,p_level    => C_LEVEL_STATEMENT
8568              ,p_module   => l_log_module);
8569      ELSIF p_rec_acct_attrs.array_date_value.EXISTS(i) THEN
8570         trace(p_msg      => 'Loop count = '||i||
8571                             ' (date) : '||p_rec_acct_attrs.array_acct_attr_code(i)||
8572                             ' = '||p_rec_acct_attrs.array_date_value(i)
8573              ,p_level    => C_LEVEL_STATEMENT
8574              ,p_module   => l_log_module);
8575      ELSE
8576         trace(p_msg      => 'Loop count = '||i||
8577                             ' (num) : '||p_rec_acct_attrs.array_acct_attr_code(i)||
8578                             ' = '||p_rec_acct_attrs.array_num_value(i)
8579              ,p_level    => C_LEVEL_STATEMENT
8580              ,p_module   => l_log_module);
8581      END IF;
8582   END IF;
8583 
8584   l_attr_error := NULL; -- 5162408
8585 
8586   CASE p_rec_acct_attrs.array_acct_attr_code(i)
8587 
8588   WHEN 'PARTY_TYPE'                THEN
8589 
8590      -- 4693816 Do not assign if size is more than 1
8591      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8592         IF length(p_rec_acct_attrs.array_char_value(i)) > 1 THEN
8593            g_rec_lines.array_party_type_code(g_LineNumber)     := 'X';
8594            l_attr_error := l_invalid_attr;
8595         ELSE
8596            g_rec_lines.array_party_type_code(g_LineNumber)     := p_rec_acct_attrs.array_char_value(i);
8597         END IF;
8598      ELSE
8599         -- 5162408
8600         g_rec_lines.array_party_type_code(g_LineNumber)  := NULL;
8601         IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8602            l_attr_error := l_invalid_attr;
8603         END IF;
8604      END IF;
8605 
8606   WHEN 'ENTERED_CURRENCY_CODE'     THEN
8607      IF p_rec_acct_attrs.array_char_value.EXISTS(i) AND length(p_rec_acct_attrs.array_char_value(i)) <= 15 THEN
8608         g_rec_lines.array_currency_code(g_LineNumber)  := p_rec_acct_attrs.array_char_value(i);
8609         g_rec_lines.array_currency_mau(g_LineNumber)   := xla_accounting_cache_pkg.GetCurrencyMau(p_rec_acct_attrs.array_char_value(i));
8610      ELSE
8611         -- 5162408
8612         g_rec_lines.array_currency_code(g_LineNumber)  := ' ';  -- otherwise insert NULL error in currency_code
8613         g_rec_lines.array_currency_mau(g_LineNumber)   := 0.01; -- dummy MAU
8614         IF (p_rec_acct_attrs.array_num_value.EXISTS(i)) OR
8615            (p_rec_acct_attrs.array_char_value.EXISTS(i) AND p_rec_acct_attrs.array_char_value(i) IS NOT NULL) THEN
8616            l_attr_error := l_invalid_attr;   -- wrong datatype or too long
8617         ELSE
8618            l_attr_error := l_missing_attr;   -- required
8619         END IF;
8620      END IF;
8621 
8622   -------------------------------------------------------------------
8623   -- 4262811 - replaced DEFERRED
8624   -------------------------------------------------------------------
8625 --WHEN 'DEFERRED_INDICATOR'        THEN
8626 --   g_rec_lines.array_deferred_indicator(g_LineNumber)     := p_rec_acct_attrs.array_char_value(i);
8627 --WHEN 'DEFERRED_PERIOD_TYPE'      THEN
8628 --   g_rec_lines.array_deferred_period_type(g_LineNumber)   := p_rec_acct_attrs.array_char_value(i);
8629   WHEN 'MULTIPERIOD_OPTION'        THEN
8630      IF p_rec_acct_attrs.array_char_value.EXISTS(i) AND p_rec_acct_attrs.array_char_value(i) IS NOT NULL THEN
8631         IF length(p_rec_acct_attrs.array_char_value(i)) = 1 THEN
8632            g_rec_lines.array_mpa_option(g_LineNumber)  := p_rec_acct_attrs.array_char_value(i);
8633         ELSE
8634            g_rec_lines.array_mpa_option(g_LineNumber)  := NULL;
8635         END IF;
8636 
8637         IF NVL(g_rec_lines.array_mpa_option(g_LineNumber),'N') NOT IN ('Y','N') OR
8638            length(p_rec_acct_attrs.array_char_value(i)) > 1 THEN
8639            XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
8640            xla_accounting_err_pkg.build_message
8641               (p_appli_s_name            => 'XLA'
8642               ,p_msg_name                => 'XLA_MA_INVALID_OPTION'   -- 4262811a XLA_AP_INV_DEFERRED_OPTION'
8643               ,p_token_1                 => 'LINE_NUMBER'
8644               ,p_value_1                 =>  g_ExtractLine
8645               ,p_token_2                 => 'ACCOUNTING_SOURCE_NAME'
8646               ,p_value_2                 => XLA_AE_SOURCES_PKG.GetAccountingSourceName
8647                                              (p_rec_acct_attrs.array_acct_attr_code(i))
8648               ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8649               ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8650               ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
8651         END IF;
8652      ELSE
8653         -- 5162408
8654         g_rec_lines.array_mpa_option(g_LineNumber)  := NULL;
8655         IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8656            l_attr_error := l_invalid_attr;
8657         END IF;
8658      END IF;
8659 
8660   WHEN 'DISTRIBUTION_TYPE'         THEN
8661      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8662        g_rec_lines.array_sys_distribution_type(g_LineNumber)  := p_rec_acct_attrs.array_char_value(i);
8663      ELSE
8664        g_rec_lines.array_sys_distribution_type(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8665      END IF;
8666 
8667      IF g_rec_lines.array_sys_distribution_type(g_LineNumber) IS NULL THEN
8668         XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
8669         xla_accounting_err_pkg.build_message
8670               (p_appli_s_name            => 'XLA'
8671               ,p_msg_name                => 'XLA_AP_NO_DIST_LINK_TYPE'
8672               ,p_token_1                 => 'LINE_NUMBER'
8673               ,p_value_1                 =>  g_ExtractLine
8674               ,p_token_2                 => 'ACCOUNTING_SOURCE_NAME'
8675               ,p_value_2                 => XLA_AE_SOURCES_PKG.GetAccountingSourceName
8676                                                        (p_rec_acct_attrs.array_acct_attr_code(i))
8677               ,p_token_3                 => 'SOURCE_NAME'
8678               ,p_value_3                 => NULL
8679               ,p_token_4                 => 'LINE_TYPE_NAME'
8680               ,p_value_4                 =>  XLA_AE_SOURCES_PKG.GetComponentName (
8681                                                         g_accounting_line.component_type
8682                                                       , g_accounting_line.accounting_line_code
8683                                                       , g_accounting_line.accounting_line_type_code
8684                                                       , g_accounting_line.accounting_line_appl_id
8685                                                       , g_accounting_line.amb_context_code
8686                                                       , g_accounting_line.entity_code
8687                                                       , g_accounting_line.event_class_code
8688                                                      )
8689               ,p_token_5                 => 'OWNER'
8690               ,p_value_5                 => xla_lookups_pkg.get_meaning(
8691                                                         'XLA_OWNER_TYPE'
8692                                                        , g_rec_lines.array_accounting_line_type(g_LineNumber)
8693                                                       )
8694               ,p_token_6                 => 'PRODUCT_NAME'
8695               ,p_value_6                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8696               ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8697               ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8698               ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
8699      END IF;
8700 
8701   WHEN 'ACCOUNTING_REVERSAL_OPTION' THEN
8702      -- 5162408
8703      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8704         IF length(p_rec_acct_attrs.array_char_value(i)) = 1 THEN
8705            g_rec_lines.array_acc_reversal_option(g_LineNumber)  := p_rec_acct_attrs.array_char_value(i);
8706         ELSE
8707            g_rec_lines.array_acc_reversal_option(g_LineNumber)  := NULL;
8708         END IF;
8709         IF NVL(g_rec_lines.array_acc_reversal_option(g_LineNumber),'N') NOT IN ('Y','N','B') OR
8710            length(p_rec_acct_attrs.array_char_value(i)) > 1 THEN
8711            l_attr_error := l_invalid_attr;
8712         END IF;
8713      ELSE
8714         g_rec_lines.array_acc_reversal_option(g_LineNumber)  := NULL;
8715         IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8716            l_attr_error := l_invalid_attr;
8717         END IF;
8718      END IF;
8719 
8720   WHEN 'EXCHANGE_RATE_TYPE'        THEN
8721      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8722        g_rec_lines.array_curr_conversion_type(g_LineNumber):= p_rec_acct_attrs.array_char_value(i);
8723      ELSE
8724        g_rec_lines.array_curr_conversion_type(g_LineNumber):= p_rec_acct_attrs.array_num_value(i);
8725      END IF;
8726 
8727   WHEN 'USSGL_TRANSACTION_CODE'    THEN
8728      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8729        g_rec_lines.array_ussgl_transaction(g_LineNumber)   := p_rec_acct_attrs.array_char_value(i);
8730      ELSE
8731        g_rec_lines.array_ussgl_transaction(g_LineNumber)   := p_rec_acct_attrs.array_num_value(i);
8732      END IF;
8733 
8734   WHEN 'RECON_REF'                 THEN
8735      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8736        g_rec_lines.array_jgzz_recon_ref(g_LineNumber)      := p_rec_acct_attrs.array_char_value(i);
8737      ELSE
8738        g_rec_lines.array_jgzz_recon_ref(g_LineNumber)      := p_rec_acct_attrs.array_num_value(i);
8739      END IF;
8740 
8741   WHEN 'OVERRIDE_ACCTD_AMT_FLAG'                 THEN
8742      -- 5162408
8743      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8744         IF length(p_rec_acct_attrs.array_char_value(i)) = 1 THEN
8745            g_override_acctd_amt_flag      := p_rec_acct_attrs.array_char_value(i);
8746        g_rec_lines.array_override_acctd_amt_flag(g_LineNumber)  := p_rec_acct_attrs.array_char_value(i);
8747         ELSE
8748            g_override_acctd_amt_flag      := NULL;
8749        g_rec_lines.array_override_acctd_amt_flag(g_LineNumber)  := NULL;
8750         END IF;
8751         IF NVL(g_override_acctd_amt_flag,'N') NOT IN ('Y','N') OR
8752            length(p_rec_acct_attrs.array_char_value(i)) > 1 THEN
8753            l_attr_error := l_invalid_attr;
8754         END IF;
8755      ELSE
8756         g_override_acctd_amt_flag  := NULL;
8757     g_rec_lines.array_override_acctd_amt_flag(g_LineNumber)  := NULL;
8758         IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8759            l_attr_error := l_invalid_attr;
8760         END IF;
8761      END IF;
8762      -- Bug 7044870
8763      -- Bug 8238617 set g_override_acctd_amt_flag to null only if the currency_code of secondary,ALC is different from primary
8764      IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code IN ('SECONDARY','ALC')
8765      AND xla_accounting_cache_pkg.g_primary_ledger_currency <> XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.currency_code
8766      THEN
8767        g_override_acctd_amt_flag := NULL;
8768        g_rec_lines.array_override_acctd_amt_flag(g_LineNumber)  := NULL;
8769      END IF;
8770      --
8771 
8772      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8773          trace
8774             (p_msg      => 'g_primary_ledger_currency : '     || xla_accounting_cache_pkg.g_primary_ledger_currency
8775 	                || 'Secondary Ledger Currency code : '|| XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.currency_code
8776 			|| 'g_override_acctd_amt_flag : '     || g_override_acctd_amt_flag
8777             ,p_level    => C_LEVEL_STATEMENT
8778             ,p_module   => l_log_module);
8779      END IF;
8780 
8781 
8782      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8783          trace
8784             (p_msg      => 'override_acctd_amt_flag= '||g_override_acctd_amt_flag
8785             ,p_level    => C_LEVEL_STATEMENT
8786             ,p_module   => l_log_module);
8787      END IF;
8788 
8789   WHEN 'GAIN_LOSS_REFERENCE'                 THEN
8790      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8791        g_rec_lines.array_gain_or_loss_ref(g_LineNumber)      := p_rec_acct_attrs.array_char_value(i);
8792      ELSE
8793        g_rec_lines.array_gain_or_loss_ref(g_LineNumber)      := p_rec_acct_attrs.array_num_value(i);
8794      END IF;
8795 
8796   WHEN 'TRX_ROUNDING_REF'                 THEN
8797      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8798        g_rec_lines.array_doc_rounding_level(g_LineNumber)      := p_rec_acct_attrs.array_char_value(i);
8799      ELSE
8800        g_rec_lines.array_doc_rounding_level(g_LineNumber)      := p_rec_acct_attrs.array_num_value(i);
8801      END IF;
8802 
8803   WHEN 'DISTRIBUTION_IDENTIFIER_1' THEN
8804      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8805         g_rec_lines.array_distribution_id_char_1(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8806      ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8807         g_rec_lines.array_distribution_id_num_1(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8808      END IF;
8809 
8810   WHEN 'DISTRIBUTION_IDENTIFIER_2' THEN
8811      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8812         g_rec_lines.array_distribution_id_char_2(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8813      ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8814         g_rec_lines.array_distribution_id_num_2(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8815      END IF;
8816 
8817   WHEN 'DISTRIBUTION_IDENTIFIER_3' THEN
8818      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8819         g_rec_lines.array_distribution_id_char_3(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8820      ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8821         g_rec_lines.array_distribution_id_num_3(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8822      END IF;
8823 
8824   WHEN 'DISTRIBUTION_IDENTIFIER_4' THEN
8825      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8826         g_rec_lines.array_distribution_id_char_4(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8827      ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8828         g_rec_lines.array_distribution_id_num_4(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8829      END IF;
8830 
8831   WHEN 'DISTRIBUTION_IDENTIFIER_5' THEN
8832      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8833         g_rec_lines.array_distribution_id_char_5(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8834      ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8835         g_rec_lines.array_distribution_id_num_5(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8836      END IF;
8837 
8838   WHEN 'PARTY_ID'                  THEN
8839      g_rec_lines.array_party_id(g_LineNumber)               := p_rec_acct_attrs.array_num_value(i);
8840 
8841   WHEN 'PARTY_SITE_ID'             THEN
8842      g_rec_lines.array_party_site_id(g_LineNumber)          := p_rec_acct_attrs.array_num_value(i);
8843 
8844   WHEN 'ENTERED_CURRENCY_AMOUNT'   THEN
8845      g_rec_lines.array_entered_amount(g_LineNumber)         := p_rec_acct_attrs.array_num_value(i);
8846 
8847   WHEN 'STATISTICAL_AMOUNT'        THEN
8848      g_rec_lines.array_statistical_amount(g_LineNumber)     := p_rec_acct_attrs.array_num_value(i);
8849 
8850 -- 4262811
8851 --WHEN 'DEFERRED_NO_OF_PERIODS'    THEN
8852 --   g_rec_lines.array_deferred_no_period(g_LineNumber)     := p_rec_acct_attrs.array_num_value(i);
8853 
8854   WHEN 'TAX_LINE_REF_ID'               THEN
8855      g_rec_lines.array_tax_line_ref(g_LineNumber)           := p_rec_acct_attrs.array_num_value(i);
8856 
8857   WHEN 'TAX_SUMMARY_LINE_REF_ID'       THEN
8858      g_rec_lines.array_tax_summary_line_ref(g_LineNumber)   := p_rec_acct_attrs.array_num_value(i);
8859 
8860   WHEN 'TAX_REC_NREC_DIST_REF_ID'      THEN
8861      g_rec_lines.array_tax_rec_nrec_dist_ref(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8862 
8863   WHEN 'LEDGER_AMOUNT'             THEN
8864      g_rec_lines.array_ledger_amount(g_LineNumber)          := p_rec_acct_attrs.array_num_value(i);
8865 
8866 /* Since now after ledger currency project, the ledger amount could be null
8867    this validation is moved to SetDebitCreditAmounts
8868      IF p_rec_acct_attrs.array_num_value(i) IS NULL THEN
8869         XLA_AE_JOURNAL_ENTRY_PKG.g_global_status      :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
8870         xla_accounting_err_pkg.build_message
8871            (p_appli_s_name            => 'XLA'
8872            ,p_msg_name                => 'XLA_AP_NO_LEDGER_AMOUNT'
8873            ,p_token_1                 => 'LINE_NUMBER'
8874            ,p_value_1                 =>  g_ExtractLine
8875            ,p_token_2                 => 'SOURCE_NAME'
8876            ,p_value_2                 => NULL
8877            ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8878            ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8879            ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
8880       END IF;
8881 */
8882 
8883   WHEN 'EXCHANGE_RATE'             THEN
8884      g_rec_lines.array_curr_conversion_rate(g_LineNumber)   := p_rec_acct_attrs.array_num_value(i);
8885 
8886   -- 4262811 ------------------------------------------------------------------------------------
8887 --WHEN 'DEFERRED_START_DATE'       THEN
8888 --   g_rec_lines.array_deferred_start_date(g_LineNumber) := p_rec_acct_attrs.array_date_value(i);
8889 --WHEN 'DEFERRED_END_DATE'         THEN
8890 --   g_rec_lines.array_deferred_end_date(g_LineNumber)   := p_rec_acct_attrs.array_date_value(i);
8891   WHEN 'MULTIPERIOD_START_DATE'    THEN
8892      g_rec_lines.array_mpa_start_date(g_LineNumber)      := p_rec_acct_attrs.array_date_value(i);
8893 
8894   WHEN 'MULTIPERIOD_END_DATE'      THEN
8895      g_rec_lines.array_mpa_end_date(g_LineNumber)        := p_rec_acct_attrs.array_date_value(i);
8896 
8897 
8898   WHEN 'EXCHANGE_DATE'        THEN
8899      g_rec_lines.array_curr_conversion_date(g_LineNumber):= p_rec_acct_attrs.array_date_value(i);
8900 
8901   ----------------------------------------------------------------------------------------------------
8902   -- 4219869
8903   -- Business Flow Applied To attributes - code must match those in Accounting Attribute in AAA form.
8904   --                                       See xla11iass.ldt for seeded data.
8905   ----------------------------------------------------------------------------------------------------
8906   WHEN 'APPLIED_TO_APPLICATION_ID' THEN
8907      g_rec_lines.array_bflow_application_id(g_LineNumber) := p_rec_acct_attrs.array_num_value(i);
8908 
8909   WHEN 'APPLIED_TO_ENTITY_CODE' THEN
8910      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8911        g_rec_lines.array_bflow_entity_code(g_LineNumber)   := p_rec_acct_attrs.array_char_value(i);
8912      ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8913        g_rec_lines.array_bflow_entity_code(g_LineNumber)   := p_rec_acct_attrs.array_num_value(i);
8914      END IF;
8915 
8916   WHEN 'APPLIED_TO_FIRST_SYS_TRAN_ID' THEN
8917      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8918         g_rec_lines.array_bflow_source_id_num_1(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8919      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8920         g_rec_lines.array_bflow_source_id_char_1(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8921      END IF;
8922 
8923   WHEN 'APPLIED_TO_SECOND_SYS_TRAN_ID' THEN
8924      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8925         g_rec_lines.array_bflow_source_id_num_2(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8926      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8927         g_rec_lines.array_bflow_source_id_char_2(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8928      END IF;
8929 
8930   WHEN 'APPLIED_TO_THIRD_SYS_TRAN_ID' THEN
8931      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8932         g_rec_lines.array_bflow_source_id_num_3(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8933      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8934         g_rec_lines.array_bflow_source_id_char_3(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8935      END IF;
8936   WHEN 'APPLIED_TO_FOURTH_SYS_TRAN_ID' THEN
8937      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8938         g_rec_lines.array_bflow_source_id_num_4(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8939      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8940         g_rec_lines.array_bflow_source_id_char_4(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8941      END IF;
8942 
8943   WHEN 'APPLIED_TO_DISTRIBUTION_TYPE' THEN
8944      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8945        g_rec_lines.array_bflow_distribution_type(g_LineNumber) := p_rec_acct_attrs.array_num_value(i);
8946      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8947        g_rec_lines.array_bflow_distribution_type(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8948      END IF;
8949 
8950   WHEN 'APPLIED_TO_FIRST_DIST_ID' THEN
8951      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8952         g_rec_lines.array_bflow_dist_id_num_1(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8953      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8954         g_rec_lines.array_bflow_dist_id_char_1(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8955      END IF;
8956 
8957   WHEN 'APPLIED_TO_SECOND_DIST_ID' THEN
8958      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8959         g_rec_lines.array_bflow_dist_id_num_2(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8960      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8961         g_rec_lines.array_bflow_dist_id_char_2(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8962      END IF;
8963 
8964   WHEN 'APPLIED_TO_THIRD_DIST_ID' THEN
8965      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8966         g_rec_lines.array_bflow_dist_id_num_3(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8967      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8968         g_rec_lines.array_bflow_dist_id_char_3(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8969      END IF;
8970 
8971   WHEN 'APPLIED_TO_FOURTH_DIST_ID' THEN
8972      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8973         g_rec_lines.array_bflow_dist_id_num_4(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8974      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8975         g_rec_lines.array_bflow_dist_id_char_4(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8976      END IF;
8977 
8978   WHEN 'APPLIED_TO_FIFTH_DIST_ID' THEN
8979      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
8980         g_rec_lines.array_bflow_dist_id_num_5(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8981      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
8982         g_rec_lines.array_bflow_dist_id_char_5(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8983      END IF;
8984 
8985   WHEN 'APPLIED_TO_AMOUNT' THEN  -- 5132302
8986      g_rec_lines.array_bflow_applied_to_amt(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8987 
8988   --
8989   -- Upgrade attributes
8990   --
8991 
8992   WHEN 'ACTUAL_UPG_OPTION' THEN
8993         g_rec_lines.array_actual_upg_option(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
8994 
8995   WHEN 'ACTUAL_UPG_DR_CCID' THEN
8996         g_rec_lines.array_actual_upg_dr_ccid(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
8997 
8998   WHEN 'ACTUAL_UPG_CR_CCID' THEN
8999         g_rec_lines.array_actual_upg_cr_ccid(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
9000 
9001   WHEN 'ACTUAL_UPG_DR_ENTERED_AMT' THEN
9002         g_rec_lines.array_actual_upg_dr_ent_amt(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
9003 
9004   WHEN 'ACTUAL_UPG_CR_ENTERED_AMT' THEN
9005         g_rec_lines.array_actual_upg_cr_ent_amt(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
9006 
9007   WHEN 'ACTUAL_UPG_DR_ENTERED_CURR' THEN
9008         g_rec_lines.array_actual_upg_dr_ent_curr(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
9009 
9010   WHEN 'ACTUAL_UPG_CR_ENTERED_CURR' THEN
9011          g_rec_lines.array_actual_upg_cr_ent_curr(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
9012 
9013   WHEN 'ACTUAL_UPG_DR_LEDGER_AMT' THEN
9014         g_rec_lines.array_actual_upg_dr_ledger_amt(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
9015 
9016   WHEN 'ACTUAL_UPG_CR_LEDGER_AMT' THEN
9017         g_rec_lines.array_actual_upg_cr_ledger_amt(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
9018 
9019   WHEN 'ACTUAL_UPG_DR_ACCT_CLASS' THEN
9020         g_rec_lines.array_actual_upg_dr_acct_class(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
9021 
9022   WHEN 'ACTUAL_UPG_CR_ACCT_CLASS' THEN
9023         g_rec_lines.array_actual_upg_dr_acct_class(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
9024 
9025   WHEN 'ACTUAL_UPG_DR_XRATE' THEN
9026         g_rec_lines.array_actual_upg_dr_xrate(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
9027 
9028   WHEN 'ACTUAL_UPG_DR_XRATE_TYPE' THEN
9029         g_rec_lines.array_actual_upg_dr_xrate_type(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
9030 
9031   WHEN 'ACTUAL_UPG_DR_XDATE' THEN
9032         g_rec_lines.array_actual_upg_dr_xdate(g_LineNumber) := p_rec_acct_attrs.array_date_value(i);
9033 
9034   WHEN 'ACTUAL_UPG_CR_XRATE' THEN
9035         g_rec_lines.array_actual_upg_cr_xrate(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
9036 
9037   WHEN 'ACTUAL_UPG_CR_XRATE_TYPE' THEN
9038         g_rec_lines.array_actual_upg_cr_xrate_type(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
9039 
9040   WHEN 'ACTUAL_UPG_CR_XDATE' THEN
9041         g_rec_lines.array_actual_upg_cr_xdate(g_LineNumber) := p_rec_acct_attrs.array_date_value(i);
9042 
9043   WHEN 'ENC_UPG_OPTION' THEN
9044        g_rec_lines.array_enc_upg_option(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
9045 
9046   WHEN 'ENC_UPG_DR_CCID' THEN
9047        g_rec_lines.array_enc_upg_dr_ccid(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
9048 
9049   WHEN 'ENC_UPG_CR_CCID' THEN
9050        g_rec_lines.array_enc_upg_cr_ccid(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
9051 
9052   WHEN 'UPG_DR_ENC_TYPE_ID' THEN
9053        g_rec_lines.array_upg_dr_enc_type_id(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
9054 
9055   WHEN 'UPG_CR_ENC_TYPE_ID' THEN
9056        g_rec_lines.array_upg_cr_enc_type_id(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
9057 
9058   WHEN 'ENC_UPG_DR_ENTERED_AMT' THEN
9059        g_rec_lines.array_enc_upg_dr_ent_amt(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
9060 
9061   WHEN 'ENC_UPG_CR_ENTERED_AMT' THEN
9062         g_rec_lines.array_enc_upg_cr_ent_amt(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
9063 
9064   WHEN 'ENC_UPG_DR_ENTERED_CURR' THEN
9065         g_rec_lines.array_enc_upg_dr_ent_curr(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
9066 
9067   WHEN 'ENC_UPG_CR_ENTERED_CURR' THEN
9068         g_rec_lines.array_enc_upg_cr_ent_curr(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
9069 
9070   WHEN 'ENC_UPG_DR_LEDGER_AMT' THEN
9071         g_rec_lines.array_enc_upg_dr_ledger_amt(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
9072 
9073   WHEN 'ENC_UPG_CR_LEDGER_AMT' THEN
9074         g_rec_lines.array_enc_upg_cr_ledger_amt(g_linenumber)  := p_rec_acct_attrs.array_num_value(i);
9075 
9076   WHEN 'ENC_UPG_DR_ACCT_CLASS' THEN
9077         g_rec_lines.array_enc_upg_dr_acct_class(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
9078 
9079   WHEN 'ENC_UPG_CR_ACCT_CLASS' THEN
9080         g_rec_lines.array_enc_upg_cr_acct_class(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
9081   -- 5845547
9082   WHEN 'UPG_PARTY_TYPE' THEN
9083         g_rec_lines.array_upg_party_type_code(g_LineNumber)   := p_rec_acct_attrs.array_char_value(i);
9084 
9085   WHEN 'UPG_PARTY_ID' THEN
9086         g_rec_lines.array_upg_party_id(g_LineNumber)          := p_rec_acct_attrs.array_num_value(i);
9087 
9088   WHEN 'UPG_PARTY_SITE_ID' THEN
9089         g_rec_lines.array_upg_party_site_id(g_LineNumber)     := p_rec_acct_attrs.array_num_value(i);
9090   --
9091   -- end upgrade attributes
9092   --
9093 
9094   --
9095   --  Allocation Attributes
9096   --
9097   WHEN 'ALLOC_TO_APPLICATION_ID' THEN
9098      g_rec_lines.array_alloct_application_id(g_LineNumber) := p_rec_acct_attrs.array_num_value(i);
9099 
9100   WHEN 'ALLOC_TO_ENTITY_CODE' THEN
9101      IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
9102        g_rec_lines.array_alloct_entity_code(g_LineNumber)   := p_rec_acct_attrs.array_char_value(i);
9103      ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
9104        g_rec_lines.array_alloct_entity_code(g_LineNumber)   := p_rec_acct_attrs.array_num_value(i);
9105      END IF;
9106 
9107   WHEN 'ALLOC_TO_FIRST_SYS_TRAN_ID' THEN
9108      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
9109         g_rec_lines.array_alloct_source_id_num_1(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
9110      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
9111         g_rec_lines.array_alloct_source_id_char_1(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
9112      END IF;
9113 
9114   WHEN 'ALLOC_TO_SECOND_SYS_TRAN_ID' THEN
9115      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
9116         g_rec_lines.array_alloct_source_id_num_2(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
9117      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
9118         g_rec_lines.array_alloct_source_id_char_2(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
9119      END IF;
9120 
9121   WHEN 'ALLOC_TO_THIRD_SYS_TRAN_ID' THEN
9122      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
9123         g_rec_lines.array_alloct_source_id_num_3(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
9124      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
9125         g_rec_lines.array_alloct_source_id_char_3(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
9126      END IF;
9127   WHEN 'ALLOC_TO_FOURTH_SYS_TRAN_ID' THEN
9128      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
9129         g_rec_lines.array_alloct_source_id_num_4(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
9130      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
9131         g_rec_lines.array_alloct_source_id_char_4(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
9132      END IF;
9133 
9134   WHEN 'ALLOC_TO_DISTRIBUTION_TYPE' THEN
9135      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
9136        g_rec_lines.array_alloct_distribution_type(g_LineNumber) := p_rec_acct_attrs.array_num_value(i);
9137      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
9138        g_rec_lines.array_alloct_distribution_type(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
9139      END IF;
9140 
9141   WHEN 'ALLOC_TO_FIRST_DIST_ID' THEN
9142      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
9143         g_rec_lines.array_alloct_dist_id_num_1(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
9144      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
9145         g_rec_lines.array_alloct_dist_id_char_1(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
9146      END IF;
9147 
9148   WHEN 'ALLOC_TO_SECOND_DIST_ID' THEN
9149      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
9150         g_rec_lines.array_alloct_dist_id_num_2(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
9151      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
9152         g_rec_lines.array_alloct_dist_id_char_2(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
9153      END IF;
9154 
9155   WHEN 'ALLOC_TO_THIRD_DIST_ID' THEN
9156      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
9157         g_rec_lines.array_alloct_dist_id_num_3(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
9158      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
9159         g_rec_lines.array_alloct_dist_id_char_3(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
9160      END IF;
9161 
9162   WHEN 'ALLOC_TO_FOURTH_DIST_ID' THEN
9163      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
9164         g_rec_lines.array_alloct_dist_id_num_4(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
9165      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
9166         g_rec_lines.array_alloct_dist_id_char_4(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
9167      END IF;
9168 
9169   WHEN 'ALLOC_TO_FIFTH_DIST_ID' THEN
9170      IF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
9171         g_rec_lines.array_alloct_dist_id_num_5(g_LineNumber)  := p_rec_acct_attrs.array_num_value(i);
9172      ELSIF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
9173         g_rec_lines.array_alloct_dist_id_char_5(g_LineNumber) := p_rec_acct_attrs.array_char_value(i);
9174      END IF;
9175   --
9176   --  End of Allocation Attributes
9177   --
9178 
9179 
9180   ELSE NULL;
9181   END CASE;
9182 
9183   -- 5162408 log error for attribute
9184   IF l_attr_error IS NOT NULL THEN
9185      XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
9186      xla_accounting_err_pkg.build_message
9187                   (p_appli_s_name            => 'XLA'
9188                   ,p_msg_name                => l_attr_error
9189                   ,p_token_1                 => 'ACCT_ATTR_NAME'
9190                   ,p_value_1                 => XLA_AE_SOURCES_PKG.GetAccountingSourceName
9191                                                            (p_rec_acct_attrs.array_acct_attr_code(i))
9192                   ,p_token_2                 => 'LINE_TYPE_NAME'
9193                   ,p_value_2                 =>  XLA_AE_SOURCES_PKG.GetComponentName (
9194                                                      g_accounting_line.component_type
9195                                                    , g_accounting_line.accounting_line_code
9196                                                    , g_accounting_line.accounting_line_type_code
9197                                                    , g_accounting_line.accounting_line_appl_id
9198                                                    , g_accounting_line.amb_context_code
9199                                                    , g_accounting_line.entity_code
9200                                                    , g_accounting_line.event_class_code
9201                                                   )
9202                   ,p_token_3                 => 'OWNER'
9203                   ,p_value_3                 => xla_lookups_pkg.get_meaning(
9204                                                             'XLA_OWNER_TYPE'
9205                                                            , g_rec_lines.array_accounting_line_type(g_LineNumber)
9206                                                           )
9207                   ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9208                   ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9209                   ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
9210   END IF;
9211 
9212 end loop;
9213 
9214 EXCEPTION
9215 WHEN xla_exceptions_pkg.application_exception THEN
9216   RAISE;
9217 WHEN OTHERS  THEN
9218    xla_exceptions_pkg.raise_message
9219            (p_location => 'XLA_AE_HEADER_PKG.SetLineAcctAttrs');
9220   --
9221 end SetLineAcctAttrs;
9222 
9223 /*======================================================================+
9224 |                                                                       |
9225 | Public Procedure                                                      |
9226 |                                                                       |
9227 |                                                                       |
9228 +======================================================================*/
9229 PROCEDURE SetAcctReversalAttrs
9230        (p_event_id                 IN NUMBER
9231        ,p_rec_acct_attrs           IN XLA_AE_LINES_PKG.t_rec_acct_attrs
9232        ,p_calculate_acctd_flag     IN VARCHAR2
9233        ,p_calculate_g_l_flag       IN VARCHAR2) IS
9234 
9235 l_sys_distribution_type             VARCHAR2(30);
9236 l_acc_reversal_option               VARCHAR2(30);
9237 l_distribution_id_char_1            VARCHAR2(80);
9238 l_distribution_id_char_2            VARCHAR2(80);
9239 l_distribution_id_char_3            VARCHAR2(80);
9240 l_distribution_id_char_4            VARCHAR2(80);
9241 l_distribution_id_char_5            VARCHAR2(80);
9242 l_distribution_id_num_1             NUMBER;
9243 l_distribution_id_num_2             NUMBER;
9244 l_distribution_id_num_3             NUMBER;
9245 l_distribution_id_num_4             NUMBER;
9246 l_distribution_id_num_5             NUMBER;
9247 l_rev_dist_id_char_1                VARCHAR2(30);
9248 l_rev_dist_id_char_2                VARCHAR2(30);
9249 l_rev_dist_id_char_3                VARCHAR2(30);
9250 l_rev_dist_id_char_4                VARCHAR2(30);
9251 l_rev_dist_id_char_5                VARCHAR2(30);
9252 l_rev_dist_id_num_1                 NUMBER;
9253 l_rev_dist_id_num_2                 NUMBER;
9254 l_rev_dist_id_num_3                 NUMBER;
9255 l_rev_dist_id_num_4                 NUMBER;
9256 l_rev_dist_id_num_5                 NUMBER;
9257 l_rev_dist_type                     VARCHAR2(30);
9258 l_actual_upg_option                 VARCHAR2(30);
9259 l_actual_upg_dr_ccid                NUMBER;
9260 l_actual_upg_cr_ccid                NUMBER;
9261 l_actual_upg_dr_entered_amt         NUMBER;
9262 l_actual_upg_cr_entered_amt         NUMBER;
9263 l_actual_upg_dr_entered_curr        VARCHAR2(30);
9264 l_actual_upg_cr_entered_curr        VARCHAR2(30);
9265 l_actual_upg_dr_ledger_amt          NUMBER;
9266 l_actual_upg_cr_ledger_amt          NUMBER;
9267 l_actual_upg_dr_acct_class          VARCHAR2(30);
9268 l_actual_upg_cr_acct_class          VARCHAR2(30);
9269 l_actual_upg_dr_xrate               NUMBER;
9270 l_actual_upg_dr_xrate_type          VARCHAR2(30);
9271 l_actual_upg_dr_xdate               DATE;
9272 l_actual_upg_cr_xrate               NUMBER;
9273 l_actual_upg_cr_xrate_type          VARCHAR2(30);
9274 l_actual_upg_cr_xdate               DATE;
9275 l_enc_upg_option                    VARCHAR2(30);
9276 l_enc_upg_dr_ccid                   NUMBER;
9277 l_enc_upg_cr_ccid                   NUMBER;
9278 l_upg_dr_enc_type_id                NUMBER;
9279 l_upg_cr_enc_type_id                NUMBER;
9280 l_enc_upg_dr_entered_amt            NUMBER;
9281 l_enc_upg_cr_entered_amt            NUMBER;
9282 l_enc_upg_dr_entered_curr           VARCHAR2(30);
9283 l_enc_upg_cr_entered_curr           VARCHAR2(30);
9284 l_enc_upg_dr_ledger_amt             NUMBER;
9285 l_enc_upg_cr_ledger_amt             NUMBER;
9286 l_enc_upg_dr_acct_class             VARCHAR2(30);
9287 l_enc_upg_cr_acct_class             VARCHAR2(30);
9288 l_gl_date                           DATE;
9289 
9290 l_upg_party_type                    VARCHAR2(1);  -- 5845547
9291 l_upg_party_id                      NUMBER;       -- 5845547
9292 l_upg_party_site_id                 NUMBER;       -- 5845547
9293 
9294 
9295 l_tax_line_ref                      NUMBER(15,0);  --7159711
9296 l_tax_summary_line_ref              NUMBER(15,0);  --7159711
9297 l_tax_rec_nrec_dist_ref             NUMBER(15,0);  --7159711
9298 
9299 
9300 l_log_module                        VARCHAR2(240);
9301 
9302 BEGIN
9303    IF g_log_enabled THEN
9304       l_log_module := C_DEFAULT_MODULE||'.SetAcctReversalAttrs';
9305    END IF;
9306 
9307    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9308       trace
9309          (p_msg      => 'BEGIN of SetAcctReversalAttrs'
9310          ,p_level    => C_LEVEL_PROCEDURE
9311          ,p_module   => l_log_module);
9312    END IF;
9313 
9314    FOR i IN 1..p_rec_acct_attrs.array_acct_attr_code.COUNT LOOP
9315       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
9316          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
9317             trace(p_msg      => 'Loop count = '||i||
9318                                 ' (char) : '||p_rec_acct_attrs.array_acct_attr_code(i)||
9319                                 ' = '||p_rec_acct_attrs.array_char_value(i)
9320                  ,p_level    => C_LEVEL_STATEMENT
9321                  ,p_module   => l_log_module);
9322          ELSIF p_rec_acct_attrs.array_date_value.EXISTS(i) THEN
9323             trace(p_msg      => 'Loop count = '||i||
9324                                 ' (date) : '||p_rec_acct_attrs.array_acct_attr_code(i)||
9325                                 ' = '||p_rec_acct_attrs.array_date_value(i)
9326                  ,p_level    => C_LEVEL_STATEMENT
9327                  ,p_module   => l_log_module);
9328          ELSE
9329             trace(p_msg      => 'Loop count = '||i||
9330                                 ' (num) : '||p_rec_acct_attrs.array_acct_attr_code(i)||
9331                                 ' = '||p_rec_acct_attrs.array_num_value(i)
9332                  ,p_level    => C_LEVEL_STATEMENT
9333                  ,p_module   => l_log_module);
9334          END IF;
9335 
9336       END IF;
9337 
9338       CASE p_rec_acct_attrs.array_acct_attr_code(i)
9339 
9340       WHEN 'GL_DATE'         THEN
9341          l_gl_date := p_rec_acct_attrs.array_date_value(i);
9342 
9343       WHEN 'DISTRIBUTION_TYPE'         THEN
9344          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
9345            l_sys_distribution_type := p_rec_acct_attrs.array_char_value(i);
9346          ELSE
9347            l_sys_distribution_type := p_rec_acct_attrs.array_num_value(i);
9348          END IF;
9349 
9350       WHEN 'ACCOUNTING_REVERSAL_OPTION' THEN
9351          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
9352            l_acc_reversal_option := p_rec_acct_attrs.array_char_value(i);
9353          ELSE
9354            l_acc_reversal_option := p_rec_acct_attrs.array_num_value(i);
9355          END IF;
9356 
9357       WHEN 'DISTRIBUTION_IDENTIFIER_1' THEN
9358          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
9359             l_distribution_id_char_1 := p_rec_acct_attrs.array_char_value(i);
9360          ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
9361             l_distribution_id_num_1  := p_rec_acct_attrs.array_num_value(i);
9362          END IF;
9363 
9364       WHEN 'DISTRIBUTION_IDENTIFIER_2' THEN
9365          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
9366             l_distribution_id_char_2 := p_rec_acct_attrs.array_char_value(i);
9367          ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
9368             l_distribution_id_num_2  := p_rec_acct_attrs.array_num_value(i);
9369          END IF;
9370 
9371       WHEN 'DISTRIBUTION_IDENTIFIER_3' THEN
9372          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
9373             l_distribution_id_char_3 := p_rec_acct_attrs.array_char_value(i);
9374          ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
9375             l_distribution_id_num_3  := p_rec_acct_attrs.array_num_value(i);
9376          END IF;
9377 
9378       WHEN 'DISTRIBUTION_IDENTIFIER_4' THEN
9379          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
9380             l_distribution_id_char_4 := p_rec_acct_attrs.array_char_value(i);
9381          ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
9382             l_distribution_id_num_4  := p_rec_acct_attrs.array_num_value(i);
9383          END IF;
9384 
9385       WHEN 'DISTRIBUTION_IDENTIFIER_5' THEN
9386          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
9387             l_distribution_id_char_5 := p_rec_acct_attrs.array_char_value(i);
9388          ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
9389             l_distribution_id_num_5  := p_rec_acct_attrs.array_num_value(i);
9390          END IF;
9391 
9392       WHEN 'REVERSED_DISTRIBUTION_ID1' THEN
9393          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
9394             l_rev_dist_id_char_1 := p_rec_acct_attrs.array_char_value(i);
9395          ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
9396             l_rev_dist_id_num_1  := p_rec_acct_attrs.array_num_value(i);
9397          END IF;
9398 
9399       WHEN 'REVERSED_DISTRIBUTION_ID2' THEN
9400          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
9401             l_rev_dist_id_char_2 := p_rec_acct_attrs.array_char_value(i);
9402          ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
9403             l_rev_dist_id_num_2  := p_rec_acct_attrs.array_num_value(i);
9404          END IF;
9405 
9406       WHEN 'REVERSED_DISTRIBUTION_ID3' THEN
9407          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
9408             l_rev_dist_id_char_3 := p_rec_acct_attrs.array_char_value(i);
9409          ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
9410             l_rev_dist_id_num_3  := p_rec_acct_attrs.array_num_value(i);
9411          END IF;
9412 
9413       WHEN 'REVERSED_DISTRIBUTION_ID4' THEN
9414          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
9415             l_rev_dist_id_char_4 := p_rec_acct_attrs.array_char_value(i);
9416          ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
9417             l_rev_dist_id_num_4  := p_rec_acct_attrs.array_num_value(i);
9418          END IF;
9419 
9420       WHEN 'REVERSED_DISTRIBUTION_ID5' THEN
9421          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
9422             l_rev_dist_id_char_5 := p_rec_acct_attrs.array_char_value(i);
9423          ELSIF p_rec_acct_attrs.array_num_value.EXISTS(i) THEN
9424             l_rev_dist_id_num_5  := p_rec_acct_attrs.array_num_value(i);
9425          END IF;
9426 
9427       WHEN 'REVERSED_DISTRIBUTION_TYPE'         THEN
9428          IF p_rec_acct_attrs.array_char_value.EXISTS(i) THEN
9429            l_rev_dist_type  := p_rec_acct_attrs.array_char_value(i);
9430          ELSE
9431            l_rev_dist_type  := p_rec_acct_attrs.array_num_value(i);
9432          END IF;
9433       --
9434       -- Upgrade attributes
9435       --
9436       WHEN 'ACTUAL_UPG_OPTION' THEN
9437             l_actual_upg_option := p_rec_acct_attrs.array_char_value(i);
9438 
9439       WHEN 'ACTUAL_UPG_DR_CCID' THEN
9440             l_actual_upg_dr_ccid  := p_rec_acct_attrs.array_num_value(i);
9441 
9442       WHEN 'ACTUAL_UPG_CR_CCID' THEN
9443             l_actual_upg_cr_ccid  := p_rec_acct_attrs.array_num_value(i);
9444 
9445       WHEN 'ACTUAL_UPG_DR_ENTERED_AMT' THEN
9446             l_actual_upg_dr_entered_amt  := p_rec_acct_attrs.array_num_value(i);
9447 
9448       WHEN 'ACTUAL_UPG_CR_ENTERED_AMT' THEN
9449             l_actual_upg_cr_entered_amt  := p_rec_acct_attrs.array_num_value(i);
9450 
9451       WHEN 'ACTUAL_UPG_DR_ENTERED_CURR' THEN
9452             l_actual_upg_dr_entered_curr := p_rec_acct_attrs.array_char_value(i);
9453 
9454       WHEN 'ACTUAL_UPG_CR_ENTERED_CURR' THEN
9455             l_actual_upg_cr_entered_curr := p_rec_acct_attrs.array_char_value(i);
9456 
9457       WHEN 'ACTUAL_UPG_DR_LEDGER_AMT' THEN
9458             l_actual_upg_dr_ledger_amt  := p_rec_acct_attrs.array_num_value(i);
9459 
9460       WHEN 'ACTUAL_UPG_CR_LEDGER_AMT' THEN
9461             l_actual_upg_cr_ledger_amt  := p_rec_acct_attrs.array_num_value(i);
9462 
9463       WHEN 'ACTUAL_UPG_DR_ACCT_CLASS' THEN
9464             l_actual_upg_dr_acct_class := p_rec_acct_attrs.array_char_value(i);
9465 
9466       WHEN 'ACTUAL_UPG_CR_ACCT_CLASS' THEN
9467             l_actual_upg_cr_acct_class := p_rec_acct_attrs.array_char_value(i);
9468 
9469       WHEN 'ACTUAL_UPG_DR_XRATE' THEN
9470             l_actual_upg_dr_xrate  := p_rec_acct_attrs.array_num_value(i);
9471 
9472       WHEN 'ACTUAL_UPG_DR_XRATE_TYPE' THEN
9473             l_actual_upg_dr_xrate_type := p_rec_acct_attrs.array_char_value(i);
9474 
9475       WHEN 'ACTUAL_UPG_DR_XDATE' THEN
9476             l_actual_upg_dr_xdate := p_rec_acct_attrs.array_date_value(i);
9477 
9478       WHEN 'ACTUAL_UPG_CR_XRATE' THEN
9479             l_actual_upg_cr_xrate  := p_rec_acct_attrs.array_num_value(i);
9480 
9481       WHEN 'ACTUAL_UPG_CR_XRATE_TYPE' THEN
9482             l_actual_upg_cr_xrate_type := p_rec_acct_attrs.array_char_value(i);
9483 
9484       WHEN 'ACTUAL_UPG_CR_XDATE' THEN
9485             l_actual_upg_cr_xdate := p_rec_acct_attrs.array_date_value(i);
9486 
9487       WHEN 'ENC_UPG_OPTION' THEN
9488             l_enc_upg_option := p_rec_acct_attrs.array_char_value(i);
9489 
9490       WHEN 'ENC_UPG_DR_CCID' THEN
9491            l_enc_upg_dr_ccid  := p_rec_acct_attrs.array_num_value(i);
9492 
9493       WHEN 'ENC_UPG_CR_CCID' THEN
9494            l_enc_upg_cr_ccid  := p_rec_acct_attrs.array_num_value(i);
9495 
9496       WHEN 'UPG_DR_ENC_TYPE_ID' THEN
9497            l_upg_dr_enc_type_id  := p_rec_acct_attrs.array_num_value(i);
9498 
9499       WHEN 'UPG_CR_ENC_TYPE_ID' THEN
9500            l_upg_cr_enc_type_id  := p_rec_acct_attrs.array_num_value(i);
9501 
9502       WHEN 'ENC_UPG_DR_ENTERED_AMT' THEN
9503            l_enc_upg_dr_entered_amt  := p_rec_acct_attrs.array_num_value(i);
9504 
9505       WHEN 'ENC_UPG_CR_ENTERED_AMT' THEN
9506             l_enc_upg_cr_entered_amt  := p_rec_acct_attrs.array_num_value(i);
9507 
9508       WHEN 'ENC_UPG_DR_ENTERED_CURR' THEN
9509             l_enc_upg_dr_entered_curr := p_rec_acct_attrs.array_char_value(i);
9510 
9511       WHEN 'ENC_UPG_CR_ENTERED_CURR' THEN
9512             l_enc_upg_cr_entered_curr := p_rec_acct_attrs.array_char_value(i);
9513 
9514       WHEN 'ENC_UPG_DR_LEDGER_AMT' THEN
9515             l_enc_upg_dr_ledger_amt  := p_rec_acct_attrs.array_num_value(i);
9516 
9517       WHEN 'ENC_UPG_CR_LEDGER_AMT' THEN
9518             l_enc_upg_cr_ledger_amt  := p_rec_acct_attrs.array_num_value(i);
9519 
9520       WHEN 'ENC_UPG_DR_ACCT_CLASS' THEN
9521             l_enc_upg_dr_acct_class := p_rec_acct_attrs.array_char_value(i);
9522 
9523       WHEN 'ENC_UPG_CR_ACCT_CLASS' THEN
9524             l_enc_upg_cr_acct_class := p_rec_acct_attrs.array_char_value(i);
9525       -- 5845547  for reversal
9526       WHEN 'UPG_PARTY_TYPE' THEN
9527             l_upg_party_type        := p_rec_acct_attrs.array_char_value(i);
9528 
9529       WHEN 'UPG_PARTY_ID' THEN
9530             l_upg_party_id          := p_rec_acct_attrs.array_num_value(i);
9531 
9532       WHEN 'UPG_PARTY_SITE_ID' THEN
9533             l_upg_party_site_id     := p_rec_acct_attrs.array_num_value(i);
9534       --
9535       -- end upgrade attributes
9536       --
9537 
9538       --  bug 7159711
9539          WHEN 'TAX_LINE_REF_ID'               THEN
9540             l_tax_line_ref := p_rec_acct_attrs.array_num_value(i);
9541 
9542          WHEN 'TAX_SUMMARY_LINE_REF_ID'       THEN
9543             l_tax_summary_line_ref :=  p_rec_acct_attrs.array_num_value(i);
9544 
9545          WHEN 'TAX_REC_NREC_DIST_REF_ID'      THEN
9546             l_tax_rec_nrec_dist_ref  :=  p_rec_acct_attrs.array_num_value(i);
9547 
9548 
9549       ELSE null;
9550       END CASE;
9551    END LOOP;
9552 
9553    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
9554       trace
9555          (p_msg      => 'l_actual_upg_option = '||l_actual_upg_option
9556          ,p_level    => C_LEVEL_STATEMENT
9557          ,p_module   => l_log_module);
9558       trace
9559          (p_msg      => 'l_enc_upg_option = '||l_enc_upg_option
9560          ,p_level    => C_LEVEL_STATEMENT
9561          ,p_module   => l_log_module);
9562    END IF;
9563 
9564    IF xla_accounting_cache_pkg.GetValueChar
9565          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9566          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('SECONDARY')
9567    OR (NVL(l_actual_upg_option,'N') = 'N' OR NVL(l_enc_upg_option,'N') = 'N')
9568    THEN
9569 
9570       SetNewLine;
9571 
9572       set_ae_header_id (p_ae_header_id => p_event_id,
9573                         p_header_num   => 0);      -- 4262811 by default all zero.  1,2,.. are used by Accl Reversal or MPA.
9574 
9575       g_rec_lines.array_balance_type_code(g_LineNumber) := 'X';
9576 
9577       g_rec_lines.array_ledger_id(g_LineNumber) :=
9578          XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9579 
9580       g_rec_lines.array_event_number(g_LineNumber) := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_number;
9581 
9582       g_rec_lines.array_entity_id(g_LineNumber) := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id;
9583 
9584       g_rec_lines.array_reversal_code(g_LineNumber) := 'DUMMY_LR';
9585 
9586       ------------------------------------------------------------------------------------------
9587       -- 5055878 Handle line reversal method option - SIDE and SIGN
9588       ------------------------------------------------------------------------------------------
9589       IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE' THEN
9590          g_rec_lines.array_switch_side_flag(g_LineNumber) := 'Y';
9591       ELSE
9592          g_rec_lines.array_switch_side_flag(g_LineNumber) := 'N';
9593       END IF;
9594       ------------------------------------------------------------------------------------------
9595 
9596       g_rec_lines.array_sys_distribution_type(g_LineNumber)  := l_sys_distribution_type;
9597       g_rec_lines.array_acc_reversal_option(g_LineNumber)    := l_acc_reversal_option;
9598       g_rec_lines.array_distribution_id_char_1(g_LineNumber) := l_distribution_id_char_1;
9599       g_rec_lines.array_distribution_id_num_1(g_LineNumber)  := l_distribution_id_num_1;
9600       g_rec_lines.array_distribution_id_char_2(g_LineNumber) := l_distribution_id_char_2;
9601       g_rec_lines.array_distribution_id_num_2(g_LineNumber)  := l_distribution_id_num_2;
9602       g_rec_lines.array_distribution_id_char_3(g_LineNumber) := l_distribution_id_char_3;
9603       g_rec_lines.array_distribution_id_num_3(g_LineNumber)  := l_distribution_id_num_3;
9604       g_rec_lines.array_distribution_id_char_4(g_LineNumber) := l_distribution_id_char_4;
9605       g_rec_lines.array_distribution_id_num_4(g_LineNumber)  := l_distribution_id_num_4;
9606       g_rec_lines.array_distribution_id_char_5(g_LineNumber) := l_distribution_id_char_5;
9607       g_rec_lines.array_distribution_id_num_5(g_LineNumber)  := l_distribution_id_num_5;
9608       g_rec_lines.array_rev_dist_id_char_1(g_LineNumber)     := l_rev_dist_id_char_1;
9609       g_rec_lines.array_rev_dist_id_num_1(g_LineNumber)      := l_rev_dist_id_num_1;
9610       g_rec_lines.array_rev_dist_id_char_2(g_LineNumber)     := l_rev_dist_id_char_2;
9611       g_rec_lines.array_rev_dist_id_num_2(g_LineNumber)      := l_rev_dist_id_num_2;
9612       g_rec_lines.array_rev_dist_id_char_3(g_LineNumber)     := l_rev_dist_id_char_3;
9613       g_rec_lines.array_rev_dist_id_num_3(g_LineNumber)      := l_rev_dist_id_num_3;
9614       g_rec_lines.array_rev_dist_id_char_4(g_LineNumber)     := l_rev_dist_id_char_4;
9615       g_rec_lines.array_rev_dist_id_num_4(g_LineNumber)      := l_rev_dist_id_num_4;
9616       g_rec_lines.array_rev_dist_id_char_5(g_LineNumber)     := l_rev_dist_id_char_5;
9617       g_rec_lines.array_rev_dist_id_num_5(g_LineNumber)      := l_rev_dist_id_num_5;
9618       g_rec_lines.array_rev_dist_type(g_LineNumber)          := l_rev_dist_type;
9619       g_rec_lines.array_gl_date(g_LineNumber)                := l_gl_date;    --5194849
9620 
9621       g_rec_lines.array_tax_line_ref(g_LineNumber)           := l_tax_line_ref;           -- Bug7159711
9622       g_rec_lines.array_tax_summary_line_ref(g_LineNumber)   := l_tax_summary_line_ref;   -- Bug7159711
9623       g_rec_lines.array_tax_rec_nrec_dist_ref(g_LineNumber)  := l_tax_rec_nrec_dist_ref;  -- Bug7159711
9624 
9625 
9626       --
9627       -- Validate the distribution links for the extract line
9628       -- if the validation fails, mark the dummy line as 'DUMMY_LR_ERROR'
9629       --
9630       IF NOT ValidateRevLinks THEN
9631          g_rec_lines.array_reversal_code(g_LineNumber) := 'DUMMY_LR_ERROR';
9632       END IF;
9633    END IF;
9634 
9635 
9636    IF xla_accounting_cache_pkg.GetValueChar
9637          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9638          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9639    AND (NVL(l_actual_upg_option,'N') = 'Y')
9640    THEN
9641 
9642       SetNewLine;
9643 
9644       set_ae_header_id
9645          (p_ae_header_id => p_event_id
9646          ,p_header_num   => 0);
9647 
9648       g_rec_lines.array_gl_date(g_LineNumber)           := l_gl_date;
9649       g_rec_lines.array_ledger_id(g_LineNumber)         := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9650       g_rec_lines.array_event_number(g_LineNumber)      := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_number;
9651       g_rec_lines.array_reversal_code(g_LineNumber)     := 'REVERSAL';
9652       g_rec_lines.array_entity_id(g_LineNumber)         := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id;
9653       g_rec_lines.array_balance_type_code(g_LineNumber) := 'A';
9654       g_rec_lines.array_calculate_acctd_flag(g_LineNumber) := p_calculate_acctd_flag;
9655       g_rec_lines.array_calculate_g_l_flag(g_LineNumber)   := p_calculate_g_l_flag;
9656 
9657       g_rec_lines.array_sys_distribution_type(g_LineNumber)  := l_sys_distribution_type;
9658       g_rec_lines.array_distribution_id_char_1(g_LineNumber) := l_distribution_id_char_1;
9659       g_rec_lines.array_distribution_id_num_1(g_LineNumber)  := l_distribution_id_num_1;
9660       g_rec_lines.array_distribution_id_char_2(g_LineNumber) := l_distribution_id_char_2;
9661       g_rec_lines.array_distribution_id_num_2(g_LineNumber)  := l_distribution_id_num_2;
9662       g_rec_lines.array_distribution_id_char_3(g_LineNumber) := l_distribution_id_char_3;
9663       g_rec_lines.array_distribution_id_num_3(g_LineNumber)  := l_distribution_id_num_3;
9664       g_rec_lines.array_distribution_id_char_4(g_LineNumber) := l_distribution_id_char_4;
9665       g_rec_lines.array_distribution_id_num_4(g_LineNumber)  := l_distribution_id_num_4;
9666       g_rec_lines.array_distribution_id_char_5(g_LineNumber) := l_distribution_id_char_5;
9667       g_rec_lines.array_distribution_id_num_5(g_LineNumber)  := l_distribution_id_num_5;
9668       g_rec_lines.array_rev_dist_id_char_1(g_LineNumber)     := l_rev_dist_id_char_1;
9669       g_rec_lines.array_rev_dist_id_num_1(g_LineNumber)      := l_rev_dist_id_num_1;
9670       g_rec_lines.array_rev_dist_id_char_2(g_LineNumber)     := l_rev_dist_id_char_2;
9671       g_rec_lines.array_rev_dist_id_num_2(g_LineNumber)      := l_rev_dist_id_num_2;
9672       g_rec_lines.array_rev_dist_id_char_3(g_LineNumber)     := l_rev_dist_id_char_3;
9673       g_rec_lines.array_rev_dist_id_num_3(g_LineNumber)      := l_rev_dist_id_num_3;
9674       g_rec_lines.array_rev_dist_id_char_4(g_LineNumber)     := l_rev_dist_id_char_4;
9675       g_rec_lines.array_rev_dist_id_num_4(g_LineNumber)      := l_rev_dist_id_num_4;
9676       g_rec_lines.array_rev_dist_id_char_5(g_LineNumber)     := l_rev_dist_id_char_5;
9677       g_rec_lines.array_rev_dist_id_num_5(g_LineNumber)      := l_rev_dist_id_num_5;
9678       g_rec_lines.array_rev_dist_type(g_LineNumber)          := l_rev_dist_type;
9679 
9680       g_rec_lines.array_entered_amount(g_LineNumber)       := l_actual_upg_dr_entered_amt;
9681       g_rec_lines.array_currency_code(g_LineNumber)        := l_actual_upg_dr_entered_curr;
9682       g_rec_lines.array_ledger_amount(g_LineNumber)        := l_actual_upg_dr_ledger_amt;
9683       g_rec_lines.array_accounting_class(g_LineNumber)     := l_actual_upg_dr_acct_class;
9684       g_rec_lines.array_curr_conversion_rate(g_LineNumber) := l_actual_upg_dr_xrate;
9685       g_rec_lines.array_curr_conversion_date(g_LineNumber) := l_actual_upg_dr_xdate;
9686       g_rec_lines.array_curr_conversion_type(g_LineNumber) := l_actual_upg_dr_xrate_type;
9687 
9688       -- 5845547 upgrade party attributes
9689       g_rec_lines.array_party_type_code(g_LineNumber)      := l_upg_party_type;
9690       g_rec_lines.array_party_id(g_LineNumber)             := l_upg_party_id;
9691       g_rec_lines.array_party_site_id(g_LineNumber)        := l_upg_party_site_id;
9692 
9693       g_rec_lines.array_natural_side_code(g_LineNumber)    := 'D';
9694       g_rec_lines.array_acct_entry_type_code(g_LineNumber) := 'A';
9695       g_rec_lines.array_switch_side_flag(g_LineNumber)     := 'Y';
9696       g_rec_lines.array_merge_duplicate_code(g_LineNumber) := 'N';
9697       g_rec_lines.array_gl_transfer_mode(g_LineNumber)     := 'S';
9698 
9699       g_rec_lines.array_currency_mau(g_LineNumber)         :=
9700          xla_accounting_cache_pkg.GetCurrencyMau(g_rec_lines.array_currency_code(g_LineNumber));
9701 
9702       xla_ae_lines_pkg.set_ccid(
9703        p_code_combination_id          => l_actual_upg_dr_ccid
9704      , p_value_type_code              => 'S' --l_adr_value_type_code
9705      , p_transaction_coa_id           => NULL --l_adr_transaction_coa_id
9706      , p_accounting_coa_id            => NULL --l_adr_accounting_coa_id
9707      , p_adr_code                     => NULL --'SS_TEST'
9708      , p_adr_type_code                => NULL --'C'
9709      , p_component_type               => g_accounting_line.component_type --l_component_type
9710      , p_component_code               => g_accounting_line.accounting_line_code  --l_component_code
9711      , p_component_type_code          => g_accounting_line.accounting_line_type_code --l_component_type_code
9712      , p_component_appl_id            => g_accounting_line.accounting_line_appl_id --l_component_appl_id
9713      , p_amb_context_code             => g_accounting_line.amb_context_code --l_amb_context_code
9714      , p_side                         => 'NA'
9715      );
9716 
9717       SetDebitCreditAmounts;
9718 
9719       SetNewLine;
9720 
9721       set_ae_header_id
9722          (p_ae_header_id => p_event_id
9723          ,p_header_num   => 0);
9724 
9725       g_rec_lines.array_gl_date(g_LineNumber)           := l_gl_date;
9726       g_rec_lines.array_ledger_id(g_LineNumber)         := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9727       g_rec_lines.array_event_number(g_LineNumber)      := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_number;
9728       g_rec_lines.array_reversal_code(g_LineNumber)     := 'REVERSAL';
9729       g_rec_lines.array_entity_id(g_LineNumber)         := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id;
9730       g_rec_lines.array_balance_type_code(g_LineNumber) := 'A';
9731       g_rec_lines.array_calculate_acctd_flag(g_LineNumber) := p_calculate_acctd_flag;
9732       g_rec_lines.array_calculate_g_l_flag(g_LineNumber)   := p_calculate_g_l_flag;
9733 
9734       g_rec_lines.array_sys_distribution_type(g_LineNumber)  := l_sys_distribution_type;
9735       g_rec_lines.array_distribution_id_char_1(g_LineNumber) := l_distribution_id_char_1;
9736       g_rec_lines.array_distribution_id_num_1(g_LineNumber)  := l_distribution_id_num_1;
9737       g_rec_lines.array_distribution_id_char_2(g_LineNumber) := l_distribution_id_char_2;
9738       g_rec_lines.array_distribution_id_num_2(g_LineNumber)  := l_distribution_id_num_2;
9739       g_rec_lines.array_distribution_id_char_3(g_LineNumber) := l_distribution_id_char_3;
9740       g_rec_lines.array_distribution_id_num_3(g_LineNumber)  := l_distribution_id_num_3;
9741       g_rec_lines.array_distribution_id_char_4(g_LineNumber) := l_distribution_id_char_4;
9742       g_rec_lines.array_distribution_id_num_4(g_LineNumber)  := l_distribution_id_num_4;
9743       g_rec_lines.array_distribution_id_char_5(g_LineNumber) := l_distribution_id_char_5;
9744       g_rec_lines.array_distribution_id_num_5(g_LineNumber)  := l_distribution_id_num_5;
9745       g_rec_lines.array_rev_dist_id_char_1(g_LineNumber)     := l_rev_dist_id_char_1;
9746       g_rec_lines.array_rev_dist_id_num_1(g_LineNumber)      := l_rev_dist_id_num_1;
9747       g_rec_lines.array_rev_dist_id_char_2(g_LineNumber)     := l_rev_dist_id_char_2;
9748       g_rec_lines.array_rev_dist_id_num_2(g_LineNumber)      := l_rev_dist_id_num_2;
9749       g_rec_lines.array_rev_dist_id_char_3(g_LineNumber)     := l_rev_dist_id_char_3;
9750       g_rec_lines.array_rev_dist_id_num_3(g_LineNumber)      := l_rev_dist_id_num_3;
9751       g_rec_lines.array_rev_dist_id_char_4(g_LineNumber)     := l_rev_dist_id_char_4;
9752       g_rec_lines.array_rev_dist_id_num_4(g_LineNumber)      := l_rev_dist_id_num_4;
9753       g_rec_lines.array_rev_dist_id_char_5(g_LineNumber)     := l_rev_dist_id_char_5;
9754       g_rec_lines.array_rev_dist_id_num_5(g_LineNumber)      := l_rev_dist_id_num_5;
9755       g_rec_lines.array_rev_dist_type(g_LineNumber)          := l_rev_dist_type;
9756 
9757       g_rec_lines.array_entered_amount(g_LineNumber)       := l_actual_upg_cr_entered_amt;
9758       g_rec_lines.array_currency_code(g_LineNumber)        := l_actual_upg_cr_entered_curr;
9759       g_rec_lines.array_ledger_amount(g_LineNumber)        := l_actual_upg_cr_ledger_amt;
9760       g_rec_lines.array_accounting_class(g_LineNumber)     := l_actual_upg_cr_acct_class;
9761       g_rec_lines.array_curr_conversion_rate(g_LineNumber) := l_actual_upg_cr_xrate;
9762       g_rec_lines.array_curr_conversion_date(g_LineNumber) := l_actual_upg_cr_xdate;
9763       g_rec_lines.array_curr_conversion_type(g_LineNumber) := l_actual_upg_cr_xrate_type;
9764 
9765       -- 5845547 upgrade party attributes
9766       g_rec_lines.array_party_type_code(g_LineNumber)      := l_upg_party_type;
9767       g_rec_lines.array_party_id(g_LineNumber)             := l_upg_party_id;
9768       g_rec_lines.array_party_site_id(g_LineNumber)        := l_upg_party_site_id;
9769 
9770       g_rec_lines.array_natural_side_code(g_LineNumber)    := 'C';
9771       g_rec_lines.array_acct_entry_type_code(g_LineNumber) := 'A';
9772       g_rec_lines.array_switch_side_flag(g_LineNumber)     := 'Y';
9773       g_rec_lines.array_merge_duplicate_code(g_LineNumber) := 'N';
9774       g_rec_lines.array_gl_transfer_mode(g_LineNumber)     := 'S';
9775 
9776       g_rec_lines.array_currency_mau(g_LineNumber)         :=
9777          xla_accounting_cache_pkg.GetCurrencyMau(g_rec_lines.array_currency_code(g_LineNumber));
9778 
9779       xla_ae_lines_pkg.set_ccid(
9780        p_code_combination_id          => l_actual_upg_cr_ccid
9781      , p_value_type_code              => 'S' --l_adr_value_type_code
9782      , p_transaction_coa_id           => NULL --l_adr_transaction_coa_id
9783      , p_accounting_coa_id            => NULL --l_adr_accounting_coa_id
9784      , p_adr_code                     => NULL --'SS_TEST'
9785      , p_adr_type_code                => NULL --'C'
9786      , p_component_type               => g_accounting_line.component_type --l_component_type
9787      , p_component_code               => g_accounting_line.accounting_line_code  --l_component_code
9788      , p_component_type_code          => g_accounting_line.accounting_line_type_code --l_component_type_code
9789      , p_component_appl_id            => g_accounting_line.accounting_line_appl_id --l_component_appl_id
9790      , p_amb_context_code             => g_accounting_line.amb_context_code --l_amb_context_code
9791      , p_side                         => 'NA'
9792      );
9793 
9794       SetDebitCreditAmounts;
9795 
9796       --
9797       -- Validate the distribution links for the extract line
9798       -- if the validation fails, mark the dummy line as 'DUMMY_LR_ERROR'
9799       --
9800 --      IF NOT ValidateRevLinks THEN
9801 --         g_rec_lines.array_reversal_code(g_LineNumber) := 'DUMMY_LR_ERROR';
9802 --      END IF;
9803    END IF;
9804 
9805    IF xla_accounting_cache_pkg.GetValueChar
9806          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9807          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9808    AND (l_enc_upg_option = 'Y')
9809    THEN
9810 
9811       IF l_upg_dr_enc_type_id IS NOT NULL THEN
9812          SetNewLine;
9813 
9814          set_ae_header_id
9815             (p_ae_header_id => p_event_id
9816             ,p_header_num   => 0);
9817 
9818          g_rec_lines.array_gl_date(g_LineNumber)           := l_gl_date;
9819          g_rec_lines.array_ledger_id(g_LineNumber)         := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9820          g_rec_lines.array_event_number(g_LineNumber)      := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_number;
9821          g_rec_lines.array_reversal_code(g_LineNumber)     := 'REVERSAL';
9822          g_rec_lines.array_entity_id(g_LineNumber)         := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id;
9823          g_rec_lines.array_balance_type_code(g_LineNumber) := 'E';
9824          g_rec_lines.array_calculate_acctd_flag(g_LineNumber) := 'N';
9825          g_rec_lines.array_calculate_g_l_flag(g_LineNumber)   := 'N';
9826 
9827          g_rec_lines.array_sys_distribution_type(g_LineNumber)  := l_sys_distribution_type;
9828          g_rec_lines.array_distribution_id_char_1(g_LineNumber) := l_distribution_id_char_1;
9829          g_rec_lines.array_distribution_id_num_1(g_LineNumber)  := l_distribution_id_num_1;
9830          g_rec_lines.array_distribution_id_char_2(g_LineNumber) := l_distribution_id_char_2;
9831          g_rec_lines.array_distribution_id_num_2(g_LineNumber)  := l_distribution_id_num_2;
9832          g_rec_lines.array_distribution_id_char_3(g_LineNumber) := l_distribution_id_char_3;
9833          g_rec_lines.array_distribution_id_num_3(g_LineNumber)  := l_distribution_id_num_3;
9834          g_rec_lines.array_distribution_id_char_4(g_LineNumber) := l_distribution_id_char_4;
9835          g_rec_lines.array_distribution_id_num_4(g_LineNumber)  := l_distribution_id_num_4;
9836          g_rec_lines.array_distribution_id_char_5(g_LineNumber) := l_distribution_id_char_5;
9837          g_rec_lines.array_distribution_id_num_5(g_LineNumber)  := l_distribution_id_num_5;
9838          g_rec_lines.array_rev_dist_id_char_1(g_LineNumber)     := l_rev_dist_id_char_1;
9839          g_rec_lines.array_rev_dist_id_num_1(g_LineNumber)      := l_rev_dist_id_num_1;
9840          g_rec_lines.array_rev_dist_id_char_2(g_LineNumber)     := l_rev_dist_id_char_2;
9841          g_rec_lines.array_rev_dist_id_num_2(g_LineNumber)      := l_rev_dist_id_num_2;
9842          g_rec_lines.array_rev_dist_id_char_3(g_LineNumber)     := l_rev_dist_id_char_3;
9843          g_rec_lines.array_rev_dist_id_num_3(g_LineNumber)      := l_rev_dist_id_num_3;
9844          g_rec_lines.array_rev_dist_id_char_4(g_LineNumber)     := l_rev_dist_id_char_4;
9845          g_rec_lines.array_rev_dist_id_num_4(g_LineNumber)      := l_rev_dist_id_num_4;
9846          g_rec_lines.array_rev_dist_id_char_5(g_LineNumber)     := l_rev_dist_id_char_5;
9847          g_rec_lines.array_rev_dist_id_num_5(g_LineNumber)      := l_rev_dist_id_num_5;
9848          g_rec_lines.array_rev_dist_type(g_LineNumber)          := l_rev_dist_type;
9849 
9850          g_rec_lines.array_entered_amount(g_LineNumber)       := l_enc_upg_dr_entered_amt;
9851          g_rec_lines.array_currency_code(g_LineNumber)        := l_enc_upg_dr_entered_curr;
9852          g_rec_lines.array_ledger_amount(g_LineNumber)        := l_enc_upg_dr_ledger_amt;
9853          g_rec_lines.array_accounting_class(g_LineNumber)     := l_enc_upg_dr_acct_class;
9854          g_rec_lines.array_encumbrance_type_id(g_LineNumber)  := l_upg_dr_enc_type_id;  -- 5845547
9855 
9856          -- 5845547 upgrade party attributes
9857          g_rec_lines.array_party_type_code(g_LineNumber)      := l_upg_party_type;
9858          g_rec_lines.array_party_id(g_LineNumber)             := l_upg_party_id;
9859          g_rec_lines.array_party_site_id(g_LineNumber)        := l_upg_party_site_id;
9860 
9861          g_rec_lines.array_natural_side_code(g_LineNumber)    := 'D';
9862          g_rec_lines.array_acct_entry_type_code(g_LineNumber) := 'E';
9863          g_rec_lines.array_switch_side_flag(g_LineNumber)     := 'Y';
9864          g_rec_lines.array_merge_duplicate_code(g_LineNumber) := 'N';
9865          g_rec_lines.array_gl_transfer_mode(g_LineNumber)     := 'S';
9866 
9867          g_rec_lines.array_currency_mau(g_LineNumber)         :=
9868             xla_accounting_cache_pkg.GetCurrencyMau(g_rec_lines.array_currency_code(g_LineNumber));
9869 
9870          xla_ae_lines_pkg.set_ccid(
9871            p_code_combination_id          => l_enc_upg_dr_ccid
9872          , p_value_type_code              => 'S' --l_adr_value_type_code
9873          , p_transaction_coa_id           => NULL --l_adr_transaction_coa_id
9874          , p_accounting_coa_id            => NULL --l_adr_accounting_coa_id
9875          , p_adr_code                     => NULL --'SS_TEST'
9876          , p_adr_type_code                => NULL --'C'
9877          , p_component_type               => g_accounting_line.component_type --l_component_type
9878          , p_component_code               => g_accounting_line.accounting_line_code  --l_component_code
9879          , p_component_type_code          => g_accounting_line.accounting_line_type_code --l_component_type_code
9880          , p_component_appl_id            => g_accounting_line.accounting_line_appl_id --l_component_appl_id
9881          , p_amb_context_code             => g_accounting_line.amb_context_code --l_amb_context_code
9882          , p_side                         => 'NA'
9883          );
9884 
9885                   SetDebitCreditAmounts;
9886       END IF;
9887 
9888       IF l_upg_cr_enc_type_id IS NOT NULL THEN
9889          SetNewLine;
9890 
9891           set_ae_header_id
9892              (p_ae_header_id => p_event_id
9893              ,p_header_num   => 0);
9894 
9895          g_rec_lines.array_gl_date(g_LineNumber)           := l_gl_date;
9896          g_rec_lines.array_ledger_id(g_LineNumber)         := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9897          g_rec_lines.array_event_number(g_LineNumber)      := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_number;
9898          g_rec_lines.array_reversal_code(g_LineNumber)     := 'REVERSAL';
9899          g_rec_lines.array_entity_id(g_LineNumber)         := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id;
9900          g_rec_lines.array_balance_type_code(g_LineNumber) := 'E';
9901          g_rec_lines.array_calculate_acctd_flag(g_LineNumber) := 'N';
9902          g_rec_lines.array_calculate_g_l_flag(g_LineNumber)   := 'N';
9903 
9904          g_rec_lines.array_sys_distribution_type(g_LineNumber)  := l_sys_distribution_type;
9905          g_rec_lines.array_distribution_id_char_1(g_LineNumber) := l_distribution_id_char_1;
9906          g_rec_lines.array_distribution_id_num_1(g_LineNumber)  := l_distribution_id_num_1;
9907          g_rec_lines.array_distribution_id_char_2(g_LineNumber) := l_distribution_id_char_2;
9908          g_rec_lines.array_distribution_id_num_2(g_LineNumber)  := l_distribution_id_num_2;
9909          g_rec_lines.array_distribution_id_char_3(g_LineNumber) := l_distribution_id_char_3;
9910          g_rec_lines.array_distribution_id_num_3(g_LineNumber)  := l_distribution_id_num_3;
9911          g_rec_lines.array_distribution_id_char_4(g_LineNumber) := l_distribution_id_char_4;
9912          g_rec_lines.array_distribution_id_num_4(g_LineNumber)  := l_distribution_id_num_4;
9913          g_rec_lines.array_distribution_id_char_5(g_LineNumber) := l_distribution_id_char_5;
9914          g_rec_lines.array_distribution_id_num_5(g_LineNumber)  := l_distribution_id_num_5;
9915          g_rec_lines.array_rev_dist_id_char_1(g_LineNumber)     := l_rev_dist_id_char_1;
9916          g_rec_lines.array_rev_dist_id_num_1(g_LineNumber)      := l_rev_dist_id_num_1;
9917          g_rec_lines.array_rev_dist_id_char_2(g_LineNumber)     := l_rev_dist_id_char_2;
9918          g_rec_lines.array_rev_dist_id_num_2(g_LineNumber)      := l_rev_dist_id_num_2;
9919          g_rec_lines.array_rev_dist_id_char_3(g_LineNumber)     := l_rev_dist_id_char_3;
9920          g_rec_lines.array_rev_dist_id_num_3(g_LineNumber)      := l_rev_dist_id_num_3;
9921          g_rec_lines.array_rev_dist_id_char_4(g_LineNumber)     := l_rev_dist_id_char_4;
9922          g_rec_lines.array_rev_dist_id_num_4(g_LineNumber)      := l_rev_dist_id_num_4;
9923          g_rec_lines.array_rev_dist_id_char_5(g_LineNumber)     := l_rev_dist_id_char_5;
9924          g_rec_lines.array_rev_dist_id_num_5(g_LineNumber)      := l_rev_dist_id_num_5;
9925          g_rec_lines.array_rev_dist_type(g_LineNumber)          := l_rev_dist_type;
9926 
9927          g_rec_lines.array_entered_amount(g_LineNumber)       := l_enc_upg_cr_entered_amt;
9928          g_rec_lines.array_currency_code(g_LineNumber)        := l_enc_upg_cr_entered_curr;
9929          g_rec_lines.array_ledger_amount(g_LineNumber)        := l_enc_upg_cr_ledger_amt;
9930          g_rec_lines.array_accounting_class(g_LineNumber)     := l_enc_upg_cr_acct_class;
9931          g_rec_lines.array_encumbrance_type_id(g_LineNumber)  := l_upg_cr_enc_type_id;  -- 5845547
9932 
9933          -- 5845547 upgrade party attributes
9934          g_rec_lines.array_party_type_code(g_LineNumber)      := l_upg_party_type;
9935          g_rec_lines.array_party_id(g_LineNumber)             := l_upg_party_id;
9936          g_rec_lines.array_party_site_id(g_LineNumber)        := l_upg_party_site_id;
9937 
9938 
9939          g_rec_lines.array_natural_side_code(g_LineNumber)    := 'C';
9940          g_rec_lines.array_acct_entry_type_code(g_LineNumber) := 'E';
9941          g_rec_lines.array_switch_side_flag(g_LineNumber)     := 'Y';
9942          g_rec_lines.array_merge_duplicate_code(g_LineNumber) := 'N';
9943          g_rec_lines.array_gl_transfer_mode(g_LineNumber)     := 'S';
9944 
9945          g_rec_lines.array_currency_mau(g_LineNumber)         :=
9946             xla_accounting_cache_pkg.GetCurrencyMau(g_rec_lines.array_currency_code(g_LineNumber));
9947 
9948          xla_ae_lines_pkg.set_ccid(
9949           p_code_combination_id          => l_enc_upg_cr_ccid
9950         , p_value_type_code              => 'S' --l_adr_value_type_code
9951         , p_transaction_coa_id           => NULL --l_adr_transaction_coa_id
9952         , p_accounting_coa_id            => NULL --l_adr_accounting_coa_id
9953         , p_adr_code                     => NULL --'SS_TEST'
9954         , p_adr_type_code                => NULL --'C'
9955         , p_component_type               => g_accounting_line.component_type --l_component_type
9956         , p_component_code               => g_accounting_line.accounting_line_code  --l_component_code
9957         , p_component_type_code          => g_accounting_line.accounting_line_type_code --l_component_type_code
9958         , p_component_appl_id            => g_accounting_line.accounting_line_appl_id --l_component_appl_id
9959         , p_amb_context_code             => g_accounting_line.amb_context_code --l_amb_context_code
9960         , p_side                         => 'NA'
9961         );
9962 
9963         SetDebitCreditAmounts;
9964      END IF;
9965 
9966       --
9967       -- Validate the distribution links for the extract line
9968       -- if the validation fails, mark the dummy line as 'DUMMY_LR_ERROR'
9969       --
9970 --      IF NOT ValidateRevLinks THEN
9971 --         g_rec_lines.array_reversal_code(g_LineNumber) := 'DUMMY_LR_ERROR';
9972 --      END IF;
9973    END IF;
9974 
9975    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9976       trace
9977          (p_msg      => 'END of SetAcctReversalAttrs'
9978          ,p_level    => C_LEVEL_PROCEDURE
9979          ,p_module   => l_log_module);
9980    END IF;
9981 END SetAcctReversalAttrs;
9982 
9983 
9984 /*======================================================================+
9985 |                                                                       |
9986 | Public Procedure                                                      |
9987 |                                                                       |
9988 |                                                                       |
9989 +======================================================================*/
9990 PROCEDURE SetTrxReversalAttrs
9991        (p_event_id                     IN NUMBER
9992        ,p_gl_date                      IN DATE
9993        ,p_trx_reversal_source          IN VARCHAR2) IS
9994 l_log_module         VARCHAR2(240);
9995 BEGIN
9996    IF g_log_enabled THEN
9997       l_log_module := C_DEFAULT_MODULE||'.SetTrxReversalAttrs';
9998    END IF;
9999 
10000    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10001       trace
10002          (p_msg      => 'BEGIN of SetTrxReversalAttrs'
10003          ,p_level    => C_LEVEL_PROCEDURE
10004          ,p_module   => l_log_module);
10005    END IF;
10006 
10007    g_temp_line_num := -1;
10008 
10009    SetNewLine;
10010 
10011    set_ae_header_id (p_ae_header_id => p_event_id,
10012                      p_header_num   => 0);      -- 4262811 by default all zero.  1,2,.. are used by Accl Reversal or MPA.
10013 
10014    g_rec_lines.array_balance_type_code(g_LineNumber) := 'X';
10015 
10016    g_rec_lines.array_ledger_id(g_LineNumber) :=
10017       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10018 
10019    g_rec_lines.array_event_number(g_LineNumber) := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_number;
10020 
10021    g_rec_lines.array_entity_id(g_LineNumber) := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id;
10022 
10023    g_rec_lines.array_reversal_code(g_LineNumber) := 'DUMMY_TR';
10024 
10025    g_rec_lines.array_gl_date(g_LineNumber) := p_gl_date;
10026 
10027    ------------------------------------------------------------------------------------------
10028    -- 5055878 Handle transaction reversal method option - SIDE and SIGN
10029    ------------------------------------------------------------------------------------------
10030    IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE' THEN
10031       g_rec_lines.array_switch_side_flag(g_LineNumber) := 'Y';
10032    ELSE
10033       g_rec_lines.array_switch_side_flag(g_LineNumber) := 'N';
10034    END IF;
10035    ------------------------------------------------------------------------------------------
10036 
10037    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10038       trace
10039          (p_msg      => 'END of SetTrxReversalAttrs'
10040          ,p_level    => C_LEVEL_PROCEDURE
10041          ,p_module   => l_log_module);
10042    END IF;
10043 END SetTrxReversalAttrs;
10044 
10045 
10046 PROCEDURE CalculateUnroundedAmounts
10047 is
10048 l_log_module         VARCHAR2(240);
10049 l_ledger_attrs       xla_accounting_cache_pkg.t_array_ledger_attrs;
10050 l_ledger_attrs1       xla_accounting_cache_pkg.t_array_ledger_attrs;
10051 l_primary_ledger_currency  VARCHAR2(30):=null;
10052 l_primary_ledger_id  NUMBER;
10053 l_secondary_ledger_currency  VARCHAR2(30);
10054 l_secondary_ledger_id  NUMBER;
10055 l_ledger_id  NUMBER;
10056 l_count number;
10057 l_max_ledger_index   NUMBER;
10058 l_euro               VARCHAR2(30);
10059 
10060 /*
10061 type t_array_derive_type table of FND_CURRENCY.derive_type%TYPE index by binary_integer;
10062 l_array_from_derive_type  t_array_derive_type;
10063 l_array_to_derive_type    t_array_derive_type;
10064 l_array_from_rate         xla_ae_journal_entry_pkg.t_array_Num;
10065 l_array_to_rate           xla_ae_journal_entry_pkg.t_array_Num;
10066 l_array_from_curr         xla_ae_journal_entry_pkg.t_array_V30L;
10067 l_array_to_curr           xla_ae_journal_entry_pkg.t_array_V30L;
10068 */
10069 
10070 l_array_calculate_amts_flag  xla_ae_journal_entry_pkg.t_array_V1L;
10071 l_array_conversion_type      xla_ae_journal_entry_pkg.t_array_V30L;
10072 l_array_entered_curr         xla_ae_journal_entry_pkg.t_array_V30L;
10073 l_array_conversion_date      xla_ae_journal_entry_pkg.t_array_Date;
10074 l_array_conversion_rate      xla_ae_journal_entry_pkg.t_array_Num;
10075 l_array_new_rate             xla_ae_journal_entry_pkg.t_array_Num;
10076 l_array_new_type             xla_ae_journal_entry_pkg.t_array_V30L;
10077 l_array_ledger_id            xla_ae_journal_entry_pkg.t_array_Int;
10078 l_array_from_type            xla_ae_journal_entry_pkg.t_array_V30L;
10079 l_array_to_type              xla_ae_journal_entry_pkg.t_array_V30L;
10080 l_array_primary_type         xla_ae_journal_entry_pkg.t_array_V30L;
10081 
10082 l_rate   NUMBER;
10083 i        NUMBER;
10084 
10085 cursor csr_lines is
10086   SELECT xal.calculate_acctd_amts_flag
10087         ,xal.currency_conversion_type
10088         ,TRUNC(nvl(xal.currency_conversion_date, xeg.transaction_date))
10089         ,decode(xal.currency_conversion_type, 'User', xal.currency_conversion_rate, -1)
10090         ,xal.currency_code
10091         ,xal.ledger_id
10092         ,decode( fc.derive_type, 'EURO', 'EURO', 'EMU',
10093                   decode( sign( trunc(nvl(xal.currency_conversion_date, xeg.transaction_date)) -
10094                       trunc(fc.derive_effective)), -1, 'OTHER', 'EMU'), 'OTHER' ) from_type
10095         ,decode( fc1.derive_type, 'EURO', 'EURO', 'EMU',
10096                   decode( sign( trunc(nvl(xal.currency_conversion_date, xeg.transaction_date)) -
10097                       trunc(fc1.derive_effective)), -1, 'OTHER', 'EMU'), 'OTHER' ) to_type
10098         ,decode( fc2.derive_type, 'EURO', 'EURO', 'EMU',
10099                   decode( sign( trunc(nvl(xal.currency_conversion_date, xeg.transaction_date)) -
10100                       trunc(fc2.derive_effective)), -1, 'OTHER', 'EMU'), 'OTHER' ) primary_type
10101     FROM xla_ae_lines_gt xal
10102         ,gl_ledgers gl
10103         ,fnd_currencies fc
10104         ,fnd_currencies fc1
10105         ,fnd_currencies fc2
10106         ,xla_events_gt xeg
10107    WHERE xal.ledger_id = gl.ledger_id
10108      AND gl.object_type_code      = 'L' /* only ledgers (not ledger sets) */
10109      AND gl.le_ledger_type_code   = 'L' /* only legal ledgers */
10110      AND xal.currency_code <> gl.currency_code
10111      AND xal.gain_or_loss_flag = 'N'
10112      AND xal.balance_type_code <> 'X'
10113      AND xal.calculate_acctd_amts_flag = 'Y'
10114      AND fc.currency_code = xal.currency_code
10115      AND fc1.currency_code = gl.currency_code
10116      AND fc2.currency_code = l_primary_ledger_currency
10117      AND xal.event_id = xeg.event_id
10118      AND nvl(xal.reversal_code,C_CHAR) <> C_DUMMY_PRIOR
10119   GROUP BY
10120          xal.calculate_acctd_amts_flag
10121         ,xal.currency_conversion_type
10122         ,TRUNC(nvl(xal.currency_conversion_date, xeg.transaction_date))
10123         ,xal.currency_conversion_rate
10124         ,xal.currency_code
10125         ,xal.ledger_id
10126         ,fc.derive_type
10127         ,fc.derive_effective
10128         ,fc1.derive_type
10129         ,fc1.derive_effective
10130         ,fc2.derive_type
10131         ,fc2.derive_effective
10132         ,decode(xal.currency_conversion_type, 'User', xal.currency_conversion_rate, -1)
10133         ;
10134 
10135 BEGIN
10136   IF g_log_enabled THEN
10137       l_log_module := C_DEFAULT_MODULE||'.CalculateUnroundedAmounts';
10138   END IF;
10139 
10140   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10141       trace
10142          (p_msg      => 'BEGIN of CalculateUnroundedAmounts'
10143          ,p_level    => C_LEVEL_PROCEDURE
10144          ,p_module   => l_log_module);
10145   END IF;
10146 
10147   l_euro :='EUR';
10148 
10149   xla_accounting_cache_pkg.BuildLedgerArray(l_ledger_attrs1);
10150 
10151   l_max_ledger_index := l_ledger_attrs1.array_ledger_id.COUNT;
10152   IF (C_LEVEL_STATEMENT>= g_log_level) THEN
10153       trace
10154          (p_msg      => 'l_max_ledger_index:'||to_char(l_max_ledger_index)
10155          ,p_level    => C_LEVEL_STATEMENT
10156          ,p_module   => l_log_module);
10157   END IF;
10158   For i in 1..l_max_ledger_index LOOP
10159     IF (C_LEVEL_STATEMENT>= g_log_level) THEN
10160       trace
10161          (p_msg      => 'i:'||to_char(i)
10162          ,p_level    => C_LEVEL_STATEMENT
10163          ,p_module   => l_log_module);
10164     END IF;
10165     l_ledger_id := l_ledger_attrs1.array_ledger_id(i);
10166     IF(l_ledger_attrs1.array_ledger_type(i) = 'PRIMARY') THEN
10167       l_primary_ledger_currency:= l_ledger_attrs1.array_ledger_currency_code(i);
10168       l_primary_ledger_id := l_ledger_id;
10169     ELSIF(l_ledger_attrs1.array_ledger_type(i) = 'SECONDARY') THEN
10170       l_secondary_ledger_currency:= l_ledger_attrs1.array_ledger_currency_code(i);
10171       l_secondary_ledger_id := l_ledger_id;
10172     END IF;
10173     l_ledger_attrs.array_ledger_currency_code(l_ledger_id)
10174                       := l_ledger_attrs1.array_ledger_currency_code(i);
10175     l_ledger_attrs.array_ledger_type(l_ledger_id)
10176                       := l_ledger_attrs1.array_ledger_type(i);
10177     IF (C_LEVEL_STATEMENT>= g_log_level) THEN
10178       trace
10179          (p_msg      => 'middle of loop, i:'||to_char(i)
10180          ,p_level    => C_LEVEL_STATEMENT
10181          ,p_module   => l_log_module);
10182     END IF;
10183     l_ledger_attrs.array_default_rate_type(l_ledger_id)
10184                       := l_ledger_attrs1.array_default_rate_type(i);
10185     l_ledger_attrs.array_inhert_type_flag(l_ledger_id)
10186                       := l_ledger_attrs1.array_inhert_type_flag(i);
10187     l_ledger_attrs.array_max_roll_date(l_ledger_id)
10188                       := l_ledger_attrs1.array_max_roll_date(i);
10189   END LOOP;
10190 
10191   IF l_primary_ledger_currency is null THEN
10192     l_primary_ledger_currency:=l_secondary_ledger_currency;
10193     l_primary_ledger_id:=l_secondary_ledger_id;
10194   END IF;
10195 
10196   OPEN csr_lines;
10197 
10198   IF (C_LEVEL_STATEMENT>= g_log_level) THEN
10199       trace
10200          (p_msg      => 'Starting Loop'
10201          ,p_level    => C_LEVEL_STATEMENT
10202          ,p_module   => l_log_module);
10203   END IF;
10204   LOOP
10205     FETCH csr_lines
10206     BULK COLLECT INTO
10207          l_array_calculate_amts_flag
10208          ,l_array_conversion_type
10209          ,l_array_conversion_date
10210          ,l_array_conversion_rate
10211          ,l_array_entered_curr
10212          ,l_array_ledger_id
10213          ,l_array_from_type
10214          ,l_array_to_type
10215          ,l_array_primary_type
10216     LIMIT C_BULK_LIMIT;
10217 
10218     IF l_array_conversion_type.COUNT = 0 THEN
10219       EXIT;
10220     END IF;
10221     IF (C_LEVEL_STATEMENT>= g_log_level) THEN
10222       trace
10223          (p_msg      => 'Loop Count:'||to_char(l_array_conversion_type.COUNT)
10224          ,p_level    => C_LEVEL_STATEMENT
10225          ,p_module   => l_log_module);
10226     END IF;
10227 
10228     FOR i in 1..l_array_conversion_type.COUNT LOOP
10229       IF (C_LEVEL_STATEMENT>= g_log_level) THEN
10230           trace
10231              (p_msg      => 'i:'||to_char(i) || ' ledger id:'|| to_char(l_array_ledger_id (i))
10232              ,p_level    => C_LEVEL_STATEMENT
10233              ,p_module   => l_log_module);
10234           trace
10235              (p_msg      => 'ledger currency code:'||l_ledger_attrs.array_ledger_currency_code(l_array_ledger_id (i)) ||' entered curr:'|| l_array_entered_curr(i)
10236              ,p_level    => C_LEVEL_STATEMENT
10237              ,p_module   => l_log_module);
10238           trace
10239              (p_msg      => 'from type:'||l_array_from_type(i) || ' tto type:'||l_array_to_type(i)
10240              ,p_level    => C_LEVEL_STATEMENT
10241              ,p_module   => l_log_module);
10242       END IF;
10243       BEGIN
10244       -- added for bug13018249
10245       IF ( l_array_entered_curr(i) = 'STAT' )
10246       THEN
10247           l_array_new_rate(i) := 1 ;
10248           l_array_new_type(i) := 'User' ;
10249       ELSE
10250         IF(l_array_from_type(i) in ('EMU', 'EURO')
10251            AND l_array_to_type(i) in ('EMU', 'EURO')) THEN
10252           IF (C_LEVEL_STATEMENT>= g_log_level) THEN
10253               trace
10254                  (p_msg      => 'if block1'
10255                  ,p_level    => C_LEVEL_STATEMENT
10256                  ,p_module   => l_log_module);
10257           END IF;
10258 
10259           l_array_new_type(i) :='EMU Fixed';
10260           l_array_new_rate(i) :=gl_currency_api.get_closest_rate(
10261                 x_from_currency    => l_array_entered_curr(i)
10262                 ,x_to_currency      => l_ledger_attrs.array_ledger_currency_code(l_array_ledger_id (i))
10263                 ,x_conversion_date  => l_array_conversion_date(i)
10264                 ,x_conversion_type  => 'EMU Fixed'
10265                ,x_max_roll_days    => l_ledger_attrs.array_max_roll_date(l_primary_ledger_id));
10266         ELSIF(l_array_ledger_id (i) = l_primary_ledger_id) THEN
10267           IF (C_LEVEL_STATEMENT>= g_log_level) THEN
10268               trace
10269                  (p_msg      => 'if block2'
10270                  ,p_level    => C_LEVEL_STATEMENT
10271                  ,p_module   => l_log_module);
10272           END IF;
10273           l_array_new_type(i) :=l_array_conversion_type(i);
10274           IF (l_array_conversion_type(i) = 'User') THEN
10275             l_array_new_rate(i) := l_array_conversion_rate(i);
10276             IF (C_LEVEL_STATEMENT>= g_log_level) THEN
10277               trace
10278                  (p_msg      => 'if block2:'||to_char(l_array_new_rate(i))
10279                  ,p_level    => C_LEVEL_STATEMENT
10280                  ,p_module   => l_log_module);
10281             END IF;
10282 
10283           ELSE
10284             l_array_new_rate(i):=gl_currency_api.get_closest_rate(
10285                 x_from_currency    => l_array_entered_curr(i)
10286                 ,x_to_currency      => l_primary_ledger_currency
10287                 ,x_conversion_date  => l_array_conversion_date(i)
10288                 ,x_conversion_type  => l_array_conversion_type(i)
10289                ,x_max_roll_days    => l_ledger_attrs.array_max_roll_date(l_primary_ledger_id));
10290             IF (C_LEVEL_STATEMENT>= g_log_level) THEN
10291               trace
10292                  (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)
10293                  ,p_level    => C_LEVEL_STATEMENT
10294                  ,p_module   => l_log_module);
10295             END IF;
10296           END IF;
10297         ELSE
10298           IF (C_LEVEL_STATEMENT>= g_log_level) THEN
10299               trace
10300                  (p_msg      => 'if block3'
10301                  ,p_level    => C_LEVEL_STATEMENT
10302                  ,p_module   => l_log_module);
10303           END IF;
10304           IF(l_array_conversion_type(i) = 'User' ) THEN
10305             IF(l_array_primary_type(i) in ('EMU', 'EURO')
10306                  AND l_array_from_type(i) in ('EMU', 'EURO')) THEN
10307               IF (C_LEVEL_STATEMENT>= g_log_level) THEN
10308                   trace
10309                      (p_msg      => 'if block4'
10310                      ,p_level    => C_LEVEL_STATEMENT
10311                      ,p_module   => l_log_module);
10312               END IF;
10313               l_array_new_type(i) :=l_ledger_attrs.array_default_rate_type(l_array_ledger_id (i));
10314               l_array_new_rate(i):=gl_currency_api.get_closest_rate(
10315                 x_from_currency    => l_array_entered_curr(i)
10316                 ,x_to_currency      => l_ledger_attrs.array_ledger_currency_code(l_array_ledger_id (i))
10317                 ,x_conversion_date  => l_array_conversion_date(i)
10318                 ,x_conversion_type  => l_array_new_type(i)
10319            ,x_max_roll_days    => l_ledger_attrs.array_max_roll_date(l_array_ledger_id (i)));
10320             ELSE
10321               IF (C_LEVEL_STATEMENT>= g_log_level) THEN
10322                   trace
10323                      (p_msg      => 'if block5'
10324                      ,p_level    => C_LEVEL_STATEMENT
10325                      ,p_module   => l_log_module);
10326               END IF;
10327               l_array_new_type(i) :=l_array_conversion_type(i);
10328               l_rate:=gl_currency_api.get_closest_rate(
10329                 x_from_currency    => l_primary_ledger_currency
10330                 ,x_to_currency      => l_ledger_attrs.array_ledger_currency_code(l_array_ledger_id (i))
10331                 ,x_conversion_date  => l_array_conversion_date(i)
10332                 ,x_conversion_type  => l_ledger_attrs.array_default_rate_type(l_array_ledger_id (i))
10333            ,x_max_roll_days    => l_ledger_attrs.array_max_roll_date(l_array_ledger_id (i)));
10334               l_array_new_rate(i):= l_array_conversion_rate(i) * l_rate;
10335             END IF;
10336           ELSIF(l_ledger_attrs.array_inhert_type_flag(l_array_ledger_id (i))='Y'and l_array_conversion_type(i) is not null) THEN
10337               IF (C_LEVEL_STATEMENT>= g_log_level) THEN
10338                   trace
10339                      (p_msg      => 'if block6'
10340                      ,p_level    => C_LEVEL_STATEMENT
10341                      ,p_module   => l_log_module);
10342               END IF;
10343             l_array_new_type(i) :=l_array_conversion_type(i);
10344             l_array_new_rate(i):=gl_currency_api.get_closest_rate(
10345                 x_from_currency    => l_array_entered_curr(i)
10346                 ,x_to_currency      => l_ledger_attrs.array_ledger_currency_code(l_array_ledger_id (i))
10347                 ,x_conversion_date  => l_array_conversion_date(i)
10348                 ,x_conversion_type  => l_array_conversion_type(i)
10349            ,x_max_roll_days    => l_ledger_attrs.array_max_roll_date(l_array_ledger_id (i)));
10350           ELSE
10351               IF (C_LEVEL_STATEMENT>= g_log_level) THEN
10352                   trace
10353                      (p_msg      => 'if block7'
10354                      ,p_level    => C_LEVEL_STATEMENT
10355                      ,p_module   => l_log_module);
10356               END IF;
10357             l_array_new_type(i) :=l_ledger_attrs.array_default_rate_type(l_array_ledger_id (i));
10358             l_array_new_rate(i):=gl_currency_api.get_closest_rate(
10359                 x_from_currency    => l_array_entered_curr(i)
10360                 ,x_to_currency      => l_ledger_attrs.array_ledger_currency_code(l_array_ledger_id (i))
10361                 ,x_conversion_date  => l_array_conversion_date(i)
10362                 ,x_conversion_type  => l_array_new_type(i)
10363            ,x_max_roll_days    => l_ledger_attrs.array_max_roll_date(l_array_ledger_id (i)));
10364           END IF;
10365         END IF;
10366       END IF; -- added for bug13018249
10367       EXCEPTION
10368         WHEN gl_currency_api.NO_RATE THEN
10369           IF (C_LEVEL_EXCEPTION>= g_log_level) THEN
10370               trace
10371                  (p_msg      => 'No rate for:'
10372                  ,p_level    => C_LEVEL_EXCEPTION
10373                  ,p_module   => l_log_module);
10374               trace
10375                  (p_msg      => 'entered:'||l_array_entered_curr(i)
10376                  ,p_level    => C_LEVEL_EXCEPTION
10377                  ,p_module   => l_log_module);
10378               trace
10379                  (p_msg      => 'accounting curr:'||l_ledger_attrs.array_ledger_currency_code(l_array_ledger_id(i))
10380                  ,p_level    => C_LEVEL_EXCEPTION
10381                  ,p_module   => l_log_module);
10382               trace
10383                  (p_msg      => 'date:'||to_char(l_array_conversion_date(i))
10384                  ,p_level    => C_LEVEL_EXCEPTION
10385                  ,p_module   => l_log_module);
10386               trace
10387                  (p_msg      => 'type:'||l_array_conversion_type(i)
10388                  ,p_level    => C_LEVEL_EXCEPTION
10389                  ,p_module   => l_log_module);
10390               trace
10391                  (p_msg      => 'ledger ID:'||to_char(l_array_ledger_id (i))
10392                  ,p_level    => C_LEVEL_EXCEPTION
10393                  ,p_module   => l_log_module);
10394           END IF;
10395           l_array_new_rate(i) := null;
10396         WHEN others THEN
10397           IF (C_LEVEL_EXCEPTION>= g_log_level) THEN
10398               trace
10399                  (p_msg      => 'Exception:'
10400                  ,p_level    => C_LEVEL_EXCEPTION
10401                  ,p_module   => l_log_module);
10402               trace
10403                  (p_msg      => 'entered:'||l_array_entered_curr(i)
10404                  ,p_level    => C_LEVEL_EXCEPTION
10405                  ,p_module   => l_log_module);
10406               trace
10407                  (p_msg      => 'accounting curr:'||l_ledger_attrs.array_ledger_currency_code(l_array_ledger_id(i))
10408                  ,p_level    => C_LEVEL_EXCEPTION
10409                  ,p_module   => l_log_module);
10410               trace
10411                  (p_msg      => 'date:'||to_char(l_array_conversion_date(i))
10412                  ,p_level    => C_LEVEL_EXCEPTION
10413                  ,p_module   => l_log_module);
10414               trace
10415                  (p_msg      => 'type:'||l_array_conversion_type(i)
10416                  ,p_level    => C_LEVEL_EXCEPTION
10417                  ,p_module   => l_log_module);
10418               trace
10419                  (p_msg      => 'ledger ID:'||to_char(l_array_ledger_id (i))
10420                  ,p_level    => C_LEVEL_EXCEPTION
10421                  ,p_module   => l_log_module);
10422           END IF;
10423           RAISE;
10424       END;
10425     END LOOP;
10426 
10427     IF (C_LEVEL_STATEMENT>= g_log_level) THEN
10428       trace
10429          (p_msg      => 'ending Loop'
10430          ,p_level    => C_LEVEL_STATEMENT
10431          ,p_module   => l_log_module);
10432 
10433 /*
10434       FOR i in 1..l_array_conversion_type.COUNT LOOP
10435         trace
10436            (p_msg      => 'i:'||to_char(i)|| ' new rate:'||to_char(l_array_new_rate(i))||' type:'||l_array_new_type(i)
10437            ,p_level    => C_LEVEL_STATEMENT
10438            ,p_module   => l_log_module);
10439         trace
10440            (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))
10441            ,p_level    => C_LEVEL_STATEMENT
10442            ,p_module   => l_log_module);
10443       END LOOP;
10444 */
10445 
10446     END IF;
10447     FORALL i in 1..l_array_conversion_type.COUNT
10448         UPDATE xla_ae_lines_gt xal
10449            SET currency_conversion_rate = l_array_new_rate(i)
10450               ,currency_conversion_type = l_array_new_type(i)
10451               ,currency_conversion_date = DECODE(xal.currency_code , 'STAT',xal.accounting_date,l_array_conversion_date(i)) -- added for bug13018249
10452               ,unrounded_accounted_cr   = unrounded_entered_cr * l_array_new_rate(i)
10453               ,unrounded_accounted_dr   = unrounded_entered_dr * l_array_new_rate(i)
10454          WHERE xal.ledger_id = l_array_ledger_id(i)
10455            AND xal.currency_code = l_array_entered_curr(i)
10456            AND xal.gain_or_loss_flag = 'N'
10457            AND xal.balance_type_code <> 'X'
10458            AND xal.calculate_acctd_amts_flag = 'Y'
10459            AND (xal.currency_conversion_type = l_array_conversion_type(i)
10460                  or (xal.currency_conversion_type is null and l_array_conversion_type(i) is null))
10461            AND l_array_conversion_date(i) =
10462                   (select TRUNC(nvl(xal.currency_conversion_date, xeg.transaction_date))
10463                      from xla_events_gt xeg
10464                     where xal.event_id = xeg.event_id)
10465            AND decode(currency_conversion_type, 'User', currency_conversion_rate, -1) = l_array_conversion_rate(i)
10466            AND nvl(xal.reversal_code,'dd') <> C_DUMMY_PRIOR
10467            ;
10468 
10469     IF (C_LEVEL_STATEMENT>= g_log_level) THEN
10470       trace
10471          (p_msg      => 'ending update'
10472          ,p_level    => C_LEVEL_STATEMENT
10473          ,p_module   => l_log_module);
10474     END IF;
10475 
10476   END LOOP;
10477   IF (C_LEVEL_STATEMENT>= g_log_level) THEN
10478       trace
10479          (p_msg      => 'ending loop outside'
10480          ,p_level    => C_LEVEL_STATEMENT
10481          ,p_module   => l_log_module);
10482   END IF;
10483 
10484   CLOSE csr_lines;
10485 
10486   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
10487       trace
10488          (p_msg      => 'Before the assignment of unrounded amount and conversion rate'
10489          ,p_level    => C_LEVEL_STATEMENT
10490          ,p_module   => l_log_module);
10491       trace
10492          (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)
10493          ,p_level    => C_LEVEL_STATEMENT
10494          ,p_module   => l_log_module);
10495   END IF;
10496 
10497 /*
10498   FORALL i in 1..l_max_ledger_index
10499     UPDATE xla_ae_lines_gt xal
10500        SET (xal.unrounded_accounted_dr
10501            ,xal.unrounded_accounted_cr
10502            ,xal.currency_conversion_rate
10503            )
10504         =
10505      (SELECT
10506         CASE xal.currency_code
10507         WHEN l_ledger_attrs.array_ledger_currency_code(i) THEN
10508           xal.entered_dr
10509         ELSE
10510           CASE l_ledger_attrs.array_ledger_type(i)
10511           WHEN 'PRIMARY' THEN
10512             CASE calculate_acctd_amts_flag
10513             WHEN 'Y' THEN
10514               CASE xal.currency_conversion_type
10515               WHEN 'User' THEN
10516                 xal.entered_dr * xal.currency_conversion_rate
10517               ELSE
10518                 xal.entered_dr *
10519                 CASE decode( fc.derive_type,'EURO', 'EURO',
10520                      'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10521                      trunc(xah.accounting_date)) -trunc(fc.derive_effective)),
10522                    -1, 'OTHER','EMU'),'OTHER' )
10523                 WHEN 'EMU' THEN
10524                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10525                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10526                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10527                       -1, 'OTHER','EMU'),'OTHER' )
10528                   WHEN 'EMU' THEN
10529                      decode( fc1.derive_type, 'EURO', 1,
10530                   'EMU', fc1.derive_factor,'OTHER', -1 )/
10531                      decode( fc.derive_type, 'EURO', 1,
10532                   'EMU', fc.derive_factor,'OTHER', -1 )
10533                   WHEN 'EURO' THEN
10534                      1/decode( fc.derive_type, 'EURO', 1,
10535                   'EMU', fc.derive_factor,'OTHER', -1 )
10536                   ELSE ra.conversion_rate/decode( fc.derive_type, 'EURO', 1,
10537                   'EMU', fc.derive_factor,'OTHER', -1 )
10538                   END
10539                 WHEN 'EURO' THEN
10540                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10541                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10542                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10543                       -1, 'OTHER','EMU'),'OTHER' )
10544                   WHEN 'EMU' THEN
10545                      decode( fc1.derive_type, 'EURO', 1,
10546                   'EMU', fc1.derive_factor,'OTHER', -1 )
10547                   ELSE ra.conversion_rate
10548                   END
10549                 ELSE
10550                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10551                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10552                        trunc(xah.accounting_date)) - trunc(fc1.derive_effective)),
10553                       -1, 'OTHER','EMU'),'OTHER' )
10554                   WHEN 'EMU' THEN
10555                       ra.conversion_rate*decode( fc1.derive_type, 'EURO', 1,
10556                   'EMU', fc1.derive_factor,'OTHER', -1 )
10557                   ELSE ra.conversion_rate
10558                   END
10559                 END
10560               END
10561             ELSE
10562               xal.unrounded_accounted_dr
10563             END
10564           ELSE
10565             CASE xal.currency_conversion_type
10566             WHEN 'User' THEN
10567               xal.entered_dr * xal.currency_conversion_rate *
10568                 CASE decode( fc.derive_type,'EURO', 'EURO',
10569                      'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10570                      trunc(xah.accounting_date)) -trunc(fc.derive_effective)),
10571                    -1, 'OTHER','EMU'),'OTHER' )
10572                 WHEN 'EMU' THEN
10573                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10574                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10575                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10576                       -1, 'OTHER','EMU'),'OTHER' )
10577                   WHEN 'EMU' THEN
10578                      decode( fc1.derive_type, 'EURO', 1,
10579                   'EMU', fc1.derive_factor,'OTHER', -1 )/
10580                      decode( fc.derive_type, 'EURO', 1,
10581                   'EMU', fc.derive_factor,'OTHER', -1 )
10582                   WHEN 'EURO' THEN
10583                      1/decode( fc.derive_type, 'EURO', 1,
10584                   'EMU', fc.derive_factor,'OTHER', -1 )
10585                   ELSE ra.conversion_rate/decode( fc.derive_type, 'EURO', 1,
10586                   'EMU', fc.derive_factor,'OTHER', -1 )
10587                   END
10588                 WHEN 'EURO' THEN
10589                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10590                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10591                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10592                       -1, 'OTHER','EMU'),'OTHER' )
10593                   WHEN 'EMU' THEN
10594                      decode( fc1.derive_type, 'EURO', 1,
10595                   'EMU', fc1.derive_factor,'OTHER', -1 )
10596                   ELSE ra.conversion_rate
10597                   END
10598                 ELSE
10599                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10600                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10601                        trunc(xah.accounting_date)) - trunc(fc1.derive_effective)),
10602                       -1, 'OTHER','EMU'),'OTHER' )
10603                   WHEN 'EMU' THEN
10604                       ra.conversion_rate*decode( fc1.derive_type, 'EURO', 1,
10605                   'EMU', fc1.derive_factor,'OTHER', -1 )
10606                   ELSE ra.conversion_rate
10607                   END
10608                 END
10609             ELSE
10610               xal.entered_dr *
10611                 CASE decode( fc.derive_type,'EURO', 'EURO',
10612                      'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10613                      trunc(xah.accounting_date)) -trunc(fc.derive_effective)),
10614                    -1, 'OTHER','EMU'),'OTHER' )
10615                 WHEN 'EMU' THEN
10616                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10617                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10618                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10619                       -1, 'OTHER','EMU'),'OTHER' )
10620                   WHEN 'EMU' THEN
10621                      decode( fc1.derive_type, 'EURO', 1,
10622                   'EMU', fc1.derive_factor,'OTHER', -1 )/
10623                      decode( fc.derive_type, 'EURO', 1,
10624                   'EMU', fc.derive_factor,'OTHER', -1 )
10625                   WHEN 'EURO' THEN
10626                      1/decode( fc.derive_type, 'EURO', 1,
10627                   'EMU', fc.derive_factor,'OTHER', -1 )
10628                   ELSE ra.conversion_rate/decode( fc.derive_type, 'EURO', 1,
10629                   'EMU', fc.derive_factor,'OTHER', -1 )
10630                   END
10631                 WHEN 'EURO' THEN
10632                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10633                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10634                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10635                       -1, 'OTHER','EMU'),'OTHER' )
10636                   WHEN 'EMU' THEN
10637                      decode( fc1.derive_type, 'EURO', 1,
10638                   'EMU', fc1.derive_factor,'OTHER', -1 )
10639                   ELSE ra.conversion_rate
10640                   END
10641                 ELSE
10642                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10643                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10644                        trunc(xah.accounting_date)) - trunc(fc1.derive_effective)),
10645                       -1, 'OTHER','EMU'),'OTHER' )
10646                   WHEN 'EMU' THEN
10647                       ra.conversion_rate*decode( fc1.derive_type, 'EURO', 1,
10648                   'EMU', fc1.derive_factor,'OTHER', -1 )
10649                   ELSE ra.conversion_rate
10650                   END
10651                 END
10652             END
10653           END
10654         END,
10655         CASE xal.currency_code
10656         WHEN l_ledger_attrs.array_ledger_currency_code(i) THEN
10657           xal.entered_cr
10658         ELSE
10659           CASE l_ledger_attrs.array_ledger_type(i)
10660           WHEN 'PRIMARY' THEN
10661             CASE calculate_acctd_amts_flag
10662             WHEN 'Y' THEN
10663               CASE xal.currency_conversion_type
10664               WHEN 'User' THEN
10665                 xal.entered_cr * xal.currency_conversion_rate
10666               ELSE
10667                 xal.entered_cr *
10668                 CASE decode( fc.derive_type,'EURO', 'EURO',
10669                      'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10670                      trunc(xah.accounting_date)) -trunc(fc.derive_effective)),
10671                    -1, 'OTHER','EMU'),'OTHER' )
10672                 WHEN 'EMU' THEN
10673                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10674                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10675                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10676                       -1, 'OTHER','EMU'),'OTHER' )
10677                   WHEN 'EMU' THEN
10678                      decode( fc1.derive_type, 'EURO', 1,
10679                   'EMU', fc1.derive_factor,'OTHER', -1 )/
10680                      decode( fc.derive_type, 'EURO', 1,
10681                   'EMU', fc.derive_factor,'OTHER', -1 )
10682                   WHEN 'EURO' THEN
10683                      1/decode( fc.derive_type, 'EURO', 1,
10684                   'EMU', fc.derive_factor,'OTHER', -1 )
10685                   ELSE ra.conversion_rate/decode( fc.derive_type, 'EURO', 1,
10686                   'EMU', fc.derive_factor,'OTHER', -1 )
10687                   END
10688                 WHEN 'EURO' THEN
10689                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10690                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10691                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10692                       -1, 'OTHER','EMU'),'OTHER' )
10693                   WHEN 'EMU' THEN
10694                      decode( fc1.derive_type, 'EURO', 1,
10695                   'EMU', fc1.derive_factor,'OTHER', -1 )
10696                   ELSE ra.conversion_rate
10697                   END
10698                 ELSE
10699                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10700                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10701                        trunc(xah.accounting_date)) - trunc(fc1.derive_effective)),
10702                       -1, 'OTHER','EMU'),'OTHER' )
10703                   WHEN 'EMU' THEN
10704                       ra.conversion_rate*decode( fc1.derive_type, 'EURO', 1,
10705                   'EMU', fc1.derive_factor,'OTHER', -1 )
10706                   ELSE ra.conversion_rate
10707                   END
10708                 END
10709               END
10710             ELSE
10711               xal.unrounded_accounted_cr
10712             END
10713           ELSE
10714             CASE xal.currency_conversion_type
10715             WHEN 'User' THEN
10716               xal.entered_cr * xal.currency_conversion_rate *
10717                 CASE decode( fc.derive_type,'EURO', 'EURO',
10718                      'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10719                      trunc(xah.accounting_date)) -trunc(fc.derive_effective)),
10720                    -1, 'OTHER','EMU'),'OTHER' )
10721                 WHEN 'EMU' THEN
10722                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10723                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10724                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10725                       -1, 'OTHER','EMU'),'OTHER' )
10726                   WHEN 'EMU' THEN
10727                      decode( fc1.derive_type, 'EURO', 1,
10728                   'EMU', fc1.derive_factor,'OTHER', -1 )/
10729                      decode( fc.derive_type, 'EURO', 1,
10730                   'EMU', fc.derive_factor,'OTHER', -1 )
10731                   WHEN 'EURO' THEN
10732                      1/decode( fc.derive_type, 'EURO', 1,
10733                   'EMU', fc.derive_factor,'OTHER', -1 )
10734                   ELSE ra.conversion_rate/decode( fc.derive_type, 'EURO', 1,
10735                   'EMU', fc.derive_factor,'OTHER', -1 )
10736                   END
10737                 WHEN 'EURO' THEN
10738                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10739                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10740                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10741                       -1, 'OTHER','EMU'),'OTHER' )
10742                   WHEN 'EMU' THEN
10743                      decode( fc1.derive_type, 'EURO', 1,
10744                   'EMU', fc1.derive_factor,'OTHER', -1 )
10745                   ELSE ra.conversion_rate
10746                   END
10747                 ELSE
10748                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10749                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10750                        trunc(xah.accounting_date)) - trunc(fc1.derive_effective)),
10751                       -1, 'OTHER','EMU'),'OTHER' )
10752                   WHEN 'EMU' THEN
10753                       ra.conversion_rate*decode( fc1.derive_type, 'EURO', 1,
10754                   'EMU', fc1.derive_factor,'OTHER', -1 )
10755                   ELSE ra.conversion_rate
10756                   END
10757                 END
10758             ELSE
10759               xal.entered_cr *
10760                 CASE decode( fc.derive_type,'EURO', 'EURO',
10761                      'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10762                      trunc(xah.accounting_date)) -trunc(fc.derive_effective)),
10763                    -1, 'OTHER','EMU'),'OTHER' )
10764                 WHEN 'EMU' THEN
10765                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10766                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10767                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10768                       -1, 'OTHER','EMU'),'OTHER' )
10769                   WHEN 'EMU' THEN
10770                      decode( fc1.derive_type, 'EURO', 1,
10771                   'EMU', fc1.derive_factor,'OTHER', -1 )/
10772                      decode( fc.derive_type, 'EURO', 1,
10773                   'EMU', fc.derive_factor,'OTHER', -1 )
10774                   WHEN 'EURO' THEN
10775                      1/decode( fc.derive_type, 'EURO', 1,
10776                   'EMU', fc.derive_factor,'OTHER', -1 )
10777                   ELSE ra.conversion_rate/decode( fc.derive_type, 'EURO', 1,
10778                   'EMU', fc.derive_factor,'OTHER', -1 )
10779                   END
10780                 WHEN 'EURO' THEN
10781                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10782                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10783                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10784                       -1, 'OTHER','EMU'),'OTHER' )
10785                   WHEN 'EMU' THEN
10786                      decode( fc1.derive_type, 'EURO', 1,
10787                   'EMU', fc1.derive_factor,'OTHER', -1 )
10788                   ELSE ra.conversion_rate
10789                   END
10790                 ELSE
10791                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10792                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10793                        trunc(xah.accounting_date)) - trunc(fc1.derive_effective)),
10794                       -1, 'OTHER','EMU'),'OTHER' )
10795                   WHEN 'EMU' THEN
10796                       ra.conversion_rate*decode( fc1.derive_type, 'EURO', 1,
10797                   'EMU', fc1.derive_factor,'OTHER', -1 )
10798                   ELSE ra.conversion_rate
10799                   END
10800                 END
10801             END
10802           END
10803         END,
10804         CASE xal.currency_code
10805         WHEN l_ledger_attrs.array_ledger_currency_code(i) THEN
10806           null
10807         ELSE
10808           CASE l_ledger_attrs.array_ledger_type(i)
10809           WHEN 'PRIMARY' THEN
10810             CASE calculate_acctd_amts_flag
10811             WHEN 'Y' THEN
10812               CASE xal.currency_conversion_type
10813               WHEN 'User' THEN
10814                 xal.currency_conversion_rate
10815               ELSE
10816                 CASE decode( fc.derive_type,'EURO', 'EURO',
10817                      'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10818                      trunc(xah.accounting_date)) -trunc(fc.derive_effective)),
10819                    -1, 'OTHER','EMU'),'OTHER' )
10820                 WHEN 'EMU' THEN
10821                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10822                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10823                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10824                       -1, 'OTHER','EMU'),'OTHER' )
10825                   WHEN 'EMU' THEN
10826                      decode( fc1.derive_type, 'EURO', 1,
10827                   'EMU', fc1.derive_factor,'OTHER', -1 )/
10828                      decode( fc.derive_type, 'EURO', 1,
10829                   'EMU', fc.derive_factor,'OTHER', -1 )
10830                   WHEN 'EURO' THEN
10831                      1/decode( fc.derive_type, 'EURO', 1,
10832                   'EMU', fc.derive_factor,'OTHER', -1 )
10833                   ELSE ra.conversion_rate/decode( fc.derive_type, 'EURO', 1,
10834                   'EMU', fc.derive_factor,'OTHER', -1 )
10835                   END
10836                 WHEN 'EURO' THEN
10837                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10838                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10839                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10840                       -1, 'OTHER','EMU'),'OTHER' )
10841                   WHEN 'EMU' THEN
10842                      decode( fc1.derive_type, 'EURO', 1,
10843                   'EMU', fc1.derive_factor,'OTHER', -1 )
10844                   ELSE ra.conversion_rate
10845                   END
10846                 ELSE
10847                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10848                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10849                        trunc(xah.accounting_date)) - trunc(fc1.derive_effective)),
10850                       -1, 'OTHER','EMU'),'OTHER' )
10851                   WHEN 'EMU' THEN
10852                       ra.conversion_rate*decode( fc1.derive_type, 'EURO', 1,
10853                   'EMU', fc1.derive_factor,'OTHER', -1 )
10854                   ELSE ra.conversion_rate
10855                   END
10856                 END
10857               END
10858             ELSE
10859               xal.currency_conversion_rate
10860             END
10861           ELSE
10862             CASE xal.currency_conversion_type
10863             WHEN 'User' THEN
10864               xal.currency_conversion_rate *
10865                 CASE decode( fc.derive_type,'EURO', 'EURO',
10866                      'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10867                      trunc(xah.accounting_date)) -trunc(fc.derive_effective)),
10868                    -1, 'OTHER','EMU'),'OTHER' )
10869                 WHEN 'EMU' THEN
10870                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10871                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10872                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10873                       -1, 'OTHER','EMU'),'OTHER' )
10874                   WHEN 'EMU' THEN
10875                      decode( fc1.derive_type, 'EURO', 1,
10876                   'EMU', fc1.derive_factor,'OTHER', -1 )/
10877                      decode( fc.derive_type, 'EURO', 1,
10878                   'EMU', fc.derive_factor,'OTHER', -1 )
10879                   WHEN 'EURO' THEN
10880                      1/decode( fc.derive_type, 'EURO', 1,
10881                   'EMU', fc.derive_factor,'OTHER', -1 )
10882                   ELSE ra.conversion_rate/decode( fc.derive_type, 'EURO', 1,
10883                   'EMU', fc.derive_factor,'OTHER', -1 )
10884                   END
10885                 WHEN 'EURO' THEN
10886                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10887                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10888                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10889                       -1, 'OTHER','EMU'),'OTHER' )
10890                   WHEN 'EMU' THEN
10891                      decode( fc1.derive_type, 'EURO', 1,
10892                   'EMU', fc1.derive_factor,'OTHER', -1 )
10893                   ELSE ra.conversion_rate
10894                   END
10895                 ELSE
10896                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10897                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10898                        trunc(xah.accounting_date)) - trunc(fc1.derive_effective)),
10899                       -1, 'OTHER','EMU'),'OTHER' )
10900                   WHEN 'EMU' THEN
10901                       ra.conversion_rate*decode( fc1.derive_type, 'EURO', 1,
10902                   'EMU', fc1.derive_factor,'OTHER', -1 )
10903                   ELSE ra.conversion_rate
10904                   END
10905                 END
10906             ELSE
10907 
10908                 CASE decode( fc.derive_type,'EURO', 'EURO',
10909                      'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10910                      trunc(xah.accounting_date)) -trunc(fc.derive_effective)),
10911                    -1, 'OTHER','EMU'),'OTHER' )
10912                 WHEN 'EMU' THEN
10913                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10914                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10915                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10916                       -1, 'OTHER','EMU'),'OTHER' )
10917                   WHEN 'EMU' THEN
10918                      decode( fc1.derive_type, 'EURO', 1,
10919                   'EMU', fc1.derive_factor,'OTHER', -1 )/
10920                      decode( fc.derive_type, 'EURO', 1,
10921                   'EMU', fc.derive_factor,'OTHER', -1 )
10922                   WHEN 'EURO' THEN
10923                      1/decode( fc.derive_type, 'EURO', 1,
10924                   'EMU', fc.derive_factor,'OTHER', -1 )
10925                   ELSE ra.conversion_rate/decode( fc.derive_type, 'EURO', 1,
10926                   'EMU', fc.derive_factor,'OTHER', -1 )
10927                   END
10928                 WHEN 'EURO' THEN
10929                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10930                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10931                        trunc(xah.accounting_date)) -trunc(fc1.derive_effective)),
10932                       -1, 'OTHER','EMU'),'OTHER' )
10933                   WHEN 'EMU' THEN
10934                      decode( fc1.derive_type, 'EURO', 1,
10935                   'EMU', fc1.derive_factor,'OTHER', -1 )
10936                   ELSE ra.conversion_rate
10937                   END
10938                 ELSE
10939                   CASE decode( fc1.derive_type,'EURO', 'EURO',
10940                        'EMU', decode( sign(nvl(trunc(xal.currency_conversion_date),
10941                        trunc(xah.accounting_date)) - trunc(fc1.derive_effective)),
10942                       -1, 'OTHER','EMU'),'OTHER' )
10943                   WHEN 'EMU' THEN
10944                       ra.conversion_rate*decode( fc1.derive_type, 'EURO', 1,
10945                   'EMU', fc1.derive_factor,'OTHER', -1 )
10946                   ELSE ra.conversion_rate
10947                   END
10948                 END
10949 
10950             END
10951           END
10952         END
10953       FROM   gl_daily_rates ra
10954             ,xla_ae_headers_gt xah
10955             ,FND_CURRENCIES fc
10956             ,FND_CURRENCIES fc1
10957       WHERE  ra.conversion_date(+)=
10958                  nvl(trunc(xal.currency_conversion_date), trunc(xah.accounting_date))
10959         AND  ra.conversion_type        (+)=
10960                CASE l_ledger_attrs.array_ledger_type(i)
10961                WHEN 'PRIMARY' THEN xal.currency_conversion_type
10962                ELSE
10963                  CASE xal.currency_conversion_type
10964                  WHEN 'User' THEN l_ledger_attrs.array_default_rate_type(i)
10965                  ELSE
10966                    CASE l_ledger_attrs.array_inhert_type_flag(i)
10967                    WHEN 'Y' THEN
10968                      CASE xal.currency_code
10969                      WHEN l_primary_ledger_currency THEN
10970                        l_ledger_attrs.array_default_rate_type(i)
10971                      ELSE xal.currency_conversion_type
10972                      END
10973                    ELSE l_ledger_attrs.array_default_rate_type(i)
10974                    END
10975                  END
10976                END
10977        AND  ra.from_currency (+)=
10978                CASE decode( fc.derive_type,'EURO', 'EURO','EMU',
10979                     decode( sign(nvl(trunc(xal.currency_conversion_date),
10980                     trunc(xah.accounting_date)) - trunc(fc.derive_effective)),
10981                     -1, 'OTHER','EMU'),'OTHER' )
10982                WHEN 'EMU' THEN
10983                  CASE decode( fc1.derive_type,'EURO', 'EURO','EMU',
10984                       decode( sign(nvl(trunc(xal.currency_conversion_date),
10985                       trunc(xah.accounting_date)) - trunc(fc1.derive_effective)),
10986                       -1, 'OTHER','EMU'),'OTHER' )
10987                  WHEN 'OTHER' THEN l_euro
10988                  ELSE decode(xal.currency_conversion_type, 'User',
10989                           l_primary_ledger_currency, xal.currency_code)
10990                  END
10991                ELSE decode(xal.currency_conversion_type, 'User',
10992                           l_primary_ledger_currency, xal.currency_code)
10993                END
10994        AND    ra.to_currency (+)=
10995                CASE decode( fc.derive_type,'EURO', 'EURO','EMU',
10996                     decode( sign(nvl(trunc(xal.currency_conversion_date),
10997                     trunc(xah.accounting_date)) - trunc(fc.derive_effective)),
10998                     -1, 'OTHER','EMU'),'OTHER' )
10999                WHEN 'OTHER' THEN
11000                  CASE decode( fc1.derive_type,'EURO', 'EURO','EMU',
11001                       decode( sign(nvl(trunc(xal.currency_conversion_date),
11002                       trunc(xah.accounting_date)) - trunc(fc1.derive_effective)),
11003                       -1, 'OTHER','EMU'),'OTHER' )
11004                  WHEN 'EMU' THEN l_euro
11005                  ELSE l_ledger_attrs.array_ledger_currency_code(i)
11006                  END
11007                ELSE l_ledger_attrs.array_ledger_currency_code(i)
11008                END
11009        AND xal.ae_header_id = xah.ae_header_id
11010        AND xal.ledger_id = xah.ledger_id
11011        AND xal.balance_type_code = xah.balance_type_code
11012        AND xah.balance_type_code <> 'X'
11013           )
11014    WHERE xal.gain_or_loss_flag = 'N'
11015      AND xal.ledger_id = l_ledger_attrs.array_ledger_id(i)
11016 --     AND xal.ledger_amount is null
11017      AND xal.balance_type_code <> 'X'
11018      AND xal.reversal_code is null;
11019 */
11020 /*
11021 
11022   FORALL i in 1..l_max_ledger_index
11023     UPDATE xla_ae_lines_gt xal
11024        SET (xal.unrounded_accounted_dr
11025            ,xal.unrounded_accounted_cr
11026            ,xal.currency_conversion_rate
11027            )
11028         =
11029      (SELECT
11030         CASE xal.currency_code
11031         WHEN l_ledger_attrs.array_ledger_currency_code(i) THEN
11032           xal.entered_dr
11033         ELSE
11034           CASE l_ledger_attrs.array_ledger_type(i)
11035           WHEN 'PRIMARY' THEN
11036             CASE calculate_acctd_amts_flag
11037             WHEN 'Y' THEN
11038               CASE xal.currency_conversion_type
11039               WHEN 'User' THEN
11040                 xal.entered_dr * xal.currency_conversion_rate
11041               ELSE
11042                 xal.entered_dr * ra.conversion_rate
11043               END
11044             ELSE
11045               xal.unrounded_accounted_dr
11046             END
11047           ELSE
11048             CASE xal.currency_conversion_type
11049             WHEN 'User' THEN
11050               xal.entered_dr * xal.currency_conversion_rate * ra.conversion_rate
11051             ELSE
11052               xal.entered_dr * ra.conversion_rate
11053             END
11054           END
11055         END,
11056         CASE xal.currency_code
11057         WHEN l_ledger_attrs.array_ledger_currency_code(i) THEN
11058           xal.entered_cr
11059         ELSE
11060           CASE l_ledger_attrs.array_ledger_type(i)
11061           WHEN 'PRIMARY' THEN
11062             CASE calculate_acctd_amts_flag
11063             WHEN 'Y' THEN
11064               CASE xal.currency_conversion_type
11065               WHEN 'User' THEN
11066                 xal.entered_cr * xal.currency_conversion_rate
11067               ELSE
11068                 xal.entered_cr * ra.conversion_rate
11069               END
11070             ELSE
11071               xal.unrounded_accounted_cr
11072             END
11073           ELSE
11074             CASE xal.currency_conversion_type
11075             WHEN 'User' THEN
11076               xal.entered_cr * xal.currency_conversion_rate * ra.conversion_rate
11077             ELSE
11078               xal.entered_cr * ra.conversion_rate
11079             END
11080           END
11081         END,
11082         CASE xal.currency_code
11083         WHEN l_ledger_attrs.array_ledger_currency_code(i) THEN
11084           null
11085         ELSE
11086           CASE l_ledger_attrs.array_ledger_type(i)
11087           WHEN 'PRIMARY' THEN
11088             CASE calculate_acctd_amts_flag
11089             WHEN 'Y' THEN
11090               CASE xal.currency_conversion_type
11091               WHEN 'User' THEN
11092                 xal.currency_conversion_rate
11093               ELSE
11094                 ra.conversion_rate
11095               END
11096             ELSE
11097               xal.currency_conversion_rate
11098             END
11099           ELSE
11100             CASE xal.currency_conversion_type
11101             WHEN 'User' THEN
11102               xal.currency_conversion_rate * ra.conversion_rate
11103             ELSE
11104               ra.conversion_rate
11105             END
11106           END
11107         END
11108       FROM   gl_daily_rates ra
11109             ,xla_ae_headers_gt xah
11110       WHERE  ra.conversion_date(+)=
11111                  nvl(trunc(xal.currency_conversion_date), trunc(xah.accounting_date))
11112         AND  ra.conversion_type        (+)=
11113                CASE l_ledger_attrs.array_ledger_type(i)
11114                WHEN 'PRIMARY' THEN xal.currency_conversion_type
11115                ELSE
11116                  CASE xal.currency_conversion_type
11117                  WHEN 'User' THEN l_ledger_attrs.array_default_rate_type(i)
11118                  ELSE
11119                    CASE l_ledger_attrs.array_inhert_type_flag(i)
11120                    WHEN 'Y' THEN
11121                      CASE xal.currency_code
11122                      WHEN l_primary_ledger_currency THEN
11123                        l_ledger_attrs.array_default_rate_type(i)
11124                      ELSE xal.currency_conversion_type
11125                      END
11126                    ELSE l_ledger_attrs.array_default_rate_type(i)
11127                    END
11128                  END
11129                END
11130        AND  ra.from_currency (+)= decode(xal.currency_conversion_type, 'User',
11131                           l_primary_ledger_currency, xal.currency_code)
11132        AND    ra.to_currency (+)= l_ledger_attrs.array_ledger_currency_code(i)
11133        AND xal.ae_header_id = xah.ae_header_id
11134        AND xal.ledger_id = xah.ledger_id
11135        AND xal.balance_type_code = xah.balance_type_code
11136        AND xah.balance_type_code <> 'X'
11137           )
11138    WHERE xal.gain_or_loss_flag = 'N'
11139      AND xal.ledger_id = l_ledger_attrs.array_ledger_id(i)
11140      AND xal.balance_type_code <> 'X'
11141      AND xal.reversal_code is null;
11142 */
11143 
11144 
11145   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11146       trace
11147          (p_msg      => 'END of CalculateUnroundedAmounts'
11148          ,p_level    => C_LEVEL_PROCEDURE
11149          ,p_module   => l_log_module);
11150   END IF;
11151 
11152 Exception
11153   When OTHERS THEN
11154     IF (C_LEVEL_UNEXPECTED>= g_log_level) THEN
11155       trace
11156          (p_msg      => 'ERROR HERE:'||sqlerrm
11157          ,p_level    => C_LEVEL_UNEXPECTED
11158          ,p_module   => l_log_module);
11159     END IF;
11160 
11161     raise;
11162 
11163 END CalculateUnroundedAmounts;
11164 
11165 --  bug 8773083  Modified CalculateGainLossAmounts
11166 
11167 PROCEDURE CalculateGainLossAmounts
11168 is
11169 l_log_module         VARCHAR2(240);
11170 l_ledger_attrs       xla_accounting_cache_pkg.t_array_ledger_attrs;
11171 l_ledger_currency    xla_accounting_cache_pkg.t_array_varchar;
11172 --l_primary_ledger_id  NUMBER;
11173 l_temp               number;
11174 
11175 l_array_accounted_amount    t_array_number;
11176 l_array_entered_amount      t_array_number;
11177 l_array_currency_code       t_array_char30;
11178 l_array_balance_type_code   t_array_char1;
11179 l_array_ae_header_id        t_array_number;
11180 l_array_gain_or_loss_ref    t_array_char30;
11181 l_array_ledger_id           t_array_number;
11182 l_array_event_id            t_array_number;
11183 l_array_gain_or_loss_flag   t_array_char1;
11184 l_array_cal_g_l_flag        t_array_char1;
11185 
11186 l_res_array_ledger_id          t_array_number;
11187 l_res_array_ae_header_id       t_array_number;
11188 l_res_array_temp_line_num      t_array_number;
11189 l_res_array_ref_ae_header_id   t_array_number;
11190 l_res_array_header_num         t_array_number;
11191 l_res_array_accounted_amount   t_array_number;
11192 l_res_array_entered_amount     t_array_number;
11193 l_res_array_min_currency_code  t_array_char30;
11194 l_res_array_max_currency_code  t_array_char30;
11195 l_res_array_extract_line_num   t_array_number;
11196 
11197 -- 13717941: Rewritten the below sql logic.
11198 CURSOR csr_gain_loss_amts IS
11199 SELECT
11200   /*+ ordered use_hash(xal2) */
11201   NVL(SUM(xal2.unrounded_accounted_dr), 0) - NVL(SUM(xal2.unrounded_accounted_cr), 0) ,
11202   MIN(xal2.currency_code) ,
11203   MAX(xal2.currency_code) ,
11204   MIN(xal2.extract_line_num) ,
11205   iv.ledger_id ,
11206   iv.ae_header_id ,
11207   balance_type_code ,
11208   gain_or_loss_ref ,
11209   event_id
11210 FROM
11211   (SELECT
11212     /*+ NO_MERGE LEADING(gl) USE_HASH(xal) */
11213     xal.ae_header_id ,
11214     xal.ledger_id
11215   FROM xla_ae_lines_gt xal ,
11216     gl_ledgers gl
11217   WHERE xal.reversal_code   IS NULL
11218   AND xal.balance_type_code <> 'X'
11219   AND xal.ledger_id          = gl.ledger_id
11220   GROUP BY xal.ae_header_id ,
11221     xal.ledger_id
11222   HAVING ( SUM(
11223     CASE
11224       WHEN (xal.currency_code <> 'STAT'
11225       AND xal.currency_code   <> gl.currency_code)
11226       THEN 1
11227       ELSE 0
11228     END) > 0
11229   AND SUM(
11230     CASE
11231       WHEN (NVL(xal.gain_or_loss_flag, 'N') = 'Y'
11232       AND xal.calculate_g_l_amts_flag       = 'Y' )
11233       THEN 1
11234       ELSE 0
11235     END) > 0 )
11236   ) iv,
11237   XLA_AE_LINES_GT xal2
11238 WHERE NVL(xal2.gain_or_loss_flag, 'N')           = 'N'
11239 AND xal2.balance_type_code                      <> 'X'
11240 AND (xal2.reversal_code                         IS NULL
11241 OR xal2.reversal_code                            =C_DUMMY_SAME )
11242 AND xal2.ae_header_id                            = iv.ae_header_id
11243 AND xal2.ledger_id                               = iv.ledger_id
11244 HAVING NVL(SUM(xal2.unrounded_accounted_dr), 0) <> NVL(SUM(xal2.unrounded_accounted_cr), 0)
11245 GROUP BY iv.ledger_id,
11246   iv.ae_header_id,
11247   balance_type_code,
11248   gain_or_loss_ref,
11249   event_id ;
11250 
11251 BEGIN
11252   IF g_log_enabled THEN
11253       l_log_module := C_DEFAULT_MODULE||'.CalculateGainLossAmounts';
11254   END IF;
11255  IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11256       trace
11257          (p_msg      => 'BEGIN of CalculateGainLossAmounts'
11258          ,p_level    => C_LEVEL_PROCEDURE
11259          ,p_module   => l_log_module);
11260   END IF;
11261 
11262 
11263 --redoing code changes to multiple fixes bug 6675871 and
11264 --perf fixes via 6658161,6727907 ,5745199,5394727,6332205
11265 /* final understanding:
11266 Per distribution we'd have a DR row, a CR row and a row which is the gain/loss row (if XLA is asked to cal G/L)
11267 The demarcation is via gain_or_loss_flag. effectively the gain_or_loss_ref is either passed by subledgers or we stamp it to #extract line num,
11268 and we calculate the sum (dr-cr) for rows with GAIN_OR_LOSS_FLAG=N and then update that amount to row with GAIN_OR_LOSS_FLAG=Y
11269 of the same gain_or_loss_ref value (under the same header/ledger..).
11270 this is how we are calculating the gain loss. And we need to do this calculation ONLY when gain_or_loss_flag=Y row exists
11271 code is now similar to 120.175 except the HINTs and CURSOR.
11272 */
11273 OPEN csr_gain_loss_amts;
11274 LOOP
11275     FETCH csr_gain_loss_amts BULK COLLECT INTO  l_res_array_accounted_amount
11276                                              ,l_res_array_min_currency_code
11277                                              ,l_res_array_max_currency_code
11278                                              ,l_res_array_extract_line_num
11279                                              ,l_array_ledger_id
11280                                              ,l_array_ae_header_id
11281                                              ,l_array_balance_type_code
11282                                              ,l_array_gain_or_loss_ref
11283                                              ,l_array_event_id
11284     LIMIT C_BULK_LIMIT;
11285 
11286     IF l_res_array_accounted_amount.COUNT = 0 THEN
11287       IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11288        trace
11289          (p_msg      => 'Count 0 EXIT CalculateGainLossAmounts'
11290          ,p_level    => C_LEVEL_PROCEDURE
11291          ,p_module   => l_log_module);
11292       END IF;
11293       EXIT;
11294     END IF;
11295 
11296  FORALL Idx IN 1 .. l_array_ae_header_id.COUNT
11297       UPDATE /*+ index(xal XLA_AE_LINES_GT_N4)*/  xla_ae_lines_gt xal   --9483834  incorrect alias in the hint.
11298          SET xal.unrounded_accounted_cr =
11299                      CASE sign(l_res_array_accounted_amount(Idx))
11300                      WHEN -1 THEN NULL
11301                      ELSE l_res_array_accounted_amount(Idx)
11302                      END
11303             ,xal.unrounded_entered_cr =
11304                      CASE sign(l_res_array_accounted_amount(Idx))
11305                      WHEN -1 THEN NULL
11306                      ELSE 0
11307                      END
11308             ,xal.unrounded_accounted_dr =
11309                      CASE sign(l_res_array_accounted_amount(Idx))
11310                      WHEN -1 THEN 0-l_res_array_accounted_amount(Idx)
11311                      ELSE NULL
11312                      END
11313             ,xal.unrounded_entered_dr =
11314                      CASE sign(l_res_array_accounted_amount(Idx))
11315                      WHEN -1 THEN 0
11316                      ELSE NULL
11317                      END
11318             ,xal.currency_code =
11319                      DECODE (l_res_array_min_currency_code(Idx),
11320                                xal.currency_code,
11321                                l_res_array_max_currency_code(Idx),
11322                                l_res_array_min_currency_code(Idx))
11323             ,xal.balance_type_code = decode(l_res_array_accounted_amount(Idx), 0, 'X',
11324                                         decode(xal.extract_line_num,
11325                                                l_res_array_extract_line_num(Idx),
11326                                                xal.balance_type_code,
11327                                                'X'))
11328      WHERE nvl(xal.gain_or_loss_flag, 'N') = 'Y'
11329        AND balance_type_code               <> 'X'
11330        AND xal.calculate_g_l_amts_flag     = 'Y'
11331        AND xal.reversal_code               is NULL
11332        AND xal.ae_header_id                = l_array_ae_header_id(Idx)
11333        AND xal.balance_type_code           = l_array_balance_type_code(Idx)
11334        AND xal.gain_or_loss_ref            = l_array_gain_or_loss_ref(Idx)
11335        AND xal.ledger_id                   = l_array_ledger_id(Idx)
11336        AND (xal.currency_code              <> l_res_array_min_currency_code(Idx)
11337             OR xal.currency_code           <> l_res_array_max_currency_code(Idx))
11338       -- this OR condition was added in 120.173
11339        AND xal.event_id                    = l_array_event_id(Idx);
11340 
11341   END LOOP;
11342   CLOSE csr_gain_loss_amts;
11343 
11344   IF (g_num_bflow_prior_entries > 0) THEN
11345     UPDATE /*+ index(xal XLA_AE_LINES_GT_N3)*/ xla_ae_lines_gt xal     --9483834  incorrect alias in the hint.
11346        SET xal.currency_code =
11347             (SELECT /*+ index(xal2 XLA_AE_LINES_GT_N4)*/  max(currency_code)
11348                FROM xla_ae_lines_gt xal2
11349               WHERE xal2.ae_header_id = xal.ae_header_id
11350                 AND xal2.balance_type_code <> 'X'
11351 		AND xal2.currency_code <> 'STAT' -- added for 13018249
11352                 AND xal2.gain_or_loss_ref = xal.gain_or_loss_ref
11353                 AND xal2.ledger_id = xal.ledger_id
11354                 AND xal2.event_id = xal.event_id
11355                 AND nvl(xal2.gain_or_loss_flag, 'N') = 'N'
11356                 AND xal2.reversal_code = C_DUMMY_PRIOR)
11357      WHERE xal.gain_or_loss_flag = 'Y'
11358        AND balance_type_code <> 'X'
11359        AND xal.calculate_g_l_amts_flag = 'Y'
11360        AND xal.currency_code <> 'STAT' -- added for 13018249
11361        AND xal.reversal_code  is NULL
11362        and (xal.ae_header_id, balance_type_code, gain_or_loss_ref, ledger_id, event_id)
11363            in
11364            (select /*+ index(xal3 XLA_AE_LINES_GT_N4)*/ ae_header_id, balance_type_code, gain_or_loss_ref, ledger_id, event_id
11365 	   --9483834  incorrect alias in the hint.
11366               from xla_ae_lines_gt xal3
11367               where xal3.ae_header_id = xal.ae_header_id
11368                 AND xal3.balance_type_code <> 'X'
11369 		AND xal3.currency_code <> 'STAT' -- added for 13018249
11370                 AND xal3.gain_or_loss_ref = xal.gain_or_loss_ref
11371                 AND xal3.ledger_id = xal.ledger_id
11372                 AND xal3.event_id = xal.event_id
11373                 AND nvl(xal3.gain_or_loss_flag, 'N') = 'N'
11374                 and xal3.reversal_code = C_DUMMY_PRIOR);
11375   END IF;
11376 
11377 
11378   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11379       trace
11380          (p_msg      => 'END of CalculateGainLossAmounts'
11381          ,p_level    => C_LEVEL_PROCEDURE
11382          ,p_module   => l_log_module);
11383   END IF;
11384 Exception
11385   When OTHERS THEN
11386     raise;
11387 
11388 END CalculateGainLossAmounts;
11389 
11390 
11391 
11392 
11393 /*======================================================================+
11394 |                                                                       |
11395 | Public Procedure- Business Flow Validaton - 4219869                   |
11396 |                                                                       |
11397 |                                                                       |
11398 +======================================================================*/
11399 PROCEDURE Business_Flow_Validation
11400        (p_business_method_code         IN VARCHAR2
11401        ,p_business_class_code          IN VARCHAR2
11402        ,p_inherit_description_flag     IN VARCHAR2) IS
11403 
11404    l_log_module         VARCHAR2(240);
11405    l_ledger_ccy         VARCHAR2(30);
11406 BEGIN
11407    IF g_log_enabled THEN
11408       l_log_module := C_DEFAULT_MODULE||'.Business_Flow_Validation';
11409    END IF;
11410 --
11411    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11412       trace
11413            (p_msg      => 'BEGIN of Business_Flow_Validation'
11414            ,p_level    => C_LEVEL_PROCEDURE
11415            ,p_module   => l_log_module);
11416    END IF;
11417 
11418    g_rec_lines.array_business_method_code(g_LineNumber) := p_business_method_code;
11419  --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
11420    g_rec_lines.array_inherit_desc_flag(g_LineNumber)    := p_inherit_description_flag;
11421 
11422    IF p_inherit_description_flag = 'Y' THEN
11423       g_rec_lines.array_description(g_LineNumber) := NULL;
11424    END IF;
11425 
11426    IF p_business_method_code = C_METHOD_PRIOR THEN
11427 
11428       ------------------------------------------------
11429       -- Validate the applied-to accounting attributes
11430       ------------------------------------------------
11431       ValidateBFlowLinks;
11432 
11433       -------------------------------------------------
11434       -- Reset values for certain fields in g_rec_lines
11435       -------------------------------------------------
11436       /* 4482069  This will be set in xla_cmp_acct_line_type_pkg.GetAccountingSources
11437       l_ledger_ccy := xla_accounting_cache_pkg.GetValueChar(
11438                            p_source_code =>       'XLA_CURRENCY_CODE'
11439                           ,p_target_ledger_id=>   g_rec_lines.array_ledger_id(g_LineNumber));
11440       g_rec_lines.array_currency_code(g_LineNumber)         := l_ledger_ccy;
11441       */
11442 
11443       --g_rec_lines.array_currency_mau(g_LineNumber)          := xla_accounting_cache_pkg.GetCurrencyMau(l_ledger_ccy);
11444       g_rec_lines.array_curr_conversion_date(g_LineNumber)  := NULL;
11445       g_rec_lines.array_curr_conversion_rate(g_LineNumber)  := NULL;
11446       g_rec_lines.array_curr_conversion_type(g_LineNumber)  := NULL;
11447       g_rec_lines.array_party_type_code(g_LineNumber)       := NULL;
11448       g_rec_lines.array_party_id(g_LineNumber)              := NULL;
11449       g_rec_lines.array_party_site_id(g_LineNumber)         := NULL;
11450       g_rec_lines.array_encumbrance_type_id(g_LineNumber)   := NULL;
11451 
11452       ----------------------------------
11453       -- Set reversal code to DUMMY_BFPE
11454       ----------------------------------
11455       g_rec_lines.array_reversal_code(g_LineNumber) := C_DUMMY_PRIOR;
11456 
11457       ------------------------------------------------------
11458       -- Increment number of business flow prior entry lines
11459       ------------------------------------------------------
11460       g_num_bflow_prior_entries := g_num_bflow_prior_entries + 1;
11461 
11462    ELSIF p_business_method_code = C_METHOD_SAME THEN
11463 
11464       ----------------------------------
11465       -- Set reversal code to DUMMY_BFSE
11466       ----------------------------------
11467       g_rec_lines.array_reversal_code(g_LineNumber) := C_DUMMY_SAME;
11468 
11469       -----------------------------------------------------
11470       -- Increment number of business flow same entry lines
11471       -----------------------------------------------------
11472       g_num_bflow_same_entries := g_num_bflow_same_entries + 1;
11473 
11474    END IF;
11475 
11476 
11477    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11478       trace
11479            (p_msg      => 'END of Business_Flow_Validation'
11480            ,p_level    => C_LEVEL_PROCEDURE
11481            ,p_module   => l_log_module);
11482    END IF;
11483 
11484 EXCEPTION
11485 --
11486 WHEN xla_exceptions_pkg.application_exception THEN
11487    RAISE;
11488 WHEN OTHERS  THEN
11489    xla_exceptions_pkg.raise_message
11490                (p_location => 'xla_ae_lines_pkg.Business_Flow_Validation');
11491   --
11492 END Business_Flow_Validation;
11493 
11494 
11495 /*======================================================================+
11496 |                                                                       |
11497 | Public Procedure- Business Flow Prior Entry - 4219869                 |
11498 |                                                                       |
11499 |                                                                       |
11500 +======================================================================*/
11501 PROCEDURE BusinessFlowPriorEntries
11502 (p_accounting_mode      IN VARCHAR2
11503 ,p_ledger_id            IN NUMBER
11504 ,p_bc_mode              IN VARCHAR2)
11505 IS
11506 
11507    --------------------------------------------------------------------------------
11508    --  5357406 - prior entry performance fix
11509    l_array_row_id                            XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11510    l_array_ccid                              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11511    l_array_description                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_V4000L;
11512    l_array_currency_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V15L;
11513    l_array_curr_conversion_rate              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11514    l_array_curr_conversion_type              XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11515    l_array_curr_conversion_date              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
11516    l_array_currency_mau                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11517    l_array_unrounded_entered_cr              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11518    l_array_unrounded_entered_dr              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11519    l_array_party_type_code                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_V1L;
11520    l_array_party_id                          XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11521    l_array_party_site_id                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11522    l_array_encumbrance_type_id               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Int;
11523    l_array_ccid_status_code                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11524    l_array_ref_event_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11525    l_array_temp_ref_ae_header_id             XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11526    l_array_ref_ae_line_num                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11527    l_array_ref_temp_line_num                 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11528    l_array_bflow_pe_status_code              XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11529    l_array_pe_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11530    l_array_pe_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11531 
11532 
11533    CURSOR c_bflow_ae_lines IS
11534    SELECT gt.ROW_ID
11535                ,gt.code_combination_id
11536                ,gt.description
11537                ,gt.currency_code
11538                ,gt.currency_conversion_rate
11539                ,gt.currency_conversion_type
11540                ,gt.currency_conversion_date
11541                ,gt.entered_currency_mau
11542                ,gt.unrounded_entered_cr
11543                ,gt.unrounded_entered_dr
11544                ,gt.party_type_code
11545                ,gt.party_id
11546                ,gt.party_site_id
11547                ,gt.encumbrance_type_id
11548                ,gt.code_combination_status_code
11549                ,gt.ref_event_id
11550                ,gt.temp_ref_ae_header_id
11551                ,gt.ref_ae_line_num
11552                ,gt.ref_temp_line_num
11553                ,gt.bflow_prior_entry_status_code
11554                ,gt.applied_to_entity_id
11555 			   	--Added for 9352035
11556 			   ,gt.DERIVED_EXCH_RATE
11557    FROM (SELECT /*+Leading(xalg xte) use_nl(xalg xte xah xal xdl) */
11558    --         Bug 8250875 changed hint to xah xal and xdl
11559    --         Bug 12689818 changed leading hint to xalg xte
11560                xalg.ROWID                                                                       ROW_ID
11561 		 --Added for bug 12379106
11562                , RANK() OVER ( PARTITION BY xalg.ROWID
11563                                ORDER BY xe.event_number desc, xdl.ae_header_id desc, xdl.ae_line_num ASC  )             line_rank
11564                ,(NVL(xal.merge_code_combination_id,xal.code_combination_id))                    code_combination_id
11565                ,(DECODE(xalg.inherit_desc_flag, 'Y', xal.description, xalg.description))         description
11566                ,(xal.currency_code)                                                              currency_code
11567                ,(DECODE(xal.currency_code
11568                       ,xla_accounting_cache_pkg.GetValueChar('XLA_CURRENCY_CODE',xalg.ledger_id)
11569                       ,NULL
11570                       ,xal.currency_conversion_rate))                                            currency_conversion_rate
11571                ,(DECODE(xal.currency_code
11572                       ,xla_accounting_cache_pkg.GetValueChar('XLA_CURRENCY_CODE',xalg.ledger_id)
11573                       ,NULL
11574                       ,xal.currency_conversion_type))                                            currency_conversion_type
11575                ,(DECODE(xal.currency_code
11576                       ,xla_accounting_cache_pkg.GetValueChar('XLA_CURRENCY_CODE',xalg.ledger_id)
11577                       ,NULL
11578                       ,xal.currency_conversion_date))                                            currency_conversion_date
11579                ,(xla_accounting_cache_pkg.GetCurrencyMau(xal.currency_code))                     entered_currency_mau
11580                ,(DECODE(xdl.calculate_acctd_amts_flag
11581                       ,'N', DECODE(xalg.currency_code
11582                                  ,xla_accounting_cache_pkg.GetValueChar('XLA_CURRENCY_CODE',xalg.ledger_id)
11583                                  ,NVL(xalg.unrounded_accounted_cr,xalg.unrounded_entered_cr)
11584                                  ,xalg.unrounded_entered_cr)
11585                      ,xalg.unrounded_entered_cr)  )                                               unrounded_entered_cr
11586                ,(DECODE(xdl.calculate_acctd_amts_flag
11587                      ,'N', DECODE(xalg.currency_code
11588                                  ,xla_accounting_cache_pkg.GetValueChar('XLA_CURRENCY_CODE',xalg.ledger_id)
11589                                  ,NVL(xalg.unrounded_accounted_dr,xalg.unrounded_entered_dr)
11590                                  ,xalg.unrounded_entered_dr)
11591                      ,xalg.unrounded_entered_dr))                                               unrounded_entered_dr
11592                ,(xal.party_type_code)                                                          party_type_code
11593                ,(NVL(xal.merge_party_id,xal.party_id))                                        party_id
11594                ,(NVL(xal.merge_party_site_id,xal.party_site_id))                              party_site_id
11595                ,(xal.encumbrance_type_id)                                                      encumbrance_type_id
11596                ,C_CREATED                                                                       code_combination_status_code
11597                ,(xdl.event_id)                                                                 ref_event_id
11598                ,(xdl.ae_header_id)                                                             temp_ref_ae_header_id
11599                ,(xal.ae_line_num)                                                              ref_ae_line_num
11600                ,(xdl.temp_line_num)                                                            ref_temp_line_num
11601                ,(DECODE(xalg.currency_code,xal.currency_code,xah.accounting_entry_status_code,
11602                         DECODE(xalg.bflow_applied_to_amount, NULL, 'X', xah.accounting_entry_status_code))) bflow_prior_entry_status_code
11603                ,(xah.entity_id)                                                                applied_to_entity_id
11604 			   --Added for 9352035
11605 			   ,(DECODE(xal.currency_code
11606                       ,xla_accounting_cache_pkg.GetValueChar('XLA_CURRENCY_CODE',xalg.ledger_id)
11607                       ,NULL
11608                       ,DECODE (xdl.unrounded_accounted_dr,NULL
11609                                 ,CASE WHEN nvl(xdl.unrounded_entered_cr,0) <> 0
11610                                       THEN
11611                                            (xdl.unrounded_accounted_cr/xdl.unrounded_entered_cr)
11612                                       ELSE xal.currency_conversion_rate END
11613                                 ,CASE WHEN nvl(xdl.unrounded_entered_dr,0) <> 0
11614                                       THEN
11615                                            (xdl.unrounded_accounted_dr/xdl.unrounded_entered_dr)
11616                                       ELSE xal.currency_conversion_rate END
11617 								)
11618 						)
11619 				) DERIVED_EXCH_RATE
11620            FROM   xla_ae_lines_gt          xalg
11621                  ,xla_transaction_entities xte
11622                  ,xla_ae_headers    xah
11623                  ,xla_distribution_links   xdl
11624                  ,xla_ae_lines      xal
11625 		 --Added for bug 12379106
11626 		 ,xla_events xe
11627 --               ,xla_ledger_relationships_v  xlr
11628 --               ,xla_gl_ledgers_v            xgl
11629 --               ,xla_ledger_options          xlo
11630            WHERE  xah.application_id               = xdl.application_id
11631            AND    xah.ae_header_id                 = xdl.ae_header_id
11632 	   --         Bug 8250875 join headers to lines also
11633 	   AND    xah.application_id               = xal.application_id
11634            AND    xah.ae_header_id                 = xal.ae_header_id
11635            AND    xal.application_id               = xdl.application_id
11636            AND    xal.ae_header_id                 = xdl.ae_header_id
11637            AND    xal.ae_line_num                  = xdl.ae_line_num
11638            AND    xal.business_class_code          = xalg.business_class_code
11639            AND    xdl.source_distribution_type     = xalg.bflow_distribution_type
11640            AND    xdl.source_distribution_id_num_1   = NVL(xalg.bflow_dist_id_num_1,-99)
11641            AND    NVL(xdl.source_distribution_id_num_2,-99)   = NVL(xalg.bflow_dist_id_num_2,-99)
11642            AND    NVL(xdl.source_distribution_id_num_3,-99)   = NVL(xalg.bflow_dist_id_num_3,-99)
11643            AND    NVL(xdl.source_distribution_id_num_4,-99)   = NVL(xalg.bflow_dist_id_num_4,-99)
11644            AND    NVL(xdl.source_distribution_id_num_5,-99)   = NVL(xalg.bflow_dist_id_num_5,-99)
11645            AND    NVL(xdl.source_distribution_id_char_1,' ') = NVL(xalg.bflow_dist_id_char_1,' ')
11646            AND    NVL(xdl.source_distribution_id_char_2,' ') = NVL(xalg.bflow_dist_id_char_2,' ')
11647            AND    NVL(xdl.source_distribution_id_char_3,' ') = NVL(xalg.bflow_dist_id_char_3,' ')
11648            AND    NVL(xdl.source_distribution_id_char_4,' ') = NVL(xalg.bflow_dist_id_char_4,' ')
11649            AND    NVL(xdl.source_distribution_id_char_5,' ') = NVL(xalg.bflow_dist_id_char_5,' ')
11650            AND    xah.parent_ae_header_id IS NULL
11651 	   --Added for bug 12379106
11652 	   AND    xe.application_id = xah.application_id
11653 	   AND    xe.event_id       = xah.event_id
11654            --
11655            -- exclude reversed entries
11656            -- When running in BC mode, draft reversal entries are not considered
11657        -- ignore exclude reversal for AP.6647974/6614418
11658            AND NOT EXISTS (SELECT /*+ no_unnest */  1
11659                              FROM xla_distribution_links xdl4
11660                                 , xla_ae_headers xah4
11661                             WHERE xdl4.ref_ae_header_id = xdl.ae_header_id
11662                               AND xdl4.application_id   = xdl.application_id
11663                               AND xdl4.temp_line_num    = xdl.temp_line_num * -1
11664                               AND xah4.application_id   = xdl4.application_id
11665                               AND xah4.ae_header_id     = xdl4.ae_header_id
11666                   AND xah4.application_id <> 200
11667                   AND xdl4.application_id <> 200
11668                               AND (xah4.accounting_entry_status_code = 'F' OR
11669                                    (xah4.accounting_entry_status_code = 'D' AND
11670                                     p_accounting_mode = 'D' AND
11671                                     p_bc_mode = 'NONE')))
11672            AND    xdl.application_id       = xalg.bflow_application_id
11673            --
11674 --         AND    xgl.ledger_id          = xalg.ledger_id
11675 --         AND    xlr.ledger_id          = xgl.ledger_id
11676            AND    xte.application_id     = xalg.bflow_application_id
11677            AND    xte.entity_code        = xalg.bflow_entity_code
11678            AND    xte.ledger_id          = p_ledger_id
11679 --         AND    xte.ledger_id          = DECODE(xla_accounting_cache_pkg.GetValueChar('VALUATION_METHOD_FLAG'),
11680 --                                                        'N', xlr.primary_ledger_id,
11681 --                                                        DECODE(xlr.ledger_category_code
11682 --                                                              ,'ALC', xlr.primary_ledger_id
11683 --                                                              ,DECODE(NVL(xlo.capture_event_flag,'N'),'N',xlr.primary_ledger_id
11684 --                                                              ,xlr.ledger_id)))  -- 5204178 requires secondary ledger event
11685 --         AND    xlo.ledger_id (+)      = xgl.ledger_id
11686 --         AND    xlo.application_id (+) = g_application_id
11687            --
11688            AND    NVL(xte.source_id_int_1,-99)   = NVL(xalg.bflow_source_id_num_1,-99)
11689            AND    NVL(xte.source_id_int_2,-99)   = NVL(xalg.bflow_source_id_num_2,-99)
11690            AND    NVL(xte.source_id_int_3,-99)   = NVL(xalg.bflow_source_id_num_3,-99)
11691            AND    NVL(xte.source_id_int_4,-99)   = NVL(xalg.bflow_source_id_num_4,-99)
11692            AND    NVL(xte.source_id_char_1,' ') = NVL(xalg.bflow_source_id_char_1,' ')
11693            AND    NVL(xte.source_id_char_2,' ') = NVL(xalg.bflow_source_id_char_2,' ')
11694            AND    NVL(xte.source_id_char_3,' ') = NVL(xalg.bflow_source_id_char_3,' ')
11695            AND    NVL(xte.source_id_char_4,' ') = NVL(xalg.bflow_source_id_char_4,' ')
11696            --
11697            AND    xah.application_id              = xte.application_id
11698            AND    xah.ledger_id                   = xalg.ledger_id
11699            AND    xah.entity_id                   = xte.entity_id
11700            AND    xah.balance_type_code           = xalg.balance_type_code
11701            --
11702            AND    xdl.event_id                    = xah.event_id
11703            --
11704            AND    xah.accounting_entry_status_code  IN ('F', DECODE(p_bc_mode,'NONE',p_accounting_mode,'F'))
11705            AND    xalg.reversal_code = C_DUMMY_PRIOR
11706           ) gt
11707    WHERE   gt.line_rank = 1;
11708    --------------------------------------------------------------------------------
11709 
11710    CURSOR c_bflow_valid_lines IS
11711    SELECT ae_header_id,
11712           event_id,
11713           ledger_id,
11714           balance_type_code,
11715           temp_line_num
11716      FROM xla_ae_lines_gt
11717     WHERE reversal_code = C_DUMMY_PRIOR
11718       AND bflow_prior_entry_status_code IS NOT NULL AND bflow_prior_entry_status_code <> 'X';  -- 5132302  if applied to amt is null
11719       --AND (bflow_prior_entry_status_code IN ('F', DECODE(p_accounting_mode, 'D', 'D', 'F')));
11720 
11721    l_array_line_num                       xla_cmp_source_pkg.t_array_Num;
11722 
11723 
11724    CURSOR c_bflow_err_lines IS
11725    SELECT /*+ index(xte xla_transaction_entities_n1) */ xal.ae_header_id
11726          ,xal.temp_line_num
11727          ,xal.event_id
11728          ,xal.ledger_id
11729          ,xal.bflow_prior_entry_status_code
11730          ,xal.balance_type_code
11731          ,xal.entity_id
11732          ,fav.application_name
11733 	 ,fav.application_id -- 11776012
11734          ,'N'
11735          ,gl.ledger_category_code
11736          ,glp.start_date
11737          ,xte.entity_id xte_entity_id
11738          ,xte.entity_code
11739      FROM xla_ae_lines_gt xal
11740          ,fnd_application_vl fav
11741          ,gl_ledgers gl
11742          ,gl_period_statuses glp
11743          ,xla_transaction_entities_upg xte
11744     WHERE ((reversal_code = C_DUMMY_PRIOR
11745             AND NVL(bflow_prior_entry_status_code,'X') = 'X')  -- 5132302
11746            OR   reversal_code = C_MPA_PRIOR_ENTRY)      -- 4655713b
11747       AND fav.application_id(+)  = xal.bflow_application_id
11748       AND xal.ledger_id      = gl.ledger_id
11749       AND glp.period_name    = gl.first_ledger_period_name
11750       AND glp.ledger_id      = gl.ledger_id
11751       AND glp.application_id = 101
11752       AND NVL(xte.source_id_int_1(+),-99)   = NVL(xal.bflow_source_id_num_1,-99)
11753       AND NVL(xte.source_id_int_2(+),-99)   = NVL(xal.bflow_source_id_num_2,-99)
11754       AND NVL(xte.source_id_int_3(+),-99)   = NVL(xal.bflow_source_id_num_3,-99)
11755       AND NVL(xte.source_id_int_4(+),-99)   = NVL(xal.bflow_source_id_num_4,-99)
11756       AND NVL(xte.source_id_char_1(+),' ')  = NVL(xal.bflow_source_id_char_1,' ')
11757       AND NVL(xte.source_id_char_2(+),' ')  = NVL(xal.bflow_source_id_char_2,' ')
11758       AND NVL(xte.source_id_char_3(+),' ')  = NVL(xal.bflow_source_id_char_3,' ')
11759       AND NVL(xte.source_id_char_4(+),' ')  = NVL(xal.bflow_source_id_char_4,' ')
11760       AND xte.ledger_id (+)     = p_ledger_id
11761       AND xte.application_id (+)= xal.bflow_application_id
11762       AND xte.entity_code (+)   = xal.bflow_entity_code;
11763 
11764    l_log_module         VARCHAR2(240);
11765    l_array_ae_header_id                   xla_cmp_source_pkg.t_array_Num;
11766    l_array_event_id                       xla_cmp_source_pkg.t_array_Num;
11767    l_array_ledger_id                      xla_cmp_source_pkg.t_array_Num;
11768    l_array_bflow_prior_status             xla_cmp_source_pkg.t_array_VL30;
11769    l_array_balance_type_code              xla_cmp_source_pkg.t_array_VL30;
11770    l_array_entity_id                      xla_cmp_source_pkg.t_array_Num;
11771    l_array_app_name                       xla_cmp_source_pkg.t_array_VL240;
11772    l_array_app_id                         xla_cmp_source_pkg.t_array_Num; -- 11776012
11773    l_array_hist_bflow_err                 xla_cmp_source_pkg.t_array_Num;
11774 
11775 -- 4655713b MPA and Accrual Reversal
11776 l_array_mpa_segment1                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11777 l_array_mpa_segment2                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11778 l_array_mpa_segment3                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11779 l_array_mpa_segment4                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11780 l_array_mpa_segment5                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11781 l_array_mpa_segment6                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11782 l_array_mpa_segment7                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11783 l_array_mpa_segment8                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11784 l_array_mpa_segment9                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11785 l_array_mpa_segment10                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11786 l_array_mpa_segment11                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11787 l_array_mpa_segment12                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11788 l_array_mpa_segment13                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11789 l_array_mpa_segment14                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11790 l_array_mpa_segment15                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11791 l_array_mpa_segment16                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11792 l_array_mpa_segment17                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11793 l_array_mpa_segment18                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11794 l_array_mpa_segment19                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11795 l_array_mpa_segment20                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11796 l_array_mpa_segment21                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11797 l_array_mpa_segment22                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11798 l_array_mpa_segment23                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11799 l_array_mpa_segment24                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11800 l_array_mpa_segment25                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11801 l_array_mpa_segment26                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11802 l_array_mpa_segment27                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11803 l_array_mpa_segment28                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11804 l_array_mpa_segment29                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11805 l_array_mpa_segment30                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11806 l_array_mpa_ccid                         XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11807 l_array_mpa_ccid_status_code             XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11808 l_array_mpa_description                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_V4000L;
11809 l_array_mpa_currency_code                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V15L;
11810 l_array_mpa_currency_code_pe             XLA_AE_JOURNAL_ENTRY_PKG.t_array_V15L;  -- 5132302
11811 l_array_mpa_curr_conv_rate               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11812 l_array_mpa_curr_conv_type               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11813 l_array_mpa_curr_conv_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
11814 l_array_mpa_currency_mau                 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11815 l_array_mpa_party_type_code              XLA_AE_JOURNAL_ENTRY_PKG.t_array_V1L;
11816 l_array_mpa_party_id                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11817 l_array_mpa_party_site_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11818 l_array_mpa_encum_type_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Int;
11819 l_array_mpa_acct_cr_ratio                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11820 l_array_mpa_acct_dr_ratio                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11821 l_array_mpa_ledger_id                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
11822 l_array_mpa_ref_ae_header_id             XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
11823 l_array_mpa_temp_line_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
11824 l_array_mpa_ae_header_id                 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
11825 l_array_mpa_header_num                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
11826 l_array_acc_rev_flag                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V1L;  -- join conditions
11827 --Added for 9352035
11828 l_DERIVED_EXCH_RATE						 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11829 
11830 -- Historic upgrade
11831 l_array_ledger_category                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11832 l_array_period_start_date                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
11833 l_array_bflow_historic                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11834 l_primary_start_date                     DATE;
11835 l_hist_count                             NUMBER :=0;
11836 
11837 BEGIN
11838    IF g_log_enabled THEN
11839       l_log_module := C_DEFAULT_MODULE||'.BusinessFlowPriorEntries';
11840    END IF;
11841 --
11842    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11843       trace
11844            (p_msg      => 'BEGIN of BusinessFlowPriorEntries'
11845            ,p_level    => C_LEVEL_PROCEDURE
11846            ,p_module   => l_log_module);
11847       trace
11848            (p_msg      => 'p_accounting_mode = '||p_accounting_mode
11849            ,p_level    => C_LEVEL_PROCEDURE
11850            ,p_module   => l_log_module);
11851       trace
11852            (p_msg      => 'p_bc_mode = '||p_bc_mode
11853            ,p_level    => C_LEVEL_PROCEDURE
11854            ,p_module   => l_log_module);
11855       trace
11856            (p_msg      => 'method = '||xla_accounting_cache_pkg.GetValueChar('VALUATION_METHOD_FLAG')
11857            ,p_level    => C_LEVEL_PROCEDURE
11858            ,p_module   => l_log_module);
11859       trace
11860            (p_msg      => 'g_mpa_accrual_exists = '||xla_accounting_pkg.g_mpa_accrual_exists
11861            ,p_level    => C_LEVEL_PROCEDURE
11862            ,p_module   => l_log_module);
11863    END IF;
11864 
11865    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11866        trace
11867            (p_msg      => 'g_num_bflow_prior_entries = '||g_num_bflow_prior_entries
11868             ,p_level    => C_LEVEL_STATEMENT
11869             ,p_module   => l_log_module);
11870    END IF;
11871 
11872 
11873    IF (g_num_bflow_prior_entries > 0) THEN
11874 
11875      --
11876      -- Update DUMMY_BFPE rows based on upstream journal lines in XLA_AE_LINES
11877      --
11878 
11879      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11880 
11881        FOR c IN c_bflow_ae_lines LOOP
11882             trace
11883                (p_msg      => 'ae_header='||c.temp_ref_ae_header_id||
11884                               ' ae_line='||c.ref_ae_line_num
11885                ,p_level    => C_LEVEL_EVENT
11886                ,p_module   => l_log_module);
11887        END LOOP;
11888 
11889        FOR l IN (SELECT * FROM xla_ae_lines_gt WHERE reversal_code = C_DUMMY_PRIOR) LOOP
11890          trace(p_msg      => 'event_id='||l.event_id||
11891                              ' ae_header_id='||l.ae_header_id
11892               ,p_level    => C_LEVEL_STATEMENT
11893               ,p_module   => l_log_module);
11894          trace(p_msg    => ' business_class_code='||l.business_class_code||
11895                            ' bflow_application_id='||l.bflow_application_id||
11896                            ' ledger_id='||l.ledger_id||
11897                            ' bflow_entity_code='||l.bflow_entity_code||
11898                            ' balance_type_code='||l.balance_type_code||
11899                            ' bflow_applied_to_amt='||l.bflow_applied_to_amount||  -- 5132302
11900                            ' currency_code='||l.currency_code||                   -- 5132302
11901                            ' source_distribution_type='||l.source_distribution_type||
11902                            ' bflow_distribution_type='||l.bflow_distribution_type
11903               ,p_level  => C_LEVEL_STATEMENT
11904               ,p_module => l_log_module);
11905          trace (p_msg   => ' bflow_dist_id_num_1='||l.bflow_dist_id_num_1||
11906                            ' bflow_dist_id_num_2='||l.bflow_dist_id_num_2||
11907                            ' bflow_dist_id_num_3='||l.bflow_dist_id_num_3||
11908                            ' bflow_dist_id_num_4='||l.bflow_dist_id_num_4||
11909                            ' bflow_dist_id_num_5='||l.bflow_dist_id_num_5||
11910                            ' bflow_dist_id_char_1='||l.bflow_dist_id_char_1||
11911                            ' bflow_dist_id_char_2='||l.bflow_dist_id_char_2||
11912                            ' bflow_dist_id_char_3='||l.bflow_dist_id_char_3||
11913                            ' bflow_dist_id_char_4='||l.bflow_dist_id_char_4||
11914                            ' bflow_dist_id_char_5='||l.bflow_dist_id_char_5||
11915                ' override_acctd_amt_flag='||l.override_acctd_amt_flag
11916               ,p_level  => C_LEVEL_STATEMENT
11917               ,p_module => l_log_module);
11918          trace
11919            (p_msg       => ' bflow_source_id_num_1='||l.bflow_source_id_num_1||
11920                            ' bflow_source_id_num_2='||l.bflow_source_id_num_2||
11921                            ' bflow_source_id_num_3='||l.bflow_source_id_num_3||
11922                            ' bflow_source_id_num_4='||l.bflow_source_id_num_4||
11923                            ' bflow_source_id_char_1='||l.bflow_source_id_char_1||
11924                            ' bflow_source_id_char_2='||l.bflow_source_id_char_2||
11925                            ' bflow_source_id_char_3='||l.bflow_source_id_char_3||
11926                            ' bflow_source_id_char_4='||l.bflow_source_id_char_4
11927               ,p_level  => C_LEVEL_STATEMENT
11928               ,p_module => l_log_module);
11929        END LOOP;
11930      END IF;
11931 
11932      ----------------------------------------------------------------
11933      --  5357406 - prior entry performance fix
11934      OPEN c_bflow_ae_lines;
11935 
11936      LOOP FETCH c_bflow_ae_lines BULK COLLECT INTO
11937         l_array_row_id
11938        ,l_array_ccid
11939        ,l_array_description
11940        ,l_array_currency_code
11941        ,l_array_curr_conversion_rate
11942        ,l_array_curr_conversion_type
11943        ,l_array_curr_conversion_date
11944        ,l_array_currency_mau
11945        ,l_array_unrounded_entered_cr
11946        ,l_array_unrounded_entered_dr
11947        ,l_array_party_type_code
11948        ,l_array_party_id
11949        ,l_array_party_site_id
11950        ,l_array_encumbrance_type_id
11951        ,l_array_ccid_status_code
11952        ,l_array_ref_event_id
11953        ,l_array_temp_ref_ae_header_id
11954        ,l_array_ref_ae_line_num
11955        ,l_array_ref_temp_line_num
11956        ,l_array_bflow_pe_status_code
11957        ,l_array_pe_entity_id
11958 	   ,l_DERIVED_EXCH_RATE --Added for 9352035
11959      LIMIT C_BULK_LIMIT;
11960 
11961      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11962         trace
11963            (p_module => l_log_module
11964            ,p_msg => 'Count of prior entry =' || l_array_row_id.COUNT
11965            ,p_level => C_LEVEL_STATEMENT
11966            );
11967      END IF;
11968 
11969      IF l_array_row_id.COUNT = 0 THEN
11970           EXIT;
11971      END IF;
11972 
11973      FORALL i IN 1..l_array_row_id.LAST
11974           UPDATE xla_ae_lines_gt
11975           SET  code_combination_id = l_array_ccid (i)
11976               ,description         = l_array_description (i)
11977               ,temp_currency_code  = l_array_currency_code (i)     -- upstream currency code
11978               ,currency_conversion_rate = l_array_curr_conversion_rate (i)
11979               ,currency_conversion_type = l_array_curr_conversion_type (i)
11980               ,currency_conversion_date = TRUNC(l_array_curr_conversion_date (i))
11981               ,entered_currency_mau     = l_array_currency_mau (i)
11982               ,unrounded_entered_cr     = l_array_unrounded_entered_cr (i)
11983               ,unrounded_entered_dr     = l_array_unrounded_entered_dr (i)
11984               ,party_type_code          = l_array_party_type_code (i)
11985               ,party_id                 = l_array_party_id (i)
11986               ,party_site_id            = l_array_party_site_id (i)
11987               ,encumbrance_type_id      = l_array_encumbrance_type_id (i)
11988               ,code_combination_status_code = l_array_ccid_status_code (i)
11989               ,ref_event_id             = l_array_ref_event_id (i)
11990               ,temp_ref_ae_header_id    = l_array_temp_ref_ae_header_id (i)
11991               ,ref_ae_line_num          = l_array_ref_ae_line_num (i)
11992               ,ref_temp_line_num        = l_array_ref_temp_line_num (i)
11993               ,bflow_prior_entry_status_code = l_array_bflow_pe_status_code (i)
11994               ,applied_to_entity_id     = l_array_pe_entity_id (i)
11995 			  ,DERIVED_EXCH_RATE      = l_DERIVED_EXCH_RATE(i) --Added for 9352035
11996           WHERE rowid = l_array_row_id (i);
11997      END LOOP;
11998      CLOSE c_bflow_ae_lines;
11999      ----------------------------------------------------------------
12000 
12001      ----------------------------------------------------------------
12002      /*  performance bug 5357406
12003      UPDATE xla_ae_lines_gt xalg
12004       SET (code_combination_id
12005           ,description
12006           ,temp_currency_code       -- upstream currency code
12007           ,currency_conversion_rate
12008           ,currency_conversion_type
12009           ,currency_conversion_date
12010           ,entered_currency_mau      -- 4482069
12011           ,unrounded_entered_cr      -- 4482069
12012           ,unrounded_entered_dr      -- 4482069
12013           ,party_type_code
12014           ,party_id
12015           ,party_site_id
12016           ,encumbrance_type_id
12017           ,code_combination_status_code
12018           ,ref_event_id
12019           ,temp_ref_ae_header_id
12020           ,ref_ae_line_num
12021           ,ref_temp_line_num
12022           ,bflow_prior_entry_status_code
12023           ,applied_to_entity_id
12024          ) =
12025         (SELECT MIN(NVL(xal3.merge_code_combination_id,xal3.code_combination_id))     -- 4967526
12026                ,MIN(DECODE(xalg.inherit_desc_flag, 'Y', xal3.description, xalg.description))
12027                ,MIN(xal3.currency_code)
12028                ,MIN(DECODE(xal3.currency_code
12029                       ,xla_accounting_cache_pkg.GetValueChar('XLA_CURRENCY_CODE',xalg.ledger_id)
12030                       ,NULL
12031                       ,xal3.currency_conversion_rate))
12032                ,MIN(DECODE(xal3.currency_code
12033                       ,xla_accounting_cache_pkg.GetValueChar('XLA_CURRENCY_CODE',xalg.ledger_id)
12034                       ,NULL
12035                       ,xal3.currency_conversion_type))
12036                ,MIN(DECODE(xal3.currency_code
12037                       ,xla_accounting_cache_pkg.GetValueChar('XLA_CURRENCY_CODE',xalg.ledger_id)
12038                       ,NULL
12039                       ,xal3.currency_conversion_date))
12040                ---------------------------------------------------------------------------
12041                -- 4482069 error XLA_AP_INVALID_AMT_BASE
12042                -- Occurs when upstream is invalid so c_bflow_valid_lines
12043                -- is not found hence entered amounts will not calc.
12044                -- Upstream invalid need not prevent this value to be assigned.
12045                ---------------------------------------------------------------------------
12046                ,MIN(xla_accounting_cache_pkg.GetCurrencyMau(xal3.currency_code))
12047                ---------------------------------------------------------------------------
12048                -- 4482069 based on calculate_acctd_amts_flag and transaction currency
12049                -- Note: In theory, when calculate_acctd_amts_flag is 'No', entered and
12050                --       accounted amt should be the same (therefore we need not recalc
12051                --       accounted amt.) But just in case, perform the following copy to
12052                --       make sure they will be the same.
12053                ---------------------------------------------------------------------------
12054                ,MIN(DECODE(calculate_acctd_amts_flag
12055                       ,'N', DECODE(xalg.currency_code
12056                                  ,xla_accounting_cache_pkg.GetValueChar('XLA_CURRENCY_CODE',xalg.ledger_id)
12057                                  ,NVL(xalg.unrounded_accounted_cr,xalg.unrounded_entered_cr)
12058                                  ,xalg.unrounded_entered_cr)
12059                      ,xalg.unrounded_entered_cr)  )
12060                ---------------------------------------------------------------------------
12061                -- 4482069 based on calculate_acctd_amts_flag and transaction currency
12062                ---------------------------------------------------------------------------
12063                ,MIN(DECODE(calculate_acctd_amts_flag
12064                      ,'N', DECODE(xalg.currency_code
12065                                  ,xla_accounting_cache_pkg.GetValueChar('XLA_CURRENCY_CODE',xalg.ledger_id)
12066                                  ,NVL(xalg.unrounded_accounted_dr,xalg.unrounded_entered_dr)
12067                                  ,xalg.unrounded_entered_dr)
12068                      ,xalg.unrounded_entered_dr))
12069               ,MIN(xal3.party_type_code)
12070               ,MIN(NVL(xal3.merge_party_id,xal3.party_id))             -- 4967526
12071               ,MIN(NVL(xal3.merge_party_site_id,xal3.party_site_id))   -- 4967526
12072               ,MIN(xal3.encumbrance_type_id)
12073               ,C_CREATED
12074               ,MIN(xdl3.event_id)
12075               ,MIN(xdl3.ae_header_id)
12076               ,MIN(xal3.ae_line_num)
12077               ,MIN(xdl3.temp_line_num)
12078             --,MIN(xah3.accounting_entry_status_code)
12079               ,MIN(DECODE(xalg.currency_code,xal3.currency_code,xah3.accounting_entry_status_code,                            -- 5132302
12080                                              DECODE(xalg.bflow_applied_to_amount, NULL, 'X', xah3.accounting_entry_status_code))) -- 5132302
12081               ,MIN(xah3.entity_id)
12082           FROM xla_ae_lines xal3
12083              , xla_ae_headers xah3
12084              , xla_distribution_links xdl3
12085          WHERE xah3.application_id               = xdl3.application_id
12086            AND xah3.ae_header_id                 = xdl3.ae_header_id
12087            AND xal3.application_id               = xdl3.application_id
12088            AND xal3.ae_header_id                 = xdl3.ae_header_id
12089            AND xal3.ae_line_num                  = xdl3.ae_line_num
12090            AND xal3.business_class_code          = xalg.business_class_code -- 4336173
12091            AND xdl3.source_distribution_type     = xalg.bflow_distribution_type
12092            AND NVL(xdl3.source_distribution_id_num_1,C_NUM)   = NVL(xalg.bflow_dist_id_num_1,C_NUM)
12093            AND NVL(xdl3.source_distribution_id_num_2,C_NUM)   = NVL(xalg.bflow_dist_id_num_2,C_NUM)
12094            AND NVL(xdl3.source_distribution_id_num_3,C_NUM)   = NVL(xalg.bflow_dist_id_num_3,C_NUM)
12095            AND NVL(xdl3.source_distribution_id_num_4,C_NUM)   = NVL(xalg.bflow_dist_id_num_4,C_NUM)
12096            AND NVL(xdl3.source_distribution_id_num_5,C_NUM)   = NVL(xalg.bflow_dist_id_num_5,C_NUM)
12097            AND NVL(xdl3.source_distribution_id_char_1,C_CHAR) = NVL(xalg.bflow_dist_id_char_1,C_CHAR)
12098            AND NVL(xdl3.source_distribution_id_char_2,C_CHAR) = NVL(xalg.bflow_dist_id_char_2,C_CHAR)
12099            AND NVL(xdl3.source_distribution_id_char_3,C_CHAR) = NVL(xalg.bflow_dist_id_char_3,C_CHAR)
12100            AND NVL(xdl3.source_distribution_id_char_4,C_CHAR) = NVL(xalg.bflow_dist_id_char_4,C_CHAR)
12101            AND NVL(xdl3.source_distribution_id_char_5,C_CHAR) = NVL(xalg.bflow_dist_id_char_5,C_CHAR)
12102            AND xah3.parent_ae_header_id IS NULL -- 4655713b  MPA/Accrual Reversal lines cannot be used as prior entries
12103            -- exclude reversed entries
12104            AND NOT EXISTS (SELECT 1
12105                              FROM xla_distribution_links xdl4
12106                                 , xla_ae_headers xah4
12107                             WHERE xdl4.ref_ae_header_id = xdl3.ae_header_id
12108                               AND xdl4.temp_line_num    = xdl3.temp_line_num * -1
12109                               AND xah4.application_id   = xdl4.application_id
12110                               AND xah4.ae_header_id     = xdl4.ae_header_id
12111                               AND (xah4.accounting_entry_status_code = 'F' OR
12112                                    (xah4.accounting_entry_status_code = 'D' AND
12113                                     p_accounting_mode = 'D' AND
12114                                     p_bc_mode = 'NONE')))
12115            AND xdl3.application_id       = xalg.bflow_application_id
12116            AND xdl3.ae_header_id =
12117         (SELECT MAX(xdl.ae_header_id)
12118           FROM xla_transaction_entities xte
12119              , xla_ae_headers           xah
12120              , xla_distribution_links   xdl
12121              , xla_ae_lines             xal
12122              , xla_ledger_relationships_v  xlr   -- 4478604
12123              , xla_gl_ledgers_v            xgl   -- 4478604
12124              , xla_ledger_options   xlo  -- 5204178
12125          WHERE xgl.ledger_id            = xalg.ledger_id -- 4478604
12126            AND xlr.ledger_id            = xgl.ledger_id -- 4478604
12127            AND xte.application_id       = xalg.bflow_application_id
12128            AND xte.entity_code          = xalg.bflow_entity_code
12129            AND xte.ledger_id            = DECODE(xla_accounting_cache_pkg.GetValueChar('VALUATION_METHOD_FLAG'),
12130                                                   'N', xlr.primary_ledger_id,
12131                                                   DECODE(xlr.ledger_category_code
12132                                                         ,'ALC', xlr.primary_ledger_id
12133                                                         ,DECODE(NVL(xlo.capture_event_flag,'N'),'N',xlr.primary_ledger_id
12134                                                         ,xlr.ledger_id)))  -- 5204178 requires secondary ledger event
12135             AND  xlo.ledger_id (+)      = xgl.ledger_id
12136             AND  xlo.application_id (+) = g_application_id
12137             --
12138             AND NVL(xte.source_id_int_1,C_NUM)   = NVL(xalg.bflow_source_id_num_1,C_NUM)
12139             AND NVL(xte.source_id_int_2,C_NUM)   = NVL(xalg.bflow_source_id_num_2,C_NUM)
12140             AND NVL(xte.source_id_int_3,C_NUM)   = NVL(xalg.bflow_source_id_num_3,C_NUM)
12141             AND NVL(xte.source_id_int_4,C_NUM)   = NVL(xalg.bflow_source_id_num_4,C_NUM)
12142             AND NVL(xte.source_id_char_1,C_CHAR) = NVL(xalg.bflow_source_id_char_1,C_CHAR)
12143             AND NVL(xte.source_id_char_2,C_CHAR) = NVL(xalg.bflow_source_id_char_2,C_CHAR)
12144             AND NVL(xte.source_id_char_3,C_CHAR) = NVL(xalg.bflow_source_id_char_3,C_CHAR)
12145             AND NVL(xte.source_id_char_4,C_CHAR) = NVL(xalg.bflow_source_id_char_4,C_CHAR)
12146             --
12147             AND xah.application_id               = xte.application_id
12148             AND xah.ledger_id                    = xalg.ledger_id
12149             AND xah.entity_id                    = xte.entity_id
12150             AND xah.balance_type_code            = xalg.balance_type_code
12151             --
12152             AND xdl.application_id               = xah.application_id
12153             AND xdl.event_id                     = xah.event_id
12154             AND xdl.ae_header_id                 = xah.ae_header_id
12155             AND xdl.source_distribution_type     = xalg.bflow_distribution_type
12156             AND NVL(xdl.source_distribution_id_num_1,C_NUM)   = NVL(xalg.bflow_dist_id_num_1,C_NUM)
12157             AND NVL(xdl.source_distribution_id_num_2,C_NUM)   = NVL(xalg.bflow_dist_id_num_2,C_NUM)
12158             AND NVL(xdl.source_distribution_id_num_3,C_NUM)   = NVL(xalg.bflow_dist_id_num_3,C_NUM)
12159             AND NVL(xdl.source_distribution_id_num_4,C_NUM)   = NVL(xalg.bflow_dist_id_num_4,C_NUM)
12160             AND NVL(xdl.source_distribution_id_num_5,C_NUM)   = NVL(xalg.bflow_dist_id_num_5,C_NUM)
12161             AND NVL(xdl.source_distribution_id_char_1,C_CHAR) = NVL(xalg.bflow_dist_id_char_1,C_CHAR)
12162             AND NVL(xdl.source_distribution_id_char_2,C_CHAR) = NVL(xalg.bflow_dist_id_char_2,C_CHAR)
12163             AND NVL(xdl.source_distribution_id_char_3,C_CHAR) = NVL(xalg.bflow_dist_id_char_3,C_CHAR)
12164             AND NVL(xdl.source_distribution_id_char_4,C_CHAR) = NVL(xalg.bflow_dist_id_char_4,C_CHAR)
12165             AND NVL(xdl.source_distribution_id_char_5,C_CHAR) = NVL(xalg.bflow_dist_id_char_5,C_CHAR)
12166             --
12167             AND xal.business_class_code           = xalg.business_class_code -- 4336173
12168             AND xal.application_id                = xdl.application_id
12169             AND xal.ae_header_id                  = xdl.ae_header_id
12170             AND xal.ae_line_num                   = xdl.ae_line_num
12171             -- bug 4946123 - limit the status of the prior entry
12172             -- Final entries are always considered
12173             -- If running in BC mode, draft is not considered
12174             -- Otherwise, draft is considered only if running in draft mode
12175             AND xah.accounting_entry_status_code  IN ('F', DECODE(p_bc_mode,'NONE',p_accounting_mode,'F'))
12176             -- exclude reversed entries
12177             -- When running in BC mode, draft reversal entries are not considered
12178             AND NOT EXISTS (SELECT 1
12179                               FROM xla_distribution_links xdl2
12180                                  , xla_ae_headers xah2
12181                              WHERE xdl2.ref_ae_header_id = xdl.ae_header_id
12182                                AND xdl2.temp_line_num    = xdl.temp_line_num * -1
12183                                AND xah2.application_id   = xdl2.application_id
12184                                AND xah2.ae_header_id     = xdl2.ae_header_id
12185                                AND (xah2.accounting_entry_status_code = 'F' OR
12186                                     (xah2.accounting_entry_status_code = 'D' AND
12187                                      p_accounting_mode = 'D' AND
12188                                      p_bc_mode = 'NONE')))
12189             ))
12190       WHERE xalg.reversal_code = C_DUMMY_PRIOR;
12191       */
12192 
12193       -------------------------------------------------------------------------
12194       -- Update the ref_ae_header_id of the line where the prior entry is found
12195       -------------------------------------------------------------------------
12196       OPEN c_bflow_valid_lines;
12197       FETCH c_bflow_valid_lines BULK COLLECT INTO  l_array_ae_header_id
12198                                                   ,l_array_event_id
12199                                                   ,l_array_ledger_id
12200                                                   ,l_array_balance_type_code
12201                                                   ,l_array_line_num;
12202       CLOSE c_bflow_valid_lines;
12203 
12204       IF (C_LEVEL_EVENT >= g_log_level) THEN
12205          trace
12206            (p_msg      => '# bflow valid lines = '||l_array_balance_type_code.COUNT
12207            ,p_level    => C_LEVEL_EVENT
12208            ,p_module   => l_log_module);
12209       END IF;
12210 
12211       IF (l_array_balance_type_code.COUNT > 0) THEN
12212         FORALL i IN 1..l_array_balance_type_code.COUNT
12213            UPDATE /*+ index(xalg xla_ae_lines_gt_n2) */  xla_ae_lines_gt xalg   -- 6990256
12214               SET ref_ae_header_id  = temp_ref_ae_header_id,
12215                   currency_code     = temp_currency_code,
12216                   reversal_code     = null,                -- 5499367
12217                  (unrounded_entered_cr         -- 5132302
12218                  ,unrounded_entered_dr         -- 5132302
12219 		 ,analytical_balance_flag
12220                  ,unrounded_accounted_cr
12221                  ,unrounded_accounted_dr) =
12222                  ----------------------------------------------------------------------------------------------------------
12223                  -- Modified for bug 4482069
12224                  -- Normally, business flow should be setup between different sides.  So just in case, we first try
12225                  -- to use the amount from the opposite side.  And if it is null, take amount from same side.
12226                  --
12227                  -- Modify for bug 4656703
12228                  -- Modify for bug 4873615 - Handle the 'divided by zero' error
12229                  --
12230                  -- Modify for bug 5132302 - calculate accounted amt from applied_to_amt if currencies are different
12231                  ----------------------------------------------------------------------------------------------------------
12232                  (SELECT  DECODE(xalg.currency_code,xalg.temp_currency_code, xalg.unrounded_entered_cr,
12233                                       DECODE(xalg.unrounded_entered_cr,NULL,NULL,NVL(xalg.bflow_applied_to_amount,xalg.unrounded_entered_cr)))
12234                          ,DECODE(xalg.currency_code,xalg.temp_currency_code, xalg.unrounded_entered_dr,
12235                                       DECODE(xalg.unrounded_entered_dr,NULL,NULL,NVL(xalg.bflow_applied_to_amount,xalg.unrounded_entered_dr)))
12236                          ,DECODE (xal.analytical_balance_flag,'P','P'
12237                                        ,'Y','P',null) analytical_balance_flag
12238 			 ,DECODE(xalg.override_acctd_amt_flag,'Y'
12239                      ,xalg.unrounded_accounted_cr,
12240                                 (DECODE (xal.unrounded_accounted_dr,NULL
12241                                 ,CASE WHEN xal.unrounded_entered_cr <> 0
12242                                       THEN DECODE(xalg.currency_code,xalg.temp_currency_code,
12243                                            (xal.unrounded_accounted_cr/xal.unrounded_entered_cr)*xalg.unrounded_entered_cr,
12244                                            (xal.unrounded_accounted_cr/xal.unrounded_entered_cr)* DECODE(xalg.unrounded_entered_cr,NULL,NULL,
12245                                                                                  NVL(xalg.bflow_applied_to_amount,xalg.unrounded_entered_cr)))
12246                                      --Changed for bug 9352035
12247 									 -- ELSE xalg.unrounded_entered_cr END
12248                                       ELSE xalg.unrounded_entered_cr * nvl(xalg.DERIVED_EXCH_RATE,1) END
12249                                 ,CASE WHEN xal.unrounded_entered_dr <> 0
12250                                       THEN DECODE(xalg.currency_code,xalg.temp_currency_code,
12251                                            (xal.unrounded_accounted_dr/xal.unrounded_entered_dr)*xalg.unrounded_entered_cr,
12252                                            (xal.unrounded_accounted_dr/xal.unrounded_entered_dr)* DECODE(xalg.unrounded_entered_cr,NULL,NULL,
12253                                                                                  NVL(xalg.bflow_applied_to_amount,xalg.unrounded_entered_cr)))
12254                                       --Changed for bug 9352035
12255 									  --ELSE xalg.unrounded_entered_cr END))
12256                                       ELSE xalg.unrounded_entered_cr * nvl(xalg.DERIVED_EXCH_RATE,1) END))
12257                                  )
12258                          ,DECODE(xalg.override_acctd_amt_flag,'Y'
12259                      ,xalg.unrounded_accounted_dr,
12260                                 (DECODE (xal.unrounded_accounted_cr,NULL
12261                                 ,CASE WHEN xal.unrounded_entered_dr <> 0
12262                                       THEN DECODE(xalg.currency_code,xalg.temp_currency_code,
12263                                            (xal.unrounded_accounted_dr/xal.unrounded_entered_dr)*xalg.unrounded_entered_dr,
12264                                            (xal.unrounded_accounted_dr/xal.unrounded_entered_dr)* DECODE(xalg.unrounded_entered_dr,NULL,NULL,
12265                                                                                  NVL(xalg.bflow_applied_to_amount,xalg.unrounded_entered_dr)))
12266                                       --Changed for bug 9352035
12267 									  --ELSE xalg.unrounded_entered_dr END
12268 									  ELSE xalg.unrounded_entered_dr * nvl(xalg.DERIVED_EXCH_RATE,1) END
12269                                 ,CASE WHEN xal.unrounded_entered_cr <> 0
12270                                       THEN DECODE(xalg.currency_code,xalg.temp_currency_code,
12271                                            (xal.unrounded_accounted_cr/xal.unrounded_entered_cr)*xalg.unrounded_entered_dr,
12272                                            (xal.unrounded_accounted_cr/xal.unrounded_entered_cr)* DECODE(xalg.unrounded_entered_dr,NULL,NULL,
12273                                                                                  NVL(xalg.bflow_applied_to_amount,xalg.unrounded_entered_dr)))
12274                                       --Changed for bug 9352035
12275 									  --ELSE xalg.unrounded_entered_dr END))
12276 									  ELSE xalg.unrounded_entered_dr * nvl(xalg.DERIVED_EXCH_RATE,1) END))
12277                                  )
12278 
12279                      FROM xla_ae_lines xal
12280                     WHERE xal.application_id              = xalg.bflow_application_id
12281                       AND xal.ae_header_id                = xalg.temp_ref_ae_header_id
12282                       AND xal.ae_line_num                 = xalg.ref_ae_line_num),
12283                   entered_currency_mau = xla_accounting_cache_pkg.GetCurrencyMau(temp_currency_code),
12284                   (segment1,  segment2,  segment3,  segment4,  segment5,  segment6,  segment7,  segment8,  segment9,  segment10
12285                   ,segment11, segment12, segment13, segment14, segment15, segment16, segment17, segment18, segment19, segment20
12286                   ,segment21, segment22, segment23, segment24, segment25, segment26, segment27, segment28, segment29, segment30) =
12287                   (SELECT gcc.segment1,  gcc.segment2,  gcc.segment3,  gcc.segment4,  gcc.segment5
12288                          ,gcc.segment6,  gcc.segment7,  gcc.segment8,  gcc.segment9,  gcc.segment10
12289                          ,gcc.segment11, gcc.segment12, gcc.segment13, gcc.segment14, gcc.segment15
12290                          ,gcc.segment16, gcc.segment17, gcc.segment18, gcc.segment19, gcc.segment20
12291                          ,gcc.segment21, gcc.segment22, gcc.segment23, gcc.segment24, gcc.segment25
12292                          ,gcc.segment26, gcc.segment27, gcc.segment28, gcc.segment29, gcc.segment30
12293                      FROM gl_code_combinations gcc
12294                     WHERE gcc.code_combination_id = xalg.code_combination_id),
12295                          (anc_id_1,  anc_id_2,  anc_id_3,  anc_id_4,  anc_id_5
12296                          ,anc_id_6,  anc_id_7,  anc_id_8,  anc_id_9,  anc_id_10
12297                          ,anc_id_11, anc_id_12, anc_id_13, anc_id_14, anc_id_15
12298                          ,anc_id_16, anc_id_17, anc_id_18, anc_id_19, anc_id_20
12299                          ,anc_id_21, anc_id_22, anc_id_23, anc_id_24, anc_id_25
12300                          ,anc_id_26, anc_id_27, anc_id_28, anc_id_29, anc_id_30
12301                          ,anc_id_31, anc_id_32, anc_id_33, anc_id_34, anc_id_35
12302                          ,anc_id_36, anc_id_37, anc_id_38, anc_id_39, anc_id_40
12303                          ,anc_id_41, anc_id_42, anc_id_43, anc_id_44, anc_id_45
12304                          ,anc_id_46, anc_id_47, anc_id_48, anc_id_49, anc_id_50
12305                          ,anc_id_51, anc_id_52, anc_id_53, anc_id_54, anc_id_55
12306                          ,anc_id_56, anc_id_57, anc_id_58, anc_id_59, anc_id_60
12307                          ,anc_id_61, anc_id_62, anc_id_63, anc_id_64, anc_id_65
12308                          ,anc_id_66, anc_id_67, anc_id_68, anc_id_69, anc_id_70
12309                          ,anc_id_71, anc_id_72, anc_id_73, anc_id_74, anc_id_75
12310                          ,anc_id_76, anc_id_77, anc_id_78, anc_id_79, anc_id_80
12311                          ,anc_id_81, anc_id_82, anc_id_83, anc_id_84, anc_id_85
12312                          ,anc_id_86, anc_id_87, anc_id_88, anc_id_89, anc_id_90
12313                          ,anc_id_91, anc_id_92, anc_id_93, anc_id_94, anc_id_95
12314                          ,anc_id_96, anc_id_97, anc_id_98, anc_id_99, anc_id_100) =
12315                  (SELECT
12316                           MAX(DECODE(rank,1,anc_id))   ,MAX(DECODE(rank,2,anc_id))
12317                          ,MAX(DECODE(rank,3,anc_id))   ,MAX(DECODE(rank,4,anc_id))
12318                          ,MAX(DECODE(rank,5,anc_id))   ,MAX(DECODE(rank,6,anc_id))
12319                          ,MAX(DECODE(rank,7,anc_id))   ,MAX(DECODE(rank,8,anc_id))
12320                          ,MAX(DECODE(rank,9,anc_id))   ,MAX(DECODE(rank,10,anc_id))
12321                          ,MAX(DECODE(rank,11,anc_id))  ,MAX(DECODE(rank,12,anc_id))
12322                          ,MAX(DECODE(rank,13,anc_id))  ,MAX(DECODE(rank,14,anc_id))
12323                          ,MAX(DECODE(rank,15,anc_id))  ,MAX(DECODE(rank,16,anc_id))
12324                          ,MAX(DECODE(rank,17,anc_id))  ,MAX(DECODE(rank,18,anc_id))
12325                          ,MAX(DECODE(rank,19,anc_id))  ,MAX(DECODE(rank,20,anc_id))
12326                          ,MAX(DECODE(rank,21,anc_id))  ,MAX(DECODE(rank,22,anc_id))
12327                          ,MAX(DECODE(rank,23,anc_id))  ,MAX(DECODE(rank,24,anc_id))
12328                          ,MAX(DECODE(rank,25,anc_id))  ,MAX(DECODE(rank,26,anc_id))
12329                          ,MAX(DECODE(rank,27,anc_id))  ,MAX(DECODE(rank,28,anc_id))
12330                          ,MAX(DECODE(rank,29,anc_id))  ,MAX(DECODE(rank,30,anc_id))
12331                          ,MAX(DECODE(rank,31,anc_id))  ,MAX(DECODE(rank,32,anc_id))
12332                          ,MAX(DECODE(rank,33,anc_id))  ,MAX(DECODE(rank,34,anc_id))
12333                          ,MAX(DECODE(rank,35,anc_id))  ,MAX(DECODE(rank,36,anc_id))
12334                          ,MAX(DECODE(rank,37,anc_id))  ,MAX(DECODE(rank,38,anc_id))
12335                          ,MAX(DECODE(rank,39,anc_id))  ,MAX(DECODE(rank,40,anc_id))
12336                          ,MAX(DECODE(rank,41,anc_id))  ,MAX(DECODE(rank,42,anc_id))
12337                          ,MAX(DECODE(rank,43,anc_id))  ,MAX(DECODE(rank,44,anc_id))
12338                          ,MAX(DECODE(rank,45,anc_id))  ,MAX(DECODE(rank,46,anc_id))
12339                          ,MAX(DECODE(rank,47,anc_id))  ,MAX(DECODE(rank,48,anc_id))
12340                          ,MAX(DECODE(rank,49,anc_id))  ,MAX(DECODE(rank,50,anc_id))
12341                          ,MAX(DECODE(rank,51,anc_id))  ,MAX(DECODE(rank,52,anc_id))
12342                          ,MAX(DECODE(rank,53,anc_id))  ,MAX(DECODE(rank,54,anc_id))
12343                          ,MAX(DECODE(rank,55,anc_id))  ,MAX(DECODE(rank,56,anc_id))
12344                          ,MAX(DECODE(rank,57,anc_id))  ,MAX(DECODE(rank,58,anc_id))
12345                          ,MAX(DECODE(rank,59,anc_id))  ,MAX(DECODE(rank,60,anc_id))
12346                          ,MAX(DECODE(rank,61,anc_id))  ,MAX(DECODE(rank,62,anc_id))
12347                          ,MAX(DECODE(rank,63,anc_id))  ,MAX(DECODE(rank,64,anc_id))
12348                          ,MAX(DECODE(rank,65,anc_id))  ,MAX(DECODE(rank,66,anc_id))
12349                          ,MAX(DECODE(rank,67,anc_id))  ,MAX(DECODE(rank,68,anc_id))
12350                          ,MAX(DECODE(rank,69,anc_id))  ,MAX(DECODE(rank,70,anc_id))
12351                          ,MAX(DECODE(rank,71,anc_id))  ,MAX(DECODE(rank,72,anc_id))
12352                          ,MAX(DECODE(rank,73,anc_id))  ,MAX(DECODE(rank,74,anc_id))
12353                          ,MAX(DECODE(rank,75,anc_id))  ,MAX(DECODE(rank,76,anc_id))
12354                          ,MAX(DECODE(rank,77,anc_id))  ,MAX(DECODE(rank,78,anc_id))
12355                          ,MAX(DECODE(rank,79,anc_id))  ,MAX(DECODE(rank,80,anc_id))
12356                          ,MAX(DECODE(rank,81,anc_id))  ,MAX(DECODE(rank,82,anc_id))
12357                          ,MAX(DECODE(rank,83,anc_id))  ,MAX(DECODE(rank,84,anc_id))
12358                          ,MAX(DECODE(rank,85,anc_id))  ,MAX(DECODE(rank,86,anc_id))
12359                          ,MAX(DECODE(rank,87,anc_id))  ,MAX(DECODE(rank,88,anc_id))
12360                          ,MAX(DECODE(rank,89,anc_id))  ,MAX(DECODE(rank,90,anc_id))
12361                          ,MAX(DECODE(rank,91,anc_id))  ,MAX(DECODE(rank,92,anc_id))
12362                          ,MAX(DECODE(rank,93,anc_id))  ,MAX(DECODE(rank,94,anc_id))
12363                          ,MAX(DECODE(rank,95,anc_id))  ,MAX(DECODE(rank,96,anc_id))
12364                          ,MAX(DECODE(rank,97,anc_id))  ,MAX(DECODE(rank,98,anc_id))
12365                          ,MAX(DECODE(rank,99,anc_id))  ,MAX(DECODE(rank,100,anc_id))
12366                     FROM (SELECT ae_header_id
12367                                 ,ae_line_num
12368                                 ,analytical_criterion_code      || '(]' ||
12369                                  analytical_criterion_type_code || '(]' ||
12370                                  amb_context_code               || '(]' ||
12371                                  ac1                            || '(]' ||
12372                                  ac2                            || '(]' ||
12373                                  ac3                            || '(]' ||
12374                                  ac4                            || '(]' ||
12375                                  ac5           anc_id
12376                                 ,RANK() OVER (
12377                                   PARTITION BY ae_header_id, ae_line_num
12378                                       ORDER BY analytical_criterion_code
12379                                               ,analytical_criterion_type_code
12380                                               ,amb_context_code
12381                                               ,ac1
12382                                               ,ac2
12383                                               ,ac3
12384                                               ,ac4
12385                                               ,ac5) rank
12386              FROM xla_ae_line_acs) aed
12387             WHERE aed.ae_header_id        = xalg.temp_ref_ae_header_id
12388               AND aed.ae_line_num         = xalg.ref_ae_line_num)
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               AND temp_line_num     = l_array_line_num(i);
12394       END IF;
12395 
12396 
12397       -------------------------------------------------------------------------------------------------------------------------
12398       -- 4655713b Update MPA and Accrual Reversal lines with Prior Entry
12399       -------------------------------------------------------------------------------------------------------------------------
12400    IF xla_accounting_pkg.g_mpa_accrual_exists = 'Y' THEN                                                                -- 5666366
12401       SELECT /*+ Leading (xal1,xah1,xal2) index(xah1 XLA_AE_HEADERS_GT_U1) index(xal2 XLA_AE_LINES_GT_N2) no_expand */  -- 5666366
12402              xal2.segment1,  xal2.segment2,  xal2.segment3,  xal2.segment4,  xal2.segment5
12403             ,xal2.segment6,  xal2.segment7,  xal2.segment8,  xal2.segment9,  xal2.segment10
12404             ,xal2.segment11, xal2.segment12, xal2.segment13, xal2.segment14, xal2.segment15
12405             ,xal2.segment16, xal2.segment17, xal2.segment18, xal2.segment19, xal2.segment20
12406             ,xal2.segment21, xal2.segment22, xal2.segment23, xal2.segment24, xal2.segment25
12407             ,xal2.segment26, xal2.segment27, xal2.segment28, xal2.segment29, xal2.segment30
12408             ,xal2.code_combination_id
12409             ,xal2.code_combination_status_code
12410             ,DECODE(NVL(xal1.inherit_desc_flag,'N'), 'Y', xal2.description, xal1.description)
12411             ,xal2.currency_code   -- upstream
12412             ,xal1.currency_code   -- downstream  5132302
12413             ,xal2.currency_conversion_rate
12414             ,xal2.currency_conversion_type
12415             ,xal2.currency_conversion_date
12416             ,xal2.entered_currency_mau
12417             ,xal2.party_type_code
12418             ,xal2.party_id
12419             ,xal2.party_site_id
12420             ,xal2.encumbrance_type_id
12421             -- CALCULATE_ACCTD_AMTS_FLAG is ignored for Prior Entry (see bug 4482069 for details). Same applies to MPA lines.
12422             ,DECODE (xal3.unrounded_accounted_dr,NULL
12423                     ,CASE WHEN xal3.unrounded_entered_cr <> 0
12424                           THEN xal3.unrounded_accounted_cr/xal3.unrounded_entered_cr
12425                           ELSE 1 END
12426                     ,CASE WHEN xal3.unrounded_entered_dr <> 0
12427                           THEN xal3.unrounded_accounted_dr/xal3.unrounded_entered_dr
12428                           ELSE 1 END)
12429             ,DECODE (xal3.unrounded_accounted_cr,NULL
12430                     ,CASE WHEN xal3.unrounded_entered_dr <> 0
12431                           THEN xal3.unrounded_accounted_dr/xal3.unrounded_entered_dr
12432                           ELSE 1 END
12433                     ,CASE WHEN xal3.unrounded_entered_cr <> 0
12434                           THEN xal3.unrounded_accounted_cr/xal3.unrounded_entered_cr
12435                           ELSE 1 END)
12436             -- join conditions
12437             ,xal1.ledger_id
12438             ,xal1.ref_ae_header_id
12439             ,xal1.temp_line_num
12440             ,xal1.ae_header_id
12441             ,xal1.header_num
12442             ,DECODE(xah1.parent_ae_line_num,NULL,'Y','N')  -- accrual_reversal_flag
12443       BULK COLLECT INTO
12444              l_array_mpa_segment1 ,l_array_mpa_segment2 ,l_array_mpa_segment3 ,l_array_mpa_segment4 ,l_array_mpa_segment5
12445             ,l_array_mpa_segment6 ,l_array_mpa_segment7 ,l_array_mpa_segment8 ,l_array_mpa_segment9 ,l_array_mpa_segment10
12446             ,l_array_mpa_segment11 ,l_array_mpa_segment12 ,l_array_mpa_segment13 ,l_array_mpa_segment14 ,l_array_mpa_segment15
12447             ,l_array_mpa_segment16 ,l_array_mpa_segment17 ,l_array_mpa_segment18 ,l_array_mpa_segment19 ,l_array_mpa_segment20
12448             ,l_array_mpa_segment21 ,l_array_mpa_segment22 ,l_array_mpa_segment23 ,l_array_mpa_segment24 ,l_array_mpa_segment25
12449             ,l_array_mpa_segment26 ,l_array_mpa_segment27 ,l_array_mpa_segment28 ,l_array_mpa_segment29 ,l_array_mpa_segment30
12450             ,l_array_mpa_ccid
12451             ,l_array_mpa_ccid_status_code
12452             ,l_array_mpa_description
12453             ,l_array_mpa_currency_code
12454             ,l_array_mpa_currency_code_pe  -- 5132302
12455             ,l_array_mpa_curr_conv_rate
12456             ,l_array_mpa_curr_conv_type
12457             ,l_array_mpa_curr_conv_date
12458             ,l_array_mpa_currency_mau
12459             ,l_array_mpa_party_type_code
12460             ,l_array_mpa_party_id
12461             ,l_array_mpa_party_site_id
12462             ,l_array_mpa_encum_type_id
12463             ,l_array_mpa_acct_cr_ratio
12464             ,l_array_mpa_acct_dr_ratio
12465             -- join conditions
12466             ,l_array_mpa_ledger_id
12467             ,l_array_mpa_ref_ae_header_id
12468             ,l_array_mpa_temp_line_num
12469             ,l_array_mpa_ae_header_id
12470             ,l_array_mpa_header_num
12471             ,l_array_acc_rev_flag
12472       FROM  xla_ae_lines_gt   xal2   -- original downstream line
12473            ,xla_ae_headers_gt xah1   -- original downstream header
12474            ,xla_ae_lines_gt   xal1   -- recognition lines
12475            ,xla_ae_lines      xal3   -- upstream line
12476       WHERE xal2.source_distribution_type                  = xal1.source_distribution_type
12477       AND   NVL(xal2.source_distribution_id_num_1,C_NUM)   = NVL(xal1.source_distribution_id_num_1,C_NUM)
12478       AND   NVL(xal2.source_distribution_id_num_2,C_NUM)   = NVL(xal1.source_distribution_id_num_2,C_NUM)
12479       AND   NVL(xal2.source_distribution_id_num_3,C_NUM)   = NVL(xal1.source_distribution_id_num_3,C_NUM)
12480       AND   NVL(xal2.source_distribution_id_num_4,C_NUM)   = NVL(xal1.source_distribution_id_num_4,C_NUM)
12481       AND   NVL(xal2.source_distribution_id_num_5,C_NUM)   = NVL(xal1.source_distribution_id_num_5,C_NUM)
12482       AND   NVL(xal2.source_distribution_id_char_1,C_CHAR) = NVL(xal1.source_distribution_id_char_1,C_CHAR)
12483       AND   NVL(xal2.source_distribution_id_char_2,C_CHAR) = NVL(xal1.source_distribution_id_char_2,C_CHAR)
12484       AND   NVL(xal2.source_distribution_id_char_3,C_CHAR) = NVL(xal1.source_distribution_id_char_3,C_CHAR)
12485       AND   NVL(xal2.source_distribution_id_char_4,C_CHAR) = NVL(xal1.source_distribution_id_char_4,C_CHAR)
12486       AND   NVL(xal2.source_distribution_id_char_5,C_CHAR) = NVL(xal1.source_distribution_id_char_5,C_CHAR)
12487       AND   xal2.event_id                      = xal1.event_id
12488       AND   xal2.ledger_id                     = xal1.ledger_id
12489       AND   xal2.balance_type_code             = xal1.balance_type_code
12490       AND   xal2.event_class_code              = xal1.event_class_code
12491       AND   xal2.event_type_code               = xal1.event_type_code
12492       AND   xal2.line_definition_owner_code    = xal1.line_definition_owner_code
12493       AND   xal2.line_definition_code          = xal1.line_definition_code
12494       AND   xal2.ACCOUNTING_LINE_TYPE_CODE     = xal1.ACCOUNTING_LINE_TYPE_CODE
12495       AND   xal2.ACCOUNTING_LINE_CODE          = xal1.ACCOUNTING_LINE_CODE
12496       --
12497       AND   xah1.ledger_id        = xal1.ledger_id
12498       AND   xah1.ae_header_id     = xal1.ae_header_id
12499       AND   xah1.header_num       = xal1.header_num
12500       AND ((xah1.parent_ae_line_num IS NOT NULL AND xal2.temp_line_num = xah1.parent_ae_line_num)  -- MPA
12501       OR    xah1.parent_ae_line_num IS NULL)                                                       -- Accrual Reversal
12502       --  5666366  -------------------------------------
12503       AND XAL1.BALANCE_TYPE_CODE  = XAH1.BALANCE_TYPE_CODE
12504       AND XAL2.AE_HEADER_ID       = XAL1.AE_HEADER_ID
12505       --------------------------------------------------
12506       AND   xal2.header_num       = 0
12507       AND   xal1.reversal_code    = C_MPA_PRIOR_ENTRY
12508       --
12509       AND   xal2.bflow_prior_entry_status_code IS NOT NULL AND xal2.bflow_prior_entry_status_code <> 'X'  -- 5132302
12510       --
12511       AND   xal3.application_id   = xal2.bflow_application_id
12512       AND   xal3.ae_header_id     = xal2.temp_ref_ae_header_id
12513       AND   xal3.ae_line_num      = xal2.ref_ae_line_num;
12514 
12515       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12516          trace
12517             (p_msg      => 'BusinessFlowPriorEntries - no of MPA/AccRev rows found = '||l_array_mpa_ledger_id.COUNT
12518             ,p_level    => C_LEVEL_STATEMENT
12519             ,p_module   => l_log_module);
12520          FOR i IN 1..l_array_mpa_ledger_id.COUNT LOOP
12521             trace
12522             (p_msg      => 'BusinessFlowPriorEntries - mpa lines  ledger='||l_array_mpa_ledger_id(i)||
12523                            ' ref_header='||l_array_mpa_ref_ae_header_id(i)||
12524                            ' temp_line='||l_array_mpa_temp_line_num(i)||
12525                            ' ae_header='||l_array_mpa_ae_header_id(i)||
12526                            ' header_num='||l_array_mpa_header_num(i)||
12527                            ' up_curr='||l_array_mpa_currency_code(i)||
12528                            ' dn_curr='||l_array_mpa_currency_code_pe(i)||
12529                            ' acc_rev='||l_array_acc_rev_flag(i)
12530             ,p_level    => C_LEVEL_STATEMENT
12531             ,p_module   => l_log_module);
12532          END LOOP;
12533 
12534          FOR i IN (select * from xla_ae_Lines_gt where reversal_code=C_MPA_PRIOR_ENTRY) LOOP
12535             trace
12536             (p_msg      => 'ae_lines_gt  PE dist ledger='||i.ledger_id||' ref_ae_header='||i.ref_ae_header_id||
12537                            ' temp_line='||i.temp_line_num||' ae_header='||i.ae_header_id||' header_num='||i.header_num||
12538                            ' bflow='||i.business_method_code||
12539                            ' curr='||i.currency_code||' applied_amt='||i.bflow_applied_to_amount||  -- 5132302
12540                            ' conv_type='||i.currency_conversion_type||' conv_rate='||i.currency_conversion_rate||
12541                            ' udr='||i.unrounded_ACCOUNTED_DR||' ucr='||i.unrounded_ACCOUNTED_CR||' switch='||i.switch_side_flag||
12542                            ' line='||i.line_definition_code|| ' dist='||i.source_distribution_type||' rev='||i.reversal_code||
12543                            ' n1='||i.source_distribution_id_num_1|| ' n2='||i.source_distribution_id_num_2||
12544                            ' n3='||i.source_distribution_id_num_3|| ' n4='||i.source_distribution_id_num_4||
12545                            ' n5='||i.source_distribution_id_num_5|| ' c1='||i.source_distribution_id_char_1||
12546                            ' c2='||i.source_distribution_id_char_2|| ' c3='||i.source_distribution_id_char_3||
12547                            ' c4='||i.source_distribution_id_char_4|| ' c5='||i.source_distribution_id_char_5||
12548                            ' bal='||i.balance_type_code|| ' side='||i.natural_side_code||
12549                            ' rev='||i.reversal_code
12550             ,p_level    => C_LEVEL_STATEMENT
12551             ,p_module   => l_log_module);
12552          END LOOP;
12553 
12554          FOR i IN (select * from xla_ae_Lines_gt where reversal_code=C_MPA_PRIOR_ENTRY) LOOP
12555              trace
12556             (p_msg      => '                seg s1='||i.segment1||' s2='||i.segment2|| ' s3='||i.segment3||' s4='||i.segment4||
12557                                        ' s5='||i.segment5||' s6='||i.segment6|| ' s7='||i.segment7||' s8='||i.segment8||
12558                                        ' s9='||i.segment9||' s10='||i.segment10|| ' s11='||i.segment11||' s12='||i.segment12||
12559                                        ' s13='||i.segment13||' s14='||i.segment14|| ' s15='||i.segment15||' s16='||i.segment16||
12560                                        ' s17='||i.segment17||' s18='||i.segment18|| ' s19='||i.segment19||' s20='||i.segment20||
12561                                        ' s21='||i.segment21||' s22='||i.segment22|| ' s23='||i.segment23||' s24='||i.segment24||
12562                                        ' s25='||i.segment25||' s26='||i.segment26|| ' s27='||i.segment27||' s28='||i.segment28||
12563                                        ' s29='||i.segment29||' s30='||i.segment30||' ccid='||i.code_combination_id
12564             ,p_level    => C_LEVEL_STATEMENT
12565             ,p_module   => l_log_module);
12566          END LOOP;
12567 
12568       END IF;
12569 
12570       ---------------------------------------------------------------------------------------------------------------
12571       -- Updates only the Accrual-Reversal or MPA-Accrual line which is a PRIOR_ENTRY.
12572       -- NOTE: for Accrual-Reversal, one line may be Prior Entry and the rest may not, so update only Prior Entry line.
12573       ---------------------------------------------------------------------------------------------------------------
12574       FORALL i in 1..l_array_mpa_ledger_id.COUNT
12575   -- added hint for 8920369
12576          UPDATE /*+ INDEX(xal, XLA_AE_LINES_GT_U1)*/  xla_ae_lines_gt xal
12577          SET      segment1  = l_array_mpa_segment1(i)
12578                 , segment2  = l_array_mpa_segment2(i)
12579                 , segment3  = l_array_mpa_segment3(i)
12580                 , segment4  = l_array_mpa_segment4(i)
12581                 , segment5  = l_array_mpa_segment5(i)
12582                 , segment6  = l_array_mpa_segment6(i)
12583                 , segment7  = l_array_mpa_segment7(i)
12584                 , segment8  = l_array_mpa_segment8(i)
12585                 , segment9  = l_array_mpa_segment9(i)
12586                 , segment10 = l_array_mpa_segment10(i)
12587                 , segment11 = l_array_mpa_segment11(i)
12588                 , segment12 = l_array_mpa_segment12(i)
12589                 , segment13 = l_array_mpa_segment13(i)
12590                 , segment14 = l_array_mpa_segment14(i)
12591                 , segment15 = l_array_mpa_segment15(i)
12592                 , segment16 = l_array_mpa_segment16(i)
12593                 , segment17 = l_array_mpa_segment17(i)
12594                 , segment18 = l_array_mpa_segment18(i)
12595                 , segment19 = l_array_mpa_segment19(i)
12596                 , segment20 = l_array_mpa_segment20(i)
12597                 , segment21 = l_array_mpa_segment21(i)
12598                 , segment22 = l_array_mpa_segment22(i)
12599                 , segment23 = l_array_mpa_segment23(i)
12600                 , segment24 = l_array_mpa_segment24(i)
12601                 , segment25 = l_array_mpa_segment25(i)
12602                 , segment26 = l_array_mpa_segment26(i)
12603                 , segment27 = l_array_mpa_segment27(i)
12604                 , segment28 = l_array_mpa_segment28(i)
12605                 , segment29 = l_array_mpa_segment29(i)
12606                 , segment30 = l_array_mpa_segment30(i)
12607                 , description              = l_array_mpa_description(i)
12608                 , code_combination_id      = l_array_mpa_ccid(i)
12609                 , code_combination_status_code = DECODE(l_array_mpa_ccid(i),NULL,C_PROCESSING     -- 4655713b used in Create_CCID
12610                                                                                 ,l_array_mpa_ccid_status_code(i))
12611                 , reversal_code            = null
12612                 --
12613                 , currency_code            = l_array_mpa_currency_code(i)
12614                 , currency_conversion_rate = l_array_mpa_curr_conv_rate(i)
12615                 , currency_conversion_type = l_array_mpa_curr_conv_type(i)
12616                 , currency_conversion_date = TRUNC(l_array_mpa_curr_conv_date(i))
12617                 , party_type_code          = l_array_mpa_party_type_code(i)
12618                 , party_id                 = l_array_mpa_party_id(i)
12619                 , party_site_id            = l_array_mpa_party_site_id(i)
12620                 , encumbrance_type_id      = l_array_mpa_encum_type_id(i)
12621                 , unrounded_entered_cr     = DECODE(l_array_mpa_currency_code(i),l_array_mpa_currency_code_pe(i),  -- 5132302
12622                                                     unrounded_entered_cr,
12623                                                     DECODE(unrounded_entered_cr,NULL,NULL,NVL(bflow_applied_to_amount,unrounded_entered_cr)))
12624                 , unrounded_entered_dr     = DECODE(l_array_mpa_currency_code(i),l_array_mpa_currency_code_pe(i),  -- 5132302
12625                                                     unrounded_entered_dr,
12626                                                     DECODE(unrounded_entered_dr,NULL,NULL,NVL(bflow_applied_to_amount,unrounded_entered_dr)))
12627                 , unrounded_accounted_cr   = DECODE(l_array_mpa_currency_code(i),l_array_mpa_currency_code_pe(i),  -- 5132302
12628                                                     unrounded_entered_cr*l_array_mpa_acct_cr_ratio(i),
12629                                                     DECODE(unrounded_entered_cr,NULL,NULL,
12630                                                            NVL(bflow_applied_to_amount,unrounded_entered_cr))*l_array_mpa_acct_cr_ratio(i))
12631                 , unrounded_accounted_dr   = DECODE(l_array_mpa_currency_code(i),l_array_mpa_currency_code_pe(i),  -- 5132302
12632                                                     unrounded_entered_dr*l_array_mpa_acct_dr_ratio(i),
12633                                                     DECODE(unrounded_entered_dr,NULL,NULL,
12634                                                            NVL(bflow_applied_to_amount,unrounded_entered_dr))*l_array_mpa_acct_dr_ratio(i))
12635            WHERE xal.ledger_id             = l_array_mpa_ledger_id(i)
12636            AND   xal.ref_ae_header_id      = l_array_mpa_ref_ae_header_id(i)
12637            AND   xal.temp_line_num         = l_array_mpa_temp_line_num(i)  -- Acc-Rev or MPA-Accrual line which is a PRIOR_ENTR
12638            AND   xal.ae_header_id          = l_array_mpa_ae_header_id(i)
12639            AND   NVL(xal.header_num,0)     = l_array_mpa_header_num(i);
12640 
12641 
12642       ---------------------------------------------------------------------------------------------------------------
12643       -- a) Updates MPA-Recognition lines only (MPA-Accrual and Accrual-Reversal lines are updated above.)
12644       -- b) Both MPA-Accrual and MPA-Recognition lines need to inherit values from Prior Entry.
12645       -- c) GetRecognitionEntries sets unrounded_accounted amounts to NULL when CALCULATE_ACCTD_AMTS_FLAG is 'Y'
12646       --    which is correct for non-bflow MPA.  When it is bflow, flag is ignored.
12647       --
12648       -- NOTE: some columns are set to NULL during Business_Flow_Validation
12649       ---------------------------------------------------------------------------------------------------------------
12650       FORALL i in 1..l_array_mpa_ledger_id.COUNT
12651          UPDATE xla_ae_lines_gt xal
12652          SET      currency_code            = DECODE(l_array_acc_rev_flag(i),'N',l_array_mpa_currency_code(i)
12653                                                                                ,currency_code)
12654                 , currency_conversion_rate = DECODE(l_array_acc_rev_flag(i),'N',l_array_mpa_curr_conv_rate(i)
12655                                                                                ,currency_conversion_rate)
12656                 , currency_conversion_type = DECODE(l_array_acc_rev_flag(i),'N',l_array_mpa_curr_conv_type(i)
12657                                                                                ,currency_conversion_type)
12658                 , currency_conversion_date = DECODE(l_array_acc_rev_flag(i),'N',TRUNC(l_array_mpa_curr_conv_date(i))
12659                                                                                ,TRUNC(currency_conversion_date))
12660                 , party_type_code          = DECODE(l_array_acc_rev_flag(i),'N',l_array_mpa_party_type_code(i)
12661                                                                                ,party_type_code)
12662                 , party_id                 = DECODE(l_array_acc_rev_flag(i),'N',l_array_mpa_party_id(i)
12663                                                                                ,party_id)
12664                 , party_site_id            = DECODE(l_array_acc_rev_flag(i),'N',l_array_mpa_party_site_id(i)
12665                                                                                ,party_site_id)
12666          --       , encumbrance_type_id      = DECODE(l_array_acc_rev_flag(i),'N',encumbrance_type_id,l_array_mpa_encum_type_id(i)
12667          --                                                                      ,encumbrance_type_id)
12668                 , entered_currency_mau     = DECODE(l_array_acc_rev_flag(i),'N',l_array_mpa_currency_mau(i)
12669                                                                                ,entered_currency_mau)
12670                 , 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
12671                                                     unrounded_entered_cr,
12672                                                     DECODE(unrounded_entered_cr,NULL,NULL,NVL(bflow_applied_to_amount,unrounded_entered_cr)))
12673                                                    ,unrounded_entered_cr)
12674                 , 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
12675                                                     unrounded_entered_dr,
12676                                                     DECODE(unrounded_entered_dr,NULL,NULL,NVL(bflow_applied_to_amount,unrounded_entered_dr)))
12677                                                    ,unrounded_entered_dr)
12678                 , 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
12679                                                                                        unrounded_entered_cr*l_array_mpa_acct_cr_ratio(i),
12680                                                                                        DECODE(unrounded_entered_cr,NULL,NULL,
12681                                                                                        NVL(bflow_applied_to_amount,unrounded_entered_cr)*l_array_mpa_acct_cr_ratio(i)))
12682                                                                                ,unrounded_accounted_cr)
12683                 , 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
12684                                                                                        unrounded_entered_dr*l_array_mpa_acct_dr_ratio(i),
12685                                                                                        DECODE(unrounded_entered_dr,NULL,NULL,
12686                                                                                        NVL(bflow_applied_to_amount,unrounded_entered_dr)*l_array_mpa_acct_dr_ratio(i)))
12687                                                                                ,unrounded_accounted_dr)
12688            WHERE xal.ledger_id         = l_array_mpa_ledger_id(i)
12689            AND   xal.ref_ae_header_id  = l_array_mpa_ref_ae_header_id(i)
12690            AND   xal.ae_header_id      = l_array_mpa_ae_header_id(i)
12691            AND   NVL(xal.header_num,0) = l_array_mpa_header_num(i);
12692    END IF;  -- 5666366  xla_accounting_pkg.g_mpa_accrual_exists = 'Y'
12693       -------------------------------------------------------------------------------------------------------------------------
12694 
12695 
12696       -------------------------------------------------------------------------
12697       -- Log error messages for the rows still with DUMMY_BFPE
12698       -------------------------------------------------------------------------
12699 
12700       OPEN c_bflow_err_lines;
12701       FETCH c_bflow_err_lines BULK COLLECT INTO  l_array_ae_header_id
12702                                                 ,l_array_line_num
12703                                                 ,l_array_event_id
12704                                                 ,l_array_ledger_id
12705                                                 ,l_array_bflow_prior_status
12706                                                 ,l_array_balance_type_code
12707                                                 ,l_array_entity_id
12708                                                 ,l_array_app_name
12709 						,l_array_app_id -- 11776012
12710                                                 ,l_array_bflow_historic
12711                                                 ,l_array_ledger_category
12712                                                 ,l_array_period_start_date
12713                                                 ,l_array_pe_entity_id
12714                                                 ,l_array_pe_entity_code;
12715       CLOSE c_bflow_err_lines;
12716 
12717       IF (C_LEVEL_EVENT >= g_log_level) THEN
12718          trace
12719            (p_msg      => '# bflow error lines = '||l_array_balance_type_code.COUNT
12720            ,p_level    => C_LEVEL_EVENT
12721            ,p_module   => l_log_module);
12722       END IF;
12723 
12724       -------------------------------------------------------------------------
12725       -- Historic Upgrade enhancement
12726       -------------------------------------------------------------------------
12727 
12728       -- Get the start_date of the Primary ledger
12729       SELECT glp.start_date
12730        INTO l_primary_start_date
12731       FROM  gl_period_statuses glp
12732            ,gl_ledgers gl
12733       WHERE glp.period_name = gl.first_ledger_period_name
12734       AND  glp.ledger_id = gl.ledger_id
12735       AND  glp.application_id = 101
12736       AND  gl.ledger_id = p_ledger_id;
12737 
12738        IF (l_array_bflow_prior_status.COUNT > 0) THEN -- prior entry status
12739 
12740         FOR i IN 1..l_array_bflow_prior_status.COUNT LOOP
12741               IF NVL(l_array_bflow_prior_status(i),'N') = 'X' THEN   -- 5132302
12742 
12743                  xla_accounting_err_pkg.build_message
12744                      (p_appli_s_name  => 'XLA'
12745                      ,p_msg_name      => 'XLA_AP_BFLOW_PE_NO_APPLIED_AMT'
12746                      ,p_entity_id     => l_array_entity_id(i)
12747                      ,p_event_id      => l_array_event_id(i)
12748                      ,p_ledger_id     => l_array_ledger_id(i));
12749 
12750               ELSE
12751 
12752                -- If the errored line belongs to primary ledger,
12753            -- throw the error 'prior entry not found'.
12754 
12755            IF(l_array_ledger_category (i) = 'PRIMARY') THEN
12756                  XLA_AE_JOURNAL_ENTRY_PKG.g_global_status  :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
12757 
12758                  IF (C_LEVEL_EVENT >= g_log_level) THEN
12759                     trace
12760                        (p_msg      => 'l_array_event_id(i):'||l_array_event_id(i)
12761                        ,p_level    => C_LEVEL_EVENT
12762                        ,p_module   => l_log_module);
12763                     trace
12764                        (p_msg      => 'l_array_pe_entity_id(i):'||l_array_pe_entity_id(i)
12765                        ,p_level    => C_LEVEL_EVENT
12766                        ,p_module   => l_log_module);
12767                  END IF;
12768 
12769                  IF l_array_pe_entity_id(i) IS NOT NULL THEN
12770                     xla_accounting_errors_pkg.modify_message
12771                       (p_application_id => g_application_id
12772                       ,p_appli_s_name   => 'XLA'
12773                       ,p_msg_name       => 'XLA_AP_BFLOW_PE_NOT_FOUND'
12774                       ,p_token_1        => 'APPLICATION_NAME'
12775                       ,p_value_1        => l_array_app_name(i)
12776                       ,p_token_2        => 'APPLIED_TO_ENTITY_ID'
12777                       ,p_value_2        => l_array_pe_entity_id(i)
12778                       ,p_token_3        => 'APPLIED_TO_ENTITY_CODE'
12779                       ,p_value_3        => l_array_pe_entity_code(i)
12780 		      ,p_token_4        => 'APPLICATION_ID'  -- 11776012
12781                       ,p_value_4        => l_array_app_id(i) -- 11776012
12782                       ,p_entity_id      => l_array_entity_id(i)
12783                       ,p_event_id       => l_array_event_id(i)
12784                       ,p_ledger_id      => l_array_ledger_id(i));
12785                  ELSE
12786                     xla_accounting_err_pkg.build_message
12787                       (p_appli_s_name  => 'XLA'
12788                       ,p_msg_name      => 'XLA_AP_BFLOW_PE_NOT_FOUND'
12789                       ,p_token_1       => 'APPLICATION_NAME'
12790                       ,p_value_1       => l_array_app_name(i)
12791                       ,p_entity_id     => l_array_entity_id(i)
12792                       ,p_event_id      => l_array_event_id(i)
12793                       ,p_ledger_id     => l_array_ledger_id(i));
12794                  END IF;
12795 
12796 
12797 
12798                ELSE -- for secondary/alc
12799 
12800            -- If the problematic line belongs to secondary/alc ledger, compare the startdate
12801            -- of the first open period for that ledger with that of primary ledger. If it is
12802            -- less than or equal to the start date of primary, throw the error. Else,
12803            -- assume that historic upgrade process is run, and don't raise any error.
12804            -- Bug 5339999
12805 
12806 
12807         IF (l_array_period_start_date(i) <= l_primary_start_date) then
12808          XLA_AE_JOURNAL_ENTRY_PKG.g_global_status  :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
12809                  IF (C_LEVEL_EVENT >= g_log_level) THEN
12810                     trace
12811                        (p_msg      => 'l_array_event_id(i):'||l_array_event_id(i)
12812                        ,p_level    => C_LEVEL_EVENT
12813                        ,p_module   => l_log_module);
12814                     trace
12815                        (p_msg      => 'l_array_pe_entity_id(i):'||l_array_pe_entity_id(i)
12816                        ,p_level    => C_LEVEL_EVENT
12817                        ,p_module   => l_log_module);
12818                  END IF;
12819 
12820                  IF l_array_pe_entity_id(i) IS NOT NULL THEN
12821                     xla_accounting_errors_pkg.modify_message
12822                       (p_application_id => g_application_id
12823                       ,p_appli_s_name   => 'XLA'
12824                       ,p_msg_name       => 'XLA_AP_BFLOW_PE_NOT_FOUND'
12825                       ,p_token_1        => 'APPLICATION_NAME'
12826                       ,p_value_1        => l_array_app_name(i)
12827                       ,p_token_2        => 'APPLIED_TO_ENTITY_ID'
12828                       ,p_value_2        => l_array_pe_entity_id(i)
12829                       ,p_token_3        => 'APPLIED_TO_ENTITY_CODE'
12830                       ,p_value_3        => l_array_pe_entity_code(i)
12831 		      ,p_token_4        => 'APPLICATION_ID'  -- 11776012
12832                       ,p_value_4        => l_array_app_id(i) -- 11776012
12833                       ,p_entity_id      => l_array_entity_id(i)
12834                       ,p_event_id       => l_array_event_id(i)
12835                       ,p_ledger_id      => l_array_ledger_id(i));
12836                  ELSE
12837                     xla_accounting_err_pkg.build_message
12838                       (p_appli_s_name  => 'XLA'
12839                       ,p_msg_name      => 'XLA_AP_BFLOW_PE_NOT_FOUND'
12840                       ,p_token_1       => 'APPLICATION_NAME'
12841                       ,p_value_1       => l_array_app_name(i)
12842                       ,p_entity_id     => l_array_entity_id(i)
12843                       ,p_event_id      => l_array_event_id(i)
12844                       ,p_ledger_id     => l_array_ledger_id(i));
12845                  END IF;
12846 
12847 
12848 
12849                 ELSE
12850           l_array_bflow_historic (i) :='Y';  -- This line belongs to historic upgraded data.
12851           l_array_hist_bflow_err(l_array_event_id(i)) :=1;
12852           xla_accounting_cache_pkg.g_hist_bflow_error_exists := TRUE;
12853                 END IF;
12854 
12855                END IF;  -- for secondary
12856               END IF; -- 5132302
12857 
12858         END LOOP;
12859 
12860        -- Print out all the events whose upstream entries are not upgraded in secondary/alc ledgers.
12861        IF l_array_hist_bflow_err.COUNT>0 THEN
12862          print_logfile('******************************************************************************');
12863          print_logfile('The following events do not have historic entries replicated in secondary/alc ledgers');
12864          print_logfile('Manual gl adjustments in the secondary/alc ledgers needs to be done for these events');
12865          print_logfile('==============================================================================');
12866          l_hist_count := l_array_hist_bflow_err.FIRST;
12867          WHILE (l_hist_count <= l_array_hist_bflow_err.LAST) LOOP
12868            print_logfile('event_id :'||l_hist_count);
12869            l_hist_count := l_array_hist_bflow_err.next(l_hist_count);
12870          END LOOP;
12871          print_logfile('==============================================================================');
12872        END IF;
12873 
12874 
12875 
12876 
12877        --
12878        -- Bug 5339999 Delete the problematic lines from xla_ae_lines_gt.
12879        --
12880        FORALL i IN 1..l_array_balance_type_code.COUNT
12881        DELETE FROM XLA_AE_LINES_GT
12882        WHERE ae_header_id      = l_array_ae_header_id(i)
12883        AND event_id            = l_array_event_id(i)
12884        AND ledger_id           = l_array_ledger_id(i)
12885        AND 'Y'                 = l_array_bflow_historic (i);
12886 
12887        --
12888        -- Bug 5339999 Delete the problematic lines from xla_ae_headers_gt.
12889        --
12890 
12891        FORALL i IN 1..l_array_balance_type_code.COUNT
12892        DELETE FROM XLA_AE_HEADERS_GT
12893        WHERE ae_header_id    = l_array_ae_header_id(i)
12894        AND event_id          = l_array_event_id(i)
12895        AND ledger_id         = l_array_ledger_id(i)
12896        AND 'Y'               = l_array_bflow_historic (i);
12897 
12898 
12899 
12900 
12901 
12902 -------------------------------------------------------------------------
12903  -- Update JE header status for invalid entries
12904  -------------------------------------------------------------------------
12905 
12906  FORALL i IN 1..l_array_balance_type_code.COUNT
12907 
12908            UPDATE xla_ae_headers_gt
12909               SET accounting_entry_status_code = XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID,  -- C_INVALID_STATUS
12910 	      event_status_code='I' --Bug 13493286
12911             WHERE balance_type_code = l_array_balance_type_code(i)
12912             AND ae_header_id        = l_array_ae_header_id(i)
12913             AND event_id            = l_array_event_id(i)
12914             AND ledger_id           = l_array_ledger_id(i);
12915 
12916 
12917 -------------------------------------------------------------------------
12918  -- Update JE line for invalid entries
12919  -------------------------------------------------------------------------
12920 
12921         FORALL i IN 1..l_array_balance_type_code.COUNT
12922            UPDATE /*+ index(xalg xla_ae_lines_gt_n2) */ xla_ae_lines_gt xalg
12923               SET xalg.code_combination_status_code = C_INVALID
12924                 , xalg.code_combination_id = -1
12925             WHERE xalg.balance_type_code = l_array_balance_type_code(i)
12926             AND xalg.ae_header_id        = l_array_ae_header_id(i)
12927             AND xalg.temp_line_num       = l_array_line_num(i)
12928             AND xalg.event_id            = l_array_event_id(i)
12929             AND xalg.ledger_id           = l_array_ledger_id(i);
12930 
12931      END IF;
12932    END IF;
12933 
12934 
12935    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12936       trace(p_msg      => 'END of BusinessFlowPriorEntries'
12937            ,p_level    => C_LEVEL_PROCEDURE
12938            ,p_module   => l_log_module);
12939    END IF;
12940 
12941 EXCEPTION
12942    --
12943    WHEN xla_exceptions_pkg.application_exception THEN
12944       RAISE;
12945    WHEN OTHERS  THEN
12946       xla_exceptions_pkg.raise_message
12947                   (p_location => 'xla_ae_lines_pkg.BusinessFlowPriorEntries');
12948    --
12949 END BusinessFlowPriorEntries;
12950 
12951 /*======================================================================+
12952 |                                                                       |
12953 | Public Procedure- Business Flow Same Entry - 4219869                  |
12954 |                                                                       |
12955 |                                                                       |
12956 +======================================================================*/
12957 PROCEDURE BusinessFlowSameEntries IS
12958 
12959    l_log_module         VARCHAR2(240);
12960    --
12961    -- Define local variables
12962    --
12963    l_err_count INTEGER;
12964    l_array_ae_header_id                   xla_cmp_source_pkg.t_array_Num;
12965    l_array_temp_line_num                  xla_cmp_source_pkg.t_array_Num; -- 5443083 l_array_ae_line_num
12966    l_array_event_id                       xla_cmp_source_pkg.t_array_Num;
12967    l_array_ledger_id                      xla_cmp_source_pkg.t_array_Num;
12968    l_array_balance_type_code              xla_cmp_source_pkg.t_array_VL30;
12969    l_array_entity_id                      xla_cmp_source_pkg.t_array_Num;
12970    l_array_ref_ae_header_id               xla_cmp_source_pkg.t_array_Num;  -- 5443083
12971    l_array_header_num                     xla_cmp_source_pkg.t_array_Num;  -- 5443083
12972    l_array_ledger_category                xla_cmp_source_pkg.t_array_VL30; -- 5443083
12973    l_array_zero_amount_flag               xla_cmp_source_pkg.t_array_VL1;  -- 5443083
12974    --
12975    -- Cursor to return the same entry lines that are not processed
12976    --
12977    CURSOR c_bflow_unprocessed_lines IS
12978      SELECT  /*+ LEADING(L) USE_NL(L XLR)*/  l.ae_header_id  --added comment for bug 14246749
12979           , l.temp_line_num           -- 5443083 l.ae_line_num
12980           , l.event_id
12981           , l.ledger_id
12982           , l.balance_type_code
12983           , h.entity_id
12984           , l.ref_ae_header_id        -- 5443083
12985           , l.header_num              -- 5443083
12986           , xlr.ledger_category_code  -- 5443083
12987           , DECODE(NVL(l.unrounded_entered_dr,0)
12988                       ,0, DECODE(NVL(l.unrounded_entered_cr,0)
12989                                 ,0, DECODE(NVL(l.unrounded_accounted_dr,0)
12990                                           ,0, DECODE(NVL(l.unrounded_accounted_cr,0)
12991                                                     ,0,'Y'
12992                                                     ,'N')
12993                                           ,'N')
12994                                 ,'N')
12995                       ,'N')           -- 5443083
12996        FROM xla_ae_lines_gt l
12997            ,xla_ae_headers_gt h
12998            ,xla_gl_ledgers_v  xlr
12999       WHERE (reversal_code = C_DUMMY_SAME
13000       OR     reversal_code = C_MPA_SAME_ENTRY)  -- 4655713b
13001       AND   l.ae_header_id      = h.ae_header_id
13002       AND   l.ledger_id         = h.ledger_id            -- 5443083
13003       AND   l.balance_type_code = h.balance_type_code    -- 5443083
13004       AND   l.header_num        = h.header_num           -- 5443083
13005       AND   l.ledger_id         = xlr.ledger_id          -- 5443083
13006      ORDER BY l.ae_header_id;
13007 
13008    -- Cursor to return all Headers that still have unprocessed lines bug#11066172
13009     CURSOR c_bflowsame_error_headers IS
13010       SELECT DISTINCT l.ae_header_id
13011           , l.event_id
13012           , l.ledger_id
13013           , l.balance_type_code
13014           , l.header_num
13015        FROM xla_ae_lines_gt l
13016       WHERE (reversal_code = C_DUMMY_SAME
13017         OR     reversal_code = C_MPA_SAME_ENTRY)
13018      ORDER BY l.ae_header_id;
13019 
13020 
13021 -- 4913967 for performance fix
13022 l_array_same_segment1                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13023 l_array_same_segment2                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13024 l_array_same_segment3                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13025 l_array_same_segment4                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13026 l_array_same_segment5                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13027 l_array_same_segment6                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13028 l_array_same_segment7                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13029 l_array_same_segment8                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13030 l_array_same_segment9                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13031 l_array_same_segment10                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13032 l_array_same_segment11                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13033 l_array_same_segment12                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13034 l_array_same_segment13                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13035 l_array_same_segment14                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13036 l_array_same_segment15                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13037 l_array_same_segment16                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13038 l_array_same_segment17                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13039 l_array_same_segment18                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13040 l_array_same_segment19                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13041 l_array_same_segment20                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13042 l_array_same_segment21                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13043 l_array_same_segment22                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13044 l_array_same_segment23                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13045 l_array_same_segment24                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13046 l_array_same_segment25                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13047 l_array_same_segment26                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13048 l_array_same_segment27                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13049 l_array_same_segment28                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13050 l_array_same_segment29                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13051 l_array_same_segment30                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13052 l_array_same_ccid                         XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
13053 l_array_same_description                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_V4000L;
13054 l_array_same_reversal_code                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13055 l_array_join_ledger_id                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
13056 l_array_join_ref_ae_header_id             XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
13057 l_array_join_temp_line_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
13058 l_array_join_ae_header_id                 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
13059 l_array_join_header_num                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
13060 
13061 -- 4655713b MPA and Accrual Reversal
13062 l_array_mpa_segment1                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13063 l_array_mpa_segment2                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13064 l_array_mpa_segment3                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13065 l_array_mpa_segment4                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13066 l_array_mpa_segment5                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13067 l_array_mpa_segment6                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13068 l_array_mpa_segment7                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13069 l_array_mpa_segment8                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13070 l_array_mpa_segment9                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13071 l_array_mpa_segment10                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13072 l_array_mpa_segment11                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13073 l_array_mpa_segment12                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13074 l_array_mpa_segment13                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13075 l_array_mpa_segment14                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13076 l_array_mpa_segment15                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13077 l_array_mpa_segment16                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13078 l_array_mpa_segment17                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13079 l_array_mpa_segment18                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13080 l_array_mpa_segment19                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13081 l_array_mpa_segment20                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13082 l_array_mpa_segment21                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13083 l_array_mpa_segment22                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13084 l_array_mpa_segment23                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13085 l_array_mpa_segment24                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13086 l_array_mpa_segment25                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13087 l_array_mpa_segment26                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13088 l_array_mpa_segment27                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13089 l_array_mpa_segment28                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13090 l_array_mpa_segment29                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13091 l_array_mpa_segment30                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13092 l_array_mpa_ccid                         XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
13093 l_array_mpa_ccid_status_code             XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13094 l_array_mpa_description                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_V4000L;
13095 l_array_mpa_ledger_id                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
13096 l_array_mpa_ref_ae_header_id             XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
13097 l_array_mpa_temp_line_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
13098 l_array_mpa_ae_header_id                 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
13099 l_array_mpa_header_num                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  -- join conditions
13100 
13101 BEGIN
13102 
13103    IF g_log_enabled THEN
13104       l_log_module := C_DEFAULT_MODULE||'.BusinessFlowSameEntries';
13105    END IF;
13106 --
13107    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13108       trace
13109            (p_msg      => 'BEGIN of BusinessFlowSameEntries'
13110            ,p_level    => C_LEVEL_PROCEDURE
13111            ,p_module   => l_log_module);
13112    END IF;
13113 
13114    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13115        trace
13116            (p_msg      => 'g_num_bflow_same_entries = '||g_num_bflow_same_entries
13117             ,p_level    => C_LEVEL_STATEMENT
13118             ,p_module   => l_log_module);
13119    END IF;
13120 
13121 
13122    IF (g_num_bflow_same_entries > 0) THEN
13123 --
13124       -- Update DUMMY_BFSE rows based on the other line in the same entry
13125       -- If not exactly one line is found for the same entry, it is an error
13126       --
13127       --
13128       -- Fix bug4384869 - if segment values is null from the same entry, determine
13129       -- the segment from the ccid of the prior entry
13130 
13131       -----------------------------------------------------------------------------------------------------------
13132       -- 4913967  Modify for performance
13133       -----------------------------------------------------------------------------------------------------------
13134       SELECT      CASE WHEN count(*) = 1
13135                        THEN MIN(DECODE(xal.segment1, C_CHAR, NVL(xal2.segment1,gcc.segment1), xal.segment1))
13136                        ELSE MIN(DECODE(xal.segment1, C_CHAR, NULL, xal.segment1)) END
13137                 , CASE WHEN count(*) = 1
13138                        THEN MIN(DECODE(xal.segment2, C_CHAR, NVL(xal2.segment2,gcc.segment2), xal.segment2))
13139                        ELSE MIN(DECODE(xal.segment2, C_CHAR, NULL, xal.segment2)) END
13140                 , CASE WHEN count(*) = 1
13141                        THEN MIN(DECODE(xal.segment3, C_CHAR, NVL(xal2.segment3,gcc.segment3), xal.segment3))
13142                        ELSE MIN(DECODE(xal.segment3, C_CHAR, NULL, xal.segment3)) END
13143                 , CASE WHEN count(*) = 1
13144                        THEN MIN(DECODE(xal.segment4, C_CHAR, NVL(xal2.segment4,gcc.segment4), xal.segment4))
13145                        ELSE MIN(DECODE(xal.segment4, C_CHAR, NULL, xal.segment4)) END
13146                 , CASE WHEN count(*) = 1
13147                        THEN MIN(DECODE(xal.segment5, C_CHAR, NVL(xal2.segment5,gcc.segment5), xal.segment5))
13148                        ELSE MIN(DECODE(xal.segment5, C_CHAR, NULL, xal.segment5)) END
13149                 , CASE WHEN count(*) = 1
13150                        THEN MIN(DECODE(xal.segment6, C_CHAR, NVL(xal2.segment6,gcc.segment6), xal.segment6))
13151                        ELSE MIN(DECODE(xal.segment6, C_CHAR, NULL, xal.segment6)) END
13152                 , CASE WHEN count(*) = 1
13153                        THEN MIN(DECODE(xal.segment7, C_CHAR, NVL(xal2.segment7,gcc.segment7), xal.segment7))
13154                        ELSE MIN(DECODE(xal.segment7, C_CHAR, NULL, xal.segment7)) END
13155                 , CASE WHEN count(*) = 1
13156                        THEN MIN(DECODE(xal.segment8, C_CHAR, NVL(xal2.segment8,gcc.segment8), xal.segment8))
13157                        ELSE MIN(DECODE(xal.segment8, C_CHAR, NULL, xal.segment8)) END
13158                 , CASE WHEN count(*) = 1
13159                        THEN MIN(DECODE(xal.segment9, C_CHAR, NVL(xal2.segment9,gcc.segment9), xal.segment9))
13160                        ELSE MIN(DECODE(xal.segment9, C_CHAR, NULL, xal.segment9)) END
13161                 , CASE WHEN count(*) = 1
13162                        THEN MIN(DECODE(xal.segment10, C_CHAR, NVL(xal2.segment10,gcc.segment10), xal.segment10))
13163                        ELSE MIN(DECODE(xal.segment10, C_CHAR, NULL, xal.segment10)) END
13164                 , CASE WHEN count(*) = 1
13165                        THEN MIN(DECODE(xal.segment11, C_CHAR, NVL(xal2.segment11,gcc.segment11), xal.segment11))
13166                        ELSE MIN(DECODE(xal.segment11, C_CHAR, NULL, xal.segment11)) END
13167                 , CASE WHEN count(*) = 1
13168                        THEN MIN(DECODE(xal.segment12, C_CHAR, NVL(xal2.segment12,gcc.segment12), xal.segment12))
13169                        ELSE MIN(DECODE(xal.segment12, C_CHAR, NULL, xal.segment12)) END
13170                 , CASE WHEN count(*) = 1
13171                        THEN MIN(DECODE(xal.segment13, C_CHAR, NVL(xal2.segment13,gcc.segment13), xal.segment13))
13172                        ELSE MIN(DECODE(xal.segment13, C_CHAR, NULL, xal.segment13)) END
13173                 , CASE WHEN count(*) = 1
13174                        THEN MIN(DECODE(xal.segment14, C_CHAR, NVL(xal2.segment14,gcc.segment14), xal.segment14))
13175                        ELSE MIN(DECODE(xal.segment14, C_CHAR, NULL, xal.segment14)) END
13176                 , CASE WHEN count(*) = 1
13177                        THEN MIN(DECODE(xal.segment15, C_CHAR, NVL(xal2.segment15,gcc.segment15), xal.segment15))
13178                        ELSE MIN(DECODE(xal.segment15, C_CHAR, NULL, xal.segment15)) END
13179                 , CASE WHEN count(*) = 1
13180                        THEN MIN(DECODE(xal.segment16, C_CHAR, NVL(xal2.segment16,gcc.segment16), xal.segment16))
13181                        ELSE MIN(DECODE(xal.segment16, C_CHAR, NULL, xal.segment16)) END
13182                 , CASE WHEN count(*) = 1
13183                        THEN MIN(DECODE(xal.segment17, C_CHAR, NVL(xal2.segment17,gcc.segment17), xal.segment17))
13184                        ELSE MIN(DECODE(xal.segment17, C_CHAR, NULL, xal.segment17)) END
13185                 , CASE WHEN count(*) = 1
13186                        THEN MIN(DECODE(xal.segment18, C_CHAR, NVL(xal2.segment18,gcc.segment18), xal.segment18))
13187                        ELSE MIN(DECODE(xal.segment18, C_CHAR, NULL, xal.segment18)) END
13188                 , CASE WHEN count(*) = 1
13189                        THEN MIN(DECODE(xal.segment19, C_CHAR, NVL(xal2.segment19,gcc.segment19), xal.segment19))
13190                        ELSE MIN(DECODE(xal.segment19, C_CHAR, NULL, xal.segment19)) END
13191                 , CASE WHEN count(*) = 1
13192                        THEN MIN(DECODE(xal.segment20, C_CHAR, NVL(xal2.segment20,gcc.segment20), xal.segment20))
13193                        ELSE MIN(DECODE(xal.segment20, C_CHAR, NULL, xal.segment20)) END
13194                 , CASE WHEN count(*) = 1
13195                        THEN MIN(DECODE(xal.segment21, C_CHAR, NVL(xal2.segment21,gcc.segment21), xal.segment21))
13196                        ELSE MIN(DECODE(xal.segment21, C_CHAR, NULL, xal.segment21)) END
13197                 , CASE WHEN count(*) = 1
13198                        THEN MIN(DECODE(xal.segment22, C_CHAR, NVL(xal2.segment22,gcc.segment22), xal.segment22))
13199                        ELSE MIN(DECODE(xal.segment22, C_CHAR, NULL, xal.segment22)) END
13200                 , CASE WHEN count(*) = 1
13201                        THEN MIN(DECODE(xal.segment23, C_CHAR, NVL(xal2.segment23,gcc.segment23), xal.segment23))
13202                        ELSE MIN(DECODE(xal.segment23, C_CHAR, NULL, xal.segment23)) END
13203                 , CASE WHEN count(*) = 1
13204                        THEN MIN(DECODE(xal.segment24, C_CHAR, NVL(xal2.segment24,gcc.segment24), xal.segment24))
13205                        ELSE MIN(DECODE(xal.segment24, C_CHAR, NULL, xal.segment24)) END
13206                 , CASE WHEN count(*) = 1
13207                        THEN MIN(DECODE(xal.segment25, C_CHAR, NVL(xal2.segment25,gcc.segment25), xal.segment25))
13208                        ELSE MIN(DECODE(xal.segment25, C_CHAR, NULL, xal.segment25)) END
13209                 , CASE WHEN count(*) = 1
13210                        THEN MIN(DECODE(xal.segment26, C_CHAR, NVL(xal2.segment26,gcc.segment26), xal.segment26))
13211                        ELSE MIN(DECODE(xal.segment26, C_CHAR, NULL, xal.segment26)) END
13212                 , CASE WHEN count(*) = 1
13213                        THEN MIN(DECODE(xal.segment27, C_CHAR, NVL(xal2.segment27,gcc.segment27), xal.segment27))
13214                        ELSE MIN(DECODE(xal.segment27, C_CHAR, NULL, xal.segment27)) END
13215                 , CASE WHEN count(*) = 1
13216                        THEN MIN(DECODE(xal.segment28, C_CHAR, NVL(xal2.segment28,gcc.segment28), xal.segment28))
13217                        ELSE MIN(DECODE(xal.segment28, C_CHAR, NULL, xal.segment28)) END
13218                 , CASE WHEN count(*) = 1
13219                        THEN MIN(DECODE(xal.segment29, C_CHAR, NVL(xal2.segment29,gcc.segment29), xal.segment29))
13220                        ELSE MIN(DECODE(xal.segment29, C_CHAR, NULL, xal.segment29)) END
13221                 , CASE WHEN count(*) = 1
13222                        THEN MIN(DECODE(xal.segment30, C_CHAR, NVL(xal2.segment30,gcc.segment30), xal.segment30))
13223                        ELSE MIN(DECODE(xal.segment30, C_CHAR, NULL, xal.segment30)) END
13224                 , CASE WHEN count(*) = 1
13225                        THEN MIN(DECODE(xal.code_combination_id, C_NUM, xal2.code_combination_id, xal.code_combination_id))
13226                        ELSE -1 END
13227                 , CASE WHEN count(*) = 1
13228                        THEN MIN(DECODE(xal.inherit_desc_flag, 'Y', xal2.description, xal.description)) ELSE NULL END
13229                 , CASE WHEN count(*) = 1
13230                        THEN NULL ELSE MIN(xal.reversal_code) END
13231                 -- join conditions
13232                 , CASE WHEN count(*) = 1
13233                        THEN xal.ledger_id ELSE NULL END
13234                 , CASE WHEN count(*) = 1
13235                        THEN xal.ref_ae_header_id ELSE NULL END
13236                 , CASE WHEN count(*) = 1
13237                        THEN xal.temp_line_num ELSE NULL END
13238                 , CASE WHEN count(*) = 1
13239                        THEN xal.ae_header_id ELSE NULL END
13240                 , CASE WHEN count(*) = 1
13241                        THEN NVL(xal.header_num,0) ELSE NULL END
13242       BULK COLLECT INTO
13243                   l_array_same_segment1
13244                 , l_array_same_segment2
13245                 , l_array_same_segment3
13246                 , l_array_same_segment4
13247                 , l_array_same_segment5
13248                 , l_array_same_segment6
13249                 , l_array_same_segment7
13250                 , l_array_same_segment8
13251                 , l_array_same_segment9
13252                 , l_array_same_segment10
13253                 , l_array_same_segment11
13254                 , l_array_same_segment12
13255                 , l_array_same_segment13
13256                 , l_array_same_segment14
13257                 , l_array_same_segment15
13258                 , l_array_same_segment16
13259                 , l_array_same_segment17
13260                 , l_array_same_segment18
13261                 , l_array_same_segment19
13262                 , l_array_same_segment20
13263                 , l_array_same_segment21
13264                 , l_array_same_segment22
13265                 , l_array_same_segment23
13266                 , l_array_same_segment24
13267                 , l_array_same_segment25
13268                 , l_array_same_segment26
13269                 , l_array_same_segment27
13270                 , l_array_same_segment28
13271                 , l_array_same_segment29
13272                 , l_array_same_segment30
13273                 , l_array_same_ccid
13274                 , l_array_same_description
13275                 , l_array_same_reversal_code
13276                 -- join conditions
13277                 , l_array_join_ledger_id
13278                 , l_array_join_ref_ae_header_id
13279                 , l_array_join_temp_line_num
13280                 , l_array_join_ae_header_id
13281                 , l_array_join_header_num
13282       FROM  xla_ae_lines_gt          xal2
13283          ,  xla_ae_lines_gt          xal
13284          ,  gl_code_combinations     gcc
13285       WHERE xal2.source_distribution_type                  = xal.source_distribution_type
13286       AND   NVL(xal2.source_distribution_id_num_1,C_NUM)   = NVL(xal.source_distribution_id_num_1,C_NUM)
13287       AND   NVL(xal2.source_distribution_id_num_2,C_NUM)   = NVL(xal.source_distribution_id_num_2,C_NUM)
13288       AND   NVL(xal2.source_distribution_id_num_3,C_NUM)   = NVL(xal.source_distribution_id_num_3,C_NUM)
13289       AND   NVL(xal2.source_distribution_id_num_4,C_NUM)   = NVL(xal.source_distribution_id_num_4,C_NUM)
13290       AND   NVL(xal2.source_distribution_id_num_5,C_NUM)   = NVL(xal.source_distribution_id_num_5,C_NUM)
13291       AND   NVL(xal2.source_distribution_id_char_1,C_CHAR) = NVL(xal.source_distribution_id_char_1,C_CHAR)
13292       AND   NVL(xal2.source_distribution_id_char_2,C_CHAR) = NVL(xal.source_distribution_id_char_2,C_CHAR)
13293       AND   NVL(xal2.source_distribution_id_char_3,C_CHAR) = NVL(xal.source_distribution_id_char_3,C_CHAR)
13294       AND   NVL(xal2.source_distribution_id_char_4,C_CHAR) = NVL(xal.source_distribution_id_char_4,C_CHAR)
13295       AND   NVL(xal2.source_distribution_id_char_5,C_CHAR) = NVL(xal.source_distribution_id_char_5,C_CHAR)
13296       AND   xal2.event_id                      = xal.event_id
13297       AND   xal2.ledger_id                     = xal.ledger_id
13298       AND   xal2.balance_type_code             = xal.balance_type_code
13299       AND   xal2.event_class_code              = xal.event_class_code
13300       AND   xal2.event_type_code               = xal.event_type_code
13301       AND   xal2.line_definition_owner_code    = xal.line_definition_owner_code
13302       AND   xal2.line_definition_code          = xal.line_definition_code
13303       AND   xal2.natural_side_code             = DECODE(xal.natural_side_code, 'C', 'D', 'C')
13304       AND   gcc.code_combination_id(+)         = xal2.code_combination_id -- bug4384869
13305    -- AND   nvl(xal2.reversal_code, 'A') not in (C_DUMMY_SAME, C_DUMMY_PRIOR)  -- 5001981
13306       AND   xal.reversal_code = C_DUMMY_SAME
13307       AND   NVL(xal2.header_num,0) = 0  -- 4655713b  excludes MPA/Accrual Reversal lines,cannot be used for bflow
13308       GROUP BY xal.ledger_id    -- 5068675
13309               ,xal.ref_ae_header_id
13310               ,xal.temp_line_num
13311               ,xal.ae_header_id
13312               ,xal.header_num;
13313 
13314       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13315          trace
13316             (p_msg      => 'Number of events = '||l_array_join_ledger_id.COUNT
13317             ,p_level    => C_LEVEL_STATEMENT
13318             ,p_module   => l_log_module);
13319 
13320          FOR i IN 1..l_array_join_ledger_id.COUNT LOOP
13321              trace
13322             (p_msg      => 'from array    ledger='||l_array_join_ledger_id(i)|| ' ref_ae_header='||l_array_join_ref_ae_header_id(i)||
13323                            ' temp_line='||l_array_join_temp_line_num(i)|| ' ae_header='||l_array_join_ae_header_id(i)||
13324                            ' header_num='||l_array_join_header_num(i)||
13325                            ' s1='||l_array_same_segment1(i)||' s2='||l_array_same_segment2(i)||
13326                            ' s3='||l_array_same_segment3(i)||' s4='||l_array_same_segment4(i)||
13327                            ' s5='||l_array_same_segment5(i)||' s6='||l_array_same_segment6(i)||
13328                            ' s7='||l_array_same_segment7(i)||' s8='||l_array_same_segment8(i)||
13329                            ' s9='||l_array_same_segment9(i)||' s10='||l_array_same_segment10(i)||
13330                            ' s11='||l_array_same_segment11(i)||' s12='||l_array_same_segment12(i)||
13331                            ' s13='||l_array_same_segment13(i)||' s14='||l_array_same_segment14(i)||
13332                            ' s15='||l_array_same_segment15(i)||' s16='||l_array_same_segment16(i)||
13333                            ' s17='||l_array_same_segment17(i)||' s18='||l_array_same_segment18(i)||
13334                            ' s19='||l_array_same_segment19(i)||' s20='||l_array_same_segment20(i)||
13335                            ' s21='||l_array_same_segment21(i)||' s22='||l_array_same_segment22(i)||
13336                            ' s23='||l_array_same_segment23(i)||' s24='||l_array_same_segment24(i)||
13337                            ' s25='||l_array_same_segment25(i)||' s26='||l_array_same_segment26(i)||
13338                            ' s27='||l_array_same_segment27(i)||' s28='||l_array_same_segment28(i)||
13339                            ' s29='||l_array_same_segment29(i)||' s30='||l_array_same_segment30(i)||
13340                            ' ccid='||l_array_same_ccid(i)
13341             ,p_level    => C_LEVEL_STATEMENT
13342             ,p_module   => l_log_module);
13343          END LOOP;
13344 
13345          FOR i IN (select * from xla_ae_Lines_gt where reversal_code=C_DUMMY_SAME) LOOP
13346             trace
13347             (p_msg      => 'ae_lines_gt  SE dist ledger='||i.ledger_id||' ref_ae_header='||i.ref_ae_header_id||
13348                            ' temp_line='||i.temp_line_num||' ae_header='||i.ae_header_id||' header_num='||i.header_num||
13349                            ' bflow='||i.business_method_code||
13350                            ' line='||i.line_definition_code|| ' dist='||i.source_distribution_type||' rev='||i.reversal_code||
13351                            ' n1='||i.source_distribution_id_num_1|| ' n2='||i.source_distribution_id_num_2||
13352                            ' n3='||i.source_distribution_id_num_3|| ' n4='||i.source_distribution_id_num_4||
13353                            ' n5='||i.source_distribution_id_num_5|| ' c1='||i.source_distribution_id_char_1||
13354                            ' c2='||i.source_distribution_id_char_2|| ' c3='||i.source_distribution_id_char_3||
13355                            ' c4='||i.source_distribution_id_char_4|| ' c5='||i.source_distribution_id_char_5||
13356                            ' bal='||i.balance_type_code|| ' side='||i.natural_side_code||
13357                            ' rev='||i.reversal_code
13358             ,p_level    => C_LEVEL_STATEMENT
13359             ,p_module   => l_log_module);
13360          END LOOP;
13361 
13362          FOR i IN (select * from xla_ae_Lines_gt where reversal_code=C_DUMMY_SAME) LOOP
13363              trace
13364             (p_msg      => '                seg s1='||i.segment1||' s2='||i.segment2|| ' s3='||i.segment3||' s4='||i.segment4||
13365                                        ' s5='||i.segment5||' s6='||i.segment6|| ' s7='||i.segment7||' s8='||i.segment8||
13366                                        ' s9='||i.segment9||' s10='||i.segment10|| ' s11='||i.segment11||' s12='||i.segment12||
13367                                        ' s13='||i.segment13||' s14='||i.segment14|| ' s15='||i.segment15||' s16='||i.segment16||
13368                                        ' s17='||i.segment17||' s18='||i.segment18|| ' s19='||i.segment19||' s20='||i.segment20||
13369                                        ' s21='||i.segment21||' s22='||i.segment22|| ' s23='||i.segment23||' s24='||i.segment24||
13370                                        ' s25='||i.segment25||' s26='||i.segment26|| ' s27='||i.segment27||' s28='||i.segment28||
13371                                        ' s29='||i.segment29||' s30='||i.segment30||' ccid='||i.code_combination_id
13372             ,p_level    => C_LEVEL_STATEMENT
13373             ,p_module   => l_log_module);
13374          END LOOP;
13375 
13376       END IF;
13377 
13378       FORALL i IN 1..l_array_join_ledger_id.COUNT
13379          UPDATE /*+ INDEX(xal, XLA_AE_LINES_GT_U1)*/  xla_ae_lines_gt xal
13380 	       -- added hint for 8920369
13381          SET      segment1  = l_array_same_segment1(i)
13382                 , segment2  = l_array_same_segment2(i)
13383                 , segment3  = l_array_same_segment3(i)
13384                 , segment4  = l_array_same_segment4(i)
13385                 , segment5  = l_array_same_segment5(i)
13386                 , segment6  = l_array_same_segment6(i)
13387                 , segment7  = l_array_same_segment7(i)
13388                 , segment8  = l_array_same_segment8(i)
13389                 , segment9  = l_array_same_segment9(i)
13390                 , segment10 = l_array_same_segment10(i)
13391                 , segment11 = l_array_same_segment11(i)
13392                 , segment12 = l_array_same_segment12(i)
13393                 , segment13 = l_array_same_segment13(i)
13394                 , segment14 = l_array_same_segment14(i)
13395                 , segment15 = l_array_same_segment15(i)
13396                 , segment16 = l_array_same_segment16(i)
13397                 , segment17 = l_array_same_segment17(i)
13398                 , segment18 = l_array_same_segment18(i)
13399                 , segment19 = l_array_same_segment19(i)
13400                 , segment20 = l_array_same_segment20(i)
13401                 , segment21 = l_array_same_segment21(i)
13402                 , segment22 = l_array_same_segment22(i)
13403                 , segment23 = l_array_same_segment23(i)
13404                 , segment24 = l_array_same_segment24(i)
13405                 , segment25 = l_array_same_segment25(i)
13406                 , segment26 = l_array_same_segment26(i)
13407                 , segment27 = l_array_same_segment27(i)
13408                 , segment28 = l_array_same_segment28(i)
13409                 , segment29 = l_array_same_segment29(i)
13410                 , segment30 = l_array_same_segment30(i)
13411                 , code_combination_id  = l_array_same_ccid(i)
13412                 , code_combination_status_code = DECODE(l_array_same_ccid(i),NULL,C_PROCESSING     -- 4655713b used in Create_CCID
13413                                                                                  ,C_NOT_PROCESSED) -- 4655713  used in Override_CCID
13414                 , description          = l_array_same_description(i)
13415                 , reversal_code        = l_array_same_reversal_code(i)
13416            WHERE xal.ledger_id         = l_array_join_ledger_id(i)
13417            AND   xal.ref_ae_header_id  = l_array_join_ref_ae_header_id(i)
13418            AND   xal.temp_line_num     = l_array_join_temp_line_num(i)
13419            AND   xal.ae_header_id      = l_array_join_ae_header_id(i)
13420            AND   NVL(xal.header_num,0) = l_array_join_header_num(i);
13421 
13422       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13423          trace
13424             (p_msg      => 'BusinessFlowSameEntries - no of rows updated = '||SQL%ROWCOUNT
13425             ,p_level    => C_LEVEL_STATEMENT
13426             ,p_module   => l_log_module);
13427       END IF;
13428 
13429       -------------------------------------------------------------------------------------------------------------------------
13430       -- 4655713b Updates MPA-Accrual (not MPA-Recognition) and Accrual Reversal lines with Same Entry
13431       -------------------------------------------------------------------------------------------------------------------------
13432    IF xla_accounting_pkg.g_mpa_accrual_exists = 'Y' THEN                                                                -- 7128871
13433             SELECT /*+ Leading (xal1,xah1,xal2) index(xah1 XLA_AE_HEADERS_GT_U1) index(xal2 XLA_AE_LINES_GT_N2) no_expand */  -- 7128871
13434                    xal2.segment1,  xal2.segment2,  xal2.segment3,  xal2.segment4,  xal2.segment5
13435             ,xal2.segment6,  xal2.segment7,  xal2.segment8,  xal2.segment9,  xal2.segment10
13436             ,xal2.segment11, xal2.segment12, xal2.segment13, xal2.segment14, xal2.segment15
13437             ,xal2.segment16, xal2.segment17, xal2.segment18, xal2.segment19, xal2.segment20
13438             ,xal2.segment21, xal2.segment22, xal2.segment23, xal2.segment24, xal2.segment25
13439             ,xal2.segment26, xal2.segment27, xal2.segment28, xal2.segment29, xal2.segment30
13440             ,xal2.code_combination_id
13441             ,xal2.code_combination_status_code
13442             ,DECODE(NVL(xal1.inherit_desc_flag,'N'), 'Y', xal2.description, xal1.description)
13443             -- join conditions
13444             ,xal1.ledger_id
13445             ,xal1.ref_ae_header_id
13446             ,xal1.temp_line_num
13447             ,xal1.ae_header_id
13448             ,xal1.header_num
13449       BULK COLLECT INTO
13450              l_array_mpa_segment1 ,l_array_mpa_segment2 ,l_array_mpa_segment3 ,l_array_mpa_segment4 ,l_array_mpa_segment5
13451             ,l_array_mpa_segment6 ,l_array_mpa_segment7 ,l_array_mpa_segment8 ,l_array_mpa_segment9 ,l_array_mpa_segment10
13452             ,l_array_mpa_segment11 ,l_array_mpa_segment12 ,l_array_mpa_segment13 ,l_array_mpa_segment14 ,l_array_mpa_segment15
13453             ,l_array_mpa_segment16 ,l_array_mpa_segment17 ,l_array_mpa_segment18 ,l_array_mpa_segment19 ,l_array_mpa_segment20
13454             ,l_array_mpa_segment21 ,l_array_mpa_segment22 ,l_array_mpa_segment23 ,l_array_mpa_segment24 ,l_array_mpa_segment25
13455             ,l_array_mpa_segment26 ,l_array_mpa_segment27 ,l_array_mpa_segment28 ,l_array_mpa_segment29 ,l_array_mpa_segment30
13456             ,l_array_mpa_ccid
13457             ,l_array_mpa_ccid_status_code
13458             ,l_array_mpa_description
13459             -- join conditions
13460             ,l_array_mpa_ledger_id
13461             ,l_array_mpa_ref_ae_header_id
13462             ,l_array_mpa_temp_line_num
13463             ,l_array_mpa_ae_header_id
13464             ,l_array_mpa_header_num
13465       FROM  xla_ae_lines_gt   xal2   -- Original line
13466            ,xla_ae_headers_gt xah1
13467            ,xla_ae_lines_gt   xal1   -- MPA line
13468       WHERE xal2.source_distribution_type                  = xal1.source_distribution_type
13469       AND   NVL(xal2.source_distribution_id_num_1,C_NUM)   = NVL(xal1.source_distribution_id_num_1,C_NUM)
13470       AND   NVL(xal2.source_distribution_id_num_2,C_NUM)   = NVL(xal1.source_distribution_id_num_2,C_NUM)
13471       AND   NVL(xal2.source_distribution_id_num_3,C_NUM)   = NVL(xal1.source_distribution_id_num_3,C_NUM)
13472       AND   NVL(xal2.source_distribution_id_num_4,C_NUM)   = NVL(xal1.source_distribution_id_num_4,C_NUM)
13473       AND   NVL(xal2.source_distribution_id_num_5,C_NUM)   = NVL(xal1.source_distribution_id_num_5,C_NUM)
13474       AND   NVL(xal2.source_distribution_id_char_1,C_CHAR) = NVL(xal1.source_distribution_id_char_1,C_CHAR)
13475       AND   NVL(xal2.source_distribution_id_char_2,C_CHAR) = NVL(xal1.source_distribution_id_char_2,C_CHAR)
13476       AND   NVL(xal2.source_distribution_id_char_3,C_CHAR) = NVL(xal1.source_distribution_id_char_3,C_CHAR)
13477       AND   NVL(xal2.source_distribution_id_char_4,C_CHAR) = NVL(xal1.source_distribution_id_char_4,C_CHAR)
13478       AND   NVL(xal2.source_distribution_id_char_5,C_CHAR) = NVL(xal1.source_distribution_id_char_5,C_CHAR)
13479       AND   xal2.event_id                      = xal1.event_id
13480       AND   xal2.ledger_id                     = xal1.ledger_id
13481       AND   xal2.balance_type_code             = xal1.balance_type_code
13482       AND   xal2.event_class_code              = xal1.event_class_code
13483       AND   xal2.event_type_code               = xal1.event_type_code
13484       AND   xal2.line_definition_owner_code    = xal1.line_definition_owner_code
13485       AND   xal2.line_definition_code          = xal1.line_definition_code
13486       AND   xal2.ACCOUNTING_LINE_TYPE_CODE     = xal1.ACCOUNTING_LINE_TYPE_CODE
13487       AND   xal2.ACCOUNTING_LINE_CODE          = xal1.ACCOUNTING_LINE_CODE
13488       --
13489       AND   xah1.ledger_id        = xal1.ledger_id
13490       AND   xah1.ae_header_id     = xal1.ae_header_id
13491       AND   xah1.header_num       = xal1.header_num
13492       AND ((xah1.parent_ae_line_num IS NOT NULL AND xal2.temp_line_num = xah1.parent_ae_line_num)  -- MPA
13493       OR    xah1.parent_ae_line_num IS NULL)                                                       -- Accrual Reversal
13494       --  7128871  -------------------------------------
13495       AND XAL1.BALANCE_TYPE_CODE  = XAH1.BALANCE_TYPE_CODE
13496       AND XAL2.AE_HEADER_ID       = XAL1.AE_HEADER_ID
13497       --------------------------------------------------
13498       AND   xal2.header_num       = 0
13499       AND   xal2.reversal_code IS NULL     -- 5443083 found the same entry
13500       AND   xal1.reversal_code    = C_MPA_SAME_ENTRY;
13501 
13502       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13503          trace
13504             (p_msg      => 'BusinessFlowSameEntries - no of MPA/AccRev rows found = '||l_array_mpa_ledger_id.COUNT
13505             ,p_level    => C_LEVEL_STATEMENT
13506             ,p_module   => l_log_module);
13507          FOR i IN 1..l_array_mpa_ledger_id.COUNT LOOP
13508             trace
13509             (p_msg      => 'BusinessFlowSameEntries - mpa lines  ledger='||l_array_mpa_ledger_id(i)||
13510                            ' ref_header='||l_array_mpa_ref_ae_header_id(i)||
13511                            ' temp_line='||l_array_mpa_temp_line_num(i)||
13512                            ' ae_header='||l_array_mpa_ae_header_id(i)||
13513                            ' header_num='||l_array_mpa_header_num(i)
13514             ,p_level    => C_LEVEL_STATEMENT
13515             ,p_module   => l_log_module);
13516          END LOOP;
13517       END IF;
13518 
13519       FORALL i in 1..l_array_mpa_ledger_id.COUNT
13520               -- added hint for 8920369
13521          UPDATE /*+ INDEX(xal, XLA_AE_LINES_GT_U1)*/  xla_ae_lines_gt xal
13522          SET      segment1  = l_array_mpa_segment1(i)
13523                 , segment2  = l_array_mpa_segment2(i)
13524                 , segment3  = l_array_mpa_segment3(i)
13525                 , segment4  = l_array_mpa_segment4(i)
13526                 , segment5  = l_array_mpa_segment5(i)
13527                 , segment6  = l_array_mpa_segment6(i)
13528                 , segment7  = l_array_mpa_segment7(i)
13529                 , segment8  = l_array_mpa_segment8(i)
13530                 , segment9  = l_array_mpa_segment9(i)
13531                 , segment10 = l_array_mpa_segment10(i)
13532                 , segment11 = l_array_mpa_segment11(i)
13533                 , segment12 = l_array_mpa_segment12(i)
13534                 , segment13 = l_array_mpa_segment13(i)
13535                 , segment14 = l_array_mpa_segment14(i)
13536                 , segment15 = l_array_mpa_segment15(i)
13537                 , segment16 = l_array_mpa_segment16(i)
13538                 , segment17 = l_array_mpa_segment17(i)
13539                 , segment18 = l_array_mpa_segment18(i)
13540                 , segment19 = l_array_mpa_segment19(i)
13541                 , segment20 = l_array_mpa_segment20(i)
13542                 , segment21 = l_array_mpa_segment21(i)
13543                 , segment22 = l_array_mpa_segment22(i)
13544                 , segment23 = l_array_mpa_segment23(i)
13545                 , segment24 = l_array_mpa_segment24(i)
13546                 , segment25 = l_array_mpa_segment25(i)
13547                 , segment26 = l_array_mpa_segment26(i)
13548                 , segment27 = l_array_mpa_segment27(i)
13549                 , segment28 = l_array_mpa_segment28(i)
13550                 , segment29 = l_array_mpa_segment29(i)
13551                 , segment30 = l_array_mpa_segment30(i)
13552                 , code_combination_id          = l_array_mpa_ccid(i)
13553                 , code_combination_status_code = l_array_mpa_ccid_status_code(i)  -- 4655713 used in Override_CCID
13554                 , description          = l_array_mpa_description(i)
13555                 , reversal_code        = null
13556            WHERE xal.ledger_id         = l_array_mpa_ledger_id(i)
13557            AND   xal.ref_ae_header_id  = l_array_mpa_ref_ae_header_id(i)
13558            AND   xal.temp_line_num     = l_array_mpa_temp_line_num(i)
13559            AND   xal.ae_header_id      = l_array_mpa_ae_header_id(i)
13560            AND   NVL(xal.header_num,0) = l_array_mpa_header_num(i);
13561       -------------------------------------------------------------------------------------------------------------------------
13562    END IF;  -- 7128871  xla_accounting_pkg.g_mpa_accrual_exists = 'Y'
13563 
13564 
13565      /*-------------------------------------------------------------------------------------------------------------------
13566      -- Replaced for performance fix above
13567      ---------------------------------------------------------------------------------------------------------------------
13568       UPDATE xla_ae_lines_gt xal
13569       SET (segment1,  segment2,  segment3,  segment4,  segment5,  segment6,  segment7,  segment8,  segment9,  segment10
13570           ,segment11, segment12, segment13, segment14, segment15, segment16, segment17, segment18, segment19, segment20
13571           ,segment21, segment22, segment23, segment24, segment25, segment26, segment27, segment28, segment29, segment30
13572           ,code_combination_id
13573           ,description
13574           ,reversal_code) =
13575           (SELECT CASE WHEN count(*) = 1
13576                        THEN MIN(DECODE(xal.segment1, C_CHAR, NVL(xal2.segment1,gcc.segment1), xal.segment1))
13577                        ELSE MIN(DECODE(xal.segment1, C_CHAR, NULL, xal.segment1)) END
13578                 , CASE WHEN count(*) = 1
13579                        THEN MIN(DECODE(xal.segment2, C_CHAR, NVL(xal2.segment2,gcc.segment2), xal.segment2))
13580                        ELSE MIN(DECODE(xal.segment2, C_CHAR, NULL, xal.segment2)) END
13581                 , CASE WHEN count(*) = 1
13582                        THEN MIN(DECODE(xal.segment3, C_CHAR, NVL(xal2.segment3,gcc.segment3), xal.segment3))
13583                        ELSE MIN(DECODE(xal.segment3, C_CHAR, NULL, xal.segment3)) END
13584                 , CASE WHEN count(*) = 1
13585                        THEN MIN(DECODE(xal.segment4, C_CHAR, NVL(xal2.segment4,gcc.segment4), xal.segment4))
13586                        ELSE MIN(DECODE(xal.segment4, C_CHAR, NULL, xal.segment4)) END
13587                 , CASE WHEN count(*) = 1
13588                        THEN MIN(DECODE(xal.segment5, C_CHAR, NVL(xal2.segment5,gcc.segment5), xal.segment5))
13589                        ELSE MIN(DECODE(xal.segment5, C_CHAR, NULL, xal.segment5)) END
13590                 , CASE WHEN count(*) = 1
13591                        THEN MIN(DECODE(xal.segment6, C_CHAR, NVL(xal2.segment6,gcc.segment6), xal.segment6))
13592                        ELSE MIN(DECODE(xal.segment6, C_CHAR, NULL, xal.segment6)) END
13593                 , CASE WHEN count(*) = 1
13594                        THEN MIN(DECODE(xal.segment7, C_CHAR, NVL(xal2.segment7,gcc.segment7), xal.segment7))
13595                        ELSE MIN(DECODE(xal.segment7, C_CHAR, NULL, xal.segment7)) END
13596                 , CASE WHEN count(*) = 1
13597                        THEN MIN(DECODE(xal.segment8, C_CHAR, NVL(xal2.segment8,gcc.segment8), xal.segment8))
13598                        ELSE MIN(DECODE(xal.segment8, C_CHAR, NULL, xal.segment8)) END
13599                 , CASE WHEN count(*) = 1
13600                        THEN MIN(DECODE(xal.segment9, C_CHAR, NVL(xal2.segment9,gcc.segment9), xal.segment9))
13601                        ELSE MIN(DECODE(xal.segment9, C_CHAR, NULL, xal.segment9)) END
13602                 , CASE WHEN count(*) = 1
13603                        THEN MIN(DECODE(xal.segment10, C_CHAR, NVL(xal2.segment10,gcc.segment10), xal.segment10))
13604                        ELSE MIN(DECODE(xal.segment10, C_CHAR, NULL, xal.segment10)) END
13605                 , CASE WHEN count(*) = 1
13606                        THEN MIN(DECODE(xal.segment11, C_CHAR, NVL(xal2.segment11,gcc.segment11), xal.segment11))
13607                        ELSE MIN(DECODE(xal.segment11, C_CHAR, NULL, xal.segment11)) END
13608                 , CASE WHEN count(*) = 1
13609                        THEN MIN(DECODE(xal.segment12, C_CHAR, NVL(xal2.segment12,gcc.segment12), xal.segment12))
13610                        ELSE MIN(DECODE(xal.segment12, C_CHAR, NULL, xal.segment12)) END
13611                 , CASE WHEN count(*) = 1
13612                        THEN MIN(DECODE(xal.segment13, C_CHAR, NVL(xal2.segment13,gcc.segment13), xal.segment13))
13613                        ELSE MIN(DECODE(xal.segment13, C_CHAR, NULL, xal.segment13)) END
13614                 , CASE WHEN count(*) = 1
13615                        THEN MIN(DECODE(xal.segment14, C_CHAR, NVL(xal2.segment14,gcc.segment14), xal.segment14))
13616                        ELSE MIN(DECODE(xal.segment14, C_CHAR, NULL, xal.segment14)) END
13617                 , CASE WHEN count(*) = 1
13618                        THEN MIN(DECODE(xal.segment15, C_CHAR, NVL(xal2.segment15,gcc.segment15), xal.segment15))
13619                        ELSE MIN(DECODE(xal.segment15, C_CHAR, NULL, xal.segment15)) END
13620                 , CASE WHEN count(*) = 1
13621                        THEN MIN(DECODE(xal.segment16, C_CHAR, NVL(xal2.segment16,gcc.segment16), xal.segment16))
13622                        ELSE MIN(DECODE(xal.segment16, C_CHAR, NULL, xal.segment16)) END
13623                 , CASE WHEN count(*) = 1
13624                        THEN MIN(DECODE(xal.segment17, C_CHAR, NVL(xal2.segment17,gcc.segment17), xal.segment17))
13625                        ELSE MIN(DECODE(xal.segment17, C_CHAR, NULL, xal.segment17)) END
13626                 , CASE WHEN count(*) = 1
13627                        THEN MIN(DECODE(xal.segment18, C_CHAR, NVL(xal2.segment18,gcc.segment18), xal.segment18))
13628                        ELSE MIN(DECODE(xal.segment18, C_CHAR, NULL, xal.segment18)) END
13629                 , CASE WHEN count(*) = 1
13630                        THEN MIN(DECODE(xal.segment19, C_CHAR, NVL(xal2.segment19,gcc.segment19), xal.segment19))
13631                        ELSE MIN(DECODE(xal.segment19, C_CHAR, NULL, xal.segment19)) END
13632                 , CASE WHEN count(*) = 1
13633                        THEN MIN(DECODE(xal.segment20, C_CHAR, NVL(xal2.segment20,gcc.segment20), xal.segment20))
13634                        ELSE MIN(DECODE(xal.segment20, C_CHAR, NULL, xal.segment20)) END
13635                 , CASE WHEN count(*) = 1
13636                        THEN MIN(DECODE(xal.segment21, C_CHAR, NVL(xal2.segment21,gcc.segment21), xal.segment21))
13637                        ELSE MIN(DECODE(xal.segment21, C_CHAR, NULL, xal.segment21)) END
13638                 , CASE WHEN count(*) = 1
13639                        THEN MIN(DECODE(xal.segment22, C_CHAR, NVL(xal2.segment22,gcc.segment22), xal.segment22))
13640                        ELSE MIN(DECODE(xal.segment22, C_CHAR, NULL, xal.segment22)) END
13641                 , CASE WHEN count(*) = 1
13642                        THEN MIN(DECODE(xal.segment23, C_CHAR, NVL(xal2.segment23,gcc.segment23), xal.segment23))
13643                        ELSE MIN(DECODE(xal.segment23, C_CHAR, NULL, xal.segment23)) END
13644                 , CASE WHEN count(*) = 1
13645                        THEN MIN(DECODE(xal.segment24, C_CHAR, NVL(xal2.segment24,gcc.segment24), xal.segment24))
13646                        ELSE MIN(DECODE(xal.segment24, C_CHAR, NULL, xal.segment24)) END
13647                 , CASE WHEN count(*) = 1
13648                        THEN MIN(DECODE(xal.segment25, C_CHAR, NVL(xal2.segment25,gcc.segment25), xal.segment25))
13649                        ELSE MIN(DECODE(xal.segment25, C_CHAR, NULL, xal.segment25)) END
13650                 , CASE WHEN count(*) = 1
13651                        THEN MIN(DECODE(xal.segment26, C_CHAR, NVL(xal2.segment26,gcc.segment26), xal.segment26))
13652                        ELSE MIN(DECODE(xal.segment26, C_CHAR, NULL, xal.segment26)) END
13653                 , CASE WHEN count(*) = 1
13654                        THEN MIN(DECODE(xal.segment27, C_CHAR, NVL(xal2.segment27,gcc.segment27), xal.segment27))
13655                        ELSE MIN(DECODE(xal.segment27, C_CHAR, NULL, xal.segment27)) END
13656                 , CASE WHEN count(*) = 1
13657                        THEN MIN(DECODE(xal.segment28, C_CHAR, NVL(xal2.segment28,gcc.segment28), xal.segment28))
13658                        ELSE MIN(DECODE(xal.segment28, C_CHAR, NULL, xal.segment28)) END
13659                 , CASE WHEN count(*) = 1
13660                        THEN MIN(DECODE(xal.segment29, C_CHAR, NVL(xal2.segment29,gcc.segment29), xal.segment29))
13661                        ELSE MIN(DECODE(xal.segment29, C_CHAR, NULL, xal.segment29)) END
13662                 , CASE WHEN count(*) = 1
13663                        THEN MIN(DECODE(xal.segment30, C_CHAR, NVL(xal2.segment30,gcc.segment30), xal.segment30))
13664                        ELSE MIN(DECODE(xal.segment30, C_CHAR, NULL, xal.segment30)) END
13665                 , CASE WHEN count(*) = 1
13666                        THEN MIN(DECODE(xal.code_combination_id, C_NUM, xal2.code_combination_id, xal.code_combination_id))
13667                        ELSE -1 END
13668                 , CASE WHEN count(*) = 1
13669                        THEN MIN(DECODE(xal.inherit_desc_flag, 'Y', xal2.description, xal.description)) ELSE NULL END
13670                 , CASE WHEN count(*) = 1
13671                        THEN NULL ELSE xal.reversal_code END
13672            FROM  xla_ae_lines_gt          xal2
13673               ,  gl_code_combinations     gcc   -- bug4384869
13674            WHERE xal2.source_distribution_type      = xal.source_distribution_type
13675            AND   NVL(xal2.source_distribution_id_num_1,C_NUM)   = NVL(xal.source_distribution_id_num_1,C_NUM)
13676            AND   NVL(xal2.source_distribution_id_num_2,C_NUM)   = NVL(xal.source_distribution_id_num_2,C_NUM)
13677            AND   NVL(xal2.source_distribution_id_num_3,C_NUM)   = NVL(xal.source_distribution_id_num_3,C_NUM)
13678            AND   NVL(xal2.source_distribution_id_num_4,C_NUM)   = NVL(xal.source_distribution_id_num_4,C_NUM)
13679            AND   NVL(xal2.source_distribution_id_num_5,C_NUM)   = NVL(xal.source_distribution_id_num_5,C_NUM)
13680            AND   NVL(xal2.source_distribution_id_char_1,C_CHAR) = NVL(xal.source_distribution_id_char_1,C_CHAR)
13681            AND   NVL(xal2.source_distribution_id_char_2,C_CHAR) = NVL(xal.source_distribution_id_char_2,C_CHAR)
13682            AND   NVL(xal2.source_distribution_id_char_3,C_CHAR) = NVL(xal.source_distribution_id_char_3,C_CHAR)
13683            AND   NVL(xal2.source_distribution_id_char_4,C_CHAR) = NVL(xal.source_distribution_id_char_4,C_CHAR)
13684            AND   NVL(xal2.source_distribution_id_char_5,C_CHAR) = NVL(xal.source_distribution_id_char_5,C_CHAR)
13685            AND   xal2.event_id                      = xal.event_id
13686            AND   xal2.ledger_id                     = xal.ledger_id
13687            AND   xal2.balance_type_code             = xal.balance_type_code
13688            AND   xal2.event_class_code              = xal.event_class_code
13689            AND   xal2.event_type_code               = xal.event_type_code
13690            AND   xal2.line_definition_owner_code    = xal.line_definition_owner_code
13691            AND   xal2.line_definition_code          = xal.line_definition_code
13692            AND   xal2.natural_side_code             = DECODE(xal.natural_side_code, 'C', 'D', 'C')
13693            AND   gcc.code_combination_id(+)         = xal2.code_combination_id -- bug4384869
13694            AND   nvl(xal2.reversal_code, 'A') not in (C_DUMMY_SAME, C_DUMMY_PRIOR)
13695            )
13696       WHERE xal.reversal_code = C_DUMMY_SAME;
13697      -------------------------------------------------------------------------------------------------------------------*/
13698 
13699       --
13700       -- Handle the same entry line that are not processed - ERROR
13701       --
13702       OPEN c_bflow_unprocessed_lines;
13703       LOOP FETCH c_bflow_unprocessed_lines BULK COLLECT INTO l_array_ae_header_id,
13704                                                              l_array_temp_line_num,        -- 5443083 l_array_ae_line_num
13705                                                              l_array_event_id,
13706                                                              l_array_ledger_id,
13707                                                              l_array_balance_type_code,
13708                                                              l_array_entity_id,
13709                                                              l_array_ref_ae_header_id,     -- 5443083
13710                                                              l_array_header_num,           -- 5443083
13711                                                              l_array_ledger_category,      -- 5443083
13712                                                              l_array_zero_amount_flag      -- 5443083
13713                                                              LIMIT C_BULK_LIMIT;
13714 
13715          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13716             trace
13717                (p_module => l_log_module
13718                ,p_msg => 'Count of unprocessed same entry =' || l_array_ae_header_id.COUNT
13719                ,p_level => C_LEVEL_STATEMENT
13720                );
13721          END IF;
13722 
13723          IF l_array_ae_header_id.COUNT = 0 THEN
13724               EXIT;
13725          END IF;
13726 
13727 
13728          FOR i IN 1..l_array_ae_header_id.COUNT LOOP
13729 
13730              IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13731                 trace
13732                    (p_module => l_log_module
13733                    ,p_msg => 'same entry ledger='||l_array_ledger_id(i)||
13734                              ' category='||l_array_ledger_category(i)||
13735                              ' ref_ae_header='||l_array_ref_ae_header_id(i)||
13736                              ' line='||l_array_temp_line_num(i)||
13737                              ' ae_header='||l_array_ae_header_id(i)||
13738                              ' header_num='||l_array_header_num(i)||
13739                              ' zero='||l_array_zero_amount_flag(i)||
13740                              ' event='||l_array_event_id(i)||
13741                              ' bal_type='||l_array_balance_type_code(i)
13742                    ,p_level => C_LEVEL_STATEMENT
13743                    );
13744              END IF;
13745 
13746              IF l_array_zero_amount_flag(i) = 'Y' AND l_array_ledger_category(i) IN ('ALC','SECONDARY') THEN  -- 5443083
13747 
13748                 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13749                    trace
13750                       (p_module => l_log_module
13751                       ,p_msg => 'zero amt same entry ledger='||l_array_ledger_id(i)||
13752                                 ' ref_ae_header='||l_array_ref_ae_header_id(i)||
13753                                 ' temp_line='||l_array_temp_line_num(i)||
13754                                 ' ae_header='||l_array_ae_header_id(i)||
13755                                 ' header_num='||l_array_header_num(i)||
13756                                 ' event='||l_array_event_id(i)
13757                    ,p_level => C_LEVEL_STATEMENT
13758                    );
13759                 END IF;
13760 
13761                 DELETE xla_ae_lines_gt
13762                 WHERE  ledger_id        = l_array_ledger_id(i)
13763                 AND    ref_ae_header_id = l_array_ref_ae_header_id(i)
13764                 AND    temp_line_num    = l_array_temp_line_num(i)
13765                 AND    ae_header_id     = l_array_ae_header_id(i)
13766                 AND    header_num       = l_array_header_num(i);
13767 
13768                 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13769                    trace
13770                       (p_module => l_log_module
13771                       ,p_msg => '     zero amt line deleted='||SQL%ROWCOUNT
13772                       ,p_level => C_LEVEL_STATEMENT
13773                    );
13774                 END IF;
13775 
13776                 DELETE xla_ae_headers_gt hgt
13777                 WHERE  ledger_id         = l_array_ledger_id(i)
13778                 AND    ae_header_id      = l_array_ae_header_id(i)
13779                 AND    balance_type_code = l_array_balance_type_code(i)
13780                 AND    header_num        = l_array_header_num(i)
13781                 AND NOT EXISTS  (SELECT /*+ index(lgt XLA_AE_LINES_GT_N2) */ 1
13782                                  FROM   xla_ae_lines_gt lgt
13783                                  WHERE  lgt.ledger_id    = hgt.ledger_id
13784                                  AND    lgt.ae_header_id = hgt.ae_header_id
13785                                  AND    lgt.header_num   = hgt.header_num
13786                                  AND    lgt.balance_type_code = hgt.balance_type_code);
13787 
13788                 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13789                    trace
13790                       (p_module => l_log_module
13791                       ,p_msg => '     zero amt header deleted='||SQL%ROWCOUNT
13792                       ,p_level => C_LEVEL_STATEMENT
13793                    );
13794                 END IF;
13795 
13796              ELSE
13797                 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status  :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
13798                 xla_accounting_err_pkg.build_message
13799                          (p_appli_s_name  => 'XLA'
13800                          ,p_msg_name      => 'XLA_AP_BFLOW_SE_NOT_FOUND'
13801                          ,p_entity_id     => l_array_entity_id(i)    -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13802                          ,p_event_id      => l_array_event_id(i)     -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13803                          ,p_ledger_id     => l_array_ledger_id(i));  -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13804              END IF;
13805          END LOOP;
13806 
13807          --
13808          -- Update JE lines for those that encountered error
13809          --
13810          FORALL i IN 1..l_array_balance_type_code.COUNT
13811                  UPDATE /*+ INDEX(xla_ae_lines_gt, XLA_AE_LINES_GT_U1)*/  xla_ae_lines_gt
13812                  SET    description = DECODE(description, C_CHAR, NULL, description)
13813                       , code_combination_id = DECODE(code_combination_id, C_NUM, -1, code_combination_id)
13814                       , code_combination_status_code = C_INVALID     -- 4655713
13815                       , segment1  = DECODE(segment1,   C_CHAR, NULL, segment1)
13816                       , segment2  = DECODE(segment2,   C_CHAR, NULL, segment2)
13817                       , segment3  = DECODE(segment3,   C_CHAR, NULL, segment3)
13818                       , segment4  = DECODE(segment4,   C_CHAR, NULL, segment4)
13819                       , segment5  = DECODE(segment5,   C_CHAR, NULL, segment5)
13820                       , segment6  = DECODE(segment6,   C_CHAR, NULL, segment6)
13821                       , segment7  = DECODE(segment7,   C_CHAR, NULL, segment7)
13822                       , segment8  = DECODE(segment8,   C_CHAR, NULL, segment8)
13823                       , segment9  = DECODE(segment9,   C_CHAR, NULL, segment9)
13824                       , segment10 = DECODE(segment10,  C_CHAR, NULL, segment10)
13825                       , segment11 = DECODE(segment11,  C_CHAR, NULL, segment11)
13826                       , segment12 = DECODE(segment12,  C_CHAR, NULL, segment12)
13827                       , segment13 = DECODE(segment13,  C_CHAR, NULL, segment13)
13828                       , segment14 = DECODE(segment14,  C_CHAR, NULL, segment14)
13829                       , segment15 = DECODE(segment15,  C_CHAR, NULL, segment15)
13830                       , segment16 = DECODE(segment16,  C_CHAR, NULL, segment16)
13831                       , segment17 = DECODE(segment17,  C_CHAR, NULL, segment17)
13832                       , segment18 = DECODE(segment18,  C_CHAR, NULL, segment18)
13833                       , segment19 = DECODE(segment19,  C_CHAR, NULL, segment19)
13834                       , segment20 = DECODE(segment20,  C_CHAR, NULL, segment20)
13835                       , segment21 = DECODE(segment21,  C_CHAR, NULL, segment21)
13836                       , segment22 = DECODE(segment22,  C_CHAR, NULL, segment22)
13837                       , segment23 = DECODE(segment23,  C_CHAR, NULL, segment23)
13838                       , segment24 = DECODE(segment24,  C_CHAR, NULL, segment24)
13839                       , segment25 = DECODE(segment25,  C_CHAR, NULL, segment25)
13840                       , segment26 = DECODE(segment26,  C_CHAR, NULL, segment26)
13841                       , segment27 = DECODE(segment27,  C_CHAR, NULL, segment27)
13842                       , segment28 = DECODE(segment28,  C_CHAR, NULL, segment28)
13843                       , segment29 = DECODE(segment29,  C_CHAR, NULL, segment29)
13844                       , segment30 = DECODE(segment30,  C_CHAR, NULL, segment30)
13845                  WHERE ae_header_id      = l_array_ae_header_id(i)
13846              --  AND   ae_line_num       = l_array_ae_line_num(i)        -- 5443083
13847                  AND   temp_line_num     = l_array_temp_line_num(i)      -- 5443083
13848                  AND   ref_ae_header_id  = l_array_ref_ae_header_id(i)   -- 5443083
13849                  AND   header_num        = l_array_header_num(i)         -- 5443083
13850                  AND   event_id          = l_array_event_id(i)
13851                  AND   ledger_id         = l_array_ledger_id(i)
13852                  AND   balance_type_code = l_array_balance_type_code(i);
13853 
13854       END LOOP;
13855       CLOSE c_bflow_unprocessed_lines;
13856 
13857 -- start of changes for bug#11066172
13858       OPEN c_bflowsame_error_headers;
13859       LOOP FETCH c_bflowsame_error_headers BULK COLLECT INTO l_array_ae_header_id,
13860                                                              l_array_event_id,
13861                                                              l_array_ledger_id,
13862                                                              l_array_balance_type_code,
13863                                                              l_array_header_num
13864                                                      LIMIT C_BULK_LIMIT;
13865 
13866          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13867             trace
13868                (p_module => l_log_module
13869                ,p_msg => 'Count of Same Entry HEADER ERRORS =' || l_array_ae_header_id.COUNT
13870                ,p_level => C_LEVEL_STATEMENT
13871                );
13872          END IF;
13873 
13874          IF l_array_ae_header_id.COUNT = 0 THEN
13875               EXIT;
13876          END IF;
13877 
13878          -- Update JE header status for invalid entries
13879          --
13880          FORALL i IN 1..l_array_balance_type_code.COUNT
13881                  UPDATE xla_ae_headers_gt hgt
13882                  SET   accounting_entry_status_code = XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID,  -- C_INVALID_STATUS
13883 		 event_status_code='I' -- Bug 13493286
13884                  WHERE ae_header_id      = l_array_ae_header_id(i)
13885                  AND   event_id          = l_array_event_id(i)
13886                  AND   ledger_id         = l_array_ledger_id(i)
13887                  AND   header_num        = l_array_header_num(i)         -- 5443083
13888                  AND   balance_type_code = l_array_balance_type_code(i)
13889                  AND EXISTS  (SELECT /*+ index(lgt XLA_AE_LINES_GT_N2) */ 1  - 5443083
13890                               FROM   xla_ae_lines_gt lgt
13891                               WHERE  lgt.ledger_id    = hgt.ledger_id
13892                               AND    lgt.ae_header_id = hgt.ae_header_id
13893                               AND    lgt.header_num   = hgt.header_num
13894                               AND    lgt.balance_type_code = hgt.balance_type_code
13895                               AND   (lgt.reversal_code = C_DUMMY_SAME
13896                               OR     lgt.reversal_code = C_MPA_SAME_ENTRY));
13897 
13898           IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13899                FOR i IN 1..l_array_balance_type_code.COUNT
13900                LOOP
13901                     trace (p_module => l_log_module
13902                           ,p_msg => '  ERROR: EVENT_ID: ' || l_array_event_id(i)
13903                                   ||' BALANCE_TYPE: '||l_array_balance_type_code(i)
13904                                   ||' HEADER_NUM: '||l_array_header_num(i)
13905                                   ||' LEDGER: '||l_array_ledger_id(i)
13906                                   ||' Count: '||SQL%BULK_ROWCOUNT(i)
13907                           ,p_level => C_LEVEL_STATEMENT
13908                           );
13909                END LOOP;
13910           END IF;
13911 
13912       END LOOP;
13913       CLOSE c_bflowsame_error_headers ;
13914 -- end of changes for bug#11066172
13915 
13916    END IF; -- g_num_bflow_same_entries > 0
13917 
13918 
13919    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13920       trace
13921            (p_msg      => 'END of BusinessFlowSameEntries'
13922            ,p_level    => C_LEVEL_PROCEDURE
13923            ,p_module   => l_log_module);
13924    END IF;
13925 
13926 EXCEPTION
13927 --
13928    WHEN xla_exceptions_pkg.application_exception THEN
13929       RAISE;
13930    WHEN OTHERS  THEN
13931       xla_exceptions_pkg.raise_message
13932                (p_location => 'xla_ae_lines_pkg.BusinessFlowSameEntries');
13933   --
13934 END BusinessFlowSameEntries;
13935 
13936 /*======================================================================+
13937 |                                                                       |
13938 | Public Procedure- Validate Business Flow Applied To Links - 4219869   |
13939 |                   (Refer to ValidateLinks for similar logic.)         |
13940 |                                                                       |
13941 +======================================================================*/
13942 PROCEDURE ValidateBFlowLinks IS
13943 
13944    l_log_module         VARCHAR2(240);
13945    l_source_temp        NUMBER;
13946    l_dist_temp          NUMBER;
13947    l_app_name           VARCHAR2(240);
13948 
13949 BEGIN
13950    IF g_log_enabled THEN
13951       l_log_module := C_DEFAULT_MODULE||'.ValidateBFlowLinks';
13952    END IF;
13953 
13954    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13955       trace
13956            (p_msg      => 'BEGIN of ValidateBFlowLinks'
13957            ,p_level    => C_LEVEL_PROCEDURE
13958            ,p_module   => l_log_module);
13959    END IF;
13960 
13961 
13962  --IF g_rec_lines.array_bflow_application_id(g_LineNumber) IS NOT NULL THEN
13963 
13964       IF g_rec_lines.array_bflow_application_id(g_LineNumber) IS NULL OR   -- log error if application id is null
13965          g_rec_lines.array_bflow_entity_code(g_LineNumber) IS NULL OR
13966          g_rec_lines.array_bflow_distribution_type(g_LineNumber) IS NULL OR
13967         (g_rec_lines.array_bflow_source_id_char_1(g_LineNumber) IS NULL AND
13968          g_rec_lines.array_bflow_source_id_num_1(g_LineNumber) IS NULL) OR
13969         (g_rec_lines.array_bflow_dist_id_char_1(g_LineNumber) IS NULL AND
13970          g_rec_lines.array_bflow_dist_id_num_1(g_LineNumber) IS NULL)  THEN
13971 
13972          XLA_AE_JOURNAL_ENTRY_PKG.g_global_status  :=  XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
13973          xla_accounting_err_pkg.build_message
13974                (p_appli_s_name  => 'XLA'
13975                ,p_msg_name      => 'XLA_AP_BFPE_INVALID_APPLIED_TO'
13976                ,p_entity_id     => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13977                ,p_event_id      => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13978                ,p_ledger_id     => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
13979 
13980       ELSE
13981 
13982          l_app_name := xla_accounting_cache_pkg.GetSessionValueChar('XLA_EVENT_APPL_NAME');
13983 
13984          ---------------------------------------------------------------------
13985          -- Verify applied-to system transaction ids
13986          ---------------------------------------------------------------------
13987          IF g_rec_lines.array_bflow_source_id_char_4(g_LineNumber) IS NULL AND
13988             g_rec_lines.array_bflow_source_id_num_4(g_LineNumber) IS NULL THEN
13989             l_source_temp := 0;
13990          ELSE
13991            l_source_temp := 1;
13992          END IF;
13993          IF g_rec_lines.array_bflow_source_id_char_3(g_LineNumber) IS NOT NULL OR
13994             g_rec_lines.array_bflow_source_id_num_3(g_LineNumber) IS NOT NULL THEN
13995             l_source_temp := 2+l_source_temp;
13996          END IF;
13997          IF g_rec_lines.array_bflow_source_id_char_2(g_LineNumber) IS NOT NULL OR
13998             g_rec_lines.array_bflow_source_id_num_2(g_LineNumber) IS NOT NULL THEN
13999             l_source_temp := 4+l_source_temp;
14000          END IF;
14001 
14002          IF (g_rec_lines.array_bflow_source_id_char_1(g_LineNumber) IS NULL AND
14003              g_rec_lines.array_bflow_source_id_num_1(g_LineNumber) IS NULL) OR
14004              l_source_temp not in (0, 4, 6, 7) THEN
14005 
14006              xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
14007              xla_accounting_err_pkg.build_message
14008                                            (p_appli_s_name            => 'XLA'
14009                                            ,p_msg_name                => 'XLA_AP_BFLOW_NO_SYS_TRX_ID'
14010                                            ,p_token_1                 => 'LINE_NUMBER'
14011                                            ,p_value_1                 =>  g_ExtractLine
14012                                            ,p_token_2                 => 'LINE_TYPE_NAME'
14013                                            ,p_value_2                 =>  xla_ae_sources_pkg.GetComponentName (
14014                                                                            g_accounting_line.component_type
14015                                                                          , g_accounting_line.accounting_line_code
14016                                                                          , g_accounting_line.accounting_line_type_code
14017                                                                          , g_accounting_line.accounting_line_appl_id
14018                                                                          , g_accounting_line.amb_context_code
14019                                                                          , g_accounting_line.entity_code
14020                                                                          , g_accounting_line.event_class_code)
14021                                            ,p_token_3                 => 'OWNER'
14022                                            ,p_value_3                 => xla_lookups_pkg.get_meaning(
14023                                                                            'XLA_OWNER_TYPE'
14024                                                                           , g_rec_lines.array_accounting_line_type(g_LineNumber))
14025                                            ,p_token_4                 => 'PRODUCT_NAME'
14026                                          --,p_value_4                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
14027                                            ,p_value_4                 => l_app_name
14028                                            ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
14029                                            ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
14030                                            ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
14031                                            ,p_ae_header_id            => NULL);
14032 
14033             IF (C_LEVEL_ERROR >= g_log_level) THEN
14034                    trace
14035                         (p_msg      => 'ERROR: XLA_AP_BFLOW_NO_SYS_TRX_ID'
14036                         ,p_level    => C_LEVEL_ERROR
14037                         ,p_module   => l_log_module);
14038             END IF;
14039 
14040          END IF;  -- g_rec_lines.array_bflow_source_id_char_1(g_LineNumber) IS NULL
14041 
14042          ---------------------------------------------------------------------
14043          -- Verify applied-to distribution ids
14044          ---------------------------------------------------------------------
14045          IF g_rec_lines.array_bflow_dist_id_char_5(g_LineNumber) IS NULL AND
14046             g_rec_lines.array_bflow_dist_id_num_5(g_LineNumber) IS NULL THEN
14047             l_dist_temp := 0;
14048          ELSE
14049             l_dist_temp := 1;
14050          END IF;
14051          IF g_rec_lines.array_bflow_dist_id_char_4(g_LineNumber) IS NOT NULL OR
14052             g_rec_lines.array_bflow_dist_id_num_4(g_LineNumber) IS NOT NULL THEN
14053             l_dist_temp := 2+l_dist_temp;
14054          END IF;
14055          IF g_rec_lines.array_bflow_dist_id_char_3(g_LineNumber) IS NOT NULL OR
14056             g_rec_lines.array_bflow_dist_id_num_3(g_LineNumber) IS NOT NULL THEN
14057             l_dist_temp := 4+l_dist_temp;
14058          END IF;
14059          IF g_rec_lines.array_bflow_dist_id_char_2(g_LineNumber) IS NOT NULL OR
14060             g_rec_lines.array_bflow_dist_id_num_2(g_LineNumber) IS NOT NULL THEN
14061             l_dist_temp := 8+l_dist_temp;
14062          END IF;
14063 
14064          IF (g_rec_lines.array_bflow_dist_id_char_1(g_LineNumber) IS NULL AND
14065              g_rec_lines.array_bflow_dist_id_num_1(g_LineNumber) IS NULL) OR
14066              l_dist_temp not in (0, 8, 12, 14, 15) THEN
14067 
14068              xla_ae_journal_entry_pkg.g_global_status :=  xla_ae_journal_entry_pkg.C_INVALID;
14069              xla_accounting_err_pkg.build_message
14070                                            (p_appli_s_name            => 'XLA'
14071                                            ,p_msg_name                => 'XLA_AP_BFLOW_NO_DIST_LINK_ID'
14072                                            ,p_token_1                 => 'LINE_NUMBER'
14073                                            ,p_value_1                 =>  g_ExtractLine
14074                                            ,p_token_2                 => 'LINE_TYPE_NAME'
14075                                            ,p_value_2                 =>  xla_ae_sources_pkg.GetComponentName (
14076                                                                            g_accounting_line.component_type
14077                                                                          , g_accounting_line.accounting_line_code
14078                                                                          , g_accounting_line.accounting_line_type_code
14079                                                                          , g_accounting_line.accounting_line_appl_id
14080                                                                          , g_accounting_line.amb_context_code
14081                                                                          , g_accounting_line.entity_code
14082                                                                          , g_accounting_line.event_class_code)
14083                                            ,p_token_3                 => 'OWNER'
14084                                            ,p_value_3                 => xla_lookups_pkg.get_meaning(
14085                                                                            'XLA_OWNER_TYPE'
14086                                                                           , g_rec_lines.array_accounting_line_type(g_LineNumber))
14087                                            ,p_token_4                 => 'PRODUCT_NAME'
14088                                          --,p_value_4                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
14089                                            ,p_value_4                 => l_app_name
14090                                            ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
14091                                            ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
14092                                            ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
14093                                            ,p_ae_header_id            => NULL);
14094 
14095             IF (C_LEVEL_ERROR >= g_log_level) THEN
14096                    trace
14097                         (p_msg      => 'ERROR: XLA_AP_BFLOW_NO_DIST_LINK_ID'
14098                         ,p_level    => C_LEVEL_ERROR
14099                         ,p_module   => l_log_module);
14100             END IF;
14101          END IF; -- (g_rec_lines.array_bflow_dist_id_char_1(g_LineNumber) IS NULL
14102 
14103       END IF; -- if bflow_entity_code is null
14104 
14105  --END IF;  -- if bflow_application_id is not null
14106 
14107    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14108       trace
14109            (p_msg      => 'END of ValidateBFlowLinks'
14110            ,p_level    => C_LEVEL_PROCEDURE
14111            ,p_module   => l_log_module);
14112    END IF;
14113 
14114 EXCEPTION
14115 --
14116 WHEN xla_exceptions_pkg.application_exception THEN
14117    RAISE;
14118 WHEN OTHERS  THEN
14119    xla_exceptions_pkg.raise_message
14120                (p_location => 'xla_ae_lines_pkg.ValidateBFlowLinks');
14121   --
14122 END ValidateBFlowLinks;
14123 
14124 /*======================================================================+
14125 |                                                                       |
14126 | Public Procedure-  4262811                                            |
14127 |                                                                       |
14128 |                                                                       |
14129 +======================================================================*/
14130 PROCEDURE CopyLineInfo(
14131    p_line_num   NUMBER
14132 ) IS
14133 
14134    l_log_module         VARCHAR2(240);
14135 
14136 BEGIN
14137    IF g_log_enabled THEN
14138       l_log_module := C_DEFAULT_MODULE||'.CopyLineInfo';
14139    END IF;
14140 
14141    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14142       trace
14143            (p_msg      => 'BEGIN of CopyLineInfo'
14144            ,p_level    => C_LEVEL_PROCEDURE
14145            ,p_module   => l_log_module);
14146    END IF;
14147 
14148    -- added the call to overloaded procedure with source as G_REC_LINES as per bug: 7109881
14149    CopyLineInfo(p_line_num,g_rec_lines);
14150 
14151   -- commented the code, as code moved to overloaded procedure
14152 
14153    /*   SetNewLine;
14154 
14155    -------------------------------------------------------------------------------------------------------
14156    -- Copy all information in g_rec_lines from p_line_num to g_LineNumber with the following exceptions:
14157    -------------------------------------------------------------------------------------------------------
14158    --
14159    --
14160    -------------------------------------------------------------------------------------------------------
14161    -- Skipped a TEMP_LINE_NUM in distribution links for MPA as SetNewLine also increased by 1
14162    --
14163    -- following sets the temp line number
14164    -- g_rec_lines.array_line_num(g_LineNumber)     := NVL(g_temp_line_num ,0) + 1;
14165    -------------------------------------------------------------------------------------------------------
14166    --
14167    g_rec_lines.array_ae_header_id(g_LineNumber) := g_rec_lines.array_ae_header_id(p_line_num);
14168    g_rec_lines.array_header_num(g_LineNumber)   := g_rec_lines.array_header_num(p_line_num);
14169 
14170    -- =================================================================================================
14171    g_rec_lines.array_accounting_class(g_LineNumber)      := g_rec_lines.array_accounting_class(p_line_num);
14172    g_rec_lines.array_rounding_class(g_LineNumber)        := g_rec_lines.array_rounding_class(p_line_num);
14173    g_rec_lines.array_doc_rounding_level(g_LineNumber)    := g_rec_lines.array_doc_rounding_level(p_line_num);
14174    g_rec_lines.array_gain_or_loss_ref(g_LineNumber):=    g_rec_lines.array_gain_or_loss_ref(p_line_num);
14175    g_rec_lines.array_event_class_code(g_LineNumber)      := g_rec_lines.array_event_class_code(p_line_num);
14176    g_rec_lines.array_event_type_code(g_LineNumber)       := g_rec_lines.array_event_type_code(p_line_num);
14177    g_rec_lines.array_line_defn_owner_code(g_LineNumber)  := g_rec_lines.array_line_defn_owner_code(p_line_num);
14178    g_rec_lines.array_line_defn_code(g_LineNumber)        := g_rec_lines.array_line_defn_code(p_line_num);
14179    g_rec_lines.array_accounting_line_code(g_LineNumber)  := g_rec_lines.array_accounting_line_code(p_line_num);
14180    g_rec_lines.array_accounting_line_type(g_LineNumber)  := g_rec_lines.array_accounting_line_type(p_line_num);
14181    g_rec_lines.array_calculate_acctd_flag(g_LineNumber)  := g_rec_lines.array_calculate_acctd_flag(p_line_num);
14182    g_rec_lines.array_calculate_g_l_flag(g_LineNumber)    := g_rec_lines.array_calculate_g_l_flag(p_line_num);
14183    g_rec_lines.array_gain_or_loss_flag(g_LineNumber)    := g_rec_lines.array_gain_or_loss_flag(p_line_num);
14184 
14185    --
14186    -- following sets the extract line number
14187    --
14188    g_rec_lines.array_extract_line_num(g_LineNumber) := g_rec_lines.array_extract_line_num(p_line_num);
14189 
14190    --
14191    -- line flexfield accounts
14192    --
14193    g_rec_lines.array_ccid_flag(g_LineNumber)  := g_rec_lines.array_ccid_flag(p_line_num);
14194    g_rec_lines.array_ccid(g_LineNumber)       := g_rec_lines.array_ccid(p_line_num);
14195    --
14196    g_rec_lines.array_accounting_coa_id(g_LineNumber)   := g_rec_lines.array_accounting_coa_id(p_line_num);
14197    g_rec_lines.array_transaction_coa_id(g_LineNumber)  := g_rec_lines.array_transaction_coa_id(p_line_num);
14198    g_rec_lines.array_sl_coa_mapping_name(g_LineNumber) := g_rec_lines.array_sl_coa_mapping_name(p_line_num);
14199    --
14200    g_rec_lines.array_segment1(g_LineNumber)   := g_rec_lines.array_segment1(p_line_num);
14201    g_rec_lines.array_segment2(g_LineNumber)   := g_rec_lines.array_segment2(p_line_num);
14202    g_rec_lines.array_segment3(g_LineNumber)   := g_rec_lines.array_segment3(p_line_num);
14203    g_rec_lines.array_segment4(g_LineNumber)   := g_rec_lines.array_segment4(p_line_num);
14204    g_rec_lines.array_segment5(g_LineNumber)   := g_rec_lines.array_segment5(p_line_num);
14205    g_rec_lines.array_segment6(g_LineNumber)   := g_rec_lines.array_segment6(p_line_num);
14206    g_rec_lines.array_segment7(g_LineNumber)   := g_rec_lines.array_segment7(p_line_num);
14207    g_rec_lines.array_segment8(g_LineNumber)   := g_rec_lines.array_segment8(p_line_num);
14208    g_rec_lines.array_segment9(g_LineNumber)   := g_rec_lines.array_segment9(p_line_num);
14209    g_rec_lines.array_segment10(g_LineNumber)  := g_rec_lines.array_segment10(p_line_num);
14210    g_rec_lines.array_segment11(g_LineNumber)  := g_rec_lines.array_segment11(p_line_num);
14211    g_rec_lines.array_segment12(g_LineNumber)  := g_rec_lines.array_segment12(p_line_num);
14212    g_rec_lines.array_segment13(g_LineNumber)  := g_rec_lines.array_segment13(p_line_num);
14213    g_rec_lines.array_segment14(g_LineNumber)  := g_rec_lines.array_segment14(p_line_num);
14214    g_rec_lines.array_segment15(g_LineNumber)  := g_rec_lines.array_segment15(p_line_num);
14215    g_rec_lines.array_segment16(g_LineNumber)  := g_rec_lines.array_segment16(p_line_num);
14216    g_rec_lines.array_segment17(g_LineNumber)  := g_rec_lines.array_segment17(p_line_num);
14217    g_rec_lines.array_segment18(g_LineNumber)  := g_rec_lines.array_segment18(p_line_num);
14218    g_rec_lines.array_segment19(g_LineNumber)  := g_rec_lines.array_segment19(p_line_num);
14219    g_rec_lines.array_segment20(g_LineNumber)  := g_rec_lines.array_segment20(p_line_num);
14220    g_rec_lines.array_segment21(g_LineNumber)  := g_rec_lines.array_segment21(p_line_num);
14221    g_rec_lines.array_segment22(g_LineNumber)  := g_rec_lines.array_segment22(p_line_num);
14222    g_rec_lines.array_segment23(g_LineNumber)  := g_rec_lines.array_segment23(p_line_num);
14223    g_rec_lines.array_segment24(g_LineNumber)  := g_rec_lines.array_segment24(p_line_num);
14224    g_rec_lines.array_segment25(g_LineNumber)  := g_rec_lines.array_segment25(p_line_num);
14225    g_rec_lines.array_segment26(g_LineNumber)  := g_rec_lines.array_segment26(p_line_num);
14226    g_rec_lines.array_segment27(g_LineNumber)  := g_rec_lines.array_segment27(p_line_num);
14227    g_rec_lines.array_segment28(g_LineNumber)  := g_rec_lines.array_segment28(p_line_num);
14228    g_rec_lines.array_segment29(g_LineNumber)  := g_rec_lines.array_segment29(p_line_num);
14229    g_rec_lines.array_segment30(g_LineNumber)  := g_rec_lines.array_segment30(p_line_num);
14230    --
14231    g_rec_lines.alt_array_ccid_flag(g_LineNumber)  := g_rec_lines.alt_array_ccid_flag(p_line_num);
14232    g_rec_lines.alt_array_ccid(g_LineNumber)       := g_rec_lines.alt_array_ccid(p_line_num);
14233    g_rec_lines.alt_array_segment1(g_LineNumber)   := g_rec_lines.alt_array_segment1(p_line_num);
14234    g_rec_lines.alt_array_segment2(g_LineNumber)   := g_rec_lines.alt_array_segment2(p_line_num);
14235    g_rec_lines.alt_array_segment3(g_LineNumber)   := g_rec_lines.alt_array_segment3(p_line_num);
14236    g_rec_lines.alt_array_segment4(g_LineNumber)   := g_rec_lines.alt_array_segment4(p_line_num);
14237    g_rec_lines.alt_array_segment5(g_LineNumber)   := g_rec_lines.alt_array_segment5(p_line_num);
14238    g_rec_lines.alt_array_segment6(g_LineNumber)   := g_rec_lines.alt_array_segment6(p_line_num);
14239    g_rec_lines.alt_array_segment7(g_LineNumber)   := g_rec_lines.alt_array_segment7(p_line_num);
14240    g_rec_lines.alt_array_segment8(g_LineNumber)   := g_rec_lines.alt_array_segment8(p_line_num);
14241    g_rec_lines.alt_array_segment9(g_LineNumber)   := g_rec_lines.alt_array_segment9(p_line_num);
14242    g_rec_lines.alt_array_segment10(g_LineNumber)  := g_rec_lines.alt_array_segment10(p_line_num);
14243    g_rec_lines.alt_array_segment11(g_LineNumber)  := g_rec_lines.alt_array_segment11(p_line_num);
14244    g_rec_lines.alt_array_segment12(g_LineNumber)  := g_rec_lines.alt_array_segment12(p_line_num);
14245    g_rec_lines.alt_array_segment13(g_LineNumber)  := g_rec_lines.alt_array_segment13(p_line_num);
14246    g_rec_lines.alt_array_segment14(g_LineNumber)  := g_rec_lines.alt_array_segment14(p_line_num);
14247    g_rec_lines.alt_array_segment15(g_LineNumber)  := g_rec_lines.alt_array_segment15(p_line_num);
14248    g_rec_lines.alt_array_segment16(g_LineNumber)  := g_rec_lines.alt_array_segment16(p_line_num);
14249    g_rec_lines.alt_array_segment17(g_LineNumber)  := g_rec_lines.alt_array_segment17(p_line_num);
14250    g_rec_lines.alt_array_segment18(g_LineNumber)  := g_rec_lines.alt_array_segment18(p_line_num);
14251    g_rec_lines.alt_array_segment19(g_LineNumber)  := g_rec_lines.alt_array_segment19(p_line_num);
14252    g_rec_lines.alt_array_segment20(g_LineNumber)  := g_rec_lines.alt_array_segment20(p_line_num);
14253    g_rec_lines.alt_array_segment21(g_LineNumber)  := g_rec_lines.alt_array_segment21(p_line_num);
14254    g_rec_lines.alt_array_segment22(g_LineNumber)  := g_rec_lines.alt_array_segment22(p_line_num);
14255    g_rec_lines.alt_array_segment23(g_LineNumber)  := g_rec_lines.alt_array_segment23(p_line_num);
14256    g_rec_lines.alt_array_segment24(g_LineNumber)  := g_rec_lines.alt_array_segment24(p_line_num);
14257    g_rec_lines.alt_array_segment25(g_LineNumber)  := g_rec_lines.alt_array_segment25(p_line_num);
14258    g_rec_lines.alt_array_segment26(g_LineNumber)  := g_rec_lines.alt_array_segment26(p_line_num);
14259    g_rec_lines.alt_array_segment27(g_LineNumber)  := g_rec_lines.alt_array_segment27(p_line_num);
14260    g_rec_lines.alt_array_segment28(g_LineNumber)  := g_rec_lines.alt_array_segment28(p_line_num);
14261    g_rec_lines.alt_array_segment29(g_LineNumber)  := g_rec_lines.alt_array_segment29(p_line_num);
14262    g_rec_lines.alt_array_segment30(g_LineNumber)  := g_rec_lines.alt_array_segment30(p_line_num);
14263    --
14264    -- Option lines
14265    --
14266    g_rec_lines.array_gl_transfer_mode(g_LineNumber)      := g_rec_lines.array_gl_transfer_mode(p_line_num);
14267    g_rec_lines.array_natural_side_code(g_LineNumber)     := g_rec_lines.array_natural_side_code(p_line_num);
14268    g_rec_lines.array_acct_entry_type_code(g_LineNumber)  := g_rec_lines.array_acct_entry_type_code(p_line_num);
14269    g_rec_lines.array_switch_side_flag(g_LineNumber)      := g_rec_lines.array_switch_side_flag(p_line_num);
14270    g_rec_lines.array_merge_duplicate_code(g_LineNumber)  := g_rec_lines.array_merge_duplicate_code(p_line_num);
14271    --
14272    -- line amounts
14273    --
14274    g_rec_lines.array_entered_amount(g_LineNumber)        := g_rec_lines.array_entered_amount(p_line_num);
14275    g_rec_lines.array_ledger_amount(g_LineNumber)         := g_rec_lines.array_ledger_amount(p_line_num);
14276    g_rec_lines.array_entered_dr(g_LineNumber)            := g_rec_lines.array_entered_dr(p_line_num);
14277    g_rec_lines.array_entered_cr(g_LineNumber)            := g_rec_lines.array_entered_cr(p_line_num);
14278    g_rec_lines.array_accounted_dr(g_LineNumber)          := g_rec_lines.array_accounted_dr(p_line_num);
14279    g_rec_lines.array_accounted_cr(g_LineNumber)          := g_rec_lines.array_accounted_cr(p_line_num);
14280    g_rec_lines.array_currency_code(g_LineNumber)         := g_rec_lines.array_currency_code(p_line_num);
14281    g_rec_lines.array_currency_mau(g_LineNumber)          := xla_accounting_cache_pkg.GetCurrencyMau(g_rec_lines.array_currency_code(g_LineNumber));
14282    g_rec_lines.array_curr_conversion_date(g_LineNumber)  := g_rec_lines.array_curr_conversion_date(p_line_num);
14283    g_rec_lines.array_curr_conversion_rate(g_LineNumber)  := g_rec_lines.array_curr_conversion_rate(p_line_num);
14284    g_rec_lines.array_curr_conversion_type(g_LineNumber)  := g_rec_lines.array_curr_conversion_type(p_line_num);
14285    g_rec_lines.array_description(g_LineNumber)           := g_rec_lines.array_description(p_line_num);
14286    --
14287    -- line descriptions
14288    --
14289    g_rec_lines.array_party_id(g_LineNumber)              := g_rec_lines.array_party_id(p_line_num);
14290    g_rec_lines.array_party_site_id(g_LineNumber)         := g_rec_lines.array_party_site_id(p_line_num);
14291    g_rec_lines.array_party_type_code(g_LineNumber)       := g_rec_lines.array_party_type_code(p_line_num);
14292    --
14293    g_rec_lines.array_statistical_amount(g_LineNumber)    := g_rec_lines.array_statistical_amount(p_line_num);
14294    g_rec_lines.array_ussgl_transaction(g_LineNumber)     := g_rec_lines.array_ussgl_transaction(p_line_num);
14295    --
14296    g_rec_lines.array_jgzz_recon_ref(g_LineNumber)           := g_rec_lines.array_jgzz_recon_ref(p_line_num);
14297    --
14298    -- distribution links
14299    --
14300    g_rec_lines.array_distribution_id_char_1(g_LineNumber)  := g_rec_lines.array_distribution_id_char_1(p_line_num);
14301    g_rec_lines.array_distribution_id_char_2(g_LineNumber)  := g_rec_lines.array_distribution_id_char_2(p_line_num);
14302    g_rec_lines.array_distribution_id_char_3(g_LineNumber)  := g_rec_lines.array_distribution_id_char_3(p_line_num);
14303    g_rec_lines.array_distribution_id_char_4(g_LineNumber)  := g_rec_lines.array_distribution_id_char_4(p_line_num);
14304    g_rec_lines.array_distribution_id_char_5(g_LineNumber)  := g_rec_lines.array_distribution_id_char_5(p_line_num);
14305    g_rec_lines.array_distribution_id_num_1(g_LineNumber)   := g_rec_lines.array_distribution_id_num_1(p_line_num);
14306    g_rec_lines.array_distribution_id_num_2(g_LineNumber)   := g_rec_lines.array_distribution_id_num_2(p_line_num);
14307    g_rec_lines.array_distribution_id_num_3(g_LineNumber)   := g_rec_lines.array_distribution_id_num_3(p_line_num);
14308    g_rec_lines.array_distribution_id_num_4(g_LineNumber)   := g_rec_lines.array_distribution_id_num_4(p_line_num);
14309    g_rec_lines.array_distribution_id_num_5(g_LineNumber)   := g_rec_lines.array_distribution_id_num_5(p_line_num);
14310    g_rec_lines.array_sys_distribution_type(g_LineNumber)   := g_rec_lines.array_sys_distribution_type(p_line_num);
14311    --
14312    -- reverse distribution links
14313    --
14314    g_rec_lines.array_rev_dist_id_char_1(g_LineNumber)  := g_rec_lines.array_rev_dist_id_char_1(p_line_num);
14315    g_rec_lines.array_rev_dist_id_char_2(g_LineNumber)  := g_rec_lines.array_rev_dist_id_char_2(p_line_num);
14316    g_rec_lines.array_rev_dist_id_char_3(g_LineNumber)  := g_rec_lines.array_rev_dist_id_char_3(p_line_num);
14317    g_rec_lines.array_rev_dist_id_char_4(g_LineNumber)  := g_rec_lines.array_rev_dist_id_char_4(p_line_num);
14318    g_rec_lines.array_rev_dist_id_char_5(g_LineNumber)  := g_rec_lines.array_rev_dist_id_char_5(p_line_num);
14319    g_rec_lines.array_rev_dist_id_num_1(g_LineNumber)   := g_rec_lines.array_rev_dist_id_num_1(p_line_num);
14320    g_rec_lines.array_rev_dist_id_num_2(g_LineNumber)   := g_rec_lines.array_rev_dist_id_num_2(p_line_num);
14321    g_rec_lines.array_rev_dist_id_num_3(g_LineNumber)   := g_rec_lines.array_rev_dist_id_num_3(p_line_num);
14322    g_rec_lines.array_rev_dist_id_num_4(g_LineNumber)   := g_rec_lines.array_rev_dist_id_num_4(p_line_num);
14323    g_rec_lines.array_rev_dist_id_num_5(g_LineNumber)   := g_rec_lines.array_rev_dist_id_num_5(p_line_num);
14324    g_rec_lines.array_rev_dist_type(g_LineNumber)       := g_rec_lines.array_rev_dist_type(p_line_num);
14325    --
14326    -- multiperiod accounting
14327    --
14328    -- DO NOT COPY g_rec_lines.array_mpa_acc_entry_flag
14329    g_rec_lines.array_header_num(g_LineNumber)          := g_rec_lines.array_header_num(p_line_num);
14330    g_rec_lines.array_mpa_option(g_LineNumber)          := g_rec_lines.array_mpa_option(p_line_num);
14331    g_rec_lines.array_mpa_start_date(g_LineNumber)      := g_rec_lines.array_mpa_start_date(p_line_num);
14332    g_rec_lines.array_mpa_end_date(g_LineNumber)        := g_rec_lines.array_mpa_end_date(p_line_num);
14333    --
14334    -- reversal info
14335    --
14336    g_rec_lines.array_acc_reversal_option(g_LineNumber)   := g_rec_lines.array_acc_reversal_option(p_line_num);
14337    --
14338    -- tax info
14339    --
14340    g_rec_lines.array_tax_line_ref(g_LineNumber)           := g_rec_lines.array_tax_line_ref(p_line_num);
14341    g_rec_lines.array_tax_summary_line_ref(g_LineNumber)   := g_rec_lines.array_tax_summary_line_ref(p_line_num);
14342    g_rec_lines.array_tax_rec_nrec_dist_ref(g_LineNumber)  := g_rec_lines.array_tax_rec_nrec_dist_ref(p_line_num);
14343    --
14344    --
14345    g_rec_lines.array_anc_balance_flag(g_LineNumber)      := g_rec_lines.array_anc_balance_flag(p_line_num);
14346    g_rec_lines.array_anc_id_1(g_LineNumber)              := g_rec_lines.array_anc_id_1(p_line_num);
14347    g_rec_lines.array_anc_id_2(g_LineNumber)              := g_rec_lines.array_anc_id_2(p_line_num);
14348    g_rec_lines.array_anc_id_3(g_LineNumber)              := g_rec_lines.array_anc_id_3(p_line_num);
14349    g_rec_lines.array_anc_id_4(g_LineNumber)              := g_rec_lines.array_anc_id_4(p_line_num);
14350    g_rec_lines.array_anc_id_5(g_LineNumber)              := g_rec_lines.array_anc_id_5(p_line_num);
14351    g_rec_lines.array_anc_id_6(g_LineNumber)              := g_rec_lines.array_anc_id_6(p_line_num);
14352    g_rec_lines.array_anc_id_7(g_LineNumber)              := g_rec_lines.array_anc_id_7(p_line_num);
14353    g_rec_lines.array_anc_id_8(g_LineNumber)              := g_rec_lines.array_anc_id_8(p_line_num);
14354    g_rec_lines.array_anc_id_9(g_LineNumber)              := g_rec_lines.array_anc_id_9(p_line_num);
14355    g_rec_lines.array_anc_id_10(g_LineNumber)             := g_rec_lines.array_anc_id_10(p_line_num);
14356    g_rec_lines.array_anc_id_11(g_LineNumber)             := g_rec_lines.array_anc_id_11(p_line_num);
14357    g_rec_lines.array_anc_id_12(g_LineNumber)             := g_rec_lines.array_anc_id_12(p_line_num);
14358    g_rec_lines.array_anc_id_13(g_LineNumber)             := g_rec_lines.array_anc_id_13(p_line_num);
14359    g_rec_lines.array_anc_id_14(g_LineNumber)             := g_rec_lines.array_anc_id_14(p_line_num);
14360    g_rec_lines.array_anc_id_15(g_LineNumber)             := g_rec_lines.array_anc_id_15(p_line_num);
14361    g_rec_lines.array_anc_id_16(g_LineNumber)             := g_rec_lines.array_anc_id_16(p_line_num);
14362    g_rec_lines.array_anc_id_17(g_LineNumber)             := g_rec_lines.array_anc_id_17(p_line_num);
14363    g_rec_lines.array_anc_id_18(g_LineNumber)             := g_rec_lines.array_anc_id_18(p_line_num);
14364    g_rec_lines.array_anc_id_19(g_LineNumber)             := g_rec_lines.array_anc_id_19(p_line_num);
14365    g_rec_lines.array_anc_id_20(g_LineNumber)             := g_rec_lines.array_anc_id_20(p_line_num);
14366    g_rec_lines.array_anc_id_21(g_LineNumber)             := g_rec_lines.array_anc_id_21(p_line_num);
14367    g_rec_lines.array_anc_id_22(g_LineNumber)             := g_rec_lines.array_anc_id_22(p_line_num);
14368    g_rec_lines.array_anc_id_23(g_LineNumber)             := g_rec_lines.array_anc_id_23(p_line_num);
14369    g_rec_lines.array_anc_id_24(g_LineNumber)             := g_rec_lines.array_anc_id_24(p_line_num);
14370    g_rec_lines.array_anc_id_25(g_LineNumber)             := g_rec_lines.array_anc_id_25(p_line_num);
14371    g_rec_lines.array_anc_id_26(g_LineNumber)             := g_rec_lines.array_anc_id_26(p_line_num);
14372    g_rec_lines.array_anc_id_27(g_LineNumber)             := g_rec_lines.array_anc_id_27(p_line_num);
14373    g_rec_lines.array_anc_id_28(g_LineNumber)             := g_rec_lines.array_anc_id_28(p_line_num);
14374    g_rec_lines.array_anc_id_29(g_LineNumber)             := g_rec_lines.array_anc_id_29(p_line_num);
14375    g_rec_lines.array_anc_id_30(g_LineNumber)             := g_rec_lines.array_anc_id_30(p_line_num);
14376    g_rec_lines.array_anc_id_31(g_LineNumber)             := g_rec_lines.array_anc_id_31(p_line_num);
14377    g_rec_lines.array_anc_id_32(g_LineNumber)             := g_rec_lines.array_anc_id_32(p_line_num);
14378    g_rec_lines.array_anc_id_33(g_LineNumber)             := g_rec_lines.array_anc_id_33(p_line_num);
14379    g_rec_lines.array_anc_id_34(g_LineNumber)             := g_rec_lines.array_anc_id_34(p_line_num);
14380    g_rec_lines.array_anc_id_35(g_LineNumber)             := g_rec_lines.array_anc_id_35(p_line_num);
14381    g_rec_lines.array_anc_id_36(g_LineNumber)             := g_rec_lines.array_anc_id_36(p_line_num);
14382    g_rec_lines.array_anc_id_37(g_LineNumber)             := g_rec_lines.array_anc_id_37(p_line_num);
14383    g_rec_lines.array_anc_id_38(g_LineNumber)             := g_rec_lines.array_anc_id_38(p_line_num);
14384    g_rec_lines.array_anc_id_39(g_LineNumber)             := g_rec_lines.array_anc_id_39(p_line_num);
14385    g_rec_lines.array_anc_id_40(g_LineNumber)             := g_rec_lines.array_anc_id_40(p_line_num);
14386    g_rec_lines.array_anc_id_41(g_LineNumber)             := g_rec_lines.array_anc_id_41(p_line_num);
14387    g_rec_lines.array_anc_id_42(g_LineNumber)             := g_rec_lines.array_anc_id_42(p_line_num);
14388    g_rec_lines.array_anc_id_43(g_LineNumber)             := g_rec_lines.array_anc_id_43(p_line_num);
14389    g_rec_lines.array_anc_id_44(g_LineNumber)             := g_rec_lines.array_anc_id_44(p_line_num);
14390    g_rec_lines.array_anc_id_45(g_LineNumber)             := g_rec_lines.array_anc_id_45(p_line_num);
14391    g_rec_lines.array_anc_id_46(g_LineNumber)             := g_rec_lines.array_anc_id_46(p_line_num);
14392    g_rec_lines.array_anc_id_47(g_LineNumber)             := g_rec_lines.array_anc_id_47(p_line_num);
14393    g_rec_lines.array_anc_id_48(g_LineNumber)             := g_rec_lines.array_anc_id_48(p_line_num);
14394    g_rec_lines.array_anc_id_49(g_LineNumber)             := g_rec_lines.array_anc_id_49(p_line_num);
14395    g_rec_lines.array_anc_id_50(g_LineNumber)             := g_rec_lines.array_anc_id_50(p_line_num);
14396    g_rec_lines.array_anc_id_51(g_LineNumber)             := g_rec_lines.array_anc_id_51(p_line_num);
14397    g_rec_lines.array_anc_id_52(g_LineNumber)             := g_rec_lines.array_anc_id_52(p_line_num);
14398    g_rec_lines.array_anc_id_53(g_LineNumber)             := g_rec_lines.array_anc_id_53(p_line_num);
14399    g_rec_lines.array_anc_id_54(g_LineNumber)             := g_rec_lines.array_anc_id_54(p_line_num);
14400    g_rec_lines.array_anc_id_55(g_LineNumber)             := g_rec_lines.array_anc_id_55(p_line_num);
14401    g_rec_lines.array_anc_id_56(g_LineNumber)             := g_rec_lines.array_anc_id_56(p_line_num);
14402    g_rec_lines.array_anc_id_57(g_LineNumber)             := g_rec_lines.array_anc_id_57(p_line_num);
14403    g_rec_lines.array_anc_id_58(g_LineNumber)             := g_rec_lines.array_anc_id_58(p_line_num);
14404    g_rec_lines.array_anc_id_59(g_LineNumber)             := g_rec_lines.array_anc_id_59(p_line_num);
14405    g_rec_lines.array_anc_id_60(g_LineNumber)             := g_rec_lines.array_anc_id_60(p_line_num);
14406    g_rec_lines.array_anc_id_61(g_LineNumber)             := g_rec_lines.array_anc_id_61(p_line_num);
14407    g_rec_lines.array_anc_id_62(g_LineNumber)             := g_rec_lines.array_anc_id_62(p_line_num);
14408    g_rec_lines.array_anc_id_63(g_LineNumber)             := g_rec_lines.array_anc_id_63(p_line_num);
14409    g_rec_lines.array_anc_id_64(g_LineNumber)             := g_rec_lines.array_anc_id_64(p_line_num);
14410    g_rec_lines.array_anc_id_65(g_LineNumber)             := g_rec_lines.array_anc_id_65(p_line_num);
14411    g_rec_lines.array_anc_id_66(g_LineNumber)             := g_rec_lines.array_anc_id_66(p_line_num);
14412    g_rec_lines.array_anc_id_67(g_LineNumber)             := g_rec_lines.array_anc_id_67(p_line_num);
14413    g_rec_lines.array_anc_id_68(g_LineNumber)             := g_rec_lines.array_anc_id_68(p_line_num);
14414    g_rec_lines.array_anc_id_69(g_LineNumber)             := g_rec_lines.array_anc_id_69(p_line_num);
14415    g_rec_lines.array_anc_id_70(g_LineNumber)             := g_rec_lines.array_anc_id_70(p_line_num);
14416    g_rec_lines.array_anc_id_71(g_LineNumber)             := g_rec_lines.array_anc_id_71(p_line_num);
14417    g_rec_lines.array_anc_id_72(g_LineNumber)             := g_rec_lines.array_anc_id_72(p_line_num);
14418    g_rec_lines.array_anc_id_73(g_LineNumber)             := g_rec_lines.array_anc_id_73(p_line_num);
14419    g_rec_lines.array_anc_id_74(g_LineNumber)             := g_rec_lines.array_anc_id_74(p_line_num);
14420    g_rec_lines.array_anc_id_75(g_LineNumber)             := g_rec_lines.array_anc_id_75(p_line_num);
14421    g_rec_lines.array_anc_id_76(g_LineNumber)             := g_rec_lines.array_anc_id_76(p_line_num);
14422    g_rec_lines.array_anc_id_77(g_LineNumber)             := g_rec_lines.array_anc_id_77(p_line_num);
14423    g_rec_lines.array_anc_id_78(g_LineNumber)             := g_rec_lines.array_anc_id_78(p_line_num);
14424    g_rec_lines.array_anc_id_79(g_LineNumber)             := g_rec_lines.array_anc_id_79(p_line_num);
14425    g_rec_lines.array_anc_id_80(g_LineNumber)             := g_rec_lines.array_anc_id_80(p_line_num);
14426    g_rec_lines.array_anc_id_81(g_LineNumber)             := g_rec_lines.array_anc_id_81(p_line_num);
14427    g_rec_lines.array_anc_id_82(g_LineNumber)             := g_rec_lines.array_anc_id_82(p_line_num);
14428    g_rec_lines.array_anc_id_83(g_LineNumber)             := g_rec_lines.array_anc_id_83(p_line_num);
14429    g_rec_lines.array_anc_id_84(g_LineNumber)             := g_rec_lines.array_anc_id_84(p_line_num);
14430    g_rec_lines.array_anc_id_85(g_LineNumber)             := g_rec_lines.array_anc_id_85(p_line_num);
14431    g_rec_lines.array_anc_id_86(g_LineNumber)             := g_rec_lines.array_anc_id_86(p_line_num);
14432    g_rec_lines.array_anc_id_87(g_LineNumber)             := g_rec_lines.array_anc_id_87(p_line_num);
14433    g_rec_lines.array_anc_id_88(g_LineNumber)             := g_rec_lines.array_anc_id_88(p_line_num);
14434    g_rec_lines.array_anc_id_89(g_LineNumber)             := g_rec_lines.array_anc_id_89(p_line_num);
14435    g_rec_lines.array_anc_id_90(g_LineNumber)             := g_rec_lines.array_anc_id_90(p_line_num);
14436    g_rec_lines.array_anc_id_91(g_LineNumber)             := g_rec_lines.array_anc_id_91(p_line_num);
14437    g_rec_lines.array_anc_id_92(g_LineNumber)             := g_rec_lines.array_anc_id_92(p_line_num);
14438    g_rec_lines.array_anc_id_93(g_LineNumber)             := g_rec_lines.array_anc_id_93(p_line_num);
14439    g_rec_lines.array_anc_id_94(g_LineNumber)             := g_rec_lines.array_anc_id_94(p_line_num);
14440    g_rec_lines.array_anc_id_95(g_LineNumber)             := g_rec_lines.array_anc_id_95(p_line_num);
14441    g_rec_lines.array_anc_id_96(g_LineNumber)             := g_rec_lines.array_anc_id_96(p_line_num);
14442    g_rec_lines.array_anc_id_97(g_LineNumber)             := g_rec_lines.array_anc_id_97(p_line_num);
14443    g_rec_lines.array_anc_id_98(g_LineNumber)             := g_rec_lines.array_anc_id_98(p_line_num);
14444    g_rec_lines.array_anc_id_99(g_LineNumber)             := g_rec_lines.array_anc_id_99(p_line_num);
14445    g_rec_lines.array_anc_id_100(g_LineNumber)            := g_rec_lines.array_anc_id_100(p_line_num);
14446    --
14447    --
14448    g_rec_lines.array_event_number(g_LineNumber)          := g_rec_lines.array_event_number(p_line_num);
14449    g_rec_lines.array_entity_id(g_LineNumber)             := g_rec_lines.array_entity_id(p_line_num);
14450    g_rec_lines.array_reversal_code(g_LineNumber)         := g_rec_lines.array_reversal_code(p_line_num);
14451    g_rec_lines.array_balance_type_code(g_LineNumber)     := g_rec_lines.array_balance_type_code(p_line_num);
14452    g_rec_lines.array_ledger_id(g_LineNumber)             := g_rec_lines.array_ledger_id(p_line_num);
14453    --
14454    -- business flow
14455    --
14456    g_rec_lines.array_business_method_code(g_LineNumber)   := g_rec_lines.array_business_method_code(p_line_num);
14457    g_rec_lines.array_business_class_code(g_LineNumber)    := g_rec_lines.array_business_class_code(p_line_num);
14458    g_rec_lines.array_inherit_desc_flag(g_LineNumber)      := g_rec_lines.array_inherit_desc_flag(p_line_num);
14459    g_rec_lines.array_bflow_application_id(g_LineNumber)   := g_rec_lines.array_bflow_application_id(p_line_num);
14460 
14461    g_rec_lines.array_bflow_entity_code(g_LineNumber)      := g_rec_lines.array_bflow_entity_code(p_line_num);
14462    g_rec_lines.array_bflow_source_id_num_1(g_LineNumber)  := g_rec_lines.array_bflow_source_id_num_1(p_line_num);
14463    g_rec_lines.array_bflow_source_id_num_2(g_LineNumber)  := g_rec_lines.array_bflow_source_id_num_2(p_line_num);
14464    g_rec_lines.array_bflow_source_id_num_3(g_LineNumber)  := g_rec_lines.array_bflow_source_id_num_3(p_line_num);
14465    g_rec_lines.array_bflow_source_id_num_4(g_LineNumber)  := g_rec_lines.array_bflow_source_id_num_4(p_line_num);
14466    g_rec_lines.array_bflow_source_id_char_1(g_LineNumber) := g_rec_lines.array_bflow_source_id_char_1(p_line_num);
14467    g_rec_lines.array_bflow_source_id_char_2(g_LineNumber) := g_rec_lines.array_bflow_source_id_char_2(p_line_num);
14468    g_rec_lines.array_bflow_source_id_char_3(g_LineNumber) := g_rec_lines.array_bflow_source_id_char_3(p_line_num);
14469    g_rec_lines.array_bflow_source_id_char_4(g_LineNumber) := g_rec_lines.array_bflow_source_id_char_4(p_line_num);
14470 
14471    g_rec_lines.array_bflow_distribution_type(g_LineNumber):= g_rec_lines.array_bflow_distribution_type(p_line_num);
14472    g_rec_lines.array_bflow_dist_id_num_1(g_LineNumber)    := g_rec_lines.array_bflow_dist_id_num_1(p_line_num);
14473    g_rec_lines.array_bflow_dist_id_num_2(g_LineNumber)    := g_rec_lines.array_bflow_dist_id_num_2(p_line_num);
14474    g_rec_lines.array_bflow_dist_id_num_3(g_LineNumber)    := g_rec_lines.array_bflow_dist_id_num_3(p_line_num);
14475    g_rec_lines.array_bflow_dist_id_num_4(g_LineNumber)    := g_rec_lines.array_bflow_dist_id_num_4(p_line_num);
14476    g_rec_lines.array_bflow_dist_id_num_5(g_LineNumber)    := g_rec_lines.array_bflow_dist_id_num_5(p_line_num);
14477    g_rec_lines.array_bflow_dist_id_char_1(g_LineNumber)   := g_rec_lines.array_bflow_dist_id_char_1(p_line_num);
14478    g_rec_lines.array_bflow_dist_id_char_2(g_LineNumber)   := g_rec_lines.array_bflow_dist_id_char_2(p_line_num);
14479    g_rec_lines.array_bflow_dist_id_char_3(g_LineNumber)   := g_rec_lines.array_bflow_dist_id_char_3(p_line_num);
14480    g_rec_lines.array_bflow_dist_id_char_4(g_LineNumber)   := g_rec_lines.array_bflow_dist_id_char_4(p_line_num);
14481    g_rec_lines.array_bflow_dist_id_char_5(g_LineNumber)   := g_rec_lines.array_bflow_dist_id_char_5(p_line_num);
14482 
14483    g_rec_lines.array_override_acctd_amt_flag(g_LineNumber)   := g_rec_lines.array_override_acctd_amt_flag(p_line_num);
14484 
14485 
14486    g_rec_lines.array_bflow_applied_to_amt(g_LineNumber)   := g_rec_lines.array_bflow_applied_to_amt(p_line_num); -- 5132302
14487    --
14488    -- Allocation Attributes
14489    --
14490    g_rec_lines.array_alloct_application_id(g_LineNumber)   := g_rec_lines.array_alloct_application_id(p_line_num);
14491 
14492    g_rec_lines.array_alloct_entity_code(g_LineNumber)      := g_rec_lines.array_alloct_entity_code(p_line_num);
14493    g_rec_lines.array_alloct_source_id_num_1(g_LineNumber)  := g_rec_lines.array_alloct_source_id_num_1(p_line_num);
14494    g_rec_lines.array_alloct_source_id_num_2(g_LineNumber)  := g_rec_lines.array_alloct_source_id_num_2(p_line_num);
14495    g_rec_lines.array_alloct_source_id_num_3(g_LineNumber)  := g_rec_lines.array_alloct_source_id_num_3(p_line_num);
14496    g_rec_lines.array_alloct_source_id_num_4(g_LineNumber)  := g_rec_lines.array_alloct_source_id_num_4(p_line_num);
14497    g_rec_lines.array_alloct_source_id_char_1(g_LineNumber) := g_rec_lines.array_alloct_source_id_char_1(p_line_num);
14498    g_rec_lines.array_alloct_source_id_char_2(g_LineNumber) := g_rec_lines.array_alloct_source_id_char_2(p_line_num);
14499    g_rec_lines.array_alloct_source_id_char_3(g_LineNumber) := g_rec_lines.array_alloct_source_id_char_3(p_line_num);
14500    g_rec_lines.array_alloct_source_id_char_4(g_LineNumber) := g_rec_lines.array_alloct_source_id_char_4(p_line_num);
14501 
14502    g_rec_lines.array_alloct_distribution_type(g_LineNumber):= g_rec_lines.array_alloct_distribution_type(p_line_num);
14503    g_rec_lines.array_alloct_dist_id_num_1(g_LineNumber)    := g_rec_lines.array_alloct_dist_id_num_1(p_line_num);
14504    g_rec_lines.array_alloct_dist_id_num_2(g_LineNumber)    := g_rec_lines.array_alloct_dist_id_num_2(p_line_num);
14505    g_rec_lines.array_alloct_dist_id_num_3(g_LineNumber)    := g_rec_lines.array_alloct_dist_id_num_3(p_line_num);
14506    g_rec_lines.array_alloct_dist_id_num_4(g_LineNumber)    := g_rec_lines.array_alloct_dist_id_num_4(p_line_num);
14507    g_rec_lines.array_alloct_dist_id_num_5(g_LineNumber)    := g_rec_lines.array_alloct_dist_id_num_5(p_line_num);
14508    g_rec_lines.array_alloct_dist_id_char_1(g_LineNumber)   := g_rec_lines.array_alloct_dist_id_char_1(p_line_num);
14509    g_rec_lines.array_alloct_dist_id_char_2(g_LineNumber)   := g_rec_lines.array_alloct_dist_id_char_2(p_line_num);
14510    g_rec_lines.array_alloct_dist_id_char_3(g_LineNumber)   := g_rec_lines.array_alloct_dist_id_char_3(p_line_num);
14511    g_rec_lines.array_alloct_dist_id_char_4(g_LineNumber)   := g_rec_lines.array_alloct_dist_id_char_4(p_line_num);
14512    g_rec_lines.array_alloct_dist_id_char_5(g_LineNumber)   := g_rec_lines.array_alloct_dist_id_char_5(p_line_num);
14513    -- =================================================================================================
14514    --
14515    -- for 7029018
14516    IF NVL(g_rec_lines.array_balance_type_code(g_LineNumber),'N')='E'  THEN
14517       IF ((NVL(g_rec_lines.array_actual_upg_option(p_line_num), 'N') = 'Y') OR
14518           (NVL(g_rec_lines.array_enc_upg_option(p_line_num), 'N') = 'Y')) THEN
14519        --temp fix for Period End Accrual Encumbrance for Upgraded Entries.
14520            g_rec_lines.array_encumbrance_type_id(g_LineNumber) := nvl(g_rec_lines.array_upg_cr_enc_type_id(p_line_num),
14521                                                               g_rec_lines.array_upg_dr_enc_type_id(p_line_num));
14522             IF (C_LEVEL_EVENT >= g_log_level) THEN
14523                 trace
14524                (p_msg       =>   'Period End Accrual Encumbrance for Upgraded Entries'
14525                ,p_level     =>   C_LEVEL_EVENT
14526                ,p_module    =>   l_log_module);
14527             END IF;
14528        END IF;
14529     END IF;
14530 
14531    --
14532    -- Validate line accounting attributes
14533    --
14534    IF g_rec_lines.array_mpa_option(g_LineNumber) NOT IN ('Y','N') THEN
14535       XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
14536       xla_accounting_err_pkg.build_message
14537            (p_appli_s_name            => 'XLA'
14538            ,p_msg_name                => 'XLA_MA_INVALID_OPTION'    -- 4262811a
14539            ,p_token_1                 => 'LINE_NUMBER'
14540            ,p_value_1                 =>  g_ExtractLine
14541            ,p_token_2                 => 'ACCOUNTING_SOURCE_NAME'
14542            ,p_value_2                 => XLA_AE_SOURCES_PKG.GetAccountingSourceName('MULTIPERIOD_OPTION')
14543                                                          --(g_rec_lines.array_acct_attr_code(p_line_num))
14544            ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14545            ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14546            ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
14547    END IF;
14548 
14549    IF g_rec_lines.array_sys_distribution_type(g_LineNumber) IS NULL THEN
14550       XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
14551       xla_accounting_err_pkg.build_message
14552            (p_appli_s_name            => 'XLA'
14553            ,p_msg_name                => 'XLA_AP_NO_DIST_LINK_TYPE'
14554            ,p_token_1                 => 'LINE_NUMBER'
14555            ,p_value_1                 =>  g_ExtractLine
14556            ,p_token_2                 => 'ACCOUNTING_SOURCE_NAME'
14557            ,p_value_2                 => XLA_AE_SOURCES_PKG.GetAccountingSourceName('DISTRIBUTION_TYPE')
14558                                                              --(p_rec_acct_attrs.array_acct_attr_code(i))
14559            ,p_token_3                 => 'SOURCE_NAME'
14560            ,p_value_3                 => NULL
14561            ,p_token_4                 => 'LINE_TYPE_NAME'
14562            ,p_value_4                 =>  XLA_AE_SOURCES_PKG.GetComponentName (
14563                                                      g_accounting_line.component_type
14564                                                    , g_accounting_line.accounting_line_code
14565                                                    , g_accounting_line.accounting_line_type_code
14566                                                    , g_accounting_line.accounting_line_appl_id
14567                                                    , g_accounting_line.amb_context_code
14568                                                    , g_accounting_line.entity_code
14569                                                    , g_accounting_line.event_class_code
14570                                                   )
14571            ,p_token_5                 => 'OWNER'
14572            ,p_value_5                 => xla_lookups_pkg.get_meaning(
14573                                                      'XLA_OWNER_TYPE'
14574                                                     , g_rec_lines.array_accounting_line_type(g_LineNumber)
14575                                                    )
14576            ,p_token_6                 => 'PRODUCT_NAME'
14577            ,p_value_6                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
14578            ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14579            ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14580            ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
14581    END IF;
14582 
14583 ----------------------------------------------
14584 -- 4623638  This change is on top of 120.85
14585 ----------------------------------------------
14586 IF nvl(g_rec_lines.array_calculate_acctd_flag(g_LineNumber), 'N')= 'N' OR
14587      (nvl(g_rec_lines.array_calculate_g_l_flag(g_LineNumber), 'N')='N' AND
14588       g_rec_lines.array_natural_side_code(g_LineNumber) = 'G') THEN
14589 
14590    IF g_rec_lines.array_ledger_amount(g_LineNumber) IS NULL THEN
14591       XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
14592       xla_accounting_err_pkg.build_message
14593            (p_appli_s_name            => 'XLA'
14594            ,p_msg_name                => 'XLA_AP_NO_LEDGER_AMOUNT'
14595            ,p_token_1                 => 'LINE_NUMBER'
14596            ,p_value_1                 =>  g_ExtractLine
14597            ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14598            ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14599            ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
14600    END IF;
14601 
14602 END IF;
14603 */
14604 
14605 EXCEPTION
14606 --
14607    WHEN xla_exceptions_pkg.application_exception THEN
14608       RAISE;
14609    WHEN OTHERS  THEN
14610       xla_exceptions_pkg.raise_message
14611                (p_location => 'xla_ae_lines_pkg.CopyLineInfo');
14612   --
14613 END CopyLineInfo;
14614 
14615 /*======================================================================+
14616 |                                                                       |
14617 | Public Procedure-  CopyLineInfo 7109881                               |
14618 |                                                                       |
14619 |                                                                       |
14620 +======================================================================*/
14621 PROCEDURE CopyLineInfo(
14622    p_line_num   NUMBER,
14623    p_rec_lines t_rec_lines
14624 ) IS
14625 
14626    l_log_module         VARCHAR2(240);
14627    l_rec_lines t_rec_lines; -- added for bug:7109881
14628 
14629 BEGIN
14630    IF g_log_enabled THEN
14631       l_log_module := C_DEFAULT_MODULE||'.CopyLineInfo';
14632    END IF;
14633 
14634    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14635       trace
14636            (p_msg      => 'BEGIN of CopyLineInfo(OverLoaded)'
14637            ,p_level    => C_LEVEL_PROCEDURE
14638            ,p_module   => l_log_module);
14639    END IF;
14640 
14641 --------------------------------------------------------------------------------------------------------------------
14642 --                 g_mpa_recog_lines             g_rec_lines                                                      --
14643 --                        |                           |                                                           --
14644 --                        ---->    p_rec_lines   <-----                                                           --
14645 --                                     |                                                                          --
14646 --                   IF ( g_LineNumber = C_BULK_LIMIT )                                                           --
14647 --                                     |           		                                                  --
14648 --                        --<--TRUE----|----FALSE-->--		                                                  --
14649 --                       |                            |		                                                  --
14650 --                       |                            |		                                                  --
14651 --                    l_rec_lines --->----<------------		                                                  --
14652 --                                     |			                                                  --
14653 --                                     |			                                                  --
14654 --                                g_rec_lines			                                                  --
14655 --								                                                  --
14656 --------------------------------------------------------------------------------------------------------------------
14657 
14658 IF( NVL(g_LineNumber,0) = C_BULK_LIMIT)
14659    THEN
14660 	   -------------------------------------------------------------------------------------------------------
14661 	   -- Copy all information in p_rec_lines from p_line_num to l_rec_lines p_line_num with the following exceptions:
14662 	   -------------------------------------------------------------------------------------------------------
14663 	   --
14664 	   --
14665 	   l_rec_lines.array_ae_header_id(p_line_num) := p_rec_lines.array_ae_header_id(p_line_num);
14666 	   l_rec_lines.array_header_num(p_line_num)   := p_rec_lines.array_header_num(p_line_num);
14667 
14668 	   -- =================================================================================================
14669 	   l_rec_lines.array_accounting_class(p_line_num)      := p_rec_lines.array_accounting_class(p_line_num);
14670 	   l_rec_lines.array_rounding_class(p_line_num)        := p_rec_lines.array_rounding_class(p_line_num);
14671 	   l_rec_lines.array_doc_rounding_level(p_line_num)    := p_rec_lines.array_doc_rounding_level(p_line_num);
14672 	   l_rec_lines.array_gain_or_loss_ref(p_line_num):=    p_rec_lines.array_gain_or_loss_ref(p_line_num);
14673 	   l_rec_lines.array_event_class_code(p_line_num)      := p_rec_lines.array_event_class_code(p_line_num);
14674 	   l_rec_lines.array_event_type_code(p_line_num)       := p_rec_lines.array_event_type_code(p_line_num);
14675 	   l_rec_lines.array_line_defn_owner_code(p_line_num)  := p_rec_lines.array_line_defn_owner_code(p_line_num);
14676 	   l_rec_lines.array_line_defn_code(p_line_num)        := p_rec_lines.array_line_defn_code(p_line_num);
14677 	   l_rec_lines.array_accounting_line_code(p_line_num)  := p_rec_lines.array_accounting_line_code(p_line_num);
14678 	   l_rec_lines.array_accounting_line_type(p_line_num)  := p_rec_lines.array_accounting_line_type(p_line_num);
14679 	   l_rec_lines.array_calculate_acctd_flag(p_line_num)  := p_rec_lines.array_calculate_acctd_flag(p_line_num);
14680 	   l_rec_lines.array_calculate_g_l_flag(p_line_num)    := p_rec_lines.array_calculate_g_l_flag(p_line_num);
14681 	   l_rec_lines.array_gain_or_loss_flag(p_line_num)    := p_rec_lines.array_gain_or_loss_flag(p_line_num);
14682 
14683 	   --
14684 	   -- following sets the extract line number
14685 	   --
14686 	   l_rec_lines.array_extract_line_num(p_line_num) := p_rec_lines.array_extract_line_num(p_line_num);
14687 
14688 	   --
14689 	   -- line flexfield accounts
14690 	   --
14691 	   l_rec_lines.array_ccid_flag(p_line_num)  := p_rec_lines.array_ccid_flag(p_line_num);
14692 	   l_rec_lines.array_ccid(p_line_num)       := p_rec_lines.array_ccid(p_line_num);
14693 	   --
14694 	   l_rec_lines.array_accounting_coa_id(p_line_num)   := p_rec_lines.array_accounting_coa_id(p_line_num);
14695 	   l_rec_lines.array_transaction_coa_id(p_line_num)  := p_rec_lines.array_transaction_coa_id(p_line_num);
14696 	   l_rec_lines.array_sl_coa_mapping_name(p_line_num) := p_rec_lines.array_sl_coa_mapping_name(p_line_num);
14697 	   --
14698 	   l_rec_lines.array_segment1(p_line_num)   := p_rec_lines.array_segment1(p_line_num);
14699 	   l_rec_lines.array_segment2(p_line_num)   := p_rec_lines.array_segment2(p_line_num);
14700 	   l_rec_lines.array_segment3(p_line_num)   := p_rec_lines.array_segment3(p_line_num);
14701 	   l_rec_lines.array_segment4(p_line_num)   := p_rec_lines.array_segment4(p_line_num);
14702 	   l_rec_lines.array_segment5(p_line_num)   := p_rec_lines.array_segment5(p_line_num);
14703 	   l_rec_lines.array_segment6(p_line_num)   := p_rec_lines.array_segment6(p_line_num);
14704 	   l_rec_lines.array_segment7(p_line_num)   := p_rec_lines.array_segment7(p_line_num);
14705 	   l_rec_lines.array_segment8(p_line_num)   := p_rec_lines.array_segment8(p_line_num);
14706 	   l_rec_lines.array_segment9(p_line_num)   := p_rec_lines.array_segment9(p_line_num);
14707 	   l_rec_lines.array_segment10(p_line_num)  := p_rec_lines.array_segment10(p_line_num);
14708 	   l_rec_lines.array_segment11(p_line_num)  := p_rec_lines.array_segment11(p_line_num);
14709 	   l_rec_lines.array_segment12(p_line_num)  := p_rec_lines.array_segment12(p_line_num);
14710 	   l_rec_lines.array_segment13(p_line_num)  := p_rec_lines.array_segment13(p_line_num);
14711 	   l_rec_lines.array_segment14(p_line_num)  := p_rec_lines.array_segment14(p_line_num);
14712 	   l_rec_lines.array_segment15(p_line_num)  := p_rec_lines.array_segment15(p_line_num);
14713 	   l_rec_lines.array_segment16(p_line_num)  := p_rec_lines.array_segment16(p_line_num);
14714 	   l_rec_lines.array_segment17(p_line_num)  := p_rec_lines.array_segment17(p_line_num);
14715 	   l_rec_lines.array_segment18(p_line_num)  := p_rec_lines.array_segment18(p_line_num);
14716 	   l_rec_lines.array_segment19(p_line_num)  := p_rec_lines.array_segment19(p_line_num);
14717 	   l_rec_lines.array_segment20(p_line_num)  := p_rec_lines.array_segment20(p_line_num);
14718 	   l_rec_lines.array_segment21(p_line_num)  := p_rec_lines.array_segment21(p_line_num);
14719 	   l_rec_lines.array_segment22(p_line_num)  := p_rec_lines.array_segment22(p_line_num);
14720 	   l_rec_lines.array_segment23(p_line_num)  := p_rec_lines.array_segment23(p_line_num);
14721 	   l_rec_lines.array_segment24(p_line_num)  := p_rec_lines.array_segment24(p_line_num);
14722 	   l_rec_lines.array_segment25(p_line_num)  := p_rec_lines.array_segment25(p_line_num);
14723 	   l_rec_lines.array_segment26(p_line_num)  := p_rec_lines.array_segment26(p_line_num);
14724 	   l_rec_lines.array_segment27(p_line_num)  := p_rec_lines.array_segment27(p_line_num);
14725 	   l_rec_lines.array_segment28(p_line_num)  := p_rec_lines.array_segment28(p_line_num);
14726 	   l_rec_lines.array_segment29(p_line_num)  := p_rec_lines.array_segment29(p_line_num);
14727 	   l_rec_lines.array_segment30(p_line_num)  := p_rec_lines.array_segment30(p_line_num);
14728 	   --
14729 	   l_rec_lines.alt_array_ccid_flag(p_line_num)  := p_rec_lines.alt_array_ccid_flag(p_line_num);
14730 	   l_rec_lines.alt_array_ccid(p_line_num)       := p_rec_lines.alt_array_ccid(p_line_num);
14731 	   l_rec_lines.alt_array_segment1(p_line_num)   := p_rec_lines.alt_array_segment1(p_line_num);
14732 	   l_rec_lines.alt_array_segment2(p_line_num)   := p_rec_lines.alt_array_segment2(p_line_num);
14733 	   l_rec_lines.alt_array_segment3(p_line_num)   := p_rec_lines.alt_array_segment3(p_line_num);
14734 	   l_rec_lines.alt_array_segment4(p_line_num)   := p_rec_lines.alt_array_segment4(p_line_num);
14735 	   l_rec_lines.alt_array_segment5(p_line_num)   := p_rec_lines.alt_array_segment5(p_line_num);
14736 	   l_rec_lines.alt_array_segment6(p_line_num)   := p_rec_lines.alt_array_segment6(p_line_num);
14737 	   l_rec_lines.alt_array_segment7(p_line_num)   := p_rec_lines.alt_array_segment7(p_line_num);
14738 	   l_rec_lines.alt_array_segment8(p_line_num)   := p_rec_lines.alt_array_segment8(p_line_num);
14739 	   l_rec_lines.alt_array_segment9(p_line_num)   := p_rec_lines.alt_array_segment9(p_line_num);
14740 	   l_rec_lines.alt_array_segment10(p_line_num)  := p_rec_lines.alt_array_segment10(p_line_num);
14741 	   l_rec_lines.alt_array_segment11(p_line_num)  := p_rec_lines.alt_array_segment11(p_line_num);
14742 	   l_rec_lines.alt_array_segment12(p_line_num)  := p_rec_lines.alt_array_segment12(p_line_num);
14743 	   l_rec_lines.alt_array_segment13(p_line_num)  := p_rec_lines.alt_array_segment13(p_line_num);
14744 	   l_rec_lines.alt_array_segment14(p_line_num)  := p_rec_lines.alt_array_segment14(p_line_num);
14745 	   l_rec_lines.alt_array_segment15(p_line_num)  := p_rec_lines.alt_array_segment15(p_line_num);
14746 	   l_rec_lines.alt_array_segment16(p_line_num)  := p_rec_lines.alt_array_segment16(p_line_num);
14747 	   l_rec_lines.alt_array_segment17(p_line_num)  := p_rec_lines.alt_array_segment17(p_line_num);
14748 	   l_rec_lines.alt_array_segment18(p_line_num)  := p_rec_lines.alt_array_segment18(p_line_num);
14749 	   l_rec_lines.alt_array_segment19(p_line_num)  := p_rec_lines.alt_array_segment19(p_line_num);
14750 	   l_rec_lines.alt_array_segment20(p_line_num)  := p_rec_lines.alt_array_segment20(p_line_num);
14751 	   l_rec_lines.alt_array_segment21(p_line_num)  := p_rec_lines.alt_array_segment21(p_line_num);
14752 	   l_rec_lines.alt_array_segment22(p_line_num)  := p_rec_lines.alt_array_segment22(p_line_num);
14753 	   l_rec_lines.alt_array_segment23(p_line_num)  := p_rec_lines.alt_array_segment23(p_line_num);
14754 	   l_rec_lines.alt_array_segment24(p_line_num)  := p_rec_lines.alt_array_segment24(p_line_num);
14755 	   l_rec_lines.alt_array_segment25(p_line_num)  := p_rec_lines.alt_array_segment25(p_line_num);
14756 	   l_rec_lines.alt_array_segment26(p_line_num)  := p_rec_lines.alt_array_segment26(p_line_num);
14757 	   l_rec_lines.alt_array_segment27(p_line_num)  := p_rec_lines.alt_array_segment27(p_line_num);
14758 	   l_rec_lines.alt_array_segment28(p_line_num)  := p_rec_lines.alt_array_segment28(p_line_num);
14759 	   l_rec_lines.alt_array_segment29(p_line_num)  := p_rec_lines.alt_array_segment29(p_line_num);
14760 	   l_rec_lines.alt_array_segment30(p_line_num)  := p_rec_lines.alt_array_segment30(p_line_num);
14761 	   --
14762 	   -- Option lines
14763 	   --
14764 	   l_rec_lines.array_gl_transfer_mode(p_line_num)      := p_rec_lines.array_gl_transfer_mode(p_line_num);
14765 	   l_rec_lines.array_natural_side_code(p_line_num)     := p_rec_lines.array_natural_side_code(p_line_num);
14766 	   l_rec_lines.array_acct_entry_type_code(p_line_num)  := p_rec_lines.array_acct_entry_type_code(p_line_num);
14767 	   l_rec_lines.array_switch_side_flag(p_line_num)      := p_rec_lines.array_switch_side_flag(p_line_num);
14768 	   l_rec_lines.array_merge_duplicate_code(p_line_num)  := p_rec_lines.array_merge_duplicate_code(p_line_num);
14769 	   --
14770 	   -- line amounts
14771 	   --
14772 	   l_rec_lines.array_entered_amount(p_line_num)        := p_rec_lines.array_entered_amount(p_line_num);
14773 	   l_rec_lines.array_ledger_amount(p_line_num)         := p_rec_lines.array_ledger_amount(p_line_num);
14774 	   l_rec_lines.array_entered_dr(p_line_num)            := p_rec_lines.array_entered_dr(p_line_num);
14775 	   l_rec_lines.array_entered_cr(p_line_num)            := p_rec_lines.array_entered_cr(p_line_num);
14776 	   l_rec_lines.array_accounted_dr(p_line_num)          := p_rec_lines.array_accounted_dr(p_line_num);
14777 	   l_rec_lines.array_accounted_cr(p_line_num)          := p_rec_lines.array_accounted_cr(p_line_num);
14778 	   l_rec_lines.array_currency_code(p_line_num)         := p_rec_lines.array_currency_code(p_line_num);
14779 	   l_rec_lines.array_currency_mau(p_line_num)          := xla_accounting_cache_pkg.GetCurrencyMau(p_rec_lines.array_currency_code(p_line_num));
14780 	   l_rec_lines.array_curr_conversion_date(p_line_num)  := p_rec_lines.array_curr_conversion_date(p_line_num);
14781 	   l_rec_lines.array_curr_conversion_rate(p_line_num)  := p_rec_lines.array_curr_conversion_rate(p_line_num);
14782 	   l_rec_lines.array_curr_conversion_type(p_line_num)  := p_rec_lines.array_curr_conversion_type(p_line_num);
14783 	   l_rec_lines.array_description(p_line_num)           := p_rec_lines.array_description(p_line_num);
14784 	   --
14785 	   -- line descriptions
14786 	   --
14787 	   l_rec_lines.array_party_id(p_line_num)              := p_rec_lines.array_party_id(p_line_num);
14788 	   l_rec_lines.array_party_site_id(p_line_num)         := p_rec_lines.array_party_site_id(p_line_num);
14789 	   l_rec_lines.array_party_type_code(p_line_num)       := p_rec_lines.array_party_type_code(p_line_num);
14790 	   --
14791 	   l_rec_lines.array_statistical_amount(p_line_num)    := p_rec_lines.array_statistical_amount(p_line_num);
14792 	   l_rec_lines.array_ussgl_transaction(p_line_num)     := p_rec_lines.array_ussgl_transaction(p_line_num);
14793 	   --
14794 	   l_rec_lines.array_jgzz_recon_ref(p_line_num)           := p_rec_lines.array_jgzz_recon_ref(p_line_num);
14795 	   --
14796 	   -- distribution links
14797 	   --
14798 	   l_rec_lines.array_distribution_id_char_1(p_line_num)  := p_rec_lines.array_distribution_id_char_1(p_line_num);
14799 	   l_rec_lines.array_distribution_id_char_2(p_line_num)  := p_rec_lines.array_distribution_id_char_2(p_line_num);
14800 	   l_rec_lines.array_distribution_id_char_3(p_line_num)  := p_rec_lines.array_distribution_id_char_3(p_line_num);
14801 	   l_rec_lines.array_distribution_id_char_4(p_line_num)  := p_rec_lines.array_distribution_id_char_4(p_line_num);
14802 	   l_rec_lines.array_distribution_id_char_5(p_line_num)  := p_rec_lines.array_distribution_id_char_5(p_line_num);
14803 	   l_rec_lines.array_distribution_id_num_1(p_line_num)   := p_rec_lines.array_distribution_id_num_1(p_line_num);
14804 	   l_rec_lines.array_distribution_id_num_2(p_line_num)   := p_rec_lines.array_distribution_id_num_2(p_line_num);
14805 	   l_rec_lines.array_distribution_id_num_3(p_line_num)   := p_rec_lines.array_distribution_id_num_3(p_line_num);
14806 	   l_rec_lines.array_distribution_id_num_4(p_line_num)   := p_rec_lines.array_distribution_id_num_4(p_line_num);
14807 	   l_rec_lines.array_distribution_id_num_5(p_line_num)   := p_rec_lines.array_distribution_id_num_5(p_line_num);
14808 	   l_rec_lines.array_sys_distribution_type(p_line_num)   := p_rec_lines.array_sys_distribution_type(p_line_num);
14809 	   --
14810 	   -- reverse distribution links
14811 	   --
14812 	   l_rec_lines.array_rev_dist_id_char_1(p_line_num)  := p_rec_lines.array_rev_dist_id_char_1(p_line_num);
14813 	   l_rec_lines.array_rev_dist_id_char_2(p_line_num)  := p_rec_lines.array_rev_dist_id_char_2(p_line_num);
14814 	   l_rec_lines.array_rev_dist_id_char_3(p_line_num)  := p_rec_lines.array_rev_dist_id_char_3(p_line_num);
14815 	   l_rec_lines.array_rev_dist_id_char_4(p_line_num)  := p_rec_lines.array_rev_dist_id_char_4(p_line_num);
14816 	   l_rec_lines.array_rev_dist_id_char_5(p_line_num)  := p_rec_lines.array_rev_dist_id_char_5(p_line_num);
14817 	   l_rec_lines.array_rev_dist_id_num_1(p_line_num)   := p_rec_lines.array_rev_dist_id_num_1(p_line_num);
14818 	   l_rec_lines.array_rev_dist_id_num_2(p_line_num)   := p_rec_lines.array_rev_dist_id_num_2(p_line_num);
14819 	   l_rec_lines.array_rev_dist_id_num_3(p_line_num)   := p_rec_lines.array_rev_dist_id_num_3(p_line_num);
14820 	   l_rec_lines.array_rev_dist_id_num_4(p_line_num)   := p_rec_lines.array_rev_dist_id_num_4(p_line_num);
14821 	   l_rec_lines.array_rev_dist_id_num_5(p_line_num)   := p_rec_lines.array_rev_dist_id_num_5(p_line_num);
14822 	   l_rec_lines.array_rev_dist_type(p_line_num)       := p_rec_lines.array_rev_dist_type(p_line_num);
14823 	   --
14824 	   -- multiperiod accounting
14825 	   --
14826 	   -- DO NOT COPY p_rec_lines.array_mpa_acc_entry_flag
14827 	   l_rec_lines.array_header_num(p_line_num)          := p_rec_lines.array_header_num(p_line_num);
14828 	   l_rec_lines.array_mpa_option(p_line_num)          := p_rec_lines.array_mpa_option(p_line_num);
14829 	   l_rec_lines.array_mpa_start_date(p_line_num)      := p_rec_lines.array_mpa_start_date(p_line_num);
14830 	   l_rec_lines.array_mpa_end_date(p_line_num)        := p_rec_lines.array_mpa_end_date(p_line_num);
14831 	   --
14832 	   -- reversal info
14833 	   --
14834 	   l_rec_lines.array_acc_reversal_option(p_line_num)   := p_rec_lines.array_acc_reversal_option(p_line_num);
14835 	   --
14836 	   -- tax info
14837 	   --
14838 	   l_rec_lines.array_tax_line_ref(p_line_num)           := p_rec_lines.array_tax_line_ref(p_line_num);
14839 	   l_rec_lines.array_tax_summary_line_ref(p_line_num)   := p_rec_lines.array_tax_summary_line_ref(p_line_num);
14840 	   l_rec_lines.array_tax_rec_nrec_dist_ref(p_line_num)  := p_rec_lines.array_tax_rec_nrec_dist_ref(p_line_num);
14841 	   --
14842 	   --
14843 	   l_rec_lines.array_anc_balance_flag(p_line_num)      := p_rec_lines.array_anc_balance_flag(p_line_num);
14844 	   l_rec_lines.array_anc_id_1(p_line_num)              := p_rec_lines.array_anc_id_1(p_line_num);
14845 	   l_rec_lines.array_anc_id_2(p_line_num)              := p_rec_lines.array_anc_id_2(p_line_num);
14846 	   l_rec_lines.array_anc_id_3(p_line_num)              := p_rec_lines.array_anc_id_3(p_line_num);
14847 	   l_rec_lines.array_anc_id_4(p_line_num)              := p_rec_lines.array_anc_id_4(p_line_num);
14848 	   l_rec_lines.array_anc_id_5(p_line_num)              := p_rec_lines.array_anc_id_5(p_line_num);
14849 	   l_rec_lines.array_anc_id_6(p_line_num)              := p_rec_lines.array_anc_id_6(p_line_num);
14850 	   l_rec_lines.array_anc_id_7(p_line_num)              := p_rec_lines.array_anc_id_7(p_line_num);
14851 	   l_rec_lines.array_anc_id_8(p_line_num)              := p_rec_lines.array_anc_id_8(p_line_num);
14852 	   l_rec_lines.array_anc_id_9(p_line_num)              := p_rec_lines.array_anc_id_9(p_line_num);
14853 	   l_rec_lines.array_anc_id_10(p_line_num)             := p_rec_lines.array_anc_id_10(p_line_num);
14854 	   l_rec_lines.array_anc_id_11(p_line_num)             := p_rec_lines.array_anc_id_11(p_line_num);
14855 	   l_rec_lines.array_anc_id_12(p_line_num)             := p_rec_lines.array_anc_id_12(p_line_num);
14856 	   l_rec_lines.array_anc_id_13(p_line_num)             := p_rec_lines.array_anc_id_13(p_line_num);
14857 	   l_rec_lines.array_anc_id_14(p_line_num)             := p_rec_lines.array_anc_id_14(p_line_num);
14858 	   l_rec_lines.array_anc_id_15(p_line_num)             := p_rec_lines.array_anc_id_15(p_line_num);
14859 	   l_rec_lines.array_anc_id_16(p_line_num)             := p_rec_lines.array_anc_id_16(p_line_num);
14860 	   l_rec_lines.array_anc_id_17(p_line_num)             := p_rec_lines.array_anc_id_17(p_line_num);
14861 	   l_rec_lines.array_anc_id_18(p_line_num)             := p_rec_lines.array_anc_id_18(p_line_num);
14862 	   l_rec_lines.array_anc_id_19(p_line_num)             := p_rec_lines.array_anc_id_19(p_line_num);
14863 	   l_rec_lines.array_anc_id_20(p_line_num)             := p_rec_lines.array_anc_id_20(p_line_num);
14864 	   l_rec_lines.array_anc_id_21(p_line_num)             := p_rec_lines.array_anc_id_21(p_line_num);
14865 	   l_rec_lines.array_anc_id_22(p_line_num)             := p_rec_lines.array_anc_id_22(p_line_num);
14866 	   l_rec_lines.array_anc_id_23(p_line_num)             := p_rec_lines.array_anc_id_23(p_line_num);
14867 	   l_rec_lines.array_anc_id_24(p_line_num)             := p_rec_lines.array_anc_id_24(p_line_num);
14868 	   l_rec_lines.array_anc_id_25(p_line_num)             := p_rec_lines.array_anc_id_25(p_line_num);
14869 	   l_rec_lines.array_anc_id_26(p_line_num)             := p_rec_lines.array_anc_id_26(p_line_num);
14870 	   l_rec_lines.array_anc_id_27(p_line_num)             := p_rec_lines.array_anc_id_27(p_line_num);
14871 	   l_rec_lines.array_anc_id_28(p_line_num)             := p_rec_lines.array_anc_id_28(p_line_num);
14872 	   l_rec_lines.array_anc_id_29(p_line_num)             := p_rec_lines.array_anc_id_29(p_line_num);
14873 	   l_rec_lines.array_anc_id_30(p_line_num)             := p_rec_lines.array_anc_id_30(p_line_num);
14874 	   l_rec_lines.array_anc_id_31(p_line_num)             := p_rec_lines.array_anc_id_31(p_line_num);
14875 	   l_rec_lines.array_anc_id_32(p_line_num)             := p_rec_lines.array_anc_id_32(p_line_num);
14876 	   l_rec_lines.array_anc_id_33(p_line_num)             := p_rec_lines.array_anc_id_33(p_line_num);
14877 	   l_rec_lines.array_anc_id_34(p_line_num)             := p_rec_lines.array_anc_id_34(p_line_num);
14878 	   l_rec_lines.array_anc_id_35(p_line_num)             := p_rec_lines.array_anc_id_35(p_line_num);
14879 	   l_rec_lines.array_anc_id_36(p_line_num)             := p_rec_lines.array_anc_id_36(p_line_num);
14880 	   l_rec_lines.array_anc_id_37(p_line_num)             := p_rec_lines.array_anc_id_37(p_line_num);
14881 	   l_rec_lines.array_anc_id_38(p_line_num)             := p_rec_lines.array_anc_id_38(p_line_num);
14882 	   l_rec_lines.array_anc_id_39(p_line_num)             := p_rec_lines.array_anc_id_39(p_line_num);
14883 	   l_rec_lines.array_anc_id_40(p_line_num)             := p_rec_lines.array_anc_id_40(p_line_num);
14884 	   l_rec_lines.array_anc_id_41(p_line_num)             := p_rec_lines.array_anc_id_41(p_line_num);
14885 	   l_rec_lines.array_anc_id_42(p_line_num)             := p_rec_lines.array_anc_id_42(p_line_num);
14886 	   l_rec_lines.array_anc_id_43(p_line_num)             := p_rec_lines.array_anc_id_43(p_line_num);
14887 	   l_rec_lines.array_anc_id_44(p_line_num)             := p_rec_lines.array_anc_id_44(p_line_num);
14888 	   l_rec_lines.array_anc_id_45(p_line_num)             := p_rec_lines.array_anc_id_45(p_line_num);
14889 	   l_rec_lines.array_anc_id_46(p_line_num)             := p_rec_lines.array_anc_id_46(p_line_num);
14890 	   l_rec_lines.array_anc_id_47(p_line_num)             := p_rec_lines.array_anc_id_47(p_line_num);
14891 	   l_rec_lines.array_anc_id_48(p_line_num)             := p_rec_lines.array_anc_id_48(p_line_num);
14892 	   l_rec_lines.array_anc_id_49(p_line_num)             := p_rec_lines.array_anc_id_49(p_line_num);
14893 	   l_rec_lines.array_anc_id_50(p_line_num)             := p_rec_lines.array_anc_id_50(p_line_num);
14894 	   l_rec_lines.array_anc_id_51(p_line_num)             := p_rec_lines.array_anc_id_51(p_line_num);
14895 	   l_rec_lines.array_anc_id_52(p_line_num)             := p_rec_lines.array_anc_id_52(p_line_num);
14896 	   l_rec_lines.array_anc_id_53(p_line_num)             := p_rec_lines.array_anc_id_53(p_line_num);
14897 	   l_rec_lines.array_anc_id_54(p_line_num)             := p_rec_lines.array_anc_id_54(p_line_num);
14898 	   l_rec_lines.array_anc_id_55(p_line_num)             := p_rec_lines.array_anc_id_55(p_line_num);
14899 	   l_rec_lines.array_anc_id_56(p_line_num)             := p_rec_lines.array_anc_id_56(p_line_num);
14900 	   l_rec_lines.array_anc_id_57(p_line_num)             := p_rec_lines.array_anc_id_57(p_line_num);
14901 	   l_rec_lines.array_anc_id_58(p_line_num)             := p_rec_lines.array_anc_id_58(p_line_num);
14902 	   l_rec_lines.array_anc_id_59(p_line_num)             := p_rec_lines.array_anc_id_59(p_line_num);
14903 	   l_rec_lines.array_anc_id_60(p_line_num)             := p_rec_lines.array_anc_id_60(p_line_num);
14904 	   l_rec_lines.array_anc_id_61(p_line_num)             := p_rec_lines.array_anc_id_61(p_line_num);
14905 	   l_rec_lines.array_anc_id_62(p_line_num)             := p_rec_lines.array_anc_id_62(p_line_num);
14906 	   l_rec_lines.array_anc_id_63(p_line_num)             := p_rec_lines.array_anc_id_63(p_line_num);
14907 	   l_rec_lines.array_anc_id_64(p_line_num)             := p_rec_lines.array_anc_id_64(p_line_num);
14908 	   l_rec_lines.array_anc_id_65(p_line_num)             := p_rec_lines.array_anc_id_65(p_line_num);
14909 	   l_rec_lines.array_anc_id_66(p_line_num)             := p_rec_lines.array_anc_id_66(p_line_num);
14910 	   l_rec_lines.array_anc_id_67(p_line_num)             := p_rec_lines.array_anc_id_67(p_line_num);
14911 	   l_rec_lines.array_anc_id_68(p_line_num)             := p_rec_lines.array_anc_id_68(p_line_num);
14912 	   l_rec_lines.array_anc_id_69(p_line_num)             := p_rec_lines.array_anc_id_69(p_line_num);
14913 	   l_rec_lines.array_anc_id_70(p_line_num)             := p_rec_lines.array_anc_id_70(p_line_num);
14914 	   l_rec_lines.array_anc_id_71(p_line_num)             := p_rec_lines.array_anc_id_71(p_line_num);
14915 	   l_rec_lines.array_anc_id_72(p_line_num)             := p_rec_lines.array_anc_id_72(p_line_num);
14916 	   l_rec_lines.array_anc_id_73(p_line_num)             := p_rec_lines.array_anc_id_73(p_line_num);
14917 	   l_rec_lines.array_anc_id_74(p_line_num)             := p_rec_lines.array_anc_id_74(p_line_num);
14918 	   l_rec_lines.array_anc_id_75(p_line_num)             := p_rec_lines.array_anc_id_75(p_line_num);
14919 	   l_rec_lines.array_anc_id_76(p_line_num)             := p_rec_lines.array_anc_id_76(p_line_num);
14920 	   l_rec_lines.array_anc_id_77(p_line_num)             := p_rec_lines.array_anc_id_77(p_line_num);
14921 	   l_rec_lines.array_anc_id_78(p_line_num)             := p_rec_lines.array_anc_id_78(p_line_num);
14922 	   l_rec_lines.array_anc_id_79(p_line_num)             := p_rec_lines.array_anc_id_79(p_line_num);
14923 	   l_rec_lines.array_anc_id_80(p_line_num)             := p_rec_lines.array_anc_id_80(p_line_num);
14924 	   l_rec_lines.array_anc_id_81(p_line_num)             := p_rec_lines.array_anc_id_81(p_line_num);
14925 	   l_rec_lines.array_anc_id_82(p_line_num)             := p_rec_lines.array_anc_id_82(p_line_num);
14926 	   l_rec_lines.array_anc_id_83(p_line_num)             := p_rec_lines.array_anc_id_83(p_line_num);
14927 	   l_rec_lines.array_anc_id_84(p_line_num)             := p_rec_lines.array_anc_id_84(p_line_num);
14928 	   l_rec_lines.array_anc_id_85(p_line_num)             := p_rec_lines.array_anc_id_85(p_line_num);
14929 	   l_rec_lines.array_anc_id_86(p_line_num)             := p_rec_lines.array_anc_id_86(p_line_num);
14930 	   l_rec_lines.array_anc_id_87(p_line_num)             := p_rec_lines.array_anc_id_87(p_line_num);
14931 	   l_rec_lines.array_anc_id_88(p_line_num)             := p_rec_lines.array_anc_id_88(p_line_num);
14932 	   l_rec_lines.array_anc_id_89(p_line_num)             := p_rec_lines.array_anc_id_89(p_line_num);
14933 	   l_rec_lines.array_anc_id_90(p_line_num)             := p_rec_lines.array_anc_id_90(p_line_num);
14934 	   l_rec_lines.array_anc_id_91(p_line_num)             := p_rec_lines.array_anc_id_91(p_line_num);
14935 	   l_rec_lines.array_anc_id_92(p_line_num)             := p_rec_lines.array_anc_id_92(p_line_num);
14936 	   l_rec_lines.array_anc_id_93(p_line_num)             := p_rec_lines.array_anc_id_93(p_line_num);
14937 	   l_rec_lines.array_anc_id_94(p_line_num)             := p_rec_lines.array_anc_id_94(p_line_num);
14938 	   l_rec_lines.array_anc_id_95(p_line_num)             := p_rec_lines.array_anc_id_95(p_line_num);
14939 	   l_rec_lines.array_anc_id_96(p_line_num)             := p_rec_lines.array_anc_id_96(p_line_num);
14940 	   l_rec_lines.array_anc_id_97(p_line_num)             := p_rec_lines.array_anc_id_97(p_line_num);
14941 	   l_rec_lines.array_anc_id_98(p_line_num)             := p_rec_lines.array_anc_id_98(p_line_num);
14942 	   l_rec_lines.array_anc_id_99(p_line_num)             := p_rec_lines.array_anc_id_99(p_line_num);
14943 	   l_rec_lines.array_anc_id_100(p_line_num)            := p_rec_lines.array_anc_id_100(p_line_num);
14944 	   --
14945 	   --
14946 	   l_rec_lines.array_event_number(p_line_num)          := p_rec_lines.array_event_number(p_line_num);
14947 	   l_rec_lines.array_entity_id(p_line_num)             := p_rec_lines.array_entity_id(p_line_num);
14948 	   l_rec_lines.array_reversal_code(p_line_num)         := p_rec_lines.array_reversal_code(p_line_num);
14949 	   l_rec_lines.array_balance_type_code(p_line_num)     := p_rec_lines.array_balance_type_code(p_line_num);
14950 	   l_rec_lines.array_ledger_id(p_line_num)             := p_rec_lines.array_ledger_id(p_line_num);
14951 	   --
14952 	   -- business flow
14953 	   --
14954 	   l_rec_lines.array_business_method_code(p_line_num)   := p_rec_lines.array_business_method_code(p_line_num);
14955 	   l_rec_lines.array_business_class_code(p_line_num)    := p_rec_lines.array_business_class_code(p_line_num);
14956 	   l_rec_lines.array_inherit_desc_flag(p_line_num)      := p_rec_lines.array_inherit_desc_flag(p_line_num);
14957 	   l_rec_lines.array_bflow_application_id(p_line_num)   := p_rec_lines.array_bflow_application_id(p_line_num);
14958 
14959 	   l_rec_lines.array_bflow_entity_code(p_line_num)      := p_rec_lines.array_bflow_entity_code(p_line_num);
14960 	   l_rec_lines.array_bflow_source_id_num_1(p_line_num)  := p_rec_lines.array_bflow_source_id_num_1(p_line_num);
14961 	   l_rec_lines.array_bflow_source_id_num_2(p_line_num)  := p_rec_lines.array_bflow_source_id_num_2(p_line_num);
14962 	   l_rec_lines.array_bflow_source_id_num_3(p_line_num)  := p_rec_lines.array_bflow_source_id_num_3(p_line_num);
14963 	   l_rec_lines.array_bflow_source_id_num_4(p_line_num)  := p_rec_lines.array_bflow_source_id_num_4(p_line_num);
14964 	   l_rec_lines.array_bflow_source_id_char_1(p_line_num) := p_rec_lines.array_bflow_source_id_char_1(p_line_num);
14965 	   l_rec_lines.array_bflow_source_id_char_2(p_line_num) := p_rec_lines.array_bflow_source_id_char_2(p_line_num);
14966 	   l_rec_lines.array_bflow_source_id_char_3(p_line_num) := p_rec_lines.array_bflow_source_id_char_3(p_line_num);
14967 	   l_rec_lines.array_bflow_source_id_char_4(p_line_num) := p_rec_lines.array_bflow_source_id_char_4(p_line_num);
14968 
14969 	   l_rec_lines.array_bflow_distribution_type(p_line_num):= p_rec_lines.array_bflow_distribution_type(p_line_num);
14970 	   l_rec_lines.array_bflow_dist_id_num_1(p_line_num)    := p_rec_lines.array_bflow_dist_id_num_1(p_line_num);
14971 	   l_rec_lines.array_bflow_dist_id_num_2(p_line_num)    := p_rec_lines.array_bflow_dist_id_num_2(p_line_num);
14972 	   l_rec_lines.array_bflow_dist_id_num_3(p_line_num)    := p_rec_lines.array_bflow_dist_id_num_3(p_line_num);
14973 	   l_rec_lines.array_bflow_dist_id_num_4(p_line_num)    := p_rec_lines.array_bflow_dist_id_num_4(p_line_num);
14974 	   l_rec_lines.array_bflow_dist_id_num_5(p_line_num)    := p_rec_lines.array_bflow_dist_id_num_5(p_line_num);
14975 	   l_rec_lines.array_bflow_dist_id_char_1(p_line_num)   := p_rec_lines.array_bflow_dist_id_char_1(p_line_num);
14976 	   l_rec_lines.array_bflow_dist_id_char_2(p_line_num)   := p_rec_lines.array_bflow_dist_id_char_2(p_line_num);
14977 	   l_rec_lines.array_bflow_dist_id_char_3(p_line_num)   := p_rec_lines.array_bflow_dist_id_char_3(p_line_num);
14978 	   l_rec_lines.array_bflow_dist_id_char_4(p_line_num)   := p_rec_lines.array_bflow_dist_id_char_4(p_line_num);
14979 	   l_rec_lines.array_bflow_dist_id_char_5(p_line_num)   := p_rec_lines.array_bflow_dist_id_char_5(p_line_num);
14980 
14981 	   l_rec_lines.array_override_acctd_amt_flag(p_line_num)   := p_rec_lines.array_override_acctd_amt_flag(p_line_num);
14982 
14983 
14984 	   l_rec_lines.array_bflow_applied_to_amt(p_line_num)   := p_rec_lines.array_bflow_applied_to_amt(p_line_num); -- 5132302
14985 	   --
14986 	   -- Allocation Attributes
14987 	   --
14988 	   l_rec_lines.array_alloct_application_id(p_line_num)   := p_rec_lines.array_alloct_application_id(p_line_num);
14989 
14990 	   l_rec_lines.array_alloct_entity_code(p_line_num)      := p_rec_lines.array_alloct_entity_code(p_line_num);
14991 	   l_rec_lines.array_alloct_source_id_num_1(p_line_num)  := p_rec_lines.array_alloct_source_id_num_1(p_line_num);
14992 	   l_rec_lines.array_alloct_source_id_num_2(p_line_num)  := p_rec_lines.array_alloct_source_id_num_2(p_line_num);
14993 	   l_rec_lines.array_alloct_source_id_num_3(p_line_num)  := p_rec_lines.array_alloct_source_id_num_3(p_line_num);
14994 	   l_rec_lines.array_alloct_source_id_num_4(p_line_num)  := p_rec_lines.array_alloct_source_id_num_4(p_line_num);
14995 	   l_rec_lines.array_alloct_source_id_char_1(p_line_num) := p_rec_lines.array_alloct_source_id_char_1(p_line_num);
14996 	   l_rec_lines.array_alloct_source_id_char_2(p_line_num) := p_rec_lines.array_alloct_source_id_char_2(p_line_num);
14997 	   l_rec_lines.array_alloct_source_id_char_3(p_line_num) := p_rec_lines.array_alloct_source_id_char_3(p_line_num);
14998 	   l_rec_lines.array_alloct_source_id_char_4(p_line_num) := p_rec_lines.array_alloct_source_id_char_4(p_line_num);
14999 
15000 	   l_rec_lines.array_alloct_distribution_type(p_line_num):= p_rec_lines.array_alloct_distribution_type(p_line_num);
15001 	   l_rec_lines.array_alloct_dist_id_num_1(p_line_num)    := p_rec_lines.array_alloct_dist_id_num_1(p_line_num);
15002 	   l_rec_lines.array_alloct_dist_id_num_2(p_line_num)    := p_rec_lines.array_alloct_dist_id_num_2(p_line_num);
15003 	   l_rec_lines.array_alloct_dist_id_num_3(p_line_num)    := p_rec_lines.array_alloct_dist_id_num_3(p_line_num);
15004 	   l_rec_lines.array_alloct_dist_id_num_4(p_line_num)    := p_rec_lines.array_alloct_dist_id_num_4(p_line_num);
15005 	   l_rec_lines.array_alloct_dist_id_num_5(p_line_num)    := p_rec_lines.array_alloct_dist_id_num_5(p_line_num);
15006 	   l_rec_lines.array_alloct_dist_id_char_1(p_line_num)   := p_rec_lines.array_alloct_dist_id_char_1(p_line_num);
15007 	   l_rec_lines.array_alloct_dist_id_char_2(p_line_num)   := p_rec_lines.array_alloct_dist_id_char_2(p_line_num);
15008 	   l_rec_lines.array_alloct_dist_id_char_3(p_line_num)   := p_rec_lines.array_alloct_dist_id_char_3(p_line_num);
15009 	   l_rec_lines.array_alloct_dist_id_char_4(p_line_num)   := p_rec_lines.array_alloct_dist_id_char_4(p_line_num);
15010 	   l_rec_lines.array_alloct_dist_id_char_5(p_line_num)   := p_rec_lines.array_alloct_dist_id_char_5(p_line_num);
15011 
15012 	   l_rec_lines.array_upg_cr_enc_type_id(p_line_num)      := p_rec_lines.array_upg_cr_enc_type_id(p_line_num);
15013 	   l_rec_lines.array_upg_dr_enc_type_id(p_line_num)      := p_rec_lines.array_upg_dr_enc_type_id(p_line_num);
15014 	   l_rec_lines.array_actual_upg_option(p_line_num)       := p_rec_lines.array_actual_upg_option(p_line_num);
15015 	   l_rec_lines.array_enc_upg_option(p_line_num)          := p_rec_lines.array_enc_upg_option(p_line_num);
15016 
15017 ELSE
15018 
15019            l_rec_lines := p_rec_lines ;
15020 
15021 END IF ;
15022 
15023 	   SetNewLine;
15024 
15025 
15026 	   -------------------------------------------------------------------------------------------------------
15027 	   -- Copy all information in l_rec_lines from p_line_num to g_LineNumber
15028 	   -------------------------------------------------------------------------------------------------------
15029 
15030 	   g_rec_lines.array_ae_header_id(g_LineNumber) := l_rec_lines.array_ae_header_id(p_line_num);
15031 	   g_rec_lines.array_header_num(g_LineNumber)   := l_rec_lines.array_header_num(p_line_num);
15032 
15033 	   -- =================================================================================================
15034 	   g_rec_lines.array_accounting_class(g_LineNumber)      := l_rec_lines.array_accounting_class(p_line_num);
15035 	   g_rec_lines.array_rounding_class(g_LineNumber)        := l_rec_lines.array_rounding_class(p_line_num);
15036 	   g_rec_lines.array_doc_rounding_level(g_LineNumber)    := l_rec_lines.array_doc_rounding_level(p_line_num);
15037 	   g_rec_lines.array_gain_or_loss_ref(g_LineNumber):=    l_rec_lines.array_gain_or_loss_ref(p_line_num);
15038 	   g_rec_lines.array_event_class_code(g_LineNumber)      := l_rec_lines.array_event_class_code(p_line_num);
15039 	   g_rec_lines.array_event_type_code(g_LineNumber)       := l_rec_lines.array_event_type_code(p_line_num);
15040 	   g_rec_lines.array_line_defn_owner_code(g_LineNumber)  := l_rec_lines.array_line_defn_owner_code(p_line_num);
15041 	   g_rec_lines.array_line_defn_code(g_LineNumber)        := l_rec_lines.array_line_defn_code(p_line_num);
15042 	   g_rec_lines.array_accounting_line_code(g_LineNumber)  := l_rec_lines.array_accounting_line_code(p_line_num);
15043 	   g_rec_lines.array_accounting_line_type(g_LineNumber)  := l_rec_lines.array_accounting_line_type(p_line_num);
15044 	   g_rec_lines.array_calculate_acctd_flag(g_LineNumber)  := l_rec_lines.array_calculate_acctd_flag(p_line_num);
15045 	   g_rec_lines.array_calculate_g_l_flag(g_LineNumber)    := l_rec_lines.array_calculate_g_l_flag(p_line_num);
15046 	   g_rec_lines.array_gain_or_loss_flag(g_LineNumber)    := l_rec_lines.array_gain_or_loss_flag(p_line_num);
15047 
15048 	   --
15049 	   -- following sets the extract line number
15050 	   --
15051 	   g_rec_lines.array_extract_line_num(g_LineNumber) := l_rec_lines.array_extract_line_num(p_line_num);
15052 
15053 	   --
15054 	   -- line flexfield accounts
15055 	   --
15056 	   g_rec_lines.array_ccid_flag(g_LineNumber)  := l_rec_lines.array_ccid_flag(p_line_num);
15057 	   g_rec_lines.array_ccid(g_LineNumber)       := l_rec_lines.array_ccid(p_line_num);
15058 	   --
15059 	   g_rec_lines.array_accounting_coa_id(g_LineNumber)   := l_rec_lines.array_accounting_coa_id(p_line_num);
15060 	   g_rec_lines.array_transaction_coa_id(g_LineNumber)  := l_rec_lines.array_transaction_coa_id(p_line_num);
15061 	   g_rec_lines.array_sl_coa_mapping_name(g_LineNumber) := l_rec_lines.array_sl_coa_mapping_name(p_line_num);
15062 	   --
15063 	   g_rec_lines.array_segment1(g_LineNumber)   := l_rec_lines.array_segment1(p_line_num);
15064 	   g_rec_lines.array_segment2(g_LineNumber)   := l_rec_lines.array_segment2(p_line_num);
15065 	   g_rec_lines.array_segment3(g_LineNumber)   := l_rec_lines.array_segment3(p_line_num);
15066 	   g_rec_lines.array_segment4(g_LineNumber)   := l_rec_lines.array_segment4(p_line_num);
15067 	   g_rec_lines.array_segment5(g_LineNumber)   := l_rec_lines.array_segment5(p_line_num);
15068 	   g_rec_lines.array_segment6(g_LineNumber)   := l_rec_lines.array_segment6(p_line_num);
15069 	   g_rec_lines.array_segment7(g_LineNumber)   := l_rec_lines.array_segment7(p_line_num);
15070 	   g_rec_lines.array_segment8(g_LineNumber)   := l_rec_lines.array_segment8(p_line_num);
15071 	   g_rec_lines.array_segment9(g_LineNumber)   := l_rec_lines.array_segment9(p_line_num);
15072 	   g_rec_lines.array_segment10(g_LineNumber)  := l_rec_lines.array_segment10(p_line_num);
15073 	   g_rec_lines.array_segment11(g_LineNumber)  := l_rec_lines.array_segment11(p_line_num);
15074 	   g_rec_lines.array_segment12(g_LineNumber)  := l_rec_lines.array_segment12(p_line_num);
15075 	   g_rec_lines.array_segment13(g_LineNumber)  := l_rec_lines.array_segment13(p_line_num);
15076 	   g_rec_lines.array_segment14(g_LineNumber)  := l_rec_lines.array_segment14(p_line_num);
15077 	   g_rec_lines.array_segment15(g_LineNumber)  := l_rec_lines.array_segment15(p_line_num);
15078 	   g_rec_lines.array_segment16(g_LineNumber)  := l_rec_lines.array_segment16(p_line_num);
15079 	   g_rec_lines.array_segment17(g_LineNumber)  := l_rec_lines.array_segment17(p_line_num);
15080 	   g_rec_lines.array_segment18(g_LineNumber)  := l_rec_lines.array_segment18(p_line_num);
15081 	   g_rec_lines.array_segment19(g_LineNumber)  := l_rec_lines.array_segment19(p_line_num);
15082 	   g_rec_lines.array_segment20(g_LineNumber)  := l_rec_lines.array_segment20(p_line_num);
15083 	   g_rec_lines.array_segment21(g_LineNumber)  := l_rec_lines.array_segment21(p_line_num);
15084 	   g_rec_lines.array_segment22(g_LineNumber)  := l_rec_lines.array_segment22(p_line_num);
15085 	   g_rec_lines.array_segment23(g_LineNumber)  := l_rec_lines.array_segment23(p_line_num);
15086 	   g_rec_lines.array_segment24(g_LineNumber)  := l_rec_lines.array_segment24(p_line_num);
15087 	   g_rec_lines.array_segment25(g_LineNumber)  := l_rec_lines.array_segment25(p_line_num);
15088 	   g_rec_lines.array_segment26(g_LineNumber)  := l_rec_lines.array_segment26(p_line_num);
15089 	   g_rec_lines.array_segment27(g_LineNumber)  := l_rec_lines.array_segment27(p_line_num);
15090 	   g_rec_lines.array_segment28(g_LineNumber)  := l_rec_lines.array_segment28(p_line_num);
15091 	   g_rec_lines.array_segment29(g_LineNumber)  := l_rec_lines.array_segment29(p_line_num);
15092 	   g_rec_lines.array_segment30(g_LineNumber)  := l_rec_lines.array_segment30(p_line_num);
15093 	   --
15094 	   g_rec_lines.alt_array_ccid_flag(g_LineNumber)  := l_rec_lines.alt_array_ccid_flag(p_line_num);
15095 	   g_rec_lines.alt_array_ccid(g_LineNumber)       := l_rec_lines.alt_array_ccid(p_line_num);
15096 	   g_rec_lines.alt_array_segment1(g_LineNumber)   := l_rec_lines.alt_array_segment1(p_line_num);
15097 	   g_rec_lines.alt_array_segment2(g_LineNumber)   := l_rec_lines.alt_array_segment2(p_line_num);
15098 	   g_rec_lines.alt_array_segment3(g_LineNumber)   := l_rec_lines.alt_array_segment3(p_line_num);
15099 	   g_rec_lines.alt_array_segment4(g_LineNumber)   := l_rec_lines.alt_array_segment4(p_line_num);
15100 	   g_rec_lines.alt_array_segment5(g_LineNumber)   := l_rec_lines.alt_array_segment5(p_line_num);
15101 	   g_rec_lines.alt_array_segment6(g_LineNumber)   := l_rec_lines.alt_array_segment6(p_line_num);
15102 	   g_rec_lines.alt_array_segment7(g_LineNumber)   := l_rec_lines.alt_array_segment7(p_line_num);
15103 	   g_rec_lines.alt_array_segment8(g_LineNumber)   := l_rec_lines.alt_array_segment8(p_line_num);
15104 	   g_rec_lines.alt_array_segment9(g_LineNumber)   := l_rec_lines.alt_array_segment9(p_line_num);
15105 	   g_rec_lines.alt_array_segment10(g_LineNumber)  := l_rec_lines.alt_array_segment10(p_line_num);
15106 	   g_rec_lines.alt_array_segment11(g_LineNumber)  := l_rec_lines.alt_array_segment11(p_line_num);
15107 	   g_rec_lines.alt_array_segment12(g_LineNumber)  := l_rec_lines.alt_array_segment12(p_line_num);
15108 	   g_rec_lines.alt_array_segment13(g_LineNumber)  := l_rec_lines.alt_array_segment13(p_line_num);
15109 	   g_rec_lines.alt_array_segment14(g_LineNumber)  := l_rec_lines.alt_array_segment14(p_line_num);
15110 	   g_rec_lines.alt_array_segment15(g_LineNumber)  := l_rec_lines.alt_array_segment15(p_line_num);
15111 	   g_rec_lines.alt_array_segment16(g_LineNumber)  := l_rec_lines.alt_array_segment16(p_line_num);
15112 	   g_rec_lines.alt_array_segment17(g_LineNumber)  := l_rec_lines.alt_array_segment17(p_line_num);
15113 	   g_rec_lines.alt_array_segment18(g_LineNumber)  := l_rec_lines.alt_array_segment18(p_line_num);
15114 	   g_rec_lines.alt_array_segment19(g_LineNumber)  := l_rec_lines.alt_array_segment19(p_line_num);
15115 	   g_rec_lines.alt_array_segment20(g_LineNumber)  := l_rec_lines.alt_array_segment20(p_line_num);
15116 	   g_rec_lines.alt_array_segment21(g_LineNumber)  := l_rec_lines.alt_array_segment21(p_line_num);
15117 	   g_rec_lines.alt_array_segment22(g_LineNumber)  := l_rec_lines.alt_array_segment22(p_line_num);
15118 	   g_rec_lines.alt_array_segment23(g_LineNumber)  := l_rec_lines.alt_array_segment23(p_line_num);
15119 	   g_rec_lines.alt_array_segment24(g_LineNumber)  := l_rec_lines.alt_array_segment24(p_line_num);
15120 	   g_rec_lines.alt_array_segment25(g_LineNumber)  := l_rec_lines.alt_array_segment25(p_line_num);
15121 	   g_rec_lines.alt_array_segment26(g_LineNumber)  := l_rec_lines.alt_array_segment26(p_line_num);
15122 	   g_rec_lines.alt_array_segment27(g_LineNumber)  := l_rec_lines.alt_array_segment27(p_line_num);
15123 	   g_rec_lines.alt_array_segment28(g_LineNumber)  := l_rec_lines.alt_array_segment28(p_line_num);
15124 	   g_rec_lines.alt_array_segment29(g_LineNumber)  := l_rec_lines.alt_array_segment29(p_line_num);
15125 	   g_rec_lines.alt_array_segment30(g_LineNumber)  := l_rec_lines.alt_array_segment30(p_line_num);
15126 	   --
15127 	   -- Option lines
15128 	   --
15129 	   g_rec_lines.array_gl_transfer_mode(g_LineNumber)      := l_rec_lines.array_gl_transfer_mode(p_line_num);
15130 	   g_rec_lines.array_natural_side_code(g_LineNumber)     := l_rec_lines.array_natural_side_code(p_line_num);
15131 	   g_rec_lines.array_acct_entry_type_code(g_LineNumber)  := l_rec_lines.array_acct_entry_type_code(p_line_num);
15132 	   g_rec_lines.array_switch_side_flag(g_LineNumber)      := l_rec_lines.array_switch_side_flag(p_line_num);
15133 	   g_rec_lines.array_merge_duplicate_code(g_LineNumber)  := l_rec_lines.array_merge_duplicate_code(p_line_num);
15134 	   --
15135 	   -- line amounts
15136 	   --
15137 	   g_rec_lines.array_entered_amount(g_LineNumber)        := l_rec_lines.array_entered_amount(p_line_num);
15138 	   g_rec_lines.array_ledger_amount(g_LineNumber)         := l_rec_lines.array_ledger_amount(p_line_num);
15139 	   g_rec_lines.array_entered_dr(g_LineNumber)            := l_rec_lines.array_entered_dr(p_line_num);
15140 	   g_rec_lines.array_entered_cr(g_LineNumber)            := l_rec_lines.array_entered_cr(p_line_num);
15141 	   g_rec_lines.array_accounted_dr(g_LineNumber)          := l_rec_lines.array_accounted_dr(p_line_num);
15142 	   g_rec_lines.array_accounted_cr(g_LineNumber)          := l_rec_lines.array_accounted_cr(p_line_num);
15143 	   g_rec_lines.array_currency_code(g_LineNumber)         := l_rec_lines.array_currency_code(p_line_num);
15144 	   g_rec_lines.array_currency_mau(g_LineNumber)          := xla_accounting_cache_pkg.GetCurrencyMau(g_rec_lines.array_currency_code(g_LineNumber));
15145 	   g_rec_lines.array_curr_conversion_date(g_LineNumber)  := l_rec_lines.array_curr_conversion_date(p_line_num);
15146 	   g_rec_lines.array_curr_conversion_rate(g_LineNumber)  := l_rec_lines.array_curr_conversion_rate(p_line_num);
15147 	   g_rec_lines.array_curr_conversion_type(g_LineNumber)  := l_rec_lines.array_curr_conversion_type(p_line_num);
15148 	   g_rec_lines.array_description(g_LineNumber)           := l_rec_lines.array_description(p_line_num);
15149 	   --
15150 	   -- line descriptions
15151 	   --
15152 	   g_rec_lines.array_party_id(g_LineNumber)              := l_rec_lines.array_party_id(p_line_num);
15153 	   g_rec_lines.array_party_site_id(g_LineNumber)         := l_rec_lines.array_party_site_id(p_line_num);
15154 	   g_rec_lines.array_party_type_code(g_LineNumber)       := l_rec_lines.array_party_type_code(p_line_num);
15155 	   --
15156 	   g_rec_lines.array_statistical_amount(g_LineNumber)    := l_rec_lines.array_statistical_amount(p_line_num);
15157 	   g_rec_lines.array_ussgl_transaction(g_LineNumber)     := l_rec_lines.array_ussgl_transaction(p_line_num);
15158 	   --
15159 	   g_rec_lines.array_jgzz_recon_ref(g_LineNumber)           := l_rec_lines.array_jgzz_recon_ref(p_line_num);
15160 	   --
15161 	   -- distribution links
15162 	   --
15163 	   g_rec_lines.array_distribution_id_char_1(g_LineNumber)  := l_rec_lines.array_distribution_id_char_1(p_line_num);
15164 	   g_rec_lines.array_distribution_id_char_2(g_LineNumber)  := l_rec_lines.array_distribution_id_char_2(p_line_num);
15165 	   g_rec_lines.array_distribution_id_char_3(g_LineNumber)  := l_rec_lines.array_distribution_id_char_3(p_line_num);
15166 	   g_rec_lines.array_distribution_id_char_4(g_LineNumber)  := l_rec_lines.array_distribution_id_char_4(p_line_num);
15167 	   g_rec_lines.array_distribution_id_char_5(g_LineNumber)  := l_rec_lines.array_distribution_id_char_5(p_line_num);
15168 	   g_rec_lines.array_distribution_id_num_1(g_LineNumber)   := l_rec_lines.array_distribution_id_num_1(p_line_num);
15169 	   g_rec_lines.array_distribution_id_num_2(g_LineNumber)   := l_rec_lines.array_distribution_id_num_2(p_line_num);
15170 	   g_rec_lines.array_distribution_id_num_3(g_LineNumber)   := l_rec_lines.array_distribution_id_num_3(p_line_num);
15171 	   g_rec_lines.array_distribution_id_num_4(g_LineNumber)   := l_rec_lines.array_distribution_id_num_4(p_line_num);
15172 	   g_rec_lines.array_distribution_id_num_5(g_LineNumber)   := l_rec_lines.array_distribution_id_num_5(p_line_num);
15173 	   g_rec_lines.array_sys_distribution_type(g_LineNumber)   := l_rec_lines.array_sys_distribution_type(p_line_num);
15174 	   --
15175 	   -- reverse distribution links
15176 	   --
15177 	   g_rec_lines.array_rev_dist_id_char_1(g_LineNumber)  := l_rec_lines.array_rev_dist_id_char_1(p_line_num);
15178 	   g_rec_lines.array_rev_dist_id_char_2(g_LineNumber)  := l_rec_lines.array_rev_dist_id_char_2(p_line_num);
15179 	   g_rec_lines.array_rev_dist_id_char_3(g_LineNumber)  := l_rec_lines.array_rev_dist_id_char_3(p_line_num);
15180 	   g_rec_lines.array_rev_dist_id_char_4(g_LineNumber)  := l_rec_lines.array_rev_dist_id_char_4(p_line_num);
15181 	   g_rec_lines.array_rev_dist_id_char_5(g_LineNumber)  := l_rec_lines.array_rev_dist_id_char_5(p_line_num);
15182 	   g_rec_lines.array_rev_dist_id_num_1(g_LineNumber)   := l_rec_lines.array_rev_dist_id_num_1(p_line_num);
15183 	   g_rec_lines.array_rev_dist_id_num_2(g_LineNumber)   := l_rec_lines.array_rev_dist_id_num_2(p_line_num);
15184 	   g_rec_lines.array_rev_dist_id_num_3(g_LineNumber)   := l_rec_lines.array_rev_dist_id_num_3(p_line_num);
15185 	   g_rec_lines.array_rev_dist_id_num_4(g_LineNumber)   := l_rec_lines.array_rev_dist_id_num_4(p_line_num);
15186 	   g_rec_lines.array_rev_dist_id_num_5(g_LineNumber)   := l_rec_lines.array_rev_dist_id_num_5(p_line_num);
15187 	   g_rec_lines.array_rev_dist_type(g_LineNumber)       := l_rec_lines.array_rev_dist_type(p_line_num);
15188 	   --
15189 	   -- multiperiod accounting
15190 	   --
15191 	   -- DO NOT COPY g_rec_lines.array_mpa_acc_entry_flag
15192 	   g_rec_lines.array_header_num(g_LineNumber)          := l_rec_lines.array_header_num(p_line_num);
15193 	   g_rec_lines.array_mpa_option(g_LineNumber)          := l_rec_lines.array_mpa_option(p_line_num);
15194 	   g_rec_lines.array_mpa_start_date(g_LineNumber)      := l_rec_lines.array_mpa_start_date(p_line_num);
15195 	   g_rec_lines.array_mpa_end_date(g_LineNumber)        := l_rec_lines.array_mpa_end_date(p_line_num);
15196 	   --
15197 	   -- reversal info
15198 	   --
15199 	   g_rec_lines.array_acc_reversal_option(g_LineNumber)   := l_rec_lines.array_acc_reversal_option(p_line_num);
15200 	   --
15201 	   -- tax info
15202 	   --
15203 	   g_rec_lines.array_tax_line_ref(g_LineNumber)           := l_rec_lines.array_tax_line_ref(p_line_num);
15204 	   g_rec_lines.array_tax_summary_line_ref(g_LineNumber)   := l_rec_lines.array_tax_summary_line_ref(p_line_num);
15205 	   g_rec_lines.array_tax_rec_nrec_dist_ref(g_LineNumber)  := l_rec_lines.array_tax_rec_nrec_dist_ref(p_line_num);
15206 	   --
15207 	   --
15208 	   g_rec_lines.array_anc_balance_flag(g_LineNumber)      := l_rec_lines.array_anc_balance_flag(p_line_num);
15209 	   g_rec_lines.array_anc_id_1(g_LineNumber)              := l_rec_lines.array_anc_id_1(p_line_num);
15210 	   g_rec_lines.array_anc_id_2(g_LineNumber)              := l_rec_lines.array_anc_id_2(p_line_num);
15211 	   g_rec_lines.array_anc_id_3(g_LineNumber)              := l_rec_lines.array_anc_id_3(p_line_num);
15212 	   g_rec_lines.array_anc_id_4(g_LineNumber)              := l_rec_lines.array_anc_id_4(p_line_num);
15213 	   g_rec_lines.array_anc_id_5(g_LineNumber)              := l_rec_lines.array_anc_id_5(p_line_num);
15214 	   g_rec_lines.array_anc_id_6(g_LineNumber)              := l_rec_lines.array_anc_id_6(p_line_num);
15215 	   g_rec_lines.array_anc_id_7(g_LineNumber)              := l_rec_lines.array_anc_id_7(p_line_num);
15216 	   g_rec_lines.array_anc_id_8(g_LineNumber)              := l_rec_lines.array_anc_id_8(p_line_num);
15217 	   g_rec_lines.array_anc_id_9(g_LineNumber)              := l_rec_lines.array_anc_id_9(p_line_num);
15218 	   g_rec_lines.array_anc_id_10(g_LineNumber)             := l_rec_lines.array_anc_id_10(p_line_num);
15219 	   g_rec_lines.array_anc_id_11(g_LineNumber)             := l_rec_lines.array_anc_id_11(p_line_num);
15220 	   g_rec_lines.array_anc_id_12(g_LineNumber)             := l_rec_lines.array_anc_id_12(p_line_num);
15221 	   g_rec_lines.array_anc_id_13(g_LineNumber)             := l_rec_lines.array_anc_id_13(p_line_num);
15222 	   g_rec_lines.array_anc_id_14(g_LineNumber)             := l_rec_lines.array_anc_id_14(p_line_num);
15223 	   g_rec_lines.array_anc_id_15(g_LineNumber)             := l_rec_lines.array_anc_id_15(p_line_num);
15224 	   g_rec_lines.array_anc_id_16(g_LineNumber)             := l_rec_lines.array_anc_id_16(p_line_num);
15225 	   g_rec_lines.array_anc_id_17(g_LineNumber)             := l_rec_lines.array_anc_id_17(p_line_num);
15226 	   g_rec_lines.array_anc_id_18(g_LineNumber)             := l_rec_lines.array_anc_id_18(p_line_num);
15227 	   g_rec_lines.array_anc_id_19(g_LineNumber)             := l_rec_lines.array_anc_id_19(p_line_num);
15228 	   g_rec_lines.array_anc_id_20(g_LineNumber)             := l_rec_lines.array_anc_id_20(p_line_num);
15229 	   g_rec_lines.array_anc_id_21(g_LineNumber)             := l_rec_lines.array_anc_id_21(p_line_num);
15230 	   g_rec_lines.array_anc_id_22(g_LineNumber)             := l_rec_lines.array_anc_id_22(p_line_num);
15231 	   g_rec_lines.array_anc_id_23(g_LineNumber)             := l_rec_lines.array_anc_id_23(p_line_num);
15232 	   g_rec_lines.array_anc_id_24(g_LineNumber)             := l_rec_lines.array_anc_id_24(p_line_num);
15233 	   g_rec_lines.array_anc_id_25(g_LineNumber)             := l_rec_lines.array_anc_id_25(p_line_num);
15234 	   g_rec_lines.array_anc_id_26(g_LineNumber)             := l_rec_lines.array_anc_id_26(p_line_num);
15235 	   g_rec_lines.array_anc_id_27(g_LineNumber)             := l_rec_lines.array_anc_id_27(p_line_num);
15236 	   g_rec_lines.array_anc_id_28(g_LineNumber)             := l_rec_lines.array_anc_id_28(p_line_num);
15237 	   g_rec_lines.array_anc_id_29(g_LineNumber)             := l_rec_lines.array_anc_id_29(p_line_num);
15238 	   g_rec_lines.array_anc_id_30(g_LineNumber)             := l_rec_lines.array_anc_id_30(p_line_num);
15239 	   g_rec_lines.array_anc_id_31(g_LineNumber)             := l_rec_lines.array_anc_id_31(p_line_num);
15240 	   g_rec_lines.array_anc_id_32(g_LineNumber)             := l_rec_lines.array_anc_id_32(p_line_num);
15241 	   g_rec_lines.array_anc_id_33(g_LineNumber)             := l_rec_lines.array_anc_id_33(p_line_num);
15242 	   g_rec_lines.array_anc_id_34(g_LineNumber)             := l_rec_lines.array_anc_id_34(p_line_num);
15243 	   g_rec_lines.array_anc_id_35(g_LineNumber)             := l_rec_lines.array_anc_id_35(p_line_num);
15244 	   g_rec_lines.array_anc_id_36(g_LineNumber)             := l_rec_lines.array_anc_id_36(p_line_num);
15245 	   g_rec_lines.array_anc_id_37(g_LineNumber)             := l_rec_lines.array_anc_id_37(p_line_num);
15246 	   g_rec_lines.array_anc_id_38(g_LineNumber)             := l_rec_lines.array_anc_id_38(p_line_num);
15247 	   g_rec_lines.array_anc_id_39(g_LineNumber)             := l_rec_lines.array_anc_id_39(p_line_num);
15248 	   g_rec_lines.array_anc_id_40(g_LineNumber)             := l_rec_lines.array_anc_id_40(p_line_num);
15249 	   g_rec_lines.array_anc_id_41(g_LineNumber)             := l_rec_lines.array_anc_id_41(p_line_num);
15250 	   g_rec_lines.array_anc_id_42(g_LineNumber)             := l_rec_lines.array_anc_id_42(p_line_num);
15251 	   g_rec_lines.array_anc_id_43(g_LineNumber)             := l_rec_lines.array_anc_id_43(p_line_num);
15252 	   g_rec_lines.array_anc_id_44(g_LineNumber)             := l_rec_lines.array_anc_id_44(p_line_num);
15253 	   g_rec_lines.array_anc_id_45(g_LineNumber)             := l_rec_lines.array_anc_id_45(p_line_num);
15254 	   g_rec_lines.array_anc_id_46(g_LineNumber)             := l_rec_lines.array_anc_id_46(p_line_num);
15255 	   g_rec_lines.array_anc_id_47(g_LineNumber)             := l_rec_lines.array_anc_id_47(p_line_num);
15256 	   g_rec_lines.array_anc_id_48(g_LineNumber)             := l_rec_lines.array_anc_id_48(p_line_num);
15257 	   g_rec_lines.array_anc_id_49(g_LineNumber)             := l_rec_lines.array_anc_id_49(p_line_num);
15258 	   g_rec_lines.array_anc_id_50(g_LineNumber)             := l_rec_lines.array_anc_id_50(p_line_num);
15259 	   g_rec_lines.array_anc_id_51(g_LineNumber)             := l_rec_lines.array_anc_id_51(p_line_num);
15260 	   g_rec_lines.array_anc_id_52(g_LineNumber)             := l_rec_lines.array_anc_id_52(p_line_num);
15261 	   g_rec_lines.array_anc_id_53(g_LineNumber)             := l_rec_lines.array_anc_id_53(p_line_num);
15262 	   g_rec_lines.array_anc_id_54(g_LineNumber)             := l_rec_lines.array_anc_id_54(p_line_num);
15263 	   g_rec_lines.array_anc_id_55(g_LineNumber)             := l_rec_lines.array_anc_id_55(p_line_num);
15264 	   g_rec_lines.array_anc_id_56(g_LineNumber)             := l_rec_lines.array_anc_id_56(p_line_num);
15265 	   g_rec_lines.array_anc_id_57(g_LineNumber)             := l_rec_lines.array_anc_id_57(p_line_num);
15266 	   g_rec_lines.array_anc_id_58(g_LineNumber)             := l_rec_lines.array_anc_id_58(p_line_num);
15267 	   g_rec_lines.array_anc_id_59(g_LineNumber)             := l_rec_lines.array_anc_id_59(p_line_num);
15268 	   g_rec_lines.array_anc_id_60(g_LineNumber)             := l_rec_lines.array_anc_id_60(p_line_num);
15269 	   g_rec_lines.array_anc_id_61(g_LineNumber)             := l_rec_lines.array_anc_id_61(p_line_num);
15270 	   g_rec_lines.array_anc_id_62(g_LineNumber)             := l_rec_lines.array_anc_id_62(p_line_num);
15271 	   g_rec_lines.array_anc_id_63(g_LineNumber)             := l_rec_lines.array_anc_id_63(p_line_num);
15272 	   g_rec_lines.array_anc_id_64(g_LineNumber)             := l_rec_lines.array_anc_id_64(p_line_num);
15273 	   g_rec_lines.array_anc_id_65(g_LineNumber)             := l_rec_lines.array_anc_id_65(p_line_num);
15274 	   g_rec_lines.array_anc_id_66(g_LineNumber)             := l_rec_lines.array_anc_id_66(p_line_num);
15275 	   g_rec_lines.array_anc_id_67(g_LineNumber)             := l_rec_lines.array_anc_id_67(p_line_num);
15276 	   g_rec_lines.array_anc_id_68(g_LineNumber)             := l_rec_lines.array_anc_id_68(p_line_num);
15277 	   g_rec_lines.array_anc_id_69(g_LineNumber)             := l_rec_lines.array_anc_id_69(p_line_num);
15278 	   g_rec_lines.array_anc_id_70(g_LineNumber)             := l_rec_lines.array_anc_id_70(p_line_num);
15279 	   g_rec_lines.array_anc_id_71(g_LineNumber)             := l_rec_lines.array_anc_id_71(p_line_num);
15280 	   g_rec_lines.array_anc_id_72(g_LineNumber)             := l_rec_lines.array_anc_id_72(p_line_num);
15281 	   g_rec_lines.array_anc_id_73(g_LineNumber)             := l_rec_lines.array_anc_id_73(p_line_num);
15282 	   g_rec_lines.array_anc_id_74(g_LineNumber)             := l_rec_lines.array_anc_id_74(p_line_num);
15283 	   g_rec_lines.array_anc_id_75(g_LineNumber)             := l_rec_lines.array_anc_id_75(p_line_num);
15284 	   g_rec_lines.array_anc_id_76(g_LineNumber)             := l_rec_lines.array_anc_id_76(p_line_num);
15285 	   g_rec_lines.array_anc_id_77(g_LineNumber)             := l_rec_lines.array_anc_id_77(p_line_num);
15286 	   g_rec_lines.array_anc_id_78(g_LineNumber)             := l_rec_lines.array_anc_id_78(p_line_num);
15287 	   g_rec_lines.array_anc_id_79(g_LineNumber)             := l_rec_lines.array_anc_id_79(p_line_num);
15288 	   g_rec_lines.array_anc_id_80(g_LineNumber)             := l_rec_lines.array_anc_id_80(p_line_num);
15289 	   g_rec_lines.array_anc_id_81(g_LineNumber)             := l_rec_lines.array_anc_id_81(p_line_num);
15290 	   g_rec_lines.array_anc_id_82(g_LineNumber)             := l_rec_lines.array_anc_id_82(p_line_num);
15291 	   g_rec_lines.array_anc_id_83(g_LineNumber)             := l_rec_lines.array_anc_id_83(p_line_num);
15292 	   g_rec_lines.array_anc_id_84(g_LineNumber)             := l_rec_lines.array_anc_id_84(p_line_num);
15293 	   g_rec_lines.array_anc_id_85(g_LineNumber)             := l_rec_lines.array_anc_id_85(p_line_num);
15294 	   g_rec_lines.array_anc_id_86(g_LineNumber)             := l_rec_lines.array_anc_id_86(p_line_num);
15295 	   g_rec_lines.array_anc_id_87(g_LineNumber)             := l_rec_lines.array_anc_id_87(p_line_num);
15296 	   g_rec_lines.array_anc_id_88(g_LineNumber)             := l_rec_lines.array_anc_id_88(p_line_num);
15297 	   g_rec_lines.array_anc_id_89(g_LineNumber)             := l_rec_lines.array_anc_id_89(p_line_num);
15298 	   g_rec_lines.array_anc_id_90(g_LineNumber)             := l_rec_lines.array_anc_id_90(p_line_num);
15299 	   g_rec_lines.array_anc_id_91(g_LineNumber)             := l_rec_lines.array_anc_id_91(p_line_num);
15300 	   g_rec_lines.array_anc_id_92(g_LineNumber)             := l_rec_lines.array_anc_id_92(p_line_num);
15301 	   g_rec_lines.array_anc_id_93(g_LineNumber)             := l_rec_lines.array_anc_id_93(p_line_num);
15302 	   g_rec_lines.array_anc_id_94(g_LineNumber)             := l_rec_lines.array_anc_id_94(p_line_num);
15303 	   g_rec_lines.array_anc_id_95(g_LineNumber)             := l_rec_lines.array_anc_id_95(p_line_num);
15304 	   g_rec_lines.array_anc_id_96(g_LineNumber)             := l_rec_lines.array_anc_id_96(p_line_num);
15305 	   g_rec_lines.array_anc_id_97(g_LineNumber)             := l_rec_lines.array_anc_id_97(p_line_num);
15306 	   g_rec_lines.array_anc_id_98(g_LineNumber)             := l_rec_lines.array_anc_id_98(p_line_num);
15307 	   g_rec_lines.array_anc_id_99(g_LineNumber)             := l_rec_lines.array_anc_id_99(p_line_num);
15308 	   g_rec_lines.array_anc_id_100(g_LineNumber)            := l_rec_lines.array_anc_id_100(p_line_num);
15309 	   --
15310 	   --
15311 	   g_rec_lines.array_event_number(g_LineNumber)          := l_rec_lines.array_event_number(p_line_num);
15312 	   g_rec_lines.array_entity_id(g_LineNumber)             := l_rec_lines.array_entity_id(p_line_num);
15313 	   g_rec_lines.array_reversal_code(g_LineNumber)         := l_rec_lines.array_reversal_code(p_line_num);
15314 	   g_rec_lines.array_balance_type_code(g_LineNumber)     := l_rec_lines.array_balance_type_code(p_line_num);
15315 	   g_rec_lines.array_ledger_id(g_LineNumber)             := l_rec_lines.array_ledger_id(p_line_num);
15316 	   --
15317 	   -- business flow
15318 	   --
15319 	   g_rec_lines.array_business_method_code(g_LineNumber)   := l_rec_lines.array_business_method_code(p_line_num);
15320 	   g_rec_lines.array_business_class_code(g_LineNumber)    := l_rec_lines.array_business_class_code(p_line_num);
15321 	   g_rec_lines.array_inherit_desc_flag(g_LineNumber)      := l_rec_lines.array_inherit_desc_flag(p_line_num);
15322 	   g_rec_lines.array_bflow_application_id(g_LineNumber)   := l_rec_lines.array_bflow_application_id(p_line_num);
15323 
15324 	   g_rec_lines.array_bflow_entity_code(g_LineNumber)      := l_rec_lines.array_bflow_entity_code(p_line_num);
15325 	   g_rec_lines.array_bflow_source_id_num_1(g_LineNumber)  := l_rec_lines.array_bflow_source_id_num_1(p_line_num);
15326 	   g_rec_lines.array_bflow_source_id_num_2(g_LineNumber)  := l_rec_lines.array_bflow_source_id_num_2(p_line_num);
15327 	   g_rec_lines.array_bflow_source_id_num_3(g_LineNumber)  := l_rec_lines.array_bflow_source_id_num_3(p_line_num);
15328 	   g_rec_lines.array_bflow_source_id_num_4(g_LineNumber)  := l_rec_lines.array_bflow_source_id_num_4(p_line_num);
15329 	   g_rec_lines.array_bflow_source_id_char_1(g_LineNumber) := l_rec_lines.array_bflow_source_id_char_1(p_line_num);
15330 	   g_rec_lines.array_bflow_source_id_char_2(g_LineNumber) := l_rec_lines.array_bflow_source_id_char_2(p_line_num);
15331 	   g_rec_lines.array_bflow_source_id_char_3(g_LineNumber) := l_rec_lines.array_bflow_source_id_char_3(p_line_num);
15332 	   g_rec_lines.array_bflow_source_id_char_4(g_LineNumber) := l_rec_lines.array_bflow_source_id_char_4(p_line_num);
15333 
15334 	   g_rec_lines.array_bflow_distribution_type(g_LineNumber):= l_rec_lines.array_bflow_distribution_type(p_line_num);
15335 	   g_rec_lines.array_bflow_dist_id_num_1(g_LineNumber)    := l_rec_lines.array_bflow_dist_id_num_1(p_line_num);
15336 	   g_rec_lines.array_bflow_dist_id_num_2(g_LineNumber)    := l_rec_lines.array_bflow_dist_id_num_2(p_line_num);
15337 	   g_rec_lines.array_bflow_dist_id_num_3(g_LineNumber)    := l_rec_lines.array_bflow_dist_id_num_3(p_line_num);
15338 	   g_rec_lines.array_bflow_dist_id_num_4(g_LineNumber)    := l_rec_lines.array_bflow_dist_id_num_4(p_line_num);
15339 	   g_rec_lines.array_bflow_dist_id_num_5(g_LineNumber)    := l_rec_lines.array_bflow_dist_id_num_5(p_line_num);
15340 	   g_rec_lines.array_bflow_dist_id_char_1(g_LineNumber)   := l_rec_lines.array_bflow_dist_id_char_1(p_line_num);
15341 	   g_rec_lines.array_bflow_dist_id_char_2(g_LineNumber)   := l_rec_lines.array_bflow_dist_id_char_2(p_line_num);
15342 	   g_rec_lines.array_bflow_dist_id_char_3(g_LineNumber)   := l_rec_lines.array_bflow_dist_id_char_3(p_line_num);
15343 	   g_rec_lines.array_bflow_dist_id_char_4(g_LineNumber)   := l_rec_lines.array_bflow_dist_id_char_4(p_line_num);
15344 	   g_rec_lines.array_bflow_dist_id_char_5(g_LineNumber)   := l_rec_lines.array_bflow_dist_id_char_5(p_line_num);
15345 
15346 	   g_rec_lines.array_override_acctd_amt_flag(g_LineNumber)   := l_rec_lines.array_override_acctd_amt_flag(p_line_num);
15347 
15348 
15349 	   g_rec_lines.array_bflow_applied_to_amt(g_LineNumber)   := l_rec_lines.array_bflow_applied_to_amt(p_line_num); -- 5132302
15350 	   --
15351 	   -- Allocation Attributes
15352 	   --
15353 	   g_rec_lines.array_alloct_application_id(g_LineNumber)   := l_rec_lines.array_alloct_application_id(p_line_num);
15354 
15355 	   g_rec_lines.array_alloct_entity_code(g_LineNumber)      := l_rec_lines.array_alloct_entity_code(p_line_num);
15356 	   g_rec_lines.array_alloct_source_id_num_1(g_LineNumber)  := l_rec_lines.array_alloct_source_id_num_1(p_line_num);
15357 	   g_rec_lines.array_alloct_source_id_num_2(g_LineNumber)  := l_rec_lines.array_alloct_source_id_num_2(p_line_num);
15358 	   g_rec_lines.array_alloct_source_id_num_3(g_LineNumber)  := l_rec_lines.array_alloct_source_id_num_3(p_line_num);
15359 	   g_rec_lines.array_alloct_source_id_num_4(g_LineNumber)  := l_rec_lines.array_alloct_source_id_num_4(p_line_num);
15360 	   g_rec_lines.array_alloct_source_id_char_1(g_LineNumber) := l_rec_lines.array_alloct_source_id_char_1(p_line_num);
15361 	   g_rec_lines.array_alloct_source_id_char_2(g_LineNumber) := l_rec_lines.array_alloct_source_id_char_2(p_line_num);
15362 	   g_rec_lines.array_alloct_source_id_char_3(g_LineNumber) := l_rec_lines.array_alloct_source_id_char_3(p_line_num);
15363 	   g_rec_lines.array_alloct_source_id_char_4(g_LineNumber) := l_rec_lines.array_alloct_source_id_char_4(p_line_num);
15364 
15365 	   g_rec_lines.array_alloct_distribution_type(g_LineNumber):= l_rec_lines.array_alloct_distribution_type(p_line_num);
15366 	   g_rec_lines.array_alloct_dist_id_num_1(g_LineNumber)    := l_rec_lines.array_alloct_dist_id_num_1(p_line_num);
15367 	   g_rec_lines.array_alloct_dist_id_num_2(g_LineNumber)    := l_rec_lines.array_alloct_dist_id_num_2(p_line_num);
15368 	   g_rec_lines.array_alloct_dist_id_num_3(g_LineNumber)    := l_rec_lines.array_alloct_dist_id_num_3(p_line_num);
15369 	   g_rec_lines.array_alloct_dist_id_num_4(g_LineNumber)    := l_rec_lines.array_alloct_dist_id_num_4(p_line_num);
15370 	   g_rec_lines.array_alloct_dist_id_num_5(g_LineNumber)    := l_rec_lines.array_alloct_dist_id_num_5(p_line_num);
15371 	   g_rec_lines.array_alloct_dist_id_char_1(g_LineNumber)   := l_rec_lines.array_alloct_dist_id_char_1(p_line_num);
15372 	   g_rec_lines.array_alloct_dist_id_char_2(g_LineNumber)   := l_rec_lines.array_alloct_dist_id_char_2(p_line_num);
15373 	   g_rec_lines.array_alloct_dist_id_char_3(g_LineNumber)   := l_rec_lines.array_alloct_dist_id_char_3(p_line_num);
15374 	   g_rec_lines.array_alloct_dist_id_char_4(g_LineNumber)   := l_rec_lines.array_alloct_dist_id_char_4(p_line_num);
15375 	   g_rec_lines.array_alloct_dist_id_char_5(g_LineNumber)   := l_rec_lines.array_alloct_dist_id_char_5(p_line_num);
15376 	   -- =================================================================================================
15377 	   --
15378 	   -- for 7029018
15379 	   IF NVL(g_rec_lines.array_balance_type_code(g_LineNumber),'N')='E'  THEN
15380 
15381 	      IF ((NVL(l_rec_lines.array_actual_upg_option(p_line_num), 'N') = 'Y') OR
15382 		  (NVL(l_rec_lines.array_enc_upg_option(p_line_num), 'N') = 'Y')) THEN
15383 
15384 		   --temp fix for Period End Accrual Encumbrance for Upgraded Entries.
15385 		   g_rec_lines.array_encumbrance_type_id(g_LineNumber) := nvl(l_rec_lines.array_upg_cr_enc_type_id(p_line_num),
15386 								      l_rec_lines.array_upg_dr_enc_type_id(p_line_num));
15387 		    IF (C_LEVEL_EVENT >= g_log_level) THEN
15388 			trace
15389 		       (p_msg       =>   'Period End Accrual Encumbrance for Upgraded Entries'
15390 		       ,p_level     =>   C_LEVEL_EVENT
15391 		       ,p_module    =>   l_log_module);
15392 		    END IF;
15393 	       ELSE
15394 		    -- bug9325101
15395 		    g_rec_lines.array_encumbrance_type_id(g_LineNumber) := l_rec_lines.array_encumbrance_type_id(p_line_num);
15396 
15397 		    IF (C_LEVEL_EVENT >= g_log_level) THEN
15398 			trace
15399 		       (p_msg       =>   'Period End Accrual Encumbrance for Non-Upgraded Entries'
15400 		       ,p_level     =>   C_LEVEL_EVENT
15401 		       ,p_module    =>   l_log_module);
15402 		    END IF;
15403 
15404 	       END IF;
15405 
15406 	   END IF;
15407 	   --
15408 	   -- Validate line accounting attributes
15409 	   --
15410 	   IF g_rec_lines.array_mpa_option(g_LineNumber) NOT IN ('Y','N') THEN
15411 	      XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
15412 	      xla_accounting_err_pkg.build_message
15413 		   (p_appli_s_name            => 'XLA'
15414 		   ,p_msg_name                => 'XLA_MA_INVALID_OPTION'    -- 4262811a
15415 		   ,p_token_1                 => 'LINE_NUMBER'
15416 		   ,p_value_1                 =>  g_ExtractLine
15417 		   ,p_token_2                 => 'ACCOUNTING_SOURCE_NAME'
15418 		   ,p_value_2                 => XLA_AE_SOURCES_PKG.GetAccountingSourceName('MULTIPERIOD_OPTION')
15419 								 --(l_rec_lines.array_acct_attr_code(p_line_num))
15420 		   ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15421 		   ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15422 		   ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
15423 	   END IF;
15424 
15425 	   IF g_rec_lines.array_sys_distribution_type(g_LineNumber) IS NULL THEN
15426 	      XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
15427 	      xla_accounting_err_pkg.build_message
15428 		   (p_appli_s_name            => 'XLA'
15429 		   ,p_msg_name                => 'XLA_AP_NO_DIST_LINK_TYPE'
15430 		   ,p_token_1                 => 'LINE_NUMBER'
15431 		   ,p_value_1                 =>  g_ExtractLine
15432 		   ,p_token_2                 => 'ACCOUNTING_SOURCE_NAME'
15433 		   ,p_value_2                 => XLA_AE_SOURCES_PKG.GetAccountingSourceName('DISTRIBUTION_TYPE')
15434 								     --(p_rec_acct_attrs.array_acct_attr_code(i))
15435 		   ,p_token_3                 => 'SOURCE_NAME'
15436 		   ,p_value_3                 => NULL
15437 		   ,p_token_4                 => 'LINE_TYPE_NAME'
15438 		   ,p_value_4                 =>  XLA_AE_SOURCES_PKG.GetComponentName (
15439 							     g_accounting_line.component_type
15440 							   , g_accounting_line.accounting_line_code
15441 							   , g_accounting_line.accounting_line_type_code
15442 							   , g_accounting_line.accounting_line_appl_id
15443 							   , g_accounting_line.amb_context_code
15444 							   , g_accounting_line.entity_code
15445 							   , g_accounting_line.event_class_code
15446 							  )
15447 		   ,p_token_5                 => 'OWNER'
15448 		   ,p_value_5                 => xla_lookups_pkg.get_meaning(
15449 							     'XLA_OWNER_TYPE'
15450 							    , g_rec_lines.array_accounting_line_type(g_LineNumber)
15451 							   )
15452 		   ,p_token_6                 => 'PRODUCT_NAME'
15453 		   ,p_value_6                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15454 		   ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15455 		   ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15456 		   ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
15457 	   END IF;
15458 
15459 	----------------------------------------------
15460 	-- 4623638  This change is on top of 120.85
15461 	----------------------------------------------
15462 	IF nvl(g_rec_lines.array_calculate_acctd_flag(g_LineNumber), 'N')= 'N' OR
15463 	     (nvl(g_rec_lines.array_calculate_g_l_flag(g_LineNumber), 'N')='N' AND
15464 	      g_rec_lines.array_natural_side_code(g_LineNumber) = 'G') THEN
15465 
15466 	   IF g_rec_lines.array_ledger_amount(g_LineNumber) IS NULL THEN
15467 	      XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_INVALID;
15468 	      xla_accounting_err_pkg.build_message
15469 		   (p_appli_s_name            => 'XLA'
15470 		   ,p_msg_name                => 'XLA_AP_NO_LEDGER_AMOUNT'
15471 		   ,p_token_1                 => 'LINE_NUMBER'
15472 		   ,p_value_1                 =>  g_ExtractLine
15473 		   ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15474 		   ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15475 		   ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
15476 	   END IF;
15477 
15478 	END IF;
15479 
15480 	l_rec_lines := NULL ;
15481 
15482 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15483       trace
15484            (p_msg      => 'END CopyLineInfo(OverLoaded)'
15485            ,p_level    => C_LEVEL_PROCEDURE
15486            ,p_module   => l_log_module);
15487 END IF;
15488 
15489 EXCEPTION
15490 --
15491    WHEN xla_exceptions_pkg.application_exception THEN
15492       RAISE;
15493    WHEN OTHERS  THEN
15494       xla_exceptions_pkg.raise_message
15495                (p_location => 'xla_ae_lines_pkg.CopyLineInfo(OverLoaded)');
15496   --
15497 END CopyLineInfo;
15498 
15499 
15500 /*======================================================================+
15501 |                                                                       |
15502 | Public Procedure-  Business Flow Upgrade Entries                      |
15503 |                                                                       |
15504 |                                                                       |
15505 +======================================================================*/
15506 
15507 PROCEDURE BflowUpgEntry
15508        (p_business_method_code      IN VARCHAR2
15509        ,p_business_class_code       IN VARCHAR2
15510        ,p_balance_type              IN VARCHAR2) IS
15511 l_ledger_ccy            VARCHAR2(30);
15512 l_ccid                  NUMBER;
15513 l_enc_type_id           NUMBER;
15514 l_entered_amt           NUMBER;
15515 l_accounted_amt         NUMBER;
15516 l_entered_curr          VARCHAR2(30);
15517 l_xchange_rate          NUMBER;
15518 l_xchange_type          VARCHAR2(30);
15519 l_xchange_date          DATE;
15520 
15521 l_log_module            VARCHAR2(240); -- Bug 4922099
15522 
15523 BEGIN
15524    -- Bug 4922099
15525    IF g_log_enabled THEN
15526       l_log_module := C_DEFAULT_MODULE || '.BflowUpgEntry';
15527    END IF;
15528 
15529    --8238617 Added FND Debug statements
15530    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15531       trace
15532            (p_msg      => 'BEGIN of BflowUpgEntry'
15533            ,p_level    => C_LEVEL_PROCEDURE
15534            ,p_module   => l_log_module);
15535    END IF;
15536 
15537 
15538    g_rec_lines.array_business_method_code(g_LineNumber) :=  p_business_method_code;
15539 
15540    -- Bug 4922099
15541    IF ((g_rec_lines.array_actual_upg_option(g_LineNumber) = 'O' OR g_rec_lines.array_enc_upg_option(g_LineNumber) = 'O')
15542        AND g_rec_lines.array_acc_reversal_option(g_LineNumber) IN ('Y', 'B')) THEN
15543       xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
15544       xla_accounting_err_pkg.build_message
15545            (p_appli_s_name            => 'XLA'
15546            ,p_msg_name                => 'XLA_UPG_OVERRIDE_NA_REVERSAL'
15547            ,p_token_1                 => 'LINE_NUMBER'
15548            ,p_value_1                 =>  g_ExtractLine
15549            ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15550            ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15551            ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id);
15552 
15553       IF (C_LEVEL_ERROR >= g_log_level) THEN
15554           trace
15555                (p_msg       =>   'ERROR: XLA_UPG_OVERRIDE_NA_REVERSAL'
15556                ,p_level     =>   C_LEVEL_ERROR
15557                ,p_module    =>   l_log_module);
15558       END IF;
15559     END IF;
15560 
15561 
15562    ------------------------------------------------
15563    -- Validate the applied-to accounting attributes
15564    ------------------------------------------------
15565    ValidateBFlowLinks;
15566 
15567    -------------------------------------------------
15568    -- Reset values for certain fields in g_rec_lines
15569    -------------------------------------------------
15570 
15571    IF p_balance_type = 'A' THEN
15572       IF g_rec_lines.array_natural_side_code(g_LineNumber) = C_CREDIT THEN
15573          -- Bug 4922099
15574          IF (NVL(g_rec_lines.array_actual_upg_option(g_LineNumber), 'N') = 'Y') THEN
15575            l_ccid           := g_rec_lines.array_actual_upg_cr_ccid(g_LineNumber);
15576          END IF;
15577          l_enc_type_id    := NULL;
15578          l_entered_amt    := g_rec_lines.array_actual_upg_cr_ent_amt(g_LineNumber);
15579          l_accounted_amt  := g_rec_lines.array_actual_upg_cr_ledger_amt(g_LineNumber);
15580          l_entered_curr   := g_rec_lines.array_actual_upg_cr_ent_curr(g_LineNumber);
15581          l_xchange_rate   := g_rec_lines.array_actual_upg_cr_xrate(g_LineNumber);
15582          l_xchange_type   := g_rec_lines.array_actual_upg_cr_xrate_type(g_LineNumber);
15583          l_xchange_date   := g_rec_lines.array_actual_upg_cr_xdate(g_LineNumber);
15584       ELSE
15585          -- Bug 4922099
15586          IF (NVL(g_rec_lines.array_actual_upg_option(g_LineNumber), 'N') = 'Y') THEN
15587            l_ccid           := g_rec_lines.array_actual_upg_dr_ccid(g_LineNumber);
15588          END IF;
15589          l_enc_type_id    := NULL;
15590          l_entered_amt    := g_rec_lines.array_actual_upg_dr_ent_amt(g_LineNumber);
15591          l_accounted_amt  := g_rec_lines.array_actual_upg_dr_ledger_amt(g_LineNumber);
15592          l_entered_curr   := g_rec_lines.array_actual_upg_dr_ent_curr(g_LineNumber);
15593          l_xchange_rate   := g_rec_lines.array_actual_upg_dr_xrate(g_LineNumber);
15594          l_xchange_type   := g_rec_lines.array_actual_upg_dr_xrate_type(g_LineNumber);
15595          l_xchange_date   := g_rec_lines.array_actual_upg_dr_xdate(g_LineNumber);
15596       END IF;
15597    ELSIF p_balance_type = 'E' THEN
15598       IF g_rec_lines.array_natural_side_code(g_LineNumber) = C_CREDIT THEN
15599         -- Bug 4922099
15600          IF (NVL(g_rec_lines.array_enc_upg_option(g_LineNumber), 'N') = 'Y') THEN
15601            l_ccid           := g_rec_lines.array_enc_upg_cr_ccid(g_LineNumber);
15602          END IF;
15603          l_enc_type_id    := g_rec_lines.array_upg_cr_enc_type_id(g_LineNumber);
15604          l_entered_amt    := g_rec_lines.array_enc_upg_cr_ent_amt(g_LineNumber);
15605          l_accounted_amt  := g_rec_lines.array_enc_upg_cr_ledger_amt(g_LineNumber);
15606          l_entered_curr   := g_rec_lines.array_enc_upg_cr_ent_curr(g_LineNumber);
15607       ELSE
15608          -- Bug 4922099
15609          IF (NVL(g_rec_lines.array_enc_upg_option(g_LineNumber), 'N') = 'Y') THEN
15610            l_ccid           := g_rec_lines.array_enc_upg_dr_ccid(g_LineNumber);
15611          END IF;
15612          l_enc_type_id    := g_rec_lines.array_upg_dr_enc_type_id(g_LineNumber);
15613          l_entered_amt    := g_rec_lines.array_enc_upg_dr_ent_amt(g_LineNumber);
15614          l_accounted_amt  := g_rec_lines.array_enc_upg_dr_ledger_amt(g_LineNumber);
15615          l_entered_curr   := g_rec_lines.array_enc_upg_dr_ent_curr(g_LineNumber);
15616       END IF;
15617 
15618       g_override_acctd_amt_flag                           := 'Y';
15619    END IF;
15620 
15621    g_rec_lines.array_encumbrance_type_id(g_LineNumber) := l_enc_type_id;
15622    g_rec_lines.array_entered_amount(g_LineNumber)      := l_entered_amt;
15623    g_rec_lines.array_ledger_amount(g_LineNumber)    := l_accounted_amt;
15624    g_rec_lines.array_currency_code(g_LineNumber)       := l_entered_curr;
15625    g_rec_lines.array_curr_conversion_date(g_LineNumber):= l_xchange_date;
15626    g_rec_lines.array_curr_conversion_rate(g_LineNumber):= l_xchange_rate;
15627    g_rec_lines.array_curr_conversion_type(g_LineNumber):= l_xchange_type;
15628    -- 5845547
15629    g_rec_lines.array_party_type_code(g_LineNumber)     := g_rec_lines.array_upg_party_type_code(g_LineNumber);
15630    g_rec_lines.array_party_id(g_LineNumber)            := g_rec_lines.array_upg_party_id(g_LineNumber);
15631    g_rec_lines.array_party_site_id(g_LineNumber)       := g_rec_lines.array_upg_party_site_id(g_LineNumber);
15632 
15633    --8238617 Added debug statements
15634    IF (C_LEVEL_STATEMENT >= g_log_level) THEN
15635          trace
15636             (p_msg      => 'p_balance_type = '||p_balance_type
15637             ,p_level    => C_LEVEL_STATEMENT
15638             ,p_module   => l_log_module);
15639 
15640          trace
15641             (p_msg      => 'Natural Side = '||g_rec_lines.array_natural_side_code(g_LineNumber)
15642             ,p_level    => C_LEVEL_STATEMENT
15643             ,p_module   => l_log_module);
15644 
15645          trace
15646             (p_msg      => 'ccid = '||l_ccid
15647             ,p_level    => C_LEVEL_STATEMENT
15648             ,p_module   => l_log_module);
15649 
15650          trace
15651             (p_msg      => 'Encumbrance_type_id = '||g_rec_lines.array_encumbrance_type_id(g_LineNumber)
15652             ,p_level    => C_LEVEL_STATEMENT
15653             ,p_module   => l_log_module);
15654 
15655          trace
15656             (p_msg      => 'Entered Amount = '||g_rec_lines.array_entered_amount(g_LineNumber)
15657             ,p_level    => C_LEVEL_STATEMENT
15658             ,p_module   => l_log_module);
15659 
15660          trace
15661             (p_msg      => 'Ledger Amount = '|| g_rec_lines.array_ledger_amount(g_LineNumber)
15662             ,p_level    => C_LEVEL_STATEMENT
15663             ,p_module   => l_log_module);
15664 
15665          trace
15666             (p_msg      => 'Currency Code = '|| g_rec_lines.array_currency_code(g_LineNumber)
15667             ,p_level    => C_LEVEL_STATEMENT
15668             ,p_module   => l_log_module);
15669 
15670          trace
15671             (p_msg      => 'curr_conversion_date = '|| g_rec_lines.array_curr_conversion_date(g_LineNumber)
15672             ,p_level    => C_LEVEL_STATEMENT
15673             ,p_module   => l_log_module);
15674 
15675          trace
15676             (p_msg      => 'curr_conversion_rate = '|| g_rec_lines.array_curr_conversion_rate(g_LineNumber)
15677             ,p_level    => C_LEVEL_STATEMENT
15678             ,p_module   => l_log_module);
15679 
15680          trace
15681             (p_msg      => 'curr_conversion_type = '|| g_rec_lines.array_curr_conversion_type(g_LineNumber)
15682             ,p_level    => C_LEVEL_STATEMENT
15683             ,p_module   => l_log_module);
15684 
15685          trace
15686             (p_msg      => 'party_type_code = '|| g_rec_lines.array_party_type_code(g_LineNumber)
15687             ,p_level    => C_LEVEL_STATEMENT
15688             ,p_module   => l_log_module);
15689 
15690          trace
15691             (p_msg      => 'party_id = '||g_rec_lines.array_party_id(g_LineNumber)
15692             ,p_level    => C_LEVEL_STATEMENT
15693             ,p_module   => l_log_module);
15694 
15695          trace
15696             (p_msg      => 'party_site_id = '||g_rec_lines.array_party_site_id(g_LineNumber)
15697             ,p_level    => C_LEVEL_STATEMENT
15698             ,p_module   => l_log_module);
15699    END IF; --8238617 Added debug statements.
15700 
15701 
15702   -- Bug 4922099
15703   IF ((NVL(g_rec_lines.array_actual_upg_option(g_LineNumber), 'N') = 'Y') OR
15704       (NVL(g_rec_lines.array_enc_upg_option(g_LineNumber), 'N') = 'Y')) THEN
15705    xla_ae_lines_pkg.set_ccid(
15706     p_code_combination_id          => l_ccid
15707   , p_value_type_code              => 'S'  --l_adr_value_type_code
15708   , p_transaction_coa_id           => NULL --l_adr_transaction_coa_id
15709   , p_accounting_coa_id            => NULL --l_adr_accounting_coa_id
15710   , p_adr_code                     => NULL --'SS_TEST'
15711   , p_adr_type_code                => NULL --'C'
15712   , p_component_type               => g_accounting_line.component_type --l_component_type
15713   , p_component_code               => g_accounting_line.accounting_line_code  --l_component_code
15714   , p_component_type_code          => g_accounting_line.accounting_line_type_code --l_component_type_code
15715   , p_component_appl_id            => g_accounting_line.accounting_line_appl_id --l_component_appl_id
15716   , p_amb_context_code             => g_accounting_line.amb_context_code --l_amb_context_code
15717   , p_side                         => 'NA'
15718   );
15719   END IF;
15720 
15721   --8238617 Added FND Debug statements
15722    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15723       trace
15724            (p_msg      => 'End of BflowUpgEntry'
15725            ,p_level    => C_LEVEL_PROCEDURE
15726            ,p_module   => l_log_module);
15727    END IF;
15728 
15729 
15730 END BflowUpgEntry;
15731 
15732 PROCEDURE CreateGainOrLossLine
15733        (p_event_id                  IN NUMBER
15734        ,p_application_id            IN NUMBER
15735        ,p_amb_context_code          IN VARCHAR2
15736        ,p_entity_code               IN VARCHAR2
15737        ,p_event_class_code          IN VARCHAR2
15738        ,p_event_type_code           IN VARCHAR2
15739        ,p_gain_ccid                 IN NUMBER
15740        ,p_loss_ccid                 IN NUMBER
15741 /*
15742        ,p_rounding_class            IN VARCHAR2
15743        ,p_doc_rounding_level        IN VARCHAR2
15744        ,p_merge_duplicate_code      IN VARCHAR2
15745        ,p_gl_transfer_mode_code     IN VARCHAR2
15746 */
15747        ,p_distribution_id_char_1    IN VARCHAR2
15748        ,p_distribution_id_char_2    IN VARCHAR2
15749        ,p_distribution_id_char_3    IN VARCHAR2
15750        ,p_distribution_id_char_4    IN VARCHAR2
15751        ,p_distribution_id_char_5    IN VARCHAR2
15752        ,p_distribution_id_num_1     IN NUMBER
15753        ,p_distribution_id_num_2     IN NUMBER
15754        ,p_distribution_id_num_3     IN NUMBER
15755        ,p_distribution_id_num_4     IN NUMBER
15756        ,p_distribution_id_num_5     IN NUMBER
15757        ,p_distribution_type         IN VARCHAR2
15758        ,p_gl_date                   IN DATE
15759        ,p_gain_loss_ref             IN VARCHAR2
15760        ,p_balance_type_flag         IN VARCHAR2
15761 ) IS
15762 l_ledger_ccy            VARCHAR2(30);
15763 l_ccid                  NUMBER;
15764 l_enc_type_id           NUMBER;
15765 l_entered_amt           NUMBER;
15766 l_accounted_amt         NUMBER;
15767 l_entered_curr          VARCHAR2(30);
15768 l_ae_header_id          NUMBER;
15769 l_Idx                   NUMBER;
15770 
15771 l_log_module            VARCHAR2(240);
15772 -- extract line num is in g_ExtractLine
15773 BEGIN
15774   IF g_log_enabled THEN
15775     l_log_module := C_DEFAULT_MODULE || '.CreateGainOrLossLine';
15776   END IF;
15777   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15778     trace
15779            (p_msg      => 'BEGIN of CreateGainOrLossLine'
15780            ,p_level    => C_LEVEL_PROCEDURE
15781            ,p_module   => l_log_module);
15782     trace
15783            (p_msg      => 'p_gain_ccid:'||to_char(p_gain_ccid)||' p_loss_ccid:'||to_char(p_loss_ccid)
15784            ,p_level    => C_LEVEL_PROCEDURE
15785            ,p_module   => l_log_module);
15786   END IF;
15787 
15788   -- this need to be called before SetNewLine
15789   SetNewLine;
15790 
15791   set_ae_header_id (p_ae_header_id => p_event_id ,
15792                                 p_header_num   => 0);
15793 
15794   -- this is a gain/loss line
15795   l_ae_header_id := SetAcctLineOption(
15796            p_natural_side_code          => 'G'
15797          , p_gain_or_loss_flag          => 'Y'
15798          , p_gl_transfer_mode_code      => 'D' -- always use detail
15799          , p_acct_entry_type_code       => 'A'
15800          , p_switch_side_flag           => 'Y'
15801          , p_merge_duplicate_code       => 'A' --p_merge_duplicate_code
15802          );
15803   SetAcctLineType
15804       (p_component_type             => 'AUTO_GEN_GAIN_LOSS'
15805       ,p_event_type_code            => p_event_type_code
15806       ,p_line_definition_owner_code => 'O'
15807       ,p_line_definition_code       => 'AUTO_GEN_GAIN_LOSS'
15808       ,p_accounting_line_code       => 'AUTO_GEN_GAIN_LOSS'
15809       ,p_accounting_line_type_code  => 'S'
15810       ,p_accounting_line_appl_id    => p_application_id
15811       ,p_amb_context_code           => p_amb_context_code
15812       ,p_entity_code                => p_entity_code
15813       ,p_event_class_code           => p_event_class_code);
15814   SetAcctClass(
15815            p_accounting_class_code  => 'DUMMY_EXCHANGE_GAIN_LOSS_DUMMY'
15816 --           p_accounting_class_code  => 'EXCHANGE_GAIN_LOSS'
15817          , p_ae_header_id           => l_ae_header_id
15818          );
15819 
15820   g_rec_lines.array_calculate_acctd_flag(g_LineNumber) := 'Y';
15821   g_rec_lines.array_calculate_g_l_flag(g_LineNumber) := 'Y';
15822   g_rec_lines.array_balance_type_code(g_LineNumber) := p_balance_type_flag;
15823 
15824   g_rec_lines.array_ledger_id(g_LineNumber) :=
15825       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
15826 
15827   g_rec_lines.array_gl_date(g_LineNumber) := p_gl_date;
15828 
15829   g_rec_lines.array_distribution_id_char_1(g_LineNumber) := p_distribution_id_char_1;
15830   g_rec_lines.array_distribution_id_char_2(g_LineNumber) := p_distribution_id_char_2;
15831   g_rec_lines.array_distribution_id_char_3(g_LineNumber) := p_distribution_id_char_3;
15832   g_rec_lines.array_distribution_id_char_4(g_LineNumber) := p_distribution_id_char_4;
15833   g_rec_lines.array_distribution_id_char_5(g_LineNumber) := p_distribution_id_char_5;
15834   g_rec_lines.array_distribution_id_num_1(g_LineNumber)  := p_distribution_id_num_1;
15835   g_rec_lines.array_distribution_id_num_2(g_LineNumber)  := p_distribution_id_num_2;
15836   g_rec_lines.array_distribution_id_num_3(g_LineNumber)  := p_distribution_id_num_3;
15837   g_rec_lines.array_distribution_id_num_4(g_LineNumber)  := p_distribution_id_num_4;
15838   g_rec_lines.array_distribution_id_num_5(g_LineNumber)  := p_distribution_id_num_5;
15839   g_rec_lines.array_sys_distribution_type(g_LineNumber)  := p_distribution_type;
15840   g_rec_lines.array_sys_distribution_type(g_LineNumber)  := p_distribution_type;
15841   g_rec_lines.array_gain_or_loss_ref(g_LineNumber)       := p_gain_loss_ref;
15842   g_rec_lines.array_currency_code(g_LineNumber)          :=
15843                                   XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.currency_code;
15844 
15845   IF(p_gain_ccid is null or p_gain_ccid = -1 ) THEN
15846     g_rec_lines.array_ccid(g_LineNumber)          := -1;
15847     g_rec_lines.array_ccid_flag(g_LineNumber)     := C_INVALID;
15848   ELSIF( XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.target_coa_id <>
15849          XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.source_coa_id ) THEN
15850     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15851       trace
15852            (p_msg      => 'credit map here, sl_coa_mapping_id is:'||XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.sl_coa_mapping_id
15853            ,p_level    => C_LEVEL_PROCEDURE
15854            ,p_module   => l_log_module);
15855       trace
15856            (p_msg      => 'map here, ledger_id is:'||XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15857            ,p_level    => C_LEVEL_PROCEDURE
15858            ,p_module   => l_log_module);
15859       trace
15860            (p_msg      => 'map here, array_ae_header_id is:'||g_rec_lines.array_ae_header_id(g_LineNumber)
15861            ,p_level    => C_LEVEL_PROCEDURE
15862            ,p_module   => l_log_module);
15863       trace
15864            (p_msg      => 'map here, temp_line_num is:'||g_rec_lines.array_line_num(g_LineNumber)
15865            ,p_level    => C_LEVEL_PROCEDURE
15866            ,p_module   => l_log_module);
15867       trace
15868            (p_msg      => 'map here, ccid is:'||p_gain_ccid
15869            ,p_level    => C_LEVEL_PROCEDURE
15870            ,p_module   => l_log_module);
15871     END IF;
15872     g_rec_lines.array_ccid_flag(g_LineNumber)     := C_INVALID;
15873     IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.sl_coa_mapping_id IS NULL THEN
15874       null;
15875     ELSE
15876       l_Idx := NVL(g_transaction_accounts.array_ae_header_id.COUNT,0) + 1;
15877       g_transaction_accounts.array_line_num(l_Idx)        := l_Idx ;
15878       g_transaction_accounts.array_ae_header_id(l_Idx)    := g_rec_lines.array_ae_header_id(g_LineNumber);
15879       g_transaction_accounts.array_temp_line_num(l_Idx)   := g_rec_lines.array_line_num(g_LineNumber);
15880       g_transaction_accounts.array_code_combination_id (l_Idx)   := p_gain_ccid;
15881       g_transaction_accounts.array_segment(l_Idx)                := NULL;
15882       g_transaction_accounts.array_from_segment_code(l_Idx)      := NULL;
15883       g_transaction_accounts.array_to_segment_code(l_Idx)        := NULL;
15884       g_transaction_accounts.array_processing_status_code(l_Idx) := C_MAP_CCID;
15885       g_transaction_accounts.array_side_code(l_Idx)              := 'CREDIT';
15886     END IF;
15887   ELSE
15888     g_rec_lines.array_ccid(g_LineNumber)          := p_gain_ccid;
15889     g_rec_lines.array_ccid_flag(g_LineNumber)     := C_CREATED;
15890   END IF;
15891 
15892   IF(p_loss_ccid is null or p_loss_ccid = -1) THEN
15893     g_rec_lines.alt_array_ccid(g_LineNumber)      :=  -1;
15894     g_rec_lines.alt_array_ccid_flag(g_LineNumber) := C_INVALID;
15895   ELSIF( XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.target_coa_id <>
15896          XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.source_coa_id ) THEN
15897 
15898     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15899       trace
15900            (p_msg      => 'debit map here, sl_coa_mapping_id is:'||XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.sl_coa_mapping_id
15901            ,p_level    => C_LEVEL_PROCEDURE
15902            ,p_module   => l_log_module);
15903       trace
15904            (p_msg      => 'map here, ledger_id is:'||XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15905            ,p_level    => C_LEVEL_PROCEDURE
15906            ,p_module   => l_log_module);
15907       trace
15908            (p_msg      => 'map here, array_ae_header_id is:'||g_rec_lines.array_ae_header_id(g_LineNumber)
15909            ,p_level    => C_LEVEL_PROCEDURE
15910            ,p_module   => l_log_module);
15911       trace
15912            (p_msg      => 'map here, temp_line_num is:'||g_rec_lines.array_line_num(g_LineNumber)
15913            ,p_level    => C_LEVEL_PROCEDURE
15914            ,p_module   => l_log_module);
15915       trace
15916            (p_msg      => 'map here, ccid is:'||p_loss_ccid
15917            ,p_level    => C_LEVEL_PROCEDURE
15918            ,p_module   => l_log_module);
15919     END IF;
15920     g_rec_lines.array_ccid_flag(g_LineNumber)     := C_INVALID;
15921     IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.sl_coa_mapping_id IS NULL THEN
15922       null;
15923     ELSE
15924       l_Idx := NVL(g_transaction_accounts.array_ae_header_id.COUNT,0) + 1;
15925       g_transaction_accounts.array_line_num(l_Idx)        := l_Idx ;
15926       g_transaction_accounts.array_ae_header_id(l_Idx)    := g_rec_lines.array_ae_header_id(g_LineNumber);
15927       g_transaction_accounts.array_temp_line_num(l_Idx)   := g_rec_lines.array_line_num(g_LineNumber);
15928       g_transaction_accounts.array_code_combination_id (l_Idx)   := p_loss_ccid;
15929       g_transaction_accounts.array_segment(l_Idx)                := NULL;
15930       g_transaction_accounts.array_from_segment_code(l_Idx)      := NULL;
15931       g_transaction_accounts.array_to_segment_code(l_Idx)        := NULL;
15932       g_transaction_accounts.array_processing_status_code(l_Idx) := C_MAP_CCID;
15933       g_transaction_accounts.array_side_code(l_Idx)              := 'DEBIT';
15934     END IF;
15935   ELSE
15936     g_rec_lines.alt_array_ccid(g_LineNumber)      :=  p_loss_ccid;
15937     g_rec_lines.alt_array_ccid_flag(g_LineNumber) := C_CREATED;
15938   END IF;
15939 
15940   g_rec_lines.array_entered_cr(g_LineNumber)    := 0;
15941 
15942   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15943     trace
15944            (p_msg      => 'END of CreateGainOrLossLine'
15945            ,p_level    => C_LEVEL_PROCEDURE
15946            ,p_module   => l_log_module);
15947   END IF;
15948 END CreateGainOrLossLine;
15949 
15950 
15951 PROCEDURE CreateGainOrLossLines
15952        (p_event_id                  IN NUMBER
15953        ,p_application_id            IN NUMBER
15954        ,p_amb_context_code          IN VARCHAR2
15955        ,p_entity_code               IN VARCHAR2
15956        ,p_event_class_code          IN VARCHAR2
15957        ,p_event_type_code           IN VARCHAR2
15958        ,p_gain_ccid                 IN NUMBER
15959        ,p_loss_ccid                 IN NUMBER
15960        ,p_actual_flag               IN VARCHAR2
15961        ,p_enc_flag                  IN VARCHAR2
15962        ,p_actual_g_l_ref            IN VARCHAR2
15963        ,p_enc_g_l_ref               IN VARCHAR2
15964 ) IS
15965 l_ledger_ccy            VARCHAR2(30);
15966 l_ccid                  NUMBER;
15967 l_enc_type_id           NUMBER;
15968 l_entered_amt           NUMBER;
15969 l_accounted_amt         NUMBER;
15970 l_entered_curr          VARCHAR2(30);
15971 l_ae_header_id          NUMBER;
15972 l_rounding_class        VARCHAR2(30);
15973 l_doc_rounding_level    VARCHAR2(30);
15974 l_gain_or_loss_ref      VARCHAR2(30);
15975 l_merge_duplicate_code  VARCHAR2(30);
15976 l_gl_transfer_mode_code VARCHAR2(30);
15977 
15978 l_distribution_id_char_1 VARCHAR2(80);
15979 l_distribution_id_char_2 VARCHAR2(80);
15980 l_distribution_id_char_3 VARCHAR2(80);
15981 l_distribution_id_char_4 VARCHAR2(80);
15982 l_distribution_id_char_5 VARCHAR2(80);
15983 l_distribution_id_num_1  NUMBER;
15984 l_distribution_id_num_2  NUMBER;
15985 l_distribution_id_num_3  NUMBER;
15986 l_distribution_id_num_4  NUMBER;
15987 l_distribution_id_num_5  NUMBER;
15988 l_distribution_type      VARCHAR2(30);
15989 l_gl_date                DATE;
15990 
15991 l_log_module            VARCHAR2(240);
15992 -- extract line num is in g_ExtractLine
15993 BEGIN
15994   IF g_log_enabled THEN
15995     l_log_module := C_DEFAULT_MODULE || '.CreateGainOrLossLines';
15996   END IF;
15997   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15998     trace
15999            (p_msg      => 'BEGIN of CreateGainOrLossLines'
16000            ,p_level    => C_LEVEL_PROCEDURE
16001            ,p_module   => l_log_module);
16002   END IF;
16003 
16004   IF(p_actual_flag = 'A') THEN
16005 
16006     -- this need to be called before SetNewLine
16007     l_rounding_class := g_rec_lines.array_rounding_class(g_LineNumber);
16008     l_doc_rounding_level:= g_rec_lines.array_doc_rounding_level(g_LineNumber);
16009     l_gain_or_loss_ref:= g_rec_lines.array_gain_or_loss_ref(g_LineNumber);
16010     l_merge_duplicate_code := g_rec_lines.array_merge_duplicate_code(g_LineNumber);
16011     l_gl_transfer_mode_code := g_rec_lines.array_gl_transfer_mode(g_LineNumber);
16012     l_distribution_id_char_1 := g_rec_lines.array_distribution_id_char_1(g_LineNumber);
16013     l_distribution_id_char_2 := g_rec_lines.array_distribution_id_char_2(g_LineNumber);
16014     l_distribution_id_char_3 := g_rec_lines.array_distribution_id_char_3(g_LineNumber);
16015     l_distribution_id_char_4 := g_rec_lines.array_distribution_id_char_4(g_LineNumber);
16016     l_distribution_id_char_5 := g_rec_lines.array_distribution_id_char_5(g_LineNumber);
16017     l_distribution_id_num_1  := g_rec_lines.array_distribution_id_num_1(g_LineNumber);
16018     l_distribution_id_num_2  := g_rec_lines.array_distribution_id_num_2(g_LineNumber);
16019     l_distribution_id_num_3  := g_rec_lines.array_distribution_id_num_3(g_LineNumber);
16020     l_distribution_id_num_4  := g_rec_lines.array_distribution_id_num_4(g_LineNumber);
16021     l_distribution_id_num_5  := g_rec_lines.array_distribution_id_num_5(g_LineNumber);
16022     l_distribution_type      := g_rec_lines.array_sys_distribution_type(g_LineNumber);
16023     l_gl_date                := g_rec_lines.array_gl_date(g_LineNumber);
16024 
16025   -- need create a gain/loss for actual lines
16026     CreateGainOrLossLine
16027        (p_event_id                  => p_event_id
16028        ,p_application_id            => p_application_id
16029        ,p_amb_context_code          => p_amb_context_code
16030        ,p_entity_code               => p_entity_code
16031        ,p_event_class_code          => p_event_class_code
16032        ,p_event_type_code           => p_event_type_code
16033        ,p_gain_ccid                 => p_gain_ccid
16034        ,p_loss_ccid                 => p_loss_ccid
16035        ,p_distribution_id_char_1    => l_distribution_id_char_1
16036        ,p_distribution_id_char_2    => l_distribution_id_char_2
16037        ,p_distribution_id_char_3    => l_distribution_id_char_3
16038        ,p_distribution_id_char_4    => l_distribution_id_char_4
16039        ,p_distribution_id_char_5    => l_distribution_id_char_5
16040        ,p_distribution_id_num_1     => l_distribution_id_num_1
16041        ,p_distribution_id_num_2     => l_distribution_id_num_2
16042        ,p_distribution_id_num_3     => l_distribution_id_num_3
16043        ,p_distribution_id_num_4     => l_distribution_id_num_4
16044        ,p_distribution_id_num_5     => l_distribution_id_num_5
16045        ,p_distribution_type         => l_distribution_type
16046        ,p_gl_date                   => l_gl_date
16047        ,p_gain_loss_ref             => p_actual_g_l_ref
16048        ,p_balance_type_flag         => 'A');
16049   END IF;
16050 /*
16051 
16052   IF(p_enc_flag = 'E') THEN
16053   -- need create a gain/loss for actual lines
16054     CreateGainOrLossLine
16055        (p_event_id                  => p_event_id
16056        ,p_application_id            => p_application_id
16057        ,p_amb_context_code          => p_amb_context_code
16058        ,p_entity_code               => p_entity_code
16059        ,p_event_class_code          => p_event_class_code
16060        ,p_event_type_code           => p_event_type_code
16061        ,p_gain_ccid                 => p_gain_ccid
16062        ,p_loss_ccid                 => p_loss_ccid
16063        ,p_distribution_id_char_1    => l_distribution_id_char_1
16064        ,p_distribution_id_char_2    => l_distribution_id_char_2
16065        ,p_distribution_id_char_3    => l_distribution_id_char_3
16066        ,p_distribution_id_char_4    => l_distribution_id_char_4
16067        ,p_distribution_id_char_5    => l_distribution_id_char_5
16068        ,p_distribution_id_num_1     => l_distribution_id_num_1
16069        ,p_distribution_id_num_2     => l_distribution_id_num_2
16070        ,p_distribution_id_num_3     => l_distribution_id_num_3
16071        ,p_distribution_id_num_4     => l_distribution_id_num_4
16072        ,p_distribution_id_num_5     => l_distribution_id_num_5
16073        ,p_distribution_type         => l_distribution_type
16074        ,p_gl_date                   => l_gl_date
16075        ,p_gain_loss_ref             => p_enc_g_l_ref
16076        ,p_balance_type_flag         => 'E');
16077   END IF;
16078 */
16079 
16080   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16081     trace
16082            (p_msg      => 'END of CreateGainOrLossLines'
16083            ,p_level    => C_LEVEL_PROCEDURE
16084            ,p_module   => l_log_module);
16085   END IF;
16086 END CreateGainOrLossLines;
16087 
16088 /*======================================================================+
16089 |                                                                       |
16090 | Public Procedure- InsertMPARecogLineInfo 7109881                      |
16091 |                                                                       |
16092 |                                                                       |
16093 +======================================================================*/
16094 PROCEDURE InsertMPARecogLineInfo(
16095    p_line_num   NUMBER
16096 ) IS
16097 
16098    l_log_module         VARCHAR2(240);
16099 
16100 BEGIN
16101    IF g_log_enabled THEN
16102       l_log_module := C_DEFAULT_MODULE||'.InsertMPARecogLineInfo';
16103    END IF;
16104 
16105    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16106       trace
16107            (p_msg      => 'BEGIN of InsertMPARecogLineInfo '
16108            ,p_level    => C_LEVEL_PROCEDURE
16109            ,p_module   => l_log_module);
16110       trace
16111            (p_msg      => 'Recognition Line(p_line_num): ' || p_line_num
16112            ,p_level    => C_LEVEL_PROCEDURE
16113            ,p_module   => l_log_module);
16114    END IF;
16115 -- Copy all the data from G_REC_LINES to G_MPA_RECOG_LINES for a given Recognition Line
16116 g_mpa_recog_lines.array_ae_header_id(p_line_num)                    := g_rec_lines.array_ae_header_id(p_line_num)  ;
16117 g_mpa_recog_lines.array_line_num(p_line_num)                        := g_rec_lines.array_line_num(p_line_num)       ;
16118 g_mpa_recog_lines.array_extract_line_num(p_line_num)                := g_rec_lines.array_extract_line_num(p_line_num) ;
16119 g_mpa_recog_lines.array_accounting_class(p_line_num)                := g_rec_lines.array_accounting_class(p_line_num)  ;
16120 g_mpa_recog_lines.array_rounding_class(p_line_num)                  := g_rec_lines.array_rounding_class(p_line_num) ;
16121 g_mpa_recog_lines.array_doc_rounding_level(p_line_num)              := g_rec_lines.array_doc_rounding_level(p_line_num) ;
16122 g_mpa_recog_lines.array_gain_or_loss_ref(p_line_num)                := g_rec_lines.array_gain_or_loss_ref(p_line_num) ;
16123 g_mpa_recog_lines.array_event_class_code(p_line_num)                := g_rec_lines.array_event_class_code(p_line_num) ;
16124 g_mpa_recog_lines.array_event_type_code(p_line_num)                 := g_rec_lines.array_event_type_code(p_line_num) ;
16125 g_mpa_recog_lines.array_line_defn_owner_code(p_line_num)            := g_rec_lines.array_line_defn_owner_code(p_line_num) ;
16126 g_mpa_recog_lines.array_line_defn_code(p_line_num)                  := g_rec_lines.array_line_defn_code(p_line_num)  ;
16127 g_mpa_recog_lines.array_accounting_line_code(p_line_num)            := g_rec_lines.array_accounting_line_code(p_line_num) ;
16128 g_mpa_recog_lines.array_accounting_line_type(p_line_num)            := g_rec_lines.array_accounting_line_type(p_line_num) ;
16129 g_mpa_recog_lines.array_calculate_acctd_flag(p_line_num)            := g_rec_lines.array_calculate_acctd_flag(p_line_num) ;
16130 g_mpa_recog_lines.array_calculate_g_l_flag(p_line_num)              := g_rec_lines.array_calculate_g_l_flag(p_line_num) ;
16131 g_mpa_recog_lines.array_gain_or_loss_flag(p_line_num)               := g_rec_lines.array_gain_or_loss_flag(p_line_num)  ;
16132 --
16133 -- line flexfield accounts
16134 --
16135 g_mpa_recog_lines.array_accounting_coa_id(p_line_num)               := g_rec_lines.array_accounting_coa_id(p_line_num)  ;
16136 g_mpa_recog_lines.array_transaction_coa_id(p_line_num)              := g_rec_lines.array_transaction_coa_id(p_line_num) ;
16137 g_mpa_recog_lines.array_sl_coa_mapping_name(p_line_num)             := g_rec_lines.array_sl_coa_mapping_name(p_line_num) ;
16138 g_mpa_recog_lines.array_ccid_flag(p_line_num)                       := g_rec_lines.array_ccid_flag(p_line_num)      ;
16139 g_mpa_recog_lines.array_ccid(p_line_num)                            := g_rec_lines.array_ccid(p_line_num)  ;
16140  --                                    				     --
16141 g_mpa_recog_lines.array_segment1(p_line_num)                        := g_rec_lines.array_segment1(p_line_num)  ;
16142 g_mpa_recog_lines.array_segment2(p_line_num)                        := g_rec_lines.array_segment2(p_line_num)  ;
16143 g_mpa_recog_lines.array_segment3(p_line_num)                        := g_rec_lines.array_segment3(p_line_num)  ;
16144 g_mpa_recog_lines.array_segment4(p_line_num)                        := g_rec_lines.array_segment4(p_line_num)  ;
16145 g_mpa_recog_lines.array_segment5(p_line_num)                        := g_rec_lines.array_segment5(p_line_num)  ;
16146 g_mpa_recog_lines.array_segment6(p_line_num)                        := g_rec_lines.array_segment6(p_line_num)  ;
16147 g_mpa_recog_lines.array_segment7(p_line_num)                        := g_rec_lines.array_segment7(p_line_num)  ;
16148 g_mpa_recog_lines.array_segment8(p_line_num)                        := g_rec_lines.array_segment8(p_line_num)  ;
16149 g_mpa_recog_lines.array_segment9(p_line_num)                        := g_rec_lines.array_segment9(p_line_num)  ;
16150 g_mpa_recog_lines.array_segment10(p_line_num)                       := g_rec_lines.array_segment10(p_line_num) ;
16151 g_mpa_recog_lines.array_segment11(p_line_num)                       := g_rec_lines.array_segment11(p_line_num) ;
16152 g_mpa_recog_lines.array_segment12(p_line_num)                       := g_rec_lines.array_segment12(p_line_num) ;
16153 g_mpa_recog_lines.array_segment13(p_line_num)                       := g_rec_lines.array_segment13(p_line_num) ;
16154 g_mpa_recog_lines.array_segment14(p_line_num)                       := g_rec_lines.array_segment14(p_line_num) ;
16155 g_mpa_recog_lines.array_segment15(p_line_num)                       := g_rec_lines.array_segment15(p_line_num) ;
16156 g_mpa_recog_lines.array_segment16(p_line_num)                       := g_rec_lines.array_segment16(p_line_num) ;
16157 g_mpa_recog_lines.array_segment17(p_line_num)                       := g_rec_lines.array_segment17(p_line_num) ;
16158 g_mpa_recog_lines.array_segment18(p_line_num)                       := g_rec_lines.array_segment18(p_line_num) ;
16159 g_mpa_recog_lines.array_segment19(p_line_num)                       := g_rec_lines.array_segment19(p_line_num) ;
16160 g_mpa_recog_lines.array_segment20(p_line_num)                       := g_rec_lines.array_segment20(p_line_num) ;
16161 g_mpa_recog_lines.array_segment21(p_line_num)                       := g_rec_lines.array_segment21(p_line_num) ;
16162 g_mpa_recog_lines.array_segment22(p_line_num)                       := g_rec_lines.array_segment22(p_line_num) ;
16163 g_mpa_recog_lines.array_segment23(p_line_num)                       := g_rec_lines.array_segment23(p_line_num) ;
16164 g_mpa_recog_lines.array_segment24(p_line_num)                       := g_rec_lines.array_segment24(p_line_num) ;
16165 g_mpa_recog_lines.array_segment25(p_line_num)                       := g_rec_lines.array_segment25(p_line_num) ;
16166 g_mpa_recog_lines.array_segment26(p_line_num)                       := g_rec_lines.array_segment26(p_line_num) ;
16167 g_mpa_recog_lines.array_segment27(p_line_num)                       := g_rec_lines.array_segment27(p_line_num) ;
16168 g_mpa_recog_lines.array_segment28(p_line_num)                       := g_rec_lines.array_segment28(p_line_num) ;
16169 g_mpa_recog_lines.array_segment29(p_line_num)                       := g_rec_lines.array_segment29(p_line_num) ;
16170 g_mpa_recog_lines.array_segment30(p_line_num)                       := g_rec_lines.array_segment30(p_line_num) ;
16171 g_mpa_recog_lines.alt_array_ccid_flag(p_line_num)                   := g_rec_lines.alt_array_ccid_flag(p_line_num)  ;
16172 g_mpa_recog_lines.alt_array_ccid(p_line_num)                        := g_rec_lines.alt_array_ccid(p_line_num)       ;
16173 g_mpa_recog_lines.alt_array_segment1(p_line_num)                    := g_rec_lines.alt_array_segment1(p_line_num)   ;
16174 g_mpa_recog_lines.alt_array_segment2(p_line_num)                    := g_rec_lines.alt_array_segment2(p_line_num)   ;
16175 g_mpa_recog_lines.alt_array_segment3(p_line_num)                    := g_rec_lines.alt_array_segment3(p_line_num)   ;
16176 g_mpa_recog_lines.alt_array_segment4(p_line_num)                    := g_rec_lines.alt_array_segment4(p_line_num)   ;
16177 g_mpa_recog_lines.alt_array_segment5(p_line_num)                    := g_rec_lines.alt_array_segment5(p_line_num)   ;
16178 g_mpa_recog_lines.alt_array_segment6(p_line_num)                    := g_rec_lines.alt_array_segment6(p_line_num)   ;
16179 g_mpa_recog_lines.alt_array_segment7(p_line_num)                    := g_rec_lines.alt_array_segment7(p_line_num)   ;
16180 g_mpa_recog_lines.alt_array_segment8(p_line_num)                    := g_rec_lines.alt_array_segment8(p_line_num)   ;
16181 g_mpa_recog_lines.alt_array_segment9(p_line_num)                    := g_rec_lines.alt_array_segment9(p_line_num)   ;
16182 g_mpa_recog_lines.alt_array_segment10(p_line_num)                   := g_rec_lines.alt_array_segment10(p_line_num)  ;
16183 g_mpa_recog_lines.alt_array_segment11(p_line_num)                   := g_rec_lines.alt_array_segment11(p_line_num)  ;
16184 g_mpa_recog_lines.alt_array_segment12(p_line_num)                   := g_rec_lines.alt_array_segment12(p_line_num)  ;
16185 g_mpa_recog_lines.alt_array_segment13(p_line_num)                   := g_rec_lines.alt_array_segment13(p_line_num)  ;
16186 g_mpa_recog_lines.alt_array_segment14(p_line_num)                   := g_rec_lines.alt_array_segment14(p_line_num)  ;
16187 g_mpa_recog_lines.alt_array_segment15(p_line_num)                   := g_rec_lines.alt_array_segment15(p_line_num)  ;
16188 g_mpa_recog_lines.alt_array_segment16(p_line_num)                   := g_rec_lines.alt_array_segment16(p_line_num)  ;
16189 g_mpa_recog_lines.alt_array_segment17(p_line_num)                   := g_rec_lines.alt_array_segment17(p_line_num)  ;
16190 g_mpa_recog_lines.alt_array_segment18(p_line_num)                   := g_rec_lines.alt_array_segment18(p_line_num)  ;
16191 g_mpa_recog_lines.alt_array_segment19(p_line_num)                   := g_rec_lines.alt_array_segment19(p_line_num)  ;
16192 g_mpa_recog_lines.alt_array_segment20(p_line_num)                   := g_rec_lines.alt_array_segment20(p_line_num)  ;
16193 g_mpa_recog_lines.alt_array_segment21(p_line_num)                   := g_rec_lines.alt_array_segment21(p_line_num)  ;
16194 g_mpa_recog_lines.alt_array_segment22(p_line_num)                   := g_rec_lines.alt_array_segment22(p_line_num)  ;
16195 g_mpa_recog_lines.alt_array_segment23(p_line_num)                   := g_rec_lines.alt_array_segment23(p_line_num)  ;
16196 g_mpa_recog_lines.alt_array_segment24(p_line_num)                   := g_rec_lines.alt_array_segment24(p_line_num)  ;
16197 g_mpa_recog_lines.alt_array_segment25(p_line_num)                   := g_rec_lines.alt_array_segment25(p_line_num)  ;
16198 g_mpa_recog_lines.alt_array_segment26(p_line_num)                   := g_rec_lines.alt_array_segment26(p_line_num)  ;
16199 g_mpa_recog_lines.alt_array_segment27(p_line_num)                   := g_rec_lines.alt_array_segment27(p_line_num)  ;
16200 g_mpa_recog_lines.alt_array_segment28(p_line_num)                   := g_rec_lines.alt_array_segment28(p_line_num)  ;
16201 g_mpa_recog_lines.alt_array_segment29(p_line_num)                   := g_rec_lines.alt_array_segment29(p_line_num)  ;
16202 g_mpa_recog_lines.alt_array_segment30(p_line_num)                   := g_rec_lines.alt_array_segment30(p_line_num)  ;
16203 --
16204 -- Option lines
16205 --
16206 g_mpa_recog_lines.array_gl_transfer_mode(p_line_num)                := g_rec_lines.array_gl_transfer_mode(p_line_num)  ;
16207 g_mpa_recog_lines.array_natural_side_code(p_line_num)               := g_rec_lines.array_natural_side_code(p_line_num) ;
16208 g_mpa_recog_lines.array_acct_entry_type_code(p_line_num)            := g_rec_lines.array_acct_entry_type_code(p_line_num) ;
16209 g_mpa_recog_lines.array_switch_side_flag(p_line_num)                := g_rec_lines.array_switch_side_flag(p_line_num)  ;
16210 g_mpa_recog_lines.array_merge_duplicate_code(p_line_num)            := g_rec_lines.array_merge_duplicate_code(p_line_num) ;
16211  --
16212  -- line amounts
16213  --
16214 g_mpa_recog_lines.array_entered_amount(p_line_num)                  := g_rec_lines.array_entered_amount(p_line_num)  ;
16215 g_mpa_recog_lines.array_ledger_amount(p_line_num)                   := g_rec_lines.array_ledger_amount(p_line_num)   ;
16216 g_mpa_recog_lines.array_entered_dr(p_line_num)                      := g_rec_lines.array_entered_dr(p_line_num)      ;
16217 g_mpa_recog_lines.array_entered_cr(p_line_num)                      := g_rec_lines.array_entered_cr(p_line_num)      ;
16218 g_mpa_recog_lines.array_accounted_dr(p_line_num)                    := g_rec_lines.array_accounted_dr(p_line_num)    ;
16219 g_mpa_recog_lines.array_accounted_cr(p_line_num)                    := g_rec_lines.array_accounted_cr(p_line_num)    ;
16220 g_mpa_recog_lines.array_currency_code(p_line_num)                   := g_rec_lines.array_currency_code(p_line_num)   ;
16221 g_mpa_recog_lines.array_currency_mau(p_line_num)                    := g_rec_lines.array_currency_mau(p_line_num)    ;
16222 g_mpa_recog_lines.array_curr_conversion_date(p_line_num)            := g_rec_lines.array_curr_conversion_date(p_line_num) ;
16223 g_mpa_recog_lines.array_curr_conversion_rate(p_line_num)            := g_rec_lines.array_curr_conversion_rate(p_line_num) ;
16224 g_mpa_recog_lines.array_curr_conversion_type(p_line_num)            := g_rec_lines.array_curr_conversion_type(p_line_num) ;
16225 g_mpa_recog_lines.array_description(p_line_num)                     := g_rec_lines.array_description(p_line_num)     ;
16226  --
16227  -- line descriptions
16228  --
16229 g_mpa_recog_lines.array_party_id(p_line_num)                        := g_rec_lines.array_party_id(p_line_num)        ;
16230 g_mpa_recog_lines.array_party_site_id(p_line_num)                   := g_rec_lines.array_party_site_id(p_line_num)   ;
16231 g_mpa_recog_lines.array_party_type_code(p_line_num)                 := g_rec_lines.array_party_type_code(p_line_num) ;
16232  --
16233 g_mpa_recog_lines.array_statistical_amount(p_line_num)              := g_rec_lines.array_statistical_amount(p_line_num)   ;
16234 g_mpa_recog_lines.array_ussgl_transaction(p_line_num)               := g_rec_lines.array_ussgl_transaction(p_line_num)    ;
16235 --
16236 g_mpa_recog_lines.array_jgzz_recon_ref(p_line_num)                  := g_rec_lines.array_jgzz_recon_ref(p_line_num)       ;
16237 -- distribution links
16238 --
16239 g_mpa_recog_lines.array_distribution_id_char_1(p_line_num)         := g_rec_lines.array_distribution_id_char_1(p_line_num) ;
16240 g_mpa_recog_lines.array_distribution_id_char_2(p_line_num)         := g_rec_lines.array_distribution_id_char_2(p_line_num) ;
16241 g_mpa_recog_lines.array_distribution_id_char_3(p_line_num)         := g_rec_lines.array_distribution_id_char_3(p_line_num) ;
16242 g_mpa_recog_lines.array_distribution_id_char_4(p_line_num)         := g_rec_lines.array_distribution_id_char_4(p_line_num) ;
16243 g_mpa_recog_lines.array_distribution_id_char_5(p_line_num)         := g_rec_lines.array_distribution_id_char_5(p_line_num) ;
16244 g_mpa_recog_lines.array_sys_distribution_type(p_line_num)          := g_rec_lines.array_sys_distribution_type(p_line_num)  ;
16245 g_mpa_recog_lines.array_distribution_id_num_1(p_line_num)          := g_rec_lines.array_distribution_id_num_1(p_line_num)  ;
16246 g_mpa_recog_lines.array_distribution_id_num_2(p_line_num)          := g_rec_lines.array_distribution_id_num_2(p_line_num)  ;
16247 g_mpa_recog_lines.array_distribution_id_num_3(p_line_num)          := g_rec_lines.array_distribution_id_num_3(p_line_num)  ;
16248 g_mpa_recog_lines.array_distribution_id_num_4(p_line_num)          := g_rec_lines.array_distribution_id_num_4(p_line_num)  ;
16249 g_mpa_recog_lines.array_distribution_id_num_5(p_line_num)          := g_rec_lines.array_distribution_id_num_5(p_line_num)  ;
16250 --
16251 -- reversal attributes
16252 --
16253 g_mpa_recog_lines.array_rev_dist_id_char_1(p_line_num)             := g_rec_lines.array_rev_dist_id_char_1(p_line_num)     ;
16254 g_mpa_recog_lines.array_rev_dist_id_char_2(p_line_num)             := g_rec_lines.array_rev_dist_id_char_2(p_line_num)     ;
16255 g_mpa_recog_lines.array_rev_dist_id_char_3(p_line_num)             := g_rec_lines.array_rev_dist_id_char_3(p_line_num)     ;
16256 g_mpa_recog_lines.array_rev_dist_id_char_4(p_line_num)             := g_rec_lines.array_rev_dist_id_char_4(p_line_num)     ;
16257 g_mpa_recog_lines.array_rev_dist_id_char_5(p_line_num)             := g_rec_lines.array_rev_dist_id_char_5(p_line_num)     ;
16258 g_mpa_recog_lines.array_rev_dist_id_num_1(p_line_num)              := g_rec_lines.array_rev_dist_id_num_1(p_line_num)      ;
16259 g_mpa_recog_lines.array_rev_dist_id_num_2(p_line_num)              := g_rec_lines.array_rev_dist_id_num_2(p_line_num)      ;
16260 g_mpa_recog_lines.array_rev_dist_id_num_3(p_line_num)              := g_rec_lines.array_rev_dist_id_num_3(p_line_num)      ;
16261 g_mpa_recog_lines.array_rev_dist_id_num_4(p_line_num)              := g_rec_lines.array_rev_dist_id_num_4(p_line_num)      ;
16262 g_mpa_recog_lines.array_rev_dist_id_num_5(p_line_num)              := g_rec_lines.array_rev_dist_id_num_5(p_line_num)      ;
16263 g_mpa_recog_lines.array_rev_dist_type(p_line_num)                  := g_rec_lines.array_rev_dist_type(p_line_num)          ;
16264 --
16265 ---------------------------------------
16266 -- 4262811  MPA
16267 ---------------------------------------
16268 g_mpa_recog_lines.array_header_num(p_line_num)                     := g_rec_lines.array_header_num(p_line_num)             ;
16269 g_mpa_recog_lines.array_mpa_acc_entry_flag(p_line_num)             := g_rec_lines.array_mpa_acc_entry_flag(p_line_num)     ;
16270 g_mpa_recog_lines.array_mpa_option(p_line_num)                     := g_rec_lines.array_mpa_option(p_line_num)             ;
16271 g_mpa_recog_lines.array_mpa_start_date(p_line_num)                 := g_rec_lines.array_mpa_start_date(p_line_num)         ;
16272 g_mpa_recog_lines.array_mpa_end_date(p_line_num)                   := g_rec_lines.array_mpa_end_date(p_line_num)           ;
16273 -- deferred info  -- REMOVED for 426281
16274 --
16275 -- array_deferred_indicator
16276 -- array_deferred_start_date
16277 -- array_deferred_end_date
16278 -- array_deferred_no_period
16279 -- array_deferred_period_type
16280 --
16281 -- reversal info
16282 --
16283 g_mpa_recog_lines.array_acc_reversal_option(p_line_num)            := g_rec_lines.array_acc_reversal_option(p_line_num)    ;
16284 --
16285 -- tax info
16286 --
16287 g_mpa_recog_lines.array_tax_line_ref(p_line_num)                   := g_rec_lines.array_tax_line_ref(p_line_num)           ;
16288 g_mpa_recog_lines.array_tax_summary_line_ref(p_line_num)           := g_rec_lines.array_tax_summary_line_ref(p_line_num)   ;
16289 g_mpa_recog_lines.array_tax_rec_nrec_dist_ref(p_line_num)          := g_rec_lines.array_tax_rec_nrec_dist_ref(p_line_num)  ;
16290 --
16291 -- bulk performance(p_line_num)
16292 g_mpa_recog_lines.array_balance_type_code(p_line_num)              := g_rec_lines.array_balance_type_code(p_line_num)      ;
16293 g_mpa_recog_lines.array_ledger_id(p_line_num)                      := g_rec_lines.array_ledger_id(p_line_num)              ;
16294 --
16295 g_mpa_recog_lines.array_anc_balance_flag(p_line_num)               := g_rec_lines.array_anc_balance_flag(p_line_num)       ;
16296 g_mpa_recog_lines.array_anc_id_1(p_line_num)                       := g_rec_lines.array_anc_id_1(p_line_num)               ;
16297 g_mpa_recog_lines.array_anc_id_2(p_line_num)                       := g_rec_lines.array_anc_id_2(p_line_num)               ;
16298 g_mpa_recog_lines.array_anc_id_3(p_line_num)                       := g_rec_lines.array_anc_id_3(p_line_num)               ;
16299 g_mpa_recog_lines.array_anc_id_4(p_line_num)                       := g_rec_lines.array_anc_id_4(p_line_num)               ;
16300 g_mpa_recog_lines.array_anc_id_5(p_line_num)                       := g_rec_lines.array_anc_id_5(p_line_num)               ;
16301 g_mpa_recog_lines.array_anc_id_6(p_line_num)                       := g_rec_lines.array_anc_id_6(p_line_num)               ;
16302 g_mpa_recog_lines.array_anc_id_7(p_line_num)                       := g_rec_lines.array_anc_id_7(p_line_num)               ;
16303 g_mpa_recog_lines.array_anc_id_8(p_line_num)                       := g_rec_lines.array_anc_id_8(p_line_num)               ;
16304 g_mpa_recog_lines.array_anc_id_9(p_line_num)                       := g_rec_lines.array_anc_id_9(p_line_num)               ;
16305 g_mpa_recog_lines.array_anc_id_10(p_line_num)                      := g_rec_lines.array_anc_id_10(p_line_num)              ;
16306 g_mpa_recog_lines.array_anc_id_11(p_line_num)                      := g_rec_lines.array_anc_id_11(p_line_num)              ;
16307 g_mpa_recog_lines.array_anc_id_12(p_line_num)                      := g_rec_lines.array_anc_id_12(p_line_num)              ;
16308 g_mpa_recog_lines.array_anc_id_13(p_line_num)                      := g_rec_lines.array_anc_id_13(p_line_num)              ;
16309 g_mpa_recog_lines.array_anc_id_14(p_line_num)                      := g_rec_lines.array_anc_id_14(p_line_num)              ;
16310 g_mpa_recog_lines.array_anc_id_15(p_line_num)                      := g_rec_lines.array_anc_id_15(p_line_num)              ;
16311 g_mpa_recog_lines.array_anc_id_16(p_line_num)                      := g_rec_lines.array_anc_id_16(p_line_num)              ;
16312 g_mpa_recog_lines.array_anc_id_17(p_line_num)                      := g_rec_lines.array_anc_id_17(p_line_num)              ;
16313 g_mpa_recog_lines.array_anc_id_18(p_line_num)                      := g_rec_lines.array_anc_id_18(p_line_num)              ;
16314 g_mpa_recog_lines.array_anc_id_19(p_line_num)                      := g_rec_lines.array_anc_id_19(p_line_num)              ;
16315 g_mpa_recog_lines.array_anc_id_20(p_line_num)                      := g_rec_lines.array_anc_id_20(p_line_num)              ;
16316 g_mpa_recog_lines.array_anc_id_21(p_line_num)                      := g_rec_lines.array_anc_id_21(p_line_num)              ;
16317 g_mpa_recog_lines.array_anc_id_22(p_line_num)                      := g_rec_lines.array_anc_id_22(p_line_num)              ;
16318 g_mpa_recog_lines.array_anc_id_23(p_line_num)                      := g_rec_lines.array_anc_id_23(p_line_num)              ;
16319 g_mpa_recog_lines.array_anc_id_24(p_line_num)                      := g_rec_lines.array_anc_id_24(p_line_num)              ;
16320 g_mpa_recog_lines.array_anc_id_25(p_line_num)                      := g_rec_lines.array_anc_id_25(p_line_num)              ;
16321 g_mpa_recog_lines.array_anc_id_26(p_line_num)                      := g_rec_lines.array_anc_id_26(p_line_num)              ;
16322 g_mpa_recog_lines.array_anc_id_27(p_line_num)                      := g_rec_lines.array_anc_id_27(p_line_num)              ;
16323 g_mpa_recog_lines.array_anc_id_28(p_line_num)                      := g_rec_lines.array_anc_id_28(p_line_num)              ;
16324 g_mpa_recog_lines.array_anc_id_29(p_line_num)                      := g_rec_lines.array_anc_id_29(p_line_num)              ;
16325 g_mpa_recog_lines.array_anc_id_30(p_line_num)                      := g_rec_lines.array_anc_id_30(p_line_num)              ;
16326 g_mpa_recog_lines.array_anc_id_31(p_line_num)                      := g_rec_lines.array_anc_id_31(p_line_num)              ;
16327 g_mpa_recog_lines.array_anc_id_32(p_line_num)                      := g_rec_lines.array_anc_id_32(p_line_num)              ;
16328 g_mpa_recog_lines.array_anc_id_33(p_line_num)                      := g_rec_lines.array_anc_id_33(p_line_num)              ;
16329 g_mpa_recog_lines.array_anc_id_34(p_line_num)                      := g_rec_lines.array_anc_id_34(p_line_num)              ;
16330 g_mpa_recog_lines.array_anc_id_35(p_line_num)                      := g_rec_lines.array_anc_id_35(p_line_num)              ;
16331 g_mpa_recog_lines.array_anc_id_36(p_line_num)                      := g_rec_lines.array_anc_id_36(p_line_num)              ;
16332 g_mpa_recog_lines.array_anc_id_37(p_line_num)                      := g_rec_lines.array_anc_id_37(p_line_num)              ;
16333 g_mpa_recog_lines.array_anc_id_38(p_line_num)                      := g_rec_lines.array_anc_id_38(p_line_num)              ;
16334 g_mpa_recog_lines.array_anc_id_39(p_line_num)                      := g_rec_lines.array_anc_id_39(p_line_num)              ;
16335 g_mpa_recog_lines.array_anc_id_40(p_line_num)                      := g_rec_lines.array_anc_id_40(p_line_num)              ;
16336 g_mpa_recog_lines.array_anc_id_41(p_line_num)                      := g_rec_lines.array_anc_id_41(p_line_num)              ;
16337 g_mpa_recog_lines.array_anc_id_42(p_line_num)                      := g_rec_lines.array_anc_id_42(p_line_num)              ;
16338 g_mpa_recog_lines.array_anc_id_43(p_line_num)                      := g_rec_lines.array_anc_id_43(p_line_num)              ;
16339 g_mpa_recog_lines.array_anc_id_44(p_line_num)                      := g_rec_lines.array_anc_id_44(p_line_num)              ;
16340 g_mpa_recog_lines.array_anc_id_45(p_line_num)                      := g_rec_lines.array_anc_id_45(p_line_num)              ;
16341 g_mpa_recog_lines.array_anc_id_46(p_line_num)                      := g_rec_lines.array_anc_id_46(p_line_num)              ;
16342 g_mpa_recog_lines.array_anc_id_47(p_line_num)                      := g_rec_lines.array_anc_id_47(p_line_num)              ;
16343 g_mpa_recog_lines.array_anc_id_48(p_line_num)                      := g_rec_lines.array_anc_id_48(p_line_num)              ;
16344 g_mpa_recog_lines.array_anc_id_49(p_line_num)                      := g_rec_lines.array_anc_id_49(p_line_num)              ;
16345 g_mpa_recog_lines.array_anc_id_50(p_line_num)                      := g_rec_lines.array_anc_id_50(p_line_num)              ;
16346 g_mpa_recog_lines.array_anc_id_51(p_line_num)                      := g_rec_lines.array_anc_id_51(p_line_num)              ;
16347 g_mpa_recog_lines.array_anc_id_52(p_line_num)                      := g_rec_lines.array_anc_id_52(p_line_num)              ;
16348 g_mpa_recog_lines.array_anc_id_53(p_line_num)                      := g_rec_lines.array_anc_id_53(p_line_num)              ;
16349 g_mpa_recog_lines.array_anc_id_54(p_line_num)                      := g_rec_lines.array_anc_id_54(p_line_num)              ;
16350 g_mpa_recog_lines.array_anc_id_55(p_line_num)                      := g_rec_lines.array_anc_id_55(p_line_num)              ;
16351 g_mpa_recog_lines.array_anc_id_56(p_line_num)                      := g_rec_lines.array_anc_id_56(p_line_num)              ;
16352 g_mpa_recog_lines.array_anc_id_57(p_line_num)                      := g_rec_lines.array_anc_id_57(p_line_num)              ;
16353 g_mpa_recog_lines.array_anc_id_58(p_line_num)                      := g_rec_lines.array_anc_id_58(p_line_num)              ;
16354 g_mpa_recog_lines.array_anc_id_59(p_line_num)                      := g_rec_lines.array_anc_id_59(p_line_num)              ;
16355 g_mpa_recog_lines.array_anc_id_60(p_line_num)                      := g_rec_lines.array_anc_id_60(p_line_num)              ;
16356 g_mpa_recog_lines.array_anc_id_61(p_line_num)                      := g_rec_lines.array_anc_id_61(p_line_num)              ;
16357 g_mpa_recog_lines.array_anc_id_62(p_line_num)                      := g_rec_lines.array_anc_id_62(p_line_num)              ;
16358 g_mpa_recog_lines.array_anc_id_63(p_line_num)                      := g_rec_lines.array_anc_id_63(p_line_num)              ;
16359 g_mpa_recog_lines.array_anc_id_64(p_line_num)                      := g_rec_lines.array_anc_id_64(p_line_num)              ;
16360 g_mpa_recog_lines.array_anc_id_65(p_line_num)                      := g_rec_lines.array_anc_id_65(p_line_num)              ;
16361 g_mpa_recog_lines.array_anc_id_66(p_line_num)                      := g_rec_lines.array_anc_id_66(p_line_num)              ;
16362 g_mpa_recog_lines.array_anc_id_67(p_line_num)                      := g_rec_lines.array_anc_id_67(p_line_num)              ;
16363 g_mpa_recog_lines.array_anc_id_68(p_line_num)                      := g_rec_lines.array_anc_id_68(p_line_num)              ;
16364 g_mpa_recog_lines.array_anc_id_69(p_line_num)                      := g_rec_lines.array_anc_id_69(p_line_num)              ;
16365 g_mpa_recog_lines.array_anc_id_70(p_line_num)                      := g_rec_lines.array_anc_id_70(p_line_num)              ;
16366 g_mpa_recog_lines.array_anc_id_71(p_line_num)                      := g_rec_lines.array_anc_id_71(p_line_num)              ;
16367 g_mpa_recog_lines.array_anc_id_72(p_line_num)                      := g_rec_lines.array_anc_id_72(p_line_num)              ;
16368 g_mpa_recog_lines.array_anc_id_73(p_line_num)                      := g_rec_lines.array_anc_id_73(p_line_num)              ;
16369 g_mpa_recog_lines.array_anc_id_74(p_line_num)                      := g_rec_lines.array_anc_id_74(p_line_num)              ;
16370 g_mpa_recog_lines.array_anc_id_75(p_line_num)                      := g_rec_lines.array_anc_id_75(p_line_num)              ;
16371 g_mpa_recog_lines.array_anc_id_76(p_line_num)                      := g_rec_lines.array_anc_id_76(p_line_num)              ;
16372 g_mpa_recog_lines.array_anc_id_77(p_line_num)                      := g_rec_lines.array_anc_id_77(p_line_num)              ;
16373 g_mpa_recog_lines.array_anc_id_78(p_line_num)                      := g_rec_lines.array_anc_id_78(p_line_num)              ;
16374 g_mpa_recog_lines.array_anc_id_79(p_line_num)                      := g_rec_lines.array_anc_id_79(p_line_num)              ;
16375 g_mpa_recog_lines.array_anc_id_80(p_line_num)                      := g_rec_lines.array_anc_id_80(p_line_num)              ;
16376 g_mpa_recog_lines.array_anc_id_81(p_line_num)                      := g_rec_lines.array_anc_id_81(p_line_num)              ;
16377 g_mpa_recog_lines.array_anc_id_82(p_line_num)                      := g_rec_lines.array_anc_id_82(p_line_num)              ;
16378 g_mpa_recog_lines.array_anc_id_83(p_line_num)                      := g_rec_lines.array_anc_id_83(p_line_num)              ;
16379 g_mpa_recog_lines.array_anc_id_84(p_line_num)                      := g_rec_lines.array_anc_id_84(p_line_num)              ;
16380 g_mpa_recog_lines.array_anc_id_85(p_line_num)                      := g_rec_lines.array_anc_id_85(p_line_num)              ;
16381 g_mpa_recog_lines.array_anc_id_86(p_line_num)                      := g_rec_lines.array_anc_id_86(p_line_num)              ;
16382 g_mpa_recog_lines.array_anc_id_87(p_line_num)                      := g_rec_lines.array_anc_id_87(p_line_num)              ;
16383 g_mpa_recog_lines.array_anc_id_88(p_line_num)                      := g_rec_lines.array_anc_id_88(p_line_num)              ;
16384 g_mpa_recog_lines.array_anc_id_89(p_line_num)                      := g_rec_lines.array_anc_id_89(p_line_num)              ;
16385 g_mpa_recog_lines.array_anc_id_90(p_line_num)                      := g_rec_lines.array_anc_id_90(p_line_num)              ;
16386 g_mpa_recog_lines.array_anc_id_91(p_line_num)                      := g_rec_lines.array_anc_id_91(p_line_num)              ;
16387 g_mpa_recog_lines.array_anc_id_92(p_line_num)                      := g_rec_lines.array_anc_id_92(p_line_num)              ;
16388 g_mpa_recog_lines.array_anc_id_93(p_line_num)                      := g_rec_lines.array_anc_id_93(p_line_num)              ;
16389 g_mpa_recog_lines.array_anc_id_94(p_line_num)                      := g_rec_lines.array_anc_id_94(p_line_num)              ;
16390 g_mpa_recog_lines.array_anc_id_95(p_line_num)                      := g_rec_lines.array_anc_id_95(p_line_num)              ;
16391 g_mpa_recog_lines.array_anc_id_96(p_line_num)                      := g_rec_lines.array_anc_id_96(p_line_num)              ;
16392 g_mpa_recog_lines.array_anc_id_97(p_line_num)                      := g_rec_lines.array_anc_id_97(p_line_num)              ;
16393 g_mpa_recog_lines.array_anc_id_98(p_line_num)                      := g_rec_lines.array_anc_id_98(p_line_num)              ;
16394 g_mpa_recog_lines.array_anc_id_99(p_line_num)                      := g_rec_lines.array_anc_id_99(p_line_num)              ;
16395 g_mpa_recog_lines.array_anc_id_100(p_line_num)                     := g_rec_lines.array_anc_id_100(p_line_num)             ;
16396 --
16397 g_mpa_recog_lines.array_event_number(p_line_num)                   := g_rec_lines.array_event_number(p_line_num)           ;
16398 g_mpa_recog_lines.array_entity_id(p_line_num)                      := g_rec_lines.array_entity_id(p_line_num)              ;
16399 g_mpa_recog_lines.array_reversal_code(p_line_num)                  := g_rec_lines.array_reversal_code(p_line_num)          ;
16400 --------------------------------------
16401 -- 4219869
16402 -- Business Flow Applied To Attributes
16403 --------------------------------------
16404 g_mpa_recog_lines.array_business_method_code(p_line_num)           := g_rec_lines.array_business_method_code(p_line_num)   ;
16405 g_mpa_recog_lines.array_business_class_code(p_line_num)            := g_rec_lines.array_business_class_code(p_line_num)    ;
16406 g_mpa_recog_lines.array_inherit_desc_flag(p_line_num)              := g_rec_lines.array_inherit_desc_flag(p_line_num)      ;
16407 g_mpa_recog_lines.array_bflow_application_id(p_line_num)           := g_rec_lines.array_bflow_application_id(p_line_num)   ;
16408 g_mpa_recog_lines.array_bflow_entity_code(p_line_num)              := g_rec_lines.array_bflow_entity_code(p_line_num)      ;
16409 g_mpa_recog_lines.array_bflow_source_id_num_1(p_line_num)          := g_rec_lines.array_bflow_source_id_num_1(p_line_num)  ;
16410 g_mpa_recog_lines.array_bflow_source_id_num_2(p_line_num)          := g_rec_lines.array_bflow_source_id_num_2(p_line_num)  ;
16411 g_mpa_recog_lines.array_bflow_source_id_num_3(p_line_num)          := g_rec_lines.array_bflow_source_id_num_3(p_line_num)  ;
16412 g_mpa_recog_lines.array_bflow_source_id_num_4(p_line_num)          := g_rec_lines.array_bflow_source_id_num_4(p_line_num)  ;
16413 g_mpa_recog_lines.array_bflow_source_id_char_1(p_line_num)         := g_rec_lines.array_bflow_source_id_char_1(p_line_num) ;
16414 g_mpa_recog_lines.array_bflow_source_id_char_2(p_line_num)         := g_rec_lines.array_bflow_source_id_char_2(p_line_num) ;
16415 g_mpa_recog_lines.array_bflow_source_id_char_3(p_line_num)         := g_rec_lines.array_bflow_source_id_char_3(p_line_num) ;
16416 g_mpa_recog_lines.array_bflow_source_id_char_4(p_line_num)         := g_rec_lines.array_bflow_source_id_char_4(p_line_num) ;
16417 g_mpa_recog_lines.array_bflow_distribution_type(p_line_num)        := g_rec_lines.array_bflow_distribution_type(p_line_num);
16418 g_mpa_recog_lines.array_bflow_dist_id_num_1(p_line_num)            := g_rec_lines.array_bflow_dist_id_num_1(p_line_num)    ;
16419 g_mpa_recog_lines.array_bflow_dist_id_num_2(p_line_num)            := g_rec_lines.array_bflow_dist_id_num_2(p_line_num)    ;
16420 g_mpa_recog_lines.array_bflow_dist_id_num_3(p_line_num)            := g_rec_lines.array_bflow_dist_id_num_3(p_line_num)    ;
16421 g_mpa_recog_lines.array_bflow_dist_id_num_4(p_line_num)            := g_rec_lines.array_bflow_dist_id_num_4(p_line_num)    ;
16422 g_mpa_recog_lines.array_bflow_dist_id_num_5(p_line_num)            := g_rec_lines.array_bflow_dist_id_num_5(p_line_num)    ;
16423 g_mpa_recog_lines.array_bflow_dist_id_char_1(p_line_num)           := g_rec_lines.array_bflow_dist_id_char_1(p_line_num)   ;
16424 g_mpa_recog_lines.array_bflow_dist_id_char_2(p_line_num)           := g_rec_lines.array_bflow_dist_id_char_2(p_line_num)   ;
16425 g_mpa_recog_lines.array_bflow_dist_id_char_3(p_line_num)           := g_rec_lines.array_bflow_dist_id_char_3(p_line_num)   ;
16426 g_mpa_recog_lines.array_bflow_dist_id_char_4(p_line_num)           := g_rec_lines.array_bflow_dist_id_char_4(p_line_num)   ;
16427 g_mpa_recog_lines.array_bflow_dist_id_char_5(p_line_num)           := g_rec_lines.array_bflow_dist_id_char_5(p_line_num)   ;
16428 g_mpa_recog_lines.array_override_acctd_amt_flag(p_line_num)        := g_rec_lines.array_override_acctd_amt_flag(p_line_num);
16429 g_mpa_recog_lines.array_bflow_applied_to_amt(p_line_num)           := g_rec_lines.array_bflow_applied_to_amt(p_line_num)   ;
16430 
16431 g_mpa_recog_lines.array_encumbrance_type_id(p_line_num)            := g_rec_lines.array_encumbrance_type_id(p_line_num)    ;
16432 g_mpa_recog_lines.array_gl_date(p_line_num)                        := g_rec_lines.array_gl_date(p_line_num)                ;
16433 
16434 ---------------------------------------
16435 --
16436 --Upgrade Attributes
16437 --
16438 ---------------------------------------
16439 
16440 g_mpa_recog_lines.array_actual_upg_option(p_line_num)              := g_rec_lines.array_actual_upg_option(p_line_num)      ;
16441 g_mpa_recog_lines.array_actual_upg_dr_ccid(p_line_num)             := g_rec_lines.array_actual_upg_dr_ccid(p_line_num)     ;
16442 g_mpa_recog_lines.array_actual_upg_cr_ccid(p_line_num)             := g_rec_lines.array_actual_upg_cr_ccid(p_line_num)     ;
16443 g_mpa_recog_lines.array_actual_upg_dr_ent_amt(p_line_num)          := g_rec_lines.array_actual_upg_dr_ent_amt(p_line_num)  ;
16444 g_mpa_recog_lines.array_actual_upg_cr_ent_amt(p_line_num)          := g_rec_lines.array_actual_upg_cr_ent_amt(p_line_num)  ;
16445 g_mpa_recog_lines.array_actual_upg_dr_ent_curr(p_line_num)         := g_rec_lines.array_actual_upg_dr_ent_curr(p_line_num) ;
16446 g_mpa_recog_lines.array_actual_upg_cr_ent_curr(p_line_num)         := g_rec_lines.array_actual_upg_cr_ent_curr(p_line_num) ;
16447 g_mpa_recog_lines.array_actual_upg_dr_ledger_amt(p_line_num)       := g_rec_lines.array_actual_upg_dr_ledger_amt(p_line_num);
16448 g_mpa_recog_lines.array_actual_upg_cr_ledger_amt(p_line_num)       := g_rec_lines.array_actual_upg_cr_ledger_amt(p_line_num);
16449 g_mpa_recog_lines.array_actual_upg_dr_acct_class(p_line_num)       := g_rec_lines.array_actual_upg_dr_acct_class(p_line_num);
16450 g_mpa_recog_lines.array_actual_upg_cr_acct_class(p_line_num)       := g_rec_lines.array_actual_upg_cr_acct_class(p_line_num);
16451 g_mpa_recog_lines.array_actual_upg_dr_xrate(p_line_num)            := g_rec_lines.array_actual_upg_dr_xrate(p_line_num)    ;
16452 g_mpa_recog_lines.array_actual_upg_dr_xrate_type(p_line_num)       := g_rec_lines.array_actual_upg_dr_xrate_type(p_line_num);
16453 g_mpa_recog_lines.array_actual_upg_dr_xdate(p_line_num)            := g_rec_lines.array_actual_upg_dr_xdate(p_line_num)    ;
16454 g_mpa_recog_lines.array_actual_upg_cr_xrate(p_line_num)            := g_rec_lines.array_actual_upg_cr_xrate(p_line_num)    ;
16455 g_mpa_recog_lines.array_actual_upg_cr_xrate_type(p_line_num)       := g_rec_lines.array_actual_upg_cr_xrate_type(p_line_num);
16456 g_mpa_recog_lines.array_actual_upg_cr_xdate(p_line_num)            := g_rec_lines.array_actual_upg_cr_xdate(p_line_num)    ;
16457 g_mpa_recog_lines.array_enc_upg_option(p_line_num)                 := g_rec_lines.array_enc_upg_option(p_line_num)         ;
16458 g_mpa_recog_lines.array_enc_upg_dr_ccid(p_line_num)                := g_rec_lines.array_enc_upg_dr_ccid(p_line_num)        ;
16459 g_mpa_recog_lines.array_enc_upg_cr_ccid(p_line_num)                := g_rec_lines.array_enc_upg_cr_ccid(p_line_num)        ;
16460 g_mpa_recog_lines.array_upg_dr_enc_type_id(p_line_num)             := g_rec_lines.array_upg_dr_enc_type_id(p_line_num)     ;
16461 g_mpa_recog_lines.array_upg_cr_enc_type_id(p_line_num)             := g_rec_lines.array_upg_cr_enc_type_id(p_line_num)     ;
16462 g_mpa_recog_lines.array_enc_upg_dr_ent_amt(p_line_num)             := g_rec_lines.array_enc_upg_dr_ent_amt(p_line_num)     ;
16463 g_mpa_recog_lines.array_enc_upg_cr_ent_amt(p_line_num)             := g_rec_lines.array_enc_upg_cr_ent_amt(p_line_num)     ;
16464 g_mpa_recog_lines.array_enc_upg_dr_ent_curr(p_line_num)            := g_rec_lines.array_enc_upg_dr_ent_curr(p_line_num)    ;
16465 g_mpa_recog_lines.array_enc_upg_cr_ent_curr(p_line_num)            := g_rec_lines.array_enc_upg_cr_ent_curr(p_line_num)    ;
16466 g_mpa_recog_lines.array_enc_upg_dr_ledger_amt(p_line_num)          := g_rec_lines.array_enc_upg_dr_ledger_amt(p_line_num)  ;
16467 g_mpa_recog_lines.array_enc_upg_cr_ledger_amt(p_line_num)          := g_rec_lines.array_enc_upg_cr_ledger_amt(p_line_num)  ;
16468 g_mpa_recog_lines.array_enc_upg_dr_acct_class(p_line_num)          := g_rec_lines.array_enc_upg_dr_acct_class(p_line_num)  ;
16469 g_mpa_recog_lines.array_enc_upg_cr_acct_class(p_line_num)          := g_rec_lines.array_enc_upg_cr_acct_class(p_line_num)  ;
16470  -- 5845547                            				     -- 5845547
16471 g_mpa_recog_lines.array_upg_party_id(p_line_num)                   := g_rec_lines.array_upg_party_id(p_line_num)           ;
16472 g_mpa_recog_lines.array_upg_party_site_id(p_line_num)              := g_rec_lines.array_upg_party_site_id(p_line_num)      ;
16473 g_mpa_recog_lines.array_upg_party_type_code(p_line_num)            := g_rec_lines.array_upg_party_type_code(p_line_num)    ;
16474  --
16475 ---------------------------------------
16476 --
16477 --Allocation Attributes
16478 --
16479 ---------------------------------------
16480 g_mpa_recog_lines.array_alloct_application_id(p_line_num)          := g_rec_lines.array_alloct_application_id(p_line_num)  ;
16481 g_mpa_recog_lines.array_alloct_entity_code(p_line_num)             := g_rec_lines.array_alloct_entity_code(p_line_num)     ;
16482 g_mpa_recog_lines.array_alloct_source_id_num_1(p_line_num)         := g_rec_lines.array_alloct_source_id_num_1(p_line_num) ;
16483 g_mpa_recog_lines.array_alloct_source_id_num_2(p_line_num)         := g_rec_lines.array_alloct_source_id_num_2(p_line_num) ;
16484 g_mpa_recog_lines.array_alloct_source_id_num_3(p_line_num)         := g_rec_lines.array_alloct_source_id_num_3(p_line_num) ;
16485 g_mpa_recog_lines.array_alloct_source_id_num_4(p_line_num)         := g_rec_lines.array_alloct_source_id_num_4(p_line_num) ;
16486 g_mpa_recog_lines.array_alloct_source_id_char_1(p_line_num)        := g_rec_lines.array_alloct_source_id_char_1(p_line_num);
16487 g_mpa_recog_lines.array_alloct_source_id_char_2(p_line_num)        := g_rec_lines.array_alloct_source_id_char_2(p_line_num);
16488 g_mpa_recog_lines.array_alloct_source_id_char_3(p_line_num)        := g_rec_lines.array_alloct_source_id_char_3(p_line_num);
16489 g_mpa_recog_lines.array_alloct_source_id_char_4(p_line_num)        := g_rec_lines.array_alloct_source_id_char_4(p_line_num);
16490 g_mpa_recog_lines.array_alloct_distribution_type(p_line_num)       := g_rec_lines.array_alloct_distribution_type(p_line_num);
16491 g_mpa_recog_lines.array_alloct_dist_id_num_1(p_line_num)           := g_rec_lines.array_alloct_dist_id_num_1(p_line_num)   ;
16492 g_mpa_recog_lines.array_alloct_dist_id_num_2(p_line_num)           := g_rec_lines.array_alloct_dist_id_num_2(p_line_num)   ;
16493 g_mpa_recog_lines.array_alloct_dist_id_num_3(p_line_num)           := g_rec_lines.array_alloct_dist_id_num_3(p_line_num)   ;
16494 g_mpa_recog_lines.array_alloct_dist_id_num_4(p_line_num)           := g_rec_lines.array_alloct_dist_id_num_4(p_line_num)   ;
16495 g_mpa_recog_lines.array_alloct_dist_id_num_5(p_line_num)           := g_rec_lines.array_alloct_dist_id_num_5(p_line_num)   ;
16496 g_mpa_recog_lines.array_alloct_dist_id_char_1(p_line_num)          := g_rec_lines.array_alloct_dist_id_char_1(p_line_num)  ;
16497 g_mpa_recog_lines.array_alloct_dist_id_char_2(p_line_num)          := g_rec_lines.array_alloct_dist_id_char_2(p_line_num)  ;
16498 g_mpa_recog_lines.array_alloct_dist_id_char_3(p_line_num)          := g_rec_lines.array_alloct_dist_id_char_3(p_line_num)  ;
16499 g_mpa_recog_lines.array_alloct_dist_id_char_4(p_line_num)          := g_rec_lines.array_alloct_dist_id_char_4(p_line_num)  ;
16500 g_mpa_recog_lines.array_alloct_dist_id_char_5(p_line_num)          := g_rec_lines.array_alloct_dist_id_char_5(p_line_num)  ;
16501 
16502 
16503 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16504       trace
16505            (p_msg      => 'END InsertMPARecogLineInfo'
16506            ,p_level    => C_LEVEL_PROCEDURE
16507            ,p_module   => l_log_module);
16508 END IF;
16509 
16510 EXCEPTION
16511 --
16512    WHEN xla_exceptions_pkg.application_exception THEN
16513       RAISE;
16514    WHEN OTHERS  THEN
16515       xla_exceptions_pkg.raise_message
16516                (p_location => 'xla_ae_lines_pkg.InsertMPARecogLineInfo');
16517   --
16518 END InsertMPARecogLineInfo;
16519 
16520 /*======================================================================+
16521 |                                                                       |
16522 | Public Procedure- SetNullMPALineInfo  7109881                         |
16523 |                                                                       |
16524 |                                                                       |
16525 +======================================================================*/
16526 PROCEDURE SetNullMPALineInfo
16527 IS
16528 	l_log_module         VARCHAR2(240);
16529 BEGIN
16530    IF g_log_enabled THEN
16531       l_log_module := C_DEFAULT_MODULE||'.SetNullMPALineInfo';
16532    END IF;
16533    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16534       trace
16535 	   (p_msg      => 'BEGIN of SetNullMPALineInfo'
16536 	   ,p_level    => C_LEVEL_PROCEDURE
16537 	   ,p_module   => l_log_module);
16538    END IF;
16539 
16540    XLA_AE_LINES_PKG.g_mpa_recog_lines := NULL ;
16541 
16542    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16543       trace
16544 	   (p_msg      => 'End of SetNullMPALineInfo'
16545 	   ,p_level    => C_LEVEL_PROCEDURE
16546 	   ,p_module   => l_log_module);
16547    END IF;
16548 EXCEPTION
16549 --
16550    WHEN xla_exceptions_pkg.application_exception THEN
16551       RAISE;
16552    WHEN OTHERS  THEN
16553       xla_exceptions_pkg.raise_message
16554 	       (p_location => 'xla_ae_lines_pkg.SetNullMPALineInfo');
16555   --
16556 END SetNullMPALineInfo;
16557 
16558 /*======================================================================+
16559 |                                                                       |
16560 | Public Procedure- 9954676                                             |
16561 |        Procedure to reset g_mpa_transaction_accounts  array which     |
16562 |        is used to hold COA mapping for the MPA Recognition Lines      |
16563 +======================================================================*/
16564 PROCEDURE SetNullMpaTrxAcctCopyInfo
16565 IS
16566   l_log_module         VARCHAR2(240);
16567 BEGIN
16568    IF g_log_enabled THEN
16569       l_log_module := C_DEFAULT_MODULE||'.SetNullMpaTrxAcctCopyInfo'  ;
16570    END IF;
16571    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16572       trace
16573      (p_msg      => 'BEGIN of SetNullMpaTrxAcctCopyInfo'
16574      ,p_level    => C_LEVEL_PROCEDURE
16575      ,p_module   => l_log_module);
16576    END IF;
16577 
16578    g_mpa_transaction_accounts := NULL ;
16579 
16580    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16581       trace
16582      (p_msg      => 'End of SetNullMpaTrxAcctCopyInfo'
16583      ,p_level    => C_LEVEL_PROCEDURE
16584      ,p_module   => l_log_module);
16585    END IF;
16586 EXCEPTION
16587 --
16588    WHEN xla_exceptions_pkg.application_exception THEN
16589       RAISE;
16590    WHEN OTHERS  THEN
16591       xla_exceptions_pkg.raise_message
16592          (p_location => 'xla_ae_lines_pkg.SetNullMpaTrxAcctCopyInfo');
16593   --
16594 END SetNullMpaTrxAcctCopyInfo;
16595 
16596 /*======================================================================+
16597 |                                                                       |
16598 | Public Procedure- 9954676                                             |
16599 |        Procedure to populate g_mpa_transaction_accounts with Mapping  |
16600 |        details of a Recognition Line from g_transaction_accounts      |
16601 +======================================================================*/
16602 PROCEDURE InsertMpaTrxAcctCopyInfo
16603 ( p_ae_header_id IN NUMBER ,
16604   p_g_lineNumber IN NUMBER
16605 )
16606 IS
16607   l_log_module         VARCHAR2(240);
16608   l_Idx                BINARY_INTEGER;
16609   l_loop_count         NUMBER := 0 ;
16610   l_insert_count       NUMBER := 0 ;
16611   l_temp_line_num      NUMBER := 0 ; --bug13023651
16612 
16613 BEGIN
16614    IF g_log_enabled THEN
16615       l_log_module := C_DEFAULT_MODULE||'.InsertMpaTrxAcctCopyInfo'  ;
16616    END IF;
16617    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16618       trace
16619      (p_msg      => 'BEGIN of InsertMpaTrxAcctCopyInfo'
16620      ,p_level    => C_LEVEL_PROCEDURE
16621      ,p_module   => l_log_module);
16622    END IF;
16623 
16624    l_temp_line_num := g_rec_lines.array_line_num(p_g_LineNumber) ; --bug13023651
16625 
16626    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16627       trace
16628      (p_msg      => 'pgLine: '|| p_g_LineNumber ||' L_Temp_Lin: '||l_temp_line_num
16629      ,p_level    => C_LEVEL_PROCEDURE
16630      ,p_module   => l_log_module);
16631    END IF;
16632 
16633    IF g_transaction_accounts.array_line_num.COUNT > 0 THEN
16634 
16635     FOR Jdx IN REVERSE g_transaction_accounts.array_line_num.FIRST .. g_transaction_accounts.array_line_num.LAST
16636     LOOP
16637         -- Loop until all the TOA rows are parsed through for the given P_AE_HEADER_ID and P_TEMP_LINE_NUM
16638 	l_loop_count := l_loop_count + 1;
16639         IF( g_transaction_accounts.array_ae_header_id(Jdx) = p_ae_header_id
16640             AND g_transaction_accounts.array_temp_line_num(Jdx) = l_temp_line_num -- changed from p_temp_line_num bug13023651
16641           )
16642         THEN
16643              l_Idx := NVL(g_mpa_transaction_accounts.array_ae_header_id.COUNT,0) + 1;
16644              g_mpa_transaction_accounts.array_line_num(l_Idx) := g_transaction_accounts.array_line_num(Jdx) ;
16645              g_mpa_transaction_accounts.array_ae_header_id(l_Idx) := g_transaction_accounts.array_ae_header_id(Jdx) ;
16646              g_mpa_transaction_accounts.array_temp_line_num(l_Idx) := g_transaction_accounts.array_temp_line_num(Jdx) ;
16647              g_mpa_transaction_accounts.array_code_combination_id(l_Idx) := g_transaction_accounts.array_code_combination_id(Jdx) ;
16648              g_mpa_transaction_accounts.array_segment(l_Idx) := g_transaction_accounts.array_segment(Jdx) ;
16649              g_mpa_transaction_accounts.array_from_segment_code(l_Idx) := g_transaction_accounts.array_from_segment_code(Jdx) ;
16650              g_mpa_transaction_accounts.array_to_segment_code(l_Idx) := g_transaction_accounts.array_to_segment_code(Jdx) ;
16651              g_mpa_transaction_accounts.array_processing_status_code(l_Idx) := g_transaction_accounts.array_processing_status_code(Jdx) ;
16652              g_mpa_transaction_accounts.array_side_code(l_Idx) := g_transaction_accounts.array_side_code(Jdx) ;
16653              l_insert_count  := l_insert_count + 1 ;
16654         END IF;
16655 
16656 	-- Exit the Loop when the ROW doesnt match the given combination.
16657         IF( g_transaction_accounts.array_ae_header_id(Jdx) <> p_ae_header_id
16658             OR g_transaction_accounts.array_temp_line_num(Jdx) <> l_temp_line_num -- changed from p_temp_line_num bug13023651
16659           )
16660         THEN
16661              EXIT;
16662         END IF;
16663 
16664     END LOOP;
16665    END IF;
16666 
16667    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16668       trace
16669       (p_msg      => 'Loop Count: '||l_loop_count ||' Insert Count: '||l_insert_count
16670       ,p_level    => C_LEVEL_PROCEDURE
16671       ,p_module   => l_log_module);
16672 
16673       trace
16674       (p_msg      => 'End of InsertMpaTrxAcctCopyInfo'
16675       ,p_level    => C_LEVEL_PROCEDURE
16676       ,p_module   => l_log_module);
16677    END IF;
16678 
16679 EXCEPTION
16680 --
16681    WHEN xla_exceptions_pkg.application_exception THEN
16682       RAISE;
16683    WHEN OTHERS  THEN
16684       xla_exceptions_pkg.raise_message
16685          (p_location => 'xla_ae_lines_pkg.InsertMpaTrxAcctCopyInfo');
16686   --
16687 END InsertMpaTrxAcctCopyInfo;
16688 
16689 /*======================================================================+
16690 |                                                                       |
16691 | Public Procedure- 9954676                                             |
16692 |        Procedure to populate g_transaction_accounts with Mapping      |
16693 |        details of a Recognition Line from g_mpa_transaction_accounts  |
16694 |        for the future periods.                                        |
16695 +======================================================================*/
16696 PROCEDURE CopyMpaTrxAcctCopyInfo
16697 ( p_orig_ae_header_id IN NUMBER ,
16698   p_orig_g_lineNumber IN NUMBER ,
16699   p_new_g_lineNumber  IN NUMBER
16700 )
16701 IS
16702   l_log_module         VARCHAR2(240);
16703   l_Idx                BINARY_INTEGER;
16704   l_orig_temp_line_num NUMBER :=0 ; --bug13023651
16705   l_new_temp_line_num  NUMBER :=0 ; --bug13023651
16706 
16707 BEGIN
16708    IF g_log_enabled THEN
16709       l_log_module := C_DEFAULT_MODULE||'.CopyMpaTrxAcctCopyInfo'  ;
16710    END IF;
16711    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16712       trace
16713      (p_msg      => 'BEGIN of CopyMpaTrxAcctCopyInfo'
16714      ,p_level    => C_LEVEL_PROCEDURE
16715      ,p_module   => l_log_module);
16716    END IF;
16717 
16718    l_orig_temp_line_num := g_mpa_recog_lines.array_line_num(p_orig_g_lineNumber); --bug13023651
16719    l_new_temp_line_num := g_rec_lines.array_line_num(p_new_g_lineNumber); --bug13023651
16720 
16721    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16722       trace
16723      (p_msg      => 'orig gLine: '|| p_orig_g_lineNumber || ' new_gLine:'|| p_new_g_lineNumber ||' L_Orig_Tem: '||l_orig_temp_line_num || ' L_New_Tem: '||l_new_temp_line_num
16724      ,p_level    => C_LEVEL_PROCEDURE
16725      ,p_module   => l_log_module);
16726    END IF;
16727 
16728    IF g_mpa_transaction_accounts.array_line_num.COUNT > 0 THEN
16729 
16730     FOR Jdx IN g_mpa_transaction_accounts.array_line_num.FIRST .. g_mpa_transaction_accounts.array_line_num.LAST
16731     LOOP
16732 
16733         IF( g_mpa_transaction_accounts.array_ae_header_id(Jdx) = p_orig_ae_header_id
16734             AND g_mpa_transaction_accounts.array_temp_line_num(Jdx) = l_orig_temp_line_num -- changed from p_orig_temp_line_num bug13023651
16735           )
16736         THEN
16737              l_Idx := NVL(g_transaction_accounts.array_ae_header_id.COUNT,0) + 1;
16738              g_transaction_accounts.array_line_num(l_Idx) := g_mpa_transaction_accounts.array_line_num(Jdx) ;
16739              g_transaction_accounts.array_ae_header_id(l_Idx) := g_mpa_transaction_accounts.array_ae_header_id(Jdx) ;
16740              g_transaction_accounts.array_temp_line_num(l_Idx) := l_new_temp_line_num; -- changed from p_new_temp_line_num bug13023651
16741              g_transaction_accounts.array_code_combination_id(l_Idx) := g_mpa_transaction_accounts.array_code_combination_id(Jdx) ;
16742              g_transaction_accounts.array_segment(l_Idx) := g_mpa_transaction_accounts.array_segment(Jdx) ;
16743              g_transaction_accounts.array_from_segment_code(l_Idx) := g_mpa_transaction_accounts.array_from_segment_code(Jdx) ;
16744              g_transaction_accounts.array_to_segment_code(l_Idx) := g_mpa_transaction_accounts.array_to_segment_code(Jdx) ;
16745              g_transaction_accounts.array_processing_status_code(l_Idx) := g_mpa_transaction_accounts.array_processing_status_code(Jdx) ;
16746              g_transaction_accounts.array_side_code(l_Idx) := g_mpa_transaction_accounts.array_side_code(Jdx) ;
16747 
16748         END IF;
16749 
16750     END LOOP;
16751    END IF;
16752 
16753    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16754       trace
16755      (p_msg      => 'End of CopyMpaTrxAcctCopyInfo l_Idx: ' || l_Idx
16756      ,p_level    => C_LEVEL_PROCEDURE
16757      ,p_module   => l_log_module);
16758    END IF;
16759 EXCEPTION
16760 --
16761    WHEN xla_exceptions_pkg.application_exception THEN
16762       RAISE;
16763    WHEN OTHERS  THEN
16764       xla_exceptions_pkg.raise_message
16765          (p_location => 'xla_ae_lines_pkg.CopyMpaTrxAcctCopyInfo');
16766   --
16767 END CopyMpaTrxAcctCopyInfo;
16768 
16769 --=============================================================================
16770 --
16771 --
16772 --
16773 --
16774 --
16775 --
16776 --
16777 --
16778 --
16779 --
16780 --
16781 --
16782 --
16783 --
16784 --
16785 --
16786 --
16787 --
16788 --
16789 --
16790 --
16791 --
16792 --=============================================================================
16793 --=============================================================================
16794 --          *********** Initialization routine **********
16795 --=============================================================================
16796 
16797 BEGIN
16798    g_application_id := xla_accounting_cache_pkg.GetValueNum('XLA_EVENT_APPL_ID');
16799 
16800    ----------------------------------------
16801    -- 4219869 Init Business Flow counts
16802    ----------------------------------------
16803    g_num_bflow_prior_entries := 0;
16804    g_num_bflow_same_entries  := 0;
16805 
16806    ----------------------------------------
16807    -- 5108415 Incomplete MPA
16808    ----------------------------------------
16809    g_incomplete_mpa_acc_LR := NULL;
16810    g_incomplete_mpa_acc_TR := NULL;
16811 
16812    g_log_level      := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
16813    g_log_enabled    := fnd_log.test
16814                           (log_level  => g_log_level
16815                           ,module     => C_DEFAULT_MODULE);
16816 
16817    IF NOT g_log_enabled  THEN
16818       g_log_level := C_LEVEL_LOG_DISABLED;
16819    END IF;
16820 
16821 END xla_ae_lines_pkg;