1 PACKAGE BODY pon_exhibits_pkg AS
2 /* $Header: PON_EXHIBITS_PKG.plb 120.9.12020000.8 2013/03/25 09:52:00 hvutukur noship $ */
3 g_debug_mode VARCHAR2(10) := 'Y';
4 g_module_prefix CONSTANT VARCHAR2(40) := 'pon.plsql.pon_exhibits_pkg.';
5 EXHIBITS_EXHAUSTED EXCEPTION;
6
7 /* This api will SYNC the data in Items table with Exhibit Details table
8 * This will be called only when multiple lines are inserted/Deleted
9 */
10 PROCEDURE HANDLE_AUCTION_EXHIBIT_DETAILS(p_auction_header_id NUMBER)
11 IS
12 p_EXHIBIT_NUMBER VARCHAR2(2);
13 p_CREATED_BY NUMBER;
14 p_LAST_UPDATED_BY NUMBER;
15 BEGIN
16
17 IF(IS_EXHIBITS_ENABLED_FOR_AUC(p_auction_header_id) = 'N') THEN
18 RETURN;
19 END IF;
20
21
22 BEGIN
23
24 DELETE FROM pon_auction_exhibit_details WHERE auction_header_id=p_auction_header_id
25 AND IS_CDRL = 'N'
26 AND exhibit_number in
27 (SELECT exhibits.exhibit_number FROM pon_auction_exhibit_details exhibits WHERE exhibits.auction_header_id=p_auction_header_id
28 AND IS_CDRL='N'
29 AND exhibit_number NOT IN (SELECT exhibit_number FROM pon_auction_item_prices_ALL items
30 WHERE items.auction_header_id=p_auction_header_id AND items.exhibit_number=exhibits.exhibit_number));
31
32 EXCEPTION
33 WHEN NO_DATA_FOUND THEN
34 NULL;
35
36 END;
37
38 SELECT created_by,last_updated_by
39 INTO
40 p_CREATED_BY,p_LAST_UPDATED_BY
41 FROM pon_auction_headers_all
42 WHERE auction_header_id=p_auction_header_id;
43
44 begin
45
46 /* SELECT exhibit_number
47 INTO p_EXHIBIT_NUMBER
48 FROM pon_auction_item_prices_ALL items
49 WHERE items.auction_header_id=p_auction_header_id
50 AND items.exhibit_number IS NOT NULL
51 AND NOT EXISTS
52 (SELECT exhibit_number FROM pon_auction_exhibit_details exhibits
53 WHERE auction_header_id=p_auction_header_id AND IS_CDRL='N' AND items.exhibit_number=exhibits.exhibit_number)
54 AND ROWNUM=1;*/
55
56 INSERT INTO pon_auction_exhibit_details
57 (AUCTION_HEADER_ID,
58 EXHIBIT_NUMBER,
59 IS_CDRL,
60 ASSOCIATED_TO_LINE,
61 EXHIBIT_DESCRIPTION,
62 CREATION_DATE,
63 CREATED_BY,
64 LAST_UPDATE_DATE,
65 LAST_UPDATED_BY) (
66 SELECT
67 p_auction_header_id,
68 exhibit_number,
69 'N',
70 NULL,
71 NULL,
72 SYSDATE,
73 p_CREATED_BY,
74 SYSDATE,
75 p_LAST_UPDATED_BY
76 FROM pon_auction_item_prices_ALL items
77 WHERE items.auction_header_id=p_auction_header_id
78 AND items.exhibit_number IS NOT NULL
79 AND NOT EXISTS
80 (SELECT exhibit_number FROM pon_auction_exhibit_details exhibits
81 WHERE auction_header_id=p_auction_header_id AND IS_CDRL='N' AND items.exhibit_number=exhibits.exhibit_number)
82 GROUP BY exhibit_number);
83
84 EXCEPTION
85
86 WHEN NO_DATA_FOUND THEN
87 NULL;
88 END;
89
90
91 END ;
92
93 /* This api will Insert data into Exhibit Details table
94 * This will be called when single exhibit line is created/Modified
95 */
96 PROCEDURE CREATE_EXHIBIT_DETAILS(p_auction_header_id NUMBER,p_old_exhibit_number varchar2,p_exhibit_number varchar2)
97 IS
98 number_of_exhibits NUMBER;
99 number_of_lines NUMBER;
100 p_CREATED_BY NUMBER;
101 p_LAST_UPDATED_BY NUMBER;
102
103 BEGIN
104 IF(IS_EXHIBITS_ENABLED_FOR_AUC(p_auction_header_id) = 'N') THEN
105 RETURN;
106 END IF;
107
108 BEGIN
109
110 SELECT Count(*)
111 INTO number_of_exhibits
112 FROM pon_auction_exhibit_details
113 WHERE auction_header_id=p_auction_header_id
114 AND exhibit_number=p_exhibit_number
115 AND IS_CDRL='N';
116
117 SELECT Count(*)
118 INTO number_of_lines
119 FROM pon_auction_item_prices_all
120 WHERE auction_header_id=p_auction_header_id
121 AND exhibit_number=p_exhibit_number
122 AND ROWNUM=1;
123
124
125 IF(number_of_exhibits=0 AND number_of_lines>0) THEN
126 INSERT INTO pon_auction_exhibit_details
127 (AUCTION_HEADER_ID,
128 EXHIBIT_NUMBER,
129 IS_CDRL,
130 CREATION_DATE,
131 LAST_UPDATE_DATE
132 )
133 values (p_auction_header_id,p_exhibit_number,'N',SYSDATE,SYSDATE);
134
135 END IF;
136
137 EXCEPTION
138 WHEN No_Data_Found THEN
139 NULL;
140 END;
141
142 BEGIN
143 IF(p_old_exhibit_number IS NOT NULL) then
144 DELETE_EXHIBIT_DETAILS(p_auction_header_id ,p_old_exhibit_number);
145 END IF;
146
147 EXCEPTION
148 WHEN No_Data_Found THEN
149 NULL;
150 END;
151
152
153
154 END;
155
156 /* This api will check if exhibits are enabled for org or not?
157 * This will return "Y" : only if federal and exhibits are enabled.
158 */
159 FUNCTION IS_EXHIBITS_ENABLED( p_organization_id IN NUMBER,l_doc_type_id IN NUMBER)
160 RETURN VARCHAR IS
161
162 l_are_exhibits_enabled VARCHAR2(1);
163 BEGIN
164
165 l_are_exhibits_enabled := 'N';
166 IF (PON_CLM_UTIL_PKG.IS_DOCUMENT_FEDERAL(p_doc_type_id => l_doc_type_id)) <> 1 THEN
167 RETURN l_are_exhibits_enabled;
168 END IF;
169 l_are_exhibits_enabled := Nvl(po_core_s.Retrieveoptionvalue(p_organization_id, po_core_s.g_exhibits_lines_col), 'N');
170
171 RETURN l_are_exhibits_enabled;
172
173 EXCEPTION
174 WHEN OTHERS THEN
175 RETURN 'N';
176
177 END IS_EXHIBITS_ENABLED;
178
179 /* This api will Delete data from Exhibit Details table
180 * This will be called when single exhibit line is deleted/Modified
181 */
182 PROCEDURE DELETE_EXHIBIT_DETAILS(p_auction_header_id NUMBER,p_exhibit_number varchar2)
183 IS
184 number_of_lines NUMBER;
185
186 BEGIN
187 IF(IS_EXHIBITS_ENABLED_FOR_AUC(p_auction_header_id) = 'N') THEN
188 RETURN;
189 END IF;
190
191 SELECT Count(*)
192 INTO number_of_lines
193 FROM pon_auction_item_prices_all
194 WHERE auction_header_id=p_auction_header_id
195 AND exhibit_number=p_exhibit_number
196 AND ROWNUM=1;
197
198
199 IF(number_of_lines=0) then
200 DELETE from pon_auction_exhibit_details
201 WHERE auction_header_id=p_auction_header_id
202 AND exhibit_number=p_exhibit_number
203 AND IS_CDRL='N';
204
205 END IF;
206
207 EXCEPTION
208
209 WHEN No_Data_Found THEN
210 NULL;
211
212 END;
213 /* This api is used when CLINs are deleted in a Solicitation
214 * If there are exhibits linked to the deleted CLIN, those links will be removed by this procedure
215 * p_line_number is used based on single clin delete or multiple clin delete
216 */
217 PROCEDURE UPDATE_EXHIBIT_DETAILS(p_auction_header_id NUMBER,p_line_number NUMBER)
218 IS
219 BEGIN
220 IF(IS_EXHIBITS_ENABLED_FOR_AUC(p_auction_header_id) = 'N') THEN
221 RETURN;
222 END IF;
223 IF(p_line_number IS NOT NULL) THEN
224 UPDATE pon_auction_exhibit_details
225 SET ASSOCIATED_TO_LINE=NULL
226 WHERE AUCTION_HEADER_ID=p_auction_header_id
227 AND ASSOCIATED_TO_LINE = p_line_number;
228
229 else
230 UPDATE pon_auction_exhibit_details
231 SET ASSOCIATED_TO_LINE=NULL
232 WHERE AUCTION_HEADER_ID=p_auction_header_id
233 AND ASSOCIATED_TO_LINE
234 NOT IN (SELECT line_number FROM pon_auction_item_prices_all WHERE AUCTION_HEADER_ID=p_auction_header_id);
235 END IF;
236
237
238
239
240 END;
241
242 /* This api is to Copy Exhibits
243 */
244 PROCEDURE COPY_EXHIBITS(
245 p_auction_header_id NUMBER,
246 p_doctype_id NUMBER,
247 p_user_id NUMBER,
248 p_exhibit_number VARCHAR2,
249 p_is_cdrl VARCHAR2)
250 IS
251
252 p_msg_data VARCHAR2(1000);
253 p_msg_count NUMBER;
254 p_return_status VARCHAR2(10);
255 l_exhibit_tbl okc_cdrl_pvt.exhibit_tbl_type;
256 p_new_exhibit_number VARCHAR2(2);
257 --Holds numbers of deliverables in passed in exhibit
258 l_cdrl_count NUMBER;
259 BEGIN
260
261
262 IF(p_is_cdrl = 'N') THEN
263
264 COPY_ELINS(p_auction_header_id,p_doctype_id,p_user_id,p_exhibit_number);
265
266 ELSIF(p_is_cdrl = 'Y') THEN
267
268 --Get number of deliverables in an exhibit and use it to get next exhibit number.
269 select count(1) INTO l_cdrl_count
270 FROM okc_deliverables
271 where business_document_id = p_auction_header_id
272 and business_document_version = -99
273 and del_category_code = 'CDRL'
274 and exhibit_code = p_exhibit_number;
275
276 p_new_exhibit_number := GET_NEXT_EXHIBIT(p_auction_header_id,p_exhibit_number,l_cdrl_count);
277
278 OKC_CDRL_PVT.copy_cdrl_for_exhibit
279 (p_api_version => 1.0,
280 p_init_msg_list => FND_API.G_TRUE,
281 p_commit => FND_API.G_FALSE,
282 --p_doc_class => 'SOURCING',
283 p_doc_type => 'SOLICITATION',
284 p_doc_id => p_auction_header_id,
285 p_doc_version => NULL,
286 p_mode => NULL,
287 p_src_exhibit => p_exhibit_number,
288 p_target_exhibit => p_new_exhibit_number,
289 --p_exhibit_tbl => l_exhibit_tbl,
290 x_msg_data => p_msg_data,
291 x_msg_count => p_msg_count,
292 x_return_status => p_return_status);
293
294 INSERT_CDRL_EXHIBIT_DETAILS(p_auction_header_id,p_new_exhibit_number,p_return_status,p_msg_data);
295
296 END IF;
297
298
299 END;
300
301
302 /* This api is to Delete Exhibits
303 */
304 PROCEDURE DELETE_EXHIBITS(
305 p_auction_header_id NUMBER,
306 p_doctype_id NUMBER,
307 p_user_id NUMBER,
308 p_exhibit_number VARCHAR2,
309 p_is_cdrl VARCHAR2)
310 IS
311
312 p_msg_data VARCHAR2(1000);
313 p_msg_count NUMBER;
314 p_return_status VARCHAR2(10);
315 l_exhibit_tbl okc_cdrl_pvt.exhibit_tbl_type;
316 p_new_exhibit_number VARCHAR2(2);
317 BEGIN
318
319
320 IF(p_is_cdrl = 'N') THEN
321
322 DELETE_ELINS(p_auction_header_id,p_doctype_id,p_user_id,p_exhibit_number);
323
324 ELSIF(p_is_cdrl = 'Y') THEN
325
326 l_exhibit_tbl(1):= p_exhibit_number;
327 OKC_CDRL_PVT.delete_cdrl_for_exhibits
328 (p_api_version => 1.0,
329 p_init_msg_list => FND_API.G_TRUE,
330 p_commit => FND_API.G_FALSE,
331 --p_doc_class => 'SOURCING',
332 p_doc_type => 'SOLICITATION',
333 p_doc_id => p_auction_header_id,
334 p_doc_version => NULL,
335 p_mode => NULL,
336 p_exhibit_tbl => l_exhibit_tbl,
337 x_msg_data => p_msg_data,
338 x_msg_count => p_msg_count,
339 x_return_status => p_return_status);
340
341 DELETE_CDRL_EXHIBIT_DETAILS(p_auction_header_id,p_exhibit_number,p_return_status);
342
343 END IF;
344
345
346 END;
347
348
349 FUNCTION GET_NEXT_EXHIBIT(auction_header_id IN NUMBER,old_exhibit_number IN varchar2, lines IN NUMBER)
350 RETURN varchar
351 IS
352 p_new_exhibit_number VARCHAR2(2);
353 p_source_auction_header_id NUMBER := auction_header_id;
354 Begin
355 IF(lines>1155 OR lines IS null) THEN
356
357 SELECT lookup_code
358 INTO p_new_exhibit_number
359 FROM (select lookup_code
360 from fnd_lookup_values
361 where lookup_type = 'PO_CLM_EXHIBIT_NUMBER'
362 AND Length(lookup_code) = 1
363 AND lookup_code NOT IN
364 (SELECT exhibit_number FROM pon_auction_exhibit_details WHERE auction_header_id=p_source_auction_header_id)
365 ORDER BY lookup_code)
366 WHERE ROWNUM=1;
367
368 ELSE
369 SELECT lookup_code
370 INTO p_new_exhibit_number
371 FROM (select lookup_code
372 from fnd_lookup_values
373 where lookup_type = 'PO_CLM_EXHIBIT_NUMBER'
374 AND lookup_code NOT IN
375 (SELECT exhibit_number FROM pon_auction_exhibit_details WHERE auction_header_id=p_source_auction_header_id)
376 ORDER BY length(lookup_code), lookup_code)
377 WHERE ROWNUM=1;
378 END IF;
379
380 RETURN p_new_exhibit_number;
381
382 EXCEPTION
383 WHEN No_Data_Found THEN
384 RAISE EXHIBITS_EXHAUSTED;
385 RETURN NULL;
386 END GET_NEXT_EXHIBIT;
387
388
389
390
391 PROCEDURE COPY_ELINS(
392 p_auction_header_id NUMBER,
393 p_doctype_id NUMBER,
394 p_user_id NUMBER,
395 p_exhibit_number VARCHAR2)
396 IS
397 -- l_copy_close_bidding_date varchar2(1);
398 p_new_exhibit_number VARCHAR2(2);
399 p_source_auction_header_id NUMBER := p_auction_header_id;
400 P_LINE_NUMBER NUMBER;
401 P_NO_OF_LINES NUMBER;
402 p_lines PO_TBL_NUMBER;
403 p_line_numbers PO_TBL_NUMBER;
404 p_line_num_displays PO_TBL_VARCHAR30;
405 p_initial_line_number NUMBER;
406 p_final_line_number NUMBER;
407 p_max_line_number NUMBER;
408 p_result VARCHAR2(100);
409 p_error_code VARCHAR2(1000);
410 p_error_message VARCHAR2(1000);
411
412 BEGIN
413 IF(IS_EXHIBITS_ENABLED_FOR_AUC(p_auction_header_id) = 'N') THEN
414 RETURN;
415 END IF;
416
417 LOG_MESSAGE('copy_lines','IS_EXHIBITS_ENABLED_FOR_AUC:'||'Y' );
418
419 SELECT line_number
420 BULK COLLECT INTO p_lines
421 FROM pon_auction_item_prices_all
422 WHERE auction_header_id = p_auction_header_id
423 AND exhibit_number = p_exhibit_number;
424
425 LOG_MESSAGE('copy_lines','After Collecting the line number of the exhibit Lines' );
426
427 p_new_exhibit_number:= GET_NEXT_EXHIBIT(p_auction_header_id,p_exhibit_number,p_lines.COUNT);
428
429 LOG_MESSAGE('copy_lines','New Exhibit Generated:'||p_new_exhibit_number );
430
431 SELECT Max(line_number)
432 INTO p_initial_line_number
433 FROM pon_auction_item_prices_all WHERE
434 auction_header_id = p_auction_header_id;
435
436 LOG_MESSAGE('copy_lines','p_initial_line_number:'||p_initial_line_number );
437
438 pon_clm_clo_util_pkg.copy_lines(p_auction_header_id,p_lines,NULL,p_max_line_number,
439 p_result,p_error_code,p_error_message);
440
441 SELECT Max(line_number)
442 INTO p_final_line_number
443 FROM pon_auction_item_prices_all WHERE
444 auction_header_id = p_auction_header_id;
445
446
447 LOG_MESSAGE('copy_lines','p_final_line_number:'||p_final_line_number );
448
449 SELECT X,p_new_exhibit_number||Decode(Length(p_new_exhibit_number)
450 +Length(pon_clo_renumber_pkg.DECIMAL_TO_ELIN(X)),4,'',3,'0',2,'00')
451 ||pon_clo_renumber_pkg.DECIMAL_TO_ELIN(X) AS NEXT_ELIN_SET
452 BULK COLLECT INTO p_line_numbers,p_line_num_displays
453 FROM
454 (SELECT LEVEL AS X
455 FROM dual
456 CONNECT BY LEVEL <=p_final_line_number-p_initial_line_number+1);
457
458
459 FORALL i IN 1..p_line_num_displays.count
460 UPDATE pon_auction_item_prices_all
461 SET exhibit_number = p_new_exhibit_number,
462 line_num_display=p_line_num_displays(i)
463 WHERE auction_header_id = p_auction_header_id
464 AND line_number=p_line_numbers(i)+p_initial_line_number;
465
466
467 LOG_MESSAGE('copy_lines','Create Exhibit Details record' );
468
469 CREATE_EXHIBIT_DETAILS(p_source_auction_header_id,null,p_new_exhibit_number);
470
471 LOG_MESSAGE('copy_lines','Copy Lines Completed' );
472
473 SELECT NVL(MAX(line_number),0)
474 INTO P_LINE_NUMBER
475 FROM pon_auction_item_prices_all
476 WHERE auction_header_id = p_source_auction_header_id;
477
478 SELECT Count(*)
479 INTO P_NO_OF_LINES
480 FROM pon_auction_item_prices_all
481 WHERE auction_header_id = p_source_auction_header_id;
482
483 UPDATE PON_AUCTION_HEADERS_ALL
484 SET NUMBER_OF_LINES = P_NO_OF_LINES,
485 LAST_LINE_NUMBER = P_LINE_NUMBER
486 WHERE AUCTION_HEADER_ID = p_source_auction_header_id;
487
488 EXCEPTION
489
490 WHEN EXHIBITS_EXHAUSTED THEN
491 Raise_Application_Error (-20900, 'PON_EXHIBITS_EXHAUSTED');
492
493 END;
494
495 PROCEDURE DELETE_ELINS(
496 p_auction_header_id NUMBER,
497 p_doctype_id NUMBER,
498 p_user_id NUMBER,
499 p_exhibit_number VARCHAR2)
500 IS
501 p_source_auction_header_id NUMBER := p_auction_header_id;
502 P_LINE_NUMBER NUMBER;
503 P_NO_OF_LINES NUMBER;
504 p_lines PO_TBL_NUMBER;
505 p_max_line_number NUMBER;
506 p_result VARCHAR2(100);
507 p_error_code VARCHAR2(1000);
508 p_error_message VARCHAR2(1000);
509 p_number_of_lines_deleted NUMBER;
510 BEGIN
511 IF(IS_EXHIBITS_ENABLED_FOR_AUC(p_auction_header_id) = 'N') THEN
512 RETURN;
513 END IF;
514
515 LOG_MESSAGE('delete_lines','IS_EXHIBITS_ENABLED_FOR_AUC:'||'Y' );
516
517 SELECT line_number
518 BULK COLLECT INTO p_lines
519 FROM pon_auction_item_prices_all
520 WHERE auction_header_id = p_auction_header_id
521 AND exhibit_number = p_exhibit_number;
522
523 LOG_MESSAGE('delete_lines','After Collecting the line number of the exhibit Lines' );
524
525
526 FOR i IN 1..p_lines.Count LOOP
527 pon_clm_clo_util_pkg.delete_single_line
528 (p_auction_header_id=> p_auction_header_id,
529 p_line_number => p_lines(i),
530 x_result => p_result,
531 x_error_code => p_error_code,
532 x_error_message => p_error_message,
533 x_number_of_lines_deleted => p_number_of_lines_deleted);
534 END LOOP;
535
536 LOG_MESSAGE('delete_lines','Number of Lines Deleted'||p_number_of_lines_deleted);
537
538 LOG_MESSAGE('delete_lines','Remove Exhibit Details record' );
539
540 DELETE_EXHIBIT_DETAILS(p_source_auction_header_id,p_exhibit_number);
541
542 LOG_MESSAGE('delete_lines','Delete Lines Completed' );
543
544 SELECT NVL(MAX(line_number),0)
545 INTO P_LINE_NUMBER
546 FROM pon_auction_item_prices_all
547 WHERE auction_header_id = p_source_auction_header_id;
548
549 SELECT Count(*)
550 INTO P_NO_OF_LINES
551 FROM pon_auction_item_prices_all
552 WHERE auction_header_id = p_source_auction_header_id;
553
554 UPDATE PON_AUCTION_HEADERS_ALL
555 SET NUMBER_OF_LINES = P_NO_OF_LINES,
556 LAST_LINE_NUMBER = P_LINE_NUMBER
557 WHERE AUCTION_HEADER_ID = p_source_auction_header_id;
558
559 EXCEPTION
560
561 WHEN OTHERS THEN
562 LOG_MESSAGE('delete_lines','Exception in Delete Lines' );
563
564 END;
565
566 PROCEDURE LOG_MESSAGE( p_module IN VARCHAR2, p_message IN VARCHAR2)
567 IS
568 BEGIN
569 IF (g_debug_mode = 'Y') THEN
570 IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN
571 FND_LOG.string(log_level => FND_LOG.level_statement,
572 module => g_module_prefix || p_module,
573 message => p_message);
574 END IF;
575 END IF;
576
577 -- insert into s_temp values(p_module||' , '|| p_message);
578 END LOG_MESSAGE;
579
580 FUNCTION HAS_ELIN_ASSOC_FOR_LINE(p_auction_header_id NUMBER, p_line_number IN NUMBER)
581 RETURN VARCHAR2 IS
582
583 l_elin_count NUMBER;
584
585 BEGIN
586 SELECT Count(*)
587 INTO l_elin_count
588 FROM pon_auction_exhibit_details
589 WHERE auction_header_id = p_auction_header_id
590 AND associated_to_line = p_line_number
591 AND Nvl(is_cdrl, 'N') = 'N';
592
593 IF l_elin_count <> 0 THEN
594 RETURN 'Y';
595 ELSE
596 RETURN 'N';
597 END IF;
598
599 END HAS_ELIN_ASSOC_FOR_LINE;
600
601 FUNCTION IS_LINE_ELIN (p_auction_header_id NUMBER, p_line_number IN NUMBER)
602 RETURN VARCHAR2 IS
603
604 l_is_elin VARCHAR2(1);
605 BEGIN
606
607 SELECT Decode(Nvl(exhibit_number, '-1'), '-1' , 'N', 'Y')
608 INTO l_is_elin
609 FROM pon_auction_item_prices_all
610 WHERE auction_header_id = p_auction_header_id
611 AND line_number = p_line_number;
612
613 RETURN l_is_elin;
614
615 END IS_LINE_ELIN;
616
617 FUNCTION IS_EXHIBITS_ENABLED_FOR_AUC(p_auction_header_id NUMBER)
618 RETURN VARCHAR2 IS
619
620 l_org_id pon_auction_headers_all.org_id%TYPE;
621 l_doctype_id pon_auction_headers_all.doctype_id%TYPE;
622
623 BEGIN
624 SELECT org_id, doctype_id
625 INTO l_org_id,l_doctype_id
626 FROM pon_auction_headers_all
627 WHERE auction_header_id = p_auction_header_id;
628
629 RETURN IS_EXHIBITS_ENABLED(l_org_id, l_doctype_id);
630
631 END IS_EXHIBITS_ENABLED_FOR_AUC;
632
633 /* This api will check if cdrls are enabled for org or not?
634 * This will return "Y" : only if federal and cdrls are enabled.
635 */
636 FUNCTION IS_CDRLS_ENABLED( p_organization_id IN NUMBER,l_doc_type_id IN NUMBER)
637 RETURN VARCHAR IS
638
639 l_are_cdrls_enabled VARCHAR2(1);
640 BEGIN
641
642 l_are_cdrls_enabled := 'N';
643 IF (PON_CLM_UTIL_PKG.IS_DOCUMENT_FEDERAL(p_doc_type_id => l_doc_type_id)) <> 1 THEN
644 RETURN l_are_cdrls_enabled;
645 END IF;
646 l_are_cdrls_enabled := Nvl(po_core_s.Retrieveoptionvalue(p_organization_id, po_core_s.g_CONT_DATA_REQS_COL), 'N');
647
648 RETURN l_are_cdrls_enabled;
649
650 EXCEPTION
651 WHEN OTHERS THEN
652 RETURN 'N';
653
654 END IS_CDRLS_ENABLED;
655
656
657 /* This api will Insert data into Exhibit Details table for cdrls.
658 * This will be called from okc code.
659 * If cdrl record already exists : x_return_status = 'S', x_return_msg := 'CDRL_RECORD_EXISTS'
660 * If p_exhibit_number is used by elins : x_return_status = 'U', x_return_msg := 'EXHIBIT_NUM_USED_BY_ELIN'
661 */
662 PROCEDURE INSERT_CDRL_EXHIBIT_DETAILS(p_auction_header_id IN NUMBER,
663 p_exhibit_number IN VARCHAR2,
664 x_return_status OUT NOCOPY VARCHAR2,
665 x_return_msg OUT NOCOPY VARCHAR2)
666 IS
667 l_cdrl_exists VARCHAR2(1);
668 l_user_id fnd_user.user_id%TYPE;
669
670 BEGIN
671
672 --BEGIN
673 l_cdrl_exists := 'N';
674
675 BEGIN
676 SELECT Nvl(is_cdrl, 'E')
677 INTO l_cdrl_exists
678 FROM pon_auction_exhibit_details
679 WHERE auction_header_id=p_auction_header_id
680 AND exhibit_number=p_exhibit_number;
681 EXCEPTION
682 WHEN No_Data_Found THEN
683 NULL;
684 END;
685
686 IF l_cdrl_exists = 'Y' THEN
687 x_return_status := 'S';
688 x_return_msg := 'CDRL_RECORD_EXISTS';
689 RETURN;
690 ELSIF l_cdrl_exists = 'E' THEN
691 x_return_status := 'U';
692 x_return_msg := 'EXHIBIT_NUM_USED_BY_ELIN';
693 RETURN;
694 END IF;
695
696 l_user_id := fnd_global.user_id();
697
698 INSERT INTO pon_auction_exhibit_details
699 (AUCTION_HEADER_ID,
700 EXHIBIT_NUMBER,
701 IS_CDRL,
702 ASSOCIATED_TO_LINE,
703 EXHIBIT_DESCRIPTION,
704 CREATION_DATE,
705 CREATED_BY,
706 LAST_UPDATE_DATE,
707 LAST_UPDATED_BY)
708 VALUES
709 (p_auction_header_id,p_exhibit_number,'Y', NULL, NULL, SYSDATE,l_user_id,SYSDATE,l_user_id);
710
711 x_return_status := 'S';
712
713 END INSERT_CDRL_EXHIBIT_DETAILS;
714
715 /* This api will delete cdrl exhibit record from pon_auction_exhibit_details table.
716 * This api should be called by okc code.
717 */
718 PROCEDURE DELETE_CDRL_EXHIBIT_DETAILS(p_auction_header_id IN NUMBER,
719 p_exhibit_number IN VARCHAR2,
720 x_return_status OUT NOCOPY VARCHAR2)
721
722 IS
723
724 BEGIN
725
726 DELETE FROM pon_auction_exhibit_details
727 WHERE auction_header_id = p_auction_header_id
728 AND exhibit_number = p_exhibit_number
729 AND is_cdrl = 'Y';
730
731 x_return_status := 'S';
732
733 END DELETE_CDRL_EXHIBIT_DETAILS;
734
735
736
737 END PON_EXHIBITS_PKG;