[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;