DBA Data[Home] [Help]

PACKAGE BODY: APPS.JG_CREATE_JOURNALS_PKG

Source


1 PACKAGE BODY JG_CREATE_JOURNALS_PKG AS
2 /* $Header: jgzztalb.pls 120.2 2004/02/19 14:49:51 fholst ship $ */
3 
4 /* ---------------------------------------------------------------------
5 |  PRIVATE PROCEDURE                                                    |
6 |       zero_fill_segments						|
7 |  DESCRIPTION								|
8 |  	Every Accounting Flexfield segment other than the natural       |
9 |       account and the balancing segment is set to the longest valid   |
10 |       zero string 		  	     	    			|
11 |  CALLED BY                                                            |
12 |       create_journal_allocations					|
13  --------------------------------------------------------------------- */
14 PROCEDURE zero_fill_segments(p_key_segment IN OUT NOCOPY KEY_SEGMENTS_TABLE) IS
15 BEGIN
16   JG_UTILITY_PKG.log( '> JG_CREATE_JOURNALS_PKG.Zero_Fill_Segments');
17   FOR j IN 1..JG_JOURNAL_ALLOCATIONS_PKG.G_num_of_segments LOOP
18     JG_UTILITY_PKG.debug( 'segmt posn = '||to_char(j));
19     JG_UTILITY_PKG.debug( 'ZF: segmt col name = '||JG_JOURNAL_ALLOCATIONS_PKG.G_zero_fill_arr(j).segment_col_name);
20     JG_UTILITY_PKG.debug( 'ZF: segmt zero string = '||JG_JOURNAL_ALLOCATIONS_PKG.G_zero_fill_arr(j).zero_string);
21     IF (JG_JOURNAL_ALLOCATIONS_PKG.G_zero_fill_arr(j).segment_col_name IS NOT NULL) THEN
22       p_key_segment(TO_NUMBER(SUBSTR(JG_JOURNAL_ALLOCATIONS_PKG.G_zero_fill_arr(j).segment_col_name, 8)))
23 	      	      := JG_JOURNAL_ALLOCATIONS_PKG.G_zero_fill_arr(j).zero_string;
24     END IF;
25   END LOOP;
26   JG_UTILITY_PKG.log( '> JG_CREATE_JOURNALS_PKG.Zero_Fill_Segments');
27 END zero_fill_segments;
28 
29 /* ---------------------------------------------------------------------
30 |  PRIVATE FUNCTION                                                     |
31 |       insert_gl_interface						|
32 |  DESCRIPTION								|
33 |  	Insert analytical account journal lines into the GL_INTERFACE	|
34 |	table. 			  		  			|
35 |  CALLED BY                                                            |
36 |       Create_Journal_Allocations					|
37 |  RETURNS								|
38 |  	TRUE if row successfully created.			        |
39  --------------------------------------------------------------------- */
40 FUNCTION insert_gl_interface(	lp_entered_dr            IN NUMBER,
41 				lp_entered_cr            IN NUMBER,
42 				lp_accounted_dr          IN NUMBER,
43 				lp_accounted_cr          IN NUMBER,
44 				lp_offset_group_bool	 IN BOOLEAN) RETURN BOOLEAN IS
45 BEGIN
46   JG_UTILITY_PKG.log('> JG_CREATE_JOURNALS_PKG.insert_gl_interface');
47 
48 IF NOT lp_offset_group_bool THEN
49 
50   INSERT INTO gl_interface (	STATUS,
51 				LEDGER_ID,  -- GC Ledger Architecture change
52 				ACCOUNTING_DATE,
53 				CURRENCY_CODE,
54 				USER_CURRENCY_CONVERSION_TYPE,
55 				CURRENCY_CONVERSION_DATE,
56 				CURRENCY_CONVERSION_RATE,
57 				DATE_CREATED,
58 				CREATED_BY,
59 				ACTUAL_FLAG,
60 				USER_JE_CATEGORY_NAME,
61 				USER_JE_SOURCE_NAME,
62 				ENCUMBRANCE_TYPE_ID,
63 				BUDGET_VERSION_ID,
64 				SEGMENT1,
65 				SEGMENT2,
66 				SEGMENT3,
67 				SEGMENT4,
68 				SEGMENT5,
69 				SEGMENT6,
70 				SEGMENT7,
71 				SEGMENT8,
72 				SEGMENT9,
73 				SEGMENT10,
74 				SEGMENT11,
75 				SEGMENT12,
76 				SEGMENT13,
77 				SEGMENT14,
78 				SEGMENT15,
79 				SEGMENT16,
80 				SEGMENT17,
81 				SEGMENT18,
82 				SEGMENT19,
83 				SEGMENT20,
84 				SEGMENT21,
85 				SEGMENT22,
86 				SEGMENT23,
87 				SEGMENT24,
88 				SEGMENT25,
89 				SEGMENT26,
90 				SEGMENT27,
91 				SEGMENT28,
92 				SEGMENT29,
93 				SEGMENT30,
94 				ENTERED_DR,
95 				ENTERED_CR,
96 				ACCOUNTED_DR,
97 				ACCOUNTED_CR,
98 				REFERENCE1, 	-- Batch Name
99 				REFERENCE2,	-- Batch Description
100 				REFERENCE4, 	-- Header Name
101 				REFERENCE5,	-- Header Description
102 				REFERENCE6,	-- Header Reference
103 				REFERENCE10, 	-- Line Description
104 				REFERENCE21, 	-- GL_JE_LINES.reference_1
105 				REFERENCE22, 	-- GL_JE_LINES.reference_2
106 				STAT_AMOUNT,
107 				SUBLEDGER_DOC_SEQUENCE_ID,
108 				SUBLEDGER_DOC_SEQUENCE_VALUE,
109 				ATTRIBUTE1,
110 				ATTRIBUTE2,
111 				ATTRIBUTE3,
112 				ATTRIBUTE4,
113 				ATTRIBUTE5,
114 				ATTRIBUTE6,
115 				ATTRIBUTE7,
116 				ATTRIBUTE8,
117 				ATTRIBUTE9,
118 				ATTRIBUTE10,
119 				ATTRIBUTE11,
120 				ATTRIBUTE12,
121 				ATTRIBUTE13,
122 				ATTRIBUTE14,
123 				ATTRIBUTE15,
124 				ATTRIBUTE16,
125 				ATTRIBUTE17,
126 				ATTRIBUTE18,
127 				ATTRIBUTE19,
128 				ATTRIBUTE20,
129 				CONTEXT,
130 				CONTEXT2,
131 				INVOICE_DATE,
132 				TAX_CODE,
133 				INVOICE_IDENTIFIER,
134 				INVOICE_AMOUNT,
135 				CONTEXT3,
136 				USSGL_TRANSACTION_CODE,
137 				JGZZ_RECON_REF,
138 				PERIOD_NAME)
139   VALUES
140 ( 				'NEW',
141 				JG_JOURNAL_ALLOCATIONS_PKG.G_destn_set_of_books_id,
142 				JG_JOURNAL_ALLOCATIONS_PKG.G_GL_end_date,
143 				DECODE(JG_JOURNAL_ALLOCATIONS_PKG.G_amount_type,'E',
144                                      JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.currency_code,
145 										'A',
146 					    JG_JOURNAL_ALLOCATIONS_PKG.G_functional_currency),
147 				DECODE(JG_JOURNAL_ALLOCATIONS_PKG.G_amount_type,'E',
148                                      JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.currency_conversion_type,
149 										'A',
150                                      DECODE(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.currency_code,
151 					    JG_JOURNAL_ALLOCATIONS_PKG.G_functional_currency,
152 				       JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.currency_conversion_type,
153 				       JG_JOURNAL_ALLOCATIONS_PKG.G_translated_user)),
154 				DECODE(JG_JOURNAL_ALLOCATIONS_PKG.G_amount_type,'E',
155                                      JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.currency_conversion_date,
156 										'A',
157                                      DECODE(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.currency_code,
158 					    JG_JOURNAL_ALLOCATIONS_PKG.G_functional_currency,
159 				       JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.currency_conversion_date,
160 				       sysdate)),
161 				DECODE(JG_JOURNAL_ALLOCATIONS_PKG.G_amount_type,'E',
162                                      JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.currency_conversion_rate,
163 										'A',
164                                      DECODE(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.currency_code,
165 					    JG_JOURNAL_ALLOCATIONS_PKG.G_functional_currency,
166 				       JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.currency_conversion_rate,
167 				       1)),
168 				SYSDATE,
169 				JG_JOURNAL_ALLOCATIONS_PKG.G_user_id,
170 				JG_JOURNAL_ALLOCATIONS_PKG.G_balance_type,
171 				JG_JOURNAL_ALLOCATIONS_PKG.G_user_je_category_name,
172 				JG_JOURNAL_ALLOCATIONS_PKG.G_user_je_source_name,
173 				DECODE(JG_JOURNAL_ALLOCATIONS_PKG.G_balance_type,'E',
174 						JG_JOURNAL_ALLOCATIONS_PKG.G_balance_type_id),
175 				DECODE(JG_JOURNAL_ALLOCATIONS_PKG.G_balance_type,'B',
176 						JG_JOURNAL_ALLOCATIONS_PKG.G_balance_type_id),
177 				JG_CREATE_JOURNALS_PKG.G_key_segment( 1 ),
178 				JG_CREATE_JOURNALS_PKG.G_key_segment( 2 ),
179 				JG_CREATE_JOURNALS_PKG.G_key_segment( 3 ),
180 				JG_CREATE_JOURNALS_PKG.G_key_segment( 4 ),
181 				JG_CREATE_JOURNALS_PKG.G_key_segment( 5 ),
182 				JG_CREATE_JOURNALS_PKG.G_key_segment( 6 ),
183 				JG_CREATE_JOURNALS_PKG.G_key_segment( 7 ),
184 				JG_CREATE_JOURNALS_PKG.G_key_segment( 8 ),
185 				JG_CREATE_JOURNALS_PKG.G_key_segment( 9 ),
186 				JG_CREATE_JOURNALS_PKG.G_key_segment( 10 ),
187 				JG_CREATE_JOURNALS_PKG.G_key_segment( 11 ),
188 				JG_CREATE_JOURNALS_PKG.G_key_segment( 12 ),
189 				JG_CREATE_JOURNALS_PKG.G_key_segment( 13 ),
190 				JG_CREATE_JOURNALS_PKG.G_key_segment( 14 ),
191 				JG_CREATE_JOURNALS_PKG.G_key_segment( 15 ),
192 				JG_CREATE_JOURNALS_PKG.G_key_segment( 16 ),
193 				JG_CREATE_JOURNALS_PKG.G_key_segment( 17 ),
194 				JG_CREATE_JOURNALS_PKG.G_key_segment( 18 ),
195 				JG_CREATE_JOURNALS_PKG.G_key_segment( 19 ),
196 				JG_CREATE_JOURNALS_PKG.G_key_segment( 20 ),
197 				JG_CREATE_JOURNALS_PKG.G_key_segment( 21 ),
198 				JG_CREATE_JOURNALS_PKG.G_key_segment( 22 ),
199 				JG_CREATE_JOURNALS_PKG.G_key_segment( 23 ),
200 				JG_CREATE_JOURNALS_PKG.G_key_segment( 24 ),
201 				JG_CREATE_JOURNALS_PKG.G_key_segment( 25 ),
202 				JG_CREATE_JOURNALS_PKG.G_key_segment( 26 ),
203 				JG_CREATE_JOURNALS_PKG.G_key_segment( 27 ),
204 				JG_CREATE_JOURNALS_PKG.G_key_segment( 28 ),
205 				JG_CREATE_JOURNALS_PKG.G_key_segment( 29 ),
206 				JG_CREATE_JOURNALS_PKG.G_key_segment( 30 ),
207 				lp_entered_dr,
208 				lp_entered_cr,
209 				lp_accounted_dr,
210 				lp_accounted_cr,
211 			        JG_CREATE_JOURNALS_PKG.G_Batch_Name, -- Reference1
212 			        JG_CREATE_JOURNALS_PKG.G_Batch_Name, -- Reference2
213 	  		        JG_CREATE_JOURNALS_PKG.G_Journal_Name, -- Reference4
214 			        JG_CREATE_JOURNALS_PKG.G_Journal_Description, -- Reference5
215 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.external_reference,-- Reference6
216 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.je_header_name ||
217 				  DECODE(JG_JOURNAL_ALLOCATIONS_PKG.G_balance_type, 'A',
218 				  '/' ||JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.je_doc_sequence_name || '/' ||
219 				  JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.je_doc_sequence_value || '/' ||
220 				  JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.je_line_num, NULL), -- Reference 10
221 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.je_header_id,
222 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.je_line_num,
223 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.stat_amount,
224 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.subledger_doc_sequence_id,
225 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.subledger_doc_sequence_value,
226 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.attribute1,
227 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.attribute2,
228 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.attribute3,
229 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.attribute4,
230 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.attribute5,
231 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.attribute6,
232 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.attribute7,
233 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.attribute8,
234 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.attribute9,
235 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.attribute10,
236 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.attribute11,
237 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.attribute12,
238 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.attribute13,
239 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.attribute14,
240 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.attribute15,
241 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.attribute16,
242 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.attribute17,
243 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.attribute18,
244 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.attribute19,
245 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.attribute20,
246 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.context,
247 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.context2,
248 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.invoice_date,
249 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.tax_code,
250 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.invoice_identifier,
251 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.invoice_amount,
252 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.context3,
253 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.ussgl_transaction_code,
254 				JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.jgzz_recon_ref,
255 				DECODE(JG_JOURNAL_ALLOCATIONS_PKG.G_balance_type, 'B',
256 				  JG_JOURNAL_ALLOCATIONS_PKG.G_destn_period_name, NULL));
257 
258 ELSE -- Inserting line for an offset group total
259 
260 
261   INSERT INTO gl_interface (	STATUS,
262 				LEDGER_ID, -- GC Ledger Architecture change
263 				ACCOUNTING_DATE,
264 				CURRENCY_CODE,
265 				USER_CURRENCY_CONVERSION_TYPE,
266 				CURRENCY_CONVERSION_DATE,
267 				CURRENCY_CONVERSION_RATE,
268 				DATE_CREATED,
269 				CREATED_BY,
270 				ACTUAL_FLAG,
271 				USER_JE_CATEGORY_NAME,
272 				USER_JE_SOURCE_NAME,
273 				ENCUMBRANCE_TYPE_ID,
274 				BUDGET_VERSION_ID,
275 				SEGMENT1,
276 				SEGMENT2,
277 				SEGMENT3,
278 				SEGMENT4,
279 				SEGMENT5,
280 				SEGMENT6,
281 				SEGMENT7,
282 				SEGMENT8,
283 				SEGMENT9,
284 				SEGMENT10,
285 				SEGMENT11,
286 				SEGMENT12,
287 				SEGMENT13,
288 				SEGMENT14,
289 				SEGMENT15,
290 				SEGMENT16,
291 				SEGMENT17,
292 				SEGMENT18,
293 				SEGMENT19,
294 				SEGMENT20,
295 				SEGMENT21,
296 				SEGMENT22,
297 				SEGMENT23,
298 				SEGMENT24,
299 				SEGMENT25,
300 				SEGMENT26,
301 				SEGMENT27,
302 				SEGMENT28,
303 				SEGMENT29,
304 				SEGMENT30,
305 				ENTERED_DR,
306 				ENTERED_CR,
307 				ACCOUNTED_DR,
308 				ACCOUNTED_CR,
309 				REFERENCE1, 	-- Batch Name
310 				REFERENCE2,	-- Batch Description
311 				REFERENCE4, 	-- Header Name
312 				REFERENCE5,	-- Header Description
313 				REFERENCE6,	-- Header Reference
314 				REFERENCE10, 	-- Line Description
315 				REFERENCE21, 	-- GL_JE_LINES.reference_1
316 				REFERENCE22, 	-- GL_JE_LINES.reference_2
317 				STAT_AMOUNT,
318 				SUBLEDGER_DOC_SEQUENCE_ID,
319 				SUBLEDGER_DOC_SEQUENCE_VALUE,
320 				ATTRIBUTE1,
321 				ATTRIBUTE2,
322 				ATTRIBUTE3,
323 				ATTRIBUTE4,
324 				ATTRIBUTE5,
325 				ATTRIBUTE6,
326 				ATTRIBUTE7,
327 				ATTRIBUTE8,
328 				ATTRIBUTE9,
329 				ATTRIBUTE10,
330 				ATTRIBUTE11,
331 				ATTRIBUTE12,
332 				ATTRIBUTE13,
333 				ATTRIBUTE14,
334 				ATTRIBUTE15,
335 				ATTRIBUTE16,
336 				ATTRIBUTE17,
337 				ATTRIBUTE18,
338 				ATTRIBUTE19,
339 				ATTRIBUTE20,
340 				CONTEXT,
341 				CONTEXT2,
342 				INVOICE_DATE,
343 				TAX_CODE,
344 				INVOICE_IDENTIFIER,
345 				INVOICE_AMOUNT,
346 				CONTEXT3,
347 				USSGL_TRANSACTION_CODE,
348 				JGZZ_RECON_REF,
349 				PERIOD_NAME)
350   VALUES
351 ( 				'NEW',
352 				JG_JOURNAL_ALLOCATIONS_PKG.G_destn_set_of_books_id,
353 				JG_JOURNAL_ALLOCATIONS_PKG.G_GL_end_date,
354 				DECODE(JG_JOURNAL_ALLOCATIONS_PKG.G_amount_type,'E',
355                                      JG_ALLOCATE_JOURNALS_PKG.G_last_journal_qry_rec.l_je_lines_v_rec.currency_code,
356 										'A',
357 					    JG_JOURNAL_ALLOCATIONS_PKG.G_functional_currency),
358 				DECODE(JG_JOURNAL_ALLOCATIONS_PKG.G_amount_type,'E',
359                                      JG_ALLOCATE_JOURNALS_PKG.G_last_journal_qry_rec.l_je_lines_v_rec.currency_conversion_type,
360 										'A',
361                                      DECODE(JG_ALLOCATE_JOURNALS_PKG.G_last_journal_qry_rec.l_je_lines_v_rec.currency_code,
362 					    JG_JOURNAL_ALLOCATIONS_PKG.G_functional_currency,
363 				       JG_ALLOCATE_JOURNALS_PKG.G_last_journal_qry_rec.l_je_lines_v_rec.currency_conversion_type,
364 				       JG_JOURNAL_ALLOCATIONS_PKG.G_translated_user)),
365 				DECODE(JG_JOURNAL_ALLOCATIONS_PKG.G_amount_type,'E',
366                                      JG_ALLOCATE_JOURNALS_PKG.G_last_journal_qry_rec.l_je_lines_v_rec.currency_conversion_date,
367 										'A',
368                                      DECODE(JG_ALLOCATE_JOURNALS_PKG.G_last_journal_qry_rec.l_je_lines_v_rec.currency_code,
369 					    JG_JOURNAL_ALLOCATIONS_PKG.G_functional_currency,
370 				       JG_ALLOCATE_JOURNALS_PKG.G_last_journal_qry_rec.l_je_lines_v_rec.currency_conversion_date,
371 				       SYSDATE)),
372 				DECODE(JG_JOURNAL_ALLOCATIONS_PKG.G_amount_type,'E',
373                                      JG_ALLOCATE_JOURNALS_PKG.G_last_journal_qry_rec.l_je_lines_v_rec.currency_conversion_rate,
374 										'A',
375                                      DECODE(JG_ALLOCATE_JOURNALS_PKG.G_last_journal_qry_rec.l_je_lines_v_rec.currency_code,
376 					    JG_JOURNAL_ALLOCATIONS_PKG.G_functional_currency,
377 				       JG_ALLOCATE_JOURNALS_PKG.G_last_journal_qry_rec.l_je_lines_v_rec.currency_conversion_rate,
378 				       1)),
379 				SYSDATE,
380 				JG_JOURNAL_ALLOCATIONS_PKG.G_user_id,
381 				JG_JOURNAL_ALLOCATIONS_PKG.G_balance_type,
382 				JG_JOURNAL_ALLOCATIONS_PKG.G_user_je_category_name,
383 				JG_JOURNAL_ALLOCATIONS_PKG.G_user_je_source_name,
384 				DECODE(JG_JOURNAL_ALLOCATIONS_PKG.G_balance_type,'E',
385 						JG_JOURNAL_ALLOCATIONS_PKG.G_balance_type_id),
386 				DECODE(JG_JOURNAL_ALLOCATIONS_PKG.G_balance_type,'B',
387 						JG_JOURNAL_ALLOCATIONS_PKG.G_balance_type_id),
388 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 1 ),
389 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 2 ),
390 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 3 ),
391 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 4 ),
392 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 5 ),
393 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 6 ),
394 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 7 ),
395 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 8 ),
396 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 9 ),
397 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 10 ),
398 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 11 ),
399 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 12 ),
400 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 13 ),
401 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 14 ),
402 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 15 ),
403 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 16 ),
404 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 17 ),
405 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 18 ),
406 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 19 ),
407 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 20 ),
408 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 21 ),
409 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 22 ),
410 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 23 ),
411 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 24 ),
412 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 25 ),
413 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 26 ),
414 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 27 ),
415 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 28 ),
416 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 29 ),
417 				JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment( 30 ),
418 				lp_entered_dr,
419 				lp_entered_cr,
420 				lp_accounted_dr,
421 				lp_accounted_cr,
422 			        JG_CREATE_JOURNALS_PKG.G_Batch_Name, -- Reference1
423 			        JG_CREATE_JOURNALS_PKG.G_Batch_Name, -- Reference2
424 	  		        JG_CREATE_JOURNALS_PKG.G_Journal_Name, -- Reference4
425 			        JG_CREATE_JOURNALS_PKG.G_Journal_Description, -- Reference5
426 				NULL,-- Reference6
427 				NULL, -- Reference 10
428 				NULL,
429 				NULL,
430 				NULL,
431 				NULL,
432 				NULL,
433 				NULL,
434 				NULL,
435 				NULL,
436 				NULL,
437 				NULL,
438 				NULL,
439 				NULL,
440 				NULL,
441 				NULL,
442 				NULL,
443 				NULL,
444 				NULL,
445 				NULL,
446 				NULL,
447 				NULL,
448 				NULL,
449 				NULL,
450 				NULL,
451 				NULL,
452 				NULL,
453 				NULL,
454 				NULL,
455 				NULL,
456 				NULL,
457 				NULL,
458 				NULL,
459 				NULL,
460 				NULL,
461 				NULL,
462 				DECODE(JG_JOURNAL_ALLOCATIONS_PKG.G_balance_type, 'B',
463 				  JG_JOURNAL_ALLOCATIONS_PKG.G_destn_period_name, NULL));
464 
465 END IF;
466 
467   JG_UTILITY_PKG.log('< JG_CREATE_JOURNALS_PKG.insert_gl_interface');
468   RETURN TRUE;
469 EXCEPTION
470   WHEN OTHERS THEN
471     JG_UTILITY_PKG.log('< JG_CREATE_JOURNALS_PKG.insert_gl_interface');
472     JG_UTILITY_PKG.log(sqlerrm);
473     RETURN FALSE;
474 END insert_gl_interface;
475 
476 /* ---------------------------------------------------------------------
477 |  PUBLIC PROCEDURE                                                     |
478 |       Create_Offset_For_Acct_Range				        |
479 |  DESCRIPTION								|
480 |  	Creates an offset line in GL_Interface for the account range    |
481 |       total.	   	       	  	       	       	       		|
482 |  CALLED BY                                                            |
483 |       Create_Journal_Allocations					|
484  --------------------------------------------------------------------- */
485 PROCEDURE create_offset_for_acct_range IS
486   l_net_total_accted_offset_amt	 NUMBER := 0;
487   l_net_dr_accted_offset_total 	 NUMBER := 0;
488   l_net_cr_accted_offset_total 	 NUMBER := 0;
489   l_net_total_entered_offset_amt NUMBER := 0;
490   l_net_dr_entered_offset_total  NUMBER := 0;
491   l_net_cr_entered_offset_total  NUMBER := 0;
492   l_range_offset_remark          VARCHAR2(240) := NULL;
493 BEGIN
494   JG_UTILITY_PKG.log('> JG_CREATE_JOURNALS_PKG.create_offset_for_acct_range');
495   --
496   -- Need to zero-fill segments for offset group insert other than the balancing segment and natural account
497   -- Use separate array to store zeros as Zero-Fill method may not have been chosen for journal allocation.
498   --
499   JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment := JG_CREATE_JOURNALS_PKG.G_key_segment;
500   JG_CREATE_JOURNALS_PKG.zero_fill_segments(JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment);
501   JG_CREATE_JOURNALS_PKG.G_offset_grp_key_segment(JG_JOURNAL_ALLOCATIONS_PKG.G_acct_key_element) :=
502  	                    JG_ALLOCATE_JOURNALS_PKG.G_last_journal_qry_rec.offset_account;
503   --
504   -- Calculate net totals
505   --
506   l_net_total_accted_offset_amt := NVL(JG_CREATE_JOURNALS_PKG.G_total_offset_accted_cr_amt, 0) -
507 			           NVL(JG_CREATE_JOURNALS_PKG.G_total_offset_accted_dr_amt, 0);
508   l_net_total_entered_offset_amt := NVL(JG_CREATE_JOURNALS_PKG.G_total_offset_entered_cr_amt, 0) -
509 			           NVL(JG_CREATE_JOURNALS_PKG.G_total_offset_entered_dr_amt, 0);
510 
511   -- Don't create offset line if net total is zero
512   IF l_net_total_accted_offset_amt <> 0 THEN
513 
514      --
515      -- Calculate credit and debit amounts
516      --
517      IF SIGN(l_net_total_accted_offset_amt) = '-1' THEN
518         l_net_dr_accted_offset_total  := ABS(l_net_total_accted_offset_amt);
519         l_net_cr_accted_offset_total := NULL;
520         IF JG_JOURNAL_ALLOCATIONS_PKG.G_amount_type = 'E' THEN
521            l_net_dr_entered_offset_total  := ABS(l_net_total_entered_offset_amt);
522            l_net_cr_entered_offset_total := NULL;
523         ELSE
524            l_net_dr_entered_offset_total  := ABS(l_net_total_accted_offset_amt);
525            l_net_cr_entered_offset_total := NULL;
526         END IF;
527      ELSE
528         l_net_dr_accted_offset_total  := NULL;
529         l_net_cr_accted_offset_total := ABS(l_net_total_accted_offset_amt);
530         IF JG_JOURNAL_ALLOCATIONS_PKG.G_amount_type = 'E' THEN
531           l_net_dr_entered_offset_total  := NULL;
532           l_net_cr_entered_offset_total := ABS(l_net_total_entered_offset_amt);
533         ELSE
534           l_net_dr_entered_offset_total  := NULL;
535           l_net_cr_entered_offset_total := ABS(l_net_total_accted_offset_amt);
536         END IF;
537      END IF;
538 
539      IF (JG_JOURNAL_ALLOCATIONS_PKG.G_validate_only = 'N') THEN
540        --
541        -- Insert for offset account (one line that is the net of the credits and debits)
542        --
543        IF NOT JG_CREATE_JOURNALS_PKG.insert_gl_interface(l_net_dr_entered_offset_total,
544        	      	  	 	      	   	         l_net_cr_entered_offset_total,
545 						         l_net_dr_accted_offset_total,
546 				  		         l_net_cr_accted_offset_total,
547 						         TRUE) THEN
548           FND_MESSAGE.SET_NAME(JG_JOURNAL_ALLOCATIONS_PKG.G_JG_appln_short_name , 'JG_ZZ_GL_INTERFACE_INSERT');
549           JG_CREATE_JOURNALS_PKG.write_error_to_output;
550           RAISE APP_EXCEPTION.application_exception;
551        END IF;
552      END IF;
553      --
554      -- populate array for reporting allocated lines at end of program
555      -- for offset account: one line for the net credits/debits total
556      --
557      -- increment array counter
558      JG_CREATE_JOURNALS_PKG.i := JG_CREATE_JOURNALS_PKG.i + 1;
559 
560      JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).je_batch_name  := 'OFFSET FOR ACCOUNT RANGE';
561      JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).je_header_name := NULL;
562      JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).je_line_num    := NULL;
563      --
564      -- Use the code combination id of the last row to build the output accounting flexfield of the offset line
565      --
566      JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).code_combination_id
567 				:= JG_ALLOCATE_JOURNALS_PKG.G_last_journal_qry_rec.l_je_lines_v_rec.code_combination_id;
568      JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).cc_range_id
569 				:= JG_ALLOCATE_JOURNALS_PKG.G_last_journal_qry_rec.cc_range_id;
570      FND_MESSAGE.SET_NAME (JG_JOURNAL_ALLOCATIONS_PKG.G_JG_appln_short_name ,'JG_ZZ_JGZZTAJA_RANGE_OFFSET');
571      l_range_offset_remark := substr(FND_MESSAGE.GET,1,240);
572      JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).remarks := l_range_offset_remark;
573      JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).accounted_cr   := NULL;
574      JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).accounted_dr   := NULL;
575      JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).destn_account_number :=
576   				JG_ALLOCATE_JOURNALS_PKG.G_last_journal_qry_rec.offset_account;
577      JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).destn_accted_cr := l_net_cr_accted_offset_total;
578      JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).destn_accted_dr := l_net_dr_accted_offset_total;
579      --
580      -- Cumulative totals for report output (allocated accts)
581      --
582      JG_CREATE_JOURNALS_PKG.G_total_alloc_accted_cr_amt
583 				:= JG_CREATE_JOURNALS_PKG.G_total_alloc_accted_cr_amt + NVL(l_net_cr_accted_offset_total, 0);
584      JG_CREATE_JOURNALS_PKG.G_total_alloc_accted_dr_amt
585 				:= JG_CREATE_JOURNALS_PKG.G_total_alloc_accted_dr_amt + NVL(l_net_dr_accted_offset_total, 0);
586 
587   END IF;  -- End of net 0 check
588 
589   --
590   -- Reinitialize offset totals
591   --
592   JG_CREATE_JOURNALS_PKG.G_total_offset_accted_cr_amt := 0;
593   JG_CREATE_JOURNALS_PKG.G_total_offset_accted_dr_amt := 0;
594   JG_CREATE_JOURNALS_PKG.G_total_offset_entered_cr_amt := 0;
595   JG_CREATE_JOURNALS_PKG.G_total_offset_entered_dr_amt := 0;
596   JG_UTILITY_PKG.log('< JG_CREATE_JOURNALS_PKG.create_offset_for_acct_range');
597 END create_offset_for_acct_range;
598 
599 /* ---------------------------------------------------------------------
600 |  PUBLIC PROCEDURE                                                     |
601 |       Write_Error_to_Output						|
602 |  DESCRIPTION								|
603 |  	Write Error Line to the Output File; Also used for outputting 	|
604 |       unallocated fiscal journals    	     	       	   		|
605 |  CALLED BY                                                            |
606 |       Create_Journal_Allocations					|
607  --------------------------------------------------------------------- */
608 PROCEDURE write_error_to_output IS
609   l_acct_segments	VARCHAR2(2000);
610   l_error_message	VARCHAR2(2000) := NULL;
611 BEGIN
612   JG_UTILITY_PKG.log( '> JG_CREATE_JOURNALS_PKG.write_error_to_output');
613   --
614   -- Construct accounting flexfield segments string
615   --
616   l_acct_segments := fnd_flex_ext.get_segs(JG_JOURNAL_ALLOCATIONS_PKG.G_GL_appln_short_name,
617 					   JG_JOURNAL_ALLOCATIONS_PKG.G_GL_acct_flex_code,
618 					   JG_JOURNAL_ALLOCATIONS_PKG.G_chart_of_accounts_id,
619 					   JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.code_combination_id);
620 
621   JG_UTILITY_PKG.debug('acct string = '||l_acct_segments);
622 
623   --
624   --  Get the latest message from the stack for error reporting
625   --
626   IF JG_JOURNAL_ALLOCATIONS_PKG.G_unalloc_request_id IS NULL THEN  -- Error Reporting
627      l_error_message := FND_MESSAGE.GET;
628      JG_JOURNAL_ALLOCATIONS_PKG.G_errbuf := l_error_message;
629      JG_UTILITY_PKG.out(
630      RPAD(SUBSTR(NVL(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.je_batch_name, ' '), 1, 20), 20)||' '||
631      RPAD(SUBSTR(NVL(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.je_header_name, ' '), 1, 19), 19)||' '||
632      RPAD(SUBSTR(NVL(l_acct_segments, ' '), 1, 35), 35)||' '||
633      LPAD(SUBSTR(NVL(TO_CHAR(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.je_line_num), ' '), 1, 3), 3)||' '||
634      LPAD(SUBSTR(NVL(TO_CHAR(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.entered_dr,
635                            JG_ALLOCATE_JOURNALS_PKG.G_currency_format_mask), ' ') ,1,15), 15)||' '||
636      LPAD(SUBSTR(NVL(TO_CHAR(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.entered_cr,
637                            JG_ALLOCATE_JOURNALS_PKG.G_currency_format_mask), ' ') ,1,15),15)||'   '||l_error_message);
638   ELSE -- Unallocation Reporting
639      JG_UTILITY_PKG.out(
640      RPAD(SUBSTR(NVL(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.je_batch_name, ' '), 1, 20), 20)||' '||
641      RPAD(SUBSTR(NVL(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.je_header_name, ' '), 1, 19), 19)||' '||
642      RPAD(SUBSTR(NVL(l_acct_segments, ' '), 1, 35), 35)||' '||
643      LPAD(SUBSTR(NVL(TO_CHAR(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.je_line_num), ' '), 1, 3), 3)||' '||
644      LPAD(SUBSTR(NVL(TO_CHAR(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.entered_dr,
645                            JG_ALLOCATE_JOURNALS_PKG.G_currency_format_mask), ' ') ,1,15), 15)||' '||
646      LPAD(SUBSTR(NVL(TO_CHAR(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.entered_cr,
647                            JG_ALLOCATE_JOURNALS_PKG.G_currency_format_mask), ' ') ,1,15),15));
648   END IF;
649   JG_UTILITY_PKG.log('< JG_CREATE_JOURNALS_PKG.write_error_to_output');
650 END write_error_to_output;
651 
652 /* ------------------------------------------------------------------------------
653 |  PUBLIC PROCEDURE                                                             |
654 |       create_journal 								|
655 |  DESCRIPTION								        |
656 |	Allocates the Journals							|
657 |       Pseudocode:   								|
658 |	FOR each journal line LOOP						|
659 |	    (create_journal starts here)					|
660 |	    IF current line falls under a different account range than previous |
661 |	       AND previous had an offset acct defined at the acct range level THEN |
662 |	       create account range level offset allocation line  		|
663 |	    END IF    	      	    	  	 	    			|
664 |	    FOR account range rule line LOOP					|
665 |	    	Check if current allocation line has max percentage so far	|
666 |		Add allocation line to array for later reporting and inserting  |
667 |		IF offset account is defined against the rule line THEN		|
668 |		   Add offset allocation line to array	      	   		|
669 |		END IF								|
670 |	    END LOOP	      	   						|
671 |	    Compare original entered/accounted amounts with total of allocated  |
672 |	       amounts and calculate any rounding errors.   	     		|
673 |	    Add rounding errors to amounts of allocation line and offset line   |
674 |	       with the max percentage in the array	      	  	 	|
675 |	    Insert source journal allocation lines into GL_INTERFACE from array |
676 |	    (create_journal ends here)						|
677 |	END journal line LOOP	 						|
678 |  CALLED BY 									|
679 |	JG_ALLOCATE_JOURNALS_PKG.allocate					|
680 --------------------------------------------------------------------------------*/
681 PROCEDURE create_journal IS
682   --
683   -- Rule Line cursor
684   --
685   CURSOR 		c_rule_line IS
686   SELECT 		natural_account		 NATURAL_ACCOUNT,
687 			allocation_percent	 ALLOCATION_PERCENT,
688 	   		offset_account		 OFFSET_ACCOUNT,
689 			rule_line_id		 RULE_LINE_ID
690   FROM   		jg_zz_ta_rule_lines
691   WHERE  		account_range_id = JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.account_range_id;
692 
693   l_accted_credit_amount	 GL_JE_LINES.entered_dr%TYPE:= 0;
694   l_accted_debit_amount		 GL_JE_LINES.entered_dr%TYPE:= 0;
695   l_entered_credit_amount	 GL_JE_LINES.entered_dr%TYPE:= 0;
696   l_entered_debit_amount	 GL_JE_LINES.entered_dr%TYPE:= 0;
697   l_cc_range_code		 VARCHAR2(100) := NULL;
698   l_first_alloc_for_jrnal        NUMBER;
699   l_max_prc_alloc_for_jrnal      NUMBER := 0;
700   l_is_max_prc_alloc_line	 BOOLEAN := FALSE;
701   l_max_prc_alloc_line_for_jrnal NUMBER := NULL;
702   l_max_prc_offst_line_for_jrnal NUMBER := NULL;
703   l_rounded_accted_cr_sum	 NUMBER := 0;
704   l_rounded_accted_dr_sum	 NUMBER := 0;
705   l_rounded_entered_cr_sum	 NUMBER := 0;
706   l_rounded_entered_dr_sum	 NUMBER := 0;
707 BEGIN
708   JG_UTILITY_PKG.log('> JG_CREATE_JOURNALS_PKG.create_journal');
709   --
710   -- Only create offset row if latest fiscal journal line falls into a different account range than the last line.
711   -- We are inserting an offset line for all lines under the same account range up to the last journal record.
712   -- Separate offset range also created if the currency has changed, journal import implicitly creates a separate
713   -- journal header per currency if the entered amounts are in different currencies.
714   --
715   JG_UTILITY_PKG.debug( ' current acct range id = '||to_char(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.account_range_id));
716   JG_UTILITY_PKG.debug( ' last acct range id = '||to_char(JG_ALLOCATE_JOURNALS_PKG.G_last_journal_qry_rec.account_range_id));
717   JG_UTILITY_PKG.debug( ' last offset account = '||JG_ALLOCATE_JOURNALS_PKG.G_last_journal_qry_rec.offset_account);
718   IF JG_ALLOCATE_JOURNALS_PKG.G_last_journal_qry_rec.offset_account IS NOT NULL AND
719 	  ((JG_ALLOCATE_JOURNALS_PKG.G_last_journal_qry_rec.account_range_id <>
720 	   JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.account_range_id)  OR
721 	   ((JG_ALLOCATE_JOURNALS_PKG.G_last_journal_qry_rec.l_je_lines_v_rec.currency_code <>
722 	   JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.currency_code) AND JG_JOURNAL_ALLOCATIONS_PKG.G_amount_type = 'E')) THEN
723     JG_UTILITY_PKG.debug( ' creating offset line for acct range ');
724     JG_CREATE_JOURNALS_PKG.create_offset_for_acct_range;
725   END IF;
726 
727 
728   IF (JG_JOURNAL_ALLOCATIONS_PKG.G_Destn_Cost_Center_Grouping = 'Y') THEN
729     --
730     -- Set the Journal Header Name to include Cost Center Range Description; supply the cc range id if the description is null
731     --
732     l_cc_range_code := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.cc_range_low||' - '||JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.cc_range_high;
733     JG_CREATE_JOURNALS_PKG.G_Journal_Name := NVL(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.cc_range_description,
734     					               TO_CHAR(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.cc_range_id));
735     JG_CREATE_JOURNALS_PKG.G_Journal_Description := NVL(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.cc_range_description||' '||l_cc_range_code,
736     					               l_cc_range_code);
737     JG_UTILITY_PKG.debug('Journal Header = ' || JG_CREATE_JOURNALS_PKG.G_Journal_Name);
738   END IF;
739 
740 
741   IF (JG_JOURNAL_ALLOCATIONS_PKG.G_validate_only = 'N') THEN
742     --
743     -- Build destination  account
744     --
745     JG_CREATE_JOURNALS_PKG.G_key_segment( 1 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment1;
746     JG_CREATE_JOURNALS_PKG.G_key_segment( 2 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment2;
747     JG_CREATE_JOURNALS_PKG.G_key_segment( 3 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment3;
748     JG_CREATE_JOURNALS_PKG.G_key_segment( 4 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment4;
749     JG_CREATE_JOURNALS_PKG.G_key_segment( 5 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment5;
750     JG_CREATE_JOURNALS_PKG.G_key_segment( 6 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment6;
751     JG_CREATE_JOURNALS_PKG.G_key_segment( 7 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment7;
752     JG_CREATE_JOURNALS_PKG.G_key_segment( 8 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment8;
753     JG_CREATE_JOURNALS_PKG.G_key_segment( 9 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment9;
754     JG_CREATE_JOURNALS_PKG.G_key_segment(10 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment10;
755     JG_CREATE_JOURNALS_PKG.G_key_segment(11 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment11;
756     JG_CREATE_JOURNALS_PKG.G_key_segment(12 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment12;
757     JG_CREATE_JOURNALS_PKG.G_key_segment(13 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment13;
758     JG_CREATE_JOURNALS_PKG.G_key_segment(14 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment14;
759     JG_CREATE_JOURNALS_PKG.G_key_segment(15 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment15;
760     JG_CREATE_JOURNALS_PKG.G_key_segment(16 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment16;
761     JG_CREATE_JOURNALS_PKG.G_key_segment(17 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment17;
762     JG_CREATE_JOURNALS_PKG.G_key_segment(18 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment18;
763     JG_CREATE_JOURNALS_PKG.G_key_segment(19 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment19;
764     JG_CREATE_JOURNALS_PKG.G_key_segment(20 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment20;
765     JG_CREATE_JOURNALS_PKG.G_key_segment(21 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment21;
766     JG_CREATE_JOURNALS_PKG.G_key_segment(22 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment22;
767     JG_CREATE_JOURNALS_PKG.G_key_segment(23 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment23;
768     JG_CREATE_JOURNALS_PKG.G_key_segment(24 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment24;
769     JG_CREATE_JOURNALS_PKG.G_key_segment(25 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment25;
770     JG_CREATE_JOURNALS_PKG.G_key_segment(26 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment26;
771     JG_CREATE_JOURNALS_PKG.G_key_segment(27 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment27;
772     JG_CREATE_JOURNALS_PKG.G_key_segment(28 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment28;
773     JG_CREATE_JOURNALS_PKG.G_key_segment(29 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment28;
774     JG_CREATE_JOURNALS_PKG.G_key_segment(30 ) := JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.segment30;
775 
776     --
777     -- Zero-Fill some of the segments if Zero-Fill method was chosen
778     --
779     IF JG_JOURNAL_ALLOCATIONS_PKG.G_destn_segment_method = 'ZF' THEN
780         zero_fill_segments(JG_CREATE_JOURNALS_PKG.G_key_segment);
781     END IF;
782   END IF; -- Validate_Only check
783   --
784   -- Store a pointer to the first entry in the allocation lines array for this journal line
785   --
786   l_first_alloc_for_jrnal := JG_CREATE_JOURNALS_PKG.i + 1;
787   --
788   -- loop for each destination account number and allocation
789   --
790   JG_UTILITY_PKG.debug(TO_CHAR(SYSDATE, 'HH24:MI:SS'));
791   FOR c_rule_line_rec IN c_rule_line LOOP
792     JG_UTILITY_PKG.debug( 'inner loop: start');
793     --
794     -- Calculate allocated account amounts based on the parameter amount_type and the precision of the currency,
795     -- any rounding errors are dealt with later down in the code once all rule lines for the journal have been fetched.
796     --
797     l_accted_credit_amount  := ROUND(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.accounted_cr *
798 		(c_rule_line_rec.allocation_percent / 100), JG_JOURNAL_ALLOCATIONS_PKG.G_func_currency_precision);
799     l_accted_debit_amount   := ROUND(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.accounted_dr *
800 		(c_rule_line_rec.allocation_percent / 100), JG_JOURNAL_ALLOCATIONS_PKG.G_func_currency_precision);
801     --
802     -- Entered Amount Type: set to entered amounts to accounted amounts if Amount Type parameter is 'Accounted'
803     --
804     IF (JG_JOURNAL_ALLOCATIONS_PKG.G_amount_type = 'E') THEN
805       l_entered_credit_amount := ROUND(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.entered_cr *
806 				(c_rule_line_rec.allocation_percent / 100), JG_ALLOCATE_JOURNALS_PKG.G_currency_precision);
807       l_entered_debit_amount  := ROUND(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.entered_dr *
808 			   	(c_rule_line_rec.allocation_percent / 100), JG_ALLOCATE_JOURNALS_PKG.G_currency_precision);
809     ELSE
810       l_entered_credit_amount := l_accted_credit_amount;
811       l_entered_debit_amount  := l_accted_debit_amount;
812     END IF;
813     --
814     -- Store running totals of rounded allocation amounts to compare against the original journal amount and
815     -- determine any rounding error
816     --
817     l_rounded_accted_cr_sum := l_rounded_accted_cr_sum + NVL(l_accted_credit_amount, 0);
818     l_rounded_accted_dr_sum := l_rounded_accted_dr_sum + NVL(l_accted_debit_amount, 0);
819     l_rounded_entered_cr_sum := l_rounded_entered_cr_sum + NVL(l_entered_credit_amount, 0);
820     l_rounded_entered_dr_sum := l_rounded_entered_dr_sum + NVL(l_entered_debit_amount, 0);
821     JG_CREATE_JOURNALS_PKG.i := JG_CREATE_JOURNALS_PKG.i + 1;
822     --
823     -- Check if current allocation percentage is greater than any of previous percentages
824     -- for journal line.  Any rounding error is applied to the line with the greatest allocation percentage.
825     --
826     IF NVL(l_max_prc_alloc_for_jrnal, 0) < c_rule_line_rec.allocation_percent AND
827          JG_ALLOCATE_JOURNALS_PKG.G_jrnl_total_allocn_percent = 100 THEN
828       l_is_max_prc_alloc_line := TRUE;
829       l_max_prc_alloc_for_jrnal := c_rule_line_rec.allocation_percent;
830       l_max_prc_alloc_line_for_jrnal := JG_CREATE_JOURNALS_PKG.i;
831     END IF;
832     --
833     -- Populate allocated lines table for reporting and later gl_interface insertion
834     --
835     JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).je_batch_name
836 		:= JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.je_batch_name;
837     JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).je_header_name
838 		:= JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.je_header_name;
839     JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).je_line_num
840 		:= JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.je_line_num;
841     JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).code_combination_id
842 		:= JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.code_combination_id;
843     JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).cc_range_id
844 		:= JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.cc_range_id;
845     IF JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.cc_range_id <> NVL(JG_ALLOCATE_JOURNALS_PKG.G_last_journal_qry_rec.cc_range_id, -99)
846        							     AND l_first_alloc_for_jrnal = JG_CREATE_JOURNALS_PKG.i THEN
847       JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).remarks :=
848        		JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.cc_range_low||' - '||JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.cc_range_high;
849     END IF;
850     JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).accounted_cr
851 		:= JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.accounted_cr;
852     JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).accounted_dr
853 		:= JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.accounted_dr;
854     JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).destn_account_number
855 		:= c_rule_line_rec.natural_account;
856     JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).destn_accted_cr := l_accted_credit_amount;
857     JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).destn_accted_dr := l_accted_debit_amount;
858     JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).destn_entered_cr := l_entered_credit_amount;
859     JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).destn_entered_dr := l_entered_debit_amount;
860     JG_UTILITY_PKG.debug('Loop number = '||to_char(JG_CREATE_JOURNALS_PKG.i)||'  '|| 'je_line_num = '||to_char(alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).je_line_num));
861 
862     JG_UTILITY_PKG.debug( 'batch_name = '|| JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.je_batch_name);
863     JG_UTILITY_PKG.debug('header_name = '|| JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.je_header_name);
864     JG_UTILITY_PKG.debug('accounted_cr = '|| to_char(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.accounted_cr));
865     JG_UTILITY_PKG.debug('accounted_dr = '|| to_char(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.accounted_dr));
866     --
867     -- inserting an offset line for just the current journal record if the account range level offset account is null.
868     --
869     IF JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.offset_account IS NULL THEN
870       --
871       -- increment array counter
872       --
873       JG_CREATE_JOURNALS_PKG.i := JG_CREATE_JOURNALS_PKG.i + 1;
874       --
875       -- populate array for reporting allocated lines at end of program
876       -- for offset account: switch credits and debits for destination amounts
877       --
878       JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).je_batch_name
879    		:= JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.je_batch_name;
880       JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).je_header_name
881 		:= JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.je_header_name;
882       JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).je_line_num
883 		:= JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.je_line_num;
884       JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).code_combination_id
885 		:= JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.code_combination_id;
886       JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).cc_range_id
887 		:= JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.cc_range_id;
888       JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).accounted_cr
889 		:= JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.accounted_cr;
890       JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).accounted_dr
891 		:= JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.accounted_dr;
892       JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).destn_account_number
893 		:= c_rule_line_rec.offset_account;
894       JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).destn_accted_cr := l_accted_debit_amount;
895       JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).destn_accted_dr := l_accted_credit_amount;
896       JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).destn_entered_cr := l_entered_debit_amount;
897       JG_CREATE_JOURNALS_PKG.alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).destn_entered_dr := l_entered_credit_amount;
898       --
899       -- If have max percentage allocation line so far, then set the offset line array number aswell
900       --
901       IF l_is_max_prc_alloc_line THEN
902         l_max_prc_offst_line_for_jrnal := JG_CREATE_JOURNALS_PKG.i;
903       END IF;
904     END IF;  -- Is the account range level offset null?
905     l_is_max_prc_alloc_line := FALSE;
906     JG_UTILITY_PKG.debug('Loop number = '||to_char(JG_CREATE_JOURNALS_PKG.i)||'  '|| 'je_line_num = '||to_char(alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).je_line_num));
907   END LOOP;
908   JG_UTILITY_PKG.debug(TO_CHAR(SYSDATE, 'HH24:MI:SS'));
909   --
910   -- Update entered and accounted amounts of max perc line with any rounding error total
911   --
912   IF JG_CREATE_JOURNALS_PKG.i >= l_first_alloc_for_jrnal THEN
913     --
914     -- Adjust calculated amounts with any rounding error difference if the line
915     -- is the maximum percentage line chosen and it is a full allocation of 100 percent
916     --
917     JG_UTILITY_PKG.debug( 'Perform rounding errors calculations');
918     IF NVL(l_rounded_accted_cr_sum, 0) <>
919 		NVL(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.accounted_cr, 0) THEN
920       IF l_max_prc_alloc_line_for_jrnal IS NOT NULL THEN
921         JG_CREATE_JOURNALS_PKG.alloc_lines_arr(l_max_prc_alloc_line_for_jrnal).destn_accted_cr :=
922               JG_CREATE_JOURNALS_PKG.alloc_lines_arr(l_max_prc_alloc_line_for_jrnal).destn_accted_cr +
923 	      (NVL(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.accounted_cr, 0) - NVL(l_rounded_accted_cr_sum, 0));
924       END IF;
925       IF l_max_prc_offst_line_for_jrnal IS NOT NULL THEN
926            JG_CREATE_JOURNALS_PKG.alloc_lines_arr(l_max_prc_offst_line_for_jrnal).destn_accted_dr :=
927               JG_CREATE_JOURNALS_PKG.alloc_lines_arr(l_max_prc_offst_line_for_jrnal).destn_accted_dr +
928 	      (NVL(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.accounted_cr, 0) - NVL(l_rounded_accted_cr_sum, 0));
929       END IF;
930     END IF;
931     IF NVL(l_rounded_accted_dr_sum, 0) <>
932 		NVL(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.accounted_dr, 0) THEN
933       IF l_max_prc_alloc_line_for_jrnal IS NOT NULL THEN
934            JG_CREATE_JOURNALS_PKG.alloc_lines_arr(l_max_prc_alloc_line_for_jrnal).destn_accted_dr :=
935               JG_CREATE_JOURNALS_PKG.alloc_lines_arr(l_max_prc_alloc_line_for_jrnal).destn_accted_dr +
936 	      (NVL(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.accounted_dr, 0) - NVL(l_rounded_accted_dr_sum, 0));
937       END IF;
938       IF l_max_prc_offst_line_for_jrnal IS NOT NULL THEN
939         JG_CREATE_JOURNALS_PKG.alloc_lines_arr(l_max_prc_offst_line_for_jrnal).destn_accted_cr :=
940               JG_CREATE_JOURNALS_PKG.alloc_lines_arr(l_max_prc_offst_line_for_jrnal).destn_accted_cr +
941 	      (NVL(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.accounted_dr, 0) - NVL(l_rounded_accted_dr_sum, 0));
942       END IF;
943     END IF;
944     IF (JG_JOURNAL_ALLOCATIONS_PKG.G_amount_type = 'E') THEN
945       IF NVL(l_rounded_entered_cr_sum, 0) <>
946 		NVL(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.entered_cr, 0) THEN
947         IF l_max_prc_alloc_line_for_jrnal IS NOT NULL THEN
948           JG_CREATE_JOURNALS_PKG.alloc_lines_arr(l_max_prc_alloc_line_for_jrnal).destn_entered_cr :=
949                 JG_CREATE_JOURNALS_PKG.alloc_lines_arr(l_max_prc_alloc_line_for_jrnal).destn_entered_cr +
950 	        (NVL(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.entered_cr, 0) - NVL(l_rounded_entered_cr_sum, 0));
951         END IF;
952         IF l_max_prc_offst_line_for_jrnal IS NOT NULL THEN
953              JG_CREATE_JOURNALS_PKG.alloc_lines_arr(l_max_prc_offst_line_for_jrnal).destn_entered_dr :=
954                 JG_CREATE_JOURNALS_PKG.alloc_lines_arr(l_max_prc_offst_line_for_jrnal).destn_entered_dr +
955 	        (NVL(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.entered_cr, 0) - NVL(l_rounded_entered_cr_sum, 0));
956         END IF;
957       END IF;
958       IF NVL(l_rounded_entered_dr_sum, 0) <>
959 		NVL(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.entered_dr, 0) THEN
960         IF l_max_prc_alloc_line_for_jrnal IS NOT NULL THEN
961              JG_CREATE_JOURNALS_PKG.alloc_lines_arr(l_max_prc_alloc_line_for_jrnal).destn_entered_dr :=
962                 JG_CREATE_JOURNALS_PKG.alloc_lines_arr(l_max_prc_alloc_line_for_jrnal).destn_entered_dr +
963 	        (NVL(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.entered_dr, 0) - NVL(l_rounded_entered_dr_sum, 0));
964         END IF;
965         IF l_max_prc_offst_line_for_jrnal IS NOT NULL THEN
966              JG_CREATE_JOURNALS_PKG.alloc_lines_arr(l_max_prc_offst_line_for_jrnal).destn_entered_cr :=
967                 JG_CREATE_JOURNALS_PKG.alloc_lines_arr(l_max_prc_offst_line_for_jrnal).destn_entered_cr +
968 	        (NVL(JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.l_je_lines_v_rec.entered_dr, 0) - NVL(l_rounded_entered_dr_sum, 0));
969         END IF;
970       END IF;
971     ELSE
972       IF l_max_prc_alloc_line_for_jrnal IS NOT NULL THEN
973         JG_CREATE_JOURNALS_PKG.alloc_lines_arr(l_max_prc_alloc_line_for_jrnal).destn_entered_cr :=
974   	             JG_CREATE_JOURNALS_PKG.alloc_lines_arr(l_max_prc_alloc_line_for_jrnal).destn_accted_cr;
975 	JG_CREATE_JOURNALS_PKG.alloc_lines_arr(l_max_prc_alloc_line_for_jrnal).destn_entered_dr :=
976   	             JG_CREATE_JOURNALS_PKG.alloc_lines_arr(l_max_prc_alloc_line_for_jrnal).destn_accted_dr;
977       END IF;
978       IF l_max_prc_offst_line_for_jrnal IS NOT NULL THEN
979         JG_CREATE_JOURNALS_PKG.alloc_lines_arr(l_max_prc_offst_line_for_jrnal).destn_entered_cr :=
980   	             JG_CREATE_JOURNALS_PKG.alloc_lines_arr(l_max_prc_offst_line_for_jrnal).destn_accted_cr;
981 	JG_CREATE_JOURNALS_PKG.alloc_lines_arr(l_max_prc_offst_line_for_jrnal).destn_entered_dr :=
982   	             JG_CREATE_JOURNALS_PKG.alloc_lines_arr(l_max_prc_offst_line_for_jrnal).destn_accted_dr;
983       END IF;
984     END IF;  -- Amount_Type Check
985     --
986     -- Loop for all allocation lines to insert into GL Interface
987     -- Only if at least one allocation line has been found
988     --
989     FOR j IN l_first_alloc_for_jrnal .. JG_CREATE_JOURNALS_PKG.i LOOP
990       --
991       -- Cumulative totals for report output (allocated accts)
992       --
993       JG_CREATE_JOURNALS_PKG.G_total_alloc_accted_cr_amt
994  		  := JG_CREATE_JOURNALS_PKG.G_total_alloc_accted_cr_amt + NVL(JG_CREATE_JOURNALS_PKG.alloc_lines_arr(j).destn_accted_cr, 0);
995            JG_CREATE_JOURNALS_PKG.G_total_alloc_accted_dr_amt
996 		  := JG_CREATE_JOURNALS_PKG.G_total_alloc_accted_dr_amt + NVL(JG_CREATE_JOURNALS_PKG.alloc_lines_arr(j).destn_accted_dr, 0);
997        JG_UTILITY_PKG.debug('total_alloc_accted_cr_amt = '|| to_char(JG_CREATE_JOURNALS_PKG.G_total_alloc_accted_cr_amt));
998        JG_UTILITY_PKG.debug('total_alloc_accted_dr_amt = '|| to_char(JG_CREATE_JOURNALS_PKG.G_total_alloc_accted_dr_amt));
999        IF JG_JOURNAL_ALLOCATIONS_PKG.G_validate_only = 'N' THEN
1000          JG_UTILITY_PKG.debug( 'Inserting Allocated Journal Line number '||to_char(j));
1001          JG_CREATE_JOURNALS_PKG.G_key_segment( JG_JOURNAL_ALLOCATIONS_PKG.G_acct_key_element ) :=
1002 	 		        JG_CREATE_JOURNALS_PKG.alloc_lines_arr(j).destn_account_number;
1003          IF NOT JG_CREATE_JOURNALS_PKG.insert_gl_interface
1004 	    		     (JG_CREATE_JOURNALS_PKG.alloc_lines_arr(j).destn_entered_dr,
1005 	  		      JG_CREATE_JOURNALS_PKG.alloc_lines_arr(j).destn_entered_cr,
1006 			      JG_CREATE_JOURNALS_PKG.alloc_lines_arr(j).destn_accted_dr,
1007 	  		      JG_CREATE_JOURNALS_PKG.alloc_lines_arr(j).destn_accted_cr,
1008  			      FALSE) THEN
1009 	   FND_MESSAGE.SET_NAME(JG_JOURNAL_ALLOCATIONS_PKG.G_JG_appln_short_name , 'JG_ZZ_GL_INTERFACE_INSERT');
1010 	   JG_CREATE_JOURNALS_PKG.write_error_to_output;
1011 	   RAISE APP_EXCEPTION.application_exception;
1012          END IF;
1013        END IF; -- Validate_Only?
1014 
1015        --
1016        -- We also require running totals for the offset range line if an offset account has been
1017        -- defined at the account range level.  If offset acct is at the account range level for the current
1018        -- line, then no offsets have been entered at the rule line level, this means that this current array loop
1019        -- will only contained allocated lines, no offsets.  Hence, the below running totals will be correctly summed
1020        -- (inclusive of any rounding corrections).
1021        --
1022        IF (JG_ALLOCATE_JOURNALS_PKG.G_journal_qry_rec.offset_account IS NOT NULL) THEN
1023           JG_CREATE_JOURNALS_PKG.G_total_offset_accted_cr_amt := JG_CREATE_JOURNALS_PKG.G_total_offset_accted_cr_amt +
1024    				NVL(JG_CREATE_JOURNALS_PKG.alloc_lines_arr(j).destn_accted_dr, 0);
1025           JG_CREATE_JOURNALS_PKG.G_total_offset_accted_dr_amt := JG_CREATE_JOURNALS_PKG.G_total_offset_accted_dr_amt +
1026     				NVL(JG_CREATE_JOURNALS_PKG.alloc_lines_arr(j).destn_accted_cr, 0);
1027           JG_CREATE_JOURNALS_PKG.G_total_offset_entered_cr_amt := JG_CREATE_JOURNALS_PKG.G_total_offset_entered_cr_amt +
1028    				NVL(JG_CREATE_JOURNALS_PKG.alloc_lines_arr(j).destn_entered_dr, 0);
1029           JG_CREATE_JOURNALS_PKG.G_total_offset_entered_dr_amt := JG_CREATE_JOURNALS_PKG.G_total_offset_entered_dr_amt +
1030     				NVL(JG_CREATE_JOURNALS_PKG.alloc_lines_arr(j).destn_entered_cr, 0);
1031           JG_UTILITY_PKG.debug( 'cumulative offset accted dr amt = '||to_char(JG_CREATE_JOURNALS_PKG.G_total_offset_accted_dr_amt));
1032           JG_UTILITY_PKG.debug( 'cumulative offset accted cr amt = '||to_char(JG_CREATE_JOURNALS_PKG.G_total_offset_accted_cr_amt));
1033       END IF;
1034     END LOOP;
1035   END IF; -- Have lines to allocate?
1036   JG_UTILITY_PKG.debug('code_comb_id = '|| to_char(alloc_lines_arr(JG_CREATE_JOURNALS_PKG.i).code_combination_id));
1037   JG_UTILITY_PKG.log('< JG_CREATE_JOURNALS_PKG.create_journal');
1038 END create_journal;
1039 
1040 END JG_CREATE_JOURNALS_PKG;