DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_THIRD_PARTY_MERGE_PUB

Source


1 PACKAGE BODY xla_third_party_merge_pub AS
2 -- $Header: xlamergp.pkb 120.0 2005/10/28 22:27:31 weshen noship $
3 /*===========================================================================+
4 |                Copyright (c) 2005 Oracle Corporation                       |
5 |                       Redwood Shores, CA, USA                              |
6 |                         All rights reserved.                               |
7 +============================================================================+
8 | FILENAME                                                                   |
9 |    xlamergp.pkb                                                            |
10 |                                                                            |
11 | PACKAGE NAME                                                               |
12 |    xla_third_party_merge_pub                                               |
13 |                                                                            |
14 | DESCRIPTION                                                                |
15 |    This is a public package for product teams, which contains all the      |
16 |    APIs required for creating Third Party Merge events.                    |
17 |                                                                            |
18 |    These public APIs are wrapper over public routines of                   |
19 |    xla_third_party_merge                                                   |
20 |                                                                            |
21 | HISTORY                                                                    |
22 |    08-Sep-05 L. Poon         Created                                       |
23 +===========================================================================*/
24 
25 --=============================================================================
26 --             *********** Local Trace and Log Routines **********
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 C_LEVEL_LOG_DISABLED  CONSTANT NUMBER := 99;
35 C_DEFAULT_MODULE      CONSTANT VARCHAR2(240) := 'xla.plsql.xla_third_party_merge_pub';
36 
37 g_log_level           NUMBER;
38 g_log_enabled         BOOLEAN;
39 
40 PROCEDURE trace
41  (  p_msg                       IN VARCHAR2
42   , p_level                     IN NUMBER
43   , p_module                    IN VARCHAR2 DEFAULT C_DEFAULT_MODULE) IS
44 BEGIN
45    IF (p_msg IS NULL AND p_level >= g_log_level)
46    THEN
47       fnd_log.message(p_level, p_module);
48    ELSIF p_level >= g_log_level
49    THEN
50       fnd_log.string(p_level, p_module, p_msg);
51    END IF;
52 END trace;
53 
54 PROCEDURE user_log
55  (p_msg                         IN VARCHAR2) IS
56 BEGIN
57    fnd_file.put_line(fnd_file.log, p_msg);
58 END user_log;
59 
60 --=============================================================================
61 --          *********** public procedures and functions **********
62 --=============================================================================
63 
64 -- ----------------------------------------------------------------------------
65 -- Third party merge event creation routine
66 -- ----------------------------------------------------------------------------
67 PROCEDURE third_party_merge
68  (  x_errbuf                    OUT NOCOPY VARCHAR2
69   , x_retcode                   OUT NOCOPY VARCHAR2
70   , x_event_ids                 OUT NOCOPY t_event_ids
71   , x_request_id                OUT NOCOPY INTEGER
72   , p_source_application_id     IN INTEGER DEFAULT NULL
73   , p_application_id            IN INTEGER
74   , p_ledger_id                 IN INTEGER DEFAULT NULL
75   , p_third_party_merge_date    IN DATE
76   , p_third_party_type          IN VARCHAR2
77   , p_original_third_party_id   IN INTEGER
78   , p_original_site_id          IN INTEGER DEFAULT NULL
79   , p_new_third_party_id        IN INTEGER
80   , p_new_site_id               IN INTEGER DEFAULT NULL
81   , p_type_of_third_party_merge IN VARCHAR2
82   , p_mapping_flag              IN VARCHAR2
83   , p_execution_mode            IN VARCHAR2
84   , p_accounting_mode           IN VARCHAR2
85   , p_transfer_to_gl_flag       IN VARCHAR2
86   , p_post_in_gl_flag           IN VARCHAR2) IS
87 
88   v_function VARCHAR2(240);
89   v_module   VARCHAR2(240);
90   v_message  VARCHAR2(2000);
91 
92 BEGIN
93   -- --------------------------
94   -- Initialize local variables
95   -- --------------------------
96   v_function := 'xla_third_party_merge_pub.third_party_merge';
97   v_module   := C_DEFAULT_MODULE||'.third_party_merge';
98 
99   -- Log the function entry, the passed parameters and their values
100   IF (C_LEVEL_PROCEDURE >= g_log_level)
101   THEN
102     trace(  p_msg    => 'BEGIN - ' || v_function
103           , p_level  => C_LEVEL_PROCEDURE
104           , p_module => v_module);
105     trace(  p_msg    => 'p_source_application_id = ' || p_source_application_id
106                          || ', p_applicaiton_id = ' || p_application_id
107                          || ', p_ledger_id = ' || p_ledger_id
108                          || ', p_third_party_merge_date = '
109 	                     || p_third_party_merge_date
110 	                     || ', p_third_party_type = ' || p_third_party_type
111           , p_level  => C_LEVEL_PROCEDURE
112           , p_module => v_module);
113     trace(  p_msg    => 'p_original_third_party_id = '
114 	                     || p_original_third_party_id
115 						 || ', p_original_site_id = ' || p_original_site_id
116                          || ', p_new_third_party_id = ' || p_new_third_party_id
117                          || ', p_new_site_id = ' || p_new_site_id
118                          || ', p_type_of_third_party_merge = '
119 	                     || p_type_of_third_party_merge
120           , p_level  => C_LEVEL_PROCEDURE
121           , p_module => v_module);
122     trace(  p_msg    => 'p_mapping_flag = ' || p_mapping_flag
123 	                     || ', p_execution_mode = ' || p_execution_mode
124 	                     || ', p_accounting_mode = ' || p_accounting_mode
125                          || ', p_transfer_to_gl_flag = '
126 						 || p_transfer_to_gl_flag
127                          || ', p_post_in_gl_flag = ' || p_post_in_gl_flag
128           , p_level  => C_LEVEL_PROCEDURE
129           , p_module => v_module);
130   END IF;
131 
132   -- --------------------------------------------
133   -- Call the XLA API to set environment settings
134   -- --------------------------------------------
135   trace(  p_msg    => 'Call xla_environment_pkg.refresh()'
136         , p_level  => C_LEVEL_STATEMENT
137         , p_module => v_module);
138   xla_environment_pkg.refresh();
139 
140   -- ---------------------------------------------------
141   -- Call the XLA API to create Third Party Merge events
142   -- ---------------------------------------------------
143   trace(  p_msg    => 'Call xla_third_party_merge.third_party_merge()'
144         , p_level  => C_LEVEL_STATEMENT
145         , p_module => v_module);
146   xla_third_party_merge.third_party_merge
147    (  x_errbuf                    => x_errbuf
148     , x_retcode                   => x_retcode
149     , x_event_ids                 => x_event_ids
150     , x_request_id                => x_request_id
151     , p_source_application_id     => p_source_application_id
152     , p_application_id            => p_application_id
153     , p_ledger_id                 => p_ledger_id
154     , p_third_party_merge_date    => p_third_party_merge_date
155     , p_third_party_type          => p_third_party_type
156     , p_original_third_party_id   => p_original_third_party_id
157     , p_original_site_id          => p_original_site_id
158     , p_new_third_party_id        => p_new_third_party_id
159     , p_new_site_id               => p_new_site_id
160     , p_type_of_third_party_merge => p_type_of_third_party_merge
161     , p_mapping_flag              => p_mapping_flag
162     , p_execution_mode            => p_execution_mode
163     , p_accounting_mode           => p_accounting_mode
164     , p_transfer_to_gl_flag       => p_transfer_to_gl_flag
165     , p_post_in_gl_flag           => p_post_in_gl_flag);
166 
167   -- Log the out parameters, their returned values and the function exit
168   IF (C_LEVEL_PROCEDURE >= g_log_level)
169   THEN
170     trace(  p_msg    => 'x_retcode = ' || x_retcode
171                          || ', x_errbuf = ' || x_errbuf
172           , p_level  => C_LEVEL_PROCEDURE
173           , p_module => v_module);
174     trace(  p_msg    => 'x_request_id = ' || x_request_id
175                          || ', x_event_ids.COUNT = ' || x_event_ids.COUNT
176           , p_level  => C_LEVEL_PROCEDURE
177           , p_module => v_module);
178 
179     -- Log the function exit
180     IF (x_retcode = G_RET_STS_ERROR OR x_retcode = G_RET_STS_UNEXP_ERROR)
181     THEN
182       trace(  p_msg    => 'EXIT with ERROR - ' || v_function
183             , p_level  => C_LEVEL_PROCEDURE
184             , p_module => v_module);
185     ELSE
186       trace(  p_msg    => 'END - ' || v_function
187             , p_level  => C_LEVEL_PROCEDURE
188             , p_module => v_module);
189     END IF; -- IF (x_retcode = G_RET_STS_ERROR OR ...
190 
191   END IF; -- IF (C_LEVEL_PROCEDURE >= g_log_level)
192 
193 EXCEPTION
194   WHEN OTHERS THEN
195     -- Get and log the SQL error message
196     v_message := SQLERRM;
197     trace(  p_msg    => v_message
198           , p_level  => C_LEVEL_UNEXPECTED
199           , p_module => v_module);
200     -- Set the out parameters
201     x_errbuf := xla_messages_pkg.get_message
202                  (  p_appli_s_name => 'XLA'
203                   , p_msg_name     => 'XLA_MERGE_FATAL_ERR'
204                   , p_token_1      => 'FUNCTION'
205                   , p_value_1      => v_function
206                   , p_token_2      => 'ERROR'
207                   , p_value_2      => v_message);
208     x_retcode := G_RET_STS_UNEXP_ERROR;
209     -- Log the out parameters, their returned values and the function exit
210     IF (C_LEVEL_PROCEDURE >= g_log_level)
211     THEN
212       trace(  p_msg    => 'x_retcode = ' || x_retcode
213                            || ', x_errbuf = ' || x_errbuf
214             , p_level  => C_LEVEL_PROCEDURE
215             , p_module => v_module);
216       trace(  p_msg    => 'x_request_id = ' || x_request_id
217                            || ', x_event_ids.COUNT = ' || x_event_ids.COUNT
218             , p_level  => C_LEVEL_PROCEDURE
219             , p_module => v_module);
220       -- Log the function exit
221       trace(  p_msg    => 'EXIT with ERROR - ' || v_function
222             , p_level  => C_LEVEL_PROCEDURE
223             , p_module => v_module);
224     END IF;
225 
226 END third_party_merge;
227 
228 -- ----------------------------------------------------------------------------
229 -- Create third party merge accounting routine - called by SRS
230 -- ----------------------------------------------------------------------------
231 PROCEDURE create_accounting
232  (  x_errbuf                    OUT NOCOPY VARCHAR2
233   , x_retcode                   OUT NOCOPY VARCHAR2
234   , p_application_id            IN INTEGER
235   , p_event_id                  IN INTEGER DEFAULT NULL
236   , p_accounting_mode           IN VARCHAR2
237   , p_transfer_to_gl_flag       IN VARCHAR2
238   , p_post_in_gl_flag           IN VARCHAR2
239   , p_merge_event_set_id        IN INTEGER DEFAULT NULL) IS
240 
241   v_function      VARCHAR2(240);
242   v_module        VARCHAR2(240);
243   v_message       VARCHAR2(2000);
244   v_cp_status     VARCHAR2(30);
245   v_return_status BOOLEAN;
246 
247 BEGIN
248 
249   -- --------------------------
250   -- Initialize local variables
251   -- --------------------------
252   v_function := 'xla_third_party_merge_pub.create_accounting';
253   v_module   := C_DEFAULT_MODULE||'.create_accounting';
254 
255   -- Log the function entry, the passed parameters and their values
256   IF (C_LEVEL_PROCEDURE >= g_log_level)
257   THEN
258     trace(  p_msg    => 'BEGIN - ' || v_function
259           , p_level  => C_LEVEL_PROCEDURE
260           , p_module => v_module);
261     trace(  p_msg    => 'p_applicaiton_id = ' || p_application_id
262                          || ', p_event_id = ' || p_event_id
263                          || ', p_accounting_mode = ' || p_accounting_mode
264                          || ', p_transfer_to_gl_flag = ' || p_transfer_to_gl_flag
265                          || ', p_post_in_gl_flag = ' || p_post_in_gl_flag
266                          || ', p_merge_event_set_id = ' || p_merge_event_set_id
267           , p_level  => C_LEVEL_PROCEDURE
268           , p_module => v_module);
269   END IF; -- IF (C_LEVEL_PROCEDURE >= g_log_level)
270 
271   -- --------------------------------------------
272   -- Call the XLA API to set environment settings
273   -- --------------------------------------------
274   trace(  p_msg    => 'Call xla_environment_pkg.refresh()'
275         , p_level  => C_LEVEL_STATEMENT
276         , p_module => v_module);
277   xla_environment_pkg.refresh();
278 
279   -- ------------------------------------------------------------------
280   -- Call the XLA API to create accoutning for Third Party Merge events
281   -- ------------------------------------------------------------------
282   trace(  p_msg    => 'Call xla_third_party_merge.create_accounting()'
283         , p_level  => C_LEVEL_STATEMENT
284         , p_module => v_module);
285   xla_third_party_merge.create_accounting
286    (  x_errbuf              => x_errbuf
287     , x_retcode             => x_retcode
288     , p_application_id      => p_application_id
289     , p_event_id            => p_event_id
290     , p_accounting_mode     => p_accounting_mode
291     , p_transfer_to_gl_flag => p_transfer_to_gl_flag
292     , p_post_in_gl_flag     => p_post_in_gl_flag
293 	, p_merge_event_set_id  => p_merge_event_set_id
294 	, p_srs_flag            => 'Y');
295 
296   -- ------------------------------------------------------------------------
297   -- Write final message to the concurrent request log and set the concurrent
298   -- request completion status according to the return values
299   -- ------------------------------------------------------------------------
300   trace(  p_msg    => 'Write final log message'
301         , p_level  => C_LEVEL_STATEMENT
302         , p_module => v_module);
303   IF (x_retcode = G_RET_STS_ERROR OR x_retcode = G_RET_STS_UNEXP_ERROR)
304   THEN
305     -- An error was raised, so write the returned error message to the
306     -- concurrent request log and set the completion status to 'ERROR'
307     user_log(x_errbuf);
308     v_cp_status := 'ERROR';
309   ELSIF (x_retcode = G_RET_STS_WARN)
310   THEN
311     -- A warning was raised, so get and write the message XLA_MERGE_ACCT_WARN to
312     -- the concurrent request log
313     v_message := xla_messages_pkg.get_message
314                   (  p_appli_s_name => 'XLA'
315                    , p_msg_name     => 'XLA_MERGE_ACCT_WARN');
316     user_log(v_message);
317     v_cp_status := 'WARNING';
318   ELSE
319     -- It completed successfully, so write the message XLA_MERGE_ACCT_SUCCEEDED
320 	-- to the concurrent request log
321     v_message := xla_messages_pkg.get_message
322                   (  p_appli_s_name => 'XLA'
323                    , p_msg_name     => 'XLA_MERGE_ACCT_SUCCEEDED');
324     user_log(v_message);
325     v_cp_status := 'SUCCESS';
326   END IF;
327 
328   -- Log the out parameters, their returned values and function exit
329   IF (C_LEVEL_PROCEDURE >= g_log_level)
330   THEN
331     trace(  p_msg    => 'x_retcode = ' || x_retcode
332 	                     || ', x_errbuf = ' || x_errbuf
333           , p_level  => C_LEVEL_PROCEDURE
334           , p_module => v_module);
335 
336     -- Log the function exit
337     IF (v_cp_status = 'ERROR')
338     THEN
339       trace(  p_msg    => 'EXIT with ERROR - ' || v_function
340             , p_level  => C_LEVEL_PROCEDURE
341             , p_module => v_module);
342     ELSE
343       trace(  p_msg    => 'END - ' || v_function
344             , p_level  => C_LEVEL_PROCEDURE
345             , p_module => v_module);
346     END IF; -- IF (x_retcode = G_RET_STS_ERROR OR ...
347 
348   END IF; -- IF (C_LEVEL_PROCEDURE >= g_log_level)
349 
350   -- Set the concurrent request completion status
351   v_return_status := fnd_concurrent.set_completion_status
352                       (  status  => v_cp_status
353                        , message => NULL);
354 
355   -- Commit the changes made by this concurrent request and exit
356   COMMIT;
357 
358 EXCEPTION
359   WHEN OTHERS THEN
360     -- Rollback all the changes made by this concurrent request
361     ROLLBACK;
362     -- Get and log the SQL error message
363     v_message := SQLERRM;
364     trace(  p_msg    => v_message
365           , p_level  => C_LEVEL_UNEXPECTED
366           , p_module => v_module);
367     -- Set the out parameters
368     x_errbuf := xla_messages_pkg.get_message
369                  (  p_appli_s_name => 'XLA'
370                   , p_msg_name     => 'XLA_MERGE_FATAL_ERR'
371                   , p_token_1      => 'FUNCTION'
372                   , p_value_1      => v_function
373                   , p_token_2      => 'ERROR'
374                   , p_value_2      => v_message);
375     x_retcode := G_RET_STS_UNEXP_ERROR;
376     -- Write the error message to the concurrent request log
377     user_log(x_errbuf);
378     -- Log the out parameters, their returned values and function exit
379     IF (C_LEVEL_PROCEDURE >= g_log_level)
380     THEN
381       trace(  p_msg    => 'x_retcode = ' || x_retcode
382   	                       || ', x_errbuf = ' || x_errbuf
383             , p_level  => C_LEVEL_PROCEDURE
384             , p_module => v_module);
385       trace(  p_msg    => 'EXIT with ERROR - ' || v_function
386             , p_level  => C_LEVEL_PROCEDURE
387             , p_module => v_module);
388     END IF; -- IF (C_LEVEL_PROCEDURE >= g_log_level)
389     -- Set the concurrent request completion status as ERROR
390     v_return_status := fnd_concurrent.set_completion_status
391                         (  status  => 'ERROR'
392                          , message => NULL);
393     -- Commit the above changes and exit
394     COMMIT;
395 
396 END create_accounting;
397 
398 --=============================================================================
399 --          *******************  Initialization  *********************
400 --=============================================================================
401 BEGIN
402    g_log_level      := fnd_log.G_CURRENT_RUNTIME_LEVEL;
403    g_log_enabled    := fnd_log.test(  log_level => g_log_level
404                                     , module    => C_DEFAULT_MODULE);
405 
406    IF NOT g_log_enabled
407    THEN
408       g_log_level := C_LEVEL_LOG_DISABLED;
409    END IF;
410 
411 END xla_third_party_merge_pub;