DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_PSA_ACCT_HOOKS_PKG

Source


1 PACKAGE BODY xla_psa_acct_hooks_pkg AS
2 -- $Header: xlaappsh.pkb 120.1 2006/06/28 06:06:58 vinaykum noship $
3 /*===========================================================================+
4 |  Copyright (c) 2003 Oracle Corporation BelmFont, California, USA           |
5 |                          ALL rights reserved.                              |
6 +============================================================================+
7 | PACKAGE NAME                                                               |
8 |     xla_psa_acct_hooks_pkg                                                 |
9 |                                                                            |
10 | DESCRIPTION                                                                |
11 |     Call accounting program integration APIs for PSA                       |
12 |                                                                            |
13 | HISTORY                                                                    |
14 |     08/15/2005    W. Chan         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_psa_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_psa_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_psa_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 BEGIN
129 
130    IF g_log_enabled THEN
131       l_log_module := C_DEFAULT_MODULE||'.main';
132    END IF;
133 
134    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135       trace
136          (p_msg    =>  'BEGIN of procedure Main'
137          ,p_level  =>  C_LEVEL_PROCEDURE
138          ,p_module =>  l_log_module);
139       trace
140          (p_msg      => 'p_application_id = '||p_application_id
141          ,p_level    => C_LEVEL_PROCEDURE
142          ,p_module   => l_log_module);
143       trace
144          (p_msg      => 'p_accounting_mode = '||p_accounting_mode
145          ,p_level    => C_LEVEL_PROCEDURE
146          ,p_module   => l_log_module);
147       trace
148          (p_msg      => 'p_event_name = '||p_event_name
149          ,p_level    => C_LEVEL_PROCEDURE
150          ,p_module   => l_log_module);
151    END IF;
152 
153    IF (C_LEVEL_PROCEDURE >= g_log_level) AND
154       (p_event_name IN ('preaccounting','postaccounting'))
155    THEN
156       trace
157          (p_msg      => 'p_ledger_id = '||p_ledger_id
158          ,p_level    => C_LEVEL_PROCEDURE
159          ,p_module   => l_log_module);
160       trace
161          (p_msg      => 'p_process_category = '||p_process_category
162          ,p_level    => C_LEVEL_PROCEDURE
163          ,p_module   => l_log_module);
164       trace
165          (p_msg      => 'p_end_date = '||p_end_date
166          ,p_level    => C_LEVEL_PROCEDURE
167          ,p_module   => l_log_module);
168       trace
169          (p_msg      => 'p_valuation_method = '||p_valuation_method
170          ,p_level    => C_LEVEL_PROCEDURE
171          ,p_module   => l_log_module);
172       trace
173          (p_msg      => 'p_security_id_int_1 = '||p_security_id_int_1
174          ,p_level    => C_LEVEL_PROCEDURE
175          ,p_module   => l_log_module);
176       trace
177          (p_msg      => 'p_security_id_int_2 = '||p_security_id_int_2
178          ,p_level    => C_LEVEL_PROCEDURE
179          ,p_module   => l_log_module);
180       trace
181          (p_msg      => 'p_security_id_int_3 = '||p_security_id_int_3
182          ,p_level    => C_LEVEL_PROCEDURE
183          ,p_module   => l_log_module);
184       trace
185          (p_msg      => 'p_security_id_char_1 = '||p_security_id_char_1
186          ,p_level    => C_LEVEL_PROCEDURE
187          ,p_module   => l_log_module);
188       trace
189          (p_msg      => 'p_security_id_char_2 = '||p_security_id_char_2
190          ,p_level    => C_LEVEL_PROCEDURE
191          ,p_module   => l_log_module);
192       trace
193          (p_msg      => 'p_security_id_char_3 = '||p_security_id_char_3
194          ,p_level    => C_LEVEL_PROCEDURE
195          ,p_module   => l_log_module);
196       trace
197          (p_msg      => 'p_report_request_id = '||p_report_request_id
198          ,p_level    => C_LEVEL_PROCEDURE
199          ,p_module   => l_log_module);
200    END IF;
201 
202    ----------------------------------------------------------------------------
203    -- Calling different event depending on event_name
204    ----------------------------------------------------------------------------
205 
206    CASE
207    WHEN  p_event_name = 'preaccounting'  THEN
208       -------------------------------------------------------------------------
209       -- Following code calls preaccounting API
210       -------------------------------------------------------------------------
211       IF (C_LEVEL_EVENT >= g_log_level) THEN
212          trace
213             (p_msg      => 'Ready to call preaccounting API for Account Receivables'
214             ,p_level    => C_LEVEL_EVENT
215             ,p_module   => l_log_module);
216       END IF;
217 
218       psa_sla_processing_pkg.preaccounting
219             ( p_application_id     => p_application_id
220              ,p_ledger_id          => p_ledger_id
221              ,p_process_category   => p_process_category
222              ,p_end_date           => p_end_date
223              ,p_accounting_mode    => p_accounting_mode
224              ,p_valuation_method   => p_valuation_method
225              ,p_security_id_int_1  => p_security_id_int_1
226              ,p_security_id_int_2  => p_security_id_int_2
227              ,p_security_id_int_3  => p_security_id_int_3
228              ,p_security_id_char_1 => p_security_id_char_1
229              ,p_security_id_char_2 => p_security_id_char_2
230              ,p_security_id_char_3 => p_security_id_char_3
231              ,p_report_request_id  => p_report_request_id  );
232 
233       IF (C_LEVEL_EVENT >= g_log_level) THEN
234          trace
235             (p_msg      => 'Control returned from preaccounting API'
236             ,p_level    => C_LEVEL_EVENT
237             ,p_module   => l_log_module);
238       END IF;
239 
240    WHEN p_event_name = 'extract'        THEN
241       -------------------------------------------------------------------------
242       -- Following code calls extract API
243       -------------------------------------------------------------------------
244       IF (C_LEVEL_EVENT >= g_log_level) THEN
245          trace
246             (p_msg      => 'Ready to call extract API for Account Receivables'
247             ,p_level    => C_LEVEL_EVENT
248             ,p_module   => l_log_module);
249       END IF;
250 
251       psa_sla_processing_pkg.extract
252             ( p_application_id     => p_application_id
253              ,p_accounting_mode    => p_accounting_mode);
254 
255       IF (C_LEVEL_EVENT >= g_log_level) THEN
256          trace
257             (p_msg      => 'Control returned from extract API'
258             ,p_level    => C_LEVEL_EVENT
259             ,p_module   => l_log_module);
260       END IF;
261 
262    WHEN p_event_name = 'postprocessing'  THEN
263       -------------------------------------------------------------------------
264       -- Following code calls postprocessing API
265       -------------------------------------------------------------------------
266       IF (C_LEVEL_EVENT >= g_log_level) THEN
267          trace
268             (p_msg      => 'Ready to call postprocessing API for Account Receivables'
269             ,p_level    => C_LEVEL_EVENT
270             ,p_module   => l_log_module);
271       END IF;
272 
273       psa_sla_processing_pkg.postprocessing
274             ( p_application_id     => p_application_id
275              ,p_accounting_mode    => p_accounting_mode);
276 
277       IF (C_LEVEL_EVENT >= g_log_level) THEN
278          trace
279             (p_msg      => 'Control returned from postprocessing API'
280             ,p_level    => C_LEVEL_EVENT
281             ,p_module   => l_log_module);
282       END IF;
283 
284    WHEN p_event_name = 'postaccounting'  THEN
285       -------------------------------------------------------------------------
286       -- Following code calls postaccounting API
287       -------------------------------------------------------------------------
288       IF (C_LEVEL_EVENT >= g_log_level) THEN
289          trace
290             (p_msg      => 'Ready to call postaccounting API for Account Receivables'
291             ,p_level    => C_LEVEL_EVENT
292             ,p_module   => l_log_module);
293       END IF;
294 
295       psa_sla_processing_pkg.postaccounting
296             ( p_application_id     => p_application_id
297              ,p_ledger_id          => p_ledger_id
298              ,p_process_category   => p_process_category
299              ,p_end_date           => p_end_date
300              ,p_accounting_mode    => p_accounting_mode
301              ,p_valuation_method   => p_valuation_method
302              ,p_security_id_int_1  => p_security_id_int_1
303              ,p_security_id_int_2  => p_security_id_int_2
304              ,p_security_id_int_3  => p_security_id_int_3
305              ,p_security_id_char_1 => p_security_id_char_1
306              ,p_security_id_char_2 => p_security_id_char_2
307              ,p_security_id_char_3 => p_security_id_char_3
308              ,p_report_request_id  => p_report_request_id  );
309 
310       IF (C_LEVEL_EVENT >= g_log_level) THEN
311          trace
312             (p_msg      => 'Control returned from postaccounting API'
313             ,p_level    => C_LEVEL_EVENT
314             ,p_module   => l_log_module);
315       END IF;
316    END CASE;
317 EXCEPTION
318 WHEN xla_exceptions_pkg.application_exception THEN
319    l_sqlerrm := fnd_message.get();
320 
321    IF (C_LEVEL_EXCEPTION>= g_log_level) THEN
322       trace
323          (p_msg      => 'Technical problem : Error encountered in product API for '||p_event_name||
324                         xla_environment_pkg.g_chr_newline||
325                         l_sqlerrm
326          ,p_level    => C_LEVEL_EXCEPTION
327          ,p_module   => l_log_module);
328    END IF;
329 
330    xla_accounting_err_pkg.build_message
331       (p_appli_s_name   => 'XLA'
332       ,p_msg_name       => 'XLA_AP_TECHNICAL_ERROR'
333       ,p_token_1        => 'APPLICATION_NAME'
334       ,p_value_1        => 'SLA'
335       ,p_entity_id      => NULL
336       ,p_event_id       => NULL);
337 
338    print_logfile('Technical problem : Error encountered in product API for '||p_event_name);
339 
340    xla_exceptions_pkg.raise_message
341       (p_appli_s_name   => 'XLA'
342       ,p_msg_name       => 'XLA_COMMON_ERROR'
343       ,p_token_1        => 'LOCATION'
344       ,p_value_1        => 'xla_psa_acct_hooks_pkg.main'
345       ,p_token_2        => 'ERROR'
346       ,p_value_2        => 'Technical problem : Error encountered in product API for '||p_event_name||
347                            xla_environment_pkg.g_chr_newline||l_sqlerrm);
348 WHEN OTHERS THEN
349    l_sqlerrm := sqlerrm;
350 
351    IF (C_LEVEL_EXCEPTION>= g_log_level) THEN
352       trace
353          (p_msg      => 'Technical problem : Error encountered in product API for '||p_event_name||
354                         xla_environment_pkg.g_chr_newline||l_sqlerrm
355          ,p_level    => C_LEVEL_EXCEPTION
356          ,p_module   => l_log_module);
357    END IF;
358 
359    xla_accounting_err_pkg.build_message
360       (p_appli_s_name   => 'XLA'
361       ,p_msg_name       => 'XLA_AP_TECHNICAL_ERROR'
362       ,p_token_1        => 'APPLICATION_NAME'
363       ,p_value_1        => 'SLA'
364       ,p_entity_id      => NULL
365       ,p_event_id       => NULL);
366 
367    print_logfile('Technical problem : Error encountered in product API for '||p_event_name);
368 
369    xla_exceptions_pkg.raise_message
370       (p_appli_s_name   => 'XLA'
371       ,p_msg_name       => 'XLA_COMMON_ERROR'
372       ,p_token_1        => 'LOCATION'
373       ,p_value_1        => 'xla_psa_acct_hooks_pkg.main'
374       ,p_token_2        => 'ERROR'
375       ,p_value_2        => 'Technical problem : Error encountered in product API for '||p_event_name||
376                            xla_environment_pkg.g_chr_newline||
377                            l_sqlerrm);
378 END main;
379 
380 
381 --=============================================================================
382 --          *********** Initialization routine **********
383 --=============================================================================
384 
385 --=============================================================================
386 --
387 --
388 --
389 --
390 --
391 --
392 --
393 --
394 --
395 --
396 -- Following code is executed when the package body is referenced for the first
397 -- time
398 --
399 --
400 --
401 --
402 --
403 --
404 --
405 --
406 --
407 --
408 --
409 --
410 --=============================================================================
411 
412 BEGIN
413    g_log_level      := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
414    g_log_enabled    := fnd_log.test
415                           (log_level  => g_log_level
416                           ,MODULE     => C_DEFAULT_MODULE);
417 
418    IF NOT g_log_enabled  THEN
419       g_log_level := C_LEVEL_LOG_DISABLED;
420    END IF;
421 
422 END xla_psa_acct_hooks_pkg;