DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGC_CC_INT_CC_REL_PUB

Source


1 PACKAGE BODY igc_cc_int_cc_rel_pub AS
2 /*$Header: IGCCICRB.pls 120.6.12000000.4 2007/10/18 09:04:16 vumaasha ship $*/
3    g_pkg_name   CONSTANT VARCHAR2 (30)    := 'IGC_CC_INT_CC_REL_PUB';
4    g_debug_msg           VARCHAR2 (10000) := NULL;
5 --  g_debug_mode VARCHAR2(1) := NVL(FND_PROFILE.VALUE('IGC_DEBUG_ENABLED'),'N');
6    g_debug_mode          VARCHAR2 (1)
7                             := NVL (fnd_profile.VALUE ('AFLOG_ENABLED'), 'N');
8 --Variables for ATG Central logging
9    g_debug_level         NUMBER           := fnd_log.g_current_runtime_level;
10    g_state_level         NUMBER           := fnd_log.level_statement;
11    g_proc_level          NUMBER           := fnd_log.level_procedure;
12    g_event_level         NUMBER           := fnd_log.level_event;
13    g_excep_level         NUMBER           := fnd_log.level_exception;
14    g_error_level         NUMBER           := fnd_log.level_error;
15    g_unexp_level         NUMBER           := fnd_log.level_unexpected;
16    g_path                VARCHAR2 (255)
17                                := 'IGC.PLSQL.IGCCICRB.IGC_CC_INT_CC_REL_PUB.';
18 
19 --
20 -- Generic Procedure for putting out debug information
21 --
22    PROCEDURE output_debug (p_path IN VARCHAR2, p_debug_msg IN VARCHAR2);
23 
24 --
25 -- To fetch the release number.
26 --
27    PROCEDURE release_cc_num (
28       p_org_id           IN              igc_cc_headers.org_id%TYPE,
29       x_release_cc_num   OUT NOCOPY      igc_cc_headers.cc_num%TYPE
30    );
31 
32 --
33 -- To fetch the release header Id.
34 --
35    PROCEDURE release_cc_header_id (
36       x_release_cc_header_id   OUT NOCOPY   igc_cc_headers.cc_header_id%TYPE
37    );
38 
39 --
40 -- To fetch the release account line Id.
41 --
42    PROCEDURE release_cc_acct_line_id (
43       x_release_cc_acct_line_id   OUT NOCOPY   igc_cc_acct_lines.cc_acct_line_id%TYPE
44    );
45 
46 --
47 -- To fetch the release payment forecast line Id.
48 --
49    PROCEDURE release_cc_det_pf_line_id (
50       x_release_cc_det_pf_line_id   OUT NOCOPY   igc_cc_det_pf.cc_det_pf_line_id%TYPE
51    );
52 
53    PROCEDURE output_debug (p_path IN VARCHAR2, p_debug_msg IN VARCHAR2)
54    IS
55 -- --------------------------------------------------------------------
56 -- Local Variables :
57 -- --------------------------------------------------------------------
58 /*   l_prod             VARCHAR2(3)           := 'IGC';
59    l_sub_comp         VARCHAR2(7)           := 'CC_IRL';
60    l_profile_name     VARCHAR2(255)         := 'IGC_DEBUG_LOG_DIRECTORY';
61    l_Return_Status    VARCHAR2(1);*/
62       l_api_name   CONSTANT VARCHAR2 (30) := 'Output_Debug';
63    BEGIN
64       /*IGC_MSGS_PKG.Put_Debug_Msg (p_debug_message    => p_debug_msg,
65                                   p_profile_log_name => l_profile_name,
66                                   p_prod             => l_prod,
67                                   p_sub_comp         => l_sub_comp,
68                                   p_filename_val     => NULL,
69                                   x_Return_Status    => l_Return_Status
70                                  );
71 
72       IF (l_Return_Status <> FND_API.G_RET_STS_SUCCESS) THEN
73          raise FND_API.G_EXC_ERROR;
74       END IF;*/
75       IF (g_state_level >= g_debug_level)
76       THEN
77          fnd_log.STRING (g_state_level, p_path, p_debug_msg);
78       END IF;
79 
80       RETURN;
81 -- --------------------------------------------------------------------
82 -- Exception handler section for the Output_Debug procedure.
83 -- --------------------------------------------------------------------
84    EXCEPTION
85       /*WHEN FND_API.G_EXC_ERROR THEN
86           RETURN;*/
87       WHEN OTHERS
88       THEN
89          IF (fnd_msg_pub.check_msg_level (fnd_msg_pub.g_msg_lvl_unexp_error)
90             )
91          THEN
92             fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
93          END IF;
94 
95          RETURN;
96    END output_debug;
97 
98    PROCEDURE create_releases (
99       p_api_version          IN              NUMBER,
100       p_init_msg_list        IN              VARCHAR2 := fnd_api.g_false,
101       p_commit               IN              VARCHAR2 := fnd_api.g_false,
102       p_validation_level     IN              NUMBER
103             := fnd_api.g_valid_level_full,
104       p_org_id               IN              igc_cc_headers.org_id%TYPE,
105       p_sob_id               IN              igc_cc_headers.set_of_books_id%TYPE,
106       p_cover_cc_header_id   IN              igc_cc_headers.cc_header_id%TYPE,
107       p_invoice_id           IN              ap_invoices_all.invoice_id%TYPE,
108       p_invoice_amount       IN              ap_invoices_all.invoice_amount%TYPE,
109       p_vendor_id            IN              igc_cc_headers.vendor_id%TYPE,
110       p_user_id              IN              igc_cc_headers.created_by%TYPE,
111       p_login_id             IN              igc_cc_headers.last_update_login%TYPE,
112       x_return_status        OUT NOCOPY      VARCHAR2,
113       x_msg_count            OUT NOCOPY      NUMBER,
114       x_msg_data             OUT NOCOPY      VARCHAR2,
115       x_release_num          OUT NOCOPY      igc_cc_headers.cc_num%TYPE
116    )
117    IS
118       l_api_name           CONSTANT VARCHAR2 (30)        := 'create_releases';
119       l_api_version        CONSTANT NUMBER                             := 1.0;
120       l_cc_headers_rec              igc_cc_headers%ROWTYPE;
121       l_cc_acct_lines_rec           igc_cc_acct_lines%ROWTYPE;
122       l_cc_det_pf_lines_rec         igc_cc_det_pf%ROWTYPE;
123       l_ap_invoice_lines_rec        ap_invoices_all%ROWTYPE;
124       l_cc_num_method                igc_cc_system_options_all.cc_num_method%TYPE;
125       l_cc_num_datatype             igc_cc_system_options_all.cc_num_datatype%TYPE;
126       l_cc_acct_func_amt            igc_cc_acct_lines.cc_acct_func_amt%TYPE
127                                                                          := 0;
128       l_cc_rel_func_total_amt       igc_cc_acct_lines.cc_acct_func_amt%TYPE
129                                                                          := 0;
130       l_cc_currency_code            igc_cc_headers.currency_code%TYPE;
131       l_ap_currency_code            ap_invoices_all.invoice_currency_code%TYPE;
132       l_ap_conversion_rate          ap_invoices_all.exchange_rate%TYPE;
133       l_invoice_amount              ap_invoices_all.invoice_amount%TYPE  := 0;
134       l_acct_available_amt          igc_cc_acct_lines.cc_acct_func_amt%TYPE
135                                                                          := 0;
136       l_release_cc_num              igc_cc_headers.cc_num%TYPE;
137       l_release_cc_header_id        igc_cc_headers.cc_header_id%TYPE;
138       l_release_cc_acct_line_id     igc_cc_acct_lines.cc_acct_line_id%TYPE;
139       l_release_cc_det_pf_line_id   igc_cc_det_pf.cc_det_pf_line_id%TYPE;
140       l_return_status               VARCHAR2 (1);
141       l_msg_count                   NUMBER;
142       l_msg_data                    VARCHAR2 (2000);
143       l_row_id                      VARCHAR2 (18);
144       l_debug                       VARCHAR2 (1);
145       l_version_flag                VARCHAR2 (1);
146       l_user_id                     NUMBER;
147       l_login_id                    NUMBER;
148       e_int_rel_no_sup              EXCEPTION;
149       e_int_rel_no_inv              EXCEPTION;
150       e_int_rel_no_cover_cc         EXCEPTION;
151       e_int_rel_no_num_method       EXCEPTION;
152       e_null_parameter              EXCEPTION;
153       e_int_rel_invalid_user_id     EXCEPTION;
154       e_int_rel_invalid_login_id    EXCEPTION;
155 
156       CURSOR c_cc_csr
157       IS
158          SELECT *
159            FROM igc_cc_headers cc
160           WHERE cc.cc_header_id = p_cover_cc_header_id
161             AND cc.org_id = p_org_id
162             AND cc.set_of_books_id = p_sob_id;
163 
164       CURSOR c_cc_acct_csr (p_cc_header_id IN NUMBER)
165       IS
166          SELECT *
167            FROM igc_cc_acct_lines ccal
168           WHERE ccal.cc_header_id = p_cc_header_id;
169 
170       CURSOR c_cc_det_pf_csr (p_cc_acct_line_id IN NUMBER)
171       IS
172          SELECT *
173            FROM igc_cc_det_pf ccdpf
174           WHERE ccdpf.cc_acct_line_id = p_cc_acct_line_id;
175 
176       CURSOR c_inv_csr
177       IS
178          SELECT *
179            FROM ap_invoices_all ap
180           WHERE ap.set_of_books_id = p_sob_id
181             AND ap.org_id = p_org_id
182             AND ap.invoice_id = p_invoice_id;
183 
184       l_full_path                   VARCHAR2 (255);
185    BEGIN
186       l_full_path := g_path || 'create_releases';
187 -- -------------------------------------------------------------------
188 -- Initialize the return values.
189 -- -------------------------------------------------------------------
190       x_return_status := fnd_api.g_ret_sts_success;
191       x_msg_data := NULL;
192       x_msg_count := 0;
193       x_release_num := NULL;
194       SAVEPOINT int_rel_api_pt;
195 
196 -- -------------------------------------------------------------------
197 -- Make sure that the appropriate version is being used
198 -- -------------------------------------------------------------------
199       IF NOT fnd_api.compatible_api_call (l_api_version,
200                                           p_api_version,
201                                           l_api_name,
202                                           g_pkg_name
203                                          )
204       THEN
205          RAISE fnd_api.g_exc_unexpected_error;
206       END IF;
207 
208 -- -------------------------------------------------------------------
209 -- Make sure that if the message stack is to be initialized it is.
210 -- -------------------------------------------------------------------
211       IF fnd_api.to_boolean (p_init_msg_list)
212       THEN
213          fnd_msg_pub.initialize;
214       END IF;
215 
216 -- -------------------------------------------------------------------
217 -- Setup Debug info for API usage if needed.
218 -- -------------------------------------------------------------------
219 --   l_debug       := FND_PROFILE.VALUE('IGC_DEBUG_ENABLED');
220 --   IF (l_debug = 'Y') THEN
221 --       l_debug := FND_API.G_TRUE;
222 --   ELSE
223 --       l_debug := FND_API.G_FALSE;
224 --   END IF;
225 --   IGC_MSGS_PKG.g_debug_mode := FND_API.TO_BOOLEAN(l_debug);
226 --   IF (IGC_MSGS_PKG.g_debug_mode) THEN
227       IF (g_debug_mode = 'Y')
228       THEN
229          g_debug_msg :=
230             'Internal Contract Commitment Releases API Main debug mode enabled...';
231          output_debug (l_full_path, p_debug_msg => g_debug_msg);
232       END IF;
233 
234 -- -------------------------------------------------------------------
235 -- Internal Contract Commitment API releases Starts Here.
236 -- -------------------------------------------------------------------
237       IF (p_org_id IS NULL)
238       THEN
239          fnd_message.set_name ('IGC', 'IGC_CC_NO_ORG_ID');
240 
241          IF (g_error_level >= g_debug_level)
242          THEN
243             fnd_log.MESSAGE (g_error_level, l_full_path, FALSE);
244          END IF;
245 
246          fnd_msg_pub.ADD;
247          RAISE e_null_parameter;
248       END IF;
249 
250       IF (p_sob_id IS NULL)
251       THEN
252          fnd_message.set_name ('IGC', 'IGC_CC_NO_SOB');
253 
254          IF (g_error_level >= g_debug_level)
255          THEN
256             fnd_log.MESSAGE (g_error_level, l_full_path, FALSE);
257          END IF;
258 
259          fnd_msg_pub.ADD;
260          RAISE e_null_parameter;
261       END IF;
262 
263       l_version_flag := 'X';
264 
265       IF p_vendor_id IS NULL
266       THEN
267          fnd_message.set_name ('IGC', 'IGC_CC_INT_REL_NO_SUP');
268 
269          IF (g_error_level >= g_debug_level)
270          THEN
271             fnd_log.MESSAGE (g_error_level, l_full_path, FALSE);
272          END IF;
273 
274          fnd_msg_pub.ADD;
275          RAISE e_int_rel_no_sup;
276       END IF;
277 
278       IF p_invoice_id IS NULL
279       THEN
280          fnd_message.set_name ('IGC', 'IGC_CC_INT_REL_NO_INV');
281 
282          IF (g_error_level >= g_debug_level)
283          THEN
284             fnd_log.MESSAGE (g_error_level, l_full_path, FALSE);
285          END IF;
286 
287          fnd_msg_pub.ADD;
288          RAISE e_int_rel_no_inv;
289       END IF;
290 
291       IF p_cover_cc_header_id IS NULL
292       THEN
293          fnd_message.set_name ('IGC', 'IGC_CC_INT_REL_NO_CC');
294 
295          IF (g_error_level >= g_debug_level)
296          THEN
297             fnd_log.MESSAGE (g_error_level, l_full_path, FALSE);
298          END IF;
299 
300          fnd_msg_pub.ADD;
301          RAISE e_int_rel_no_cover_cc;
302       END IF;
303 
304       IF p_user_id IS NOT NULL
305       THEN
306          BEGIN
307             SELECT user_id
308               INTO l_user_id
309               FROM fnd_user
310              WHERE user_id = p_user_id;
311          EXCEPTION
312             WHEN NO_DATA_FOUND
313             THEN
314                fnd_message.set_name ('IGC', 'IGC_CC_INT_REL_INVALID_USER_ID');
315                fnd_message.set_token ('USER_ID', TO_CHAR (p_user_id), TRUE);
316 
317                IF (g_excep_level >= g_debug_level)
318                THEN
319                   fnd_log.MESSAGE (g_excep_level, l_full_path, FALSE);
320                END IF;
321 
322                fnd_msg_pub.ADD;
323                RAISE e_int_rel_invalid_user_id;
324          END;
325       END IF;
326 
327       IF p_login_id IS NOT NULL
328       THEN
329          BEGIN
330             SELECT login_id
331               INTO l_login_id
332               FROM fnd_logins
333              WHERE login_id = p_login_id;
334          EXCEPTION
335             WHEN NO_DATA_FOUND
336             THEN
337                fnd_message.set_name ('IGC', 'IGC_CC_INT_REL_INVALID_LOGINID');
338                fnd_message.set_token ('LOGIN_ID', TO_CHAR (p_login_id), TRUE);
339 
340                IF (g_excep_level >= g_debug_level)
341                THEN
342                   fnd_log.MESSAGE (g_excep_level, l_full_path, FALSE);
343                END IF;
344 
345                fnd_msg_pub.ADD;
346                RAISE e_int_rel_invalid_login_id;
347          END;
348       END IF;
349 
350 -- -------------------------------------------------------------------
351 -- Amount Available or not check begins here.
352 -- -------------------------------------------------------------------
353       IF p_cover_cc_header_id IS NOT NULL
354       THEN
355          BEGIN
356             SELECT ap.invoice_currency_code, ap.exchange_rate
357               INTO l_ap_currency_code, l_ap_conversion_rate
358               FROM ap_invoices_all ap
359              WHERE ap.invoice_id = p_invoice_id
360                AND ap.org_id = p_org_id
361                AND ap.set_of_books_id = p_sob_id;
362          EXCEPTION
363             WHEN NO_DATA_FOUND
364             THEN
365                fnd_message.set_name ('IGC', 'IGC_CC_INT_REL_NO_INV_INFO');
366                fnd_msg_pub.ADD;
367 
368                IF (g_excep_level >= g_debug_level)
369                THEN
370                   fnd_log.MESSAGE (g_excep_level, l_full_path, FALSE);
371                END IF;
372 
373                RAISE e_int_rel_no_inv;
374          END;
375 
376          BEGIN
377             SELECT cc.currency_code
378               INTO l_cc_currency_code
379               FROM igc_cc_headers cc
380              WHERE cc.cc_header_id = p_cover_cc_header_id;
381          EXCEPTION
382             WHEN NO_DATA_FOUND
383             THEN
384                fnd_message.set_name ('IGC', 'IGC_CC_INT_REL_NO_COVER_INFO');
385 
386                IF (g_excep_level >= g_debug_level)
387                THEN
388                   fnd_log.MESSAGE (g_excep_level, l_full_path, FALSE);
389                END IF;
390 
391                fnd_msg_pub.ADD;
392                RAISE e_int_rel_no_cover_cc;
393          END;
394 
395          BEGIN
396             SELECT NVL (ccal.cc_acct_func_amt, 0)
397               INTO l_cc_acct_func_amt
398               FROM igc_cc_acct_lines ccal
399              WHERE ccal.cc_header_id = p_cover_cc_header_id;
400          EXCEPTION
401             WHEN OTHERS
402             THEN
403                fnd_message.set_name ('IGC', 'IGC_CC_INT_REL_NO_COVER_AMT');
404 
405                IF (g_excep_level >= g_debug_level)
406                THEN
407                   fnd_log.MESSAGE (g_excep_level, l_full_path, FALSE);
408                END IF;
409 
410                fnd_msg_pub.ADD;
411                RAISE e_int_rel_no_cover_cc;
412          END;
413 
414          BEGIN
415             SELECT SUM (NVL (ccal.cc_acct_func_amt, 0))
416               INTO l_cc_rel_func_total_amt
417               FROM igc_cc_acct_lines ccal, igc_cc_headers cchd
418              WHERE ccal.parent_header_id = p_cover_cc_header_id
419                AND ccal.cc_header_id = cchd.cc_header_id;
420          EXCEPTION
421             WHEN OTHERS
422             THEN
423                fnd_message.set_name ('IGC', 'IGC_CC_INT_REL_NO_REL_AMT');
424 
425                IF (g_excep_level >= g_debug_level)
426                THEN
427                   fnd_log.MESSAGE (g_excep_level, l_full_path, FALSE);
428                END IF;
429 
430                fnd_msg_pub.ADD;
431                RAISE e_int_rel_no_cover_cc;
432          END;
433 
434          IF NVL (l_cc_rel_func_total_amt, 0) <> 0
435          THEN
436             l_acct_available_amt :=
437                 NVL (l_cc_acct_func_amt, 0)
438                 - NVL (l_cc_rel_func_total_amt, 0);
439          ELSE
440             l_acct_available_amt := NVL (l_cc_acct_func_amt, 0);
441          END IF;
442 
443          IF l_cc_currency_code <> l_ap_currency_code
444          THEN
445             l_invoice_amount :=
446                              p_invoice_amount * NVL (l_ap_conversion_rate, 1);
447          ELSE
448             l_invoice_amount :=
449                              p_invoice_amount * NVL (l_ap_conversion_rate, 1);
450          END IF;
451 
452          IF (NVL (l_acct_available_amt, 0) < l_invoice_amount)
453          THEN
454             fnd_message.set_name ('IGC', 'IGC_CC_INT_REL_NO_AVAIL_AMT');
455 
456             IF (g_error_level >= g_debug_level)
457             THEN
458                fnd_log.MESSAGE (g_error_level, l_full_path, FALSE);
459             END IF;
460 
461             fnd_msg_pub.ADD;
462             RAISE e_int_rel_no_cover_cc;
463          END IF;
464       END IF;
465 
466 -- -------------------------------------------------------------------
467 -- Amount available or not check ends here.
468 -- -------------------------------------------------------------------
469 
470       -- -------------------------------------------------------------------
471 -- Get the numbering method begins here.
472 -- -------------------------------------------------------------------
473       BEGIN
474          SELECT ccnm.cc_num_method, ccnm.cc_num_datatype
475            INTO l_cc_num_method, l_cc_num_datatype
476            FROM  igc_cc_system_options_all ccnm  /*igc_cc_number_methods */
477           WHERE ccnm.org_id = p_org_id;
478       EXCEPTION
479          WHEN NO_DATA_FOUND
480          THEN
481             fnd_message.set_name ('IGC', 'IGC_CC_NUM_METHOD_NOT_DEFINED');
482 
483             IF (g_excep_level >= g_debug_level)
484             THEN
485                fnd_log.MESSAGE (g_excep_level, l_full_path, FALSE);
486             END IF;
487 
488             fnd_msg_pub.ADD;
489             RAISE e_int_rel_no_num_method;
490       END;
491 
492 -- -------------------------------------------------------------------
493 -- Get the numbering method ends here.
494 -- -------------------------------------------------------------------
495 
496       -- -------------------------------------------------------------------
497 -- Creation of the internal contract commitment releases begins here.
498 -- -------------------------------------------------------------------
499       OPEN c_inv_csr;
500 
501       LOOP
502          FETCH c_inv_csr
503           INTO l_ap_invoice_lines_rec;
504 
505          EXIT WHEN c_inv_csr%NOTFOUND;
506 
507          OPEN c_cc_csr;
508 
509          LOOP
510             FETCH c_cc_csr
511              INTO l_cc_headers_rec;
512 
513             EXIT WHEN c_cc_csr%NOTFOUND;
514 
515             IF l_cc_num_method IN ('A', 'M') AND l_release_cc_num IS NULL
516             THEN
517                /* mh: Comment out existing call to local procedure, instead call generic procedure
518                   that can be called by other modules as well */
519                 /* existing: release_cc_num ( p_org_id           => p_org_id,
520                                  x_release_cc_num   => l_release_cc_num);*/
521                 -- new
522 				igc_cc_system_options_pkg.create_auto_cc_num
523                            (p_api_version           => 1.0,
524                             p_init_msg_list         => fnd_api.g_false,
525                             p_commit                => fnd_api.g_false,
526                             p_validation_level      => fnd_api.g_valid_level_full,
527                             x_return_status         => l_return_status,
528                             x_msg_count             => l_msg_count,
529                             x_msg_data              => l_msg_data,
530                             p_org_id                => p_org_id,
531                             p_sob_id                => p_sob_id,
532                             x_cc_num                => l_release_cc_num
533                            );
534 
535                -- mh: end
536                IF l_release_cc_num IS NULL
537                THEN
538                   RAISE fnd_api.g_exc_unexpected_error;
539                END IF;                                    -- CC Header Number.
540             END IF;
541 
542             release_cc_header_id
543                              (x_release_cc_header_id      => l_release_cc_header_id);
544 
545             IF l_release_cc_header_id IS NULL
546             THEN
547                RAISE fnd_api.g_exc_unexpected_error;
548             END IF;                               -- CC Header Identification.
549 
550             igc_cc_headers_pkg.insert_row
551                (p_api_version              => 1.0,
552                 p_init_msg_list            => fnd_api.g_false,
553                 p_commit                   => fnd_api.g_false,
554                 p_validation_level         => fnd_api.g_valid_level_full,
555                 x_return_status            => l_return_status,
556                 x_msg_count                => l_msg_count,
557                 x_msg_data                 => l_msg_data,
558                 p_rowid                    => l_row_id,
559                 p_cc_header_id             => l_release_cc_header_id,
560                 p_parent_header_id         => p_cover_cc_header_id,
561                 p_org_id                   => p_org_id,
562                 p_cc_type                  => 'R',
563                 p_cc_num                   => l_release_cc_num,
564                 p_cc_version_num           => 0,
565                 p_cc_state                 => 'CM',
566                 p_cc_ctrl_status           => 'O',
567                 p_cc_encmbrnc_status       => 'C',
568                 p_cc_apprvl_status         => 'AP',
569                 p_vendor_id                => l_ap_invoice_lines_rec.vendor_id,
570                 p_vendor_site_id           => l_ap_invoice_lines_rec.vendor_site_id,
571                 p_vendor_contact_id        => NULL,
572                 p_term_id                  => l_ap_invoice_lines_rec.terms_id,
573                 p_location_id              => l_cc_headers_rec.location_id,
574                 p_set_of_books_id          => l_cc_headers_rec.set_of_books_id,
575                 p_cc_acct_date             => l_cc_headers_rec.cc_acct_date,
576                 p_cc_desc                  => NULL,
577                 p_cc_start_date            => l_cc_headers_rec.cc_start_date,
578                 p_cc_end_date              => l_cc_headers_rec.cc_end_date,
579                 p_cc_owner_user_id         => l_cc_headers_rec.cc_owner_user_id,
580                 p_cc_preparer_user_id      => p_user_id,
581                 p_currency_code            => l_ap_invoice_lines_rec.invoice_currency_code,
582                 p_conversion_type          => l_ap_invoice_lines_rec.exchange_rate_type,
583                 p_conversion_date          => l_ap_invoice_lines_rec.exchange_date,
584                 p_conversion_rate          => l_ap_invoice_lines_rec.exchange_rate,
585                 p_last_update_date         => SYSDATE,
586                 p_last_updated_by          => p_user_id,
587                 p_last_update_login        => p_login_id,
588                 p_created_by               => p_user_id,
589                 p_creation_date            => SYSDATE,
590                 p_wf_item_type             => NULL,
591                 p_wf_item_key              => NULL,
592                 p_cc_current_user_id       => p_user_id,
593                 p_attribute1               => NULL,
594                 p_attribute2               => NULL,
595                 p_attribute3               => NULL,
596                 p_attribute4               => NULL,
597                 p_attribute5               => NULL,
598                 p_attribute6               => NULL,
599                 p_attribute7               => NULL,
600                 p_attribute8               => NULL,
601                 p_attribute9               => NULL,
602                 p_attribute10              => NULL,
603                 p_attribute11              => NULL,
604                 p_attribute12              => NULL,
605                 p_attribute13              => NULL,
606                 p_attribute14              => NULL,
607                 p_attribute15              => NULL,
608                 p_context                  => NULL,
609                 p_cc_guarantee_flag        => l_cc_headers_rec.cc_guarantee_flag,
610                 g_flag                     => l_version_flag
611                );
612 
613             IF l_return_status <> fnd_api.g_ret_sts_success
614             THEN
615                x_msg_data := l_msg_data;
616                x_msg_count := l_msg_count;
617                RAISE fnd_api.g_exc_unexpected_error;
618             ELSE
619                OPEN c_cc_acct_csr (p_cover_cc_header_id);
620 
621                LOOP
622                   FETCH c_cc_acct_csr
623                    INTO l_cc_acct_lines_rec;
624 
625                   EXIT WHEN c_cc_acct_csr%NOTFOUND;
626                   release_cc_acct_line_id
627                       (x_release_cc_acct_line_id      => l_release_cc_acct_line_id);
628 
629                   IF l_release_cc_acct_line_id IS NULL
630                   THEN
631                      RAISE fnd_api.g_exc_unexpected_error;
632                   END IF;                      -- Account Line Identification.
633 
634                   igc_cc_acct_lines_pkg.insert_row
635                      (p_api_version                  => 1.0,
636                       p_init_msg_list                => fnd_api.g_false,
637                       p_commit                       => fnd_api.g_false,
638                       p_validation_level             => fnd_api.g_valid_level_full,
639                       x_return_status                => l_return_status,
640                       x_msg_count                    => l_msg_count,
641                       x_msg_data                     => l_msg_data,
642                       p_rowid                        => l_row_id,
643                       p_cc_acct_line_id              => l_release_cc_acct_line_id,
644                       p_cc_header_id                 => l_release_cc_header_id,
645                       p_parent_header_id             => p_cover_cc_header_id,
646                       p_parent_acct_line_id          => l_cc_acct_lines_rec.cc_acct_line_id,
647                       p_cc_charge_code_comb_id       => l_cc_acct_lines_rec.cc_charge_code_combination_id,
648                       p_cc_acct_line_num             => l_cc_acct_lines_rec.cc_acct_line_num,
649                       p_cc_budget_code_comb_id       => l_cc_acct_lines_rec.cc_budget_code_combination_id,
650                       p_cc_acct_entered_amt          => p_invoice_amount,
651                       p_cc_acct_func_amt             =>   p_invoice_amount
652                                                         * NVL
653                                                              (l_ap_invoice_lines_rec.exchange_rate,
654                                                               1
655                                                              ),
656                       p_cc_acct_desc                 => l_cc_acct_lines_rec.cc_acct_desc,
657                       p_cc_acct_billed_amt           => NULL,
658                       p_cc_acct_unbilled_amt         => NULL,
659                       p_cc_acct_taxable_flag         => l_cc_acct_lines_rec.cc_acct_taxable_flag,
660                       p_tax_id                       => NULL,-- modified for Ebtax uptake for CC (Bug No-6472296)
661                       p_cc_acct_encmbrnc_amt         =>   p_invoice_amount
662                                                         * NVL
663                                                              (l_ap_invoice_lines_rec.exchange_rate,
664                                                               1
665                                                              ),
666                       p_cc_acct_encmbrnc_date        => l_cc_headers_rec.cc_acct_date,
667                       p_cc_acct_encmbrnc_status      => 'C',
668                       p_project_id                   => l_cc_acct_lines_rec.project_id,
669                       p_task_id                      => l_cc_acct_lines_rec.task_id,
670                       p_expenditure_type             => l_cc_acct_lines_rec.expenditure_type,
671                       p_expenditure_org_id           => l_cc_acct_lines_rec.expenditure_org_id,
672                       p_expenditure_item_date        => l_cc_acct_lines_rec.expenditure_item_date,
673                       p_last_update_date             => SYSDATE,
674                       p_last_updated_by              => p_user_id,
675                       p_last_update_login            => p_login_id,
676                       p_creation_date                => SYSDATE,
677                       p_created_by                   => p_user_id,
678                       p_attribute1                   => NULL,
679                       p_attribute2                   => NULL,
680                       p_attribute3                   => NULL,
681                       p_attribute4                   => NULL,
682                       p_attribute5                   => NULL,
683                       p_attribute6                   => NULL,
684                       p_attribute7                   => NULL,
685                       p_attribute8                   => NULL,
686                       p_attribute9                   => NULL,
687                       p_attribute10                  => NULL,
688                       p_attribute11                  => NULL,
689                       p_attribute12                  => NULL,
690                       p_attribute13                  => NULL,
691                       p_attribute14                  => NULL,
692                       p_attribute15                  => NULL,
693                       p_context                      => NULL,
694                       p_cc_func_withheld_amt         => l_cc_acct_lines_rec.cc_func_withheld_amt,
695                       p_cc_ent_withheld_amt          => l_cc_acct_lines_rec.cc_ent_withheld_amt,
696                       g_flag                         => l_version_flag,
697 		      p_tax_classif_code	     => l_cc_acct_lines_rec.tax_classif_code -- modified for Ebtax uptake (Bug No-6472296)
698                      );
699 
700                   IF l_return_status <> fnd_api.g_ret_sts_success
701                   THEN
702                      x_msg_data := l_msg_data;
703                      x_msg_count := l_msg_count;
704                      RAISE fnd_api.g_exc_unexpected_error;
705                   ELSE
706                      -- Payment Forecast Details
707                      OPEN c_cc_det_pf_csr
708                                          (l_cc_acct_lines_rec.cc_acct_line_id);
709 
710                      LOOP
711                         FETCH c_cc_det_pf_csr
712                          INTO l_cc_det_pf_lines_rec;
713 
714                         EXIT WHEN c_cc_det_pf_csr%NOTFOUND;
715                         release_cc_det_pf_line_id
716                            (x_release_cc_det_pf_line_id      => l_release_cc_det_pf_line_id
717                            );
718 
719                         IF l_release_cc_det_pf_line_id IS NULL
720                         THEN
721                            RAISE fnd_api.g_exc_unexpected_error;
722                         END IF;       -- Payment Forecast Line Identification.
723 
724                         igc_cc_det_pf_pkg.insert_row
725                            (p_api_version                    => 1.0,
726                             p_init_msg_list                  => fnd_api.g_false,
727                             p_commit                         => fnd_api.g_false,
728                             p_validation_level               => fnd_api.g_valid_level_full,
729                             x_return_status                  => l_return_status,
730                             x_msg_count                      => l_msg_count,
731                             x_msg_data                       => l_msg_data,
732                             p_rowid                          => l_row_id,
733                             p_cc_det_pf_line_id              => l_release_cc_det_pf_line_id,
734                             p_cc_det_pf_line_num             => l_cc_det_pf_lines_rec.cc_det_pf_line_num,
735                             p_cc_acct_line_id                => l_release_cc_acct_line_id,
736                             p_parent_acct_line_id            => l_cc_det_pf_lines_rec.cc_acct_line_id,
737                             p_parent_det_pf_line_id          => l_cc_det_pf_lines_rec.cc_det_pf_line_id,
738                             p_cc_det_pf_entered_amt          => p_invoice_amount,
739                             p_cc_det_pf_func_amt             =>   p_invoice_amount
740                                                                 * NVL
741                                                                      (l_ap_invoice_lines_rec.exchange_rate,
742                                                                       1
743                                                                      ),
744                             p_cc_det_pf_date                 => l_cc_det_pf_lines_rec.cc_det_pf_date,
745                             p_cc_det_pf_billed_amt           => NULL,
746                             p_cc_det_pf_unbilled_amt         => NULL,
747                             p_cc_det_pf_encmbrnc_amt         =>   p_invoice_amount
748                                                                 * NVL
749                                                                      (l_ap_invoice_lines_rec.exchange_rate,
750                                                                       1
751                                                                      ),
752                             p_cc_det_pf_encmbrnc_date        => l_cc_det_pf_lines_rec.cc_det_pf_date,
753                             p_cc_det_pf_encmbrnc_status      => 'C',
754                             p_last_update_date               => SYSDATE,
755                             p_last_updated_by                => p_user_id,
756                             p_last_update_login              => p_login_id,
757                             p_creation_date                  => SYSDATE,
758                             p_created_by                     => p_user_id,
759                             p_attribute1                     => NULL,
760                             p_attribute2                     => NULL,
761                             p_attribute3                     => NULL,
762                             p_attribute4                     => NULL,
763                             p_attribute5                     => NULL,
764                             p_attribute6                     => NULL,
765                             p_attribute7                     => NULL,
766                             p_attribute8                     => NULL,
767                             p_attribute9                     => NULL,
768                             p_attribute10                    => NULL,
769                             p_attribute11                    => NULL,
770                             p_attribute12                    => NULL,
771                             p_attribute13                    => NULL,
772                             p_attribute14                    => NULL,
773                             p_attribute15                    => NULL,
774                             p_context                        => NULL,
775                             g_flag                           => l_version_flag
776                            );
777 
778                         IF l_return_status <> fnd_api.g_ret_sts_success
779                         THEN
780                            x_msg_data := l_msg_data;
781                            x_msg_count := l_msg_count;
782                            RAISE fnd_api.g_exc_unexpected_error;
783                         ELSE
784                            BEGIN
785                               -- PO Creation.
786                               igc_cc_po_interface_pkg.convert_cc_to_po
787                                  (p_api_version           => 1.0,
788                                   p_init_msg_list         => fnd_api.g_false,
789                                   p_commit                => fnd_api.g_false,
790                                   p_validation_level      => fnd_api.g_valid_level_full,
791                                   x_return_status         => l_return_status,
792                                   x_msg_count             => l_msg_count,
793                                   x_msg_data              => l_msg_data,
794                                   p_cc_header_id          => l_release_cc_header_id
795                                  );
796 
797                               IF l_return_status <> fnd_api.g_ret_sts_success
798                               THEN
799                                  x_msg_data := l_msg_data;
800                                  x_msg_count := l_msg_count;
801                                  RAISE fnd_api.g_exc_unexpected_error;
802                               ELSE
803                                  BEGIN
804                                     -- Update PO Approved Flag
805                                     igc_cc_po_interface_pkg.update_po_approved_flag
806                                        (p_api_version           => 1.0,
807                                         p_init_msg_list         => fnd_api.g_false,
808                                         p_commit                => fnd_api.g_false,
809                                         p_validation_level      => fnd_api.g_valid_level_full,
810                                         x_return_status         => l_return_status,
811                                         x_msg_count             => l_msg_count,
812                                         x_msg_data              => l_msg_data,
813                                         p_cc_header_id          => l_release_cc_header_id
814                                        );
815 
816                                     IF l_return_status <>
817                                                      fnd_api.g_ret_sts_success
818                                     THEN
819                                        x_msg_data := l_msg_data;
820                                        x_msg_count := l_msg_count;
821                                        RAISE fnd_api.g_exc_unexpected_error;
822                                     ELSE
823                                        x_msg_data := l_msg_data;
824                                        x_msg_count := l_msg_count;
825                                        x_release_num := l_release_cc_num;
826                                     END IF;               -- PO Approved Flag.
827                                  END;
828                               END IF;                          -- PO Creation.
829                            END;
830                         END IF;                  -- Payment Forecast Creation.
831                      END LOOP;                        -- Payment Forecast Loop
832 
833                      CLOSE c_cc_det_pf_csr;
834                   END IF;                            -- Account Line Creation.
835                END LOOP;                                 -- Account Lines Loop
836 
837                CLOSE c_cc_acct_csr;
838             END IF;                                    -- CC Headers Creation.
839          END LOOP;                                          -- CC Headers Loop
840 
841          CLOSE c_cc_csr;
842       END LOOP;                                            -- Ap Invoices Loop
843 
844       CLOSE c_inv_csr;
845 
846 -- --------------------------------------------------------------------
847 -- Close Cursor
848 -- --------------------------------------------------------------------
849       IF (c_cc_det_pf_csr%ISOPEN)
850       THEN
851          CLOSE c_cc_det_pf_csr;
852       END IF;
853 
854       IF (c_cc_acct_csr%ISOPEN)
855       THEN
856          CLOSE c_cc_acct_csr;
857       END IF;
858 
859       IF (c_cc_csr%ISOPEN)
860       THEN
861          CLOSE c_cc_csr;
862       END IF;
863 
864       IF (c_inv_csr%ISOPEN)
865       THEN
866          CLOSE c_inv_csr;
867       END IF;
868 
869       IF fnd_api.to_boolean (p_commit)
870       THEN
871 --   IF (IGC_MSGS_PKG.g_debug_mode) THEN
872          IF (g_debug_mode = 'Y')
873          THEN
874             g_debug_msg := 'Internal Releases API Commiting Record...';
875             output_debug (l_full_path, p_debug_msg => g_debug_msg);
876          END IF;
877 
878          COMMIT WORK;
879       END IF;
880 
881       RETURN;
882    EXCEPTION
883       WHEN e_int_rel_no_sup OR e_int_rel_no_inv OR e_int_rel_no_cover_cc OR e_int_rel_no_num_method OR e_int_rel_no_num_method OR e_int_rel_invalid_user_id OR e_int_rel_invalid_login_id
884       THEN
885          IF (c_cc_det_pf_csr%ISOPEN)
886          THEN
887             CLOSE c_cc_det_pf_csr;
888          END IF;
889 
890          IF (c_cc_acct_csr%ISOPEN)
891          THEN
892             CLOSE c_cc_acct_csr;
893          END IF;
894 
895          IF (c_cc_csr%ISOPEN)
896          THEN
897             CLOSE c_cc_csr;
898          END IF;
899 
900          IF (c_inv_csr%ISOPEN)
901          THEN
902             CLOSE c_inv_csr;
903          END IF;
904 
905          x_return_status := fnd_api.g_ret_sts_unexp_error;
906          fnd_msg_pub.count_and_get (p_count      => x_msg_count,
907                                     p_data       => x_msg_data
908                                    );
909 
910          IF (g_excep_level >= g_debug_level)
911          THEN
912             fnd_log.STRING
913                (g_excep_level,
914                 l_full_path,
915                    'E_INT_REL_NO_SUP or E_INT_REL_NO_INV or E_INT_REL_NO_COVER_CC'
916                 || ' or E_INT_REL_NO_NUM_METHOD or E_INT_REL_NO_NUM_METHOD or E_INT_REL_INVALID_USER_ID or E_INT_REL_INVALID_LOGIN_ID'
917                );
918          END IF;
919       WHEN fnd_api.g_exc_unexpected_error
920       THEN
921          IF (c_cc_det_pf_csr%ISOPEN)
922          THEN
923             CLOSE c_cc_det_pf_csr;
924          END IF;
925 
926          IF (c_cc_acct_csr%ISOPEN)
927          THEN
928             CLOSE c_cc_acct_csr;
929          END IF;
930 
931          IF (c_cc_csr%ISOPEN)
932          THEN
933             CLOSE c_cc_csr;
934          END IF;
935 
936          IF (c_inv_csr%ISOPEN)
937          THEN
938             CLOSE c_inv_csr;
939          END IF;
940 
941          x_return_status := fnd_api.g_ret_sts_unexp_error;
942          fnd_msg_pub.count_and_get (p_count      => x_msg_count,
943                                     p_data       => x_msg_data
944                                    );
945 
946          IF (g_excep_level >= g_debug_level)
947          THEN
948             fnd_log.STRING (g_excep_level,
949                             l_full_path,
950                             'FND_API.G_EXC_UNEXPECTED_ERROR Exception Raised'
951                            );
952          END IF;
953       WHEN OTHERS
954       THEN
955          IF (c_cc_det_pf_csr%ISOPEN)
956          THEN
957             CLOSE c_cc_det_pf_csr;
958          END IF;
959 
960          IF (c_cc_acct_csr%ISOPEN)
961          THEN
962             CLOSE c_cc_acct_csr;
963          END IF;
964 
965          IF (c_cc_csr%ISOPEN)
966          THEN
967             CLOSE c_cc_csr;
968          END IF;
969 
970          IF (c_inv_csr%ISOPEN)
971          THEN
972             CLOSE c_inv_csr;
973          END IF;
974 
975          x_return_status := fnd_api.g_ret_sts_unexp_error;
976 
977          IF fnd_msg_pub.check_msg_level (fnd_msg_pub.g_msg_lvl_unexp_error)
978          THEN
979             fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
980          END IF;
981 
982          fnd_msg_pub.count_and_get (p_count      => x_msg_count,
983                                     p_data       => x_msg_data
984                                    );
985 
986          IF (g_unexp_level >= g_debug_level)
987          THEN
988             fnd_message.set_name ('IGC', 'IGC_LOGGING_UNEXP_ERROR');
989             fnd_message.set_token ('CODE', SQLCODE);
990             fnd_message.set_token ('MSG', SQLERRM);
991             fnd_log.MESSAGE (g_unexp_level, l_full_path, TRUE);
992          END IF;
993    END create_releases;
994 
995    PROCEDURE release_cc_num (
996       p_org_id           IN              igc_cc_headers.org_id%TYPE,
997       x_release_cc_num   OUT NOCOPY      igc_cc_headers.cc_num%TYPE
998    )
999    IS
1000       l_api_name   CONSTANT VARCHAR2 (30)  := 'release_cc_num';
1001       l_full_path           VARCHAR2 (255);
1002    BEGIN
1003       l_full_path := g_path || 'release_cc_num';
1004       x_release_cc_num := NULL;
1005 
1006       BEGIN
1007          SELECT (ccnm.cc_next_num + 1)
1008            INTO x_release_cc_num
1009            FROM igc_cc_system_options_all ccnm
1010           WHERE ccnm.org_id = p_org_id AND ccnm.cc_num_method IN ('A', 'M');
1011       EXCEPTION
1012          WHEN NO_DATA_FOUND
1013          THEN
1014             x_release_cc_num := 1;
1015       END;
1016 
1017       IF x_release_cc_num IS NOT NULL
1018       THEN
1019          BEGIN
1020             UPDATE igc_cc_system_options_all ccnm
1021                SET ccnm.cc_next_num = x_release_cc_num
1022              WHERE ccnm.org_id = p_org_id AND ccnm.cc_num_method IN
1023                                                                    ('A', 'M');
1024          EXCEPTION
1025             WHEN OTHERS
1026             THEN
1027                fnd_message.set_name ('IGC', 'IGC_CC_NO_UPD_CC_NEXT_NUM');
1028 
1029                IF (g_excep_level >= g_debug_level)
1030                THEN
1031                   fnd_log.MESSAGE (g_excep_level, l_full_path, FALSE);
1032                END IF;
1033 
1034                fnd_msg_pub.ADD;
1035                RAISE fnd_api.g_exc_error;
1036          END;
1037       END IF;
1038 
1039       RETURN;
1040    EXCEPTION
1041       WHEN OTHERS
1042       THEN
1043          x_release_cc_num := NULL;
1044 
1045          IF fnd_msg_pub.check_msg_level (fnd_msg_pub.g_msg_lvl_unexp_error)
1046          THEN
1047             fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
1048          END IF;
1049 
1050          IF (g_unexp_level >= g_debug_level)
1051          THEN
1052             fnd_message.set_name ('IGC', 'IGC_LOGGING_UNEXP_ERROR');
1053             fnd_message.set_token ('CODE', SQLCODE);
1054             fnd_message.set_token ('MSG', SQLERRM);
1055             fnd_log.MESSAGE (g_unexp_level, l_full_path, TRUE);
1056          END IF;
1057 
1058          RETURN;
1059    END release_cc_num;
1060 
1061    PROCEDURE release_cc_header_id (
1062       x_release_cc_header_id   OUT NOCOPY   igc_cc_headers.cc_header_id%TYPE
1063    )
1064    IS
1065       l_api_name   CONSTANT VARCHAR2 (30)  := 'release_cc_header_id';
1066       l_full_path           VARCHAR2 (255);
1067    BEGIN
1068       l_full_path := g_path || 'release_cc_header_id';
1069       x_release_cc_header_id := NULL;
1070 
1071       BEGIN
1072          SELECT igc_cc_headers_s.NEXTVAL
1073            INTO x_release_cc_header_id
1074            FROM DUAL;
1075       EXCEPTION
1076          WHEN NO_DATA_FOUND
1077          THEN
1078             fnd_message.set_name ('IGC', 'IGC_CC_NO_CC_HDR_SEQ');
1079 
1080             IF (g_excep_level >= g_debug_level)
1081             THEN
1082                fnd_log.MESSAGE (g_excep_level, l_full_path, FALSE);
1083             END IF;
1084 
1085             fnd_msg_pub.ADD;
1086             RAISE fnd_api.g_exc_error;
1087       END;
1088 
1089       RETURN;
1090    EXCEPTION
1091       WHEN OTHERS
1092       THEN
1093          x_release_cc_header_id := NULL;
1094 
1095          IF fnd_msg_pub.check_msg_level (fnd_msg_pub.g_msg_lvl_unexp_error)
1096          THEN
1097             fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
1098          END IF;
1099 
1100          IF (g_unexp_level >= g_debug_level)
1101          THEN
1102             fnd_message.set_name ('IGC', 'IGC_LOGGING_UNEXP_ERROR');
1103             fnd_message.set_token ('CODE', SQLCODE);
1104             fnd_message.set_token ('MSG', SQLERRM);
1105             fnd_log.MESSAGE (g_unexp_level, l_full_path, TRUE);
1106          END IF;
1107 
1108          RETURN;
1109    END release_cc_header_id;
1110 
1111    PROCEDURE release_cc_acct_line_id (
1112       x_release_cc_acct_line_id   OUT NOCOPY   igc_cc_acct_lines.cc_acct_line_id%TYPE
1113    )
1114    IS
1115       l_api_name   CONSTANT VARCHAR2 (30)  := 'release_cc_acct_line_id';
1116       l_full_path           VARCHAR2 (255);
1117    BEGIN
1118       l_full_path := g_path || 'release_cc_acct_line_id';
1119       x_release_cc_acct_line_id := NULL;
1120 
1121       BEGIN
1122          SELECT igc_cc_acct_lines_s.NEXTVAL
1123            INTO x_release_cc_acct_line_id
1124            FROM DUAL;
1125       EXCEPTION
1126          WHEN NO_DATA_FOUND
1127          THEN
1128             fnd_message.set_name ('IGC', 'IGC_CC_NO_CC_ACCT_SEQ');
1129 
1130             IF (g_excep_level >= g_debug_level)
1131             THEN
1132                fnd_log.MESSAGE (g_excep_level, l_full_path, FALSE);
1133             END IF;
1134 
1135             fnd_msg_pub.ADD;
1136             RAISE fnd_api.g_exc_error;
1137       END;
1138 
1139       RETURN;
1140    EXCEPTION
1141       WHEN OTHERS
1142       THEN
1143          x_release_cc_acct_line_id := NULL;
1144 
1145          IF fnd_msg_pub.check_msg_level (fnd_msg_pub.g_msg_lvl_unexp_error)
1146          THEN
1147             fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
1148          END IF;
1149 
1150          IF (g_unexp_level >= g_debug_level)
1151          THEN
1152             fnd_message.set_name ('IGC', 'IGC_LOGGING_UNEXP_ERROR');
1153             fnd_message.set_token ('CODE', SQLCODE);
1154             fnd_message.set_token ('MSG', SQLERRM);
1155             fnd_log.MESSAGE (g_unexp_level, l_full_path, TRUE);
1156          END IF;
1157 
1158          RETURN;
1159    END release_cc_acct_line_id;
1160 
1161    PROCEDURE release_cc_det_pf_line_id (
1162       x_release_cc_det_pf_line_id   OUT NOCOPY   igc_cc_det_pf.cc_det_pf_line_id%TYPE
1163    )
1164    IS
1165       l_api_name   CONSTANT VARCHAR2 (30)  := 'release_cc_det_pf_line_id';
1166       l_full_path           VARCHAR2 (255);
1167    BEGIN
1168       l_full_path := g_path || 'release_cc_det_pf_line_id';
1169       x_release_cc_det_pf_line_id := NULL;
1170 
1171       BEGIN
1172          SELECT igc_cc_det_pf_s.NEXTVAL
1173            INTO x_release_cc_det_pf_line_id
1174            FROM DUAL;
1175       EXCEPTION
1176          WHEN NO_DATA_FOUND
1177          THEN
1178             fnd_message.set_name ('IGC', 'IGC_CC_NO_CC_DET_PF_SEQ');
1179 
1180             IF (g_excep_level >= g_debug_level)
1181             THEN
1182                fnd_log.MESSAGE (g_excep_level, l_full_path, FALSE);
1183             END IF;
1184 
1185             fnd_msg_pub.ADD;
1186             RAISE fnd_api.g_exc_error;
1187       END;
1188 
1189       RETURN;
1190    EXCEPTION
1191       WHEN OTHERS
1192       THEN
1193          x_release_cc_det_pf_line_id := NULL;
1194 
1195          IF fnd_msg_pub.check_msg_level (fnd_msg_pub.g_msg_lvl_unexp_error)
1196          THEN
1197             fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
1198          END IF;
1199 
1200          IF (g_unexp_level >= g_debug_level)
1201          THEN
1202             fnd_message.set_name ('IGC', 'IGC_LOGGING_UNEXP_ERROR');
1203             fnd_message.set_token ('CODE', SQLCODE);
1204             fnd_message.set_token ('MSG', SQLERRM);
1205             fnd_log.MESSAGE (g_unexp_level, l_full_path, TRUE);
1206          END IF;
1207 
1208          RETURN;
1209    END release_cc_det_pf_line_id;
1210 END igc_cc_int_cc_rel_pub;