[Home] [Help]
PACKAGE BODY: APPS.XLA_ACCOUNTING_PUB_PKG
Source
1 PACKAGE BODY xla_accounting_pub_pkg AS
2 -- $Header: xlaappub.pkb 120.24.12010000.4 2008/11/11 12:58:36 kapkumar ship $
3 /*===========================================================================+
4 | Copyright (c) 2001-2002 Oracle Corporation |
5 | Redwood Shores, CA, USA |
6 | All rights reserved. |
7 +============================================================================+
8 | PACKAGE NAME |
9 | xla_accounting_pub_pkg |
10 | |
11 | DESCRIPTION |
12 | This package contains all the public APIs related to Accounting |
13 | Program. It has two APIs, one to account for a "batch of docuements" |
14 | and one to account for a single "docuemnt". |
15 | All these APIs are wrapper over routines in the "xla_accounting_pkg". |
16 | |
17 | HISTORY |
18 | 11/08/2002 S. Singhania Created |
19 | 07/22/2003 S. Singhania Added NOCOPY hint to the OUT parameters|
20 | 08/05/2003 S. Singhania Added P_ENTITY_ID and P_ACCOUNTING_FLAG|
21 | to ACCOUNTING_PROGRAM_DOCUMENT |
22 | Modified ACCOUNTING_PROGRAM_DOCUMENT |
23 | 09/22/2003 S. Singhania Added p_source_application to the API |
24 | ACCOUNTING_PROGRAM_BATCH |
25 | 10/14/2003 S. Singhania Added semicolon to the EXIT statement. |
26 | (Bug # 3165900) |
27 | 12/02/2003 S. Singhania Modified the submit_request call in |
28 | ACCOUNTING_PROGRAM_DOCUMENT to match |
29 | the correct parameter order in prog |
30 | XLAACCPB. (Bug # 3290398) |
31 | 02/28/2004 S. Singhania Bug 3416534. Added local trace package |
32 | and FND_LOG messages. |
33 | 03/23/2004 S. Singhania Added a parameter p_module to the TRACE|
34 | calls and the procedure. |
35 | 04/25/2005 S. Singhania Bug 4323078. Temporarily modified body |
36 | of accounting_progra_document to pass|
37 | NULL for valuation method while |
38 | calling xla_events_pkg.get_entity_id |
39 | 04/27/2005 V. Kumar Bug 4323078. Removed the temporary fix |
40 | and overloaded the procedure |
41 | get_accounting_document with extra |
42 | valuation method parameter. |
43 | 04/29/2005 S. Singhania Bug 4332679. Modified trace procedure |
44 | for the GSCC check File.Sql.46 |
45 | 08/01/2005 W. Chan 4458381 - Public Sector Enhancement |
46 | 03/07/2006 V. Swapna Bug 5080849. Modified submit request |
47 | call in accounting_program_document. |
48 | 03/21/2006 A. Wan 5109240a - accounting_program_events |
49 | should validate the accounting mode |
50 | in full (ie DRAFT, FINAL). |
51 | 31/12/2007 V. Swapna 5339999 - Historic upgrade of sec/alc |
52 | Don't allow online accounting to run |
53 | when the upgrade process is running. |
54 +===========================================================================*/
55
56 C_NUM CONSTANT NUMBER := 9.99E125;
57 C_CHAR CONSTANT VARCHAR2(1) := '
58 ';
59
60 --=============================================================================
61 -- *********** Local Trace Routine **********
62 --=============================================================================
63
64 C_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
65 C_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
66 C_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
67 C_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
68 C_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
69 C_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
70
71 C_LEVEL_LOG_DISABLED CONSTANT NUMBER := 99;
72 C_DEFAULT_MODULE CONSTANT VARCHAR2(240) := 'xla.plsql.xla_accounting_pub_pkg';
73
74 g_log_level NUMBER;
75 g_log_enabled BOOLEAN;
76
77 PROCEDURE trace
78 (p_msg IN VARCHAR2
79 ,p_level IN NUMBER
80 ,p_module IN VARCHAR2 DEFAULT C_DEFAULT_MODULE) IS
81 BEGIN
82 IF (p_msg IS NULL AND p_level >= g_log_level) THEN
83 fnd_log.message(p_level, p_module);
84 ELSIF p_level >= g_log_level THEN
85 fnd_log.string(p_level, p_module, p_msg);
86 END IF;
87
88 EXCEPTION
89 WHEN xla_exceptions_pkg.application_exception THEN
90 RAISE;
91 WHEN OTHERS THEN
92 xla_exceptions_pkg.raise_message
93 (p_location => 'xla_accounting_pub_pkg.trace');
94 END trace;
95
96 --============================================================================
97 --
98 --
99 --
100 --============================================================================
101 PROCEDURE accounting_program_batch
102 (p_source_application_id IN NUMBER
103 ,p_application_id IN NUMBER
104 ,p_ledger_id IN NUMBER
105 ,p_process_category IN VARCHAR2
106 ,p_end_date IN DATE
107 ,p_accounting_flag IN VARCHAR2
108 ,p_accounting_mode IN VARCHAR2
109 ,p_error_only_flag IN VARCHAR2
110 ,p_transfer_flag IN VARCHAR2
111 ,p_gl_posting_flag IN VARCHAR2
112 ,p_gl_batch_name IN VARCHAR2
113 ,p_valuation_method IN VARCHAR2
114 ,p_security_id_int_1 IN NUMBER
115 ,p_security_id_int_2 IN NUMBER
116 ,p_security_id_int_3 IN NUMBER
117 ,p_security_id_char_1 IN VARCHAR2
118 ,p_security_id_char_2 IN VARCHAR2
119 ,p_security_id_char_3 IN VARCHAR2
120 ,p_accounting_batch_id OUT NOCOPY NUMBER
121 ,p_errbuf OUT NOCOPY VARCHAR2
122 ,p_retcode OUT NOCOPY NUMBER) IS
123 l_log_module VARCHAR2(240);
124 BEGIN
125 IF g_log_enabled THEN
126 l_log_module := C_DEFAULT_MODULE||'.accounting_program_batch';
127 END IF;
128 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129 trace
130 (p_msg => 'BEGIN of procedure ACCOUNTING_PROGRAM_BATCH'
131 ,p_level => C_LEVEL_PROCEDURE
132 ,p_module => l_log_module);
133 END IF;
134
135 xla_accounting_pkg.accounting_program_batch
136 (p_source_application_id => p_source_application_id
137 ,p_application_id => p_application_id
138 ,p_ledger_id => p_ledger_id
139 ,p_process_category => p_process_category
140 ,p_end_date => p_end_date
141 ,p_accounting_flag => p_accounting_flag
142 ,p_accounting_mode => p_accounting_mode
143 ,p_error_only_flag => p_error_only_flag
144 ,p_transfer_flag => p_transfer_flag
145 ,p_gl_posting_flag => p_gl_posting_flag
146 ,p_gl_batch_name => p_gl_batch_name
147 ,p_valuation_method => p_valuation_method
148 ,p_security_id_int_1 => p_security_id_int_1
149 ,p_security_id_int_2 => p_security_id_int_2
150 ,p_security_id_int_3 => p_security_id_int_3
151 ,p_security_id_char_1 => p_security_id_char_1
152 ,p_security_id_char_2 => p_security_id_char_2
153 ,p_security_id_char_3 => p_security_id_char_3
154 ,p_accounting_batch_id => p_accounting_batch_id
155 ,p_errbuf => p_errbuf
156 ,p_retcode => p_retcode);
157
158 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
159 trace
160 (p_msg => 'END of procedure ACCOUNTING_PROGRAM_BATCH'
161 ,p_level => C_LEVEL_PROCEDURE
162 ,p_module => l_log_module);
163 END IF;
164 EXCEPTION
165 WHEN xla_exceptions_pkg.application_exception THEN
166 RAISE;
167 WHEN OTHERS THEN
168 xla_exceptions_pkg.raise_message
169 (p_location => 'xla_accounting_pub_pkg.accounting_program_batch');
170 END accounting_program_batch; -- end of procedure
171
172
173 --============================================================================
174 --
175 -- Overloaded with extra valuation_method parameter
176 --
177 --============================================================================
178 PROCEDURE accounting_program_document
179 (p_event_source_info IN xla_events_pub_pkg.t_event_source_info
180 ,p_application_id IN NUMBER DEFAULT NULL
181 ,p_valuation_method IN VARCHAR2
182 ,p_entity_id IN NUMBER
183 ,p_accounting_flag IN VARCHAR2 DEFAULT 'Y'
184 ,p_accounting_mode IN VARCHAR2
185 ,p_transfer_flag IN VARCHAR2
186 ,p_gl_posting_flag IN VARCHAR2
187 ,p_offline_flag IN VARCHAR2
188 ,p_accounting_batch_id OUT NOCOPY NUMBER
189 ,p_errbuf OUT NOCOPY VARCHAR2
190 ,p_retcode OUT NOCOPY NUMBER
191 ,p_request_id OUT NOCOPY NUMBER) IS
192 l_entity_id NUMBER;
193 l_application_id NUMBER;
194 l_ledger_id NUMBER;
195 l_log_module VARCHAR2(240);
196 historic_upgrade_running EXCEPTION;
197 BEGIN
198 IF g_log_enabled THEN
199 l_log_module := C_DEFAULT_MODULE||'.accounting_program_document';
200 END IF;
201 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
202 trace
203 (p_msg => 'BEGIN of procedure ACCOUNTING_PROGRAM_DOCUMENT'
204 ,p_level => C_LEVEL_PROCEDURE
205 ,p_module => l_log_module);
206 trace
207 (p_msg => 'p_entity_id = '||p_entity_id
208 ,p_level => C_LEVEL_PROCEDURE
209 ,p_module => l_log_module);
210 trace
211 (p_msg => 'p_valuation_method = '||p_valuation_method
212 ,p_level => C_LEVEL_PROCEDURE
213 ,p_module => l_log_module);
214
215 END IF;
216
217
218 -- commented code added in 7253269 to test fix for 7380459 gl post error
219 --XLA_ACCOUNTING_CACHE_PKG.g_reversal_error := FALSE;
220
221
222 ----------------------------------------------------------------------------
223 -- Fetch entity information for the transaction.
224 ----------------------------------------------------------------------------
225 IF p_entity_id IS NULL THEN
226 -------------------------------------------------------------------------
227 -- Following sets the Security Context for the execution. This enables
228 -- the accounting program to respect the transaction security.
229 -------------------------------------------------------------------------
230
231 IF (C_LEVEL_EVENT >= g_log_level) THEN
232 trace
233 (p_msg => 'Setting security context for the applciation '||
234 p_event_source_info.application_id
235 ,p_level => C_LEVEL_EVENT
236 ,p_module => l_log_module);
237 END IF;
238
239 xla_security_pkg.set_security_context(p_event_source_info.application_id);
240
241 l_entity_id := xla_events_pkg.get_entity_id
242 (p_event_source_info => p_event_source_info
243 ,p_valuation_method => p_valuation_method );
244 l_application_id := p_event_source_info.application_id;
245 l_ledger_id := p_event_source_info.ledger_id;
246 ELSE
247 -- If application ID is not specified then derive entity information.
248 -- using just the entity_id. If the application ID is provided then
249 -- derive the application ID based enitity_id/application ID for
250 -- performance reasons.
251
252 IF p_application_id IS NULL THEN
253 SELECT APPLICATION_ID
254 ,LEDGER_ID
255 ,ENTITY_ID
256 INTO L_APPLICATION_ID
257 ,L_LEDGER_ID
258 ,L_ENTITY_ID
259 FROM XLA_TRANSACTION_ENTITIES
260 WHERE ENTITY_ID = P_ENTITY_ID;
261 ELSE
262 SELECT APPLICATION_ID
263 ,LEDGER_ID
264 ,ENTITY_ID
265 INTO L_APPLICATION_ID
266 ,L_LEDGER_ID
267 ,L_ENTITY_ID
268 FROM XLA_TRANSACTION_ENTITIES
269 WHERE ENTITY_ID = P_ENTITY_ID
270 AND application_id = p_application_id;
271 END IF;
272
273 -- Added for bug 4599776
274 xla_security_pkg.set_security_context(l_application_id);
275
276 END IF;
277
278 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
279 trace
280 (p_msg => 'l_application_id = '||l_application_id
281 ,p_level => C_LEVEL_STATEMENT
282 ,p_module => l_log_module);
283 trace
284 (p_msg => 'l_ledger_id = '||l_ledger_id
285 ,p_level => C_LEVEL_STATEMENT
286 ,p_module => l_log_module);
287 trace
288 (p_msg => 'l_entity_id = '||l_entity_id
289 ,p_level => C_LEVEL_STATEMENT
290 ,p_module => l_log_module);
291 trace
292 (p_msg => 'p_offline_flag = '||p_offline_flag
293 ,p_level => C_LEVEL_STATEMENT
294 ,p_module => l_log_module);
295 END IF;
296
297 IF NOT is_historic_upgrade_running(l_ledger_id) THEN -- Historic upgrade
298
299 IF p_offline_flag = 'N' THEN
300
301 -- added code to test fix for 7380459 gl post error
302 XLA_ACCOUNTING_CACHE_PKG.g_reversal_error := FALSE;
303
304
305 xla_accounting_pkg.accounting_program_document
306 (p_application_id => l_application_id
307 ,p_entity_id => l_entity_id
308 ,p_accounting_flag => p_accounting_flag
309 ,p_accounting_mode => p_accounting_mode
310 ,p_gl_posting_flag => p_gl_posting_flag
311 ,p_offline_flag => p_offline_flag
312 ,p_accounting_batch_id => p_accounting_batch_id
313 ,p_errbuf => p_errbuf
314 ,p_retcode => p_retcode);
315
316
317 ELSE
318 IF (C_LEVEL_EVENT >= g_log_level) THEN
319 trace
320 (p_msg => 'Calling procedure FND_REQUEST.SUBMIT_REQUEST'
321 ,p_level => C_LEVEL_EVENT
322 ,p_module => l_log_module);
323 END IF;
324
325 p_request_id :=
326
327 fnd_request.submit_request
328 (application => 'XLA'
329 ,program => 'XLAACCPB'
330 ,description => NULL
331 ,start_time => NULL
332 ,sub_request => FALSE
333 ,argument1 => NULL -- source_application_id
334 ,argument2 => l_application_id -- application_id
335 ,argument3 => NULL -- dummy
336 ,argument4 => l_ledger_id -- ledger_id
337 ,argument5 => NULL -- process_category_code
338 ,argument6 => NULL -- end_date
339 ,argument7 => p_accounting_flag -- create_accounting_flag
340 ,argument8 => NULL -- dummy_param_1
341 ,argument9 => p_accounting_mode -- accounting_mode
342 ,argument10 => NULL -- dummy_param_2
343 ,argument11 => 'N' -- errors_only_flag
344 ,argument12 => 'D' -- report_style
345 ,argument13 => p_transfer_flag -- transfer_to_gl_flag
346 ,argument14 => NULL -- dummy_param_3
347 ,argument15 => p_gl_posting_flag -- post_in_gl_flag
348 ,argument16 => NULL -- gl_batch_name
349 ,argument17 => fnd_profile.value('CURRENCY:MIXED_PRECISION') -- min_precision
350 ,argument18 => NULL -- include_zero_amount_lines
351 ,argument19 => NULL -- request_id
352 ,argument20 => l_entity_id -- entity_id
353 ,argument21 => NULL -- source_application_name
354 ,argument22 => NULL -- application_name
355 ,argument23 => NULL -- ledger_name
356 ,argument24 => NULL -- process_category_name
357 ,argument25 => NULL -- create_accounting
358 ,argument26 => NULL -- accounting_mode_name
359 ,argument27 => NULL -- errors_only
360 ,argument28 => NULL -- accounting_report_level
361 ,argument29 => NULL -- transfer_to_gl
362 ,argument30 => NULL -- post_in_gl
363 ,argument31 => NULL -- include_zero_amt_lines
364 ,argument32 => p_valuation_method-- valuation_method_code
365 ,argument33 => NULL -- security_int_1
366 ,argument34 => NULL -- security_int_2
367 ,argument35 => NULL -- security_int_3
368 ,argument36 => NULL -- security_char_1
369 ,argument37 => NULL -- security_char_2
370 ,argument38 => NULL ); -- security_char_3
371
372 IF (C_LEVEL_EVENT >= g_log_level) THEN
373 trace
374 (p_msg => 'Procedure FND_REQUEST.SUBMIT_REQUEST executed'
375 ,p_level => C_LEVEL_EVENT
376 ,p_module => l_log_module);
377 END IF;
378
379 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
380 trace
381 (p_msg => 'p_request_id = '||p_request_id
382 ,p_level => C_LEVEL_STATEMENT
383 ,p_module => l_log_module);
384 END IF;
385
386 IF p_request_id = 0 THEN
387 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
388 trace
389 (p_msg => 'Technical Error : Unable to submit the request'
390 ,p_level => C_LEVEL_EXCEPTION
391 ,p_module => l_log_module);
392 END IF;
393
394 xla_exceptions_pkg.raise_message
395 (p_appli_s_name => 'XLA'
396 ,p_msg_name => 'XLA_AP_TECHNICAL_ERROR'
397 ,p_token_1 => 'APPLICATION_NAME'
398 ,p_value_1 => 'SLA');
399 END IF;
400
401 END IF;
402 ELSE
403 raise historic_upgrade_running;
404 END IF;
405
406 IF XLA_ACCOUNTING_CACHE_PKG.g_hist_bflow_error_exists THEN
407 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
408 trace
409 (p_msg => 'Missing bflow entries due to historic upgrade.'
410 ,p_level => C_LEVEL_STATEMENT
411 ,p_module => l_log_module);
412 END IF;
413 p_retcode := 2;
414
415 END IF;
416
417 -- bug 7253269, Online case
418
419 IF XLA_ACCOUNTING_CACHE_PKG.g_reversal_error THEN
420 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
421 trace
422 (p_msg => 'Could not create reversal entry'
423 ,p_level => C_LEVEL_STATEMENT
424 ,p_module => l_log_module);
425 END IF;
426 p_retcode := 2;
427
428 END IF;
429
430
431
432
433 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
434 trace
435 (p_msg => 'END of procedure ACCOUNTING_PROGRAM_DOCUMENT'
436 ,p_level => C_LEVEL_PROCEDURE
437 ,p_module => l_log_module);
438 END IF;
439 EXCEPTION
440 WHEN historic_upgrade_running THEN
441 p_retCode := 2;
442 p_errBuf := 'XLA_UPG_HIST_RUNNING';
443
444
445 WHEN xla_exceptions_pkg.application_exception THEN
446 RAISE;
447 WHEN OTHERS THEN
448 xla_exceptions_pkg.raise_message
449 (p_location => 'xla_accounting_pub_pkg.accounting_program_document');
450 END accounting_program_document; -- end of procedure
451
452
453 --============================================================================
454 --
455 --
456 --
457 --============================================================================
458 PROCEDURE accounting_program_document
459 (p_event_source_info IN xla_events_pub_pkg.t_event_source_info
460 ,p_application_id IN NUMBER DEFAULT NULL
461 ,p_entity_id IN NUMBER
462 ,p_accounting_flag IN VARCHAR2 DEFAULT 'Y'
463 ,p_accounting_mode IN VARCHAR2
464 ,p_transfer_flag IN VARCHAR2
465 ,p_gl_posting_flag IN VARCHAR2
466 ,p_offline_flag IN VARCHAR2
467 ,p_accounting_batch_id OUT NOCOPY NUMBER
468 ,p_errbuf OUT NOCOPY VARCHAR2
469 ,p_retcode OUT NOCOPY NUMBER
470 ,p_request_id OUT NOCOPY NUMBER) IS
471 BEGIN
472 accounting_program_document
473 ( p_event_source_info => p_event_source_info
474 ,p_application_id => p_application_id
475 ,p_valuation_method => NULL -- pass NULL for valuation method
476 ,p_entity_id => p_entity_id
477 ,p_accounting_flag => p_accounting_flag
478 ,p_accounting_mode => p_accounting_mode
479 ,p_transfer_flag => p_transfer_flag
480 ,p_gl_posting_flag => p_gl_posting_flag
481 ,p_offline_flag => p_offline_flag
482 ,p_accounting_batch_id => p_accounting_batch_id
483 ,p_errbuf => p_errbuf
484 ,p_retcode => p_retcode
485 ,p_request_id => p_request_id );
486
487 EXCEPTION
488 WHEN xla_exceptions_pkg.application_exception THEN
489 RAISE;
490 WHEN OTHERS THEN
491 xla_exceptions_pkg.raise_message
492 (p_location => 'xla_accounting_pub_pkg.accounting_program_document');
493 END accounting_program_document; -- end of procedure
494
495 --============================================================================
496 --
497 --
498 --
499 --============================================================================
500 PROCEDURE accounting_program_doc_batch
501 (p_application_id IN INTEGER
502 ,p_accounting_mode IN VARCHAR2
503 ,p_gl_posting_flag IN VARCHAR2
504 ,p_accounting_batch_id IN OUT NOCOPY INTEGER
505 ,p_errbuf IN OUT NOCOPY VARCHAR2
506 ,p_retcode IN OUT NOCOPY INTEGER)
507 IS
508 l_count INTEGER;
509 l_log_module VARCHAR2(240);
510 BEGIN
511 IF g_log_enabled THEN
512 l_log_module := C_DEFAULT_MODULE||'.accounting_program_doc_batch';
513 END IF;
514
515 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
516 trace
517 (p_msg => 'BEGIN of procedure accounting_program_doc_batch'
518 ,p_level => C_LEVEL_PROCEDURE
519 ,p_module => l_log_module);
520 trace
521 (p_msg => 'p_application_id = '||p_application_id
522 ,p_level => C_LEVEL_PROCEDURE
523 ,p_module => l_log_module);
524 trace
525 (p_msg => 'p_accounting_mode = '||p_accounting_mode
526 ,p_level => C_LEVEL_PROCEDURE
527 ,p_module => l_log_module);
528 END IF;
529
530 UPDATE xla_acct_prog_docs_gt xap
531 SET entity_id =
532 (SELECT xte.entity_id
533 FROM xla_transaction_entities xte
534 WHERE xte.application_id = p_application_id
535 AND xte.ledger_id = xap.ledger_id
536 AND xte.entity_code = xap.entity_type_code
537 AND NVL(xte.valuation_method,C_CHAR) = NVL(xap.valuation_method,C_CHAR)
538 AND NVL(xte.source_id_int_1,C_NUM) = NVL(xap.source_id_int_1,C_NUM)
539 AND NVL(xte.source_id_int_2,C_NUM) = NVL(xap.source_id_int_2,C_NUM)
540 AND NVL(xte.source_id_int_3,C_NUM) = NVL(xap.source_id_int_3,C_NUM)
541 AND NVL(xte.source_id_int_4,C_NUM) = NVL(xap.source_id_int_4,C_NUM)
542 AND NVL(xte.source_id_char_1,C_CHAR) = NVL(xap.source_id_char_1,C_CHAR)
543 AND NVL(xte.source_id_char_2,C_CHAR) = NVL(xap.source_id_char_2,C_CHAR)
544 AND NVL(xte.source_id_char_3,C_CHAR) = NVL(xap.source_id_char_3,C_CHAR)
545 AND NVL(xte.source_id_char_4,C_CHAR) = NVL(xap.source_id_char_4,C_CHAR))
546 WHERE xap.entity_id IS NULL;
547
548 SELECT count(*) INTO l_count
549 FROM xla_acct_prog_docs_gt xap
550 WHERE entity_id IS NULL
551 OR NOT EXISTS (SELECT entity_id
552 FROM xla_transaction_entities xte
553 WHERE xte.application_id = p_application_id
554 AND xte.entity_id = xap.entity_id);
555
556 IF (l_count > 0) THEN
557 IF (C_LEVEL_ERROR >= g_log_level) THEN
558 trace
559 (p_msg => 'Invalid entity is used in the xla_acct_prog_docs_gt'
560 ,p_level => C_LEVEL_ERROR
561 ,p_module =>l_log_module);
562 END IF;
563 xla_exceptions_pkg.raise_message
564 (p_appli_s_name => 'XLA'
565 ,p_msg_name => 'XLA_COMMON_ERROR'
566 ,p_token_1 => 'ERROR'
567 ,p_value_1 => 'Invalid entity is used in the xla_acct_prog_docs_gt'
568 ,p_token_2 => 'LOCATION'
569 ,p_value_2 => 'xla_accounting_pub_pkg.accounting_program_doc_batch');
570
571 END IF;
572
573 INSERT INTO XLA_ACCT_PROG_EVENTS_GT(event_id, ledger_id)
574 SELECT xe.event_id, xte.ledger_id
575 FROM xla_acct_prog_docs_gt xap
576 ,xla_events xe
577 ,xla_transaction_entities xte
578 WHERE xte.application_id = p_application_id
579 AND xte.entity_id = xap.entity_id
580 AND xap.entity_id IS NOT NULL
581 AND xe.application_id = xte.application_id
582 AND xe.entity_id = xte.entity_id
583 AND NVL(budgetary_control_flag,'N') = DECODE(p_accounting_mode
584 ,'D','N'
585 ,'F','N'
586 ,'Y');
587
588 IF (C_LEVEL_EVENT >= g_log_level) THEN
589 trace
590 (p_msg => '# row inserted into xla_acct_prog_events_gt = '||SQL%ROWCOUNT
591 ,p_level => C_LEVEL_EVENT
592 ,p_module => l_log_module);
593 END IF;
594
595
596 --7390659 change start
597
598 INSERT INTO xla_evt_class_orders_gt
599 (event_class_code
600 ,processing_order
601 )
602 SELECT xec.event_class_code
603 , NVL(t.max_level, -1)
604 FROM xla_event_classes_b xec
605 , (SELECT application_id, event_class_code, max(LEVEL) AS max_level
606 FROM (SELECT application_id, event_class_code, prior_event_class_code
607 FROM xla_event_class_predecs
608 WHERE application_id = p_application_id
609 UNION
610 SELECT application_id, prior_event_class_code, NULL
611 FROM xla_event_class_predecs
612 WHERE application_id = p_application_id) xep
613 CONNECT BY application_id = PRIOR application_id
614 AND prior_event_class_code = PRIOR event_class_code
615 GROUP BY application_id, event_class_code) t
616 WHERE xec.event_class_code = t.event_class_code(+)
617 AND xec.application_id = t.application_id(+)
618 AND xec.application_id = p_application_id
619 AND xec.event_class_code <> 'MANUAL';
620
621
622 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
623 trace
624 (p_msg => 'Number of rows inserted into xla_evt_class_orders_gt = '||SQL%ROWCOUNT
625 ,p_level => C_LEVEL_STATEMENT
626 ,p_module => l_log_module);
627 END IF;
628
629
630 --7390659 change end
631
632
633
634
635
636 xla_accounting_pkg.accounting_program_events
637 (p_application_id => p_application_id
638 ,p_accounting_mode => p_accounting_mode
639 ,p_gl_posting_flag => p_gl_posting_flag
640 ,p_offline_flag => 'N'
641 ,p_accounting_batch_id => p_accounting_batch_id
642 ,p_errbuf => p_errbuf
643 ,p_retcode => p_retcode);
644
645 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
646 trace
647 (p_msg => 'END of procedure accounting_program_doc_batch'
648 ,p_level => C_LEVEL_PROCEDURE
649 ,p_module => l_log_module);
650 END IF;
651 EXCEPTION
652 WHEN xla_exceptions_pkg.application_exception THEN
653 RAISE;
654 WHEN OTHERS THEN
655 xla_exceptions_pkg.raise_message
656 (p_location => 'xla_accounting_pub_pkg.accounting_program_doc_batch');
657 END accounting_program_doc_batch; -- end of procedure
658
659 --============================================================================
660 --
661 --
662 --
663 --============================================================================
664 PROCEDURE accounting_program_events
665 (p_application_id IN INTEGER
666 ,p_accounting_mode IN VARCHAR2
667 ,p_gl_posting_flag IN VARCHAR2
668 ,p_accounting_batch_id IN OUT NOCOPY INTEGER
669 ,p_errbuf IN OUT NOCOPY VARCHAR2
670 ,p_retcode IN OUT NOCOPY INTEGER
671 )
672 IS
673 CURSOR c_invalid_events IS
674 SELECT 1
675 FROM xla_acct_prog_events_gt xap
676 , xla_events xe
677 WHERE xe.application_id = p_application_id
678 AND xe.event_id = xap.event_id
679 AND NVL(xe.budgetary_control_flag,'N') = DECODE(p_accounting_mode
680 ,'DRAFT','Y' -- 5109240a replace 'D'
681 ,'FINAL','Y' -- 5109240a replace 'F'
682 ,'N')
683 AND ROWNUM = 1;
684
685 l_dummy INTEGER;
686 l_count INTEGER;
687 l_log_module VARCHAR2(240);
688 BEGIN
689 IF g_log_enabled THEN
690 l_log_module := C_DEFAULT_MODULE||'.accounting_program_events';
691 END IF;
692
693 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
694 trace
695 (p_msg => 'BEGIN of procedure accounting_program_events'
696 ,p_level => C_LEVEL_PROCEDURE
697 ,p_module => l_log_module);
698 trace
699 (p_msg => 'p_application_id = '||p_application_id
700 ,p_level => C_LEVEL_PROCEDURE
701 ,p_module => l_log_module);
702 trace
703 (p_msg => 'p_accounting_mode = '||p_accounting_mode
704 ,p_level => C_LEVEL_PROCEDURE
705 ,p_module => l_log_module);
706
707 END IF;
708
709 -- 7193986 start
710
711
712 INSERT INTO xla_evt_class_orders_gt
713 (event_class_code
714 ,processing_order
715 )
716 SELECT xec.event_class_code
717 , NVL(t.max_level, -1)
718 FROM xla_event_classes_b xec
719 , (SELECT application_id, event_class_code, max(LEVEL) AS max_level
720 FROM (SELECT application_id, event_class_code, prior_event_class_code
721 FROM xla_event_class_predecs
722 WHERE application_id = p_application_id
723 UNION
724 SELECT application_id, prior_event_class_code, NULL
725 FROM xla_event_class_predecs
726 WHERE application_id = p_application_id) xep
727 CONNECT BY application_id = PRIOR application_id
728 AND prior_event_class_code = PRIOR event_class_code
729 GROUP BY application_id, event_class_code) t
730 WHERE xec.event_class_code = t.event_class_code(+)
731 AND xec.application_id = t.application_id(+)
732 AND xec.application_id = p_application_id
733 AND xec.event_class_code <> 'MANUAL';
734
735
736 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
737 trace
738 (p_msg => 'Number of rows inserted into xla_evt_class_orders_gt = '||SQL%ROWCOUNT
739 ,p_level => C_LEVEL_STATEMENT
740 ,p_module => l_log_module);
741 END IF;
742
743 -- 7193986 end
744
745
746
747
748
749
750
751 UPDATE xla_acct_prog_events_gt xpa
752 SET (ledger_id) =
753 (SELECT ledger_id
754 FROM xla_events xe
755 , xla_transaction_entities xte
756 WHERE xte.application_id = xe.application_id
757 AND xte.entity_id = xe.entity_id
758 AND xe.application_id = p_application_id
759 AND xe.event_id = xpa.event_id);
760
761 SELECT count(*) into l_count
762 FROM xla_acct_prog_events_gt
763 WHERE ledger_id IS NULL;
764
765 OPEN c_invalid_events;
766 FETCH c_invalid_events INTO l_dummy;
767 CLOSE c_invalid_events;
768
769 IF (l_dummy IS NOT NULL) THEN
770 --IF (p_accounting_mode in ('D', 'F')) THEN
771 IF (p_accounting_mode in ('DRAFT', 'FINAL')) THEN -- 5109240a
772 IF (C_LEVEL_ERROR >= g_log_level) THEN
773 trace
774 (p_msg => 'Error: XLA_AP_INV_EVENT_MODE_NON_BC'
775 ,p_level => C_LEVEL_PROCEDURE
776 ,p_module => l_log_module);
777 END IF;
778
779 xla_exceptions_pkg.raise_message
780 (p_appli_s_name => 'XLA'
781 ,p_msg_name => 'XLA_AP_INV_EVENT_MODE_NON_BC'
782 ,p_token_1 => 'LOCATION'
783 ,p_value_1 => 'xla_accounting_pub_pkg.accounting_program_events'
784 ,p_token_2 => 'ERROR'
785 ,p_value_2 => 'Budgetary control events exists for non-budgetary control mode');
786 ELSE
787 IF (C_LEVEL_ERROR >= g_log_level) THEN
788 trace
789 (p_msg => 'Error: XLA_AP_INV_EVENT_MODE_BC'
790 ,p_level => C_LEVEL_PROCEDURE
791 ,p_module => l_log_module);
792 END IF;
793
794 xla_exceptions_pkg.raise_message
795 (p_appli_s_name => 'XLA'
796 ,p_msg_name => 'XLA_AP_INV_EVENT_MODE_BC'
797 ,p_token_1 => 'LOCATION'
798 ,p_value_1 => 'xla_accounting_pub_pkg.accounting_program_events'
799 ,p_token_2 => 'ERROR'
800 ,p_value_2 => 'Non-budgetary control events exists for budgetary control mode');
801 END IF;
802 END IF;
803
804 xla_accounting_pkg.accounting_program_events
805 (p_application_id => p_application_id
806 ,p_accounting_mode => p_accounting_mode
807 ,p_gl_posting_flag => p_gl_posting_flag
808 ,p_offline_flag => 'N'
809 ,p_accounting_batch_id => p_accounting_batch_id
810 ,p_errbuf => p_errbuf
811 ,p_retcode => p_retcode);
812
813 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
814 trace
815 (p_msg => 'END of procedure accounting_program_events'
816 ,p_level => C_LEVEL_PROCEDURE
817 ,p_module => l_log_module);
818 END IF;
819 EXCEPTION
820 WHEN xla_exceptions_pkg.application_exception THEN
821 RAISE;
822 WHEN OTHERS THEN
823 xla_exceptions_pkg.raise_message
824 (p_location => 'xla_accounting_pub_pkg.accounting_program_events');
825 END accounting_program_events; -- end of procedure
826
827
828 --=============================================================================
829 --
830 --
831 --
832 -- Function is_historic_upgrade_running
833 --
834 --
835 --
836 --=============================================================================
837
838 FUNCTION is_historic_upgrade_running
839 (
840 p_ledger_id IN NUMBER
841 ) RETURN BOOLEAN
842 IS
843 l_count NUMBER := 0;
844 l_log_module VARCHAR2(240);
845
846 BEGIN
847 IF g_log_enabled THEN
848 l_log_module := C_DEFAULT_MODULE||'.is_historic_upgrade_running';
849 END IF;
850 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
851 trace
852 (p_msg => 'Begin of is_historic_upgrade_running'
853 ,p_level => C_LEVEL_STATEMENT
854 ,p_module => l_log_module);
855 END IF;
856
857 xla_environment_pkg.Refresh;
858
859 -- Check if any historic upgrade has been submitted for the same ledger as the current one .
860
861
862 select count(*) into l_count from dual
863 where exists (select 1 from gl_ledger_relationships
864 where primary_ledger_id = p_ledger_id and hist_conv_status_code = 'RUNNING');
865
866 IF (l_count =1) THEN
867 RETURN (TRUE);
868 ELSE
869 RETURN (FALSE);
870 END IF;
871 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
872 trace
873 (p_msg => 'End of is_historic_upgrade_running'
874 ,p_level => C_LEVEL_STATEMENT
875 ,p_module => l_log_module);
876 END IF;
877
878 END is_historic_upgrade_running;
879
880
881 --=============================================================================
882 -- *********** Initialization routine **********
883 --=============================================================================
884
885 --=============================================================================
886 --
887 --
888 --
889 --
890 --
891 --
892 --
893 --
894 --
895 --
896 -- Following code is executed when the package body is referenced for the first
897 -- time
898 --
899 --
900 --
901 --
902 --
903 --
904 --
905 --
906 --
907 --
908 --
909 --
910 --=============================================================================
911
912 BEGIN
913 g_log_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
914 g_log_enabled := fnd_log.test
915 (log_level => g_log_level
916 ,module => C_DEFAULT_MODULE);
917
918 g_log_level := C_LEVEL_STATEMENT;
919 g_log_enabled := TRUE;
920
921 IF NOT g_log_enabled THEN
922 g_log_level := C_LEVEL_LOG_DISABLED;
923 END IF;
924
925 END xla_accounting_pub_pkg; -- end of package body