DBA Data[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;