DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_JOURNAL_ENTRIES_PUB_PKG

Source


1 PACKAGE BODY xla_journal_entries_pub_pkg AS
2 /* $Header: xlajejep.pkb 120.8 2006/05/30 16:51:14 wychan ship $ */
3 
4 --=============================================================================
5 --               *********** Local Trace Routine **********
6 --=============================================================================
7 C_LEVEL_STATEMENT     CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
8 C_LEVEL_PROCEDURE     CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
9 C_LEVEL_EVENT         CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
10 C_LEVEL_EXCEPTION     CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
11 C_LEVEL_ERROR         CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
12 C_LEVEL_UNEXPECTED    CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
13 
14 C_LEVEL_LOG_DISABLED  CONSTANT NUMBER := 99;
15 C_DEFAULT_MODULE      CONSTANT VARCHAR2(240) := 'xla.plsql.xla_journal_entries_pub_pkg';
16 
17 g_log_level           NUMBER;
18 g_log_enabled         BOOLEAN;
19 
20 PROCEDURE trace
21   (p_msg                        IN VARCHAR2
22   ,p_module                     IN VARCHAR2
23   ,p_level                      IN NUMBER) IS
24 BEGIN
25   ----------------------------------------------------------------------------
26   -- Following is for FND log.
27   ----------------------------------------------------------------------------
28   IF (p_msg IS NULL AND p_level >= g_log_level) THEN
29     fnd_log.message(p_level, p_module);
30   ELSIF p_level >= g_log_level THEN
31     fnd_log.string(p_level, p_module, p_msg);
32   END IF;
33 
34 EXCEPTION
35   WHEN xla_exceptions_pkg.application_exception THEN
36     RAISE;
37   WHEN OTHERS THEN
38     xla_exceptions_pkg.raise_message
39       (p_location   => 'xla_journal_entries_pub_pkg.trace');
40 END trace;
41 
42 --=============================================================================
43 --          *********** public procedures and functions **********
44 --=============================================================================
45 
46 
47 --=============================================================================
48 --
49 -- Following are the routines on which created for public manual journal
50 -- entries APIs.
51 --
52 --    1.    create_journal_entry_header
53 --    2.    create_journal_entry_line
54 --    3.    complete_journal_entry
55 --
56 --
57 --=============================================================================
58 
59 
60 --=============================================================================
61 --
62 --
63 --
64 --=============================================================================
65 PROCEDURE create_journal_entry_header
66   (p_api_version                IN  NUMBER
67   ,p_init_msg_list              IN  VARCHAR2
68   ,p_application_id             IN  INTEGER
69   ,p_ledger_id                  IN  INTEGER
70   ,p_legal_entity_id            IN  INTEGER
71   ,p_gl_date                    IN  DATE
72   ,p_description                IN  VARCHAR2
73   ,p_je_category_name           IN  VARCHAR2
74   ,p_balance_type_code          IN  VARCHAR2
75   ,p_budget_version_id          IN  INTEGER
76   ,p_reference_date             IN  DATE
77   ,p_budgetary_control_flag     IN  VARCHAR2
78   ,p_attribute_category		IN  VARCHAR2
79   ,p_attribute1			IN  VARCHAR2
80   ,p_attribute2			IN  VARCHAR2
81   ,p_attribute3			IN  VARCHAR2
82   ,p_attribute4			IN  VARCHAR2
83   ,p_attribute5			IN  VARCHAR2
84   ,p_attribute6			IN  VARCHAR2
85   ,p_attribute7			IN  VARCHAR2
86   ,p_attribute8			IN  VARCHAR2
87   ,p_attribute9			IN  VARCHAR2
88   ,p_attribute10		IN  VARCHAR2
89   ,p_attribute11		IN  VARCHAR2
90   ,p_attribute12		IN  VARCHAR2
91   ,p_attribute13		IN  VARCHAR2
92   ,p_attribute14		IN  VARCHAR2
93   ,p_attribute15		IN  VARCHAR2
94   ,x_return_status              OUT NOCOPY VARCHAR2
95   ,x_msg_count                  OUT NOCOPY NUMBER
96   ,x_msg_data                   OUT NOCOPY VARCHAR2
97   ,x_ae_header_id		OUT NOCOPY INTEGER
98   ,x_event_id			OUT NOCOPY INTEGER
99 )
100 IS
101   l_api_name          CONSTANT VARCHAR2(30) := 'create_journal_entry_header';
102   l_api_version       CONSTANT NUMBER       := 1.0;
103 
104   l_retcode           INTEGER;
105   l_log_module        VARCHAR2(240);
106 
107   l_period_name      gl_period_statuses.period_name%TYPE;
108   l_creation_date      DATE;
109   l_created_by         INTEGER;
110   l_last_update_date   DATE;
111   l_last_updated_by    INTEGER;
112   l_last_update_login  INTEGER;
113 
114 BEGIN
115   IF g_log_enabled THEN
116     l_log_module := C_DEFAULT_MODULE||'.create_journal_entry_header';
117   END IF;
118 
119   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120     trace(p_msg    => 'BEGIN of function create_journal_entry_header',
121           p_module => l_log_module,
122           p_level  => C_LEVEL_PROCEDURE);
123   END IF;
124 
125   IF (FND_API.to_boolean(p_init_msg_list)) THEN
126     FND_MSG_PUB.initialize;
127   END IF;
128 
129   -- Standard call to check for call compatibility.
130   IF (NOT FND_API.compatible_api_call
131                  (p_current_version_number => l_api_version
132                  ,p_caller_version_number  => p_api_version
133                  ,p_api_name               => l_api_name
134                  ,p_pkg_name               => C_DEFAULT_MODULE))
135   THEN
136     RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
137   END IF;
138 
139   --  Initialize global variables
140   x_return_status        := FND_API.G_RET_STS_SUCCESS;
141 
142   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143       trace(p_msg    => 'Calling xla_journal_entries_pkg.create_journal_entry_header',
144             p_module => l_log_module,
145             p_level  => C_LEVEL_STATEMENT);
146   END IF;
147 
148   xla_journal_entries_pkg.create_journal_entry_header
149   (p_application_id             => p_application_id
150   ,p_ledger_id                  => p_ledger_id
151   ,p_legal_entity_id            => p_legal_entity_id
152   ,p_gl_date                    => p_gl_date
153   ,p_accounting_entry_type_code	=> 'MANUAL'
154   ,p_description                => p_description
155   ,p_je_category_name           => p_je_category_name
156   ,p_balance_type_code          => p_balance_type_code
157   ,p_budget_version_id          => p_budget_version_id
158   ,p_reference_date             => p_reference_date
159   ,p_attribute_category		=> p_attribute_category
160   ,p_attribute1			=> p_attribute1
161   ,p_attribute2			=> p_attribute2
162   ,p_attribute3			=> p_attribute3
163   ,p_attribute4			=> p_attribute4
164   ,p_attribute5			=> p_attribute5
165   ,p_attribute6			=> p_attribute6
166   ,p_attribute7			=> p_attribute7
167   ,p_attribute8			=> p_attribute8
168   ,p_attribute9			=> p_attribute9
169   ,p_attribute10		=> p_attribute10
170   ,p_attribute11		=> p_attribute11
171   ,p_attribute12		=> p_attribute12
172   ,p_attribute13		=> p_attribute13
173   ,p_attribute14		=> p_attribute14
174   ,p_attribute15		=> p_attribute15
175   ,p_budgetary_control_flag     => p_budgetary_control_flag
176   ,p_ae_header_id		=> x_ae_header_id
177   ,p_event_id			=> x_event_id
178   ,p_period_name                => l_period_name
179   ,p_creation_date              => l_creation_date
180   ,p_created_by                 => l_created_by
181   ,p_last_update_date           => l_last_update_date
182   ,p_last_updated_by            => l_last_updated_by
183   ,p_last_update_login          => l_last_update_login
184   ,p_retcode			=> l_retcode
185   ,p_msg_mode			=> xla_datafixes_pub.g_msg_mode);
186 
187   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188       trace(p_msg    => 'Returned from xla_journal_entries_pkg.create_journal_entry_header',
189             p_module => l_log_module,
190             p_level  => C_LEVEL_STATEMENT);
191   END IF;
192 
193   IF l_retcode = 0 and x_ae_header_id IS NOT NULL THEN
194      xla_datafixes_pub.audit_datafix (p_application_id  => p_application_id
195                                      ,p_ae_header_id    => x_ae_header_id
196                                      ,p_event_id        => x_event_id);
197   ELSE
198      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199       trace(p_msg    => 'Failed to create journal entry.',
200             p_module => l_log_module,
201             p_level  => C_LEVEL_STATEMENT);
202      END IF;
203      xla_datafixes_pub.Log_error(p_module    => l_log_module
204                                 ,p_error_msg => 'Failed to create journal entry.');
205   END IF;
206 
207   FND_MSG_PUB.count_and_get(p_count => x_msg_count
208                            ,p_data  => x_msg_data);
209 
210 
211   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
212     trace(p_msg    => 'END of function create_journal_entry_header',
213           p_module => l_log_module,
214           p_level  => C_LEVEL_PROCEDURE);
215   END IF;
216 
217 EXCEPTION
218 WHEN FND_API.G_EXC_ERROR THEN
219   ROLLBACK;
220   x_return_status := FND_API.G_RET_STS_ERROR ;
221   FND_MSG_PUB.count_and_get(p_count => x_msg_count
222                            ,p_data  => x_msg_data);
223 
224 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
225   ROLLBACK;
226   x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
227 
228 WHEN OTHERS THEN
229   ROLLBACK;
230   x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
231   IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
232     FND_MSG_PUB.add_exc_msg(C_DEFAULT_MODULE, l_api_name);
233   END IF;
234   FND_MSG_PUB.count_and_get(p_count => x_msg_count
235                            ,p_data  => x_msg_data);
236 
237 END create_journal_entry_header;
238 
239 
240 
241 
242 --=============================================================================
243 --
244 --
245 --
246 --=============================================================================
247 
248 PROCEDURE create_journal_entry_line
249   (p_api_version                IN  NUMBER
250   ,p_init_msg_list              IN  VARCHAR2
251   ,p_application_id		IN  INTEGER
252   ,p_ae_header_id               IN  INTEGER
253   ,p_displayed_line_number	IN  INTEGER
254   ,p_code_combination_id        IN  INTEGER
255   ,p_gl_transfer_mode          	IN  VARCHAR2
256   ,p_accounting_class_code	IN  VARCHAR2
257   ,p_currency_code          	IN  VARCHAR2
258   ,p_entered_dr          	IN  NUMBER
259   ,p_entered_cr	       		IN  NUMBER
260   ,p_accounted_dr		IN  NUMBER
261   ,p_accounted_cr		IN  NUMBER
262   ,p_conversion_type		IN  VARCHAR2
263   ,p_conversion_date   		IN  DATE
264   ,p_conversion_rate   		IN  NUMBER
265   ,p_party_type_code          	IN  VARCHAR2
266   ,p_party_id          		IN  INTEGER
267   ,p_party_site_id          	IN  INTEGER
268   ,p_description          	IN  VARCHAR2
269   ,p_statistical_amount         IN  NUMBER
270   ,p_jgzz_recon_ref          	IN  VARCHAR2
271   ,p_attribute_category		IN  VARCHAR2
272   ,p_encumbrance_type_id        IN  INTEGER
273   ,p_attribute1			IN  VARCHAR2
274   ,p_attribute2			IN  VARCHAR2
275   ,p_attribute3			IN  VARCHAR2
276   ,p_attribute4			IN  VARCHAR2
277   ,p_attribute5			IN  VARCHAR2
278   ,p_attribute6			IN  VARCHAR2
279   ,p_attribute7			IN  VARCHAR2
280   ,p_attribute8			IN  VARCHAR2
281   ,p_attribute9			IN  VARCHAR2
282   ,p_attribute10		IN  VARCHAR2
283   ,p_attribute11		IN  VARCHAR2
284   ,p_attribute12		IN  VARCHAR2
285   ,p_attribute13		IN  VARCHAR2
286   ,p_attribute14		IN  VARCHAR2
287   ,p_attribute15		IN  VARCHAR2
288   ,x_return_status              OUT NOCOPY VARCHAR2
289   ,x_msg_count                  OUT NOCOPY NUMBER
290   ,x_msg_data                   OUT NOCOPY VARCHAR2
291   ,x_ae_line_num             	OUT NOCOPY INTEGER
292   )
293 IS
294   l_api_name          CONSTANT VARCHAR2(30) := 'create_journal_entry_line';
295   l_api_version       CONSTANT NUMBER       := 1.0;
296 
297   l_entered_dr      NUMBER;
298   l_entered_cr      NUMBER;
299   l_currency_code   VARCHAR2(30);
300   l_accounted_dr    NUMBER;
301   l_accounted_cr    NUMBER;
302   l_conversion_type VARCHAR2(30);
303   l_conversion_date DATE;
304   l_conversion_rate NUMBER;
305   l_retcode         INTEGER;
306   l_process_status     VARCHAR2(1);
307 
308   l_log_module      VARCHAR2(240);
309 
310   l_creation_date      DATE;
311   l_created_by         INTEGER;
312   l_last_update_date   DATE;
313   l_last_updated_by    INTEGER;
314   l_last_update_login  INTEGER;
315 
316 BEGIN
317   IF g_log_enabled THEN
318     l_log_module := C_DEFAULT_MODULE||'.create_journal_entry_line';
319   END IF;
320 
321   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
322     trace(p_msg    => 'BEGIN of function create_journal_entry_line',
323           p_module => l_log_module,
324           p_level  => C_LEVEL_PROCEDURE);
325   END IF;
326 
327   IF (FND_API.to_boolean(p_init_msg_list)) THEN
328     FND_MSG_PUB.initialize;
329   END IF;
330 
331   -- Standard call to check for call compatibility.
332   IF (NOT FND_API.compatible_api_call
333                  (p_current_version_number => l_api_version
334                  ,p_caller_version_number  => p_api_version
335                  ,p_api_name               => l_api_name
336                  ,p_pkg_name               => C_DEFAULT_MODULE))
337   THEN
338     RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
339   END IF;
340 
341   --  Initialize global variables
342   x_return_status        := FND_API.G_RET_STS_SUCCESS;
343 
344   -----------------------------------------------------------------------------------
345   -- Validation
346   -----------------------------------------------------------------------------------
347   SELECT evt.process_status_code
348   INTO   l_process_status
349   FROM   xla_ae_headers xah, xla_events evt
350   WHERE  xah.application_id = p_application_id
351   AND    xah.ae_header_id   = p_ae_header_id
352   AND    evt.application_id = p_application_id
353   AND    xah.event_id       = evt.event_id;
354 
355   IF l_process_status <> 'U'  THEN
356      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
357          trace(p_msg    => 'Entry is already processed.',
358                p_module => l_log_module,
359                p_level  => C_LEVEL_STATEMENT);
360      END IF;
361      xla_datafixes_pub.Log_error(p_module    => l_log_module
362               ,p_error_msg => 'Entry is already processed.');
363   END IF;
364 
365   IF p_accounting_class_code IN ('ROUNDING', 'BALANCE', 'INTRA', 'INTER') THEN
366      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
367          trace(p_msg    => 'The amount type '||p_accounting_class_code||' is not allowed.',
368                p_module => l_log_module,
369                p_level  => C_LEVEL_STATEMENT);
370      END IF;
371      xla_datafixes_pub.Log_error(p_module    =>l_log_module
372                                 ,p_error_msg =>'The amount type '||p_accounting_class_code||' is not allowed.');
373   END IF;
374 
375   l_entered_dr      := p_entered_dr;
376   l_entered_cr      := p_entered_cr;
377   l_currency_code   := p_currency_code;
378   l_accounted_dr    := p_accounted_dr;
379   l_accounted_cr    := p_accounted_cr;
380   l_conversion_type := p_conversion_type;
381   l_conversion_date := p_conversion_date;
382   l_conversion_rate := p_conversion_rate;
383 
384   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
385          trace(p_msg    => 'Calling xla_journal_entries_pkg.create_journal_entry_line',
386                p_module => l_log_module,
387                p_level  => C_LEVEL_STATEMENT);
388   END IF;
389   xla_journal_entries_pkg.create_journal_entry_line
390         (p_ae_header_id         => p_ae_header_id
391         ,p_displayed_line_number=> p_displayed_line_number
392         ,p_application_id       => p_application_id
393         ,p_code_combination_id  => p_code_combination_id
394         ,p_gl_transfer_mode     => p_gl_transfer_mode
395         ,p_accounting_class_code=> p_accounting_class_code
396         ,p_entered_dr          	=> l_entered_dr
397         ,p_entered_cr	       	=> l_entered_cr
398         ,p_currency_code        => l_currency_code
399         ,p_accounted_dr		=> l_accounted_dr
400         ,p_accounted_cr		=> l_accounted_cr
401         ,p_conversion_type	=> l_conversion_type
402         ,p_conversion_date   	=> l_conversion_date
403         ,p_conversion_rate   	=> l_conversion_rate
404         ,p_party_type_code      => p_party_type_code
405         ,p_party_id          	=> p_party_id
406         ,p_party_site_id        => p_party_site_id
407         ,p_description          => p_description
408         ,p_statistical_amount   => p_statistical_amount
409         ,p_jgzz_recon_ref       => p_jgzz_recon_ref
410         ,p_attribute_category	=> p_attribute_category
411         ,p_encumbrance_type_id  => p_encumbrance_type_id
412         ,p_attribute1		=> p_attribute1
413         ,p_attribute2		=> p_attribute2
414         ,p_attribute3		=> p_attribute3
415         ,p_attribute4		=> p_attribute4
416         ,p_attribute5		=> p_attribute5
417         ,p_attribute6		=> p_attribute6
418         ,p_attribute7		=> p_attribute7
419         ,p_attribute8		=> p_attribute8
420         ,p_attribute9		=> p_attribute9
421         ,p_attribute10		=> p_attribute10
422         ,p_attribute11		=> p_attribute11
423         ,p_attribute12		=> p_attribute12
424         ,p_attribute13		=> p_attribute13
425         ,p_attribute14		=> p_attribute14
426         ,p_attribute15		=> p_attribute15
427         ,p_ae_line_num          => x_ae_line_num
428         ,p_creation_date        => l_creation_date
429         ,p_created_by           => l_created_by
430         ,p_last_update_date     => l_last_update_date
431         ,p_last_updated_by      => l_last_updated_by
432         ,p_last_update_login    => l_last_update_login
433         ,p_retcode              => l_retcode
434         ,p_msg_mode             => xla_datafixes_pub.g_msg_mode);
435 
436   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
437          trace(p_msg    => 'Returned from xla_journal_entries_pkg.create_journal_entry_line',
438                p_module => l_log_module,
439                p_level  => C_LEVEL_STATEMENT);
440   END IF;
441 
442   IF l_retcode = 0 and x_ae_line_num IS NOT NULL THEN
443      xla_datafixes_pub.audit_datafix (p_application_id => p_application_id
444                                      ,p_ae_header_id   => p_ae_header_id
445                                      ,p_ae_line_num    => x_ae_line_num);
446 
447   ELSE
448      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
449          trace(p_msg    => 'Failed to create journal line.',
450                p_module => l_log_module,
451                p_level  => C_LEVEL_STATEMENT);
452      END IF;
453      xla_datafixes_pub.Log_error(p_module    => l_log_module
454            ,p_error_msg => 'Failed to create journal line.');
455   END IF;
456 
457   FND_MSG_PUB.count_and_get(p_count => x_msg_count
458                            ,p_data  => x_msg_data);
459 
460 
461   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
462     trace(p_msg    => 'END of function create_journal_entry_line',
463           p_module => l_log_module,
464           p_level  => C_LEVEL_PROCEDURE);
465   END IF;
466 
467 EXCEPTION
468 WHEN FND_API.G_EXC_ERROR THEN
469   ROLLBACK;
470   x_return_status := FND_API.G_RET_STS_ERROR ;
471   FND_MSG_PUB.count_and_get(p_count => x_msg_count
472                            ,p_data  => x_msg_data);
473 
474 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
475   ROLLBACK;
476   x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
477   FND_MSG_PUB.count_and_get(p_count => x_msg_count
478                            ,p_data  => x_msg_data);
479 
480 WHEN OTHERS THEN
481   ROLLBACK;
482   x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
483   IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
484     FND_MSG_PUB.add_exc_msg(C_DEFAULT_MODULE, l_api_name);
485   END IF;
486   FND_MSG_PUB.count_and_get(p_count => x_msg_count
487                            ,p_data  => x_msg_data);
488 
489 END create_journal_entry_line;
490 
491 
492 
493 
494 --=============================================================================
495 --
496 --
497 --
498 --=============================================================================
499 PROCEDURE complete_journal_entry
500   (p_api_version                IN  NUMBER
501   ,p_init_msg_list              IN  VARCHAR2
502   ,p_application_id             IN  INTEGER
503   ,p_ae_header_id               IN  INTEGER
504   ,p_completion_option          IN  VARCHAR2
505   ,x_return_status              OUT NOCOPY VARCHAR2
506   ,x_msg_count                  OUT NOCOPY NUMBER
507   ,x_msg_data                   OUT NOCOPY VARCHAR2
508   ,x_completion_retcode         OUT NOCOPY VARCHAR2)
509 IS
510   l_api_name          CONSTANT VARCHAR2(30) := 'complete_journal_entry';
511   l_api_version       CONSTANT NUMBER       := 1.0;
512 
513   CURSOR c_funct_curr IS
514     SELECT xgl.currency_code, xsu.je_source_name
515       FROM xla_gl_ledgers_v xgl
516          , xla_ae_headers   xah
517          , xla_events       evt
518          , xla_subledgers   xsu
519      WHERE xgl.ledger_id      = xah.ledger_id
520        AND xsu.application_id = xah.application_id
521        AND xah.ae_header_id   = p_ae_header_id
522        AND xah.application_id = p_application_id
523        AND evt.process_status_code = 'U'
524        AND evt.application_id = p_application_id
525        AND xah.event_id       = evt.event_id;
526 
527   l_log_module      VARCHAR2(240);
528 
529   l_functional_curr            VARCHAR2(30);
530   l_je_source_name             VARCHAR2(30);
531   l_ae_status_code             VARCHAR2(30);
532   l_funds_status_code          VARCHAR2(30);
533   l_completion_seq_value       VARCHAR2(100); -- Should this be INTEGER or VARCHAR2 ? (see l_seq_values t_array_int?)
534   l_completion_seq_ver_id      INTEGER;
535   l_completed_date             DATE;
536   l_gl_transfer_status_code    VARCHAR2(30);
537   l_last_update_date           DATE;
538   l_last_updated_by            INTEGER;
539   l_last_update_login          INTEGER;
540   l_transfer_request_id        INTEGER;
541 
542 BEGIN
543   IF g_log_enabled THEN
544     l_log_module := C_DEFAULT_MODULE||'.complete_journal_entry';
545   END IF;
546 
547   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
548     trace(p_msg    => 'BEGIN of function complete_journal_entry',
549           p_module => l_log_module,
550           p_level  => C_LEVEL_PROCEDURE);
551   END IF;
552 
553   IF (FND_API.to_boolean(p_init_msg_list)) THEN
554     FND_MSG_PUB.initialize;
555   END IF;
556 
557   -- Standard call to check for call compatibility.
558   IF (NOT FND_API.compatible_api_call
559                  (p_current_version_number => l_api_version
560                  ,p_caller_version_number  => p_api_version
561                  ,p_api_name               => l_api_name
562                  ,p_pkg_name               => C_DEFAULT_MODULE))
563   THEN
564     RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
565   END IF;
566 
567   --  Initialize global variables
568   x_return_status        := FND_API.G_RET_STS_SUCCESS;
569   x_completion_retcode   := 'S';
570 
571 
572   -------------------------------------------------------
573   -- Validation
574   -------------------------------------------------------
575   OPEN c_funct_curr;
576   FETCH c_funct_curr INTO l_functional_curr, l_je_source_name;
577   IF c_funct_curr%NOTFOUND THEN
578      CLOSE c_funct_curr;
579      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
580          trace(p_msg    => 'There is no such journal entry or it is processed. Please verify.',
581                p_module => l_log_module,
582                p_level  => C_LEVEL_STATEMENT);
583      END IF;
584      xla_datafixes_pub.Log_error(p_module    => l_log_module
585                                 ,p_error_msg => 'There is no such journal entry or it is processed. Please verify.');
586   END IF;
587   CLOSE c_funct_curr;
588   -------------------------------------------------------
589 
590   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
591          trace(p_msg    => 'Calling xla_journal_entries_pkg.complete_journal_entry',
592                p_module => l_log_module,
593                p_level  => C_LEVEL_STATEMENT);
594   END IF;
595   xla_journal_entries_pkg.complete_journal_entry
596        (p_ae_header_id               => p_ae_header_id
597        ,p_application_id	     => p_application_id
598        ,p_completion_option          => p_completion_option
599        ,p_functional_curr            => l_functional_curr
600        ,p_je_source_name             => l_je_source_name
601        ,p_ae_status_code             => l_ae_status_code
602        ,p_funds_status_code          => l_funds_status_code
603        ,p_completion_seq_value       => l_completion_seq_value
604        ,p_completion_seq_ver_id      => l_completion_seq_ver_id
605        ,p_completed_date             => l_completed_date
606        ,p_gl_transfer_status_code    => l_gl_transfer_status_code
607        ,p_last_update_date           => l_last_update_date
608        ,p_last_updated_by            => l_last_updated_by
609        ,p_last_update_login          => l_last_update_login
610        ,p_transfer_request_id        => l_transfer_request_id
611        ,p_retcode		     => x_completion_retcode
612        ,p_msg_mode		     => xla_datafixes_pub.g_msg_mode);
613   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
614          trace(p_msg    => 'Returned from xla_journal_entries_pkg.complete_journal_entry',
615                p_module => l_log_module,
616                p_level  => C_LEVEL_STATEMENT);
617   END IF;
618 
619   IF x_completion_retcode = 'S' THEN
620      xla_datafixes_pub.audit_datafix (p_application_id => p_application_id
621                                      ,p_ae_header_id   => p_ae_header_id);
622 
623   ELSE
624      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
625          trace(p_msg    => 'Failed to complete journal entry.',
626                p_module => l_log_module,
627                p_level  => C_LEVEL_STATEMENT);
628      END IF;
629      xla_datafixes_pub.Log_error(p_module    => l_log_module
630                                 ,p_error_msg => 'Failed to complete journal entry.');
631 
632   END IF;
633 
634 
635   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
636     trace(p_msg    => 'END of function complete_journal_entry',
637           p_module => l_log_module,
638           p_level  => C_LEVEL_PROCEDURE);
639   END IF;
640 
641 EXCEPTION
642 WHEN FND_API.G_EXC_ERROR THEN
643   x_return_status := FND_API.G_RET_STS_ERROR ;
644   FND_MSG_PUB.count_and_get(p_count => x_msg_count
645                            ,p_data  => x_msg_data);
646   x_completion_retcode   := 'X';
647 
648 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
649   ROLLBACK;
650   x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
651   FND_MSG_PUB.count_and_get(p_count => x_msg_count
652                            ,p_data  => x_msg_data);
653   x_completion_retcode   := 'X';
654 
655 WHEN OTHERS THEN
656   ROLLBACK;
657   x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
658   x_completion_retcode   := 'X';
659   IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
660     FND_MSG_PUB.add_exc_msg(C_DEFAULT_MODULE, l_api_name);
661   END IF;
662   FND_MSG_PUB.count_and_get(p_count => x_msg_count
663                            ,p_data  => x_msg_data);
664 
665 END complete_journal_entry;
666 
667 
668 
669 --=============================================================================
670 --
671 -- Following code is executed when the package body is referenced for the first
672 -- time
673 --
674 --=============================================================================
675 BEGIN
676    g_log_level      := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
677    g_log_enabled    := fnd_log.test
678                           (log_level  => g_log_level
679                           ,module     => C_DEFAULT_MODULE);
680 
681    IF NOT g_log_enabled  THEN
682       g_log_level := C_LEVEL_LOG_DISABLED;
683    END IF;
684 
685 END xla_journal_entries_pub_pkg;