[Home] [Help]
PACKAGE BODY: APPS.XLA_IGI_ACCT_HOOKS_PKG
Source
1 PACKAGE BODY xla_igi_acct_hooks_pkg AS
2 /*$Header: xlaapigh.pkb 120.0.12000000.1 2007/10/24 14:06:42 samejain noship $*/
3 /*===========================================================================+
4 | Copyright (c) 2003 Oracle Corporation BelmFont, California, USA |
5 | ALL rights reserved. |
6 +============================================================================+
7 | PACKAGE NAME |
8 | xla_igi_acct_hooks_pkg |
9 | |
10 | DESCRIPTION |
11 | Call accounting program integration APIs for IGI |
12 | |
13 | HISTORY |
14 | 08/30/2007 S. Jain Created |
15 | |
16 +===========================================================================*/
17
18
19 --=============================================================================
20 -- **************** declaraions ********************
21 --=============================================================================
22
23 --=============================================================================
24 -- *********** Local Trace Routine **********
25 --=============================================================================
26 C_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
27 C_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
28 C_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
29 C_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
30 C_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
31 C_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
32
33 C_LEVEL_LOG_DISABLED CONSTANT NUMBER := 99;
34 C_DEFAULT_MODULE CONSTANT VARCHAR2(240) := 'xla.plsql.xla_igi_acct_hooks_pkg';
35
36 g_log_level NUMBER;
37 g_log_enabled BOOLEAN;
38
39 PROCEDURE trace
40 (p_msg IN VARCHAR2
41 ,p_level IN NUMBER
42 ,p_module IN VARCHAR2 DEFAULT C_DEFAULT_MODULE) IS
43 BEGIN
44 IF (p_msg IS NULL AND p_level >= g_log_level) THEN
45 fnd_log.message(p_level, NVL(p_module,C_DEFAULT_MODULE));
46 ELSIF p_level >= g_log_level THEN
47 fnd_log.string(p_level, NVL(p_module,C_DEFAULT_MODULE), p_msg);
48 END IF;
49
50 EXCEPTION
51 WHEN xla_exceptions_pkg.application_exception THEN
52 RAISE;
53 WHEN OTHERS THEN
54 xla_exceptions_pkg.raise_message
55 (p_location => 'xla_igi_acct_hooks_pkg.trace');
56 END trace;
57
58 --=============================================================================
59 -- ******* Print Log File **********
60 --=============================================================================
61 PROCEDURE print_logfile(p_msg IN VARCHAR2) IS
62 BEGIN
63
64 fnd_file.put_line(fnd_file.log,p_msg);
65
66 EXCEPTION
67 WHEN xla_exceptions_pkg.application_exception THEN
68 RAISE;
69 WHEN OTHERS THEN
70 xla_exceptions_pkg.raise_message
71 (p_location => 'xla_igi_acct_hooks_pkg.print_logfile');
72 END print_logfile;
73
74
75 --=============================================================================
76 -- *********** public procedures and functions **********
77 --=============================================================================
78 --=============================================================================
79 --
80 --
81 --
82 --
83 --
84 --
85 --
86 --
87 --
88 --
89 --
90 -- 1. main (procedure)
91 --
92 --
93 --
94 --
95 --
96 --
97 --
98 --
99 --
100 --
101 --=============================================================================
102
103 --=============================================================================
104
105 --============================================================================
106 --
107 --
108 --
109 --============================================================================
110 PROCEDURE main
111 (p_application_id IN NUMBER
112 ,p_ledger_id IN NUMBER
113 ,p_process_category IN VARCHAR2
114 ,p_end_date IN DATE
115 ,p_accounting_mode IN VARCHAR2
116 ,p_valuation_method IN VARCHAR2
117 ,p_security_id_int_1 IN NUMBER
118 ,p_security_id_int_2 IN NUMBER
119 ,p_security_id_int_3 IN NUMBER
120 ,p_security_id_char_1 IN VARCHAR2
121 ,p_security_id_char_2 IN VARCHAR2
122 ,p_security_id_char_3 IN VARCHAR2
123 ,p_report_request_id IN NUMBER
124 ,p_event_name IN VARCHAR2)
125 IS
126 l_log_module VARCHAR2(240);
127 l_sqlerrm VARCHAR2(2000);
128 l_statement VARCHAR2(1000) := NULL ;
129 l_count NUMBER := 0;
130 BEGIN
131
132 IF g_log_enabled THEN
133 l_log_module := C_DEFAULT_MODULE||'.main';
134 END IF;
135
136 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
137 trace
138 (p_msg => 'BEGIN of procedure Main'
139 ,p_level => C_LEVEL_PROCEDURE
140 ,p_module => l_log_module);
141 trace
142 (p_msg => 'p_application_id = '||p_application_id
143 ,p_level => C_LEVEL_PROCEDURE
144 ,p_module => l_log_module);
145 trace
146 (p_msg => 'p_accounting_mode = '||p_accounting_mode
147 ,p_level => C_LEVEL_PROCEDURE
148 ,p_module => l_log_module);
149 trace
150 (p_msg => 'p_event_name = '||p_event_name
151 ,p_level => C_LEVEL_PROCEDURE
152 ,p_module => l_log_module);
153 END IF;
154
155 IF (C_LEVEL_PROCEDURE >= g_log_level) AND
156 (p_event_name IN ('preaccounting','postaccounting'))
157 THEN
158 trace
159 (p_msg => 'p_ledger_id = '||p_ledger_id
160 ,p_level => C_LEVEL_PROCEDURE
161 ,p_module => l_log_module);
162 trace
163 (p_msg => 'p_process_category = '||p_process_category
164 ,p_level => C_LEVEL_PROCEDURE
165 ,p_module => l_log_module);
166 trace
167 (p_msg => 'p_end_date = '||p_end_date
168 ,p_level => C_LEVEL_PROCEDURE
169 ,p_module => l_log_module);
170 trace
171 (p_msg => 'p_valuation_method = '||p_valuation_method
172 ,p_level => C_LEVEL_PROCEDURE
173 ,p_module => l_log_module);
174 trace
175 (p_msg => 'p_security_id_int_1 = '||p_security_id_int_1
176 ,p_level => C_LEVEL_PROCEDURE
177 ,p_module => l_log_module);
178 trace
179 (p_msg => 'p_security_id_int_2 = '||p_security_id_int_2
180 ,p_level => C_LEVEL_PROCEDURE
181 ,p_module => l_log_module);
182 trace
183 (p_msg => 'p_security_id_int_3 = '||p_security_id_int_3
184 ,p_level => C_LEVEL_PROCEDURE
185 ,p_module => l_log_module);
186 trace
187 (p_msg => 'p_security_id_char_1 = '||p_security_id_char_1
188 ,p_level => C_LEVEL_PROCEDURE
189 ,p_module => l_log_module);
190 trace
191 (p_msg => 'p_security_id_char_2 = '||p_security_id_char_2
192 ,p_level => C_LEVEL_PROCEDURE
193 ,p_module => l_log_module);
194 trace
195 (p_msg => 'p_security_id_char_3 = '||p_security_id_char_3
196 ,p_level => C_LEVEL_PROCEDURE
197 ,p_module => l_log_module);
198 trace
199 (p_msg => 'p_report_request_id = '||p_report_request_id
200 ,p_level => C_LEVEL_PROCEDURE
201 ,p_module => l_log_module);
202 END IF;
203
204 select count(*) into l_count from user_objects
205 where object_name = 'IGI_XLA_ACCOUNTING_MAIN_PKG'
206 and object_type = 'PACKAGE BODY';
207
208 ----------------------------------------------------------------------------
209 -- Calling different event depending on event_name
210 ----------------------------------------------------------------------------
211
212 CASE
213 WHEN p_event_name = 'preaccounting' THEN
214 -------------------------------------------------------------------------
215 -- Following code calls preaccounting API
216 -------------------------------------------------------------------------
217 IF (C_LEVEL_EVENT >= g_log_level) THEN
218 trace
219 (p_msg => 'Ready to call preaccounting API for IGI'
220 ,p_level => C_LEVEL_EVENT
221 ,p_module => l_log_module);
222 END IF;
223
224 l_statement := 'BEGIN
225 igi_xla_accounting_main_pkg.preaccounting(:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13);
226 END;';
227
228 IF ( l_count <> 0) THEN
229
230 EXECUTE IMMEDIATE l_statement
231 USING IN p_application_id
232 ,IN p_ledger_id
233 ,IN p_process_category
234 ,IN p_end_date
235 ,IN p_accounting_mode
236 ,IN p_valuation_method
237 ,IN p_security_id_int_1
238 ,IN p_security_id_int_2
239 ,IN p_security_id_int_3
240 ,IN p_security_id_char_1
241 ,IN p_security_id_char_2
242 ,IN p_security_id_char_3
243 ,IN p_report_request_id;
244 END IF;
245
246 IF (C_LEVEL_EVENT >= g_log_level) THEN
247 trace
248 (p_msg => 'Control returned from preaccounting API'
249 ,p_level => C_LEVEL_EVENT
250 ,p_module => l_log_module);
251 END IF;
252
253 WHEN p_event_name = 'extract' THEN
254 -------------------------------------------------------------------------
255 -- Following code calls extract API
256 -------------------------------------------------------------------------
257 IF (C_LEVEL_EVENT >= g_log_level) THEN
258 trace
259 (p_msg => 'Ready to call extract API for IGI'
260 ,p_level => C_LEVEL_EVENT
261 ,p_module => l_log_module);
262 END IF;
263
264 l_statement := 'BEGIN igi_xla_accounting_main_pkg.extract(:1,:2); END;';
265
266 IF ( l_count <> 0) THEN
267
268 EXECUTE IMMEDIATE l_statement
269 USING IN p_application_id
270 ,IN p_accounting_mode;
271 END IF;
272
273 IF (C_LEVEL_EVENT >= g_log_level) THEN
274 trace
275 (p_msg => 'Control returned from extract API'
276 ,p_level => C_LEVEL_EVENT
277 ,p_module => l_log_module);
278 END IF;
279
280 WHEN p_event_name = 'postprocessing' THEN
281 -------------------------------------------------------------------------
282 -- Following code calls postprocessing API
283 -------------------------------------------------------------------------
284 IF (C_LEVEL_EVENT >= g_log_level) THEN
285 trace
286 (p_msg => 'Ready to call postprocessing API for IGI'
287 ,p_level => C_LEVEL_EVENT
288 ,p_module => l_log_module);
289 END IF;
290
291 l_statement := 'BEGIN igi_xla_accounting_main_pkg.postprocessing(:1,:2);
292 END;';
293
294 IF ( l_count <> 0) THEN
295
296 EXECUTE IMMEDIATE l_statement
297 USING IN p_application_id
298 ,IN p_accounting_mode;
299 END IF;
300
301 IF (C_LEVEL_EVENT >= g_log_level) THEN
302 trace
303 (p_msg => 'Control returned from postprocessing API'
304 ,p_level => C_LEVEL_EVENT
305 ,p_module => l_log_module);
306 END IF;
307
308 WHEN p_event_name = 'postaccounting' THEN
309 -------------------------------------------------------------------------
310 -- Following code calls postaccounting API
311 -------------------------------------------------------------------------
312 IF (C_LEVEL_EVENT >= g_log_level) THEN
313 trace
314 (p_msg => 'Ready to call postaccounting API for IGI'
315 ,p_level => C_LEVEL_EVENT
316 ,p_module => l_log_module);
317 END IF;
318
319 l_statement := 'BEGIN
320 igi_xla_accounting_main_pkg.postaccounting(:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13);
321 END;';
322
323 IF ( l_count <> 0) THEN
324
325 EXECUTE IMMEDIATE l_statement
326 USING IN p_application_id
327 ,IN p_ledger_id
328 ,IN p_process_category
329 ,IN p_end_date
330 ,IN p_accounting_mode
331 ,IN p_valuation_method
332 ,IN p_security_id_int_1
333 ,IN p_security_id_int_2
334 ,IN p_security_id_int_3
335 ,IN p_security_id_char_1
336 ,IN p_security_id_char_2
337 ,IN p_security_id_char_3
338 ,IN p_report_request_id;
339 END IF;
340
341 IF (C_LEVEL_EVENT >= g_log_level) THEN
342 trace
343 (p_msg => 'Control returned from postaccounting API'
344 ,p_level => C_LEVEL_EVENT
345 ,p_module => l_log_module);
346 END IF;
347 END CASE;
348 EXCEPTION
349 WHEN xla_exceptions_pkg.application_exception THEN
350 l_sqlerrm := fnd_message.get();
351
352 IF (C_LEVEL_EXCEPTION>= g_log_level) THEN
353 trace
354 (p_msg => 'Technical problem : Error encountered in product API for '||p_event_name||
355 xla_environment_pkg.g_chr_newline||
356 l_sqlerrm
357 ,p_level => C_LEVEL_EXCEPTION
358 ,p_module => l_log_module);
359 END IF;
360
361 xla_accounting_err_pkg.build_message
362 (p_appli_s_name => 'XLA'
363 ,p_msg_name => 'XLA_AP_TECHNICAL_ERROR'
364 ,p_token_1 => 'APPLICATION_NAME'
365 ,p_value_1 => 'SLA'
366 ,p_entity_id => NULL
367 ,p_event_id => NULL);
368
369 print_logfile('Technical problem : Error encountered in product API for '||p_event_name);
370
371 xla_exceptions_pkg.raise_message
372 (p_appli_s_name => 'XLA'
373 ,p_msg_name => 'XLA_COMMON_ERROR'
374 ,p_token_1 => 'LOCATION'
375 ,p_value_1 => 'xla_igi_acct_hooks_pkg.main'
376 ,p_token_2 => 'ERROR'
377 ,p_value_2 => 'Technical problem : Error encountered in product API for '||p_event_name||
378 xla_environment_pkg.g_chr_newline||l_sqlerrm);
379 WHEN OTHERS THEN
380 l_sqlerrm := sqlerrm;
381
382 IF (C_LEVEL_EXCEPTION>= g_log_level) THEN
383 trace
384 (p_msg => 'Technical problem : Error encountered in product API for '||p_event_name||
385 xla_environment_pkg.g_chr_newline||l_sqlerrm
386 ,p_level => C_LEVEL_EXCEPTION
387 ,p_module => l_log_module);
388 END IF;
389
390 xla_accounting_err_pkg.build_message
391 (p_appli_s_name => 'XLA'
392 ,p_msg_name => 'XLA_AP_TECHNICAL_ERROR'
393 ,p_token_1 => 'APPLICATION_NAME'
394 ,p_value_1 => 'SLA'
395 ,p_entity_id => NULL
396 ,p_event_id => NULL);
397
398 print_logfile('Technical problem : Error encountered in product API for '||p_event_name);
399
400 xla_exceptions_pkg.raise_message
401 (p_appli_s_name => 'XLA'
402 ,p_msg_name => 'XLA_COMMON_ERROR'
403 ,p_token_1 => 'LOCATION'
404 ,p_value_1 => 'xla_igi_acct_hooks_pkg.main'
405 ,p_token_2 => 'ERROR'
406 ,p_value_2 => 'Technical problem : Error encountered in product API for '||p_event_name||
407 xla_environment_pkg.g_chr_newline||
408 l_sqlerrm);
409 END main;
410
411
412 --=============================================================================
413 -- *********** Initialization routine **********
414 --=============================================================================
415
416 --=============================================================================
417 --
418 --
419 --
420 --
421 --
422 --
423 --
424 --
425 --
426 --
427 -- Following code is executed when the package body is referenced for the first
428 -- time
429 --
430 --
431 --
432 --
433 --
434 --
435 --
436 --
437 --
438 --
439 --
440 --
441 --=============================================================================
442
443 BEGIN
444 g_log_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
445 g_log_enabled := fnd_log.test
446 (log_level => g_log_level
447 ,MODULE => C_DEFAULT_MODULE);
448
449 IF NOT g_log_enabled THEN
450 g_log_level := C_LEVEL_LOG_DISABLED;
451 END IF;
452 END xla_igi_acct_hooks_pkg;