DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_AP_ACCT_HOOKS_PKG

Source


1 PACKAGE BODY xla_ap_acct_hooks_pkg AS
2 -- $Header: xlaapaph.pkb 120.2 2006/06/28 05:48:48 vinaykum noship $
3 /*===========================================================================+
4 |  Copyright (c) 2003 Oracle Corporation BelmFont, California, USA           |
5 |                          ALL rights reserved.                              |
6 +============================================================================+
7 | PACKAGE NAME                                                               |
8 |     xla_ap_acct_hooks_pkg                                                  |
9 |                                                                            |
10 | DESCRIPTION                                                                |
11 |     Call accounting program integration APIs for Account Payables          |
12 |                                                                            |
13 | HISTORY                                                                    |
14 |     05/27/2005    V. Kumar        Created                                  |
15 |     06/10/2005    V. Kumar        Bug#4421985 Corrected the spelling of    |
16 |                                       event names                          |
17 |                                                                            |
18 +===========================================================================*/
19 
20 
21 --=============================================================================
22 --           ****************  declaraions  ********************
23 --=============================================================================
24 
25 --=============================================================================
26 --               *********** Local Trace Routine **********
27 --=============================================================================
28 C_LEVEL_STATEMENT     CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
29 C_LEVEL_PROCEDURE     CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
30 C_LEVEL_EVENT         CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
31 C_LEVEL_EXCEPTION     CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
32 C_LEVEL_ERROR         CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
33 C_LEVEL_UNEXPECTED    CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
34 
35 C_LEVEL_LOG_DISABLED  CONSTANT NUMBER := 99;
36 C_DEFAULT_MODULE      CONSTANT VARCHAR2(240) := 'xla.plsql.xla_ap_acct_hooks_pkg';
37 
38 g_log_level           NUMBER;
39 g_log_enabled         BOOLEAN;
40 
41 PROCEDURE trace
42        (p_msg                        IN VARCHAR2
43        ,p_level                      IN NUMBER
44        ,p_module                     IN VARCHAR2 DEFAULT C_DEFAULT_MODULE) IS
45 BEGIN
46    IF (p_msg IS NULL AND p_level >= g_log_level) THEN
47       fnd_log.message(p_level, NVL(p_module,C_DEFAULT_MODULE));
48    ELSIF p_level >= g_log_level THEN
49       fnd_log.string(p_level, NVL(p_module,C_DEFAULT_MODULE), p_msg);
50    END IF;
51 
52 EXCEPTION
53    WHEN xla_exceptions_pkg.application_exception THEN
54       RAISE;
55    WHEN OTHERS THEN
56       xla_exceptions_pkg.raise_message
57          (p_location   => 'xla_ap_acct_hooks_pkg.trace');
58 END trace;
59 
60 --=============================================================================
61 --                   ******* Print Log File **********
62 --=============================================================================
63 PROCEDURE print_logfile(p_msg  IN  VARCHAR2) IS
64 BEGIN
65 
66    fnd_file.put_line(fnd_file.log,p_msg);
67 
68 EXCEPTION
69    WHEN xla_exceptions_pkg.application_exception THEN
70       RAISE;
71    WHEN OTHERS THEN
72       xla_exceptions_pkg.raise_message
73          (p_location   => 'xla_ap_acct_hooks_pkg.print_logfile');
74 
75 END print_logfile;
76 
77 --=============================================================================
78 --          *********** public procedures and functions **********
79 --=============================================================================
80 --=============================================================================
81 --
82 --
83 --
84 --
85 --
86 --
87 --
88 --
89 --
90 --
91 --
92 --    1.    main (procedure)
93 --
94 --
95 --
96 --
97 --
98 --
99 --
100 --
101 --
102 --
103 --=============================================================================
104 
105 --=============================================================================
106 
107 --============================================================================
108 --
109 --
110 --
111 --============================================================================
112 PROCEDURE main
113        (p_application_id           IN NUMBER
114        ,p_ledger_id                IN NUMBER
115        ,p_process_category         IN VARCHAR2
116        ,p_end_date                 IN DATE
117        ,p_accounting_mode          IN VARCHAR2
118        ,p_valuation_method         IN VARCHAR2
119        ,p_security_id_int_1        IN NUMBER
120        ,p_security_id_int_2        IN NUMBER
121        ,p_security_id_int_3        IN NUMBER
122        ,p_security_id_char_1       IN VARCHAR2
123        ,p_security_id_char_2       IN VARCHAR2
124        ,p_security_id_char_3       IN VARCHAR2
125        ,p_report_request_id        IN NUMBER
126        ,p_event_name               IN VARCHAR2)
127 IS
128 l_log_module         VARCHAR2(240);
129 l_sqlerrm            VARCHAR2(2000);
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    ----------------------------------------------------------------------------
205    -- Calling different event depending on event_name
206    ----------------------------------------------------------------------------
207 
208    CASE
209    WHEN  p_event_name = 'preaccounting'  THEN
210       -------------------------------------------------------------------------
211       -- Following code calls preaccounting API
212       -------------------------------------------------------------------------
213       IF (C_LEVEL_EVENT >= g_log_level) THEN
214          trace
215             (p_msg      => 'Ready to call preaccounting API for Account Payables'
216             ,p_level    => C_LEVEL_EVENT
217             ,p_module   => l_log_module);
218       END IF;
219 
220       ap_sla_processing_pkg.preaccounting
221             ( p_application_id     => p_application_id
222              ,p_ledger_id          => p_ledger_id
223              ,p_process_category   => p_process_category
224              ,p_end_date           => p_end_date
225              ,p_accounting_mode    => p_accounting_mode
226              ,p_valuation_method   => p_valuation_method
227              ,p_security_id_int_1  => p_security_id_int_1
228              ,p_security_id_int_2  => p_security_id_int_2
229              ,p_security_id_int_3  => p_security_id_int_3
230              ,p_security_id_char_1 => p_security_id_char_1
231              ,p_security_id_char_2 => p_security_id_char_2
232              ,p_security_id_char_3 => p_security_id_char_3
233              ,p_report_request_id  => p_report_request_id  );
234 
235       IF (C_LEVEL_EVENT >= g_log_level) THEN
236          trace
237             (p_msg      => 'Control returned from preaccounting API'
238             ,p_level    => C_LEVEL_EVENT
239             ,p_module   => l_log_module);
240       END IF;
241 
242    WHEN p_event_name = 'extract'        THEN
243       -------------------------------------------------------------------------
244       -- Following code calls extract API
245       -------------------------------------------------------------------------
246       IF (C_LEVEL_EVENT >= g_log_level) THEN
247          trace
248             (p_msg      => 'Ready to call extract API for Account Payables'
249             ,p_level    => C_LEVEL_EVENT
250             ,p_module   => l_log_module);
251       END IF;
252 
253       ap_sla_processing_pkg.extract
254             ( p_application_id     => p_application_id
255              ,p_accounting_mode    => p_accounting_mode);
256 
257       IF (C_LEVEL_EVENT >= g_log_level) THEN
258          trace
259             (p_msg      => 'Control returned from extract API'
260             ,p_level    => C_LEVEL_EVENT
261             ,p_module   => l_log_module);
262       END IF;
263 
264    WHEN p_event_name = 'postprocessing'  THEN
265       -------------------------------------------------------------------------
266       -- Following code calls postprocessing API
267       -------------------------------------------------------------------------
268       IF (C_LEVEL_EVENT >= g_log_level) THEN
269          trace
270             (p_msg      => 'Ready to call postprocessing API for Account Payables'
271             ,p_level    => C_LEVEL_EVENT
272             ,p_module   => l_log_module);
273       END IF;
274 
275       ap_sla_processing_pkg.postprocessing
276             ( p_application_id     => p_application_id
277              ,p_accounting_mode    => p_accounting_mode);
278 
279       IF (C_LEVEL_EVENT >= g_log_level) THEN
280          trace
281             (p_msg      => 'Control returned from postprocessing API'
282             ,p_level    => C_LEVEL_EVENT
283             ,p_module   => l_log_module);
284       END IF;
285 
286    WHEN p_event_name = 'postaccounting'  THEN
287       -------------------------------------------------------------------------
288       -- Following code calls postaccounting API
289       -------------------------------------------------------------------------
290       IF (C_LEVEL_EVENT >= g_log_level) THEN
291          trace
292             (p_msg      => 'Ready to call postaccounting API for Account Payables'
293             ,p_level    => C_LEVEL_EVENT
294             ,p_module   => l_log_module);
295       END IF;
296 
297       ap_sla_processing_pkg.postaccounting
298             ( p_application_id     => p_application_id
299              ,p_ledger_id          => p_ledger_id
300              ,p_process_category   => p_process_category
301              ,p_end_date           => p_end_date
302              ,p_accounting_mode    => p_accounting_mode
303              ,p_valuation_method   => p_valuation_method
304              ,p_security_id_int_1  => p_security_id_int_1
305              ,p_security_id_int_2  => p_security_id_int_2
306              ,p_security_id_int_3  => p_security_id_int_3
307              ,p_security_id_char_1 => p_security_id_char_1
308              ,p_security_id_char_2 => p_security_id_char_2
309              ,p_security_id_char_3 => p_security_id_char_3
310              ,p_report_request_id  => p_report_request_id  );
311 
312       IF (C_LEVEL_EVENT >= g_log_level) THEN
313          trace
314             (p_msg      => 'Control returned from postaccounting API'
315             ,p_level    => C_LEVEL_EVENT
316             ,p_module   => l_log_module);
317       END IF;
318    END CASE;
319 EXCEPTION
320 WHEN xla_exceptions_pkg.application_exception THEN
321    l_sqlerrm := fnd_message.get();
322 
323    IF (C_LEVEL_EXCEPTION>= g_log_level) THEN
324       trace
325          (p_msg      => 'Technical problem : Error encountered in product API for '||p_event_name||
326                         xla_environment_pkg.g_chr_newline||
327                         l_sqlerrm
328          ,p_level    => C_LEVEL_EXCEPTION
329          ,p_module   => l_log_module);
330    END IF;
331 
332    xla_accounting_err_pkg.build_message
333       (p_appli_s_name   => 'XLA'
334       ,p_msg_name       => 'XLA_AP_TECHNICAL_ERROR'
335       ,p_token_1        => 'APPLICATION_NAME'
336       ,p_value_1        => 'SLA'
337       ,p_entity_id      => NULL
338       ,p_event_id       => NULL);
339 
340    print_logfile('Technical problem : Error encountered in product API for '||p_event_name);
341 
342    xla_exceptions_pkg.raise_message
343       (p_appli_s_name   => 'XLA'
344       ,p_msg_name       => 'XLA_COMMON_ERROR'
345       ,p_token_1        => 'LOCATION'
346       ,p_value_1        => 'xla_ap_acct_hooks_pkg.main'
347       ,p_token_2        => 'ERROR'
348       ,p_value_2        => 'Technical problem : Error encountered in product API for '||p_event_name||
349                            xla_environment_pkg.g_chr_newline||l_sqlerrm);
350 WHEN OTHERS THEN
351    l_sqlerrm := sqlerrm;
352 
353    IF (C_LEVEL_EXCEPTION>= g_log_level) THEN
354       trace
355          (p_msg      => 'Technical problem : Error encountered in product API for '||p_event_name||
356                         xla_environment_pkg.g_chr_newline||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_ap_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||
379                            l_sqlerrm);
380 END main;
381 
382 
383 --=============================================================================
384 --          *********** Initialization routine **********
385 --=============================================================================
386 
387 --=============================================================================
388 --
389 --
390 --
391 --
392 --
393 --
394 --
395 --
396 --
397 --
398 -- Following code is executed when the package body is referenced for the first
399 -- time
400 --
401 --
402 --
403 --
404 --
405 --
406 --
407 --
408 --
409 --
410 --
411 --
412 --=============================================================================
413 
414 BEGIN
415    g_log_level      := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
416    g_log_enabled    := fnd_log.test
417                           (log_level  => g_log_level
418                           ,MODULE     => C_DEFAULT_MODULE);
419 
420    IF NOT g_log_enabled  THEN
421       g_log_level := C_LEVEL_LOG_DISABLED;
422    END IF;
423 
424 END xla_ap_acct_hooks_pkg;