[Home] [Help]
PACKAGE BODY: APPS.PON_OPEN_INTERFACE_PVT
Source
1 PACKAGE BODY pon_open_interface_pvt AS
2 /* $Header: PON_OPEN_INTERFACE_PVT.plb 120.7.12020000.11 2013/05/22 11:21:03 rakearun noship $ */
3
4 --TYPE allowed_values_table IS TABLE OF VARCHAR2(20);
5 neg_header_record_data neg_header_record;
6
7 TYPE column_test_table IS TABLE OF allowed_value_column_object;
8 allowed_values_table_data allowed_values_table;
9 yn_data allowed_values_table;
10 object_data allowed_value_column_object;
11 column_test_table_data column_test_table := column_test_table();
12
13 TYPE validate_header_col_table IS TABLE OF VARCHAR2(50);
14 header_cols validate_header_col_table := validate_header_col_table
15 ('CONTRACT_TYPE',
16 'SECURITY_LEVEL_CODE',
17 'GLOBAL_AGREEMENT_FLAG',
18 'PUBLISH_RATES_TO_BIDDERS_FLAG',
19 'OPEN_AUCTION_NOW_FLAG',
20 'PUBLISH_AUCTION_NOW_FLAG',
21 'BID_VISIBILITY_CODE',
22 'BID_SCOPE_CODE',
23 'BID_LIST_TYPE',
24 'BID_FREQUENCY_CODE',
25 'BID_RANKING',
26 'RANK_INDICATOR',
27 'FULL_QUANTITY_BID_CODE',
28 'MULTIPLE_ROUNDS_FLAG',
29 'MANUAL_CLOSE_FLAG',
30 'MANUAL_EXTEND_FLAG',
31 'AWARD_APPROVAL_FLAG',
32 'AUCTION_ORIGINATION_CODE',
33 'ADVANCE_NEGOTIABLE_FLAG',
34 'RECOUPMENT_NEGOTIABLE_FLAG',
35 'PROGRESS_PYMT_NEGOTIABLE_FLAG',
36 'RETAINAGE_NEGOTIABLE_FLAG',
37 'MAX_RETAINAGE_NEGOTIABLE_FLAG',
38 'SUPPLIER_ENTERABLE_PYMT_FLAG',
39 'TWO_PART_FLAG',
40 'PF_TYPE_ALLOWED',
41 'PRICE_BREAK_RESPONSE',
42 'PRICE_TIERS_INDICATOR',
43 'AMENDMENT_FLAG');
44
45
46 /*
47 Here a map of columns and their possible values is created
48 The values in pon_auction_headers_interface will be checked against the
49 possible values given in this map.
50 */
51
52 PROCEDURE populate_column_test_table(
53 p_contract_type IN VARCHAR2,
54 p_auction_type IN VARCHAR2,
55 p_is_complex IN VARCHAR2
56 )
57 AS
58
59
60 BEGIN
61 column_test_table_data.extend(31);
62 yn_data := allowed_values_table('Y','N');
63 allowed_values_table_data := allowed_values_table('CONTRACT','BLANKET','STANDARD');
64 object_data := allowed_value_column_object('CONTRACT_TYPE',allowed_values_table_data);
65 column_test_table_data(1) := object_data;
66 allowed_values_table_data := allowed_values_table('PUBLIC','PRIVATE','HIERARCHY');
67 object_data := allowed_value_column_object('SECURITY_LEVEL_CODE',allowed_values_table_data); --SELECT MEANING FROM FND_LOOKUP_VALUES WHERE LOOKUP_TYPE = 'PON_SECURITY_LEVEL_CODE' AND LANGUAGE=UserEnv('LANG'))
68 column_test_table_data(2) := object_data;
69 IF(p_contract_type IN ('BLANKET','CONTRACT')) THEN
70 object_data := allowed_value_column_object('GLOBAL_AGREEMENT_FLAG',yn_data);
71 column_test_table_data(3) := object_data;
72 END IF;
73 object_data := allowed_value_column_object('PUBLISH_RATES_TO_BIDDERS_FLAG',yn_data);
74 column_test_table_data(4) := object_data;
75 object_data := allowed_value_column_object('OPEN_AUCTION_NOW_FLAG',yn_data);
76 column_test_table_data(5) := object_data;
77 object_data := allowed_value_column_object('PUBLISH_AUCTION_NOW_FLAG',yn_data);
78 column_test_table_data(6) := object_data;
79 allowed_values_table_data := allowed_values_table('OPEN_BIDDING', 'SEALED_BIDDING', 'SEALED_AUCTION');
80 object_data := allowed_value_column_object('BID_VISIBILITY_CODE',allowed_values_table_data);
81 column_test_table_data(7) := object_data;
82 allowed_values_table_data := allowed_values_table('LINE_LEVEL_BIDDING', 'MUST_BID_ALL_ITEMS');
83 object_data := allowed_value_column_object('BID_SCOPE_CODE',allowed_values_table_data);
84 column_test_table_data(8) := object_data;
85 allowed_values_table_data := allowed_values_table('PUBLIC_BID_LIST', 'PRIVATE_BID_LIST');
86 object_data := allowed_value_column_object('BID_LIST_TYPE',allowed_values_table_data);
87 column_test_table_data(9) := object_data;
88 allowed_values_table_data := allowed_values_table('SINGLE_BID_ONLY', 'MULTIPLE_BIDS_ALLOWED');
89 object_data := allowed_value_column_object('BID_FREQUENCY_CODE',allowed_values_table_data);
90 column_test_table_data(10) := object_data;
91 allowed_values_table_data := allowed_values_table('PRICE_ONLY','MULTI_ATTRIBUTE_SCORING');
92 object_data := allowed_value_column_object('BID_RANKING',allowed_values_table_data);
93 column_test_table_data(11) := object_data;
94 allowed_values_table_data := allowed_values_table('NONE','WIN_LOSE','NUMBERING');
95 object_data := allowed_value_column_object('RANKING_INDICATOR',allowed_values_table_data);
96 column_test_table_data(12) := object_data;
97 allowed_values_table_data := allowed_values_table('PARTIAL_QTY_BIDS_ALLOWED', 'FULL_QTY_BIDS_REQD');
98 object_data := allowed_value_column_object('FULL_QUANTITY_BID_CODE',allowed_values_table_data);
99 column_test_table_data(13) := object_data;
100 IF(p_auction_type NOT IN ('REQUEST_FOR_QUOTE','SOLICITATION')) THEN
101 object_data := allowed_value_column_object('MULTIPLE_ROUNDS_FLAG',yn_data);
102 column_test_table_data(14) := object_data;
103 END IF;
104 object_data := allowed_value_column_object('MANUAL_CLOSE_FLAG',yn_data);
105 column_test_table_data(15) := object_data;
106 IF(p_auction_type <> 'SOLICITATION') THEN
107 object_data := allowed_value_column_object('MANUAL_EXTEND_FLAG',yn_data);
108 column_test_table_data(16) := object_data;
109 END IF;
110 object_data := allowed_value_column_object('AWARD_APPROVAL_FLAG',yn_data);
111 column_test_table_data(17) := object_data;
112 allowed_values_table_data := allowed_values_table('REQUISITION', 'BLANKET');
113 object_data := allowed_value_column_object('AUCTION_ORIGINATION_CODE',allowed_values_table_data);
114 column_test_table_data(18) := object_data;
115 IF(p_is_complex = 'Y') THEN
116 object_data := allowed_value_column_object('ADVANCE_NEGOTIABLE_FLAG',yn_data);
117 column_test_table_data(19) := object_data;
118 object_data := allowed_value_column_object('RECOUPMENT_NEGOTIABLE_FLAG',yn_data);
119 column_test_table_data(20) := object_data;
120 object_data := allowed_value_column_object('PROGRESS_PYMT_NEGOTIABLE_FLAG',yn_data);
121 column_test_table_data(21) := object_data;
122 object_data := allowed_value_column_object('RETAINAGE_NEGOTIABLE_FLAG',yn_data);
123 column_test_table_data(22) := object_data;
124 object_data := allowed_value_column_object('MAX_RETAINAGE_NEGOTIABLE_FLAG',yn_data);
125 column_test_table_data(23) := object_data;
126 object_data := allowed_value_column_object('SUPPLIER_ENTERABLE_PYMT_FLAG',yn_data);
127 column_test_table_data(24) := object_data;
128 END IF;
129 IF(p_auction_type IN ('REQUEST_FOR_QUOTE','SOLICITATION')) THEN
130 object_data := allowed_value_column_object('TWO_PART_FLAG',yn_data);
131 column_test_table_data(25) := object_data;
132 END IF;
133 allowed_values_table_data := allowed_values_table('BUYER','SUPPLIER','BOTH','NONE');
134 object_data := allowed_value_column_object('PF_TYPE_ALLOWED',allowed_values_table_data);
135 column_test_table_data(26) := object_data;
136 IF(p_contract_type = 'BLANKET') THEN
137 allowed_values_table_data := allowed_values_table('REQUIRED','OPTIONAL','NONE');
138 object_data := allowed_value_column_object('PRICE_BREAK_RESPONSE',allowed_values_table_data);
139 column_test_table_data(27) := object_data;
140 END IF;
141 allowed_values_table_data := allowed_values_table('PRICE_BREAKS','QUANTITY_BASED','NONE');
142 object_data := allowed_value_column_object('PRICE_TIERS_INDICATOR',allowed_values_table_data);
143 column_test_table_data(28) := object_data;
144 object_data := allowed_value_column_object('AMENDMENT_FLAG',yn_data);
145 column_test_table_data(29) := object_data;
146 object_data := allowed_value_column_object('AUCTION_PUBLISHED_FLAG',yn_data);
147 column_test_table_data(30) := object_data;
148
149 EXCEPTION
150 WHEN OTHERS THEN
151 print_Log('Exception in populate_column_test_table: sqlcode ' || SQLCODE || ' errm ' || SQLERRM );
152 END populate_column_test_table;
153
154 PROCEDURE validate_value_column_pair(
155 col IN VARCHAR2,
156 val IN VARCHAR2,
157 ret_val IN OUT NOCOPY VARCHAR2)
158 AS
159 obj allowed_value_column_object;
160
161 BEGIN
162 FOR i IN 1..column_test_table_data.Count LOOP
163 obj := column_test_table_data(i);
164 IF obj IS NULL THEN
165 CONTINUE;
166 END IF;
167 IF(obj.col_name = col) THEN
168 IF val member OF obj.allowed_values THEN
169 ret_val := 'Y';
170 ELSE
171 ret_val := 'N';
172 END IF;
173 END IF;
174 END LOOP;
175
176 END validate_value_column_pair;
177
178 /*
179 This procedure checks whether non-null values are given to mandatory
180 columns in pon_auction_headers_interface table
181 */
182 PROCEDURE null_check(
183 p_batch_id IN NUMBER,
184 x_return_status IN OUT NOCOPY VARCHAR2
185 ) AS
186
187 TYPE cols_table IS TABLE OF VARCHAR2(30);
188
189 -- This pl/sql table stores the name of all columns that should have non-null values
190 cols cols_table := cols_table('AUCTION_TITLE',
191 'CLOSE_BIDDING_DATE');
192
193 TYPE curvar_type IS REF CURSOR;
194 curvar curvar_type;
195 val VARCHAR2(30);
196
197 BEGIN
198
199 print_Log('null_check called. Loop to fetch all mandatory columns');
200
201 FOR i IN 1..cols.Count LOOP
202 OPEN curvar FOR 'select ' || cols(i) || ' from pon_auction_headers_interface where batch_id = ' || p_batch_id
203 || ' and rownum < 2';
204 FETCH curvar INTO val;
205 CONTINUE WHEN curvar%NOTFOUND ;
206 IF (val IS NULL ) THEN
207 INSERT INTO PON_INTERFACE_ERRORS
208 (
209 INTERFACE_TYPE,
210 ERROR_MESSAGE_NAME,
211 column_name,
212 table_name,
213 batch_id
214 )VALUES
215 (
216 g_interface_type,
217 'PON_FIELD_MUST_BE_ENTERED',
218 cols(i),
219 'PON_AUCTION_HEADERS_INTERFACE',
220 p_batch_id
221 );
222
223 x_return_status := FND_API.G_RET_STS_ERROR;
224 END IF;
225 END LOOP;
226
227
228 END null_check;
229
230 PROCEDURE default_sol_number(
231 p_auction_header_id IN NUMBER,
232 x_return_status IN OUT NOCOPY VARCHAR2
233 )
234 IS
235 l_uda_template_id pon_auction_headers_all.uda_template_id%TYPE;
236 l_doctype_id pon_auction_headers_all.doctype_id%TYPE;
237 clm_doc_number pon_auction_headers_all.document_Number%TYPE;
238 l_return_status VARCHAR2(1);
239 l_err_msg VARCHAR2(100);
240
241 l_delimiter VARCHAR2(4000);
242 l_dodaac VARCHAR2(4000);
243 l_fiscal_year VARCHAR2(4000);
244 l_instrument_type VARCHAR2(4000);
245 l_serial_number VARCHAR2(4000);
246 l_document_number VARCHAR2(4000);
247 l_solnum_group_id NUMBER;
248 l_sol_num_given VARCHAR2(1) := 'Y';
249 TYPE chartable IS TABLE OF VARCHAR2(4000);
250 solnum_attr chartable;
251 l_auction_header_Id NUMBER := p_auction_header_id;
252 l_query VARCHAR2(4000);
253
254
255 BEGIN
256
257 SELECT doctype_id,uda_template_id
258 INTO l_doctype_id, l_uda_template_id
259 FROM pon_auction_headers_all
260 WHERE auction_header_id = p_auction_header_id;
261
262 IF PON_CLM_UTIL_PKG.IS_DOCUMENT_FEDERAL(p_doc_type_id => l_doctype_id) = 1 THEN
263
264 select attr_group_id into l_solnum_group_id
265 from ego_attr_groups_v
266 where attr_group_name = 'DOD_SOL'
267 and attr_group_type = 'PON_AUC_HDRS_EXT_ATTRS';
268
269 BEGIN
270
271 SELECT 'Y' INTO l_sol_num_given
272 FROM pon_auction_headers_ext_b
273 WHERE auction_header_id = p_auction_header_id
274 AND attr_group_id = l_solnum_group_id;
275
276 IF l_sol_num_given = 'Y' THEN
277 print_log('Solicitation number is given in po_uda_interface table');
278
279 SELECT DATABASE_COLUMN BULK COLLECT INTO solnum_attr
280 FROM EGO_ATTRS_V
281 WHERE APPLICATION_ID=201
282 AND ATTR_GROUP_NAME = 'DOD_SOL'
283 AND ATTR_GROUP_TYPE = 'PON_AUC_HDRS_EXT_ATTRS'
284 AND ATTR_NAME IN ('DODAAC','FISCAL_YEAR','INSTR_TYPE','SERIAL_NUMBER','DELIMITER')
285 ORDER BY attr_name;
286
287 l_delimiter := solnum_attr(1);
288 l_dodaac := solnum_attr(2);
289 l_fiscal_year := solnum_attr(3);
290 l_instrument_type := solnum_attr(4);
291 l_serial_number := solnum_attr(5);
292 print_Log('Solicitation number columns in pon_auction_headers_ext_b are '|| l_delimiter||','||
293 l_dodaac||',' || l_fiscal_year||','|| l_instrument_type||','|| l_serial_number );
294
295 l_query:='SELECT '||l_delimiter||','
296 || l_dodaac||',' || l_fiscal_year||','|| l_instrument_type||','|| l_serial_number
297 || ' FROM pon_auction_headers_ext_b WHERE auction_header_id = '
298 || l_auction_header_id || ' AND attr_group_id = ' || l_solnum_group_id;
299
300 EXECUTE IMMEDIATE l_query INTO l_delimiter, l_dodaac, l_fiscal_year, l_instrument_type, l_serial_number;
301
302 l_document_number := l_dodaac || l_delimiter
303 || l_fiscal_year || l_delimiter
304 || l_instrument_type || l_delimiter
305 || l_serial_number ;
306
307 UPDATE pon_auction_headers_ext_b
308 SET C_EXT_ATTR40 = l_document_number
309 WHERE auction_header_id = p_auction_header_id
310 AND attr_group_id = l_solnum_group_id;
311
312 print_log('Concatenated Document number ' || l_document_number || ' updated rows ' || SQL%ROWCOUNT );
313 END IF;
314 EXCEPTION
315 WHEN OTHERS THEN
316 print_log('Error in solicitation number concatenation ' || SQLCODE || SQLERRM );
317 END;
318
319 --IF ( l_document_number IS NULL ) THEN
320 PO_DOC_NUMBERING_PKG.DEFAULT_DOC_NUMBER_UDA
321 (p_doc_header_id => p_auction_header_id,
322 p_draft_id => -1,
323 p_template_id => l_uda_template_id,
324 p_context_usage => 'Base Document',
325 p_source_org_owned => 'NA',
326 p_caller => 'SOL',
327 x_doc_number => l_document_number,
328 x_return_status => x_return_status);
329 --END IF;
330 print_log( 'Defaulted Document Number '||l_document_number||' status '||l_return_status);
331
332 IF ( l_return_status = 'E' ) THEN
333 x_return_status := FND_API.G_RET_STS_ERROR;
334 RETURN;
335 ELSE
336 x_return_status := 'S';
337 END IF;
338
339 UPDATE pon_auction_headers_all
340 SET DOCUMENT_NUMBER = l_document_number
341 WHERE AUCTION_HEADER_ID = p_auction_header_id;
342
343 END IF;
344
345 END default_sol_number;
346
347
348 -----------------------------------------------------------------------
349 --Start of Comments
350 --Name: create_header_attr_inter
351 --Description : Warpper on PON APIs to copy the data from PON_AUC_ATTRIBUTES_INTERFACE interface table to PON_AUCTION_SECTIONS and PON_AUCTION_ATTRIBUTES
352 --Parameters:
353 --IN:
354 -- p_api_version
355 -- p_init_msg_list
356 -- p_commit
357 -- batchId
358 --OUT:
359 -- x_return_status Return status SUCCESS /ERROR
360 --Returns:
361 --Notes:
362 --Testing:
363 --End of Comments
364 ------------------------------------------------------------------------
365 PROCEDURE create_header_attr_inter
366 (
367 p_commit IN VARCHAR2,
368 batchId IN NUMBER,
369 x_return_status IN OUT NOCOPY VARCHAR2)
370 AS
371 -- cursor to get the distinct section values from interface tables
372 CURSOR c_interface_section
373 IS
374 SELECT DISTINCT GROUP_NAME,
375 BATCH_ID ,
376 INTERFACE_LINE_ID ,
377 AUCTION_HEADER_ID ,
378 AUCTION_LINE_NUMBER ,
379 ATTR_GROUP_SEQ_NUMBER ,
380 ACTION
381 FROM PON_AUC_ATTRIBUTES_INTERFACE
382 WHERE BATCH_ID =batchId
383 AND AUCTION_HEADER_ID IN
384 (SELECT DISTINCT AUCTION_HEADER_ID FROM PON_AUC_ATTRIBUTES_INTERFACE
385 )
386 AND AUCTION_LINE_NUMBER = -1;
387 -- cursor to get the values from interface tables for requirements
388 CURSOR c_interface_attr
389 IS
390 SELECT BATCH_ID ,
391 INTERFACE_LINE_ID ,
392 AUCTION_HEADER_ID ,
393 AUCTION_LINE_NUMBER,
394 SEQUENCE_NUMBER ,
395 ATTRIBUTE_NAME ,
396 DATATYPE ,
397 RESPONSE_TYPE ,
398 RESPONSE_TYPE_NAME ,
399 MANDATORY_FLAG ,
400 DISPLAY_ONLY_FLAG ,
401 DISPLAY_TARGET_FLAG,
402 VALUE ,
403 GROUP_CODE ,
404 GROUP_NAME ,
405 SCORING_TYPE ,
406 ATTR_MAX_SCORE ,
407 WEIGHT ,
408 INTERNAL_ATTR_FLAG ,
409 SCORING_METHOD ,
410 KNOCKOUT_SCORE ,
411 ACTION
412 FROM PON_AUC_ATTRIBUTES_INTERFACE
413 WHERE BATCH_ID =batchId
414 AND AUCTION_LINE_NUMBER = -1;
415
416 c_interface_section_rec c_interface_section%ROWTYPE;
417 c_interface_attr_rec c_interface_attr%ROWTYPE;
418 l_BATCH_ID PON_AUC_ATTRIBUTES_INTERFACE.BATCH_ID%TYPE;
419 l_AUCTION_HEADER_ID PON_AUC_ATTRIBUTES_INTERFACE.AUCTION_HEADER_ID%TYPE;
420 l_SEQUENCE_NUMBER PON_AUC_ATTRIBUTES_INTERFACE.SEQUENCE_NUMBER%TYPE;
421 l_section_name_check PON_AUC_ATTRIBUTES_INTERFACE.GROUP_NAME%TYPE;
422 l_SCORING_METHOD PON_AUCTION_ATTRIBUTES.SCORING_METHOD%TYPE;
423 l_sequence_number_attr PON_AUCTION_ATTRIBUTES.SEQUENCE_NUMBER%TYPE;
424 l_ATTR_GROUP_SEQ_NUMBER PON_AUCTION_ATTRIBUTES.ATTR_GROUP_SEQ_NUMBER%TYPE;
425 l_ATTR_DISP_SEQ_NUMBER PON_AUCTION_ATTRIBUTES.ATTR_DISP_SEQ_NUMBER%TYPE;
426 l_LAST_AMENDMENT_UPDATE PON_AUCTION_ATTRIBUTES.LAST_AMENDMENT_UPDATE%TYPE;
427 l_TABLE_NAME pon_interface_errors.TABLE_NAME%TYPE :='PON_AUC_ATTRIBUTES_INTERFACE';
428 l_sequence_number_scr pon_attribute_scores_interface.sequence_number%TYPE;
429 l_status VARCHAR2(1) :='Y';
430 l_count_acc NUMBER;
431 l_sum_wt_err VARCHAR(10);
432 BEGIN
433 print_log('inside of create_header_attr_inter procedure');
434
435 /* calling the pon_auc_interface_table_pkg.validate_header_attributes procedure to validate the section and requirements and also to set the default values */
436 print_log('BEGIN Validating the data in interface table');
437
438 pon_auc_interface_table_pkg.validate_header_attributes_api(NULL,batchId,-1);
439 BEGIN
440 SELECT 'N' status
441 INTO l_status
442 FROM dual
443 WHERE EXISTS
444 (SELECT * FROM pon_interface_errors WHERE BATCH_ID=batchId
445 );
446 EXCEPTION
447 WHEN No_Data_Found THEN
448 l_status:=NULL;
449 END;
450 IF(l_status='N') THEN
451 print_log('An error occured while validating the requirements. please check the pon_interface_errors table for error information');
452 x_return_status := FND_API.G_RET_STS_ERROR;
453 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_HDR_REQ_ERR');
454 FND_MESSAGE.SET_TOKEN('BATCH_ID',batchId);
455 FND_MSG_PUB.ADD;
456 RAISE FND_API.G_EXC_ERROR;
457 END IF;
458 print_log('END Validating the data in interface table');
459
460 print_log('BEGIN of section insertion');
461 /* Insertion of section values from PON_AUC_ATTRIBUTES_INTERFACE interface table to PON_AUCTION_SECTIONS table */
462 OPEN c_interface_section;
463 LOOP
464 FETCH c_interface_section INTO c_interface_section_rec;
465 EXIT
466 WHEN c_interface_section%NOTFOUND;
467 BEGIN
468
469 IF(NVL(c_interface_section_rec.action,'INSERT')='INSERT') THEN
470 -- Check whether the section name already exists are not
471 BEGIN
472 SELECT DISTINCT SECTION_NAME
473 INTO l_section_name_check
474 FROM PON_AUCTION_SECTIONS
475 WHERE AUCTION_HEADER_ID = c_interface_section_rec.AUCTION_HEADER_ID
476 AND SECTION_NAME = c_interface_section_rec.GROUP_NAME;
477 EXCEPTION
478 WHEN No_Data_Found THEN
479 l_section_name_check:=NULL;
480 END;
481 -- if it is a new section name
482 IF (l_section_name_check IS NULL) THEN
483 BEGIN
484 -- get the sequence value
485 SELECT MAX(ATTR_GROUP_SEQ_NUMBER)
486 INTO l_sequence_number
487 FROM PON_AUCTION_SECTIONS
488 WHERE AUCTION_HEADER_ID = c_interface_section_rec.AUCTION_HEADER_ID;
489 EXCEPTION
490 WHEN No_Data_Found THEN
491 l_sequence_number:= NULL;
492 END;
493 l_sequence_number:=NVL(l_sequence_number,0)+10;
494 -- insert the record in the PON_AUCTION_SECTIONS table.
495 INSERT
496 INTO PON_AUCTION_SECTIONS
497 (
498 ATTRIBUTE_LIST_ID ,
499 AUCTION_HEADER_ID ,
500 LINE_NUMBER ,
501 ATTR_GROUP_SEQ_NUMBER,
502 SECTION_NAME ,
503 section_id ,
504 creation_date ,
505 created_by ,
506 last_update_date ,
507 last_updated_by
508 )
509 VALUES
510 (
511 -1 ,
512 c_interface_section_rec.AUCTION_HEADER_ID,
513 -1 ,
514 l_sequence_number ,
515 c_interface_section_rec.GROUP_NAME ,
516 PON_AUCTION_SECTIONS_S.NEXTVAL ,
517 SYSDATE ,
518 fnd_global.user_id ,
519 SYSDATE ,
520 fnd_global.user_id
521 );
522 END IF;
523 END IF;
524 END;
525 END LOOP;
526 print_log('END of section insertion');
527 /* End of section insertion */
528
529
530
531 print_log('BEGIN of requirement insertion');
532 -- open the cursor
533 OPEN c_interface_attr;
534 LOOP
535 -- fetch the data
536 FETCH c_interface_attr INTO c_interface_attr_rec ;
537 EXIT
538 WHEN c_interface_attr%NOTFOUND;
539 BEGIN
540 l_AUCTION_HEADER_ID := c_interface_attr_rec.auction_Header_id;
541 IF(NVL(c_interface_attr_rec.action,'INSERT')='INSERT') THEN
542 -- For requirements
543 /* Setting the mandatory flag, display only flag, internal attr flag depending on the response value*/
544 IF(c_interface_attr_rec.RESPONSE_TYPE ='REQUIRED')THEN
545 c_interface_attr_rec.MANDATORY_FLAG := 'Y';
546 c_interface_attr_rec.DISPLAY_ONLY_FLAG := 'N';
547 c_interface_attr_rec.INTERNAL_ATTR_FLAG := 'N';
548 ELSIF (c_interface_attr_rec.RESPONSE_TYPE ='DISPLAY_ONLY') THEN
549 c_interface_attr_rec.MANDATORY_FLAG := 'N';
550 c_interface_attr_rec.DISPLAY_ONLY_FLAG := 'Y';
551 c_interface_attr_rec.INTERNAL_ATTR_FLAG := 'N';
552 ELSIF (c_interface_attr_rec.RESPONSE_TYPE ='OPTIONAL') THEN
553 c_interface_attr_rec.MANDATORY_FLAG := 'N';
554 c_interface_attr_rec.DISPLAY_ONLY_FLAG := 'N';
555 c_interface_attr_rec.INTERNAL_ATTR_FLAG := 'N';
556 ELSIF (c_interface_attr_rec.RESPONSE_TYPE ='INTERNAL') THEN
557 c_interface_attr_rec.MANDATORY_FLAG := 'N';
558 c_interface_attr_rec.DISPLAY_ONLY_FLAG := 'N';
559 c_interface_attr_rec.INTERNAL_ATTR_FLAG := 'Y';
560 END IF;
561 /* getting the sequence number, attr group sequence number, attr display sequence number */
562 BEGIN
563 SELECT MAX(SEQUENCE_NUMBER)
564 INTO l_sequence_number_attr
565 FROM pon_auction_attributes
566 WHERE AUCTION_HEADER_ID = c_interface_attr_rec.AUCTION_HEADER_ID;
567 EXCEPTION
568 WHEN No_Data_Found THEN
569 l_sequence_number_attr:= NULL;
570 END;
571 l_sequence_number_attr:=NVL(l_sequence_number_attr,0)+10;
572 BEGIN
573 SELECT DISTINCT ATTR_GROUP_SEQ_NUMBER
574 INTO l_ATTR_GROUP_SEQ_NUMBER
575 FROM PON_AUCTION_SECTIONS
576 WHERE auction_header_id= c_interface_attr_rec.AUCTION_HEADER_ID
577 AND SECTION_NAME = c_interface_attr_rec.GROUP_NAME;
578 EXCEPTION
579 WHEN No_Data_Found THEN
580 l_ATTR_GROUP_SEQ_NUMBER:=NULL;
581 END;
582 BEGIN
583 SELECT MAX(ATTR_DISP_SEQ_NUMBER)
584 INTO l_ATTR_DISP_SEQ_NUMBER
585 FROM PON_AUCTION_ATTRIBUTES
586 WHERE auction_header_id= c_interface_attr_rec.AUCTION_HEADER_ID
587 AND SECTION_NAME = c_interface_attr_rec.GROUP_NAME;
588 EXCEPTION
589 WHEN No_Data_Found THEN
590 l_ATTR_DISP_SEQ_NUMBER:=NULL;
591 END;
592 l_ATTR_DISP_SEQ_NUMBER:= NVL(l_ATTR_DISP_SEQ_NUMBER,0)+10;
593 /* getting the amendment number */
594 BEGIN
595 SELECT MAX(amendment_number)
596 INTO l_LAST_AMENDMENT_UPDATE
597 FROM pon_auction_headers_all
598 WHERE AUCTION_HEADER_ID = c_interface_attr_rec.AUCTION_HEADER_ID;
599 EXCEPTION
600 WHEN No_Data_Found THEN
601 l_LAST_AMENDMENT_UPDATE:= NULL;
602 END;
603 l_LAST_AMENDMENT_UPDATE:= NVL(l_LAST_AMENDMENT_UPDATE,0);
604
605 /*BEGIN
606 SELECT COUNT(*)
607 INTO l_count_acc
608 FROM pon_attribute_scores_interface
609 WHERE batch_id = c_interface_attr_rec.batch_id
610 AND auction_header_id = c_interface_attr_rec.auction_header_id
611 AND ATTRIBUTE_SEQUENCE_NUMBER = l_sequence_number_attr;
612 IF (l_count_acc > 0) THEN
613 c_interface_attr_rec.SCORING_METHOD:= Nvl(c_interface_attr_rec.SCORING_METHOD,'AUTOMATIC');
614 END IF;
615 END; */
616 -- insertion of data into pon_auction_attributes
617 IF (c_interface_attr_rec.SCORING_METHOD= 'AUTOMATIC') THEN
618 print_log(' Begin validating AND INSERTING acceptable VALUES');
619 BEGIN
620 SELECT COUNT(*)
621 INTO l_count_acc
622 FROM pon_attribute_scores_interface
623 WHERE batch_id = c_interface_attr_rec.batch_id
624 AND auction_header_id = c_interface_attr_rec.auction_header_id
625 AND ATTRIBUTE_SEQUENCE_NUMBER= l_sequence_number_attr;
626 IF (l_count_acc =0) THEN
627 print_log('Need to define acceptable values');
628 RETURN;
629 END IF;
630 END;
631 acceptance_values_insert(c_interface_attr_rec,l_sequence_number_attr ,l_status);
632
633 print_log('l_status is '|| l_status);
634 IF (l_status='N')THEN
635 print_log('An error occured while validating the acceptable values. please check the pon_interface_errors table for error information');
636 x_return_status := FND_API.G_RET_STS_ERROR;
637 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_HDR_REQ_ERR');
638 FND_MESSAGE.SET_TOKEN('BATCH_ID',batchId);
639 FND_MSG_PUB.ADD;
640 RAISE FND_API.G_EXC_ERROR;
641 END IF;
642 print_log('End validating AND INSERTING acceptable VALUES');
643 BEGIN
644 SELECT MAX(score)
645 INTO c_interface_attr_rec.attr_max_score
646 FROM pon_attribute_scores
647 WHERE ATTRIBUTE_SEQUENCE_NUMBER=l_sequence_number_attr
648 AND auction_header_id =c_interface_attr_rec.auction_header_id;
649 EXCEPTION
650 WHEN No_Data_Found THEN
651 print_log('No Data found');
652 END;
653 IF(c_interface_attr_rec.DATATYPE ='TXT') THEN
654 c_interface_attr_rec.scoring_type:=NVL(c_interface_attr_rec.scoring_type,'LOV');
655 ELSIF(c_interface_attr_rec.DATATYPE ='NUM' OR c_interface_attr_rec.DATATYPE='DAT') THEN
656 c_interface_attr_rec.scoring_type:=NVL(c_interface_attr_rec.scoring_type,'RANGE');
657 END IF;
658 END IF;
659 /* Validating the requirement before inserting */
660 l_status :=NULL;
661 c_interface_attr_rec.sequence_number:=l_sequence_number_attr;
662 print_log('BEGIN Validating the requirement before inserting');
663 pon_auc_interface_table_pkg.validate_requirement(NULL,batchId,-1,c_interface_attr_rec,l_status);
664 IF (l_status='N')THEN
665 print_log('An error occured while validating the requirements. please check the pon_interface_errors table for error information');
666 x_return_status := FND_API.G_RET_STS_ERROR;
667 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_HDR_REQ_ERR');
668 FND_MESSAGE.SET_TOKEN('BATCH_ID',batchId);
669 FND_MSG_PUB.ADD;
670 RAISE FND_API.G_EXC_ERROR;
671 END IF;
672 print_log('END Validating the requirement before inserting');
673 INSERT
674 INTO pon_auction_attributes
675 (
676 ATTRIBUTE_LIST_ID ,
677 AUCTION_HEADER_ID ,
678 LINE_NUMBER ,
679 ATTRIBUTE_NAME ,
680 SECTION_NAME ,
681 DATATYPE ,
682 MANDATORY_FLAG ,
683 INTERNAL_ATTR_FLAG ,
684 DISPLAY_ONLY_FLAG ,
685 DISPLAY_TARGET_FLAG ,
686 VALUE ,
687 SCORING_TYPE ,
688 ATTR_MAX_SCORE ,
689 WEIGHT ,
690 SCORING_METHOD ,
691 SEQUENCE_NUMBER ,
692 ATTR_LEVEL ,
693 ATTR_GROUP_SEQ_NUMBER,
694 ATTR_DISP_SEQ_NUMBER ,
695 creation_date ,
696 created_by ,
697 last_update_date ,
698 last_updated_by ,
699 MODIFIED_DATE ,
700 LAST_AMENDMENT_UPDATE,
701 KNOCKOUT_SCORE
702 )
703 VALUES
704 (
705 -1 ,
706 c_interface_attr_rec.AUCTION_HEADER_ID ,
707 -1 ,
708 c_interface_attr_rec.ATTRIBUTE_NAME ,
709 c_interface_attr_rec.GROUP_NAME ,
710 c_interface_attr_rec.DATATYPE ,
711 c_interface_attr_rec.MANDATORY_FLAG ,
712 c_interface_attr_rec.INTERNAL_ATTR_FLAG ,
713 c_interface_attr_rec.DISPLAY_ONLY_FLAG ,
714 c_interface_attr_rec.DISPLAY_TARGET_FLAG ,
715 c_interface_attr_rec.VALUE ,
716 NVL(c_interface_attr_rec.SCORING_TYPE,'NONE') ,
717 c_interface_attr_rec.ATTR_MAX_SCORE ,
718 c_interface_attr_rec.WEIGHT ,
719 NVL(c_interface_attr_rec.SCORING_METHOD,'NONE') ,
720 l_sequence_number_attr ,
721 'HEADER' ,
722 l_ATTR_GROUP_SEQ_NUMBER ,
723 l_ATTR_DISP_SEQ_NUMBER ,
724 SYSDATE ,
725 fnd_global.user_id ,
726 SYSDATE ,
727 fnd_global.user_id ,
728 SYSDATE ,
729 l_LAST_AMENDMENT_UPDATE ,
730 c_interface_attr_rec.KNOCKOUT_SCORE
731 );
732
733 print_log('END of requirement insertion');
734
735 END IF;
736 IF(c_interface_attr_rec.action='DELETE') THEN
737 print_log('Begin of requirement deletion');
738 BEGIN
739 SELECT sequence_number
740 INTO c_interface_attr_rec.sequence_number
741 FROM pon_auction_attributes
742 WHERE ATTRIBUTE_NAME= c_interface_attr_rec.attribute_name;
743 EXCEPTION
744 WHEN No_Data_Found THEN
745 print_log('No record to delete');
746 END;
747 DELETE
748 FROM pon_auction_attributes
749 WHERE sequence_number = c_interface_attr_rec.sequence_number
750 AND auction_header_id = c_interface_attr_rec.auction_header_id;
751 DELETE
752 FROM pon_attribute_scores
753 WHERE attribute_sequence_number= c_interface_attr_rec.sequence_number
754 AND auction_header_id = c_interface_attr_rec.auction_header_id;
755
756 print_log('END of requirement deletion');
757 END IF;
758 END;
759 END LOOP;
760
761 SELECT Decode(Sum(Nvl(weight,0)),100,'Y','N') INTO l_sum_wt_err
762 FROM pon_auction_attributes paa
763 WHERE paa.auction_Header_id = l_auction_header_id
764 AND Nvl(paa.scoring_METHOD,'NONE') <>'NONE'
765 AND EXISTS(SELECT 'Y' FROM PON_AUCtion_ATTRIBUTES paa,pon_auction_Headers_all pah WHERE paa.auction_Header_id = l_auction_header_id
766 AND paa.auction_Header_id = pah.auction_Header_id
767 AND Nvl(pah.HDR_ATTR_ENABLE_WEIGHTS,'N') = 'Y'
768 AND Nvl(paa.scoring_METHOD,'NONE') <>'NONE');
769
770 IF (l_sum_wt_err='N') THEN
771 print_log('The total weight of all the requirements should be equal to 100.');
772 RETURN;
773 END IF;
774
775 EXCEPTION
776 WHEN OTHERS THEN
777 print_log('Exception occured in create_header_attr_inter procedure.');
778 x_return_status := FND_API.G_RET_STS_ERROR;
779 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_HDR_REQ_ERR');
780 FND_MESSAGE.SET_TOKEN('BATCH_ID',batchId);
781 FND_MSG_PUB.ADD;
782 RAISE FND_API.G_EXC_ERROR;
783 END create_header_attr_inter;
784 -----------------------------------------------------------------------
785 --Start of Comments
786 --Name: acceptance_values_insert
787 --Description : Warpper on PON APIs to copy the data from PON_AUC_ATTRIBUTES_INTERFACE interface table to PON_AUCTION_SECTIONS and PON_AUCTION_ATTRIBUTES
788 --Parameters:
789 --IN:
790 -- p_api_version
791 -- p_auction_header_id
792 -- p_batch_id
793 -- l_SCORING_METHOD
794 -- c_interface_attr_rec1
795 --OUT:
796 -- l_status Return status SUCCESS /ERROR
797 --Returns:
798 --Notes:
799 --Testing:
800 --End of Comments
801 ------------------------------------------------------------------------
802 PROCEDURE acceptance_values_insert
803 (
804 p_interface_attr_rec1 IN ATTRIBUTES_VALUES_VALIDATION,
805 p_sequence_number_attr IN pon_attribute_scores_interface.ATTRIBUTE_SEQUENCE_NUMBER%TYPE,
806 l_status IN OUT NOCOPY VARCHAR2
807 ) AS
808 CURSOR c_attr_score
809 IS
810 SELECT *
811 FROM pon_attribute_scores_interface
812 WHERE batch_id = p_interface_attr_rec1.l_batch_id
813 AND auction_header_id = p_interface_attr_rec1.l_auction_header_id
814 AND ATTRIBUTE_SEQUENCE_NUMBER= p_sequence_number_attr;
815
816 c_attr_score_rec c_attr_score%ROWTYPE;
817 l_sequence_number_scr pon_auc_attributes_interface.sequence_number%type;
818 c_interface_attr_rec ATTRIBUTES_VALUES_VALIDATION;
819 l_value pon_auc_attributes_interface.Value%type;
820 l_from_range pon_attribute_scores_interface.from_range%type;
821 l_to_range pon_attribute_scores_interface.to_range%type;
822 BEGIN
823 /* get the sequence number for a acceptable value*/
824 BEGIN
825 SELECT MAX(SEQUENCE_NUMBER)
826 INTO l_sequence_number_scr
827 FROM pon_attribute_scores
828 WHERE auction_header_id =p_interface_attr_rec1.l_auction_header_id
829 AND attribute_sequence_number=p_sequence_number_attr;
830 EXCEPTION
831 WHEN OTHERS THEN
832 l_sequence_number_scr:=NULL;
833 END;
834 OPEN c_attr_score;
835 LOOP
836 -- fetch the data
837 FETCH c_attr_score INTO c_attr_score_rec ;
838 EXIT
839 WHEN c_attr_score%NOTFOUND;
840 BEGIN
841 /* check if the value and score field is not null for text data type */
842 IF(p_interface_attr_rec1.l_SCORING_METHOD ='AUTOMATIC' AND p_interface_attr_rec1.l_datatype='TXT')THEN
843 IF(c_attr_score_rec.value IS NULL OR c_attr_score_rec.score IS NULL) THEN
844 print_log('score or value cannot be empty');
845 pon_auc_interface_table_pkg.insert_error_interface ( c_attr_score_rec.BATCH_ID,NULL,'pon_attribute_scores_interface','PON','PON_REQUIREMENT_ERR_11',p_interface_attr_rec1.l_SCORING_METHOD );
846 l_status:='N';
847 RETURN;
848 ELSE
849 /* check for the duplicate value */
850 BEGIN
851 SELECT DISTINCT Value
852 INTO l_value
853 FROM pon_attribute_scores
854 WHERE auction_header_id =p_interface_attr_rec1.l_auction_header_id
855 AND ATTRIBUTE_SEQUENCE_NUMBER= p_sequence_number_attr
856 AND Upper(Value) =upper(c_attr_score_rec.Value);
857 EXCEPTION
858 WHEN No_Data_Found THEN
859 l_value:=NULL;
860 END;
861 IF(l_value IS NOT NULL) THEN
862 pon_auc_interface_table_pkg.insert_error_interface ( c_attr_score_rec.BATCH_ID,NULL,'pon_attribute_scores_interface','PON','PON_AUC_DUP_ACC_BID_VALUES',c_attr_score_rec.value );
863 l_status:='N';
864 RETURN;
865 END IF;
866 END IF;
867 --ELSE
868 l_sequence_number_scr:=NVL(l_sequence_number_scr,0)+10;
869 /* insert the score record for the text datatype*/
870 INSERT
871 INTO pon_attribute_scores
872 (
873 AUCTION_HEADER_ID ,
874 LINE_NUMBER ,
875 ATTRIBUTE_SEQUENCE_NUMBER,
876 VALUE ,
877 FROM_RANGE ,
878 TO_RANGE ,
879 SCORE ,
880 ATTRIBUTE_LIST_ID ,
881 SEQUENCE_NUMBER ,
882 CREATION_DATE ,
883 CREATED_BY ,
884 LAST_UPDATE_DATE ,
885 LAST_UPDATED_BY
886 )
887 VALUES
888 (
889 c_attr_score_rec.auction_header_id,
890 -1 ,
891 p_sequence_number_attr ,
892 c_attr_score_rec.value ,
893 NULL ,
894 NULL ,
895 c_attr_score_rec.score ,
896 -1 ,
897 l_sequence_number_scr ,
898 SYSDATE ,
899 -1 ,
900 SYSDATE ,
901 -1
902 );
903
904 l_status:='Y';
905 --RETURN;
906 END IF;
907 /* checkin the range values and score for the num and date datatype*/
908 IF(p_interface_attr_rec1.l_SCORING_METHOD='AUTOMATIC' AND (p_interface_attr_rec1.l_datatype='DAT' OR p_interface_attr_rec1.l_datatype='NUM')) THEN
909 IF((c_attr_score_rec.from_range IS NULL AND c_attr_score_rec.to_range IS NULL) OR c_attr_score_rec.score IS NULL) THEN
910 print_log('score or value cannot be empty');
911 pon_auc_interface_table_pkg.insert_error_interface(c_attr_score_rec.BATCH_ID,NULL,'pon_attribute_scores_interface','PON','PON_REQUIREMENT_ERR_11',p_interface_attr_rec1.l_SCORING_METHOD);
912 l_status:='N';
913 RETURN;
914 END IF;
915 l_sequence_number_scr:=NVL(l_sequence_number_scr,0)+10;
916 /* check for the range overlap*/
917 check_range_overlap(c_attr_score_rec,p_interface_attr_rec1.l_datatype,l_status);
918 /* if there is an range overlap*/
919 IF(l_status='N') THEN
920 RETURN;
921 END IF;
922 /* insert score value for NUM or DAT datatype*/
923 INSERT
924 INTO pon_attribute_scores
925 (
926 AUCTION_HEADER_ID ,
927 LINE_NUMBER ,
928 ATTRIBUTE_SEQUENCE_NUMBER,
929 VALUE ,
930 FROM_RANGE ,
931 TO_RANGE ,
932 SCORE ,
933 ATTRIBUTE_LIST_ID ,
934 SEQUENCE_NUMBER ,
935 CREATION_DATE ,
936 CREATED_BY ,
937 LAST_UPDATE_DATE ,
938 LAST_UPDATED_BY
939 )
940 VALUES
941 (
942 c_attr_score_rec.auction_header_id,
943 -1 ,
944 p_sequence_number_attr ,
945 NULL ,
946 c_attr_score_rec.from_range ,
947 c_attr_score_rec.to_range ,
948 c_attr_score_rec.score ,
949 -1 ,
950 l_sequence_number_scr ,
951 SYSDATE ,
952 -1 ,
953 SYSDATE ,
954 -1
955 );
956
957 l_status:='Y';
958 END IF;
959 END;
960 END LOOP;
961 END;
962 -----------------------------------------------------------------------
963 --Start of Comments
964 --Name: check_range_overlap
965 --Description : Warpper on PON APIs to copy the data from PON_AUC_ATTRIBUTES_INTERFACE interface table to PON_AUCTION_SECTIONS and PON_AUCTION_ATTRIBUTES
966 --Parameters:
967 --IN:
968 -- p_attr_score_rec
969 -- p_datatype
970 --OUT:
971 -- l_status Return status SUCCESS /ERROR
972 --Returns:
973 --Notes:
974 --Testing:
975 --End of Comments
976 ------------------------------------------------------------------------
977 PROCEDURE check_range_overlap
978 (
979 p_attr_score_rec IN ATTRIBUTE_SCORES,
980 p_datatype IN pon_auc_attributes_interface.datatype%type ,
981 l_status OUT NOCOPY VARCHAR2
982 )
983 IS
984 CURSOR c_score_overlap
985 IS
986 SELECT from_range,
987 to_range
988 FROM pon_attribute_scores
989 WHERE auction_header_id =p_attr_score_rec.l_auction_header_id
990 AND attribute_sequence_number=p_attr_score_rec.l_attribute_sequence_number;
991 --l_status VARCHAR2(10):='N';
992 l_from_range pon_attribute_scores.from_range%type;
993 l_to_range pon_attribute_scores.to_range%type;
994 t_from_range_num NUMBER;
995 t_to_range_num NUMBER;
996 l_from_range_num NUMBER;
997 l_to_range_num NUMBER;
998 t_from_range_dat DATE;
999 t_to_range_dat DATE;
1000 l_from_range_dat DATE;
1001 l_to_range_dat DATE;
1002 l_count NUMBER;
1003 BEGIN
1004 /* if datatype is num*/
1005 IF(p_datatype='NUM')THEN
1006 BEGIN
1007 SELECT To_Number(NVL(p_attr_score_rec.l_from_range,0)),
1008 To_Number(NVL(p_attr_score_rec.l_to_range,0))
1009 INTO l_from_range_num,
1010 l_to_range_num
1011 FROM dual;
1012 EXCEPTION
1013 WHEN OTHERS THEN
1014 print_log('Invalid number value');
1015 l_status:='N';
1016 RETURN;
1017 END;
1018 l_from_range_num :=To_Number(p_attr_score_rec.l_from_range);
1019 l_to_range_num :=To_Number(p_attr_score_rec.l_to_range);
1020 IF(l_from_range_num IS NOT NULL AND l_to_range_num IS NOT NULL) THEN
1021 IF(l_from_range_num> l_to_range_num)THEN
1022 pon_auc_interface_table_pkg.insert_error_interface ( p_attr_score_rec.l_BATCH_ID,NULL,'pon_attribute_scores_interface','PON','PON_AUC_FROM_TO_ERR_NUM_R',l_from_range_num );
1023 l_status :='N';
1024 RETURN;
1025 END IF;
1026 END IF;
1027 /* if there are any score records already exists */
1028 SELECT COUNT(*)
1029 INTO l_count
1030 FROM pon_attribute_scores
1031 WHERE auction_header_id =p_attr_score_rec.l_auction_header_id
1032 AND attribute_sequence_number=p_attr_score_rec.l_attribute_sequence_number;
1033 IF(l_count < 1)THEN
1034 l_status :='Y';
1035 RETURN;
1036 ELSE
1037 OPEN c_score_overlap;
1038 LOOP
1039 -- fetch the data
1040 FETCH c_score_overlap INTO l_from_range, l_to_range ;
1041 EXIT
1042 WHEN c_score_overlap%NOTFOUND;
1043 BEGIN
1044 t_from_range_num :=To_Number(l_from_range);
1045 t_to_range_num :=To_Number(l_to_range);
1046 IF(t_from_range_num IS NULL OR l_to_range_num IS NULL ) THEN
1047 IF(l_from_range_num <=t_to_range_num) THEN
1048 pon_auc_interface_table_pkg.insert_error_interface ( p_attr_score_rec.l_BATCH_ID,NULL,'pon_attribute_scores_interface','PON','PON_AUC_FROM_TO_ERR_NUM_R',l_from_range_num );
1049 l_status :='N';
1050 RETURN;
1051 END IF;
1052 END IF;
1053 IF(t_to_range_num IS NULL OR l_from_range_num IS NULL ) THEN
1054 IF(l_to_range_num >=t_from_range_num) THEN
1055 pon_auc_interface_table_pkg.insert_error_interface ( p_attr_score_rec.l_BATCH_ID,NULL,'pon_attribute_scores_interface','PON','PON_AUC_FROM_TO_ERR_NUM_R',l_from_range_num );
1056 l_status :='N';
1057 RETURN;
1058 END IF;
1059 END IF;
1060 IF(l_from_range_num IS NOT NULL AND l_to_range_num IS NOT NULL AND t_from_range_num IS NOT NULL AND t_to_range_num IS NOT NULL ) THEN
1061 BEGIN
1062 SELECT 'N'
1063 INTO l_status
1064 FROM dual
1065 WHERE (l_from_range_num BETWEEN t_from_range_num AND t_to_range_num)
1066 OR (l_to_range_num BETWEEN t_from_range_num AND t_to_range_num);
1067 EXCEPTION
1068 WHEN No_Data_Found THEN
1069 l_status:=NULL;
1070 END;
1071 END IF;
1072 l_status :=NVL(l_status,'Y');
1073 IF(l_status='N') THEN
1074 pon_auc_interface_table_pkg.insert_error_interface ( p_attr_score_rec.l_BATCH_ID,NULL,'pon_attribute_scores_interface','PON','PON_AUC_OVERLAP_RANGES',p_attr_score_rec.l_from_range );
1075 RETURN;
1076 END IF;
1077 END;
1078 END LOOP;
1079 END IF;
1080 END IF;
1081 /* if datatype is date*/
1082 IF(p_datatype='DAT')THEN
1083 BEGIN
1084 SELECT To_date(NVL(p_attr_score_rec.l_from_range,sysdate),'dd-mm-yyyy'),
1085 To_date(NVL(p_attr_score_rec.l_to_range,sysdate),'dd-mm-yyyy')
1086 INTO l_from_range_dat,
1087 l_to_range_dat
1088 FROM dual;
1089 EXCEPTION
1090 WHEN OTHERS THEN
1091 print_log('Invalid date value');
1092 l_status:='N';
1093 RETURN;
1094 END;
1095 l_from_range_dat :=To_date(p_attr_score_rec.l_from_range,'dd-mm-yyyy');
1096 l_to_range_dat :=To_date(p_attr_score_rec.l_to_range,'dd-mm-yyyy');
1097 IF(l_from_range_dat IS NOT NULL AND l_to_range_dat IS NOT NULL) THEN
1098 IF(l_from_range_dat> l_to_range_dat)THEN
1099 pon_auc_interface_table_pkg.insert_error_interface ( p_attr_score_rec.l_BATCH_ID,NULL,'pon_attribute_scores_interface','PON','PON_AUC_FROM_TO_ERR_NUM_R',l_from_range_dat );
1100 l_status :='N';
1101 RETURN;
1102 END IF;
1103 END IF;
1104 SELECT COUNT(*)
1105 INTO l_count
1106 FROM pon_attribute_scores
1107 WHERE auction_header_id =p_attr_score_rec.l_auction_header_id
1108 AND attribute_sequence_number=p_attr_score_rec.l_attribute_sequence_number;
1109 IF(l_count < 1)THEN
1110 l_status :='Y';
1111 RETURN;
1112 ELSE
1113 OPEN c_score_overlap;
1114 LOOP
1115 -- fetch the data
1116 FETCH c_score_overlap INTO l_from_range, l_to_range ;
1117 EXIT
1118 WHEN c_score_overlap%NOTFOUND;
1119 BEGIN
1120 t_from_range_dat :=To_date(l_from_range,'dd-mm-yyyy');
1121 t_to_range_dat :=To_date(l_to_range,'dd-mm-yyyy');
1122 IF(t_from_range_dat IS NULL OR l_to_range_dat IS NULL ) THEN
1123 IF(l_from_range_dat <=t_to_range_dat) THEN
1124 pon_auc_interface_table_pkg.insert_error_interface ( p_attr_score_rec.l_BATCH_ID,NULL,'pon_attribute_scores_interface','PON','PON_AUC_FROM_TO_ERR_NUM_R',l_from_range_dat );
1125 l_status :='N';
1126 RETURN;
1127 END IF;
1128 END IF;
1129 IF(t_to_range_dat IS NULL OR l_from_range_dat IS NULL ) THEN
1130 IF(l_to_range_dat >=t_from_range_dat) THEN
1131 pon_auc_interface_table_pkg.insert_error_interface ( p_attr_score_rec.l_BATCH_ID,NULL,'pon_attribute_scores_interface','PON','PON_AUC_FROM_TO_ERR_NUM_R',l_from_range_dat );
1132 l_status :='N';
1133 RETURN;
1134 END IF;
1135 END IF;
1136 IF(l_from_range_dat IS NOT NULL AND l_to_range_dat IS NOT NULL AND t_from_range_dat IS NOT NULL AND t_to_range_dat IS NOT NULL ) THEN
1137 BEGIN
1138 SELECT 'N'
1139 INTO l_status
1140 FROM dual
1141 WHERE (l_from_range_dat BETWEEN t_from_range_dat AND t_to_range_dat)
1142 OR (l_to_range_dat BETWEEN t_from_range_dat AND t_to_range_dat);
1143 EXCEPTION
1144 WHEN No_Data_Found THEN
1145 l_status:=NULL;
1146 END;
1147 END IF;
1148 l_status :=NVL(l_status,'Y');
1149 IF(l_status='N') THEN
1150 pon_auc_interface_table_pkg.insert_error_interface ( p_attr_score_rec.l_BATCH_ID,NULL,'pon_attribute_scores_interface','PON','PON_AUC_OVERLAP_RANGES',p_attr_score_rec.l_from_range );
1151 RETURN;
1152 END IF;
1153 END;
1154 END LOOP;
1155 END IF;
1156 END IF;
1157 END;
1158 -----------------------------------------------------------------------
1159 --Start of Comments
1160 --Name: create_neg_team
1161 --Description : Warpper on PON APIs to copy the data from PON_NEG_TEAM_INTERFACE interface table to PON_NEG_TEAM_MEMBERS
1162 --Parameters:
1163 --IN:
1164 -- p_api_version
1165 -- p_init_msg_list
1166 -- p_commit
1167 -- batchId
1168 --OUT:
1169 -- x_return_status Return status SUCCESS /ERROR
1170 --Returns:
1171 --Notes:
1172 --Testing:
1173 --End of Comments
1174 ------------------------------------------------------------------------
1175 PROCEDURE create_neg_team
1176 (
1177 p_commit IN VARCHAR2,
1178 batchId IN NUMBER,
1179 x_return_status IN OUT NOCOPY VARCHAR2
1180 )
1181 IS
1182 /* cursor to get the data from the PON_NEG_TEAM_INTERFACE table */
1183 CURSOR c_interface_neg_team
1184 IS
1185 SELECT * FROM PON_NEG_TEAM_INTERFACE WHERE BATCH_ID =batchId
1186 AND user_name <> neg_header_record_data.trading_partner_contact_name;
1187
1188 c_interface_neg_team_rec c_interface_neg_team%ROWTYPE;
1189 l_LAST_AMENDMENT_UPDATE PON_AUCTION_ATTRIBUTES.LAST_AMENDMENT_UPDATE%TYPE;
1190 l_NEG_TEAM_ENABLED_FLAG PON_AUCTION_HEADERS_ALL.NEG_TEAM_ENABLED_FLAG%TYPE;
1191 l_user_id FND_USER.USER_ID%TYPE;
1192 l_check VARCHAR2(20);
1193 BEGIN
1194 print_log('Entering procedure create_neg_team');
1195 OPEN c_interface_neg_team;
1196 LOOP
1197 FETCH c_interface_neg_team INTO c_interface_neg_team_rec;
1198 EXIT
1199 WHEN c_interface_neg_team%NOTFOUND;
1200 /* If the mode is insert */
1201 IF(NVL(c_interface_neg_team_rec.ACTION,'INSERT')='INSERT') THEN
1202 print_log('c_interface_neg_team_rec.user_id' || c_interface_neg_team_rec.user_id);
1203 create_members_in_collteam(batchid, c_interface_neg_team_rec.user_name,'N',c_interface_neg_team_rec.access_value,
1204 c_interface_neg_team_rec.approver_flag,c_interface_neg_team_rec.auction_header_id,
1205 c_interface_neg_team_rec.task_name,c_interface_neg_team_rec.target_date,NULL,x_return_status);
1206 END IF;
1207 IF( x_return_status = FND_API.G_RET_STS_ERROR) THEN
1208 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_COLLAB_TEAM_ERR');
1209 FND_MESSAGE.SET_TOKEN('BATCH_ID',batchId);
1210 FND_MSG_PUB.ADD;
1211 RETURN;
1212 END IF;
1213 IF(c_interface_neg_team_rec.ACTION='DELETE') THEN
1214 print_log('In delete condition');
1215 DELETE
1216 FROM PON_NEG_TEAM_MEMBERS
1217 WHERE AUCTION_HEADER_ID = c_interface_neg_team_rec.auction_header_id
1218 AND USER_ID =
1219 (SELECT USER_ID
1220 FROM fnd_user
1221 WHERE user_name LIKE Upper(c_interface_neg_team_rec.user_name)
1222 )
1223 AND MEMBER_TYPE='N';
1224
1225 print_log('Record has been deleted');
1226 END IF;
1227 END LOOP;
1228 print_log('Exiting procedure create_neg_team');
1229
1230 EXCEPTION
1231 WHEN OTHERS THEN
1232 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_COLLAB_TEAM_ERR');
1233 FND_MESSAGE.SET_TOKEN('BATCH_ID',batchId);
1234 FND_MSG_PUB.ADD;
1235 x_return_status := FND_API.G_RET_STS_ERROR;
1236 END;
1237 -----------------------------------------------------------------------
1238 --Start of Comments
1239 --Name: create_members_in_collteam
1240 --Description : Warpper on PON APIs to insert the colloboration team members PON_NEG_TEAM_MEMBERS
1241 --Parameters:
1242 --IN:
1243 -- p_api_version
1244 -- p_init_msg_list
1245 -- p_commit
1246 -- batchId
1247 --OUT:
1248 -- x_return_status Return status SUCCESS /ERROR
1249 --Returns:
1250 --Notes:
1251 --Testing:
1252 --End of Comments
1253 ------------------------------------------------------------------------
1254 PROCEDURE create_members_in_collteam
1255 (
1256 batchid IN NUMBER,
1257 username IN VARCHAR2,
1258 ispreparer IN VARCHAR2, -- 'Y'/'N'
1259 menu_name IN VARCHAR2, -- 'PON_SOURCING_EDITNEG'/'PON_SOURCING_VIEWNEG'/'PON_SOURCING_SCORENEG'
1260 approver_flag IN VARCHAR2, -- 'Y'/'N'
1261 auction_header_id IN NUMBER,
1262 task_name IN VARCHAR2,
1263 target_date IN DATE,
1264 manager_approver_flag IN VARCHAR2,
1265 x_return_status IN OUT NOCOPY VARCHAR2 )
1266 IS
1267 l_full_name PER_ALL_PEOPLE_F.FULL_NAME%TYPE;
1268 l_employee_number PER_ALL_PEOPLE_F.employee_number%TYPE;
1269 l_person_id PER_ALL_PEOPLE_F.person_id%TYPE;
1270 l_business_group_id PER_ALL_PEOPLE_F.BUSINESS_GROUP_ID%TYPE;
1271 l_effective_start_date PER_ALL_PEOPLE_F.EFFECTIVE_START_DATE%TYPE;
1272 l_effective_end_date PER_ALL_PEOPLE_F.EFFECTIVE_END_DATE%TYPE;
1273 l_position PER_ALL_POSITIONS.name%TYPE;
1274 l_user_name fnd_user.USER_NAME%TYPE;
1275 l_user_id fnd_user.USER_ID%TYPE;
1276 l_employee_id fnd_user.EMPLOYEE_ID%TYPE;
1277 l_user_start_date fnd_user.START_DATE%TYPE;
1278 l_user_end_date fnd_user.END_DATE%TYPE;
1279 l_menu_name PON_NEG_TEAM_MEMBERS.menu_name%TYPE;
1280 l_member_type PON_NEG_TEAM_MEMBERS.member_type%TYPE;
1281 l_approver_flag PON_NEG_TEAM_MEMBERS.approver_flag%TYPE;
1282 lm_full_name PER_ALL_PEOPLE_F.FULL_NAME%TYPE;
1283 lm_employee_number PER_ALL_PEOPLE_F.employee_number%TYPE;
1284 lm_person_id PER_ALL_PEOPLE_F.person_id%TYPE;
1285 lm_business_group_id PER_ALL_PEOPLE_F.BUSINESS_GROUP_ID%TYPE;
1286 lm_effective_start_date PER_ALL_PEOPLE_F.EFFECTIVE_START_DATE%TYPE;
1287 lm_effective_end_date PER_ALL_PEOPLE_F.EFFECTIVE_END_DATE%TYPE;
1288 lm_position PER_ALL_POSITIONS.name%TYPE;
1289 lm_user_name fnd_user.USER_NAME%TYPE;
1290 lm_user_id fnd_user.USER_ID%TYPE;
1291 lm_employee_id fnd_user.EMPLOYEE_ID%TYPE;
1292 lm_user_start_date fnd_user.START_DATE%TYPE;
1293 lm_user_end_date fnd_user.END_DATE%TYPE;
1294 l_auction_header_id PON_NEG_TEAM_MEMBERS.auction_header_id%TYPE;
1295 l_neg_team_enabled_flag pon_auction_headers_all.NEG_TEAM_ENABLED_FLAG%TYPE;
1296 BEGIN
1297 l_auction_header_id:=auction_header_id;
1298 print_log('create_members_in_collteam begin: auction_header_id ' || auction_header_id || ' username ' || username);
1299 IF (ispreparer ='Y') THEN
1300 l_menu_name := 'PON_SOURCING_EDITNEG';
1301 l_member_type := 'C';
1302 l_approver_flag := 'N';
1303 --Getting the user information for creating creator in colloboration team
1304 IF (username IS NOT NULL) THEN
1305 BEGIN
1306 SELECT DISTINCT PER.FULL_NAME ,
1307 EMP.USER_NAME ,
1308 EMP.USER_ID ,
1309 EMP.EMPLOYEE_ID
1310 INTO l_full_name ,
1311 l_user_name ,
1312 l_user_id ,
1313 l_employee_id
1314 FROM PER_ALL_ASSIGNMENTS_F ASS,
1315 FND_USER EMP ,
1316 PER_ALL_PEOPLE_F PER ,
1317 PER_ALL_POSITIONS POS ,
1318 PON_AUCTION_HEADERS_ALL PAH ,
1319 FINANCIALS_SYSTEM_PARAMS_ALL FSP
1320 WHERE ASS.PERSON_ID = EMP.EMPLOYEE_ID
1321 AND ASS.POSITION_ID = POS.POSITION_ID(+)
1322 AND ASS.PRIMARY_FLAG = 'Y'
1323 AND ((ASS.ASSIGNMENT_TYPE = 'E'
1324 AND PER.CURRENT_EMPLOYEE_FLAG = 'Y')
1325 OR (ASS.ASSIGNMENT_TYPE = 'C'
1326 AND PER.CURRENT_NPW_FLAG = 'Y'))
1327 AND TRUNC(SYSDATE) BETWEEN ASS.EFFECTIVE_START_DATE AND ASS.EFFECTIVE_END_DATE
1328 AND PER.PERSON_ID = EMP.EMPLOYEE_ID
1329 AND EMP.USER_NAME = username
1330 AND TRUNC(SYSDATE) BETWEEN PER.EFFECTIVE_START_DATE AND PER.EFFECTIVE_END_DATE
1331 AND PAH.AUCTION_HEADER_ID = l_auction_header_id
1332 AND PAH.ORG_ID = FSP.ORG_ID
1333 AND FSP.BUSINESS_GROUP_ID = PER.BUSINESS_GROUP_ID;
1334 EXCEPTION
1335 WHEN OTHERS THEN
1336 x_return_status := FND_API.G_RET_STS_ERROR;
1337 RETURN;
1338 END;
1339 END IF;
1340 IF NOT (check_uniqueness(l_user_id,auction_header_id,ispreparer)) THEN
1341 print_log('User Already exists');
1342 RETURN;
1343 ELSE
1344 insert_collabteam_member(auction_header_id, -- auction_header_id
1345 l_user_id, -- user_id from fnd
1346 l_user_name, -- user_name from fnd
1347 l_menu_name, -- MenuName
1348 l_member_type, -- Member Type
1349 NVL(l_approver_flag,'N'), -- Approver_flag
1350 task_name, -- Task Name
1351 target_date, -- Target_date
1352 SYSDATE, -- Creation_date
1353 fnd_global.user_id, -- Created_by
1354 SYSDATE, -- last_update_date
1355 fnd_global.user_id); -- last_updated_by
1356 END IF;
1357 -- Getting the manager and manager info of the creator of the solicitation
1358 BEGIN
1359 SELECT DISTINCT PER.FULL_NAME ,
1360 SUP.USER_NAME ,
1361 SUP.USER_ID ,
1362 SUP.EMPLOYEE_ID
1363 INTO lm_full_name ,
1364 lm_user_name ,
1365 lm_user_id ,
1366 lm_employee_id
1367 FROM PER_ALL_ASSIGNMENTS_F ASS,
1368 PER_ALL_ASSIGNMENTS_F SUPASS ,
1369 FND_USER SUP ,
1370 FND_USER EMP ,
1371 PER_ALL_PEOPLE_F PER ,
1372 PER_ALL_POSITIONS POS
1373 WHERE ASS.PERSON_ID = EMP.EMPLOYEE_ID
1374 AND ASS.SUPERVISOR_ID = SUP.EMPLOYEE_ID
1375 AND ASS.PRIMARY_FLAG = 'Y'
1376 AND ASS.ASSIGNMENT_TYPE IN ('E', 'C')
1377 AND TRUNC(SYSDATE) BETWEEN ASS.EFFECTIVE_START_DATE AND ASS.EFFECTIVE_END_DATE
1378 AND SUPASS.PERSON_ID = ASS.SUPERVISOR_ID
1379 AND SUPASS.POSITION_ID = POS.POSITION_ID(+)
1380 AND SUPASS.PRIMARY_FLAG = 'Y'
1381 AND ((SUPASS.ASSIGNMENT_TYPE = 'E'
1382 AND PER.CURRENT_EMPLOYEE_FLAG = 'Y')
1383 OR (SUPASS.ASSIGNMENT_TYPE = 'C'
1384 AND PER.CURRENT_NPW_FLAG = 'Y'))
1385 AND TRUNC(SYSDATE) BETWEEN PER.EFFECTIVE_START_DATE AND PER.EFFECTIVE_END_DATE
1386 AND TRUNC(SYSDATE) BETWEEN SUPASS.EFFECTIVE_START_DATE AND SUPASS.EFFECTIVE_END_DATE
1387 AND SUP.START_DATE <= SYSDATE
1388 AND NVL(SUP.END_DATE, SYSDATE) >= SYSDATE
1389 AND PER.PERSON_ID = SUP.EMPLOYEE_ID
1390 AND EMP.USER_NAME = username;
1391
1392 insert_collabteam_member(auction_header_id, -- auction_header_id
1393 lm_user_id, -- user_id from fnd
1394 lm_user_name, -- user_name from fnd
1395 'PON_SOURCING_EDITNEG', -- MenuName
1396 'M', -- Member Type
1397 NVL(manager_approver_flag,'Y'), -- Approver_flag
1398 task_name, -- Task Name
1399 target_date, -- Target_date
1400 SYSDATE, -- Creation_date
1401 fnd_global.user_id, -- Created_by
1402 SYSDATE, -- last_update_date
1403 fnd_global.user_id); -- last_updated_by
1404
1405 EXCEPTION
1406 WHEN OTHERS THEN
1407 -- need to raise the sql exception if any encountered
1408 x_return_status := FND_API.G_RET_STS_ERROR;
1409 RETURN;
1410 END;
1411
1412 ELSE
1413 l_member_type := 'N';
1414 BEGIN
1415 SELECT DISTINCT NEG_TEAM_ENABLED_FLAG
1416 INTO l_neg_team_enabled_flag
1417 FROM pon_auction_headers_all
1418 WHERE auction_header_id = l_auction_header_id;
1419 EXCEPTION
1420 WHEN OTHERS THEN
1421 x_return_status := FND_API.G_RET_STS_ERROR;
1422 print_Log('Error '|| SQLERRM );
1423 END;
1424 IF ((l_neg_team_enabled_flag = 'N') AND (ispreparer = 'N')) THEN
1425 RETURN;
1426 END IF;
1427 print_log('checking for the validity of the user name');
1428 BEGIN
1429 SELECT user_id
1430 INTO l_user_id
1431 FROM
1432 (SELECT users.user_id
1433 FROM pon_employees_current_v emp,
1434 fnd_user users ,
1435 hr_all_organization_units_tl orgs
1436 WHERE emp.person_id = users.employee_id
1437 AND users.start_date <= SYSDATE
1438 AND NVL(users.end_date, SYSDATE) >= SYSDATE
1439 AND emp.organization_id = orgs.organization_id
1440 AND orgs.language = USERENV('LANG')
1441 AND users.user_name LIKE Upper(username)
1442 );
1443 EXCEPTION
1444 WHEN No_Data_Found THEN
1445 l_user_id:=NULL;
1446 print_log('Invalid username');
1447 x_return_status := FND_API.G_RET_STS_ERROR;
1448 RETURN;
1449 END;
1450 IF NOT (check_uniqueness(l_user_id,auction_header_id,ispreparer)) THEN
1451 print_Log('User name already exists');
1452 x_return_status := FND_API.G_RET_STS_ERROR;
1453 -- Error message must be thrown
1454 RETURN;
1455 ELSE
1456 print_log('Inserting the record');
1457 insert_collabteam_member(auction_header_id, -- auction_header_id
1458 l_user_id, -- user_id from fnd
1459 username, -- user_name from fnd
1460 NVL(menu_name,'PON_SOURCING_SCORENEG'), -- MenuName
1461 'N', -- Member Type
1462 NVL(approver_flag,'N'), -- Approver_flag
1463 task_name, -- Task Name
1464 target_date, -- Target_date
1465 SYSDATE, -- Creation_date
1466 fnd_global.user_id, -- Created_by
1467 SYSDATE, -- last_update_date
1468 fnd_global.user_id); -- last_updated_by
1469 END IF;
1470 END IF;
1471
1472 EXCEPTION
1473 WHEN OTHERS THEN
1474 print_Log('Exception encountered in create_members_in_collteam');
1475 x_return_status := FND_API.G_RET_STS_ERROR;
1476 END create_members_in_collteam;
1477
1478
1479
1480 FUNCTION check_uniqueness
1481 (
1482 p_user_id IN NUMBER,
1483 p_auction_header_id IN NUMBER,
1484 ispreparer IN VARCHAR2)
1485 RETURN BOOLEAN
1486 IS
1487 l_count NUMBER := 0;
1488 l_count1 NUMBER := 0;
1489 BEGIN
1490 SELECT COUNT(*)
1491 INTO l_count
1492 FROM PON_NEG_TEAM_MEMBERS pnt
1493 WHERE pnt.auction_header_id = p_auction_header_id
1494 AND pnt.list_id = -1
1495 AND pnt.user_id = p_user_id;
1496 IF (l_count > 0 ) THEN
1497 RETURN(FALSE);
1498 ELSE
1499 RETURN(TRUE);
1500 END IF;
1501 IF (NVL(ispreparer,'N') = 'Y') THEN
1502 SELECT COUNT(*)
1503 INTO l_count1
1504 FROM PON_NEG_TEAM_MEMBERS pnt
1505 WHERE pnt.auction_header_id = p_auction_header_id
1506 AND PNT.LIST_ID = -1
1507 AND member_type = 'C';
1508 IF (l_count > 0 ) THEN
1509 -- set the error as already a preparer is existing in the colloboration team
1510 RETURN(FALSE);
1511 ELSE
1512 RETURN(TRUE);
1513 END IF;
1514 END IF;
1515 END check_uniqueness;
1516
1517
1518 PROCEDURE insert_collabteam_member
1519 (
1520 auction_header_id IN NUMBER,
1521 user_id IN NUMBER,
1522 user_name IN VARCHAR2,
1523 menu_name IN VARCHAR2,
1524 member_type IN VARCHAR2,
1525 approver_flag IN VARCHAR2,
1526 task_name IN VARCHAR2,
1527 target_date IN DATE,
1528 creation_date IN DATE,
1529 created_by IN NUMBER,
1530 last_update_date IN DATE,
1531 last_updated_by IN NUMBER)
1532 IS
1533 l_user_id NUMBER;
1534 BEGIN
1535 INSERT
1536 INTO PON_NEG_TEAM_MEMBERS
1537 (
1538 auction_header_id,
1539 list_id ,
1540 user_name ,
1541 menu_name ,
1542 member_type ,
1543 approver_flag ,
1544 task_name ,
1545 target_date ,
1546 creation_date ,
1547 created_by ,
1548 last_update_date ,
1549 last_updated_by ,
1550 user_id
1551 )
1552 VALUES
1553 (
1554 auction_header_id,
1555 -1 ,
1556 user_name ,
1557 menu_name ,
1558 member_type ,
1559 approver_flag ,
1560 task_name ,
1561 target_date ,
1562 creation_date ,
1563 created_by ,
1564 last_update_date ,
1565 last_updated_by ,
1566 user_id
1567 );
1568 EXCEPTION
1569 WHEN OTHERS THEN
1570 NULL;
1571 --RAISE SQL EXCEPTION
1572 END insert_collabteam_member;
1573 -----------------------------------------------------------------------
1574 --Start of Comments
1575 --Name: invite_supplier
1576 --Description : Warpper on PON APIs to copy the data from PON_BID_PARTIES_INTERFACE interface table to PON_BIDDING_PARTIES table
1577 --Parameters:
1578 --IN:
1579 -- p_api_version
1580 -- p_init_msg_list
1581 -- p_commit
1582 -- batchId
1583 --OUT:
1584 -- x_return_status Return status SUCCESS /ERROR
1585 --Returns:
1586 --Notes:
1587 --Testing:
1588 --End of Comments
1589 ------------------------------------------------------------------------
1590 PROCEDURE invite_supplier
1591 (
1592 p_batch_id IN NUMBER,
1593 x_return_status IN OUT NOCOPY VARCHAR2
1594 )
1595 IS
1596 CURSOR c_invitee_supplier
1597 IS
1598 SELECT * FROM pon_bid_parties_interface WHERE batch_id=p_batch_id;
1599
1600 c_invitee_supplier_rec c_invitee_supplier%ROWTYPE;
1601 l_BATCH_ID PON_BID_PARTIES_INTERFACE.BATCH_ID%TYPE;
1602 l_AUCTION_HEADER_ID PON_BID_PARTIES_INTERFACE.AUCTION_HEADER_ID%TYPE;
1603 l_SEQUENCE PON_BID_PARTIES_INTERFACE.SEQUENCE_NUMBER%TYPE;
1604 l_VENDOR_NAME PON_BID_PARTIES_INTERFACE.VENDOR_NAME%TYPE;
1605 l_VENDOR_ID PON_BID_PARTIES_INTERFACE.VENDOR_ID%TYPE;
1606 l_VENDOR_SITE_ID PON_BID_PARTIES_INTERFACE.VENDOR_SITE_ID%TYPE;
1607 l_VENDOR_SITE_CODE PON_BID_PARTIES_INTERFACE.VENDOR_SITE_CODE%TYPE;
1608 l_TRADING_PARTNER_CONTACT_NAME PON_BID_PARTIES_INTERFACE.TRADING_PARTNER_CONTACT_NAME%TYPE;
1609 l_TRADING_PARTNER_CONTACT_ID PON_BID_PARTIES_INTERFACE.TRADING_PARTNER_CONTACT_ID%TYPE;
1610 l_ADDITIONAL_CONTACT_EMAIL PON_BID_PARTIES_INTERFACE.ADDITIONAL_CONTACT_EMAIL%TYPE;
1611 l_ACTION PON_BID_PARTIES_INTERFACE.ACTION%TYPE;
1612 l_CREATION_DATE PON_BID_PARTIES_INTERFACE.CREATION_DATE%TYPE;
1613 l_CREATED_BY PON_BID_PARTIES_INTERFACE.CREATED_BY%TYPE;
1614 l_LAST_UPDATE_DATE PON_BID_PARTIES_INTERFACE.LAST_UPDATE_DATE%TYPE;
1615 l_LAST_UPDATED_BY PON_BID_PARTIES_INTERFACE.LAST_UPDATED_BY%TYPE;
1616 l_LAST_AMENDMENT_UPDATE PON_BIDDING_PARTIES.LAST_AMENDMENT_UPDATE%TYPE;
1617 L_ORG_ID PON_AUCTION_HEADERS_ALL.ORG_ID%TYPE;
1618 l_TRADING_PARTNER_ID PON_AUCTION_HEADERS_ALL.TRADING_PARTNER_ID%TYPE;
1619 l_STATUS VARCHAR2(10);
1620 BEGIN
1621 print_Log('In the invite supplier procedure');
1622
1623 validate_invited_suppliers(p_batch_id);
1624
1625 BEGIN
1626 SELECT 'E' status
1627 INTO x_return_status
1628 FROM dual
1629 WHERE EXISTS
1630 (SELECT * FROM pon_interface_errors WHERE BATCH_ID= p_batch_Id
1631 );
1632 EXCEPTION
1633 WHEN No_Data_Found THEN
1634 x_return_status:=FND_API.G_RET_STS_SUCCESS;
1635 END;
1636
1637 IF(x_return_status=FND_API.G_RET_STS_ERROR) THEN
1638 print_Log('Error in PON_BID_PARTIES_INTERFACE table. Please check pon_interface_errors for more details' );
1639 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_SUPPLIER_VAL_ERR');
1640 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_Id);
1641 FND_MSG_PUB.ADD;
1642 RAISE FND_API.G_EXC_ERROR;
1643 END IF;
1644
1645 print_log('PON_BID_PARTIES_INTERFACE validation completed');
1646
1647
1648 OPEN c_invitee_supplier;
1649 LOOP
1650 FETCH c_invitee_supplier INTO c_invitee_supplier_rec;
1651 EXIT
1652 WHEN c_invitee_supplier%NOTFOUND;
1653 BEGIN
1654 l_BATCH_ID := p_batch_id;
1655 l_AUCTION_HEADER_ID := c_invitee_supplier_rec.AUCTION_HEADER_ID;
1656 l_SEQUENCE :=c_invitee_supplier_rec.SEQUENCE_NUMBER;
1657 l_VENDOR_NAME :=c_invitee_supplier_rec.VENDOR_NAME;
1658 l_VENDOR_ID :=c_invitee_supplier_rec.VENDOR_ID;
1659 l_VENDOR_SITE_ID :=c_invitee_supplier_rec.VENDOR_SITE_ID;
1660 l_VENDOR_SITE_CODE :=c_invitee_supplier_rec.VENDOR_SITE_CODE;
1661 l_TRADING_PARTNER_CONTACT_NAME :=c_invitee_supplier_rec.TRADING_PARTNER_CONTACT_NAME;
1662 l_TRADING_PARTNER_CONTACT_ID :=c_invitee_supplier_rec.TRADING_PARTNER_CONTACT_ID;
1663 l_ADDITIONAL_CONTACT_EMAIL :=c_invitee_supplier_rec.ADDITIONAL_CONTACT_EMAIL;
1664 l_ACTION :=c_invitee_supplier_rec.ACTION;
1665 l_CREATION_DATE :=SYSDATE;
1666 l_CREATED_BY :=FND_GLOBAL.USER_ID;
1667 l_LAST_UPDATE_DATE :=SYSDATE;
1668 l_LAST_UPDATED_BY :=FND_GLOBAL.USER_ID;
1669 /*** If the action is insert ***/
1670 IF (NVL(L_ACTION,'INSERT')='INSERT') THEN
1671 -- If the vendor_name and vendor_id is not null
1672 IF (L_VENDOR_NAME IS NOT NULL) THEN
1673 SELECT VENDOR_ID, PARTY_ID
1674 INTO L_VENDOR_ID, l_TRADING_PARTNER_ID
1675 FROM AP_SUPPLIERS
1676 WHERE VENDOR_NAME=L_VENDOR_NAME;
1677 -- if vendor_name is null and vendor_id is not null
1678 ELSIF (L_VENDOR_ID IS NOT NULL) THEN
1679 SELECT VENDOR_NAME, PARTY_ID
1680 INTO L_VENDOR_NAME, l_TRADING_PARTNER_ID
1681 FROM AP_SUPPLIERS
1682 WHERE VENDOR_ID=L_VENDOR_ID;
1683 END IF;
1684
1685 /****** Get Outcome Operating Unit Id ******/
1686 SELECT ORG_ID INTO L_ORG_ID
1687 FROM PON_AUCTION_HEADERS_ALL
1688 WHERE AUCTION_HEADER_ID = l_AUCTION_HEADER_ID;
1689
1690 -- If vendor_site_id and vendor_site_code is not null
1691 IF (L_VENDOR_SITE_ID IS NOT NULL) THEN
1692 SELECT VENDOR_SITE_CODE
1693 INTO L_VENDOR_SITE_CODE
1694 FROM AP_SUPPLIER_SITES_ALL
1695 WHERE VENDOR_SITE_ID=L_VENDOR_SITE_ID
1696 AND ORG_ID =L_ORG_ID;
1697 -- If vendor_site_id is null and vendor_site_code is not null
1698 ELSIF (L_VENDOR_SITE_CODE IS NOT NULL) THEN
1699 SELECT VENDOR_SITE_ID
1700 INTO L_VENDOR_SITE_ID
1701 FROM AP_SUPPLIER_SITES_ALL
1702 WHERE VENDOR_SITE_CODE=L_VENDOR_SITE_CODE
1703 AND ORG_ID =L_ORG_ID;
1704 END IF;
1705
1706 -- If the trading_partner_contact_id is not null
1707 IF (L_TRADING_PARTNER_CONTACT_ID IS NOT NULL) THEN
1708 SELECT PERSON_LAST_NAME
1709 ||','
1710 ||PERSON_FIRST_NAME
1711 INTO L_TRADING_PARTNER_CONTACT_NAME
1712 FROM HZ_PARTIES
1713 WHERE PARTY_ID=L_TRADING_PARTNER_CONTACT_ID;
1714 END IF;
1715
1716 -- check if the Supplier has been invited multiple times for the same Supplier Site or without a Supplier Site selection
1717 BEGIN
1718 SELECT 'Y' INTO l_status
1719 FROM PON_BIDDING_PARTIES
1720 WHERE TRADING_PARTNER_NAME=L_VENDOR_NAME
1721 AND VENDOR_SITE_ID =NVL(L_VENDOR_SITE_ID,VENDOR_SITE_ID)
1722 AND auction_header_id =l_auction_header_id;
1723 EXCEPTION
1724 WHEN No_Data_Found THEN
1725 l_status:=NULL;
1726 END;
1727 IF(l_status='Y') THEN
1728 print_log('Supplier cannot be invited multiple times for the same Supplier Site or without a Supplier Site selection. Please select distinct Supplier Sites when inviting a supplier multiple times.');
1729 x_return_status := 'E';
1730 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_SUPPLIER_MUL');
1731 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_id);
1732 FND_MESSAGE.SET_TOKEN('VENDOR_NAME',L_VENDOR_NAME);
1733 FND_MSG_PUB.ADD;
1734 RAISE FND_API.G_EXC_ERROR;
1735 END IF;
1736
1737 /* getting the amendment number */
1738 BEGIN
1739 SELECT MAX(amendment_number)
1740 INTO l_LAST_AMENDMENT_UPDATE
1741 FROM pon_auction_headers_all
1742 WHERE AUCTION_HEADER_ID = l_AUCTION_HEADER_ID;
1743 EXCEPTION
1744 WHEN No_Data_Found THEN
1745 l_LAST_AMENDMENT_UPDATE:= NULL;
1746 END;
1747 l_LAST_AMENDMENT_UPDATE:= NVL(l_LAST_AMENDMENT_UPDATE,0);
1748
1749 /* Insert Into PON_BIDDING_PARTIES */
1750 INSERT
1751 INTO PON_BIDDING_PARTIES
1752 (
1753 AUCTION_HEADER_ID ,
1754 LIST_ID ,
1755 SEQUENCE ,
1756 TRADING_PARTNER_NAME ,
1757 TRADING_PARTNER_ID ,
1758 TRADING_PARTNER_CONTACT_NAME,
1759 TRADING_PARTNER_CONTACT_ID ,
1760 VENDOR_SITE_ID ,
1761 VENDOR_SITE_CODE ,
1762 ADDITIONAL_CONTACT_EMAIL ,
1763 ACCESS_TYPE ,
1764 ROUND_NUMBER ,
1765 LAST_AMENDMENT_UPDATE ,
1766 CREATION_DATE ,
1767 CREATED_BY ,
1768 LAST_UPDATE_DATE ,
1769 LAST_UPDATED_BY
1770 )
1771 VALUES
1772 (
1773 L_AUCTION_HEADER_ID ,
1774 -1 ,
1775 L_SEQUENCE ,
1776 L_VENDOR_NAME ,
1777 L_TRADING_PARTNER_ID ,
1778 L_TRADING_PARTNER_CONTACT_NAME,
1779 L_TRADING_PARTNER_CONTACT_ID ,
1780 NVL(L_VENDOR_SITE_ID, -1) ,
1781 NVL(L_VENDOR_SITE_CODE,-1) ,
1782 L_ADDITIONAL_CONTACT_EMAIL ,
1783 'FULL' ,
1784 1 ,
1785 L_LAST_AMENDMENT_UPDATE ,
1786 L_CREATION_DATE ,
1787 L_CREATED_BY ,
1788 L_LAST_UPDATE_DATE ,
1789 L_LAST_UPDATED_BY
1790 );
1791 END IF;
1792 print_log('End of the procedure invitee_supplier');
1793 END;
1794 END LOOP;
1795 END invite_supplier;
1796
1797 PROCEDURE validate_invited_suppliers(p_batch_id IN NUMBER)
1798 AS
1799
1800 l_cp_user_id NUMBER;
1801 l_cp_login_id NUMBER;
1802
1803 BEGIN
1804 l_cp_user_id := fnd_global.user_id;
1805 l_cp_login_id := fnd_global.login_id;
1806
1807 INSERT ALL
1808 WHEN (sel_vendor_name IS NULL AND sel_vendor_id IS NULL )
1809 THEN INTO PON_INTERFACE_ERRORS
1810 (
1811 INTERFACE_TYPE ,
1812 ERROR_MESSAGE_NAME,
1813 COLUMN_NAME,
1814 BATCH_ID ,
1815 ENTITY_TYPE ,
1816 CREATED_BY ,
1817 CREATION_DATE ,
1818 LAST_UPDATED_BY ,
1819 LAST_UPDATE_DATE ,
1820 LAST_UPDATE_LOGIN
1821 )
1822 VALUES(
1823 g_interface_type,
1824 'PON_FIELD_MUST_BE_ENTERED',
1825 'VENDOR_NAME',
1826 p_batch_id,
1827 'PON_BID_PARTIES_INTERFACE',
1828 l_cp_user_id,
1829 SYSDATE,
1830 l_cp_user_id,
1831 SYSDATE,
1832 l_cp_login_id)
1833 WHEN (sel_vendor_name IS NOT NULL AND sel_vendor_id IS NOT NULL
1834 AND NOT EXISTS(SELECT 1 FROM AP_SUPPLIERS
1835 WHERE VENDOR_NAME=sel_vendor_name AND VENDOR_ID=sel_vendor_id))
1836 THEN INTO PON_INTERFACE_ERRORS
1837 (
1838 INTERFACE_TYPE ,
1839 ERROR_MESSAGE_NAME,
1840 TOKEN1_NAME,
1841 TOKEN1_VALUE,
1842 BATCH_ID ,
1843 ENTITY_TYPE ,
1844 CREATED_BY ,
1845 CREATION_DATE ,
1846 LAST_UPDATED_BY ,
1847 LAST_UPDATE_DATE ,
1848 LAST_UPDATE_LOGIN
1849 )
1850 VALUES(
1851 g_interface_type,
1852 'PON_IMPORT_INV_VENDOR',
1853 'VENDOR_NAME',
1854 sel_vendor_name,
1855 p_batch_id,
1856 'PON_BID_PARTIES_INTERFACE',
1857 l_cp_user_id,
1858 SYSDATE,
1859 l_cp_user_id,
1860 SYSDATE,
1861 l_cp_login_id)
1862 WHEN (sel_vendor_id IS NOT NULL
1863 AND NOT EXISTS(SELECT 1 FROM AP_SUPPLIERS
1864 WHERE VENDOR_ID=sel_vendor_id))
1865 THEN INTO PON_INTERFACE_ERRORS
1866 (
1867 INTERFACE_TYPE ,
1868 ERROR_MESSAGE_NAME,
1869 TOKEN1_NAME,
1870 TOKEN1_VALUE,
1871 BATCH_ID ,
1872 ENTITY_TYPE ,
1873 CREATED_BY ,
1874 CREATION_DATE ,
1875 LAST_UPDATED_BY ,
1876 LAST_UPDATE_DATE ,
1877 LAST_UPDATE_LOGIN
1878 )
1879 VALUES(
1880 g_interface_type,
1881 'PON_IMPORT_INV_VENDORID',
1882 'VENDOR_ID',
1883 sel_vendor_id,
1884 p_batch_id,
1885 'PON_BID_PARTIES_INTERFACE',
1886 l_cp_user_id,
1887 SYSDATE,
1888 l_cp_user_id,
1889 SYSDATE,
1890 l_cp_login_id)
1891 WHEN (sel_vendor_NAME IS NOT NULL
1892 AND NOT EXISTS(SELECT 1 FROM AP_SUPPLIERS
1893 WHERE VENDOR_NAME=sel_vendor_NAME))
1894 THEN INTO PON_INTERFACE_ERRORS
1895 (
1896 INTERFACE_TYPE ,
1897 ERROR_MESSAGE_NAME,
1898 TOKEN1_NAME,
1899 TOKEN1_VALUE,
1900 BATCH_ID ,
1901 ENTITY_TYPE ,
1902 CREATED_BY ,
1903 CREATION_DATE ,
1904 LAST_UPDATED_BY ,
1905 LAST_UPDATE_DATE ,
1906 LAST_UPDATE_LOGIN
1907 )
1908 VALUES(
1909 g_interface_type,
1910 'PON_IMPORT_INV_VENDORNAME',
1911 'VENDOR_NAME',
1912 sel_vendor_NAME,
1913 p_batch_id,
1914 'PON_BID_PARTIES_INTERFACE',
1915 l_cp_user_id,
1916 SYSDATE,
1917 l_cp_user_id,
1918 SYSDATE,
1919 l_cp_login_id)
1920
1921 WHEN (sel_vendor_site_code IS NOT NULL AND sel_vendor_site_id IS NOT NULL
1922 AND NOT EXISTS(SELECT 1 FROM AP_SUPPLIER_SITES_ALL
1923 WHERE vendor_site_code=sel_vendor_site_code AND vendor_site_id=sel_vendor_site_id))
1924 THEN INTO PON_INTERFACE_ERRORS
1925 (
1926 INTERFACE_TYPE ,
1927 ERROR_MESSAGE_NAME,
1928 TOKEN1_NAME,
1929 TOKEN1_VALUE,
1930 BATCH_ID ,
1931 ENTITY_TYPE ,
1932 CREATED_BY ,
1933 CREATION_DATE ,
1934 LAST_UPDATED_BY ,
1935 LAST_UPDATE_DATE ,
1936 LAST_UPDATE_LOGIN
1937 )
1938 VALUES(
1939 g_interface_type,
1940 'PON_IMPORT_INV_VENDORSITE',
1941 'VENDOR_SITE',
1942 sel_vendor_site_code,
1943 p_batch_id,
1944 'PON_BID_PARTIES_INTERFACE',
1945 l_cp_user_id,
1946 SYSDATE,
1947 l_cp_user_id,
1948 SYSDATE,
1949 l_cp_login_id)
1950 WHEN (sel_vendor_site_id IS NOT NULL
1951 AND NOT EXISTS(SELECT 1 FROM AP_SUPPLIER_SITES_ALL
1952 WHERE vendor_site_id=sel_vendor_site_id))
1953 THEN INTO PON_INTERFACE_ERRORS
1954 (
1955 INTERFACE_TYPE ,
1956 ERROR_MESSAGE_NAME,
1957 TOKEN1_NAME,
1958 TOKEN1_VALUE,
1959 BATCH_ID ,
1960 ENTITY_TYPE ,
1961 CREATED_BY ,
1962 CREATION_DATE ,
1963 LAST_UPDATED_BY ,
1964 LAST_UPDATE_DATE ,
1965 LAST_UPDATE_LOGIN
1966 )
1967 VALUES(
1968 g_interface_type,
1969 'PON_IMPORT_INV_VENDORSITEID',
1970 'SITE_ID',
1971 sel_vendor_site_id,
1972 p_batch_id,
1973 'PON_BID_PARTIES_INTERFACE',
1974 l_cp_user_id,
1975 SYSDATE,
1976 l_cp_user_id,
1977 SYSDATE,
1978 l_cp_login_id)
1979 WHEN (sel_vendor_site_code IS NOT NULL
1980 AND NOT EXISTS(SELECT 1 FROM AP_SUPPLIER_SITES_ALL
1981 WHERE vendor_site_code=sel_vendor_site_code))
1982 THEN INTO PON_INTERFACE_ERRORS
1983 (
1984 INTERFACE_TYPE ,
1985 ERROR_MESSAGE_NAME,
1986 TOKEN1_NAME,
1987 TOKEN1_VALUE,
1988 BATCH_ID ,
1989 ENTITY_TYPE ,
1990 CREATED_BY ,
1991 CREATION_DATE ,
1992 LAST_UPDATED_BY ,
1993 LAST_UPDATE_DATE ,
1994 LAST_UPDATE_LOGIN
1995 )
1996 VALUES(
1997 g_interface_type,
1998 'PON_IMPORT_INV_VENDORSITECODE',
1999 'SITE_CODE',
2000 sel_vendor_site_code,
2001 p_batch_id,
2002 'PON_BID_PARTIES_INTERFACE',
2003 l_cp_user_id,
2004 SYSDATE,
2005 l_cp_user_id,
2006 SYSDATE,
2007 l_cp_login_id)
2008
2009 WHEN (sel_tpc_id IS NOT NULL
2010 AND NOT EXISTS(SELECT 1 FROM hz_parties
2011 WHERE party_id=sel_tpc_id))
2012 THEN INTO PON_INTERFACE_ERRORS
2013 (
2014 INTERFACE_TYPE ,
2015 ERROR_MESSAGE_NAME,
2016 TOKEN1_NAME,
2017 TOKEN1_VALUE,
2018 BATCH_ID ,
2019 ENTITY_TYPE ,
2020 CREATED_BY ,
2021 CREATION_DATE ,
2022 LAST_UPDATED_BY ,
2023 LAST_UPDATE_DATE ,
2024 LAST_UPDATE_LOGIN
2025 )
2026 VALUES(
2027 g_interface_type,
2028 'PON_IMPORT_INV_VENDORTPC',
2029 'TPC',
2030 sel_tpc_id,
2031 p_batch_id,
2032 'PON_BID_PARTIES_INTERFACE',
2033 l_cp_user_id,
2034 SYSDATE,
2035 l_cp_user_id,
2036 SYSDATE,
2037 l_cp_login_id)
2038 WHEN (sel_tpc_id IS NULL AND sel_add_mail IS null)
2039 THEN INTO PON_INTERFACE_ERRORS
2040 (
2041 INTERFACE_TYPE ,
2042 ERROR_MESSAGE_NAME,
2043 COLUMN_NAME,
2044 BATCH_ID ,
2045 ENTITY_TYPE ,
2046 AUCTION_HEADER_ID ,
2047 CREATED_BY ,
2048 CREATION_DATE ,
2049 LAST_UPDATED_BY ,
2050 LAST_UPDATE_DATE ,
2051 LAST_UPDATE_LOGIN
2052 )
2053 VALUES(
2054 g_interface_type,
2055 'PON_FIELD_MUST_BE_ENTERED',
2056 'trading_partner_contact_name',
2057 p_batch_id,
2058 'PON_BID_PARTIES_INTERFACE',
2059 NULL,
2060 l_cp_user_id,
2061 SYSDATE,
2062 l_cp_user_id,
2063 SYSDATE,
2064 l_cp_login_id)
2065 SELECT
2066 vendor_name sel_vendor_name,
2067 vendor_id sel_vendor_id,
2068 vendor_site_code sel_vendor_site_code,
2069 vendor_site_id sel_vendor_site_id,
2070 trading_partner_contact_id sel_tpc_id,
2071 trading_partner_contact_name sel_tpc_name,
2072 additional_contact_email sel_add_mail
2073 FROM pon_bid_parties_interface
2074 WHERE batch_id = p_batch_id
2075 AND action='INSERT';
2076
2077 END validate_invited_suppliers;
2078
2079
2080 PROCEDURE line_level_validation(
2081 p_batch_id IN NUMBER,
2082 p_doctype_id IN NUMBER,
2083 p_trading_partner_id IN NUMBER,
2084 p_trading_partner_contact_id IN NUMBER,
2085 p_curr_lang IN VARCHAR2,
2086 p_contract_type IN VARCHAR2,
2087 p_global_flag IN VARCHAR,
2088 p_org_id IN NUMBER,
2089 p_precision IN NUMBER,
2090 p_is_complex IN VARCHAR2,
2091 x_return_status IN OUT NOCOPY VARCHAR2
2092 )
2093
2094 AS
2095 -- PRAGMA AUTONOMOUS_TRANSACTION;
2096 dummy NUMBER;
2097
2098 BEGIN
2099
2100 print_log('line_level_validation begin ');
2101
2102 line_sanity_validation(p_batch_id);
2103
2104
2105 PON_VALIDATE_ITEM_PRICES_INT.VALIDATE('ITEMUPLOAD',
2106 p_batch_id,
2107 p_doctype_id,
2108 fnd_global.user_id,
2109 p_trading_partner_id,
2110 p_trading_partner_contact_id,
2111 p_curr_lang,
2112 p_contract_type,
2113 p_global_flag,
2114 p_org_id
2115 );
2116 print_log('line_level_validation: PON_VALIDATE_ITEM_PRICES_INT.VALIDATE completed');
2117
2118 pon_auc_interface_table_pkg.validate_price_elements('ITEMUPLOAD',
2119 p_batch_id,
2120 p_precision,
2121 p_precision
2122 );
2123 print_log('line_level_validation: pon_auc_interface_table_pkg.validate_price_elements completed');
2124
2125 pon_auc_interface_table_pkg.validate_price_differentials('ITEMUPLOAD',
2126 p_batch_id
2127 );
2128 print_log('line_level_validation: pon_auc_interface_table_pkg.validate_price_differentials completed');
2129
2130 pon_auc_interface_table_pkg.validate_attributes('ITEMUPLOAD',
2131 p_batch_id,
2132 p_trading_partner_id
2133 );
2134 print_log('line_level_validation: pon_auc_interface_table_pkg.validate_attributes completed');
2135
2136 IF(NVL(p_is_complex,'N') = 'Y') THEN
2137 pon_validate_payments_int.validate_creation('NEGPYMTUPLOAD',
2138 p_batch_id);
2139 END IF;
2140
2141 -- COMMIT;
2142
2143
2144 EXCEPTION
2145 WHEN OTHERS THEN
2146 print_log('An error occured while validating the line. please check the pon_interface_errors table for error information');
2147 print_log('sqlcode ' || SQLCODE || 'sqlerror ' || SQLERRM);
2148 x_return_status := FND_API.G_RET_STS_ERROR;
2149 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_LINES_VAL_ERR');
2150 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_id);
2151 FND_MSG_PUB.ADD;
2152 RAISE FND_API.G_EXC_ERROR;
2153
2154
2155 END line_level_validation;
2156
2157 /*
2158 * Procedure to take data from lines interface tables and create records
2159 * in main transaction tables
2160 */
2161 PROCEDURE create_lines_with_children
2162 (
2163 p_batch_id IN NUMBER,
2164 p_auction_Header_id IN NUMBER,
2165 x_return_status IN OUT NOCOPY VARCHAR2)
2166 AS
2167 x_number_of_lines NUMBER;
2168 x_max_disp_line NUMBER;
2169 x_last_line_close_date DATE;
2170 x_result VARCHAR2(1);
2171 x_error_code VARCHAR2(10);
2172 x_error_message VARCHAR2(50);
2173 l_doctype_id pon_auction_headers_all.doctype_id%type;
2174 g_user_id fnd_user.user_id%type;
2175 l_trading_partner_id pon_auction_headers_all.trading_partner_id%type;
2176 l_trading_partner_contact_id pon_auction_headers_all.trading_partner_contact_id%type;
2177 l_contract_type pon_auction_headers_all.contract_type%type;
2178 l_global_flag pon_auction_headers_all.global_agreement_flag%type;
2179 l_org_id pon_auction_headers_all.org_id%type;
2180 l_currency_code pon_auction_headers_all.currency_code%type;
2181 l_price_precision NUMBER;
2182 l_auction_round_number pon_auction_headers_all.auction_round_number%type;
2183 l_amendment_number pon_auction_headers_all.amendment_number%TYPE;
2184 c_att_name pon_auc_attributes_interface.attribute_name%TYPE;
2185 c_line_num pon_auc_attributes_interface.auction_line_number%TYPE;
2186 c_seq_num pon_auc_attributes_interface.sequence_number%TYPE;
2187 c_seq_num2 pon_auc_attributes_interface.sequence_number%TYPE;
2188 l_scores_absent VARCHAR2(1) := 'N';
2189 l_precision NUMBER;
2190 l_ext_precision NUMBER;
2191 l_minAcctUnit NUMBER;
2192 l_status VARCHAR2(1);
2193 l_is_complex VARCHAR2(1);
2194 l_close_bidding_date pon_auction_headers_all.close_bidding_date%TYPE;
2195 l_po_start_date pon_auction_headers_all.po_start_date%TYPE;
2196 l_po_end_date pon_auction_headers_all.po_end_date%TYPE;
2197 l_price_break_response pon_auction_headers_all.price_break_response%TYPE;
2198 l_price_tiers_indicator pon_auction_headers_all.price_tiers_indicator%TYPE;
2199 --l_has_shipments VARCHAR2(1);
2200
2201 CURSOR c_attributes_with_scoring
2202 IS
2203 SELECT batch_id ,
2204 AUCTION_HEADER_ID ,
2205 auction_LINE_NUMBER,
2206 SEQUENCE_NUMBER ,
2207 SCORING_TYPE ,
2208 datatype ,
2209 ATTR_MAX_SCORE ,
2210 WEIGHT
2211 FROM PON_AUC_ATTRIBUTES_INTERFACE
2212 WHERE batch_id = p_batch_id
2213 AND NVL(SCORING_TYPE,'NONE') <> 'NONE'
2214 AND auction_LINE_NUMBER <> -1;
2215 CURSOR c_new_attributes
2216 IS
2217 SELECT paa_int.attribute_name att_name,
2218 paa_int.auction_line_number line_num ,
2219 paa_int.sequence_number
2220 FROM pon_auc_attributes_interface paa_int,
2221 pon_item_prices_interface p1
2222 WHERE paa_int.batch_id = p_batch_id
2223 AND p1.batch_id = paa_int.batch_id
2224 AND p1.action = g_update_action
2225 AND paa_int.auction_line_number = p1.auction_line_number
2226 AND paa_int.auction_LINE_NUMBER <> -1
2227 AND NOT EXISTS
2228 (SELECT 'x'
2229 FROM pon_auction_attributes auction_attributes
2230 WHERE paa_int.auction_header_id = auction_attributes.auction_header_id
2231 AND paa_int.auction_line_number = auction_attributes.line_number
2232 AND paa_int.attribute_name = auction_attributes.attribute_name
2233 )
2234 ORDER BY paa_int.auction_line_number,
2235 paa_int.sequence_number FOR UPDATE OF sequence_number ;
2236
2237 CURSOR line_cur IS
2238 SELECT interface_line_id,group_type
2239 FROM pon_item_prices_interface
2240 WHERE batch_id = p_batch_id
2241 FOR UPDATE OF disp_line_number,document_disp_line_number,
2242 sub_line_sequence_number,parent_line_number
2243 ORDER BY interface_line_id;
2244
2245 parent_seq NUMBER := 0;
2246 child_seq NUMBER := 0;
2247 parent_line NUMBER;
2248 is_child VARCHAR2(1);
2249 l_last_line_num NUMBER;
2250
2251 BEGIN
2252
2253 print_log('create_lines_with_children begin');
2254 SELECT doctype_id ,
2255 trading_partner_id ,
2256 trading_partner_contact_id ,
2257 contract_type ,
2258 NVL(GLOBAL_AGREEMENT_FLAG,'N') ,
2259 DECODE(NVL(progress_payment_type,'NONE'),'NONE','N','Y'),
2260 org_id ,
2261 currency_code ,
2262 NVL(auction_round_number,0) ,
2263 NVL(amendment_number,0),
2264 close_bidding_date,
2265 po_start_date,
2266 po_end_date,
2267 price_break_response,
2268 price_tiers_indicator
2269 INTO l_doctype_id ,
2270 l_trading_partner_id ,
2271 l_trading_partner_contact_id,
2272 l_contract_type ,
2273 l_global_flag ,
2274 L_is_complex ,
2275 l_org_id ,
2276 l_currency_code ,
2277 l_auction_round_number ,
2278 l_amendment_number ,
2279 l_close_bidding_date ,
2280 l_po_start_date ,
2281 l_po_end_date ,
2282 l_price_break_response ,
2283 l_price_tiers_indicator
2284 FROM pon_auction_headers_all
2285 WHERE auction_header_id = p_auction_header_id;
2286 --SELECT fnd_global.user_id INTO g_user_id FROM dual;
2287 SELECT fnd_global.login_id,
2288 fnd_global.CURRENT_LANGUAGE
2289 INTO g_login_id,
2290 g_curr_lang
2291 FROM dual;
2292
2293 g_user_id := fnd_global.user_id;
2294 /*select fnd_currency.GET_INFO(l_currency_code,l_precision,l_ext_precision,l_minAcctUnit)
2295 INTO l_price_precision FROM dual;*/
2296 fnd_currency.GET_INFO(l_currency_code,l_precision,l_ext_precision,l_minAcctUnit);
2297 print_log('create_lines_with_children: before calling line_level_validation');
2298
2299
2300 line_level_validation(
2301 p_batch_id,
2302 l_doctype_id ,
2303 l_trading_partner_id ,
2304 l_trading_partner_contact_id ,
2305 g_curr_lang ,
2306 l_contract_type ,
2307 l_global_flag ,
2308 l_org_id ,
2309 l_precision ,
2310 L_is_complex,
2311 x_return_status
2312 );
2313
2314 print_log('create_lines_with_children validations complete ');
2315 BEGIN
2316 SELECT 'N' status
2317 INTO l_status
2318 FROM dual
2319 WHERE EXISTS
2320 (SELECT * FROM pon_interface_errors WHERE BATCH_ID= p_batch_Id
2321 );
2322 EXCEPTION
2323 WHEN No_Data_Found THEN
2324 l_status:=NULL;
2325 END;
2326 IF(l_status='N') THEN
2327 print_log('An error occured while validating the line. please check the pon_interface_errors table for error information');
2328 x_return_status := FND_API.G_RET_STS_ERROR;
2329 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_LINES_VAL_ERR');
2330 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_id);
2331 FND_MSG_PUB.ADD;
2332 --RAISE FND_API.G_EXC_ERROR;
2333 RETURN;
2334 END IF;
2335 print_log('Validations of lines interface tables completed');
2336
2337 IF (l_auction_round_number > 0 OR l_amendment_number > 0) THEN
2338 print_log('create_lines_with_children this is an amendment');
2339 -- this has to be opened here because after SYNCH_FROM_INTERFACE is called,
2340 -- attributes will get inserted in txn table. Then we can't identify new attributes.
2341 OPEN c_new_attributes;
2342 FETCH c_new_attributes INTO c_att_name, c_line_num, c_seq_num;
2343 END IF;
2344
2345
2346 print_log('Updating internal line number ');
2347 FOR rec IN line_cur LOOP
2348
2349 IF ( PON_CLM_UTIL_PKG.IS_DOCUMENT_FEDERAL(neg_header_record_data.doctype_id) = 1 ) THEN
2350
2351 UPDATE pon_item_prices_interface
2352 SET disp_line_number = rec.interface_line_id,
2353 sub_line_sequence_number = rec.interface_line_id,
2354 document_disp_line_number = rec.interface_line_id
2355 WHERE CURRENT OF line_cur;
2356
2357 ELSE
2358 IF rec.group_type in ('LINE','LOT','GROUP') THEN
2359 parent_line := rec.interface_line_id;
2360 parent_seq := parent_seq + 1;
2361 child_seq := 0;
2362 is_child := 'N';
2363 ELSE
2364 is_child := 'Y';
2365 child_seq := child_seq + 1;
2366 END IF;
2367
2368 UPDATE pon_item_prices_interface t1
2369 SET disp_line_number = rec.interface_line_id,
2370 sub_line_sequence_number = Decode (is_child,'N',parent_seq,child_seq),
2371 document_disp_line_number = Decode (is_child,'N',parent_seq,parent_seq || '.' || child_seq),
2372 parent_line_number=Decode(is_child,'Y',parent_line)
2373 WHERE CURRENT OF line_cur;
2374 END IF;
2375
2376 END LOOP;
2377
2378 --g_module_prefix := g_module_prefix || 'create_lines_with_children';
2379 --print_log('Entered create_lines_with_children procedure');
2380 print_log('create_lines_with_children before calling PON_CP_INTRFAC_TO_TRANSACTION.SYNCH_FROM_INTERFACE');
2381 /*
2382 This api will have code for both adding and updating(amendments/new rounds) lines and its children like
2383 attributes, cost factors etc. While updating any line, it is expected to insert all children data
2384 in respective interface tables. The children that are missing from previous amendments
2385 are assumed as to-be-deleted children and will be deleted from main txn tables.
2386 */
2387 PON_CP_INTRFAC_TO_TRANSACTION.SYNCH_FROM_INTERFACE(p_batch_id,
2388 p_auction_header_id,
2389 g_user_id,
2390 l_trading_partner_id,
2391 'N',
2392 x_number_of_lines,
2393 x_max_disp_line,
2394 x_last_line_close_date,
2395 x_result,
2396 x_error_code,
2397 x_error_message
2398 );
2399 print_log('create_lines_with_children returned from PON_CP_INTRFAC_TO_TRANSACTION.SYNCH_FROM_INTERFACE with x_error_message '|| x_error_message);
2400 IF (x_error_message <> 'S') THEN
2401 x_return_status := FND_API.G_RET_STS_ERROR;
2402 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_CREATE_LINES_ERR');
2403 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_id);
2404 FND_MSG_PUB.ADD;
2405 RETURN;
2406 END IF;
2407
2408 SELECT Max(document_disp_line_number) INTO l_last_line_num
2409 FROM pon_auction_item_prices_all
2410 WHERE auction_header_id = p_auction_header_id
2411 AND parent_line_number IS NULL;
2412
2413 UPDATE pon_auction_headers_all pah
2414 SET (MAX_INTERNAL_LINE_NUM,
2415 NUMBER_OF_LINES,
2416 last_line_number) = (SELECT Max(line_number), Count(line_number),l_last_line_num
2417 FROM pon_auction_item_prices_all paip
2418 WHERE paip.auction_header_id = p_auction_header_id)
2419 WHERE auction_header_id = p_auction_header_id;
2420
2421
2422
2423
2424 print_log('CP 0001');
2425 /*
2426 this loop will be used for amendments. Because for amendments
2427 PON_CP_INTRFAC_TO_TRANSACTION.SYNCH_FROM_INTERFACE will calculate the attribute sequence number
2428 for new attributes instead of taking value from interface tables.
2429 so we will have to update interface tables with new sequence number
2430 */
2431 IF (l_auction_round_number > 0 OR l_amendment_number > 0) THEN
2432 LOOP
2433 EXIT WHEN c_new_attributes%NOTFOUND;
2434
2435 BEGIN
2436 SELECT sequence_number
2437 INTO c_seq_num2
2438 FROM pon_auction_attributes
2439 WHERE auction_header_id = p_auction_HEAder_id
2440 AND line_number = c_line_num
2441 AND attribute_name = c_att_name;
2442 UPDATE pon_auc_attributes_interface
2443 SET sequence_number = c_seq_num2
2444 WHERE CURRENT OF c_new_attributes;
2445 UPDATE pon_attribute_scores_interface
2446 SET attribute_sequence_number = c_seq_num2
2447 WHERE batch_id = p_batch_id
2448 AND auction_header_id = p_auction_header_id
2449 AND line_number = c_line_num
2450 AND attribute_sequence_number = c_seq_num;
2451
2452 EXCEPTION
2453 WHEN No_Data_Found THEN
2454 NULL;
2455 END;
2456
2457 FETCH c_new_attributes INTO c_att_name, c_line_num, c_seq_num;
2458 END LOOP;
2459 CLOSE c_new_attributes;
2460 END IF;
2461
2462 print_log('create_lines_with_children validation scores');
2463
2464 -- Insert scores for attributes
2465 /* PON_CP_INTRFAC_TO_TRANSACTION.SYNCH_FROM_INTERFACE api would have already inserted attributes
2466 But scores are not yet inserted. Also the above api inserts zero for weight and scores
2467 in attributes table. This needs to be corrected
2468 */
2469 VAL_ATTR_SCORES(
2470 p_auction_header_id,
2471 NULL,
2472 NULL,
2473 g_user_id,
2474 g_login_id,
2475 p_batch_id
2476 );
2477 BEGIN
2478 SELECT 'N' status
2479 INTO l_status
2480 FROM dual
2481 WHERE EXISTS
2482 (SELECT * FROM pon_interface_errors WHERE BATCH_ID=p_batch_Id
2483 );
2484 EXCEPTION
2485 WHEN No_Data_Found THEN
2486 l_status:=NULL;
2487 END;
2488 IF(l_status='N') THEN
2489 print_log('Errors found in validation of scores for line level attributes.' ||
2490 ' please check the pon_interface_errors table for error information');
2491 x_return_status := FND_API.G_RET_STS_ERROR;
2492 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_ATTRSCORES_VAL_ERR');
2493 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_id);
2494 FND_MSG_PUB.ADD;
2495 RETURN;
2496 END IF;
2497
2498 print_log('END Validating the data in scores interface table');
2499 FOR c_scored_atts_rec IN c_attributes_with_scoring
2500 LOOP
2501 UPDATE pon_auction_attributes paa
2502 SET paa.SCORING_TYPE = c_scored_atts_rec.scoring_type,
2503 paa.WEIGHT = c_scored_atts_rec.WEIGHT ,
2504 paa.ATTR_MAX_SCORE = c_scored_atts_rec.ATTR_MAX_SCORE
2505 WHERE paa.auction_header_id = c_scored_atts_rec.auction_header_id
2506 AND paa.line_number = c_scored_atts_rec.auction_line_number
2507 AND paa.sequence_number = c_scored_atts_rec.sequence_number;
2508 INSERT
2509 INTO pon_attribute_scores
2510 (
2511 AUCTION_HEADER_ID ,
2512 LINE_NUMBER ,
2513 ATTRIBUTE_SEQUENCE_NUMBER,
2514 VALUE ,
2515 FROM_RANGE ,
2516 TO_RANGE ,
2517 SCORE ,
2518 ATTRIBUTE_LIST_ID ,
2519 SEQUENCE_NUMBER ,
2520 CREATION_DATE ,
2521 CREATED_BY ,
2522 LAST_UPDATE_DATE ,
2523 LAST_UPDATED_BY
2524 )
2525 SELECT p_auction_Header_id ,
2526 pasi.line_number ,
2527 pasi.attribute_sequence_number ,
2528 DECODE(c_scored_atts_rec.datatype,'TXT',pasi.Value,NULL) ,
2529 DECODE(c_scored_atts_rec.datatype,'DAT',pasi.FROM_RANGE,'NUM',pasi.FROM_range,NULL),
2530 DECODE(c_scored_atts_rec.datatype,'DAT',pasi.TO_RANGE,'NUM',pasi.TO_RANGE,NULL) ,
2531 pasi.score ,
2532 -1 ,
2533 pasi.sequence_number ,
2534 SYSDATE ,
2535 g_user_id ,
2536 SYSDATE ,
2537 g_user_id
2538 FROM pon_attribute_scores_interface pasi
2539 WHERE pasi.batch_id = p_batch_id
2540 AND pasi.auction_header_id = p_auction_Header_id
2541 AND NVL(pasi.line_number,-1) <> -1
2542 AND pasi.line_number = c_scored_atts_rec.auction_line_number
2543 AND pasi.attribute_sequence_number = c_scored_atts_rec.sequence_number;
2544 END LOOP;
2545
2546 IF(NVL(L_is_complex,'N') = 'Y') THEN
2547
2548 UPDATE pon_auc_payments_interface papi
2549 SET papi.auction_Header_id = p_auction_header_id
2550 WHERE papi.batcH_id = p_batch_id;
2551
2552 PON_CP_INTRFAC_TO_TRANSACTION.SYNCH_PAYMENTS_FROM_INTERFACE(
2553 p_batch_id,
2554 p_auction_header_id,
2555 x_result,
2556 x_error_code,
2557 x_error_message
2558 );
2559 END IF;
2560 IF ( l_price_tiers_indicator = 'QUANTITY_BASED' or l_price_break_response <> 'NONE' ) THEN
2561 VAL_PRICE_BREAKS ( p_auction_header_id ,
2562 l_close_bidding_date, --close date
2563 NULL, --p_request_id
2564 NULL, --p_expiration_date
2565 g_user_id,
2566 g_login_id,
2567 p_batch_id ,
2568 NULL, --p_precision
2569 l_po_start_date, --p_po_start_date
2570 l_po_end_date --p_po_end_date
2571 );
2572 BEGIN
2573 SELECT 'N' status
2574 INTO l_status
2575 FROM dual
2576 WHERE EXISTS
2577 (SELECT * FROM pon_interface_errors WHERE BATCH_ID=p_batch_Id
2578 );
2579 EXCEPTION
2580 WHEN No_Data_Found THEN
2581 l_status:=NULL;
2582 END;
2583 IF(l_status='N') THEN
2584 print_log('An error occured while validating the price breaks. please check the pon_interface_errors table for error information');
2585 x_return_status := FND_API.G_RET_STS_ERROR;
2586 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_PB_VAL_ERR');
2587 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_id);
2588 FND_MSG_PUB.ADD;
2589 RETURN;
2590 END IF;
2591
2592 add_price_breaks(
2593 p_batch_id,
2594 p_auction_header_id,
2595 x_result,
2596 x_error_code,
2597 x_error_message
2598 );
2599 IF(x_result='E') THEN
2600 print_log('Error in add_price_breaks.' || SQLERRM );
2601 x_return_status := FND_API.G_RET_STS_ERROR;
2602 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_PB_ERR');
2603 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_id);
2604 FND_MSG_PUB.ADD;
2605 RETURN;
2606 END IF;
2607 END IF; -- price_break_response <> 'NONE'
2608
2609 PON_NEGOTIATION_PUBLISH_PVT.SET_ITEM_HAS_CHILDREN_FLAGS (
2610 p_auction_header_id => p_auction_header_id,
2611 p_close_bidding_date => NULL
2612 );
2613
2614 EXCEPTION
2615 WHEN OTHERS THEN
2616 print_log('exception increate_lines_with_children: sqlcode ' || SQLCODE || ' sqlerrm ' || SQLERRM );
2617 x_return_status := FND_API.G_RET_STS_ERROR;
2618 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_CREATE_LINES_ERR');
2619 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_id);
2620 FND_MSG_PUB.ADD;
2621 END create_lines_with_children;
2622
2623
2624 /*
2625 This procedure will add price breaks from interface table to txn table.
2626 For all lines marked with '+' action in lines interface table,
2627 the price breaks for those lines will be picked and inserted into pon_auction_shipments_all table.
2628 For amendments, all the existing price breaks will be deleted from pon_auction_shipments_all table
2629 for those lines marked with '#' action in lines interface table.
2630 Then only those price breaks given in interface tables will be added.
2631 Also this procedure inserts data from price differentials interface table
2632 to main txn table for price breaks with price differentials.
2633 */
2634 PROCEDURE add_price_breaks
2635 (
2636 p_batch_id IN NUMBER ,
2637 p_auction_header_id IN NUMBER,
2638 x_result IN OUT NOCOPY VARCHAR2,
2639 x_error_code OUT NOCOPY VARCHAR2,
2640 x_error_message OUT NOCOPY VARCHAR2 )
2641 AS
2642 TYPE numbers IS TABLE OF NUMBER;
2643 l_shipment_number numbers;
2644 l_line_number numbers;
2645 l_price_tiers_indicator pon_auction_headers_all.price_tiers_indicator%TYPE;
2646 /*CURSOR price_break_with_pd_cur IS
2647 SELECT auction_header_id, auction_line_number, shipment_number
2648 FROM pon_auc_price_breaks_interface ppbi
2649 WHERE ppbi.batch_id = p_batch_id
2650 AND Nvl(HAS_PRICE_DIFFERENTIALS_FLAG,'N') = 'Y'
2651 */
2652 BEGIN
2653 -- for amendments
2654 /*
2655 we will delete price break information in txn tables for lines which are
2656 being updated in this amendment.
2657 later we will insert only price breaks given in interface tables.
2658 */
2659 print_log(' Entering add_price_breaks ');
2660 SELECT price_tiers_indicator INTO l_price_tiers_indicator
2661 FROM pon_auction_headers_all
2662 WHERE auction_header_id = p_auction_header_id;
2663 BEGIN
2664 SELECT shipment_number,
2665 line_number bulk collect
2666 INTO l_shipment_number,
2667 l_line_number
2668 FROM pon_auction_shipments_all auction_shipments,
2669 pon_item_prices_interface line_interface
2670 WHERE line_interface.action = g_update_action
2671 AND line_interface.batch_id = p_batch_id
2672 AND line_interface.auction_header_id = p_auction_header_id
2673 AND auction_shipments.auction_header_id = line_interface.auction_header_id
2674 AND auction_shipments.line_number = line_interface.auction_line_number;
2675
2676 FORALL x IN 1..l_line_number.COUNT
2677 DELETE
2678 FROM PON_PRICE_DIFFERENTIALS price_diffs
2679 WHERE price_diffs.auction_header_id = p_auction_header_id
2680 AND price_diffs.line_number = l_line_number(x)
2681 AND price_diffs.shipment_number = l_shipment_number(x);
2682
2683 FORALL x IN 1..l_line_number.COUNT
2684 DELETE
2685 FROM pon_auction_shipments_all auction_shipments
2686 WHERE auction_shipments.auction_header_id = p_auction_header_id
2687 AND auction_shipments.line_number = l_line_number(x)
2688 AND auction_shipments.shipment_number = l_shipment_number(x);
2689 EXCEPTION
2690 WHEN OTHERS THEN
2691 NULL;
2692 END; -- end of amendments specific code
2693 INSERT
2694 INTO pon_auction_shipments_all
2695 (
2696 auction_header_id ,
2697 line_number ,
2698 shipment_number ,
2699 shipment_type ,
2700 ship_to_organization_id ,
2701 ship_to_location_id ,
2702 quantity ,
2703 price ,
2704 effective_start_date ,
2705 effective_end_date ,
2706 org_id ,
2707 CREATION_DATE ,
2708 CREATED_BY ,
2709 LAST_UPDATE_DATE ,
2710 LAST_UPDATED_BY ,
2711 LAST_UPDATE_LOGIN ,
2712 has_price_differentials_flag,
2713 DIFFERENTIAL_RESPONSE_TYPE ,
2714 MAX_QUANTITY
2715 )
2716 SELECT ppbi.auction_header_id ,
2717 ppbi.auction_line_number ,
2718 ppbi.shipment_number ,
2719 decode(l_price_tiers_indicator,'QUANTITY_BASED', 'QUANTITY BASED','PRICE_BREAK','PRICE BREAK'),
2720 ppbi.ship_to_organization_id ,
2721 ppbi.ship_to_location_id ,
2722 ppbi.quantity ,
2723 ppbi.price ,
2724 ppbi.effective_start_date ,
2725 ppbi.effective_end_date ,
2726 ppbi.org_id ,
2727 sysdate ,
2728 fnd_global.USER_id ,
2729 sysdate ,
2730 fnd_global.USER_id ,
2731 fnd_global.login_id ,
2732 Nvl(ppbi.HAS_PRICE_DIFFERENTIALS_FLAG,'N'),
2733 ppbi.DIFFERENTIAL_RESPONSE_TYPE ,
2734 ppbi.MAX_QUANTITY
2735 FROM pon_auc_price_breaks_interface ppbi,
2736 pon_item_prices_interface pipi
2737 WHERE ppbi.batch_id = p_batch_id
2738 AND ppbi.batch_id = pipi.batch_id
2739 AND ppbi.auction_line_number = pipi.auction_line_number
2740 AND Nvl(pipi.action,g_add_action) IN (g_add_action,g_update_action);
2741
2742 print_Log(' inserted price breaks ');
2743 INSERT
2744 INTO PON_PRICE_DIFFERENTIALS fields
2745 (
2746 AUCTION_HEADER_ID ,
2747 LINE_NUMBER ,
2748 SHIPMENT_NUMBER ,
2749 PRICE_DIFFERENTIAL_NUMBER,
2750 PRICE_TYPE ,
2751 MULTIPLIER ,
2752 CREATION_DATE ,
2753 CREATED_BY ,
2754 LAST_UPDATE_DATE ,
2755 LAST_UPDATED_BY ,
2756 LAST_UPDATE_LOGIN
2757 )
2758 SELECT pdf_int.AUCTION_HEADER_ID,
2759 pdf_int.AUCTION_LINE_NUMBER ,
2760 pdf_int.auction_shipment_number,
2761 pdf_int.SEQUENCE_NUMBER ,
2762 pdf_int.PRICE_TYPE ,
2763 pdf_int.MULTIPLIER ,
2764 sysdate ,
2765 fnd_global.USER_id ,
2766 sysdate ,
2767 fnd_global.USER_id ,
2768 fnd_global.login_id
2769 FROM pon_auc_price_differ_int pdf_int,
2770 pon_auc_price_breaks_interface ppb_int
2771 WHERE pdf_int.batch_id = p_batch_id
2772 AND NVL(ppb_int.HAS_PRICE_DIFFERENTIALS_FLAG,'N') = 'Y'
2773 AND pdf_int.batch_id = ppb_int.batch_id
2774 AND pdf_int.auction_line_number = ppb_int.auction_line_number
2775 AND pdf_int.auction_shipment_number = ppb_int.shipment_number
2776 AND pdf_int.auction_shipment_Number <> -1
2777 AND pdf_int.auction_shipment_number IS NOT null;
2778
2779 EXCEPTION
2780 WHEN OTHERS THEN
2781 print_log('error in add_price_breaks' || SQLCODE || SQLERRM );
2782 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_PB_ERR');
2783 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_id);
2784 FND_MSG_PUB.ADD;
2785 x_result := 'E';
2786 END ADD_price_breaks;
2787
2788 PROCEDURE VAL_PRICE_BREAKS
2789 (
2790 p_auction_header_id IN NUMBER,
2791 p_close_bidding_date IN DATE,
2792 p_request_id IN NUMBER,
2793 p_expiration_date IN DATE,
2794 p_user_id IN NUMBER,
2795 p_login_id IN NUMBER,
2796 p_batch_id IN NUMBER,
2797 p_precision IN NUMBER,
2798 p_po_start_date IN DATE,
2799 p_po_end_date IN DATE )
2800 IS
2801 -- PRAGMA AUTONOMOUS_TRANSACTION;
2802 --l_temp NUMBER;
2803 BEGIN
2804
2805 UPDATE pon_auc_price_breaks_interface pb_int
2806 SET org_id =
2807 (SELECT ORG_ID
2808 FROM pon_auction_headers_all
2809 WHERE auction_header_id = pb_int.auction_header_id
2810 )
2811 WHERE batch_id = p_batch_id;
2812
2813 UPDATE pon_auc_price_breaks_interface pb_int
2814 SET SHIP_TO_ORGANIZATION_ID =
2815 (SELECT ORGANIZATION_ID
2816 FROM hr_all_organization_units
2817 WHERE name = pb_int.SHIP_TO_ORGANIZATION
2818 )
2819 WHERE batch_id = p_batch_id
2820 AND SHIP_TO_ORGANIZATION IS NOT NULL;
2821
2822 UPDATE pon_auc_price_breaks_interface pb_int
2823 SET ship_to_location_id =
2824 (SELECT MAX(location_id)
2825 FROM po_ship_to_loc_org_v po_v
2826 WHERE po_v.location_code = pb_int.ship_to_location
2827 )
2828 WHERE batch_id = p_batch_id
2829 AND ship_to_location IS NOT null;
2830
2831 INSERT ALL
2832 -- PRICE BREAK EFFECTIVE START DATE SHOULD BE BEFORE EFFECTIVE END DATE
2833 WHEN ( sel_effective_start_date IS NOT NULL
2834 AND sel_effective_end_date IS NOT NULL
2835 AND sel_effective_end_date < sel_effective_start_date ) THEN
2836 INTO PON_INTERFACE_ERRORS
2837 (
2838 INTERFACE_TYPE ,
2839 ERROR_MESSAGE_NAME,
2840 REQUEST_ID ,
2841 BATCH_ID ,
2842 ENTITY_TYPE ,
2843 AUCTION_HEADER_ID ,
2844 LINE_NUMBER ,
2845 SHIPMENT_NUMBER ,
2846 EXPIRATION_DATE ,
2847 TOKEN1_NAME ,
2848 TOKEN1_VALUE ,
2849 CREATED_BY ,
2850 CREATION_DATE ,
2851 LAST_UPDATED_BY ,
2852 LAST_UPDATE_DATE ,
2853 LAST_UPDATE_LOGIN
2854 )
2855 VALUES
2856 (
2857 g_interface_type , --INTERFACE_TYPE
2858 'PON_AUCTS_EFFC_END_BEF_START', -- ERROR_MESSAGE_NAME
2859 p_request_id , -- REQUEST_ID
2860 p_batch_id , --BATCH_ID
2861 g_auction_pbs_type , -- ENTITY_TYPE
2862 p_auction_header_id , -- AUCTION_HEADER_ID
2863 sel_line_number , -- LINE_NUMBER
2864 sel_shipment_number , -- SHIPMENT_NUMBER
2865 p_expiration_date , -- EXPIRATION_DATE
2866 'LINENUM' , -- TOKEN1_NAME
2867 sel_document_disp_line_number , -- TOKEN1_VALUE
2868 p_user_id , -- CREATED_BY
2869 sysdate , -- CREATION_DATE
2870 p_user_id , -- LAST_UPDATED_BY
2871 sysdate , -- LAST_UPDATE_DATE
2872 p_login_id -- LAST_UPDATE_LOGIN
2873 )
2874 -- SHIP TO LOCATON AND SHIP TO ORG SHOULD BE PROPER
2875 -- THE SHIP_TO_LOCATION AND SHIP_TO_ORG IF BOTH ARE ENTERED THEN EITHER
2876 -- 1. The Ship_to_location should belong to the Ship_to_organization
2877 -- 2. The Ship_to_location should be a global location (inventory_organization_id is null)
2878 WHEN ( sel_ship_to_organization_id IS NOT NULL
2879 AND sel_ship_to_location_id IS NOT NULL
2880 AND NOT EXISTS
2881 (SELECT l.INVENTORY_ORGANIZATION_ID
2882 FROM HR_LOCATIONS_ALL L
2883 WHERE SYSDATE < NVL(L.INACTIVE_DATE, SYSDATE + 1)
2884 AND NVL(L.SHIP_TO_SITE_FLAG,'N') = 'Y'
2885 AND L.LOCATION_ID = sel_ship_to_location_id
2886 AND NVL (L.INVENTORY_ORGANIZATION_ID, sel_ship_to_organization_id) = sel_ship_to_organization_id
2887 ) ) THEN
2888 INTO PON_INTERFACE_ERRORS
2889 (
2890 INTERFACE_TYPE ,
2891 ERROR_MESSAGE_NAME,
2892 REQUEST_ID ,
2893 BATCH_ID ,
2894 ENTITY_TYPE ,
2895 AUCTION_HEADER_ID ,
2896 LINE_NUMBER ,
2897 SHIPMENT_NUMBER ,
2898 EXPIRATION_DATE ,
2899 TOKEN1_NAME ,
2900 TOKEN1_VALUE ,
2901 CREATED_BY ,
2902 CREATION_DATE ,
2903 LAST_UPDATED_BY ,
2904 LAST_UPDATE_DATE ,
2905 LAST_UPDATE_LOGIN
2906 )
2907 VALUES
2908 (
2909 g_interface_type , --INTERFACE_TYPE
2910 'PON_AUC_SHIP_TO_MATCHING_ERR', -- ERROR_MESSAGE_NAME
2911 p_request_id , -- REQUEST_ID
2912 p_batch_id , --BATCH_ID
2913 g_auction_pbs_type , -- ENTITY_TYPE
2914 p_auction_header_id , -- AUCTION_HEADER_ID
2915 sel_line_number , -- LINE_NUMBER
2916 sel_shipment_number , -- SHIPMENT_NUMBER
2917 p_expiration_date , -- EXPIRATION_DATE
2918 'LINENUM' , -- TOKEN1_NAME
2919 sel_document_disp_line_number , -- TOKEN1_VALUE
2920 p_user_id , -- CREATED_BY
2921 sysdate , -- CREATION_DATE
2922 p_user_id , -- LAST_UPDATED_BY
2923 sysdate , -- LAST_UPDATE_DATE
2924 p_login_id -- LAST_UPDATE_LOGIN
2925 )
2926 -- PRICE BREAK SHOULD NOT BE EMPTY
2927 -- ONLY PRICE SHOULD NOT BE ENTERED
2928 WHEN ( sel_ship_to_organization_id IS NULL
2929 AND sel_ship_to_location_id IS NULL
2930 AND sel_effective_start_date IS NULL
2931 AND sel_effective_end_date IS NULL
2932 AND sel_quantity IS NULL ) THEN
2933 INTO PON_INTERFACE_ERRORS
2934 (
2935 INTERFACE_TYPE ,
2936 ERROR_MESSAGE_NAME,
2937 REQUEST_ID ,
2938 BATCH_ID ,
2939 ENTITY_TYPE ,
2940 AUCTION_HEADER_ID ,
2941 LINE_NUMBER ,
2942 SHIPMENT_NUMBER ,
2943 EXPIRATION_DATE ,
2944 TOKEN1_NAME ,
2945 TOKEN1_VALUE ,
2946 CREATED_BY ,
2947 CREATION_DATE ,
2948 LAST_UPDATED_BY ,
2949 LAST_UPDATE_DATE ,
2950 LAST_UPDATE_LOGIN
2951 )
2952 VALUES
2953 (
2954 g_interface_type , --INTERFACE_TYPE
2955 NVL2 (sel_price, 'PON_AUCTS_PB_PRICE_ONLY', 'PON_AUCTS_SHIPMENT_EMPTY'), -- ERROR_MESSAGE_NAME
2956 p_request_id , -- REQUEST_ID
2957 p_batch_id , --BATCH_ID
2958 g_auction_pbs_type , -- ENTITY_TYPE
2959 p_auction_header_id , -- AUCTION_HEADER_ID
2960 sel_line_number , -- LINE_NUMBER
2961 sel_shipment_number , -- SHIPMENT_NUMBER
2962 p_expiration_date , -- EXPIRATION_DATE
2963 'LINENUM' , -- TOKEN1_NAME
2964 sel_document_disp_line_number , -- TOKEN1_VALUE
2965 p_user_id , -- CREATED_BY
2966 sysdate , -- CREATION_DATE
2967 p_user_id , -- LAST_UPDATED_BY
2968 sysdate , -- LAST_UPDATE_DATE
2969 p_login_id -- LAST_UPDATE_LOGIN
2970 )
2971 -- quantity should not be empty or negative
2972 WHEN ( sel_quantity IS NOT NULL
2973 AND sel_quantity < 0
2974 AND sel_quantity <> g_null_int ) THEN
2975 INTO PON_INTERFACE_ERRORS
2976 (
2977 INTERFACE_TYPE ,
2978 ERROR_MESSAGE_NAME,
2979 REQUEST_ID ,
2980 BATCH_ID ,
2981 ENTITY_TYPE ,
2982 AUCTION_HEADER_ID ,
2983 LINE_NUMBER ,
2984 SHIPMENT_NUMBER ,
2985 EXPIRATION_DATE ,
2986 TOKEN1_NAME ,
2987 TOKEN1_VALUE ,
2988 CREATED_BY ,
2989 CREATION_DATE ,
2990 LAST_UPDATED_BY ,
2991 LAST_UPDATE_DATE ,
2992 LAST_UPDATE_LOGIN
2993 )
2994 VALUES
2995 (
2996 g_interface_type , --INTERFACE_TYPE
2997 'PON_AUCTS_PB_QUANTITY_POSITIVE', -- ERROR_MESSAGE_NAME
2998 p_request_id , -- REQUEST_ID
2999 p_batch_id , --BATCH_ID
3000 g_auction_pbs_type , -- ENTITY_TYPE
3001 p_auction_header_id , -- AUCTION_HEADER_ID
3002 sel_line_number , -- LINE_NUMBER
3003 sel_shipment_number , -- SHIPMENT_NUMBER
3004 p_expiration_date , -- EXPIRATION_DATE
3005 'LINENUM' , -- TOKEN1_NAME
3006 sel_document_disp_line_number , -- TOKEN1_VALUE
3007 p_user_id , -- CREATED_BY
3008 sysdate , -- CREATION_DATE
3009 p_user_id , -- LAST_UPDATED_BY
3010 sysdate , -- LAST_UPDATE_DATE
3011 p_login_id -- LAST_UPDATE_LOGIN
3012 )
3013 -- the price break price should be positive
3014 WHEN ( sel_price < 0 ) THEN
3015 INTO PON_INTERFACE_ERRORS
3016 (
3017 INTERFACE_TYPE ,
3018 ERROR_MESSAGE_NAME,
3019 REQUEST_ID ,
3020 BATCH_ID ,
3021 ENTITY_TYPE ,
3022 AUCTION_HEADER_ID ,
3023 LINE_NUMBER ,
3024 SHIPMENT_NUMBER ,
3025 EXPIRATION_DATE ,
3026 TOKEN1_NAME ,
3027 TOKEN1_VALUE ,
3028 CREATED_BY ,
3029 CREATION_DATE ,
3030 LAST_UPDATED_BY ,
3031 LAST_UPDATE_DATE ,
3032 LAST_UPDATE_LOGIN
3033 )
3034 VALUES
3035 (
3036 g_interface_type , --INTERFACE_TYPE
3037 'PON_AUCTS_PB_RPICE_POSITIVE', -- ERROR_MESSAGE_NAME
3038 p_request_id , -- REQUEST_ID
3039 p_batch_id , --BATCH_ID
3040 g_auction_pbs_type , -- ENTITY_TYPE
3041 p_auction_header_id , -- AUCTION_HEADER_ID
3042 sel_line_number , -- LINE_NUMBER
3043 sel_shipment_number , -- SHIPMENT_NUMBER
3044 p_expiration_date , -- EXPIRATION_DATE
3045 'LINENUM' , -- TOKEN1_NAME
3046 sel_document_disp_line_number, -- TOKEN1_VALUE
3047 p_user_id , -- CREATED_BY
3048 sysdate , -- CREATION_DATE
3049 p_user_id , -- LAST_UPDATED_BY
3050 sysdate , -- LAST_UPDATE_DATE
3051 p_login_id -- LAST_UPDATE_LOGIN
3052 )
3053 -- EFFECTIVE START DATE AFTER SYSDATE OR CLOSE DATE
3054 WHEN ( sel_effective_start_date IS NOT NULL
3055 AND sel_effective_start_date <= NVL (p_close_bidding_date, SYSDATE) ) THEN
3056 INTO PON_INTERFACE_ERRORS
3057 (
3058 INTERFACE_TYPE ,
3059 ERROR_MESSAGE_NAME,
3060 REQUEST_ID ,
3061 BATCH_ID ,
3062 ENTITY_TYPE ,
3063 AUCTION_HEADER_ID ,
3064 LINE_NUMBER ,
3065 SHIPMENT_NUMBER ,
3066 EXPIRATION_DATE ,
3067 TOKEN1_NAME ,
3068 TOKEN1_VALUE ,
3069 CREATED_BY ,
3070 CREATION_DATE ,
3071 LAST_UPDATED_BY ,
3072 LAST_UPDATE_DATE ,
3073 LAST_UPDATE_LOGIN
3074 )
3075 VALUES
3076 (
3077 g_interface_type , --INTERFACE_TYPE
3078 NVL2 (p_close_bidding_date, 'PON_AUC_EFFC_FROM_BEF_CLOSE', 'PON_AUC_EFFC_FROM_BEF_TODAY'), -- ERROR_MESSAGE_NAME
3079 p_request_id , -- REQUEST_ID
3080 p_batch_id , -- BATCH_ID
3081 g_auction_pbs_type , -- ENTITY_TYPE
3082 p_auction_header_id , -- AUCTION_HEADER_ID
3083 sel_line_number , -- LINE_NUMBER
3084 sel_shipment_number , -- SHIPMENT_NUMBER
3085 p_expiration_date , -- EXPIRATION_DATE
3086 'LINENUM' , -- TOKEN1_NAME
3087 sel_document_disp_line_number , -- TOKEN1_VALUE
3088 p_user_id , -- CREATED_BY
3089 sysdate , -- CREATION_DATE
3090 p_user_id , -- LAST_UPDATED_BY
3091 sysdate , -- LAST_UPDATE_DATE
3092 p_login_id -- LAST_UPDATE_LOGIN
3093 )
3094 -- EFFECTIVE END DATE AFTER SYSDATE OR CLOSE DATE
3095 WHEN ( sel_effective_end_date IS NOT NULL
3096 AND sel_effective_end_date <= NVL (p_close_bidding_date, SYSDATE) ) THEN
3097 INTO PON_INTERFACE_ERRORS
3098 (
3099 INTERFACE_TYPE ,
3100 ERROR_MESSAGE_NAME,
3101 REQUEST_ID ,
3102 BATCH_ID ,
3103 ENTITY_TYPE ,
3104 AUCTION_HEADER_ID ,
3105 LINE_NUMBER ,
3106 SHIPMENT_NUMBER ,
3107 EXPIRATION_DATE ,
3108 TOKEN1_NAME ,
3109 TOKEN1_VALUE ,
3110 CREATED_BY ,
3111 CREATION_DATE ,
3112 LAST_UPDATED_BY ,
3113 LAST_UPDATE_DATE ,
3114 LAST_UPDATE_LOGIN
3115 )
3116 VALUES
3117 (
3118 g_interface_type , --INTERFACE_TYPE
3119 NVL2 (p_close_bidding_date, 'PON_AUC_EFFC_TO_BEFORE_CLOSE', 'PON_AUC_EFFC_TO_BEFORE_TODAY'), -- ERROR_MESSAGE_NAME
3120 p_request_id , -- REQUEST_ID
3121 p_batch_id , --BATCH_ID
3122 g_auction_pbs_type , -- ENTITY_TYPE
3123 p_auction_header_id , -- AUCTION_HEADER_ID
3124 sel_line_number , -- LINE_NUMBER
3125 sel_shipment_number , -- SHIPMENT_NUMBER
3126 p_expiration_date , -- EXPIRATION_DATE
3127 'LINENUM' , -- TOKEN1_NAME
3128 sel_document_disp_line_number , -- TOKEN1_VALUE
3129 p_user_id , -- CREATED_BY
3130 sysdate , -- CREATION_DATE
3131 p_user_id , -- LAST_UPDATED_BY
3132 sysdate , -- LAST_UPDATE_DATE
3133 p_login_id -- LAST_UPDATE_LOGIN
3134 )
3135 -- RESPONSE TYPE if entered should have price differentials
3136 WHEN ( sel_differential_response_type IS NOT NULL
3137 AND NOT EXISTS
3138 (SELECT 1
3139 FROM pon_auc_price_differ_int PPD
3140 WHERE ppd.batch_id = p_batch_id
3141 AND PPD.AUCTION_HEADER_ID = p_auction_header_id
3142 AND PPD.auction_LINE_NUMBER = sel_line_number
3143 AND PPD.auction_SHIPMENT_NUMBER = sel_shipment_number
3144 ) ) THEN
3145 INTO PON_INTERFACE_ERRORS
3146 (
3147 INTERFACE_TYPE ,
3148 ERROR_MESSAGE_NAME,
3149 REQUEST_ID ,
3150 BATCH_ID ,
3151 ENTITY_TYPE ,
3152 AUCTION_HEADER_ID ,
3153 LINE_NUMBER ,
3154 SHIPMENT_NUMBER ,
3155 EXPIRATION_DATE ,
3156 TOKEN1_NAME ,
3157 TOKEN1_VALUE ,
3158 CREATED_BY ,
3159 CREATION_DATE ,
3160 LAST_UPDATED_BY ,
3161 LAST_UPDATE_DATE ,
3162 LAST_UPDATE_LOGIN
3163 )
3164 VALUES
3165 (
3166 g_interface_type , --INTERFACE_TYPE
3167 'PON_PRICEDIFF_REQD_FOR_SHIP', -- ERROR_MESSAGE_NAME
3168 p_request_id , -- REQUEST_ID
3169 p_batch_id , --BATCH_ID
3170 g_auction_pbs_type , -- ENTITY_TYPE
3171 p_auction_header_id , -- AUCTION_HEADER_ID
3172 sel_line_number , -- LINE_NUMBER
3173 sel_shipment_number , -- SHIPMENT_NUMBER
3174 p_expiration_date , -- EXPIRATION_DATE
3175 'LINENUM' , -- TOKEN1_NAME
3176 sel_document_disp_line_number, -- TOKEN1_VALUE
3177 p_user_id , -- CREATED_BY
3178 sysdate , -- CREATION_DATE
3179 p_user_id , -- LAST_UPDATED_BY
3180 sysdate , -- LAST_UPDATE_DATE
3181 p_login_id -- LAST_UPDATE_LOGIN
3182 )
3183 WHEN ( p_po_start_date IS NOT NULL
3184 AND sel_effective_start_date IS NOT NULL
3185 AND sel_effective_start_date < p_po_start_date ) THEN
3186 INTO PON_INTERFACE_ERRORS
3187 (
3188 INTERFACE_TYPE ,
3189 ERROR_MESSAGE_NAME,
3190 REQUEST_ID ,
3191 batch_id ,
3192 ENTITY_TYPE ,
3193 AUCTION_HEADER_ID ,
3194 LINE_NUMBER ,
3195 SHIPMENT_NUMBER ,
3196 EXPIRATION_DATE ,
3197 TOKEN1_NAME ,
3198 TOKEN1_VALUE ,
3199 CREATED_BY ,
3200 CREATION_DATE ,
3201 LAST_UPDATED_BY ,
3202 LAST_UPDATE_DATE ,
3203 LAST_UPDATE_LOGIN
3204 )
3205 VALUES
3206 (
3207 g_interface_type , --INTERFACE_TYPE
3208 'PON_AUC_EFFC_FROM_BEF_NEG' , -- ERROR_MESSAGE_NAME
3209 p_request_id , -- REQUEST_ID
3210 p_batch_id , -- BATCH_ID
3211 g_auction_pbs_type , -- ENTITY_TYPE
3212 p_auction_header_id , -- AUCTION_HEADER_ID
3213 sel_line_number , -- LINE_NUMBER
3214 sel_shipment_number , -- SHIPMENT_NUMBER
3215 p_expiration_date , -- EXPIRATION_DATE
3216 'LINENUM' , -- TOKEN1_NAME
3217 sel_document_disp_line_number, -- TOKEN1_VALUE
3218 p_user_id , -- CREATED_BY
3219 sysdate , -- CREATION_DATE
3220 p_user_id , -- LAST_UPDATED_BY
3221 sysdate , -- LAST_UPDATE_DATE
3222 p_login_id -- LAST_UPDATE_LOGIN
3223 )
3224 -- EFFECTIVE END DATE SHOULD BE AFTER PO START DATE
3225 WHEN ( p_po_start_date IS NOT NULL
3226 AND sel_effective_end_date IS NOT NULL
3227 AND sel_effective_end_date < p_po_start_date ) THEN
3228 INTO PON_INTERFACE_ERRORS
3229 (
3230 INTERFACE_TYPE ,
3231 ERROR_MESSAGE_NAME,
3232 REQUEST_ID ,
3233 batch_id ,
3234 ENTITY_TYPE ,
3235 AUCTION_HEADER_ID ,
3236 LINE_NUMBER ,
3237 SHIPMENT_NUMBER ,
3238 EXPIRATION_DATE ,
3239 TOKEN1_NAME ,
3240 TOKEN1_VALUE ,
3241 CREATED_BY ,
3242 CREATION_DATE ,
3243 LAST_UPDATED_BY ,
3244 LAST_UPDATE_DATE ,
3245 LAST_UPDATE_LOGIN
3246 )
3247 VALUES
3248 (
3249 g_interface_type , --INTERFACE_TYPE
3250 'PON_AUC_EFFC_TO_BEFORE_NEG' , -- ERROR_MESSAGE_NAME
3251 p_request_id , -- REQUEST_ID
3252 p_batch_id , -- BATCH_ID
3253 g_auction_pbs_type , -- ENTITY_TYPE
3254 p_auction_header_id , -- AUCTION_HEADER_ID
3255 sel_line_number , -- LINE_NUMBER
3256 sel_shipment_number , -- SHIPMENT_NUMBER
3257 p_expiration_date , -- EXPIRATION_DATE
3258 'LINENUM' , -- TOKEN1_NAME
3259 sel_document_disp_line_number, -- TOKEN1_VALUE
3260 p_user_id , -- CREATED_BY
3261 sysdate , -- CREATION_DATE
3262 p_user_id , -- LAST_UPDATED_BY
3263 sysdate , -- LAST_UPDATE_DATE
3264 p_login_id -- LAST_UPDATE_LOGIN
3265 )
3266 -- the effective start date should be before po end date if both are entered
3267 WHEN ( p_po_end_date IS NOT NULL
3268 AND sel_effective_start_date IS NOT NULL
3269 AND sel_effective_start_date > p_po_end_date ) THEN
3270 INTO PON_INTERFACE_ERRORS
3271 (
3272 INTERFACE_TYPE ,
3273 ERROR_MESSAGE_NAME,
3274 REQUEST_ID ,
3275 batch_id ,
3276 ENTITY_TYPE ,
3277 AUCTION_HEADER_ID ,
3278 LINE_NUMBER ,
3279 SHIPMENT_NUMBER ,
3280 EXPIRATION_DATE ,
3281 TOKEN1_NAME ,
3282 TOKEN1_VALUE ,
3283 CREATED_BY ,
3284 CREATION_DATE ,
3285 LAST_UPDATED_BY ,
3286 LAST_UPDATE_DATE ,
3287 LAST_UPDATE_LOGIN
3288 )
3289 VALUES
3290 (
3291 g_interface_type , --INTERFACE_TYPE
3292 'PON_AUC_EFFC_FROM_AFT_NEG' , -- ERROR_MESSAGE_NAME
3293 p_request_id , -- REQUEST_ID
3294 p_batch_id , -- BATCH_ID
3295 g_auction_pbs_type , -- ENTITY_TYPE
3296 p_auction_header_id , -- AUCTION_HEADER_ID
3297 sel_line_number , -- LINE_NUMBER
3298 sel_shipment_number , -- SHIPMENT_NUMBER
3299 p_expiration_date , -- EXPIRATION_DATE
3300 'LINENUM' , -- TOKEN1_NAME
3301 sel_document_disp_line_number, -- TOKEN1_VALUE
3302 p_user_id , -- CREATED_BY
3303 sysdate , -- CREATION_DATE
3304 p_user_id , -- LAST_UPDATED_BY
3305 sysdate , -- LAST_UPDATE_DATE
3306 p_login_id -- LAST_UPDATE_LOGIN
3307 )
3308 -- effective end date should be before the po end date
3309 WHEN ( p_po_end_date IS NOT NULL
3310 AND sel_effective_end_date IS NOT NULL
3311 AND sel_effective_end_date > p_po_end_date ) THEN
3312 INTO PON_INTERFACE_ERRORS
3313 (
3314 INTERFACE_TYPE ,
3315 ERROR_MESSAGE_NAME,
3316 REQUEST_ID ,
3317 batch_id ,
3318 ENTITY_TYPE ,
3319 AUCTION_HEADER_ID ,
3320 LINE_NUMBER ,
3321 SHIPMENT_NUMBER ,
3322 EXPIRATION_DATE ,
3323 TOKEN1_NAME ,
3324 TOKEN1_VALUE ,
3325 CREATED_BY ,
3326 CREATION_DATE ,
3327 LAST_UPDATED_BY ,
3328 LAST_UPDATE_DATE ,
3329 LAST_UPDATE_LOGIN
3330 )
3331 VALUES
3332 (
3333 g_interface_type , --INTERFACE_TYPE
3334 'PON_AUC_EFFC_TO_AFT_NEG' , -- ERROR_MESSAGE_NAME
3335 p_request_id , -- REQUEST_ID
3336 p_batch_id , -- BATCH_ID
3337 g_auction_pbs_type , -- ENTITY_TYPE
3338 p_auction_header_id , -- AUCTION_HEADER_ID
3339 sel_line_number , -- LINE_NUMBER
3340 sel_shipment_number , -- SHIPMENT_NUMBER
3341 p_expiration_date , -- EXPIRATION_DATE
3342 'LINENUM' , -- TOKEN1_NAME
3343 sel_document_disp_line_number, -- TOKEN1_VALUE
3344 p_user_id , -- CREATED_BY
3345 sysdate , -- CREATION_DATE
3346 p_user_id , -- LAST_UPDATED_BY
3347 sysdate , -- LAST_UPDATE_DATE
3348 p_login_id -- LAST_UPDATE_LOGIN
3349 )
3350 SELECT PAIP.LINE_NUMBER sel_line_number ,
3351 PAIP.DOCUMENT_DISP_LINE_NUMBER sel_document_disp_line_number,
3352 papbi.SHIPMENT_NUMBER sel_shipment_number ,
3353 papbi.PRICE sel_price ,
3354 papbi.QUANTITY sel_quantity ,
3355 papbi.EFFECTIVE_END_DATE sel_effective_end_date ,
3356 papbi.EFFECTIVE_START_DATE sel_effective_start_date ,
3357 papbi.SHIP_TO_LOCATION_ID sel_ship_to_location_id ,
3358 papbi.SHIP_TO_ORGANIZATION_ID sel_ship_to_organization_id ,
3359 papbi.DIFFERENTIAL_RESPONSE_TYPE sel_differential_response_type
3360 FROM PON_AUCTION_ITEM_PRICES_ALL PAIP,
3361 pon_auc_price_breaks_interface papbi
3362 WHERE PAIP.AUCTION_HEADER_ID = p_auction_header_id
3363 AND papbi.AUCTION_HEADER_ID = p_auction_header_id
3364 AND PAIP.LINE_NUMBER = papbi.auction_LINE_NUMBER;
3365
3366 UPDATE pon_auc_price_differ_int diff
3367 SET price_type = (SELECT price_type FROM po_price_diff_lookups_v WHERE price_type_name = diff.price_type )
3368 WHERE diff.auction_header_id = p_auction_header_id
3369 AND diff.price_type_name IS NOT null;
3370
3371 INSERT ALL
3372 WHEN (sel_seq_num IS NULL )
3373 THEN INTO PON_INTERFACE_ERRORS
3374 (
3375 INTERFACE_TYPE ,
3376 ERROR_MESSAGE_NAME,
3377 COLUMN_NAME,
3378 REQUEST_ID ,
3379 batch_id ,
3380 ENTITY_TYPE ,
3381 AUCTION_HEADER_ID ,
3382 LINE_NUMBER ,
3383 SHIPMENT_NUMBER ,
3384 CREATED_BY ,
3385 CREATION_DATE ,
3386 LAST_UPDATED_BY ,
3387 LAST_UPDATE_DATE ,
3388 LAST_UPDATE_LOGIN
3389 )
3390 VALUES
3391 (
3392 g_interface_type , --INTERFACE_TYPE
3393 'PON_FIELD_MUST_BE_ENTERED' , -- ERROR_MESSAGE_NAME
3394 'SEQUENCE_NUMBER',
3395 p_request_id , -- REQUEST_ID
3396 p_batch_id , -- BATCH_ID
3397 'PON_AUC_PRICE_DIFFER_INT', -- ENTITY_TYPE
3398 p_auction_header_id , -- AUCTION_HEADER_ID
3399 sel_line_num , -- LINE_NUMBER
3400 sel_ship_num , -- SHIPMENT_NUMBER
3401 p_user_id , -- CREATED_BY
3402 sysdate , -- CREATION_DATE
3403 p_user_id , -- LAST_UPDATED_BY
3404 sysdate , -- LAST_UPDATE_DATE
3405 p_login_id -- LAST_UPDATE_LOGIN
3406 )
3407 WHEN (sel_price_type IS NULL
3408 OR NOT EXISTS (SELECT 1 FROM po_price_diff_lookups_v WHERE price_differential_type = sel_price_type))
3409 THEN INTO PON_INTERFACE_ERRORS
3410 (
3411 INTERFACE_TYPE ,
3412 ERROR_MESSAGE_NAME,
3413 REQUEST_ID ,
3414 batch_id ,
3415 ENTITY_TYPE ,
3416 AUCTION_HEADER_ID ,
3417 LINE_NUMBER ,
3418 SHIPMENT_NUMBER ,
3419 CREATED_BY ,
3420 CREATION_DATE ,
3421 LAST_UPDATED_BY ,
3422 LAST_UPDATE_DATE ,
3423 LAST_UPDATE_LOGIN
3424 )
3425 VALUES
3426 (
3427 g_interface_type , --INTERFACE_TYPE
3428 'PON_IMPORT_PRICEDIFF_TYPE' , -- ERROR_MESSAGE_NAME
3429 p_request_id , -- REQUEST_ID
3430 p_batch_id , -- BATCH_ID
3431 'PON_AUC_PRICE_DIFFER_INT' , -- ENTITY_TYPE
3432 p_auction_header_id , -- AUCTION_HEADER_ID
3433 sel_line_num , -- LINE_NUMBER
3434 sel_ship_num , -- SHIPMENT_NUMBER
3435 p_user_id , -- CREATED_BY
3436 sysdate , -- CREATION_DATE
3437 p_user_id , -- LAST_UPDATED_BY
3438 sysdate , -- LAST_UPDATE_DATE
3439 p_login_id -- LAST_UPDATE_LOGIN
3440 )
3441 WHEN (sel_multiplier IS NULL )
3442 THEN INTO PON_INTERFACE_ERRORS
3443 (
3444 INTERFACE_TYPE ,
3445 ERROR_MESSAGE_NAME,
3446 COLUMN_NAME,
3447 REQUEST_ID ,
3448 batch_id ,
3449 ENTITY_TYPE ,
3450 AUCTION_HEADER_ID ,
3451 LINE_NUMBER ,
3452 SHIPMENT_NUMBER ,
3453 CREATED_BY ,
3454 CREATION_DATE ,
3455 LAST_UPDATED_BY ,
3456 LAST_UPDATE_DATE ,
3457 LAST_UPDATE_LOGIN
3458 )
3459 VALUES
3460 (
3461 g_interface_type , --INTERFACE_TYPE
3462 'PON_FIELD_MUST_BE_ENTERED' , -- ERROR_MESSAGE_NAME
3463 'MULTIPLIER',
3464 p_request_id , -- REQUEST_ID
3465 p_batch_id , -- BATCH_ID
3466 'PON_AUC_PRICE_DIFFER_INT' , -- ENTITY_TYPE
3467 p_auction_header_id , -- AUCTION_HEADER_ID
3468 sel_line_num , -- LINE_NUMBER
3469 sel_ship_num , -- SHIPMENT_NUMBER
3470 p_user_id , -- CREATED_BY
3471 sysdate , -- CREATION_DATE
3472 p_user_id , -- LAST_UPDATED_BY
3473 sysdate , -- LAST_UPDATE_DATE
3474 p_login_id -- LAST_UPDATE_LOGIN
3475 )
3476 WHEN (sel_line_num IS NULL
3477 or NOT EXISTS(SELECT 1 FROM pon_auction_item_prices_all paip
3478 WHERE paip.auction_header_id = p_auction_header_id
3479 AND paip.line_number = sel_line_num ))
3480 THEN INTO PON_INTERFACE_ERRORS
3481 (
3482 INTERFACE_TYPE ,
3483 ERROR_MESSAGE_NAME,
3484 REQUEST_ID ,
3485 batch_id ,
3486 ENTITY_TYPE ,
3487 AUCTION_HEADER_ID ,
3488 LINE_NUMBER ,
3489 SHIPMENT_NUMBER ,
3490 CREATED_BY ,
3491 CREATION_DATE ,
3492 LAST_UPDATED_BY ,
3493 LAST_UPDATE_DATE ,
3494 LAST_UPDATE_LOGIN
3495 )
3496 VALUES
3497 (
3498 g_interface_type , --INTERFACE_TYPE
3499 'PON_IMPORT_PRICEDIFF_LINE' , -- ERROR_MESSAGE_NAME
3500 p_request_id , -- REQUEST_ID
3501 p_batch_id , -- BATCH_ID
3502 'PON_AUC_PRICE_DIFFER_INT' , -- ENTITY_TYPE
3503 p_auction_header_id , -- AUCTION_HEADER_ID
3504 sel_line_num , -- LINE_NUMBER
3505 sel_ship_num , -- SHIPMENT_NUMBER
3506 p_user_id , -- CREATED_BY
3507 sysdate , -- CREATION_DATE
3508 p_user_id , -- LAST_UPDATED_BY
3509 sysdate , -- LAST_UPDATE_DATE
3510 p_login_id -- LAST_UPDATE_LOGIN
3511 )
3512 WHEN (sel_ship_num IS NOT NULL AND sel_ship_num <> -1
3513 AND NOT EXISTS(SELECT 1 FROM pon_auc_price_breaks_interface pas
3514 WHERE pas.auction_header_id = p_auction_header_id
3515 AND pas.auction_line_number = sel_line_num
3516 AND pas.shipment_number = sel_ship_num ))
3517 THEN INTO PON_INTERFACE_ERRORS
3518 (
3519 INTERFACE_TYPE ,
3520 ERROR_MESSAGE_NAME,
3521 REQUEST_ID ,
3522 batch_id ,
3523 ENTITY_TYPE ,
3524 AUCTION_HEADER_ID ,
3525 LINE_NUMBER ,
3526 SHIPMENT_NUMBER ,
3527 CREATED_BY ,
3528 CREATION_DATE ,
3529 LAST_UPDATED_BY ,
3530 LAST_UPDATE_DATE ,
3531 LAST_UPDATE_LOGIN
3532 )
3533 VALUES
3534 (
3535 g_interface_type , --INTERFACE_TYPE
3536 'PON_IMPORT_PRICEDIFF_SHIP' , -- ERROR_MESSAGE_NAME
3537 p_request_id , -- REQUEST_ID
3538 p_batch_id , -- BATCH_ID
3539 'PON_AUC_PRICE_DIFFER_INT' , -- ENTITY_TYPE
3540 p_auction_header_id , -- AUCTION_HEADER_ID
3541 sel_line_num , -- LINE_NUMBER
3542 sel_ship_num , -- SHIPMENT_NUMBER
3543 p_user_id , -- CREATED_BY
3544 sysdate , -- CREATION_DATE
3545 p_user_id , -- LAST_UPDATED_BY
3546 sysdate , -- LAST_UPDATE_DATE
3547 p_login_id -- LAST_UPDATE_LOGIN
3548 )
3549 SELECT ppd.price_type sel_price_type,
3550 ppd.sequence_number sel_seq_num,
3551 ppd.auction_line_number sel_line_num,
3552 ppd.multiplier sel_multiplier,
3553 ppd.auction_shipment_number sel_ship_num
3554 FROM PON_AUC_PRICE_DIFFER_INT ppd
3555 WHERE ppd.auction_header_id = p_auction_header_id;
3556
3557 END VAL_PRICE_BREAKS;
3558
3559
3560 /*
3561 * The following validations are performed:
3562 * 1. Entered score value should be between 0 and 100
3563 * 2. Score must be a positive number
3564 */
3565 PROCEDURE VAL_ATTR_SCORES
3566 (
3567 p_auction_header_id IN NUMBER,
3568 p_request_id IN NUMBER,
3569 p_expiration_date IN DATE,
3570 p_user_id IN NUMBER,
3571 p_login_id IN NUMBER,
3572 p_batch_id IN NUMBER )
3573 IS
3574 -- PRAGMA AUTONOMOUS_TRANSACTION;
3575
3576 BEGIN
3577 IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
3578 FND_LOG.string(log_level => FND_LOG.level_procedure, module => g_module_prefix || 'VAL_ATTR_SCORES', MESSAGE => 'Entering VAL_ATTR_SCORES' || ', p_auction_header_id = ' || p_auction_header_id);
3579 END IF; --}
3580 INSERT ALL
3581 WHEN(NOT EXISTS
3582 (SELECT 'Y'
3583 FROM pon_attribute_scores_interface pasi
3584 WHERE pasi.batch_id = p_batch_id
3585 AND pasi.line_number = line_num
3586 AND pasi.attribute_sequence_number = seq_num
3587 )
3588 -- it is possible that scores can exist from previous round/amendment
3589 -- we need not expect attribute scores in such cases.
3590 AND NOT EXISTS
3591 (SELECT 'Y'
3592 FROM pon_attribute_scores pas
3593 WHERE pas.auction_header_id = p_auction_header_id
3594 AND pas.line_number = line_num
3595 AND pas.attribute_sequence_number = seq_num
3596 )) THEN
3597 INTO PON_INTERFACE_ERRORS
3598 (
3599 INTERFACE_TYPE ,
3600 ERROR_MESSAGE_NAME,
3601 REQUEST_ID ,
3602 BATCH_ID ,
3603 ENTITY_TYPE ,
3604 AUCTION_HEADER_ID ,
3605 LINE_NUMBER ,
3606 EXPIRATION_DATE ,
3607 CREATED_BY ,
3608 cREATION_DATE ,
3609 LAST_UPDATED_BY ,
3610 LAST_UPDATE_DATE ,
3611 LAST_UPDATE_LOGIN
3612 )
3613 VALUES
3614 (
3615 g_interface_type ,
3616 'PON_IMPORT_ATTR_SCORES_NO',
3617 P_request_id ,
3618 p_batch_id ,
3619 g_auction_attrs_type ,
3620 p_auction_header_id ,
3621 line_num ,
3622 NULL ,
3623 p_user_id ,
3624 SYSDATE ,
3625 p_user_id ,
3626 SYSDATE ,
3627 p_user_id
3628 )
3629 SELECT g_interface_type ,
3630 'PON_ATTR_SCORES_MISSING' ,
3631 P_request_id ,
3632 p_batch_id ,
3633 g_auction_attrs_type ,
3634 p_auction_header_id ,
3635 paai.auction_line_number line_num,
3636 paai.sequence_number seq_num ,
3637 NULL ,
3638 p_user_id
3639 FROM PON_AUC_ATTRIBUTES_INTERFACE PAAI
3640 WHERE paai.batch_id = p_batch_id
3641 AND paai.auction_header_id = p_auction_header_id
3642 AND NVL(paai.SCORING_TYPE,'NONE') <> 'NONE' ;
3643
3644
3645 INSERT ALL
3646 -- Entered score value should be between 0 and 100
3647 WHEN ( SCORE IS NOT NULL
3648 AND sel_trunc_score NOT BETWEEN 0 AND 100 ) THEN
3649 INTO PON_INTERFACE_ERRORS
3650 (
3651 INTERFACE_TYPE ,
3652 ERROR_MESSAGE_NAME,
3653 REQUEST_ID ,
3654 BATCH_ID ,
3655 ENTITY_TYPE ,
3656 AUCTION_HEADER_ID ,
3657 LINE_NUMBER ,
3658 EXPIRATION_DATE ,
3659 CREATED_BY ,
3660 CREATION_DATE ,
3661 LAST_UPDATED_BY ,
3662 LAST_UPDATE_DATE ,
3663 LAST_UPDATE_LOGIN
3664 )
3665 VALUES
3666 (
3667 g_interface_type , --INTERFACE_TYPE
3668 'PON_IMPORT_INVALID_SCORE', -- ERROR_MESSAGE_NAME
3669 p_request_id , -- REQUEST_ID
3670 p_batch_id , --BATCH_ID
3671 g_auction_attrs_type , -- ENTITY_TYPE
3672 p_auction_header_id , -- AUCTION_HEADER_ID
3673 LINE_NUMBER , -- LINE_NUMBER
3674 p_expiration_date , -- EXPIRATION_DATE
3675 p_user_id , -- CREATED_BY
3676 sysdate , -- CREATION_DATE
3677 p_user_id , -- LAST_UPDATED_BY
3678 sysdate , -- LAST_UPDATE_DATE
3679 p_login_id -- LAST_UPDATE_LOGIN
3680 )
3681 -- SCORE MUST BE A POSITIVE NUMBER
3682 WHEN ( SCORE IS NOT NULL
3683 AND (SCORE - sel_trunc_score <>0) ) THEN
3684 INTO PON_INTERFACE_ERRORS
3685 (
3686 INTERFACE_TYPE ,
3687 ERROR_MESSAGE_NAME,
3688 REQUEST_ID ,
3689 BATCH_ID ,
3690 ENTITY_TYPE ,
3691 AUCTION_HEADER_ID ,
3692 LINE_NUMBER ,
3693 EXPIRATION_DATE ,
3694 CREATED_BY ,
3695 CREATION_DATE ,
3696 LAST_UPDATED_BY ,
3697 LAST_UPDATE_DATE ,
3698 LAST_UPDATE_LOGIN
3699 )
3700 VALUES
3701 (
3702 g_interface_type , --INTERFACE_TYPE
3703 'PON_AUCTS_MUST_BE_A_INT_M', -- ERROR_MESSAGE_NAME
3704 p_request_id , -- REQUEST_ID
3705 p_batch_id , --BATCH_ID
3706 g_auction_attrs_type , -- ENTITY_TYPE
3707 p_auction_header_id , -- AUCTION_HEADER_ID
3708 LINE_NUMBER , -- LINE_NUMBER
3709 p_expiration_date , -- EXPIRATION_DATE
3710 p_user_id , -- CREATED_BY
3711 sysdate , -- CREATION_DATE
3712 p_user_id , -- LAST_UPDATED_BY
3713 sysdate , -- LAST_UPDATE_DATE
3714 p_login_id -- LAST_UPDATE_LOGIN
3715 )
3716 SELECT pasi.SCORE,
3717 pasi.LINE_NUMBER,
3718 TRUNC (pasi.SCORE) sel_trunc_score
3719 FROM pon_attribute_scores_interface pasi,
3720 PON_AUC_ATTRIBUTES_INTERFACE paai
3721 WHERE pasi.batch_id = p_batch_id
3722 AND pasi.auction_header_id = p_auction_Header_id
3723 AND NVL(pasi.line_number,-1) <> -1
3724 AND pasi.batch_id = paai.batch_id
3725 AND NVL(paai.SCORING_TYPE,'NONE') <> 'NONE'
3726 AND pasi.line_number = paai.auction_line_number
3727 AND pasi.attribute_sequence_number = paai.sequence_number;
3728 IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN --{
3729 FND_LOG.string(log_level => FND_LOG.level_procedure, module => g_module_prefix || 'VAL_ATTR_SCORES', MESSAGE => 'Returning PON_NEGOTIATION_HELPER_PVT.VAL_ATTR_SCORES' || ', p_auction_header_id = ' || p_auction_header_id);
3730 END IF; --}
3731 END VAL_ATTR_SCORES;
3732 -----------------------------------------------------------------------
3733 --Start of Comments
3734 --Name: print_log
3735 --Description : Helper procedure for logging
3736 --Pre-reqs:
3737 --Parameters:
3738 --IN: p_message
3739 --OUT:
3740 --Returns:
3741 --Notes:
3742 --Testing:
3743 --End of Comments
3744 ------------------------------------------------------------------------
3745 PROCEDURE print_log
3746 (
3747 p_message IN VARCHAR2 )
3748 IS
3749 BEGIN
3750 IF(g_fnd_debug = 'Y') THEN
3751 IF(FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN
3752 FND_LOG.string(log_level => FND_LOG.level_statement, module => g_module_prefix, MESSAGE => p_message);
3753 END IF;
3754 END IF;
3755 END print_log;
3756
3757 PROCEDURE create_negotiations(
3758 p_group_batch_id IN NUMBER,
3759 x_return_status IN OUT NOCOPY VARCHAR2,
3760 x_msg_count OUT NOCOPY NUMBER,
3761 x_msg_data OUT NOCOPY varchar2
3762 )
3763 AS
3764 dummy1 NUMBER;
3765 neg_return_status VARCHAR2(1);
3766 p_error_code VARCHAR2(1);
3767 p_error_message VARCHAR2(1000);
3768 l_auctioN_header_id pon_auction_headers_all.auctioN_header_id%TYPE;
3769 l_trading_partner_id pon_auction_headers_all.trading_partner_id%TYPE;
3770 l_trading_partner_name pon_auction_headers_all.trading_partner_name%TYPE;
3771 l_batch_id pon_auctioN_headers_interface.batch_id%TYPE;
3772
3773 CURSOR group_negotiations_cur IS
3774 SELECT interface_header_id FROM pon_auction_Headers_interface
3775 WHERE interface_group_id = p_group_batch_id
3776 AND interface_header_id IS NOT NULL
3777 AND PROCESSING_STATUS_CODE = 'PENDING'
3778 AND Nvl(amendment_flag,'N') = 'N';
3779
3780 BEGIN
3781
3782 print_log('Entered create_negotiations procedure');
3783
3784 pos_enterprise_util_pkg.get_enterprise_partyId(g_trading_partner_id,
3785 p_error_code,
3786 p_error_message);
3787 pos_enterprise_util_pkg.get_enterprise_party_name(l_trading_partner_name,
3788 p_error_code,
3789 p_error_message);
3790
3791 IF(p_error_code = 'E' ) THEN
3792 x_return_status := FND_API.G_RET_STS_ERROR;
3793 print_Log('Trading partner set up is not done.' );
3794 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_TPSETUP_ERR');
3795 FND_MSG_PUB.ADD;
3796 RAISE FND_API.G_EXC_ERROR;
3797 END IF;
3798
3799 FOR rec IN group_negotiations_cur LOOP
3800 SAVEPOINT NEG_CREATION;
3801 l_batch_id := rec.interface_header_id;
3802 UPDATE pon_auction_Headers_interface
3803 SET PROCESSING_STATUS_CODE = 'PROCESSING'
3804 WHERE interface_header_id = l_batch_id;
3805 DELETE FROM pon_interface_errors WHERE batch_id = l_batch_id;
3806
3807 BEGIN
3808 create_negotiation(l_batch_id,
3809 l_auction_header_id,
3810 neg_return_status
3811 );
3812
3813 EXCEPTION
3814 WHEN OTHERS THEN
3815 print_log('Exception in create_negotiation for batch_id ' || l_batch_id);
3816 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_NEG_CREATION_FAIL');
3817 FND_MESSAGE.SET_TOKEN('BATCH_ID',l_batch_id);
3818 FND_MSG_PUB.ADD;
3819 x_return_status := FND_API.G_RET_STS_ERROR;
3820 neg_return_status := FND_API.G_RET_STS_ERROR;
3821 END;
3822 IF ( neg_return_status = 'S') THEN
3823 print_log('Negotiation with auction_header_id ' || l_auction_header_id || ' has been created for batch id ' || l_batch_id);
3824 UPDATE pon_auction_headers_interface
3825 SET PROCESSING_STATUS_CODE = 'PROCESSED'
3826 WHERE batch_id = l_batch_id;
3827 COMMIT;
3828 ELSE
3829 print_log('Negotiation creation has failed for batch id ' || l_batch_id);
3830 x_return_status := FND_API.G_RET_STS_ERROR;
3831 --ROLLBACK TO NEG_CREATION;
3832 IF ( l_auction_header_id IS NOT NULL ) THEN
3833 DELETE FROM pon_auction_headers_all WHERE auction_header_id = l_auction_header_id;
3834 DELETE FROM pon_auction_item_prices_all WHERE auction_header_id = l_auction_header_id;
3835 DELETE FROM pon_price_elements WHERE auction_header_id = l_auction_header_id;
3836 DELETE FROM pon_auction_shipments_all WHERE auction_header_id = l_auction_header_id;
3837 DELETE FROM pon_auc_payments_shipments WHERE auction_header_id = l_auction_header_id;
3838 DELETE FROM pon_neg_team_members WHERE auction_header_id = l_auction_header_id;
3839 DELETE FROM pon_auction_attributes WHERE auction_header_id = l_auction_header_id;
3840 DELETE FROM pon_bidding_parties WHERE auction_header_id = l_auction_header_id;
3841 DELETE FROM pon_attribute_scores WHERE auction_header_id = l_auction_header_id;
3842 DELETE FROM pon_auction_sections WHERE auction_header_id = l_auction_header_id;
3843 DELETE FROM pon_auction_headers_ext_b WHERE auction_header_id = l_auction_header_id;
3844 DELETE FROM pon_auction_headers_ext_tl WHERE auction_header_id = l_auction_header_id;
3845 DELETE FROM pon_auction_item_prices_ext_b WHERE auction_header_id = l_auction_header_id;
3846 DELETE FROM pon_auction_item_prices_ext_tl WHERE auction_header_id = l_auction_header_id;
3847 END IF;
3848 UPDATE pon_auction_headers_interface
3849 SET PROCESSING_STATUS_CODE = 'FAILED'
3850 WHERE batch_id = l_batch_id;
3851 COMMIT;
3852 END IF;
3853 END LOOP;
3854
3855 IF x_return_status <> FND_API.G_RET_STS_ERROR THEN
3856 x_return_status := FND_API.G_RET_STS_SUCCESS;
3857 END IF;
3858 FND_MSG_PUB.COUNT_AND_GET( p_count => x_msg_count,
3859 p_data => x_msg_data);
3860
3861 EXCEPTION
3862 WHEN OTHERS THEN
3863 print_log('Exception in create_negotiations procedure.');
3864 x_return_status := FND_API.G_RET_STS_ERROR;
3865 FND_MSG_PUB.COUNT_AND_GET( p_count => x_msg_count,
3866 p_data => x_msg_data);
3867 END create_negotiations;
3868
3869
3870 PROCEDURE create_negotiation(
3871 p_batch_id IN NUMBER,
3872 x_auction_header_id OUT NOCOPY NUMBER,
3873 x_return_status IN OUT NOCOPY VARCHAR2
3874 )
3875 AS
3876
3877 l_empty_header_rec neg_header_record;
3878 l_api_version CONSTANT NUMBER := 1.0;
3879 l_api_name CONSTANT VARCHAR2(30) := 'Create_negotiation';
3880 p_error_code VARCHAR2(1);
3881 p_error_message VARCHAR2(100);
3882 l_uda_template_id NUMBER;
3883 l_attr_group_id NUMBER;
3884 dummy1 NUMBER;
3885
3886 dummy2 NUMBER;
3887
3888 BEGIN
3889
3890 x_return_status := FND_API.G_RET_STS_SUCCESS;
3891 print_log('pon_open_interface_pvt.create_negotiation begin');
3892 --x_return_status := FND_API.G_RET_STS_SUCCESS;
3893 neg_header_record_data := l_empty_header_rec;
3894
3895 update pon_auction_headers_interface SET batch_id = p_batch_id WHERE interface_header_id = p_batch_id;
3896 update pon_item_prices_interface SET batch_id = p_batch_id, auction_line_number = interface_line_id WHERE interface_header_id = p_batch_id;
3897 update PON_AUC_ATTRIBUTES_INTERFACE SET batch_id = p_batch_id, auction_line_number = interface_line_id WHERE interface_header_id = p_batch_id;
3898 update pon_attribute_scores_interface SET batch_id = p_batch_id, LINE_NUMBER = interface_line_id WHERE interface_header_id = p_batch_id;
3899 update pon_bid_parties_interface SET batch_id = p_batch_id WHERE interface_header_id = p_batch_id;
3900 update PON_NEG_TEAM_INTERFACE SET batch_id = p_batch_id WHERE interface_header_id = p_batch_id;
3901 update PON_AUC_PRICE_ELEMENTS_INT SET batch_id = p_batch_id, auction_line_number = interface_line_id WHERE interface_header_id = p_batch_id;
3902 BEGIN
3903 update pon_auc_payments_interface SET batch_id = p_batch_id, document_disp_line_number = interface_line_id WHERE interface_header_id = p_batch_id;
3904 EXCEPTION
3905 WHEN OTHERS THEN
3906 print_log('sqlerrm ' || SQLERRM || ' ' || SQLCODE );
3907 END;
3908 update pon_auc_price_breaks_interface SET batch_id = p_batch_id, auction_line_number = interface_line_id WHERE interface_header_id = p_batch_id;
3909 update pon_auc_price_differ_int SET batch_id = p_batch_id, auction_line_number = interface_line_id WHERE interface_header_id = p_batch_id;
3910
3911 BEGIN
3912 SELECT 1
3913 INTO dummy1
3914 FROM pon_auction_headers_Interface WHERE batch_id = p_batch_id;
3915 EXCEPTION
3916 WHEN Too_Many_Rows THEN
3917 x_return_status := FND_API.G_RET_STS_ERROR;
3918 print_Log('Multiple rows found in pon_auction_headers_Interface table for the batch_id' || p_batch_id);
3919 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_MUL_BATCHID');
3920 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_id);
3921 FND_MSG_PUB.ADD;
3922 RAISE FND_API.G_EXC_ERROR;
3923 END;
3924
3925 print_log('pon_open_interface_pvt.create_negotiation: before calling process_negotiation_header');
3926 process_negotiation_header(
3927 p_batch_id,
3928 g_trading_partner_id,
3929 x_auction_header_id,
3930 x_return_status
3931 );
3932 --x_auction_header_id := 169670;
3933
3934 IF(x_return_status = FND_API.G_RET_STS_ERROR) THEN
3935 print_log('failure from create_negotiation_header');
3936 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_HEADER_PROC_FAIL');
3937 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_id);
3938 FND_MSG_PUB.ADD;
3939 RETURN;
3940 END IF;
3941 print_log('Header record created for batch_id ' || p_batch_id || ' auction_header_id ' || x_auction_header_id
3942 || ' x_return_status ' || x_return_status);
3943
3944
3945 IF ( PON_CLM_UTIL_PKG.IS_DOCUMENT_FEDERAL(neg_header_record_data.doctype_id) = 1 ) THEN
3946 SELECT uda_template_id INTO l_uda_template_id
3947 FROM pon_auction_Headers_all
3948 WHERE auction_header_id = x_auction_header_id;
3949
3950 process_uda_attributes(p_batch_id, x_auction_header_id, NULL, l_uda_template_id, 'PON_AUC_HDRS_EXT_ATTRS', x_return_status);
3951 IF(x_return_status = FND_API.G_RET_STS_ERROR) THEN
3952 print_log('failure from create_negotiation_header');
3953 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_HEADER_UDA_FAIL');
3954 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_id);
3955 FND_MSG_PUB.ADD;
3956 RETURN;
3957 END IF;
3958 print_log('Header UDA information inserted' );
3959 END IF;
3960
3961 BEGIN
3962 SELECT auction_header_id INTO dummy2 FROM pon_item_prices_interface
3963 WHERE batch_id = p_batch_id
3964 AND ROWNUM=1;
3965 EXCEPTION
3966 WHEN No_Data_Found THEN
3967 print_log('No lines present for the given batch_id');
3968 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_NO_LINES');
3969 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_id);
3970 FND_MSG_PUB.ADD;
3971 RETURN;
3972 END;
3973 print_log('Before calling create_lines_with_children with auction_Header_id ' || x_auction_header_id);
3974
3975 create_lines_with_children(
3976 p_batch_id,
3977 x_auction_header_id,
3978 x_return_status
3979 );
3980 print_log('Lines information inserted for batch_id ' || p_batch_id || ' auction_header_id ' || x_auction_header_id
3981 || ' x_return_status ' || x_return_status);
3982 IF(x_return_status = FND_API.G_RET_STS_ERROR) THEN
3983 print_log('failure from create_lines_with_children');
3984 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_LINE_FAIL');
3985 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_id);
3986 FND_MSG_PUB.ADD;
3987 RETURN;
3988 END IF;
3989
3990 -- UDA data insertion for lines
3991 IF ( PON_CLM_UTIL_PKG.IS_DOCUMENT_FEDERAL(neg_header_record_data.doctype_id) = 1 ) THEN
3992 SELECT uda_template_id INTO l_uda_template_id
3993 FROM pon_auction_item_prices_all
3994 WHERE auction_header_id = x_auction_header_id
3995 AND ROWNUM=1;
3996
3997 /* This loop it to check the usage given in po_uda_interface
3998 table for complex pricing details matches with the
3999 attribute group id defined for the idc_type and contract_type
4000 given in the lines table
4001 */
4002 FOR complex_pricing_rec IN (SELECT clm_idc_type, clm_contract_type, line_number FROM pon_auction_item_prices_all
4003 WHERE auction_Header_id = x_auction_header_id
4004 AND clm_cost_constraint NOT IN ('NS','NSP')
4005 AND purchase_basis <> 'GOODS') LOOP
4006 BEGIN
4007 SELECT
4008 usages.attribute_group_id INTO l_attr_group_id
4009 FROM po_uda_ag_template_usages usages
4010 WHERE usages.attribute_category = 'PRICING'
4011 AND usages.template_id = l_uda_template_id
4012 AND usages.attribute1 = (SELECT clm_idc_type FROM pon_auction_item_prices_all WHERE auction_Header_id = x_auction_header_id AND line_number=complex_pricing_rec.line_number)
4013 AND usages.attribute2 = (SELECT clm_contract_type FROM pon_auction_item_prices_all WHERE auction_Header_id = x_auction_header_id AND line_number=complex_pricing_rec.line_number);
4014 EXCEPTION
4015 WHEN No_Data_Found THEN
4016 CONTINUE;
4017 END;
4018
4019 insert into PON_INTERFACE_ERRORS
4020 (interface_type,
4021 error_value,
4022 error_message_name,
4023 table_name,
4024 batch_id,
4025 interface_line_id)
4026 SELECT g_interface_type,
4027 ATTR_GROUP_ID,
4028 'PON_CLM_COMP_PRIC_ERR',
4029 'PO_UDA_INTERFACE',
4030 p_batch_id,
4031 interface_line_id
4032 from po_uda_interface
4033 where INTERFACE_REFERENCE_ID = p_batch_id
4034 AND INTERFACE_line_id = complex_pricing_rec.line_number
4035 AND attr_group_name = 'PRICING'
4036 AND attr_group_id <> l_attr_group_id;
4037
4038 END LOOP;
4039
4040 BEGIN
4041 SELECT 'E' status
4042 INTO x_return_status
4043 FROM dual
4044 WHERE EXISTS
4045 (SELECT * FROM pon_interface_errors WHERE BATCH_ID= p_batch_Id
4046 );
4047 EXCEPTION
4048 WHEN No_Data_Found THEN
4049 x_return_status:=FND_API.G_RET_STS_SUCCESS;
4050 END;
4051
4052 IF(x_return_status = FND_API.G_RET_STS_ERROR) THEN
4053 print_log('Failure in complex pricing validation: p_batch_Id' || p_batch_Id);
4054 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_COMPPRIC_FAIL');
4055 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_Id);
4056 FND_MSG_PUB.ADD;
4057 RETURN;
4058 END IF;
4059
4060
4061
4062 FOR rec IN (SELECT line_number FROM pon_auction_item_prices_all WHERE auction_Header_id = x_auction_header_id ) LOOP
4063 process_uda_attributes(p_batch_id, x_auction_header_id, rec.line_number, l_uda_template_id, 'PON_AUC_PRICES_EXT_ATTRS', x_return_status);
4064 IF(x_return_status = FND_API.G_RET_STS_ERROR) THEN
4065 print_log('failure in Line UDA insertion for line ' || rec.line_number);
4066 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_LINEUDA_FAIL');
4067 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_Id);
4068 FND_MSG_PUB.ADD;
4069 RETURN;
4070 END IF;
4071 END LOOP;
4072 print_Log('Line level UDA insertion completed successfully');
4073 END IF;
4074
4075 invite_supplier(
4076 p_batch_id,
4077 x_return_status
4078 );
4079 print_Log('Supplier information inserted for batch_id ' || p_batch_id || ' auction_header_id ' || x_auction_header_id
4080 || ' x_return_status ' || x_return_status);
4081 IF(x_return_status = FND_API.G_RET_STS_ERROR) THEN
4082 print_log('failure from create_lines_with_children');
4083 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_SUPPLIER_FAIL');
4084 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_Id);
4085 FND_MSG_PUB.ADD;
4086 RETURN;
4087 END IF;
4088
4089 IF ( PON_CLM_UTIL_PKG.IS_DOCUMENT_FEDERAL(neg_header_record_data.doctype_id) = 1 ) THEN
4090 default_sol_number(x_auction_header_id,x_return_status);
4091 END IF;
4092 print_Log('Document number created for auction_header_id ' || x_auction_header_id
4093 || ' x_return_status ' || x_return_status);
4094
4095 IF(x_return_status = FND_API.G_RET_STS_ERROR) THEN
4096 print_log('Failure in document number procedure');
4097 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_DOCNUM_FAIL');
4098 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_Id);
4099 FND_MSG_PUB.ADD;
4100 RETURN;
4101 END IF;
4102
4103
4104 /*IF( neg_header_record_data.auction_published_flag = 'Y' ) THEN
4105 -- negotiation publish
4106 print_log('Invoking publish_negotiation for batch id ' || p_batch_id );
4107 publish_negotiation(x_auction_header_id, x_return_status);
4108 IF(x_return_status = FND_API.G_RET_STS_ERROR) THEN
4109 print_log('Failure in negotiation publish for p_batch_id ' || p_batch_id);
4110 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_PUBLISH_FAIL');
4111 FND_MSG_PUB.ADD;
4112 RETURN;
4113 END IF;
4114 print_Log('Negotiation published for batch id ' || p_batch_id );
4115 END IF;*/
4116
4117
4118 EXCEPTION
4119 WHEN OTHERS THEN
4120 print_log('Exception in create_negotiation');
4121 x_return_status := FND_API.G_RET_STS_ERROR;
4122 END create_negotiation;
4123
4124 PROCEDURE process_uda_attributes(
4125 p_batch_id IN NUMBER,
4126 p_auction_Header_id IN NUMBER,
4127 p_line_number IN NUMBER,
4128 p_uda_template_id IN NUMBER,
4129 p_level IN VARCHAR2,
4130 x_return_status IN OUT NOCOPY VARCHAR2
4131 )
4132 IS
4133
4134 PRAGMA autonomous_transaction;
4135 l_uda_template_id pon_auction_Headers_all.uda_template_id%TYPE;
4136 po_uda_array PO_UDA_USAGE_OBJECT_ARRAY := PO_UDA_USAGE_OBJECT_ARRAY();
4137 ego_value_pairs_table ego_col_name_value_pair_table ;
4138 l_return_status varchar2(1);
4139 l_errorcode Number;
4140 msgData varchar2(240);
4141 msgCount Number;
4142 al EGO_COL_NAME_VALUE_PAIR_OBJ;
4143
4144 l_count number;
4145 l_attr_group_id NUMBER;
4146
4147 CURSOR hdr_uda_attr_group_cur IS
4148 SELECT DISTINCT attr_group_id
4149 FROM po_Uda_interface
4150 WHERE interface_reference_id = p_batch_id
4151 AND ATTR_GROUP_TYPE = p_level;
4152
4153 CURSOR line_uda_attr_group_cur IS
4154 SELECT DISTINCT attr_group_id
4155 FROM po_Uda_interface
4156 WHERE interface_reference_id = p_batch_id
4157 AND ATTR_GROUP_TYPE = p_level
4158 AND interface_line_id = p_line_number;
4159
4160 BEGIN
4161
4162 print_Log('process_uda_attributes called for auction_header_id ' || p_auction_Header_id || ' line ' || p_Line_Number);
4163
4164 IF ( p_level = 'PON_AUC_HDRS_EXT_ATTRS' ) THEN
4165 OPEN hdr_uda_attr_group_cur;
4166 LOOP
4167 FETCH hdr_uda_attr_group_cur into l_attr_group_id;
4168 EXIT WHEN hdr_uda_attr_group_cur%NOTFOUND;
4169 UPDATE PO_UDA_INTERFACE
4170 SET pk1_value = p_auction_Header_id
4171 WHERE INTERFACE_REFERENCE_ID = p_batch_Id
4172 AND ATTR_GROUP_TYPE=p_level
4173 AND ATTR_GROUP_ID = l_attr_group_id;
4174
4175 SELECT Count(*) INTO l_count
4176 FROM po_uda_interface
4177 WHERE INTERFACE_REFERENCE_ID = p_batch_Id AND
4178 ATTR_GROUP_TYPE = p_level AND
4179 PROCESS_STATUS = 1 AND
4180 ATTR_GROUP_ID = l_attr_group_id;
4181
4182 IF l_count > 0 THEN
4183 po_uda_array.extend;
4184 po_uda_array(1) := po_uda_usage_object.new_instance(p_uda_template_id,'GENERIC',NULL);
4185 PON_UDA_IMPORT_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('x_return_status', FND_API.G_RET_STS_SUCCESS, ego_value_pairs_table);
4186 PON_UDA_IMPORT_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('x_errorcode', '0', ego_value_pairs_table);
4187 PON_UDA_IMPORT_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('x_msg_count', '0', ego_value_pairs_table);
4188 PON_UDA_IMPORT_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('x_msg_data', 'SUCCESS', ego_value_pairs_table);
4189
4190 PON_UDA_IMPORT_PKG.IMPORT_UDA_ATTRS
4191 (p_level,p_auction_Header_id,p_Line_number,null,null,null,po_uda_array,ego_value_pairs_table,x_return_status,l_errorcode,msgCount,msgData);
4192
4193 IF ( x_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
4194 print_log('failure from UDA import with l_errorcode ' || l_errorcode || ' x_return_status ' || x_return_status );
4195 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_UDA_FAIL');
4196 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_Id);
4197 FND_MSG_PUB.ADD;
4198 END IF;
4199
4200 print_log(' UDA import completed for ' || p_level);
4201
4202 PON_UDA_IMPORT_PKG.GET_EXT_ATTR_NAME_VALUE_PAIR('x_return_status', ego_value_pairs_table, al);
4203 print_Log('x_return_status : '|| al.VALUE);
4204 PON_UDA_IMPORT_PKG.GET_EXT_ATTR_NAME_VALUE_PAIR('x_errorcode', ego_value_pairs_table, al);
4205 print_Log('x_errorcode : '|| al.VALUE);
4206 PON_UDA_IMPORT_PKG.GET_EXT_ATTR_NAME_VALUE_PAIR('x_msg_count', ego_value_pairs_table, al);
4207 print_Log('x_msg_count : '|| al.VALUE);
4208 PON_UDA_IMPORT_PKG.GET_EXT_ATTR_NAME_VALUE_PAIR('x_msg_data', ego_value_pairs_table, al);
4209 print_Log('Exception : '|| al.VALUE);
4210 END IF;
4211
4212 END LOOP;
4213 CLOSE hdr_uda_attr_group_cur;
4214 ELSIF ( p_level = 'PON_AUC_PRICES_EXT_ATTRS' ) THEN
4215
4216 OPEN line_uda_attr_group_cur;
4217 LOOP
4218 FETCH line_uda_attr_group_cur into l_attr_group_id;
4219 EXIT WHEN line_uda_attr_group_cur%NOTFOUND;
4220
4221 UPDATE PO_UDA_INTERFACE
4222 SET pk1_value = p_auction_Header_id,
4223 pk2_value = p_line_number
4224 WHERE INTERFACE_REFERENCE_ID = p_batch_Id
4225 AND interface_line_id = p_line_number
4226 AND ATTR_GROUP_TYPE=p_level
4227 AND ATTR_GROUP_ID = l_attr_group_id;
4228
4229 SELECT Count(*) INTO l_count
4230 FROM po_uda_interface
4231 WHERE pk1_value = p_auction_Header_id AND
4232 pk2_value = p_line_number AND
4233 INTERFACE_REFERENCE_ID = p_batch_Id AND
4234 interface_line_id = p_line_number AND
4235 ATTR_GROUP_TYPE=p_level AND
4236 PROCESS_STATUS = 1 AND
4237 ATTR_GROUP_ID = l_attr_group_id;
4238
4239 IF l_count > 0 THEN
4240 po_uda_array.extend;
4241 po_uda_array(1) := po_uda_usage_object.new_instance(p_uda_template_id,'GENERIC',NULL);
4242 PON_UDA_IMPORT_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('x_return_status', FND_API.G_RET_STS_SUCCESS, ego_value_pairs_table);
4243 PON_UDA_IMPORT_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('x_errorcode', '0', ego_value_pairs_table);
4244 PON_UDA_IMPORT_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('x_msg_count', '0', ego_value_pairs_table);
4245 PON_UDA_IMPORT_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('x_msg_data', 'SUCCESS', ego_value_pairs_table);
4246
4247 PON_UDA_IMPORT_PKG.IMPORT_UDA_ATTRS
4248 (p_level,p_auction_Header_id,p_Line_number,null,null,null,po_uda_array,ego_value_pairs_table,x_return_status,l_errorcode,msgCount,msgData);
4249
4250 IF ( x_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
4251 print_log('failure from UDA import with l_errorcode ' || l_errorcode || ' x_return_status ' || x_return_status );
4252 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_UDA_FAIL');
4253 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_Id);
4254 FND_MSG_PUB.ADD;
4255 END IF;
4256
4257 print_log(' UDA import completed for ' || p_level);
4258
4259 PON_UDA_IMPORT_PKG.GET_EXT_ATTR_NAME_VALUE_PAIR('x_return_status', ego_value_pairs_table, al);
4260 print_Log('x_return_status : '|| al.VALUE);
4261 PON_UDA_IMPORT_PKG.GET_EXT_ATTR_NAME_VALUE_PAIR('x_errorcode', ego_value_pairs_table, al);
4262 print_Log('x_errorcode : '|| al.VALUE);
4263 PON_UDA_IMPORT_PKG.GET_EXT_ATTR_NAME_VALUE_PAIR('x_msg_count', ego_value_pairs_table, al);
4264 print_Log('x_msg_count : '|| al.VALUE);
4265 PON_UDA_IMPORT_PKG.GET_EXT_ATTR_NAME_VALUE_PAIR('x_msg_data', ego_value_pairs_table, al);
4266 print_Log('Exception : '|| al.VALUE);
4267 END IF;
4268
4269 END LOOP;
4270 CLOSE line_uda_attr_group_cur;
4271 END IF;
4272
4273 COMMIT;
4274
4275 EXCEPTION
4276 WHEN OTHERS THEN
4277 print_log('Unexpected error in process_uda_attributes procedure: sqlerrm ' || SQLERRM);
4278 rollback;
4279 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_UDA_FAIL');
4280 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_Id);
4281 FND_MSG_PUB.ADD;
4282 x_return_status := 'E';
4283 END process_uda_attributes;
4284
4285
4286 PROCEDURE create_negotiation_header
4287 (
4288 p_batch_id NUMBER,
4289 x_return_status IN OUT NOCOPY VARCHAR2
4290 ) AS
4291
4292 l_document_type pon_auc_doctypes.internal_name%TYPE;
4293
4294 BEGIN
4295
4296 SELECT internal_name INTO l_document_type
4297 FROM pon_auc_doctypes
4298 WHERE doctype_id = neg_header_record_data.doctype_id;
4299
4300
4301 INSERT INTO PON_AUCTION_HEADERS_ALL (
4302 AUCTION_HEADER_ID,
4303 DOCUMENT_NUMBER,
4304 AUCTION_HEADER_ID_ORIG_AMEND,
4305 AUCTION_HEADER_ID_ORIG_ROUND,
4306 AMENDMENT_NUMBER,
4307 AUCTION_TITLE,
4308 description,
4309 AUCTION_STATUS,
4310 AWARD_STATUS,
4311 AUCTION_TYPE,
4312 CONTRACT_TYPE,
4313 TRADING_PARTNER_NAME,
4314 TRADING_PARTNER_NAME_UPPER,
4315 TRADING_PARTNER_ID,
4316 trading_partner_contact_id,
4317 LANGUAGE_CODE,
4318 BID_VISIBILITY_CODE,
4319 ATTACHMENT_FLAG,
4320 CREATION_DATE,
4321 CREATED_BY,
4322 LAST_UPDATE_DATE,
4323 LAST_UPDATED_BY,
4324 DOCTYPE_ID,
4325 ORG_ID,
4326 BUYER_ID,
4327 MANUAL_EDIT_FLAG,
4328 SHARE_AWARD_DECISION,
4329 APPROVAL_STATUS,
4330 GLOBAL_AGREEMENT_FLAG,
4331 ATTRIBUTE_LINE_NUMBER,
4332 HAS_HDR_ATTR_FLAG,
4333 HAS_ITEMS_FLAG,
4334 STYLE_ID,
4335 PO_STYLE_ID,
4336 PRICE_BREAK_RESPONSE,
4337 NUMBER_OF_LINES,
4338 ADVANCE_NEGOTIABLE_FLAG,
4339 RECOUPMENT_NEGOTIABLE_FLAG,
4340 PROGRESS_PYMT_NEGOTIABLE_FLAG,
4341 RETAINAGE_NEGOTIABLE_FLAG,
4342 MAX_RETAINAGE_NEGOTIABLE_FLAG,
4343 SUPPLIER_ENTERABLE_PYMT_FLAG,
4344 PROGRESS_PAYMENT_TYPE,
4345 LINE_ATTRIBUTE_ENABLED_FLAG,
4346 LINE_MAS_ENABLED_FLAG,
4347 PRICE_ELEMENT_ENABLED_FLAG,
4348 RFI_LINE_ENABLED_FLAG,
4349 LOT_ENABLED_FLAG,
4350 GROUP_ENABLED_FLAG,
4351 LARGE_NEG_ENABLED_FLAG,
4352 HDR_ATTRIBUTE_ENABLED_FLAG,
4353 NEG_TEAM_ENABLED_FLAG,
4354 PROXY_BIDDING_ENABLED_FLAG,
4355 POWER_BIDDING_ENABLED_FLAG,
4356 AUTO_EXTEND_ENABLED_FLAG,
4357 TEAM_SCORING_ENABLED_FLAG,
4358 PRICE_TIERS_INDICATOR,
4359 QTY_PRICE_TIERS_ENABLED_FLAG,
4360 ship_to_location_id,
4361 bill_to_location_id,
4362 payment_terms_id,
4363 fob_code,
4364 freight_terms_code,
4365 rate_type,
4366 currency_code,
4367 security_level_code,
4368 PO_START_DATE,
4369 PO_END_DATE,
4370 open_auction_now_flag,
4371 open_bidding_date,
4372 CLOSE_bidding_date,
4373 publish_auction_now_flag,
4374 view_by_date,
4375 note_to_bidders,
4376 SHOW_BIDDER_NOTES,
4377 BID_SCOPE_CODE,
4378 BID_LIST_TYPE,
4379 BID_FREQUENCY_CODE,
4380 bid_ranking,
4381 rank_indicator,
4382 full_quantity_bid_code,
4383 multiple_rounds_flag,
4384 manual_close_flag,
4385 manual_extend_flag,
4386 award_approval_flag,
4387 auction_origination_code,
4388 pf_type_allowed,
4389 HDR_ATTR_ENABLE_WEIGHTS,
4390 AUCTION_STATUS_NAME,
4391 AWARD_STATUS_NAME,
4392 TRADING_PARTNER_CONTACT_NAME,
4393 ORIGINAL_CLOSE_BIDDING_DATE,
4394 AWARD_BY_DATE,
4395 PUBLISH_DATE,
4396 CLOSE_DATE,
4397 CANCEL_DATE,
4398 TIME_ZONE,
4399 AUTO_EXTEND_FLAG,
4400 AUTO_EXTEND_NUMBER,
4401 NUMBER_OF_EXTENSIONS,
4402 NUMBER_OF_BIDS,
4403 MIN_BID_DECREMENT,
4404 PRICE_DRIVEN_AUCTION_FLAG,
4405 CARRIER_CODE,
4406 RATE_DATE,
4407 RATE,
4408 WF_ITEM_KEY,
4409 WF_ROLE_NAME,
4410 AUTO_EXTEND_ALL_LINES_FLAG,
4411 ALLOW_OTHER_BID_CURRENCY_FLAG,
4412 SHIPPING_TERMS_CODE,
4413 SHIPPING_TERMS,
4414 AUTO_EXTEND_DURATION,
4415 PROXY_BID_ALLOWED_FLAG,
4416 PUBLISH_RATES_TO_BIDDERS_FLAG,
4417 ATTRIBUTES_EXIST,
4418 ORDER_NUMBER,
4419 DOCUMENT_TRACKING_ID,
4420 PO_TXN_FLAG,
4421 EVENT_ID,
4422 EVENT_TITLE,
4423 SEALED_AUCTION_STATUS,
4424 SEALED_ACTUAL_UNLOCK_DATE,
4425 SEALED_ACTUAL_UNSEAL_DATE,
4426 SEALED_UNLOCK_TP_CONTACT_ID,
4427 SEALED_UNSEAL_TP_CONTACT_ID,
4428 MODE_OF_TRANSPORT,
4429 MODE_OF_TRANSPORT_CODE,
4430 PO_AGREED_AMOUNT ,
4431 MIN_BID_CHANGE_TYPE,
4432 NUMBER_PRICE_DECIMALS,
4433 AUTO_EXTEND_TYPE_FLAG,
4434 AUCTION_HEADER_ID_PREV_ROUND,
4435 AUCTION_ROUND_NUMBER,
4436 AUTOEXTEND_CHANGED_FLAG,
4437 OFFER_TYPE,
4438 APPROVAL_REQUIRED_FLAG,
4439 MAX_RESPONSES,
4440 RESPONSE_ALLOWED_FLAG,
4441 FOB_NEG_FLAG,
4442 CARRIER_NEG_FLAG,
4443 FREIGHT_TERMS_NEG_FLAG,
4444 MAX_RESPONSE_ITERATIONS,
4445 PAYMENT_TERMS_NEG_FLAG,
4446 MODE_OF_TRANSPORT_NEG_FLAG,
4447 CONTRACT_ID,
4448 CONTRACT_VERSION_NUM,
4449 SHIPPING_TERMS_NEG_FLAG,
4450 SHIPPING_METHOD_NEG_FLAG,
4451 USE_REGIONAL_PRICING_FLAG,
4452 DERIVE_TYPE,
4453 PRE_DELETE_AUCTION_STATUS,
4454 DRAFT_LOCKED,
4455 DRAFT_LOCKED_BY,
4456 DRAFT_LOCKED_BY_CONTACT_ID ,
4457 DRAFT_LOCKED_DATE,
4458 DRAFT_UNLOCKED_BY,
4459 DRAFT_UNLOCKED_BY_CONTACT_ID,
4460 DRAFT_UNLOCKED_DATE,
4461 MAX_LINE_NUMBER,
4462 SHOW_BIDDER_SCORES,
4463 TEMPLATE_ID,
4464 REMINDER_DATE,
4465 WF_PONCOMPL_ITEM_KEY,
4466 HAS_PE_FOR_ALL_ITEMS,
4467 HAS_PRICE_ELEMENTS ,
4468 PO_MIN_REL_AMOUNT,
4469 OUTCOME_STATUS,
4470 SOURCE_REQS_FLAG,
4471 AWARD_COMPLETE_DATE,
4472 WF_PONCOMPL_CURRENT_ROUND,
4473 WF_APPROVAL_ITEM_KEY,
4474 SOURCE_DOC_ID,
4475 SOURCE_DOC_NUMBER,
4476 SOURCE_DOC_MSG,
4477 SOURCE_DOC_LINE_MSG,
4478 SOURCE_DOC_MSG_APP,
4479 TEMPLATE_SCOPE,
4480 TEMPLATE_STATUS,
4481 IS_TEMPLATE_FLAG,
4482 AWARD_APPROVAL_STATUS,
4483 AWARD_APPR_AME_TRANS_ID ,
4484 AWARD_APPR_AME_TRANS_PREV_ID,
4485 WF_AWARD_APPROVAL_ITEM_KEY,
4486 AMENDMENT_DESCRIPTION,
4487 AUCTION_HEADER_ID_PREV_AMEND,
4488 AWARD_APPR_AME_TXN_DATE,
4489 HDR_ATTR_DISPLAY_SCORE,
4490 HDR_ATTR_MAXIMUM_SCORE,
4491 CONTERMS_EXIST_FLAG,
4492 CONTERMS_ARTICLES_UPD_DATE,
4493 CONTERMS_DELIV_UPD_DATE,
4494 AWARD_MODE,
4495 AWARD_DATE,
4496 MAX_INTERNAL_LINE_NUM,
4497 MAX_BID_COLOR_SEQUENCE_ID,
4498 INT_ATTRIBUTE_CATEGORY,
4499 INT_ATTRIBUTE1,
4500 INT_ATTRIBUTE2,
4501 INT_ATTRIBUTE3,
4502 INT_ATTRIBUTE4,
4503 INT_ATTRIBUTE5,
4504 INT_ATTRIBUTE6,
4505 INT_ATTRIBUTE7,
4506 INT_ATTRIBUTE8,
4507 INT_ATTRIBUTE9,
4508 INT_ATTRIBUTE10,
4509 INT_ATTRIBUTE11,
4510 INT_ATTRIBUTE12 ,
4511 INT_ATTRIBUTE13 ,
4512 INT_ATTRIBUTE14 ,
4513 INT_ATTRIBUTE15,
4514 EXT_ATTRIBUTE_CATEGORY,
4515 EXT_ATTRIBUTE1,
4516 EXT_ATTRIBUTE2,
4517 EXT_ATTRIBUTE3,
4518 EXT_ATTRIBUTE4,
4519 EXT_ATTRIBUTE5 ,
4520 EXT_ATTRIBUTE6 ,
4521 EXT_ATTRIBUTE7 ,
4522 EXT_ATTRIBUTE8,
4523 EXT_ATTRIBUTE9,
4524 EXT_ATTRIBUTE10,
4525 EXT_ATTRIBUTE11,
4526 EXT_ATTRIBUTE12,
4527 EXT_ATTRIBUTE13,
4528 EXT_ATTRIBUTE14 ,
4529 EXT_ATTRIBUTE15,
4530 INCLUDE_PDF_IN_EXTERNAL_PAGE,
4531 ABSTRACT_DETAILS,
4532 ABSTRACT_STATUS,
4533 SUPPLIER_VIEW_TYPE,
4534 IS_PAUSED ,
4535 PAUSE_REMARKS,
4536 LAST_PAUSE_DATE,
4537 MAX_DOCUMENT_LINE_NUM,
4538 PROJECT_ID ,
4539 HAS_SCORING_TEAMS_FLAG ,
4540 SCORING_LOCK_DATE,
4541 SCORING_LOCK_TP_CONTACT_ID ,
4542 REQUEST_ID ,
4543 REQUEST_DATE ,
4544 REQUESTED_BY ,
4545 IMPORT_FILE_NAME ,
4546 LAST_LINE_NUMBER ,
4547 GLOBAL_TEMPLATE_FLAG,
4548 CONTRACT_TEMPLATE_ID,
4549 COMPLETE_FLAG ,
4550 BID_DECREMENT_METHOD,
4551 DISPLAY_BEST_PRICE_BLIND_FLAG,
4552 FIRST_LINE_CLOSE_DATE ,
4553 STAGGERED_CLOSING_INTERVAL ,
4554 ENFORCE_PREVRND_BID_PRICE_FLAG,
4555 AUTO_EXTEND_MIN_TRIGGER_RANK ,
4556 TWO_PART_FLAG ,
4557 TECHNICAL_LOCK_STATUS,
4558 TECHNICAL_EVALUATION_STATUS,
4559 TECHNICAL_ACTUAL_UNLOCK_DATE,
4560 TECHNICAL_ACTUAL_UNSEAL_DATE ,
4561 TECHNICAL_UNLOCK_TP_CONTACT_ID,
4562 TECHNICAL_UNSEAL_TP_CONTACT_ID,
4563 EMD_ENABLE_FLAG,
4564 EMD_AMOUNT,
4565 EMD_DUE_DATE,
4566 EMD_TYPE,
4567 EMD_GUARANTEE_EXPIRY_DATE,
4568 EMD_ADDITIONAL_INFORMATION,
4569 POST_EMD_TO_FINANCE,
4570 NO_OF_NOTIFICATIONS_SENT,
4571 NEGOTIATION_REQUESTER_ID,
4572 SUPP_REG_QUAL_FLAG,
4573 SUPP_EVAL_FLAG,
4574 HIDE_TERMS_FLAG,
4575 HIDE_ABSTRACT_FORMS_FLAG,
4576 HIDE_ATTACHMENTS_FLAG,
4577 INTERNAL_EVAL_FLAG,
4578 HDR_SUPP_ATTR_ENABLED_FLAG,
4579 INTGR_HDR_ATTR_FLAG,
4580 INTGR_HDR_ATTACH_FLAG,
4581 LINE_SUPP_ATTR_ENABLED_FLAG,
4582 ITEM_SUPP_ATTR_ENABLED_FLAG,
4583 INTGR_CAT_LINE_ATTR_FLAG,
4584 INTGR_ITEM_LINE_ATTR_FLAG,
4585 INTGR_CAT_LINE_ASL_FLAG,
4586 INTERNAL_ONLY_FLAG,
4587 UDA_TEMPLATE_ID,
4588 UDA_TEMPLATE_DATE,
4589 standard_form,
4590 document_format
4591 ,ALLOW_WITHDRAW_FLAG,ALLOW_UNSOL_OFFER_LINES,ALLOW_MULTIPLE_ACTIVE_OFFERS,
4592 --EFFECTIVE_DATE,
4593 FAIR_OPP_NOTICE_FLAG , FEDERAL_PUBLICATION_EXCEPTION
4594 ,NO_OF_COPIES, REVISION, SIGNED_DATE, SOLICITATION_TYPE, UMBRELLA_PROGRAM_ID
4595 ,CD_EDITBYUSER_FLAG, CD_GENERATED_DATE, CD_GENERATED_FLAG, AMENDUPDATED_AFTERCDGENERATED
4596
4597 ) VALUES(
4598 neg_header_record_data.auction_header_id, -- AUCTION_HEADER_ID
4599 neg_header_record_data.auction_header_id, -- DOCUMENT_NUMBER
4600 neg_header_record_data.auction_header_id, -- AUCTION_HEADER_ID_ORIG_AMEND,
4601 neg_header_record_data.auction_header_id, -- AUCTION_HEADER_ID_ORIG_ROUND,
4602 0, -- AMENDMENT_NUMBER
4603 neg_header_record_data.auction_title, -- AUCTION_TITLE
4604 neg_header_record_data.description,
4605 'DRAFT', -- AUCTION_STATUS
4606 'NO', -- AWARD_STATUS
4607 neg_header_record_data.auction_type, -- AUCTION_TYPE
4608 neg_header_record_data.CONTRACT_TYPE, -- CONTRACT_TYPE
4609 neg_header_record_data.trading_partner_name, -- TRADING_PARTNER_NAME
4610 upper(neg_header_record_data.trading_partner_name), -- TRADING_PARTNER_NAME_UPPER
4611 neg_header_record_data.trading_partner_id, -- TRADING_PARTNER_ID
4612 neg_header_record_data.trading_partner_contact_id,
4613 userenv('LANG'), -- LANGUAGE_CODE
4614 neg_header_record_data.bid_visibility_code, -- BID_VISIBILITY_CODE
4615 'N', -- ATTACHMENT_FLAG
4616 Nvl(neg_header_record_data.creation_date, SYSDATE), -- CREATION_DATE
4617 Nvl(neg_header_record_data.created_by,fnd_global.user_id), -- CREATED_BY
4618 Nvl(neg_header_record_data.last_update_date,SYSDATE), -- LAST_UPDATE_DATE
4619 Nvl(neg_header_record_data.last_updated_by,fnd_global.user_id), -- LAST_UPDATED_BY
4620 neg_header_record_data.doctype_id, -- DOCTYPE_ID
4621 neg_header_record_data.ORG_ID, -- ORG_ID
4622 null, -- BUYER_ID
4623 'N', -- MANUAL_EDIT_FLAG
4624 'N', -- SHARE_AWARD_DECISION
4625 neg_header_record_data.approval_status, -- APPROVAL_STATUS
4626 Nvl(neg_header_record_data.GLOBAL_AGREEMENT_FLAG,'Y'), -- GLOBAL_AGREEMENT_FLAG
4627 -1, -- ATTRIBUTE_LINE_NUMBER
4628 null, -- HAS_HDR_ATTR_FLAG
4629 null, -- HAS_ITEMS_FLAG
4630 neg_header_record_data.STYLE_ID, -- STYLE_ID
4631 neg_header_record_data.PO_STYLE_ID, -- PO_STYLE_ID
4632 neg_header_record_data.price_break_response, -- PRICE_BREAK_RESPONSE,
4633 0, -- NUMBER_OF_LINES
4634 Nvl(neg_header_record_data.ADVANCE_NEGOTIABLE_FLAG,'N'), --ADVANCE_NEGOTIABLE_FLAG
4635 Nvl(neg_header_record_data.RECOUPMENT_NEGOTIABLE_FLAG,'N'), --RECOUPMENT_NEGOTIABLE_FLAG
4636 Nvl(neg_header_record_data.PROGRESS_PYMT_NEGOTIABLE_FLAG,'N'), --PROGRESS_PYMT_NEGOTIABLE_FLAG
4637 Nvl(neg_header_record_data.RETAINAGE_NEGOTIABLE_FLAG,'N'), --RETAINAGE_NEGOTIABLE_FLAG
4638 Nvl(neg_header_record_data.MAX_RETAINAGE_NEGOTIABLE_FLAG,'N'), --MAX_RETAINAGE_NEGOTIABLE_FLAG
4639 neg_header_record_data.SUPPLIER_ENTERABLE_PYMT_FLAG, --SUPPLIER_ENTERABLE_PYMT_FLAG
4640 neg_header_record_data.progress_payment_type, --PROGRESS_PAYMENT_TYPE
4641 neg_header_record_data.line_attribute_enabled_flag,
4642 neg_header_record_data.line_mas_enabled_flag,
4643 neg_header_record_data.price_element_enabled_flag,
4644 neg_header_record_data.rfi_line_enabled_flag,
4645 neg_header_record_data.lot_enabled_flag,
4646 neg_header_record_data.group_enabled_flag,
4647 neg_header_record_data.large_neg_enabled_flag,
4648 neg_header_record_data.hdr_attribute_enabled_flag,
4649 neg_header_record_data.neg_team_enabled_flag,
4650 neg_header_record_data.proxy_bidding_enabled_flag,
4651 neg_header_record_data.power_bidding_enabled_flag,
4652 neg_header_record_data.auto_extend_enabled_flag,
4653 neg_header_record_data.team_scoring_enabled_flag,
4654 neg_header_record_data.price_tiers_indicator,
4655 neg_header_record_data.qty_price_tiers_enabled_flag,
4656 neg_header_record_data.ship_to_location_id,
4657 neg_header_record_data.bill_to_location_id,
4658 neg_header_record_data.payment_terms_id,
4659 neg_header_record_data.fob_code,
4660 neg_header_record_data.freight_terms_code,
4661 neg_header_record_data.rate_type,
4662 neg_header_record_data.currency_code,
4663 neg_header_record_data.security_level_code,
4664 neg_header_record_data.PO_START_DATE,
4665 neg_header_record_data.PO_END_DATE,
4666 Nvl(neg_header_record_data.open_auction_now_flag,'N'),
4667 Decode(Nvl(neg_header_record_data.open_auction_now_flag,'N'),'Y',null,neg_header_record_data.open_bidding_date),
4668 neg_header_record_data.close_bidding_date,
4669 Nvl(neg_header_record_data.publish_auction_now_flag,'N'),
4670 Decode(Nvl(neg_header_record_data.publish_auction_now_flag,'N'),'Y',null,neg_header_record_data.view_by_date),
4671 neg_header_record_data.note_to_bidders,
4672 Nvl(neg_header_record_data.SHOW_BIDDER_NOTES,'N'),
4673 Nvl(neg_header_record_data.BID_SCOPE_CODE,'MUST_BID_ALL_ITEMS'),
4674 Nvl(neg_header_record_data.BID_LIST_TYPE,'PUBLIC_BID_LIST'),
4675 Nvl(neg_header_record_data.BID_FREQUENCY_CODE,'SINGLE_BID_ONLY'),
4676 Nvl(neg_header_record_data.bid_ranking,'PRICE_ONLY'),
4677 Nvl(neg_header_record_data.rank_indicator,'NONE'),
4678 Nvl(neg_header_record_data.full_quantity_bid_code,'FULL_QTY_BIDS_REQD'),
4679 Decode(l_document_type,'REQUEST_FOR_QUOTE','Y','SOLICITATION','Y',Nvl(neg_header_record_data.multiple_rounds_flag,'N')),
4680 Nvl(neg_header_record_data.manual_close_flag,'N'),
4681 Decode(l_document_type,'SOLICITATION','N',Nvl(neg_header_record_data.manual_extend_flag,'N')),
4682 Nvl(neg_header_record_data.award_approval_flag,'N'),
4683 neg_header_record_data.auction_origination_code,
4684 Decode(l_document_type,'REQUEST_FOR_INFORMATION','N', Nvl(neg_header_record_data.pf_type_allowed,'NONE')),
4685 neg_header_record_data.HDR_ATTR_ENABLE_WEIGHTS,
4686 null,
4687 null,
4688 neg_header_record_data.trading_partner_contact_name,
4689 null,
4690 null,
4691 null,
4692 null,
4693 null,
4694 null,
4695 neg_header_record_data.AUTO_EXTEND_FLAG,
4696 neg_header_record_data.AUTO_EXTEND_NUMBER,
4697 NULL,--neg_header_record_data.NUMBER_OF_EXTENSIONS,
4698 0,
4699 neg_header_record_data.MIN_BID_DECREMENT,
4700 neg_header_record_data.PRICE_DRIVEN_AUCTION_FLAG,
4701 neg_header_record_data.CARRIER_CODE,
4702 neg_header_record_data.RATE_DATE,
4703 NULL,--neg_header_record_data.RATE,
4704
4705 null,
4706 null,
4707 neg_header_record_data.AUTO_EXTEND_ALL_LINES_FLAG,
4708 neg_header_record_data.ALLOW_OTHER_BID_CURRENCY_FLAG,
4709 null,
4710 null,
4711 neg_header_record_data.AUTO_EXTEND_DURATION,
4712 neg_header_record_data.PROXY_BID_ALLOWED_FLAG,
4713 neg_header_record_data.PUBLISH_RATES_TO_BIDDERS_FLAG,
4714 null,
4715 null,
4716 null,
4717 null,
4718 neg_header_record_data.EVENT_ID,
4719 neg_header_record_data.EVENT_TITLE,
4720 neg_header_record_data.SEALED_AUCTION_STATUS,
4721 null,
4722 null,
4723 null,
4724 null,
4725 null,
4726 null,
4727 null,
4728 neg_header_record_data.MIN_BID_CHANGE_TYPE,
4729 neg_header_record_data.NUMBER_PRICE_DECIMALS,
4730 neg_header_record_data.AUTO_EXTEND_TYPE_FLAG,
4731 NULL, --neg_header_record_data.auction_header_id,
4732 null,
4733 null,
4734 null,
4735 'N',
4736 null,
4737 'Y',
4738 'N',
4739 'N',
4740 'N',
4741 null,
4742 'N',
4743 'N',
4744 null,
4745 null,
4746 'N',
4747 'N',
4748 null,
4749 null,
4750 null,
4751 'Y',
4752 neg_header_record_data.trading_partner_id,
4753 neg_header_record_data.trading_partner_contact_id,
4754 sysdate,
4755 null,
4756 NULL,
4757 null,
4758 null,
4759 neg_header_record_data.SHOW_BIDDER_SCORES,
4760 null,
4761 null,
4762 null,
4763 null,
4764 null ,
4765 null,
4766 null,
4767 null,
4768 null,
4769 null,
4770 null,
4771 null,
4772 null,
4773 null,
4774 null,
4775 null,
4776 null,
4777 null,
4778 null,
4779 'NOT_REQUIRED',
4780 null ,
4781 null,
4782 null,
4783 neg_header_record_data.amendment_description,
4784 NULL,--neg_header_record_data.auction_header_id,
4785 null,
4786 'N',
4787 5,
4788 null,
4789 null,
4790 null,
4791 null,
4792 null,
4793 null,
4794 null,
4795 neg_header_record_data.INT_ATTRIBUTE_CATEGORY,
4796 neg_header_record_data.INT_ATTRIBUTE1,
4797 neg_header_record_data.INT_ATTRIBUTE2,
4798 neg_header_record_data.INT_ATTRIBUTE3,
4799 neg_header_record_data.INT_ATTRIBUTE4,
4800 neg_header_record_data.INT_ATTRIBUTE5,
4801 neg_header_record_data.INT_ATTRIBUTE6,
4802 neg_header_record_data.INT_ATTRIBUTE7,
4803 neg_header_record_data.INT_ATTRIBUTE8,
4804 neg_header_record_data.INT_ATTRIBUTE9,
4805 neg_header_record_data.INT_ATTRIBUTE10,
4806 neg_header_record_data.INT_ATTRIBUTE11,
4807 neg_header_record_data.INT_ATTRIBUTE12 ,
4808 neg_header_record_data.INT_ATTRIBUTE13 ,
4809 neg_header_record_data.INT_ATTRIBUTE14 ,
4810 neg_header_record_data.INT_ATTRIBUTE15,
4811 neg_header_record_data.EXT_ATTRIBUTE_CATEGORY,
4812 neg_header_record_data.EXT_ATTRIBUTE1,
4813 neg_header_record_data.EXT_ATTRIBUTE2,
4814 neg_header_record_data.EXT_ATTRIBUTE3,
4815 neg_header_record_data.EXT_ATTRIBUTE4,
4816 neg_header_record_data.EXT_ATTRIBUTE5 ,
4817 neg_header_record_data.EXT_ATTRIBUTE6 ,
4818 neg_header_record_data.EXT_ATTRIBUTE7 ,
4819 neg_header_record_data.EXT_ATTRIBUTE8,
4820 neg_header_record_data.EXT_ATTRIBUTE9,
4821 neg_header_record_data.EXT_ATTRIBUTE10,
4822 neg_header_record_data.EXT_ATTRIBUTE11,
4823 neg_header_record_data.EXT_ATTRIBUTE12,
4824 neg_header_record_data.EXT_ATTRIBUTE13,
4825 neg_header_record_data.EXT_ATTRIBUTE14 ,
4826 neg_header_record_data.EXT_ATTRIBUTE15,
4827 null,
4828 null,
4829 null,
4830 neg_header_record_data.SUPPLIER_VIEW_TYPE,
4831 null ,
4832 null,
4833 null,
4834 0,
4835 neg_header_record_data.PROJECT_ID,
4836 null,
4837 null,
4838 null ,
4839 null ,
4840 null ,
4841 null ,
4842 null ,
4843 null ,
4844 null,
4845 null,
4846 null ,
4847 null,
4848 neg_header_record_data.DISPLAY_BEST_PRICE_BLIND_FLAG,
4849 neg_header_record_data.FIRST_LINE_CLOSE_DATE ,
4850 neg_header_record_data.STAGGERED_CLOSING_INTERVAL ,
4851 neg_header_record_data.ENFORCE_PREVRND_BID_PRICE_FLAG,
4852 neg_header_record_data.AUTO_EXTEND_MIN_TRIGGER_RANK ,
4853 neg_header_record_data.TWO_PART_FLAG ,
4854 null,
4855 null,
4856 null,
4857 null ,
4858 null,
4859 null,
4860 'N',
4861 null,
4862 null,
4863 null,
4864 null,
4865 null,
4866 null,
4867 null,
4868 neg_header_record_data.trading_partner_contact_id,
4869 neg_header_record_data.SUPP_REG_QUAL_FLAG,
4870 neg_header_record_data.SUPP_EVAL_FLAG,
4871 neg_header_record_data.HIDE_TERMS_FLAG,
4872 neg_header_record_data.HIDE_ABSTRACT_FORMS_FLAG,
4873 neg_header_record_data.HIDE_ATTACHMENTS_FLAG,
4874 neg_header_record_data.INTERNAL_EVAL_FLAG,
4875 neg_header_record_data.HDR_SUPP_ATTR_ENABLED_FLAG,
4876 neg_header_record_data.INTGR_HDR_ATTR_FLAG,
4877 neg_header_record_data.INTGR_HDR_ATTACH_FLAG,
4878 neg_header_record_data.LINE_SUPP_ATTR_ENABLED_FLAG,
4879 neg_header_record_data.ITEM_SUPP_ATTR_ENABLED_FLAG,
4880 neg_header_record_data.INTGR_CAT_LINE_ATTR_FLAG,
4881 neg_header_record_data.INTGR_ITEM_LINE_ATTR_FLAG,
4882 neg_header_record_data.INTGR_CAT_LINE_ASL_FLAG,
4883 'N',
4884 neg_header_record_data.UDA_TEMPLATE_ID,
4885 neg_header_record_data.UDA_TEMPLATE_DATE,
4886 neg_header_record_data.standard_form,
4887 neg_header_record_data.document_format
4888 ,neg_header_record_data.ALLOW_WITHDRAW_FLAG,neg_header_record_data.ALLOW_UNSOL_OFFER_LINES,neg_header_record_data.ALLOW_MULTIPLE_ACTIVE_OFFERS
4889 --,neg_header_record_data.EFFECTIVE_DATE
4890 ,neg_header_record_data.FAIR_OPP_NOTICE_FLAG
4891 ,neg_header_record_data.FEDERAL_PUBLICATION_EXCEPTION
4892 ,neg_header_record_data.NO_OF_COPIES
4893 ,neg_header_record_data.REVISION
4894 ,neg_header_record_data.SIGNED_DATE
4895 ,neg_header_record_data.SOLICITATION_TYPE
4896 ,neg_header_record_data.UMBRELLA_PROGRAM_ID
4897 ,neg_header_record_data.CD_EDITBYUSER_FLAG
4898 ,neg_header_record_data.CD_GENERATED_DATE
4899 ,neg_header_record_data.CD_GENERATED_FLAG
4900 ,neg_header_record_data.AMENDUPDATED_AFTERCDGENERATED
4901 );
4902
4903 update pon_item_prices_interface SET auction_header_id = neg_header_record_data.auction_header_id WHERE batch_id = p_batch_id;
4904 update PON_AUC_ATTRIBUTES_INTERFACE SET auction_header_id = neg_header_record_data.auction_header_id WHERE batch_id = p_batch_id;
4905 update pon_attribute_scores_interface SET auction_header_id = neg_header_record_data.auction_header_id WHERE batch_id = p_batch_id;
4906 update pon_bid_parties_interface SET auction_header_id = neg_header_record_data.auction_header_id WHERE batch_id = p_batch_id;
4907 update PON_NEG_TEAM_INTERFACE SET auction_header_id = neg_header_record_data.auction_header_id WHERE batch_id = p_batch_id;
4908 update PON_AUC_PRICE_ELEMENTS_INT SET auction_header_id = neg_header_record_data.auction_header_id WHERE batch_id = p_batch_id;
4909 update pon_auc_price_breaks_interface SET auction_header_id = neg_header_record_data.auction_header_id WHERE batch_id = p_batch_id;
4910 update pon_auc_price_differ_int SET auction_header_id = neg_header_record_data.auction_header_id WHERE batch_id = p_batch_id;
4911 --x_auction_header_id := neg_header_record_data.auction_header_id;
4912
4913
4914 print_log('Header information created for batch id ' || p_batch_id || ' auction_header_id ' || neg_header_record_data.auction_header_id);
4915
4916 EXCEPTION
4917 WHEN OTHERS THEN
4918 print_log('Sqlcode ' || SQLCODE || 'sqlerrm ' || SQLERRM );
4919 x_return_status := FND_API.G_RET_STS_ERROR;
4920
4921 END create_negotiation_header;
4922
4923 PROCEDURE header_initial_validation(
4924 p_batch_id IN NUMBER,
4925 x_return_status IN OUT NOCOPY VARCHAR2
4926 )
4927 IS
4928 -- PRAGMA AUTONOMOUS_TRANSACTION;
4929
4930 dummy1 VARCHAR2(100);
4931 l_val_err VARCHAR2(1);
4932
4933 l_doctype_Id pon_auction_Headers_all.doctype_id%TYPE;
4934 rfi_doctype_id pon_auction_Headers_all.doctype_id%TYPE;
4935 l_org_Id pon_auction_Headers_all.org_id%TYPE;
4936 l_style_Id pon_auction_Headers_all.style_id%TYPE;
4937 l_po_style_Id pon_auction_Headers_all.po_style_id%TYPE;
4938 l_po_style_name pon_auction_Headers_interface.po_style_name%TYPE;
4939 l_contract_type pon_auction_headers_all.contract_type%TYPE;
4940 l_tpc_id fnd_user.user_id%TYPE;
4941 l_tpc_name fnd_user.user_Name%TYPE;
4942
4943 l_dummy_data VARCHAR2(100);
4944 l_extra_info VARCHAR2(100);
4945 l_row_in_hr VARCHAR2(100);
4946 l_vendor_relationship VARCHAR2(100);
4947 l_enterprise_relationship VARCHAR2(100);
4948 l_status VARCHAR2(100);
4949 l_exception_msg VARCHAR2(100);
4950
4951 l_cp_user_id NUMBER;
4952 l_cp_login_id NUMBER;
4953
4954
4955 BEGIN
4956 print_Log('header_initial_validation begin: p_batch_id ' || p_batch_id);
4957 l_cp_user_id := fnd_global.user_id;
4958 l_cp_login_id := fnd_global.login_id;
4959
4960 SELECT doctype_id, org_id, style_id, po_style_name, trading_partner_contact_name
4961 INTO l_doctype_id, l_org_id, l_style_id, l_po_style_name, l_tpc_name
4962 FROM pon_auction_headers_Interface WHERE batch_id = p_batch_id;
4963
4964 SELECT DOCTYPE_ID INTO rfi_doctype_id FROM pon_auc_doctypes WHERE INTERNAL_NAME='REQUEST_FOR_INFORMATION';
4965
4966 BEGIN
4967 SELECT user_id INTO l_tpc_id
4968 FROM fnd_user
4969 WHERE user_Name = l_tpc_name
4970 AND Nvl(end_date,SYSDATE + 1) > sysdate;
4971
4972 pon_sourcing_user_manager_pkg.validate_user_data(l_tpc_name,
4973 l_dummy_data,
4974 l_extra_info,
4975 l_row_in_hr,
4976 l_vendor_relationship,
4977 l_enterprise_relationship,
4978 l_status,
4979 l_exception_msg);
4980
4981 IF ( l_row_in_hr <> 'Y' OR l_extra_info = 'Y'
4982 OR l_enterprise_relationship <> 'Y' ) THEN
4983 RAISE FND_API.G_EXC_ERROR;
4984 END IF;
4985 EXCEPTION
4986 WHEN OTHERS THEN
4987 INSERT INTO PON_INTERFACE_ERRORS
4988 (
4989 INTERFACE_TYPE ,
4990 ERROR_MESSAGE_NAME,
4991 BATCH_ID ,
4992 ENTITY_TYPE ,
4993 AUCTION_HEADER_ID ,
4994 CREATED_BY ,
4995 CREATION_DATE ,
4996 LAST_UPDATED_BY ,
4997 LAST_UPDATE_DATE ,
4998 LAST_UPDATE_LOGIN
4999 )
5000 VALUES
5001 (
5002 g_interface_type,
5003 'PON_IMPORT_INVALID_TPC',
5004 p_batch_id,
5005 'HEADER',
5006 NULL,
5007 l_cp_user_id,
5008 SYSDATE,
5009 l_cp_user_id,
5010 SYSDATE,
5011 l_cp_login_id
5012 );
5013 END;
5014
5015 BEGIN
5016 --Bug 16801033
5017 IF(l_doctype_id<>rfi_doctype_id) THEN
5018 SELECT pdl.DOCUMENT_SUBTYPE, pdh.style_id INTO l_contract_type, l_po_style_id
5019 FROM po_doc_style_headers pdh, po_all_doc_style_Lines pdl
5020 WHERE pdh.style_id = pdl.style_id
5021 AND pdh.status= 'ACTIVE'
5022 AND pdl.enabled_flag= 'Y'
5023 and Nvl(pdh.clm_flag,'N') = PON_CLM_UTIL_PKG.ISCLMRESP
5024 AND pdl.LANGUAGE=UserEnv('LANG')
5025 AND pdl.display_name = l_po_style_name;
5026 END IF;
5027
5028 EXCEPTION
5029 WHEN OTHERS THEN
5030 INSERT INTO PON_INTERFACE_ERRORS
5031 (
5032 INTERFACE_TYPE ,
5033 ERROR_MESSAGE_NAME,
5034 BATCH_ID ,
5035 ENTITY_TYPE ,
5036 AUCTION_HEADER_ID ,
5037 CREATED_BY ,
5038 CREATION_DATE ,
5039 LAST_UPDATED_BY ,
5040 LAST_UPDATE_DATE ,
5041 LAST_UPDATE_LOGIN
5042 )
5043 VALUES
5044 (
5045 g_interface_type,
5046 'PON_IMPORT_INVALID_POSTYLE',
5047 p_batch_id,
5048 'HEADER',
5049 NULL,
5050 l_cp_user_id,
5051 SYSDATE,
5052 l_cp_user_id,
5053 SYSDATE,
5054 l_cp_login_id
5055 );
5056 END;
5057
5058 print_Log('header_initial_validation : batch_id validated ');
5059
5060 begin
5061 SELECT doctype_group_name INTO dummy1 FROM pon_auc_doctypes WHERE doctype_id = l_doctype_id;
5062 EXCEPTION
5063 WHEN OTHERS THEN
5064 INSERT INTO PON_INTERFACE_ERRORS
5065 (
5066 INTERFACE_TYPE ,
5067 ERROR_MESSAGE_NAME,
5068 BATCH_ID ,
5069 ENTITY_TYPE ,
5070 AUCTION_HEADER_ID ,
5071 CREATED_BY ,
5072 CREATION_DATE ,
5073 LAST_UPDATED_BY ,
5074 LAST_UPDATE_DATE ,
5075 LAST_UPDATE_LOGIN
5076 )
5077 VALUES(
5078 g_interface_type,
5079 'PON_IMPORT_INVALID_DOCTYPE',
5080 p_batch_id,
5081 'HEADER',
5082 NULL,
5083 l_cp_user_id,
5084 SYSDATE,
5085 l_cp_user_id,
5086 SYSDATE,
5087 l_cp_login_id);
5088 END;
5089
5090
5091 INSERT ALL
5092 WHEN (l_org_id IS NULL OR
5093 NOT EXISTS(SELECT 'Y' FROM hr_operating_units WHERE organization_id = l_org_id))
5094 THEN INTO PON_INTERFACE_ERRORS
5095 (
5096 INTERFACE_TYPE ,
5097 ERROR_MESSAGE_NAME,
5098 BATCH_ID ,
5099 ENTITY_TYPE ,
5100 AUCTION_HEADER_ID ,
5101 CREATED_BY ,
5102 CREATION_DATE ,
5103 LAST_UPDATED_BY ,
5104 LAST_UPDATE_DATE ,
5105 LAST_UPDATE_LOGIN
5106 )
5107 VALUES
5108 (
5109 g_interface_type,
5110 'PON_IMPORT_INVALID_ORG',
5111 p_batch_id,
5112 'HEADER',
5113 NULL,
5114 l_cp_user_id,
5115 SYSDATE,
5116 l_cp_user_id,
5117 SYSDATE,
5118 l_cp_login_id
5119 )
5120 WHEN (l_style_id IS NULL
5121 OR NOT EXISTS(select 1 from pon_negotiation_styles_vl ds, pon_doctype_styles ts
5122 WHERE ds.style_id = l_style_id
5123 AND ds.style_id = ts.style_id
5124 and ds.status = 'ACTIVE'
5125 and ts.doctype_id = l_doctype_id
5126 and ts.enabled_flag = 'Y'))
5127 THEN INTO PON_INTERFACE_ERRORS
5128 (
5129 INTERFACE_TYPE ,
5130 ERROR_MESSAGE_NAME,
5131 BATCH_ID ,
5132 ENTITY_TYPE ,
5133 AUCTION_HEADER_ID ,
5134 CREATED_BY ,
5135 CREATION_DATE ,
5136 LAST_UPDATED_BY ,
5137 LAST_UPDATE_DATE ,
5138 LAST_UPDATE_LOGIN
5139 )
5140 VALUES
5141 (
5142 g_interface_type,
5143 'PON_IMPORT_INVALID_NEGSTYLE',
5144 p_batch_id,
5145 'HEADER',
5146 NULL,
5147 l_cp_user_id,
5148 SYSDATE,
5149 l_cp_user_id,
5150 SYSDATE,
5151 l_cp_login_id
5152 )
5153 --Bug 16801033
5154 WHEN ((l_doctype_id<>rfi_doctype_id AND (l_po_style_id IS NULL
5155 OR NOT EXISTS(SELECT 'Y' FROM po_doc_style_headers WHERE STYLE_ID = l_po_style_id
5156 and Nvl(clm_flag,'N') = PON_CLM_UTIL_PKG.ISCLMRESP)))
5157 OR (l_doctype_id=rfi_doctype_id AND (l_po_style_id IS not NULL OR l_po_style_name IS NOT null))
5158 )
5159 THEN INTO PON_INTERFACE_ERRORS
5160 (
5161 INTERFACE_TYPE ,
5162 ERROR_MESSAGE_NAME,
5163 BATCH_ID ,
5164 ENTITY_TYPE ,
5165 AUCTION_HEADER_ID ,
5166 CREATED_BY ,
5167 CREATION_DATE ,
5168 LAST_UPDATED_BY ,
5169 LAST_UPDATE_DATE ,
5170 LAST_UPDATE_LOGIN
5171 )
5172 VALUES
5173 (
5174 g_interface_type,
5175 'PON_IMPORT_INVALID_POSTYLE',
5176 p_batch_id,
5177 'HEADER',
5178 NULL,
5179 l_cp_user_id,
5180 SYSDATE,
5181 l_cp_user_id,
5182 SYSDATE,
5183 l_cp_login_id
5184 )
5185 SELECT 1 FROM dual;
5186 --l_val_err := 'Y';
5187 --END IF;
5188
5189 BEGIN
5190 SELECT 'E' status
5191 INTO x_return_status
5192 FROM dual
5193 WHERE EXISTS
5194 (SELECT * FROM pon_interface_errors WHERE BATCH_ID= p_batch_Id
5195 );
5196 EXCEPTION
5197 WHEN No_Data_Found THEN
5198 x_return_status:=FND_API.G_RET_STS_SUCCESS;
5199 END;
5200
5201 EXCEPTION
5202 WHEN OTHERS THEN
5203 x_return_status := FND_API.G_RET_STS_ERROR;
5204
5205 END header_initial_validation;
5206
5207 PROCEDURE process_negotiation_header(
5208 p_batch_id IN NUMBER,
5209 p_tp_id IN NUMBER,
5210 x_auction_header_id OUT NOCOPY NUMBER,
5211 x_return_status IN OUT NOCOPY VARCHAR2
5212 )
5213 AS
5214 dummy1 VARCHAR2(100);
5215 approval_required_flag VARCHAR2(1);
5216
5217 BEGIN
5218
5219 print_log('process_negotiation_header begin ');
5220 header_initial_validation(
5221 p_batch_id,
5222 x_return_status
5223 );
5224
5225 IF( x_return_status = 'E') THEN
5226 print_Log('process_negotiation_header: Error in pon_auction_headers_interface table. Please check pon_interface_errors for more details' );
5227 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_HEADER_VAL_ERR');
5228 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_id);
5229 FND_MSG_PUB.ADD;
5230 RETURN;
5231 END IF;
5232
5233 print_log(' Initial set of validations done ');
5234
5235 -- Call to populate neg_header_record_data record
5236 -- This record will be used to insert data in pon_auction_headers_all table
5237 populate_neg_header_rec(
5238 p_batch_id,
5239 'N', -- is_amendment
5240 NULL -- src_auction_header_id
5241 );
5242
5243 -- Below call will populate org based, neg style based and po style based data in neg_header_record_data record
5244 init_rule_based_header_data('N',NULL);
5245
5246 validate_header(
5247 p_batch_id,
5248 p_tp_id,
5249 'N',
5250 NULL
5251 );
5252
5253 BEGIN
5254 SELECT 'E' status
5255 INTO x_return_status
5256 FROM dual
5257 WHERE EXISTS
5258 (SELECT * FROM pon_interface_errors WHERE BATCH_ID= p_batch_Id
5259 );
5260 EXCEPTION
5261 WHEN No_Data_Found THEN
5262 x_return_status:=FND_API.G_RET_STS_SUCCESS;
5263 END;
5264
5265 IF(x_return_status=FND_API.G_RET_STS_ERROR) THEN
5266 print_Log('Error in pon_auction_headers_interface table. Please check pon_interface_errors for more details' );
5267 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_HEADER_VAL_ERR');
5268 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_id);
5269 FND_MSG_PUB.ADD;
5270 RETURN;
5271 END IF;
5272
5273 print_log(' Header validations are completed ');
5274
5275 -- Insert data into pon_auction_headers_all table
5276 create_negotiation_header(p_batch_id,
5277 x_return_status);
5278
5279 x_auction_header_id := neg_header_record_data.auction_header_id;
5280
5281 -- add the preparer and his manager in collab team
5282 create_members_in_collteam(p_batch_id,
5283 neg_header_record_data.trading_partner_contact_name,
5284 'Y',
5285 'PON_SOURCING_EDITNEG',
5286 'N',
5287 neg_header_record_data.auction_header_id,
5288 NULL,
5289 NULL,
5290 'N',
5291 x_return_status);
5292
5293 IF( x_return_status = FND_API.G_RET_STS_ERROR) THEN
5294 print_Log('member addition in collab team failed' );
5295 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_NEGTEAM_ERR');
5296 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_id);
5297 FND_MSG_PUB.ADD;
5298 RETURN;
5299 END IF;
5300
5301 -- add any additional member to collab team
5302 create_neg_team('N',
5303 p_batch_id,
5304 x_return_status);
5305 print_log('Collobaration team created for batch id ' || p_batch_id);
5306
5307 IF( x_return_status = FND_API.G_RET_STS_ERROR) THEN
5308 print_Log('Adding negotiation team member has failed for batch id ' || p_batch_id);
5309 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_NEGTEAM_ERR');
5310 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_id);
5311 FND_MSG_PUB.ADD;
5312 RETURN;
5313 END IF;
5314
5315 BEGIN
5316 SELECT 'Y' INTO approval_required_flag
5317 FROM dual
5318 WHERE
5319 EXISTS(SELECT 1 FROM pon_neg_team_members
5320 WHERE auctioN_header_id = neg_header_record_data.auction_header_id
5321 and approver_flag = 'Y');
5322 EXCEPTION
5323 WHEN OTHERS THEN
5324 NULL;
5325 END;
5326
5327 IF(approval_required_flag='Y') THEN
5328 UPDATE pon_auction_headers_all
5329 SET approval_status = 'REQUIRED'
5330 WHERE auction_header_id = neg_header_record_data.auction_header_id;
5331 ELSE
5332 UPDATE pon_auction_headers_all
5333 SET approval_status = 'NOT_REQUIRED'
5334 WHERE auction_header_id = neg_header_record_data.auction_header_id;
5335 END IF;
5336
5337 IF( x_return_status = FND_API.G_RET_STS_ERROR) THEN
5338 print_Log('member addition in collab team failed for batch id ' || p_batch_id);
5339 END IF;
5340
5341 -- insert header requirements
5342 create_header_attr_inter('N',
5343 p_batch_id,
5344 x_return_status);
5345 print_log('Header requirements inserted for for batch id ' || p_batch_id);
5346 IF( x_return_status = FND_API.G_RET_STS_ERROR) THEN
5347 print_Log('Header requirement creation has failed for for batch id ' || p_batch_id);
5348 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_NEGTEAM_ERR');
5349 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_id);
5350 FND_MSG_PUB.ADD;
5351 RETURN;
5352 END IF;
5353
5354 EXCEPTION
5355 WHEN FND_API.G_EXC_ERROR THEN
5356 x_return_status := FND_API.G_RET_STS_ERROR;
5357 print_log('process_negotiation_header exception : ' || SQLCODE || SQLERRM );
5358 WHEN OTHERS THEN
5359 x_return_status := FND_API.G_RET_STS_ERROR;
5360
5361 END process_negotiation_header;
5362
5363
5364 PROCEDURE validate_header(
5365 p_batch_id IN NUMBER,
5366 p_tp_id IN NUMBER,
5367 p_is_amendment IN VARCHAR2,
5368 p_src_auction_header_id IN NUMBER
5369 ) AS
5370
5371 -- PRAGMA AUTONOMOUS_TRANSACTION;
5372
5373 validate_col VARCHAR2(30);
5374 validate_val VARCHAR2(50);
5375 validate_sql VARCHAR2(1000);
5376 l_batch_id NUMBER;
5377 validate_res VARCHAR2(1);
5378 l_is_complex VARCHAR2(1);
5379 isFederal NUMBER;
5380
5381 null_check_status VARCHAR2(1);
5382 invalid_val_exist_flag VARCHAR2(1);
5383
5384 doctype_name pon_auc_doctypes.doctype_group_name%TYPE;
5385
5386 l_cp_user_id NUMBER;
5387 l_cp_login_id NUMBER;
5388
5389 BEGIN
5390
5391 print_Log('validate_header begin: p_batch_id ' || p_batch_id || ' p_is_amendment ' || p_is_amendment);
5392
5393 l_cp_user_id := fnd_global.user_id;
5394 l_cp_login_id := fnd_global.login_id;
5395
5396 IF( p_is_amendment <> 'Y' ) THEN
5397 -- Call to check if all mandatory columns in pon_auction_headers_interface table are given non-null values
5398 null_check(
5399 p_batch_id,
5400 null_check_status
5401 );
5402 IF( null_check_status = FND_API.G_RET_STS_ERROR) THEN
5403 print_log('Some mandatory fields in pon_auction_headers_interface table are having null values. Please check '
5404 || ' pon_interface_errors table for more details');
5405 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_HEADER_NULL_VALUES');
5406 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_id);
5407 FND_MSG_PUB.ADD;
5408 RAISE FND_API.G_EXC_ERROR;
5409 END IF;
5410 print_Log('validate_header: columns are successfully validated for null values' );
5411 END IF;
5412
5413
5414 select DECODE(NVL(neg_header_record_data.progress_payment_type,'NONE'),'NONE','N','Y')
5415 INTO l_is_complex FROM dual;
5416
5417 -- Below call populates columns and the possible values
5418 populate_column_test_table(
5419 neg_header_record_data.contract_type,
5420 neg_header_record_data.auction_type,
5421 l_is_complex
5422 );
5423
5424 print_Log('validate_header: populate_column_test_table completed' );
5425
5426
5427 -- Loop to check if the values given in pon_auction_headers_interface table are valid values
5428 FOR i IN 1..header_cols.Count LOOP
5429 BEGIN
5430
5431 validate_col := header_cols(i);
5432 validate_sql := 'select ' || validate_col || ' from pon_auction_headers_interface '
5433 || ' where batch_id = ' || p_batch_id;
5434 EXECUTE IMMEDIATE validate_sql INTO validate_val;
5435
5436 /*
5437 Based on the column name and column value, below
5438 procedure will check if value given in interface table
5439 is a valid one
5440 */
5441 CONTINUE WHEN validate_val IS NULL;
5442 validate_value_column_pair(validate_col,validate_val,validate_res);
5443
5444 IF(validate_res = 'N') THEN
5445 print_log('Invalid value in pon_auction_headers_interface ' || validate_col || ' ' || validate_val);
5446 invalid_val_exist_flag := 'Y';
5447 INSERT INTO PON_INTERFACE_ERRORS
5448 (
5449 INTERFACE_TYPE ,
5450 ERROR_MESSAGE_NAME,
5451 BATCH_ID ,
5452 ENTITY_TYPE ,
5453 AUCTION_HEADER_ID ,
5454 CREATED_BY ,
5455 CREATION_DATE ,
5456 LAST_UPDATED_BY ,
5457 LAST_UPDATE_DATE ,
5458 LAST_UPDATE_LOGIN
5459 )
5460 VALUES(
5461 g_interface_type,
5462 'test_col',
5463 p_batch_id,
5464 'test_col',
5465 NULL,
5466 l_cp_user_id,
5467 SYSDATE,
5468 l_cp_user_id,
5469 SYSDATE,
5470 l_cp_login_id);
5471 END IF;
5472
5473 EXCEPTION
5474 WHEN OTHERS THEN
5475 print_Log('exception ' || SQLCODE || ' errm ' || SQLERRM );
5476 END;
5477 END LOOP;
5478
5479 IF (invalid_val_exist_flag = 'Y' ) THEN
5480 print_log('Some fields in pon_auction_headers_interface table are having invalid values. '
5481 || 'Please check pon_interface_errors table for more details');
5482 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_HDR_INV_VALUES');
5483 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_batch_id);
5484 FND_MSG_PUB.ADD;
5485 RETURN;
5486 END IF;
5487
5488 print_Log('validate_header: columns are successfully validated for allowed values' );
5489
5490
5491 SELECT doctype_group_name INTO doctype_name FROM pon_auc_doctypes WHERE doctype_id = neg_header_record_data.doctype_id;
5492
5493 isFederal := PON_CLM_UTIL_PKG.IS_DOCUMENT_FEDERAL(neg_header_record_data.doctype_id);
5494
5495 INSERT ALL
5496 WHEN ( neg_header_record_data.auction_title IS NULL )
5497 THEN INTO PON_INTERFACE_ERRORS
5498 (
5499 INTERFACE_TYPE ,
5500 ERROR_MESSAGE_NAME,
5501 BATCH_ID ,
5502 ENTITY_TYPE ,
5503 AUCTION_HEADER_ID ,
5504 CREATED_BY ,
5505 CREATION_DATE ,
5506 LAST_UPDATED_BY ,
5507 LAST_UPDATE_DATE ,
5508 LAST_UPDATE_LOGIN
5509 )
5510 VALUES
5511 (
5512 g_interface_type,
5513 'PON_FIELD_MUST_BE_ENTERED',
5514 p_batch_id,
5515 'AUCTION_TITLE',
5516 NULL,
5517 l_cp_user_id,
5518 SYSDATE,
5519 l_cp_user_id,
5520 SYSDATE,
5521 l_cp_login_id
5522 )
5523 WHEN ( neg_header_record_data.ship_to_location_id IS NOT NULL AND neg_header_record_data.ship_to_location_id <> -1
5524 AND NOT EXISTS(SELECT 1 FROM po_ship_to_loc_org_v WHERE location_id = neg_header_record_data.ship_to_location_id))
5525 THEN INTO PON_INTERFACE_ERRORS
5526 (
5527 INTERFACE_TYPE ,
5528 ERROR_MESSAGE_NAME,
5529 BATCH_ID ,
5530 ENTITY_TYPE ,
5531 AUCTION_HEADER_ID ,
5532 CREATED_BY ,
5533 CREATION_DATE ,
5534 LAST_UPDATED_BY ,
5535 LAST_UPDATE_DATE ,
5536 LAST_UPDATE_LOGIN
5537 )
5538 VALUES
5539 (
5540 g_interface_type,
5541 'PON_INV_SHIP_TO',
5542 p_batch_id,
5543 'SHIP_TO_LOCATION_ID',
5544 NULL,
5545 l_cp_user_id,
5546 SYSDATE,
5547 l_cp_user_id,
5548 SYSDATE,
5549 l_cp_login_id
5550 )
5551
5552 WHEN ((neg_header_record_data.bill_to_location_id IS NOT NULL AND neg_header_record_data.bill_to_location_id <> -1
5553 AND NOT EXISTS(SELECT 'Y' from HR_LOCATIONS_ALL L
5554 where L.LOCATION_ID = neg_header_record_data.bill_to_location_id
5555 AND NVL(L.BUSINESS_GROUP_ID, NVL(HR_GENERAL.GET_BUSINESS_GROUP_ID, -99) ) = NVL(HR_GENERAL.GET_BUSINESS_GROUP_ID, -99)
5556 AND SYSDATE < NVL(L.INACTIVE_DATE, SYSDATE + 1) AND NVL(L.BILL_TO_SITE_FLAG,'N') = 'Y'))
5557 OR (p_is_amendment<>'Y' AND neg_header_record_data.bill_to_location_id IS NULL))
5558 THEN INTO PON_INTERFACE_ERRORS
5559 (
5560 INTERFACE_TYPE ,
5561 ERROR_MESSAGE_NAME,
5562 BATCH_ID ,
5563 ENTITY_TYPE ,
5564 AUCTION_HEADER_ID ,
5565 CREATED_BY ,
5566 CREATION_DATE ,
5567 LAST_UPDATED_BY ,
5568 LAST_UPDATE_DATE ,
5569 LAST_UPDATE_LOGIN
5570 )
5571 VALUES
5572 (
5573 g_interface_type,
5574 'PON_INV_BILL_TO',
5575 p_batch_id,
5576 'BILL_TO_LOCATION_ID',
5577 NULL,
5578 l_cp_user_id,
5579 SYSDATE,
5580 l_cp_user_id,
5581 SYSDATE,
5582 l_cp_login_id
5583 )
5584 -- in case of amendment, event information wont be updated
5585 -- so no need to validate for amendments
5586 WHEN ( p_is_amendment <> 'Y' AND
5587 neg_header_record_data.event_id IS NOT NULL AND neg_header_record_data.event_id <> -1
5588 AND NOT EXISTS(select 'Y' from pon_auction_events
5589 where event_id = neg_header_record_data.event_id and
5590 trading_partner_id = p_tp_id
5591 and event_status <> 'CANCELLED'
5592 and NVL(open_date, SYSDATE - 100) >= SYSDATE)) THEN
5593 INTO PON_INTERFACE_ERRORS
5594 (
5595 INTERFACE_TYPE ,
5596 ERROR_MESSAGE_NAME,
5597 BATCH_ID ,
5598 ENTITY_TYPE ,
5599 AUCTION_HEADER_ID ,
5600 CREATED_BY ,
5601 CREATION_DATE ,
5602 LAST_UPDATED_BY ,
5603 LAST_UPDATE_DATE ,
5604 LAST_UPDATE_LOGIN
5605 )
5606 VALUES
5607 (
5608 g_interface_type,
5609 'PON_INV_EVENTID',
5610 p_batch_id,
5611 'EVENT_ID',
5612 NULL,
5613 l_cp_user_id,
5614 SYSDATE,
5615 l_cp_user_id,
5616 SYSDATE,
5617 l_cp_login_id
5618 )
5619 WHEN (neg_header_record_data.bid_ranking='PRICE_ONLY' AND neg_header_record_data.show_bidder_scores='SCORE_WEIGHT') THEN
5620 INTO PON_INTERFACE_ERRORS
5621 (
5622 INTERFACE_TYPE ,
5623 ERROR_MESSAGE_NAME,
5624 BATCH_ID ,
5625 ENTITY_TYPE ,
5626 AUCTION_HEADER_ID ,
5627 CREATED_BY ,
5628 CREATION_DATE ,
5629 LAST_UPDATED_BY ,
5630 LAST_UPDATE_DATE ,
5631 LAST_UPDATE_LOGIN
5632 )
5633 VALUES
5634 (
5635 g_interface_type,
5636 'PON_INV_RANKING',
5637 p_batch_id,
5638 'SHOW_BIDDER_SCORES',
5639 NULL,
5640 l_cp_user_id,
5641 SYSDATE,
5642 l_cp_user_id,
5643 SYSDATE,
5644 l_cp_login_id
5645 )
5646 /* ALLOW_MULTIPLE_ACTIVE_OFFERS */
5647 WHEN ( neg_header_record_data.ALLOW_MULTIPLE_ACTIVE_OFFERS = 'Y'
5648 AND neg_header_record_data.BID_FREQUENCY_CODE <> 'MULTIPLE_BIDS_ALLOWED')
5649 THEN INTO PON_INTERFACE_ERRORS
5650 (
5651 INTERFACE_TYPE ,
5652 ERROR_MESSAGE_NAME,
5653 BATCH_ID ,
5654 ENTITY_TYPE ,
5655 AUCTION_HEADER_ID ,
5656 CREATED_BY ,
5657 CREATION_DATE ,
5658 LAST_UPDATED_BY ,
5659 LAST_UPDATE_DATE ,
5660 LAST_UPDATE_LOGIN
5661 )
5662 VALUES
5663 (
5664 g_interface_type,
5665 'PON_MULTIPLE_ACTIVE_OFFER_VAL',
5666 p_batch_id,
5667 'AUCTION_TITLE',
5668 NULL,
5669 l_cp_user_id,
5670 SYSDATE,
5671 l_cp_user_id,
5672 SYSDATE,
5673 l_cp_login_id)
5674 --SIGNED DATE
5675 WHEN ( neg_header_record_data.SIGNED_DATE < neg_header_record_data.CREATION_DATE
5676 AND isFederal = 1)
5677 THEN INTO PON_INTERFACE_ERRORS
5678 (
5679 INTERFACE_TYPE ,
5680 ERROR_MESSAGE_NAME,
5681 BATCH_ID ,
5682 ENTITY_TYPE ,
5683 AUCTION_HEADER_ID ,
5684 CREATED_BY ,
5685 CREATION_DATE ,
5686 LAST_UPDATED_BY ,
5687 LAST_UPDATE_DATE ,
5688 LAST_UPDATE_LOGIN
5689 )
5690 VALUES
5691 (
5692 g_interface_type,
5693 'PON_SIGNED_DATE_INVALID',
5694 p_batch_id,
5695 'AUCTION_TITLE',
5696 NULL,
5697 l_cp_user_id,
5698 SYSDATE,
5699 l_cp_user_id,
5700 SYSDATE,
5701 l_cp_login_id)
5702
5703 --DOCUMENT_FORMAT
5704 WHEN ( neg_header_record_data.DOCUMENT_FORMAT IS NULL AND isFederal = 1)
5705 THEN INTO PON_INTERFACE_ERRORS
5706 (
5707 INTERFACE_TYPE ,
5708 ERROR_MESSAGE_NAME,
5709 BATCH_ID ,
5710 ENTITY_TYPE ,
5711 AUCTION_HEADER_ID ,
5712 CREATED_BY ,
5713 CREATION_DATE ,
5714 LAST_UPDATED_BY ,
5715 LAST_UPDATE_DATE ,
5716 LAST_UPDATE_LOGIN
5717 )
5718 VALUES
5719 (
5720 g_interface_type,
5721 'PON_DOC_FORMAT_NULL',
5722 p_batch_id,
5723 'AUCTION_TITLE',
5724 NULL,
5725 l_cp_user_id,
5726 SYSDATE,
5727 l_cp_user_id,
5728 SYSDATE,
5729 l_cp_login_id)
5730
5731 WHEN (isFederal = 1 AND neg_header_record_data.DOCUMENT_FORMAT NOT IN
5732 (SELECT LOOKUP_CODE
5733 FROM FND_LOOKUP_VALUES
5734 WHERE LOOKUP_TYPE = 'PO_CLM_DOC_FORMAT'
5735 AND LANGUAGE = USERENV('LANG')
5736 AND ENABLED_FLAG = 'Y'
5737 AND SYSDATE BETWEEN NVL(START_DATE_ACTIVE, SYSDATE - 1) AND NVL(END_DATE_ACTIVE, SYSDATE + 1)
5738 AND lookup_code IN (SELECT DOCUMENT_FORMAT FROM PO_PRINT_FORM_FORMATS WHERE DOCUMENT_TYPE = 'PO_SOL_STD_FORM'
5739 and STANDARD_FORM = neg_header_record_data.STANDARD_FORM
5740 AND SYSDATE < Nvl(inactive_date,SYSDATE + 1))))
5741 THEN INTO PON_INTERFACE_ERRORS
5742 (
5743 INTERFACE_TYPE ,
5744 ERROR_MESSAGE_NAME,
5745 BATCH_ID ,
5746 ENTITY_TYPE ,
5747 AUCTION_HEADER_ID ,
5748 CREATED_BY ,
5749 CREATION_DATE ,
5750 LAST_UPDATED_BY ,
5751 LAST_UPDATE_DATE ,
5752 LAST_UPDATE_LOGIN
5753 )
5754 VALUES
5755 (
5756 g_interface_type,
5757 'PON_DOC_FORMAT_INVALID',
5758 p_batch_id,
5759 'AUCTION_TITLE',
5760 NULL,
5761 l_cp_user_id,
5762 SYSDATE,
5763 l_cp_user_id,
5764 SYSDATE,
5765 l_cp_login_id)
5766
5767 --FEDERAL_PUBLICATION_EXCEPTION
5768 WHEN ( isFederal = 1 AND neg_header_record_data.FEDERAL_PUBLICATION_EXCEPTION NOT IN
5769 ( SELECT LOOKUP_CODE
5770 FROM FND_LOOKUP_VALUES
5771 WHERE LOOKUP_TYPE = 'PON_FEDERAL_PUBLICATION'
5772 AND LANGUAGE = USERENV('LANG')
5773 AND ENABLED_FLAG = 'Y'
5774 AND SYSDATE BETWEEN NVL(START_DATE_ACTIVE, SYSDATE - 1)
5775 AND NVL(END_DATE_ACTIVE, SYSDATE + 1)))
5776 THEN INTO PON_INTERFACE_ERRORS
5777 (
5778 INTERFACE_TYPE ,
5779 ERROR_MESSAGE_NAME,
5780 BATCH_ID ,
5781 ENTITY_TYPE ,
5782 AUCTION_HEADER_ID ,
5783 CREATED_BY ,
5784 CREATION_DATE ,
5785 LAST_UPDATED_BY ,
5786 LAST_UPDATE_DATE ,
5787 LAST_UPDATE_LOGIN
5788 )
5789 VALUES
5790 (
5791 g_interface_type,
5792 'PON_FED_PUB_INVALID',
5793 p_batch_id,
5794 'AUCTION_TITLE',
5795 NULL,
5796 l_cp_user_id,
5797 SYSDATE,
5798 l_cp_user_id,
5799 SYSDATE,
5800 l_cp_login_id)
5801
5802 /* SOLICITATION_TYPE */
5803 WHEN (neg_header_record_data.SOLICITATION_TYPE IS NULL AND isFederal = 1)
5804 THEN INTO PON_INTERFACE_ERRORS
5805 (
5806 INTERFACE_TYPE ,
5807 ERROR_MESSAGE_NAME,
5808 BATCH_ID ,
5809 ENTITY_TYPE ,
5810 AUCTION_HEADER_ID ,
5811 CREATED_BY ,
5812 CREATION_DATE ,
5813 LAST_UPDATED_BY ,
5814 LAST_UPDATE_DATE ,
5815 LAST_UPDATE_LOGIN
5816 )
5817 VALUES
5818 (
5819 g_interface_type,
5820 'PON_SOLICITATION_TYPE_NULL',
5821 p_batch_id,
5822 'AUCTION_TITLE',
5823 NULL,
5824 l_cp_user_id,
5825 SYSDATE,
5826 l_cp_user_id,
5827 SYSDATE,
5828 l_cp_login_id)
5829
5830 WHEN ( isFederal = 1 AND neg_header_record_data.SOLICITATION_TYPE NOT IN (SELECT LOOKUP_CODE
5831 FROM FND_LOOKUP_VALUES
5832 WHERE LOOKUP_TYPE = 'PON_SOLICITATION_TYPE'
5833 AND LANGUAGE = USERENV('LANG')
5834 AND ENABLED_FLAG = 'Y'
5835 AND SYSDATE BETWEEN NVL(START_DATE_ACTIVE, SYSDATE - 1) AND NVL(END_DATE_ACTIVE, SYSDATE + 1)
5836 ))
5837 THEN INTO PON_INTERFACE_ERRORS
5838 (
5839 INTERFACE_TYPE ,
5840 ERROR_MESSAGE_NAME,
5841 BATCH_ID ,
5842 ENTITY_TYPE ,
5843 AUCTION_HEADER_ID ,
5844 CREATED_BY ,
5845 CREATION_DATE ,
5846 LAST_UPDATED_BY ,
5847 LAST_UPDATE_DATE ,
5848 LAST_UPDATE_LOGIN
5849 )
5850 VALUES
5851 (
5852 g_interface_type,
5853 'PON_SOLICITATION_TYPE_INVALID',
5854 p_batch_id,
5855 'AUCTION_TITLE',
5856 NULL,
5857 l_cp_user_id,
5858 SYSDATE,
5859 l_cp_user_id,
5860 SYSDATE,
5861 l_cp_login_id)
5862
5863 /* STANDARD_FORM */
5864 WHEN ( neg_header_record_data.STANDARD_FORM IS NULL AND isFederal = 1)
5865 THEN INTO PON_INTERFACE_ERRORS
5866 (
5867 INTERFACE_TYPE ,
5868 ERROR_MESSAGE_NAME,
5869 BATCH_ID ,
5870 ENTITY_TYPE ,
5871 AUCTION_HEADER_ID ,
5872 CREATED_BY ,
5873 CREATION_DATE ,
5874 LAST_UPDATED_BY ,
5875 LAST_UPDATE_DATE ,
5876 LAST_UPDATE_LOGIN
5877 )
5878 VALUES
5879 (
5880 g_interface_type,
5881 'PON_STANDARD_FORM_NULL',
5882 p_batch_id,
5883 'AUCTION_TITLE',
5884 NULL,
5885 l_cp_user_id,
5886 SYSDATE,
5887 l_cp_user_id,
5888 SYSDATE,
5889 l_cp_login_id)
5890
5891 WHEN (isFederal = 1 AND neg_header_record_data.STANDARD_FORM NOT IN (SELECT LOOKUP_CODE
5892 FROM FND_LOOKUP_VALUES
5893 WHERE LOOKUP_TYPE = 'PO_SOL_STD_FORM'
5894 AND LANGUAGE = USERENV('LANG')
5895 AND ENABLED_FLAG = 'Y'
5896 AND SYSDATE BETWEEN
5897 NVL(START_DATE_ACTIVE, SYSDATE - 1)
5898 AND NVL(END_DATE_ACTIVE, SYSDATE + 1)
5899 AND LOOKUP_CODE IN(SELECT STANDARD_FORM
5900 FROM PO_PRINT_FORM_FORMATS
5901 WHERE DOCUMENT_TYPE = 'PO_SOL_STD_FORM')
5902 ))
5903 THEN INTO PON_INTERFACE_ERRORS
5904 (
5905 INTERFACE_TYPE ,
5906 ERROR_MESSAGE_NAME,
5907 BATCH_ID ,
5908 ENTITY_TYPE ,
5909 AUCTION_HEADER_ID ,
5910 CREATED_BY ,
5911 CREATION_DATE ,
5912 LAST_UPDATED_BY ,
5913 LAST_UPDATE_DATE ,
5914 LAST_UPDATE_LOGIN
5915 )
5916 VALUES
5917 (
5918 g_interface_type,
5919 'PON_STANDARD_FORM_INVALID',
5920 p_batch_id,
5921 'AUCTION_TITLE',
5922 NULL,
5923 l_cp_user_id,
5924 SYSDATE,
5925 l_cp_user_id,
5926 SYSDATE,
5927 l_cp_login_id)
5928
5929 SELECT 1 from dual;
5930
5931 IF(PON_CLM_UTIL_PKG.IS_DOCUMENT_FEDERAL(neg_header_record_data.doctype_id)=1) THEN
5932
5933 IF ( p_is_amendment <> 'Y' AND
5934 (neg_header_record_data.standard_form IS NULL OR neg_header_record_data.document_format IS NULL)) THEN
5935
5936 INSERT INTO PON_INTERFACE_ERRORS
5937 (
5938 INTERFACE_TYPE ,
5939 ERROR_MESSAGE_NAME,
5940 BATCH_ID ,
5941 ENTITY_TYPE ,
5942 AUCTION_HEADER_ID ,
5943 CREATED_BY ,
5944 CREATION_DATE ,
5945 LAST_UPDATED_BY ,
5946 LAST_UPDATE_DATE ,
5947 LAST_UPDATE_LOGIN
5948 )
5949 VALUES
5950 (
5951 g_interface_type,
5952 'PON_FIELD_MUST_BE_ENTERED',
5953 p_batch_id,
5954 'STANDARD_FORM',
5955 NULL,
5956 l_cp_user_id,
5957 SYSDATE,
5958 l_cp_user_id,
5959 SYSDATE,
5960 l_cp_login_id
5961 );
5962 END IF;
5963
5964 END IF;
5965
5966
5967 INSERT ALL
5968 WHEN(neg_header_record_data.progress_payment_flag = 'Y'
5969 AND (doctype_name NOT in ('REQUEST_FOR_QUOTE','SOLICITATION') OR neg_header_record_data.contract_type <> 'STANDARD'))
5970 THEN INTO PON_INTERFACE_ERRORS
5971 (
5972 INTERFACE_TYPE ,
5973 ERROR_MESSAGE_NAME,
5974 BATCH_ID ,
5975 ENTITY_TYPE ,
5976 AUCTION_HEADER_ID ,
5977 CREATED_BY ,
5978 CREATION_DATE ,
5979 LAST_UPDATED_BY ,
5980 LAST_UPDATE_DATE ,
5981 LAST_UPDATE_LOGIN
5982 )
5983 VALUES(
5984 g_interface_type,
5985 'PON_INV_PROGRESS_PYMT',
5986 p_batch_id,
5987 'PROGRESS_PAYMENT_FLAG',
5988 NULL,
5989 l_cp_user_id,
5990 SYSDATE,
5991 l_cp_user_id,
5992 SYSDATE,
5993 l_cp_login_id)
5994
5995 WHEN(neg_header_record_data.bid_visibility_code = 'OPEN_BIDDING'
5996 AND doctype_name IN ('REQUEST_FOR_QUOTE','SOLICITATION'))
5997 THEN INTO PON_INTERFACE_ERRORS
5998 (
5999 INTERFACE_TYPE ,
6000 ERROR_MESSAGE_NAME,
6001 BATCH_ID ,
6002 ENTITY_TYPE ,
6003 AUCTION_HEADER_ID ,
6004 CREATED_BY ,
6005 CREATION_DATE ,
6006 LAST_UPDATED_BY ,
6007 LAST_UPDATE_DATE ,
6008 LAST_UPDATE_LOGIN
6009 )
6010 VALUES(
6011 g_interface_type,
6012 'PON_INV_BID_VISIBILITY',
6013 p_batch_id,
6014 'BID_VISIBILITY_CODE',
6015 NULL,
6016 l_cp_user_id,
6017 SYSDATE,
6018 l_cp_user_id,
6019 SYSDATE,
6020 l_cp_login_id)
6021
6022 WHEN(neg_header_record_data.project_id IS NOT NULL
6023 AND NOT EXISTS(SELECT 'Y' FROM pa_projects_expend_v WHERE project_Id = neg_header_record_data.project_Id))
6024 THEN INTO PON_INTERFACE_ERRORS
6025 (
6026 INTERFACE_TYPE ,
6027 ERROR_MESSAGE_NAME,
6028 BATCH_ID ,
6029 ENTITY_TYPE ,
6030 AUCTION_HEADER_ID ,
6031 CREATED_BY ,
6032 CREATION_DATE ,
6033 LAST_UPDATED_BY ,
6034 LAST_UPDATE_DATE ,
6035 LAST_UPDATE_LOGIN
6036 )
6037 VALUES(
6038 g_interface_type,
6039 'PON_PROJID_INV',
6040 p_batch_id,
6041 'PROJECT_ID',
6042 NULL,
6043 l_cp_user_id,
6044 SYSDATE,
6045 l_cp_user_id,
6046 SYSDATE,
6047 l_cp_login_id)
6048
6049 WHEN(neg_header_record_data.fob_code IS NOT NULL
6050 AND neg_header_record_data.fob_code NOT IN (SELECT MEANING FROM FND_LOOKUP_VALUES WHERE LOOKUP_TYPE = 'FOB' AND LANGUAGE=UserEnv('LANG')))
6051 THEN INTO PON_INTERFACE_ERRORS
6052 (
6053 INTERFACE_TYPE ,
6054 ERROR_MESSAGE_NAME,
6055 BATCH_ID ,
6056 ENTITY_TYPE ,
6057 AUCTION_HEADER_ID ,
6058 CREATED_BY ,
6059 CREATION_DATE ,
6060 LAST_UPDATED_BY ,
6061 LAST_UPDATE_DATE ,
6062 LAST_UPDATE_LOGIN
6063 )
6064 VALUES(
6065 g_interface_type,
6066 'PON_NEG_FOB_INV',
6067 p_batch_id,
6068 'AUCTION_OUTCOME',
6069 NULL,
6070 l_cp_user_id,
6071 SYSDATE,
6072 l_cp_user_id,
6073 SYSDATE,
6074 l_cp_login_id)
6075 WHEN(neg_header_record_data.freight_terms_code IS NOT NULL
6076 AND neg_header_record_data.freight_terms_code NOT IN (SELECT MEANING FROM FND_LOOKUP_VALUES WHERE LOOKUP_TYPE = 'FREIGHT TERMS' AND LANGUAGE=UserEnv('LANG')))
6077 THEN INTO PON_INTERFACE_ERRORS
6078 (
6079 INTERFACE_TYPE ,
6080 ERROR_MESSAGE_NAME,
6081 BATCH_ID ,
6082 ENTITY_TYPE ,
6083 AUCTION_HEADER_ID ,
6084 CREATED_BY ,
6085 CREATION_DATE ,
6086 LAST_UPDATED_BY ,
6087 LAST_UPDATE_DATE ,
6088 LAST_UPDATE_LOGIN
6089 )
6090 VALUES(
6091 g_interface_type,
6092 'PON_NEG_FREIGHT_INV',
6093 p_batch_id,
6094 'AUCTION_OUTCOME',
6095 NULL,
6096 l_cp_user_id,
6097 SYSDATE,
6098 l_cp_user_id,
6099 SYSDATE,
6100 l_cp_login_id)
6101 WHEN(neg_header_record_data.payment_terms_id IS NOT NULL
6102 AND NOT EXISTS (select 'Y' from ap_terms where term_id = neg_header_record_data.payment_terms_id and SYSDATE BETWEEN NVL(START_DATE_ACTIVE,SYSDATE-1) AND NVL(END_DATE_ACTIVE,SYSDATE+1)))
6103 THEN INTO PON_INTERFACE_ERRORS
6104 (
6105 INTERFACE_TYPE ,
6106 ERROR_MESSAGE_NAME,
6107 BATCH_ID ,
6108 ENTITY_TYPE ,
6109 AUCTION_HEADER_ID ,
6110 CREATED_BY ,
6111 CREATION_DATE ,
6112 LAST_UPDATED_BY ,
6113 LAST_UPDATE_DATE ,
6114 LAST_UPDATE_LOGIN
6115 )
6116 VALUES(
6117 g_interface_type,
6118 'PON_NEG_PYMTTERMS_INV',
6119 p_batch_id,
6120 'PAYMENT_TERMS_ID',
6121 NULL,
6122 l_cp_user_id,
6123 SYSDATE,
6124 l_cp_user_id,
6125 SYSDATE,
6126 l_cp_login_id)
6127 WHEN( (p_is_amendment <> 'Y' AND
6128 neg_header_record_data.currency_code IS NULL)
6129 or (neg_header_record_data.currency_code IS NOT NULL
6130 AND NOT EXISTS (SELECT 'Y' FROM hr_operating_units org,gl_sets_of_books sob
6131 WHERE org.organization_id = neg_header_record_data.org_id
6132 AND org.SET_OF_BOOKS_ID = sob.SET_OF_BOOKS_ID
6133 AND sob.currency_code = neg_header_record_data.currency_code
6134 AND neg_header_record_data.currency_code IS NOT NULL)))
6135 THEN INTO PON_INTERFACE_ERRORS
6136 (
6137 INTERFACE_TYPE ,
6138 ERROR_MESSAGE_NAME,
6139 BATCH_ID ,
6140 ENTITY_TYPE ,
6141 AUCTION_HEADER_ID ,
6142 CREATED_BY ,
6143 CREATION_DATE ,
6144 LAST_UPDATED_BY ,
6145 LAST_UPDATE_DATE ,
6146 LAST_UPDATE_LOGIN
6147 )
6148 VALUES(
6149 g_interface_type,
6150 'PON_NEG_CURR_INV',
6151 p_batch_id,
6152 'AUCTION_OUTCOME',
6153 NULL,
6154 l_cp_user_id,
6155 SYSDATE,
6156 l_cp_user_id,
6157 SYSDATE,
6158 l_cp_login_id)
6159 -- for amendment open_bidding_date is not updatable.
6160 -- so no need to validate
6161 WHEN( p_is_amendment <> 'Y'
6162 AND ((neg_header_record_data.open_bidding_date IS NULL
6163 AND Nvl(neg_header_record_data.open_auction_now_flag,'N') = 'N')
6164 OR neg_header_record_data.open_bidding_date < sysdate))
6165 THEN INTO PON_INTERFACE_ERRORS
6166 (
6167 INTERFACE_TYPE ,
6168 ERROR_MESSAGE_NAME,
6169 BATCH_ID ,
6170 ENTITY_TYPE ,
6171 AUCTION_HEADER_ID ,
6172 CREATED_BY ,
6173 CREATION_DATE ,
6174 LAST_UPDATED_BY ,
6175 LAST_UPDATE_DATE ,
6176 LAST_UPDATE_LOGIN
6177 )
6178 VALUES(
6179 g_interface_type,
6180 'PON_NEG_OPENDT_INV',
6181 p_batch_id,
6182 'AUCTION_OPEN_DATE',
6183 NULL,
6184 l_cp_user_id,
6185 SYSDATE,
6186 l_cp_user_id,
6187 SYSDATE,
6188 l_cp_login_id)
6189 WHEN( p_is_amendment <> 'Y'
6190 AND (neg_header_record_data.close_bidding_date IS NULL or
6191 neg_header_record_data.open_bidding_date > neg_header_record_data.close_bidding_date ))
6192 THEN INTO PON_INTERFACE_ERRORS
6193 (
6194 INTERFACE_TYPE ,
6195 ERROR_MESSAGE_NAME,
6196 BATCH_ID ,
6197 ENTITY_TYPE ,
6198 AUCTION_HEADER_ID ,
6199 CREATED_BY ,
6200 CREATION_DATE ,
6201 LAST_UPDATED_BY ,
6202 LAST_UPDATE_DATE ,
6203 LAST_UPDATE_LOGIN
6204 )
6205 VALUES(
6206 g_interface_type,
6207 'PON_NEG_CLOSEDT_INV',
6208 p_batch_id,
6209 'AUCTION_OPEN_DATE',
6210 NULL,
6211 l_cp_user_id,
6212 SYSDATE,
6213 l_cp_user_id,
6214 SYSDATE,
6215 l_cp_login_id)
6216 WHEN(neg_header_record_data.CONTRACT_TYPE = 'BLANKET' and
6217 neg_header_record_data.po_start_date > neg_header_record_data.po_end_date)
6218 THEN INTO PON_INTERFACE_ERRORS
6219 (
6220 INTERFACE_TYPE ,
6221 ERROR_MESSAGE_NAME,
6222 BATCH_ID ,
6223 ENTITY_TYPE ,
6224 AUCTION_HEADER_ID ,
6225 CREATED_BY ,
6226 CREATION_DATE ,
6227 LAST_UPDATED_BY ,
6228 LAST_UPDATE_DATE ,
6229 LAST_UPDATE_LOGIN
6230 )
6231 VALUES(
6232 g_interface_type,
6233 'PON_NEG_AGREEMENTDT_INV',
6234 p_batch_id,
6235 'AUCTION_OPEN_DATE',
6236 NULL,
6237 l_cp_user_id,
6238 SYSDATE,
6239 l_cp_user_id,
6240 SYSDATE,
6241 l_cp_login_id)
6242 WHEN(neg_header_record_data.CONTRACT_TYPE = 'BLANKET' and
6243 neg_header_record_data.po_min_rel_amount < 0 )
6244 THEN INTO PON_INTERFACE_ERRORS
6245 (
6246 INTERFACE_TYPE ,
6247 ERROR_MESSAGE_NAME,
6248 BATCH_ID ,
6249 ENTITY_TYPE ,
6250 AUCTION_HEADER_ID ,
6251 CREATED_BY ,
6252 CREATION_DATE ,
6253 LAST_UPDATED_BY ,
6254 LAST_UPDATE_DATE ,
6255 LAST_UPDATE_LOGIN
6256 )
6257 VALUES(
6258 g_interface_type,
6259 'PON_NEG_MINREL_INV',
6260 p_batch_id,
6261 'PO_MIN_REL_AMOUNT',
6262 NULL,
6263 l_cp_user_id,
6264 SYSDATE,
6265 l_cp_user_id,
6266 SYSDATE,
6267 l_cp_login_id)
6268 SELECT neg_header_record_data.org_id FROM dual ;
6269
6270 print_Log('validate_header completed ');
6271
6272 EXCEPTION
6273 WHEN OTHERS THEN
6274 print_log('Exception in validate_Header procedure for batch_id ' || l_batch_id);
6275 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_VAL_HEADER_ERR');
6276 FND_MESSAGE.SET_TOKEN('BATCH_ID',l_batch_id);
6277 FND_MSG_PUB.ADD;
6278
6279 END validate_header;
6280
6281 PROCEDURE populate_neg_header_rec(p_batch_id IN NUMBER,
6282 p_is_amendment IN VARCHAR2,
6283 p_src_auction_header_id IN NUMBER)
6284 AS
6285
6286 l_org_default_data org_default_data;
6287 l_document_type pon_auc_doctypes.internal_name%TYPE;
6288
6289 -- po doc style related fields
6290 l_advances_flag po_doc_style_headers.advances_flag%TYPE;
6291 l_retainage_flag po_doc_style_headers.retainage_flag%TYPE;
6292 l_price_breaks_flag po_doc_style_headers.price_breaks_flag%TYPE;
6293 l_price_differentials_flag po_doc_style_headers.price_differentials_flag%TYPE;
6294 l_progress_payment_flag po_doc_style_headers.progress_payment_flag%TYPE;
6295 l_contract_financing_flag po_doc_style_headers.contract_financing_flag%TYPE;
6296 l_template_return_status VARCHAR2(1);
6297 l_template_err_msg VARCHAR2(200);
6298 dummy1 VARCHAR2(100);
6299 dummy2 VARCHAR2(100);
6300 dummy3 VARCHAR2(100);
6301 dummy4 VARCHAR2(100);
6302 dummy5 VARCHAR2(100);
6303 p_error_code VARCHAR2(1);
6304 p_error_message VARCHAR2(100);
6305
6306 BEGIN
6307
6308 print_log('populate_neg_header_rec begin ');
6309
6310 -- For amendment neg_header_record_data.auction_header_id will not be used
6311 IF ( p_is_amendment <> 'Y' ) THEN
6312 SELECT pon_auction_headers_all_s.NEXTVAL INTO neg_header_record_data.auction_header_id FROM dual;
6313 END IF;
6314
6315 SELECT person_party_id,user_name
6316 INTO neg_header_record_data.trading_partner_contact_id,neg_header_record_data.trading_partner_contact_name
6317 FROM fnd_user usr,pon_auction_headers_interface pahi
6318 WHERE batch_id = p_batch_id
6319 AND usr.user_name = pahi.trading_partner_contact_name
6320 AND Nvl(usr.end_date,SYSDATE + 1) > SYSDATE ;
6321
6322 neg_header_record_data.trading_partner_id := g_trading_partner_id ;
6323 pos_enterprise_util_pkg.get_enterprise_party_name(neg_header_record_data.trading_partner_name,
6324 P_ERROR_CODE,
6325 P_ERROR_MESSAGE);
6326
6327 SELECT auction_title,
6328 description,
6329 contract_type,
6330 bid_visibility_code,
6331 doctype_id,
6332 org_id,
6333 buyer_id,
6334 global_agreement_flag,
6335 style_id,
6336 po_style_id,
6337 po_style_name,
6338 price_break_response,
6339 advance_negotiable_flag,
6340 recoupment_negotiable_flag,
6341 progress_pymt_negotiable_flag,
6342 retainage_negotiable_flag,
6343 max_retainage_negotiable_flag,
6344 supplier_enterable_pymt_flag,
6345 progress_payment_type,
6346 line_mas_enabled_flag,
6347 price_tiers_indicator,
6348 ship_to_location_id,
6349 ship_to_location_code,
6350 bill_to_location_id,
6351 bill_to_location_code,
6352 payment_terms_id,
6353 fob_code,
6354 freight_terms_code,
6355 rate_type,
6356 currency_code,
6357 rate_date,
6358 security_level_code,
6359 po_start_date,
6360 po_end_date,
6361 open_auction_now_flag,
6362 open_bidding_date,
6363 close_bidding_date,
6364 publish_auction_now_flag,
6365 --publish_date,
6366 --auction_published_flag,
6367 view_by_date,
6368 note_to_bidders,
6369 show_bidder_notes,
6370 bid_scope_code,
6371 bid_list_type,
6372 bid_frequency_code,
6373 bid_ranking,
6374 rank_indicator,
6375 full_quantity_bid_code,
6376 multiple_rounds_flag,
6377 manual_close_flag,
6378 manual_extend_flag,
6379 award_approval_flag,
6380 auction_origination_code,
6381 pf_type_allowed,
6382 hdr_attr_enable_weights,
6383 award_by_date,
6384 auto_extend_flag,
6385 auto_extend_number,
6386 min_bid_decrement,
6387 min_bid_change_type,
6388 price_driven_auction_flag,
6389 carrier_code,
6390 auto_extend_all_lines_flag,
6391 allow_other_bid_currency_flag,
6392 auto_extend_duration,
6393 publish_rates_to_bidders_flag,
6394 event_id,
6395 event_title,
6396 sealed_auction_status,
6397 auto_extend_type_flag,
6398 show_bidder_scores,
6399 po_min_rel_amount,
6400 hdr_attr_display_score,
6401 int_attribute_category,
6402 int_attribute1,
6403 int_attribute2,
6404 int_attribute3,
6405 int_attribute4,
6406 int_attribute5,
6407 int_attribute6,
6408 int_attribute7,
6409 int_attribute8 ,
6410 int_attribute9,
6411 int_attribute10,
6412 int_attribute11,
6413 int_attribute12,
6414 int_attribute13,
6415 int_attribute14,
6416 int_attribute15,
6417 ext_attribute_category,
6418 ext_attribute1,
6419 ext_attribute2,
6420 ext_attribute3,
6421 ext_attribute4,
6422 ext_attribute5,
6423 ext_attribute6,
6424 ext_attribute7 ,
6425 ext_attribute8,
6426 ext_attribute9,
6427 ext_attribute10,
6428 ext_attribute11,
6429 ext_attribute12,
6430 ext_attribute13,
6431 ext_attribute14,
6432 ext_attribute15,
6433 abstract_details,
6434 supplier_view_type,
6435 project_id,
6436 bid_decrement_method ,
6437 display_best_price_blind_flag,
6438 first_line_close_date,
6439 staggered_closing_interval,
6440 enforce_prevrnd_bid_price_flag,
6441 auto_extend_min_trigger_rank,
6442 two_part_flag,
6443 standard_form,
6444 document_format,
6445 amendment_description,
6446 creation_date,
6447 created_by,
6448 last_update_date,
6449 last_updated_by
6450 ,ALLOW_WITHDRAW_FLAG,ALLOW_UNSOL_OFFER_LINES, ALLOW_MULTIPLE_ACTIVE_OFFERS
6451 --,EFFECTIVE_DATE
6452 ,FAIR_OPP_NOTICE_FLAG
6453 ,FEDERAL_PUBLICATION_EXCEPTION
6454 ,NO_OF_COPIES
6455 ,REVISION
6456 ,SIGNED_DATE
6457 ,SOLICITATION_TYPE
6458 ,UMBRELLA_PROGRAM_ID
6459 ,CD_EDITBYUSER_FLAG
6460 ,CD_GENERATED_DATE
6461 ,CD_GENERATED_FLAG
6462 ,AMENDUPDATED_AFTERCDGENERATED
6463
6464 INTO neg_header_record_data.auction_title,
6465 neg_header_record_data.description,
6466 neg_header_record_data.contract_type,
6467 neg_header_record_data.bid_visibility_code,
6468 neg_header_record_data.doctype_id,
6469 neg_header_record_data.org_id,
6470 neg_header_record_data.buyer_id,
6471 neg_header_record_data.global_agreement_flag,
6472 neg_header_record_data.style_id,
6473 neg_header_record_data.po_style_id,
6474 neg_header_record_data.po_style_name,
6475 neg_header_record_data.price_break_response,
6476 neg_header_record_data.advance_negotiable_flag,
6477 neg_header_record_data.recoupment_negotiable_flag,
6478 neg_header_record_data.progress_pymt_negotiable_flag,
6479 neg_header_record_data.retainage_negotiable_flag,
6480 neg_header_record_data.max_retainage_negotiable_flag,
6481 neg_header_record_data.supplier_enterable_pymt_flag,
6482 neg_header_record_data.progress_payment_type,
6483 neg_header_record_data.line_mas_enabled_flag,
6484 neg_header_record_data.price_tiers_indicator,
6485 neg_header_record_data.ship_to_location_id,
6486 neg_header_record_data.ship_to_location_code,
6487 neg_header_record_data.bill_to_location_id,
6488 neg_header_record_data.bill_to_location_code,
6489 neg_header_record_data.payment_terms_id,
6490 neg_header_record_data.fob_code,
6491 neg_header_record_data.freight_terms_code,
6492 neg_header_record_data.rate_type,
6493 neg_header_record_data.currency_code,
6494 neg_header_record_data.rate_date,
6495 neg_header_record_data.security_level_code,
6496 neg_header_record_data.po_start_date,
6497 neg_header_record_data.po_end_date,
6498 neg_header_record_data.open_auction_now_flag,
6499 neg_header_record_data.open_bidding_date,
6500 neg_header_record_data.close_bidding_date,
6501 neg_header_record_data.publish_auction_now_flag,
6502 --neg_header_record_data.publish_date,
6503 --neg_header_record_data.auction_published_flag,
6504 neg_header_record_data.view_by_date,
6505 neg_header_record_data.note_to_bidders,
6506 neg_header_record_data.show_bidder_notes,
6507 neg_header_record_data.bid_scope_code,
6508 neg_header_record_data.bid_list_type,
6509 neg_header_record_data.bid_frequency_code,
6510 neg_header_record_data.bid_ranking,
6511 neg_header_record_data.rank_indicator,
6512 neg_header_record_data.full_quantity_bid_code,
6513 neg_header_record_data.multiple_rounds_flag,
6514 neg_header_record_data.manual_close_flag,
6515 neg_header_record_data.manual_extend_flag,
6516 neg_header_record_data.award_approval_flag,
6517 neg_header_record_data.auction_origination_code,
6518 neg_header_record_data.pf_type_allowed,
6519 neg_header_record_data.hdr_attr_enable_weights,
6520 neg_header_record_data.award_by_date,
6521 neg_header_record_data.auto_extend_flag,
6522 neg_header_record_data.auto_extend_number,
6523 neg_header_record_data.min_bid_decrement,
6524 neg_header_record_data.min_bid_change_type,
6525 neg_header_record_data.price_driven_auction_flag,
6526 neg_header_record_data.carrier_code,
6527 neg_header_record_data.auto_extend_all_lines_flag,
6528 neg_header_record_data.allow_other_bid_currency_flag,
6529 neg_header_record_data.auto_extend_duration,
6530 neg_header_record_data.publish_rates_to_bidders_flag,
6531 neg_header_record_data.event_id,
6532 neg_header_record_data.event_title,
6533 neg_header_record_data.sealed_auction_status,
6534 neg_header_record_data.auto_extend_type_flag,
6535 neg_header_record_data.show_bidder_scores,
6536 neg_header_record_data.po_min_rel_amount,
6537 neg_header_record_data.hdr_attr_display_score,
6538 neg_header_record_data.int_attribute_category,
6539 neg_header_record_data.int_attribute1,
6540 neg_header_record_data.int_attribute2,
6541 neg_header_record_data.int_attribute3,
6542 neg_header_record_data.int_attribute4 ,
6543 neg_header_record_data.int_attribute5,
6544 neg_header_record_data.int_attribute6,
6545 neg_header_record_data.int_attribute7,
6546 neg_header_record_data.int_attribute8,
6547 neg_header_record_data.int_attribute9,
6548 neg_header_record_data.int_attribute10,
6549 neg_header_record_data.int_attribute11,
6550 neg_header_record_data.int_attribute12,
6551 neg_header_record_data.int_attribute13,
6552 neg_header_record_data.int_attribute14,
6553 neg_header_record_data.int_attribute15,
6554 neg_header_record_data.ext_attribute_category,
6555 neg_header_record_data.ext_attribute1,
6556 neg_header_record_data.ext_attribute2,
6557 neg_header_record_data.ext_attribute3,
6558 neg_header_record_data.ext_attribute4,
6559 neg_header_record_data.ext_attribute5,
6560 neg_header_record_data.ext_attribute6,
6561 neg_header_record_data.ext_attribute7,
6562 neg_header_record_data.ext_attribute8,
6563 neg_header_record_data.ext_attribute9,
6564 neg_header_record_data.ext_attribute10,
6565 neg_header_record_data.ext_attribute11,
6566 neg_header_record_data.ext_attribute12,
6567 neg_header_record_data.ext_attribute13,
6568 neg_header_record_data.ext_attribute14,
6569 neg_header_record_data.ext_attribute15,
6570 neg_header_record_data.abstract_details,
6571 neg_header_record_data.supplier_view_type,
6572 neg_header_record_data.project_id,
6573 neg_header_record_data.bid_decrement_method,
6574 neg_header_record_data.display_best_price_blind_flag,
6575 neg_header_record_data.first_line_close_date,
6576 neg_header_record_data.staggered_closing_interval,
6577 neg_header_record_data.enforce_prevrnd_bid_price_flag,
6578 neg_header_record_data.auto_extend_min_trigger_rank,
6579 neg_header_record_data.two_part_flag,
6580 neg_header_record_data.standard_form,
6581 neg_header_record_data.document_format,
6582 neg_header_record_data.amendment_description,
6583 neg_header_record_data.creation_date,
6584 neg_header_record_data.created_by,
6585 neg_header_record_data.last_update_date,
6586 neg_header_record_data.last_updated_by
6587 ,neg_header_record_data.ALLOW_WITHDRAW_FLAG,neg_header_record_data.ALLOW_UNSOL_OFFER_LINES, neg_header_record_data.ALLOW_MULTIPLE_ACTIVE_OFFERS
6588 --,neg_header_record_data.EFFECTIVE_DATE
6589 ,neg_header_record_data.FAIR_OPP_NOTICE_FLAG
6590 ,neg_header_record_data.FEDERAL_PUBLICATION_EXCEPTION
6591 ,neg_header_record_data.NO_OF_COPIES
6592 ,neg_header_record_data.REVISION
6593 ,neg_header_record_data.SIGNED_DATE
6594 ,neg_header_record_data.SOLICITATION_TYPE
6595 ,neg_header_record_data.UMBRELLA_PROGRAM_ID
6596 ,neg_header_record_data.CD_EDITBYUSER_FLAG
6597 ,neg_header_record_data.CD_GENERATED_DATE
6598 ,neg_header_record_data.CD_GENERATED_FLAG
6599 ,neg_header_record_data.AMENDUPDATED_AFTERCDGENERATED
6600
6601 FROM pon_auction_headers_interface
6602 WHERE batch_id = p_batch_id;
6603
6604 SELECT internal_name, transaction_type
6605 INTO l_document_type, neg_header_record_data.auction_type
6606 FROM pon_auc_doctypes
6607 WHERE doctype_id = neg_header_record_data.doctype_id;
6608
6609 IF ( p_is_amendment = 'Y' ) THEN
6610 SELECT org_id, doctype_id, style_id, po_style_Id, contract_type
6611 INTO neg_header_record_data.org_id, neg_header_record_data.doctype_id,
6612 neg_header_record_data.style_id, neg_header_record_data.po_style_Id,
6613 neg_header_record_data.contract_type
6614 FROM pon_auction_headers_all
6615 WHERE auction_header_id = p_src_auction_header_id;
6616 END IF;
6617
6618 -- UDA template id and date derivation
6619 IF ( p_is_amendment <> 'Y'
6620 AND PON_CLM_UTIL_PKG.IS_DOCUMENT_FEDERAL(neg_header_record_data.doctype_id) = 1 ) THEN
6621 neg_header_record_data.uda_template_id := po_uda_data_util.get_template_id(
6622 p_functional_area => 'SOURCING',
6623 p_document_type => 'SOLICITATION',
6624 p_document_style_id => NULL,
6625 p_document_level => 'HEADER',
6626 p_input_date => sysdate,
6627 x_return_status => l_template_return_status,
6628 x_err_msg => l_template_err_msg);
6629 IF ( l_template_return_status <> FND_API.G_RET_STS_SUCCESS ) THEN
6630 print_log('Error in UDA template id defaulting');
6631 insert_error ('PON_IMPORT_UDA_TEMP_ERR',p_batch_id,'UDA_TEMPLATE_ID',
6632 NULL,fnd_global.user_id, fnd_global.login_id);
6633 RAISE FND_API.G_EXC_ERROR;
6634 END IF;
6635 neg_header_record_data.uda_template_date := SYSDATE ;
6636 END IF;
6637
6638 EXCEPTION
6639 WHEN OTHERS THEN
6640 print_Log('Error in populate_neg_header_rec procedure' );
6641 RAISE FND_API.G_EXC_ERROR;
6642
6643 END populate_neg_header_rec;
6644
6645 PROCEDURE init_rule_based_header_data(p_is_amendment IN VARCHAR2,
6646 p_src_auction_Header_id IN NUMBER) AS
6647
6648 --organization based default data
6649 l_org_default_data org_default_data;
6650 l_document_type pon_auc_doctypes.internal_name%TYPE;
6651 rfi_doctype_id pon_auction_Headers_all.doctype_id%TYPE;
6652 -- po doc style related fields
6653 l_advances_flag po_doc_style_headers.advances_flag%TYPE;
6654 l_retainage_flag po_doc_style_headers.retainage_flag%TYPE;
6655 l_price_breaks_flag po_doc_style_headers.price_breaks_flag%TYPE;
6656 l_price_differentials_flag po_doc_style_headers.price_differentials_flag%TYPE;
6657 l_progress_payment_flag po_doc_style_headers.progress_payment_flag%TYPE;
6658 l_contract_financing_flag po_doc_style_headers.contract_financing_flag%TYPE;
6659 dummy1 VARCHAR2(100);
6660 dummy2 VARCHAR2(100);
6661 dummy3 VARCHAR2(100);
6662 dummy4 VARCHAR2(100);
6663 dummy5 VARCHAR2(100);
6664
6665
6666 BEGIN
6667
6668
6669 print_log('init_rule_based_header_data begin ');
6670
6671 SELECT internal_name, transaction_type
6672 INTO l_document_type, neg_header_record_data.auction_type
6673 FROM pon_auc_doctypes
6674 WHERE doctype_id = neg_header_record_data.doctype_id;
6675
6676 SELECT DOCTYPE_ID INTO rfi_doctype_id FROM pon_auc_doctypes WHERE INTERNAL_NAME='REQUEST_FOR_INFORMATION';
6677
6678 BEGIN
6679 IF (p_is_amendment <> 'Y' AND rfi_doctype_id<>neg_header_record_data.doctype_id) THEN
6680
6681 print_log('init_rule_based_header_data: Document not RFI ');
6682
6683 SELECT pdl.DOCUMENT_SUBTYPE, pdh.style_id
6684 INTO neg_header_record_data.contract_type, neg_header_record_data.po_style_id
6685 FROM po_doc_style_headers pdh, po_all_doc_style_Lines pdl
6686 WHERE pdh.style_id = pdl.style_id
6687 AND pdh.status= 'ACTIVE'
6688 AND pdl.enabled_flag= 'Y'
6689 and Nvl(pdh.clm_flag,'N') = PON_CLM_UTIL_PKG.ISCLMRESP
6690 AND pdl.LANGUAGE=UserEnv('LANG')
6691 AND pdl.display_name = neg_header_record_data.po_style_name;
6692 END IF;
6693 EXCEPTION
6694 WHEN No_Data_Found THEN
6695 neg_header_record_data.contract_type:=NULL;
6696 neg_header_record_data.po_style_id := NULL;
6697 END;
6698
6699 BEGIN
6700 select (nvl(max(location_id), -1))
6701 INTO neg_header_record_data.ship_to_location_id
6702 from po_ship_to_loc_org_v po_v
6703 where po_v.location_code = neg_header_record_data.ship_to_location_code
6704 AND neg_header_record_data.ship_to_location_code IS NOT NULL;
6705 EXCEPTION
6706 WHEN No_Data_Found THEN
6707 NULL;
6708 END;
6709
6710 BEGIN
6711 SELECT (nvl(max(location_id), -1))
6712 INTO neg_header_record_data.bill_to_location_id
6713 from HR_LOCATIONS_ALL L
6714 where L.LOCATION_CODE = neg_header_record_data.bill_to_location_code
6715 AND neg_header_record_data.bill_to_location_code IS NOT NULL
6716 AND NVL(L.BUSINESS_GROUP_ID, NVL(HR_GENERAL.GET_BUSINESS_GROUP_ID, -99) ) = NVL(HR_GENERAL.GET_BUSINESS_GROUP_ID, -99)
6717 AND SYSDATE < NVL(L.INACTIVE_DATE, SYSDATE + 1) AND NVL(L.BILL_TO_SITE_FLAG,'N') = 'Y';
6718 EXCEPTION
6719 WHEN No_Data_Found THEN
6720 NULL;
6721 END;
6722
6723 select distinct
6724 psp.org_id
6725 , fsp.bill_to_location_id
6726 , fsp.ship_to_location_id
6727 , fsp.terms_id
6728 , fsp.fob_lookup_code
6729 , fsp.freight_terms_lookup_code
6730 , psp.default_rate_type
6731 , sob.currency_code
6732 , posl.security_level_code
6733 INTO
6734 l_org_default_data
6735 from
6736 po_system_parameters_all psp
6737 , hr_all_organization_units_tl haou
6738 , financials_system_params_all fsp
6739 , gl_sets_of_books sob
6740 , hr_locations_all_tl bill_to
6741 , hr_locations_all_tl ship_to
6742 , ( SELECT po.org_id, po.security_level_code, pon.doctype_id
6743 FROM po_document_types_all po, pon_auc_doctypes pon
6744 WHERE po.document_type_code = pon.document_type_code
6745 AND po.document_subtype = pon.document_subtype
6746 AND po.security_level_code is not null
6747 ) posl
6748 where psp.org_id = haou.organization_id
6749 and haou.language = USERENV('LANG')
6750 and psp.org_id = fsp.org_id (+)
6751 and fsp.set_of_books_id = sob.set_of_books_id (+)
6752 and fsp.bill_to_location_id = bill_to.location_id (+)
6753 and fsp.ship_to_location_id = ship_to.location_id (+)
6754 and psp.org_id = posl.org_id(+)
6755 and neg_header_record_data.doctype_id = posl.doctype_id (+)
6756 and neg_header_record_data.org_id = psp.org_id
6757 AND bill_to.LANGUAGE(+) = USERENV('LANG')
6758 AND ship_to.LANGUAGE(+) = USERENV('LANG');
6759
6760 IF ( p_is_amendment <> 'Y' ) THEN
6761 neg_header_record_data.bill_to_location_id := Nvl(neg_header_record_data.bill_to_location_id,l_org_default_data.bill_to_location_id);
6762 neg_header_record_data.ship_to_location_id := Nvl(neg_header_record_data.ship_to_location_id,l_org_default_data.ship_to_location_id);
6763 neg_header_record_data.payment_terms_id := Nvl(neg_header_record_data.payment_terms_id,l_org_default_data.payment_terms_id);
6764 neg_header_record_data.fob_code := Nvl(neg_header_record_data.fob_code,l_org_default_data.fob_code);
6765 neg_header_record_data.freight_terms_code := Nvl(neg_header_record_data.freight_terms_code,l_org_default_data.freight_terms_code);
6766 neg_header_record_data.rate_type := Nvl(neg_header_record_data.rate_type,l_org_default_data.rate_type);
6767 neg_header_record_data.currency_code := Nvl(neg_header_record_data.currency_code,l_org_default_data.currency_code);
6768 neg_header_record_data.security_level_code := Nvl(neg_header_record_data.security_level_code,l_org_default_data.security_level_code);
6769 END IF;
6770
6771 SELECT
6772 LINE_ATTRIBUTE_ENABLED_FLAG, LINE_MAS_ENABLED_FLAG, PRICE_ELEMENT_ENABLED_FLAG,
6773 RFI_LINE_ENABLED_FLAG, LOT_ENABLED_FLAG, GROUP_ENABLED_FLAG, LARGE_NEG_ENABLED_FLAG,
6774 HDR_ATTRIBUTE_ENABLED_FLAG, NEG_TEAM_ENABLED_FLAG, PROXY_BIDDING_ENABLED_FLAG,
6775 POWER_BIDDING_ENABLED_FLAG, AUTO_EXTEND_ENABLED_FLAG, TEAM_SCORING_ENABLED_FLAG , QTY_PRICE_TIERS_ENABLED_FLAG,
6776 SUPP_REG_QUAL_FLAG, SUPP_EVAL_FLAG, HIDE_TERMS_FLAG, HIDE_ABSTRACT_FORMS_FLAG, HIDE_ATTACHMENTS_FLAG,
6777 INTERNAL_EVAL_FLAG, HDR_SUPP_ATTR_ENABLED_FLAG, INTGR_HDR_ATTR_FLAG, INTGR_HDR_ATTACH_FLAG, LINE_SUPP_ATTR_ENABLED_FLAG,
6778 ITEM_SUPP_ATTR_ENABLED_FLAG, INTGR_CAT_LINE_ATTR_FLAG, INTGR_ITEM_LINE_ATTR_FLAG, INTGR_CAT_LINE_ASL_FLAG
6779 INTO
6780 neg_header_record_data.LINE_ATTRIBUTE_ENABLED_FLAG,
6781 neg_header_record_data.LINE_MAS_ENABLED_FLAG,
6782 neg_header_record_data.PRICE_ELEMENT_ENABLED_FLAG,
6783 neg_header_record_data.RFI_LINE_ENABLED_FLAG,
6784 neg_header_record_data.LOT_ENABLED_FLAG,
6785 neg_header_record_data.GROUP_ENABLED_FLAG,
6786 neg_header_record_data.LARGE_NEG_ENABLED_FLAG,
6787 neg_header_record_data.HDR_ATTRIBUTE_ENABLED_FLAG,
6788 neg_header_record_data.NEG_TEAM_ENABLED_FLAG,
6789 neg_header_record_data.PROXY_BIDDING_ENABLED_FLAG,
6790 neg_header_record_data.POWER_BIDDING_ENABLED_FLAG,
6791 neg_header_record_data.AUTO_EXTEND_ENABLED_FLAG,
6792 neg_header_record_data.TEAM_SCORING_ENABLED_FLAG ,
6793 neg_header_record_data.QTY_PRICE_TIERS_ENABLED_FLAG,
6794 neg_header_record_data.SUPP_REG_QUAL_FLAG,
6795 neg_header_record_data.SUPP_EVAL_FLAG,
6796 neg_header_record_data.HIDE_TERMS_FLAG,
6797 neg_header_record_data.HIDE_ABSTRACT_FORMS_FLAG,
6798 neg_header_record_data.HIDE_ATTACHMENTS_FLAG,
6799 neg_header_record_data.INTERNAL_EVAL_FLAG,
6800 neg_header_record_data.HDR_SUPP_ATTR_ENABLED_FLAG,
6801 neg_header_record_data.INTGR_HDR_ATTR_FLAG,
6802 neg_header_record_data.INTGR_HDR_ATTACH_FLAG,
6803 neg_header_record_data.LINE_SUPP_ATTR_ENABLED_FLAG,
6804 neg_header_record_data.ITEM_SUPP_ATTR_ENABLED_FLAG,
6805 neg_header_record_data.INTGR_CAT_LINE_ATTR_FLAG,
6806 neg_header_record_data.INTGR_ITEM_LINE_ATTR_FLAG,
6807 neg_header_record_data.INTGR_CAT_LINE_ASL_FLAG
6808 FROM
6809 PON_NEGOTIATION_STYLES WHERE STYLE_ID = neg_header_record_data.style_id;
6810
6811 IF ( neg_header_record_data.QTY_PRICE_TIERS_ENABLED_FLAG = 'N' ) THEN
6812 neg_header_record_data.price_tiers_indicator := NULL;
6813 END IF;
6814
6815 IF(rfi_doctype_id<>neg_header_record_data.doctype_id) then
6816 PO_DOC_STYLE_GRP.GET_DOCUMENT_STYLE_SETTINGS(
6817 p_api_version => 1.0
6818 , p_style_id => neg_header_record_data.po_style_id
6819 , x_style_name => dummy1
6820 , x_style_description => dummy2
6821 , x_style_type => dummy3
6822 , x_status => dummy4
6823 , x_advances_flag => l_advances_flag
6824 , x_retainage_flag => l_retainage_flag
6825 , x_price_breaks_flag => l_price_breaks_flag
6826 , x_price_differentials_flag => l_price_differentials_flag
6827 , x_progress_payment_flag => l_progress_payment_flag
6828 , x_contract_financing_flag => l_contract_financing_flag
6829 , x_line_type_allowed => dummy5);
6830 END IF;
6831
6832 neg_header_record_data.progress_payment_flag := l_progress_payment_flag;
6833
6834 IF(Nvl(l_advances_flag,'N')='N') THEN
6835 neg_header_record_data.advance_negotiable_flag:='N';
6836 neg_header_record_data.recoupment_negotiable_flag:='N';
6837 END IF;
6838
6839 IF(Nvl(l_retainage_flag,'N')='N') THEN
6840 neg_header_record_data.retainage_negotiable_flag:='N';
6841 neg_header_record_data.max_retainage_negotiable_flag:='N';
6842 END IF;
6843
6844 IF(Nvl(l_progress_payment_flag,'N')='N') THEN
6845 neg_header_record_data.progress_pymt_negotiable_flag:='N';
6846 END IF;
6847
6848 IF (l_contract_financing_flag = 'Y') THEN
6849 neg_header_record_data.progress_payment_type := 'FINANCE';
6850 ELSE
6851 neg_header_record_data.progress_payment_type := 'ACTUAL';
6852 END IF;
6853
6854 IF ( Nvl(l_progress_payment_flag,'N') <> 'Y' ) THEN
6855 neg_header_record_data.advance_negotiable_flag:=NULL;
6856 neg_header_record_data.recoupment_negotiable_flag:=NULL;
6857 neg_header_record_data.retainage_negotiable_flag:=NULL;
6858 neg_header_record_data.max_retainage_negotiable_flag:=NULL;
6859 neg_header_record_data.progress_pymt_negotiable_flag:=NULL;
6860 neg_header_record_data.progress_payment_type := 'NONE';
6861 END IF;
6862
6863 IF (Nvl(l_price_breaks_flag,'N')='N') THEN
6864 neg_header_record_data.price_break_response:=NULL;
6865 ELSE
6866 IF(neg_header_record_data.price_break_response IS NULL) THEN
6867 neg_header_record_data.price_break_response := 'NONE';
6868 END IF;
6869 END IF;
6870
6871 IF ( neg_header_record_data.contract_type NOT IN ('BLANKET','CONTRACT')) THEN
6872 neg_header_record_data.GLOBAL_AGREEMENT_FLAG := 'N';
6873 END IF;
6874
6875 IF( neg_header_record_data.contract_type = 'BLANKET' AND l_document_type='SOLICITATION') THEN
6876 neg_header_record_data.GLOBAL_AGREEMENT_FLAG:='Y';
6877 END IF;
6878
6879
6880 IF( neg_header_record_data.contract_type = 'BLANKET' AND neg_header_record_data.GLOBAL_AGREEMENT_FLAG='Y') THEN
6881 neg_header_record_data.PO_MIN_REL_AMOUNT := NULL;
6882 END IF;
6883
6884 IF ( neg_header_record_data.bid_visibility_code IS NULL) THEN
6885 neg_header_record_data.bid_visibility_code := 'SEALED_BIDDING';
6886 END IF;
6887
6888
6889 BEGIN
6890 select event_id
6891 INTO neg_header_record_data.event_id
6892 from pon_auction_events
6893 where event_title = neg_header_record_data.event_title
6894 AND neg_header_record_data.event_title IS NOT NULL
6895 and trading_partner_id = neg_header_record_data.trading_partner_id
6896 and event_status <> 'CANCELLED' and NVL(open_date, SYSDATE - 100) >= SYSDATE;
6897 EXCEPTION
6898 WHEN No_Data_Found THEN
6899 NULL;
6900 END;
6901
6902
6903 BEGIN
6904 IF ( neg_header_record_data.standard_form IS NULL AND p_is_amendment <> 'Y') THEN
6905 SELECT STANDARD_FORM,DOCUMENT_FORMAT
6906 INTO neg_header_record_data.standard_form,neg_header_record_data.document_format
6907 FROM PO_PRINT_FORM_FORMATS
6908 WHERE FORM_SOURCE='PON'
6909 AND DEFAULT_FLAG='Y'
6910 AND DOCUMENT_TYPE='PO_SOL_STD_FORM'
6911 AND SYSDATE < NVL(INACTIVE_DATE,SYSDATE + 1);
6912 END IF;
6913 EXCEPTION
6914 WHEN No_Data_Found THEN
6915 NULL;
6916 END;
6917
6918 print_Log('Completing init_rule_based_header_data procedure ');
6919
6920 EXCEPTION
6921 WHEN OTHERS THEN
6922 print_Log('Error in pon_auction_headers_interface table. Please check pon_interface_errors for more details' );
6923 FND_MESSAGE.SET_NAME('PON','PON_IMPORT_HEADER_INIT_ERR');
6924 FND_MSG_PUB.ADD;
6925 RAISE FND_API.G_EXC_ERROR;
6926
6927 END init_rule_based_header_data;
6928
6929
6930
6931 PROCEDURE publish_negotiation(p_auction_header_id in NUMBER,
6932 x_return_status IN OUT NOCOPY VARCHAR2)
6933 IS
6934
6935 l_MAX_DOCUMENT_LINE_NUM pon_auction_headers_all.MAX_DOCUMENT_LINE_NUM%TYPE;
6936 l_NUMBER_OF_LINES pon_auction_headers_all.NUMBER_OF_LINES%TYPE;
6937 l_LAST_LINE_NUMBER pon_auction_headers_all.LAST_LINE_NUMBER%TYPE;
6938 l_trading_partner_contact_id pon_auction_headers_all.trading_partner_contact_id%TYPE;
6939 l_auction_title pon_auction_headers_all.auction_title%TYPE;
6940 l_close_bidding_date pon_auction_headers_all.close_bidding_date%TYPE;
6941 x_result VARCHAR2(300);
6942 x_error_code VARCHAR2(300);
6943 x_error_message VARCHAR2(300);
6944 l_disscussion_id NUMBER;
6945
6946 BEGIN
6947
6948 SELECT close_bidding_date
6949 INTO l_close_bidding_date
6950 FROM PON_AUCTION_HEADERS_ALL
6951 WHERE auction_header_id = p_auction_header_id;
6952
6953
6954 pon_negotiation_publish_pvt.update_before_publish (
6955 x_result,
6956 x_error_code,
6957 x_error_message,
6958 p_auction_header_id,
6959 l_close_bidding_date,
6960 fnd_global.user_Id,
6961 fnd_global.login_id);
6962
6963
6964 UPDATE pon_auction_headers_all SET
6965 OPEN_BIDDING_DATE=neg_header_record_data.open_bidding_date,
6966 CLOSE_BIDDING_DATE=neg_header_record_data.CLOSE_BIDDING_DATE,
6967 PUBLISH_DATE=neg_header_record_data.publish_date,
6968 AUTO_EXTEND_FLAG='N'
6969 WHERE auction_header_id = p_auction_header_id;
6970
6971 SELECT trading_partner_contact_id,auction_title
6972 INTO l_trading_partner_contact_id,l_auction_title
6973 FROM pon_auction_headers_all
6974 WHERE auction_header_id = p_auction_header_id;
6975
6976 l_disscussion_id:=PON_THREAD_DISC_PKG.INSERT_PON_DISCUSSIONS('PON_AUCTION_HEADERS_ALL',p_auction_header_id,NULL,NULL,
6977 NULL,NULL,l_auction_title,USERENV('LANG'),l_trading_partner_contact_id,
6978 'oracle.apps.pon.auctions.discussions.NegDiscussionValidation');
6979 print_log('Auction is published with disscussion id '||l_disscussion_id);
6980
6981 END publish_negotiation;
6982
6983 PROCEDURE create_amendments(
6984 p_group_batch_id IN NUMBER,
6985 x_return_status IN OUT NOCOPY VARCHAR2,
6986 x_msg_count OUT NOCOPY NUMBER,
6987 x_msg_data OUT NOCOPY varchar2
6988 )
6989 AS
6990 dummy1 NUMBER;
6991 p_error_code VARCHAR2(1);
6992 p_error_message VARCHAR2(1000);
6993 l_auctioN_header_id pon_auction_headers_all.auctioN_header_id%TYPE;
6994 l_trading_partner_id pon_auction_headers_all.trading_partner_id%TYPE;
6995 l_batch_id pon_auctioN_headers_interface.batch_id%TYPE;
6996 amend_return_status VARCHAR2(1) ;
6997
6998 CURSOR group_amendments_cur IS
6999 SELECT interface_header_id FROM pon_auction_Headers_interface
7000 WHERE interface_group_id = p_group_batch_id
7001 AND PROCESSING_STATUS_CODE = 'PENDING'
7002 AND amendment_flag = 'Y';
7003
7004 BEGIN
7005
7006 pos_enterprise_util_pkg.get_enterprise_partyId(g_trading_partner_id,
7007 p_error_code,
7008 p_error_message);
7009
7010 IF(p_error_code = 'E' ) THEN
7011 x_return_status := FND_API.G_RET_STS_ERROR;
7012 print_Log('Trading partner set up is not done.' );
7013 FND_MESSAGE.SET_NAME('PON','PON_INT_TPSETUP_ERR');
7014 FND_MSG_PUB.ADD;
7015 RETURN;
7016 END IF;
7017
7018 FOR rec IN group_amendments_cur LOOP
7019 SAVEPOINT NEG_CREATION;
7020 l_batch_id := rec.interface_header_id;
7021 BEGIN
7022 create_amendment(l_batch_id,
7023 l_auction_header_id,
7024 amend_return_status,
7025 x_msg_count,
7026 x_msg_data
7027 );
7028
7029 EXCEPTION
7030 WHEN OTHERS THEN
7031 FND_MSG_PUB.COUNT_AND_GET( p_count => x_msg_count,
7032 p_data => x_msg_data
7033 );
7034 print_log('Exception in amendment for batch_id ' || l_batch_id);
7035 print_log('Message data ' || x_msg_data);
7036 x_return_status := 'E';
7037 END;
7038 IF ( amend_return_status = 'S') THEN
7039 print_log('Amendment with auction_header_id ' || l_auction_header_id || ' has been created for batch id ' || l_batch_id);
7040 UPDATE pon_auction_headers_interface
7041 SET PROCESSING_STATUS_CODE = 'SUCCESS'
7042 WHERE batch_id = l_batch_id;
7043 COMMIT;
7044 ELSE
7045 print_log('Negotiation creation has failed for batch id ' || l_batch_id);
7046 -- return error status even if one batch fails
7047 x_return_status := FND_API.G_RET_STS_ERROR;
7048 --ROLLBACK TO NEG_CREATION;
7049 IF ( l_auction_header_id IS NOT NULL ) THEN
7050 DELETE FROM pon_auction_headers_all WHERE auction_header_id = l_auction_header_id;
7051 DELETE FROM pon_auction_item_prices_all WHERE auction_header_id = l_auction_header_id;
7052 DELETE FROM pon_price_elements WHERE auction_header_id = l_auction_header_id;
7053 DELETE FROM pon_auction_shipments_all WHERE auction_header_id = l_auction_header_id;
7054 DELETE FROM pon_neg_team_members WHERE auction_header_id = l_auction_header_id;
7055 DELETE FROM pon_auction_attributes WHERE auction_header_id = l_auction_header_id;
7056 DELETE FROM pon_bidding_parties WHERE auction_header_id = l_auction_header_id;
7057 DELETE FROM pon_attribute_scores WHERE auction_header_id = l_auction_header_id;
7058 DELETE FROM pon_auction_sections WHERE auction_header_id = l_auction_header_id;
7059 DELETE FROM pon_auction_headers_ext_b WHERE auction_header_id = l_auction_header_id;
7060 DELETE FROM pon_auction_headers_ext_tl WHERE auction_header_id = l_auction_header_id;
7061 DELETE FROM pon_auction_item_prices_ext_b WHERE auction_header_id = l_auction_header_id;
7062 DELETE FROM pon_auction_item_prices_ext_tl WHERE auction_header_id = l_auction_header_id;
7063 END IF;
7064 UPDATE pon_auction_headers_interface
7065 SET PROCESSING_STATUS_CODE = 'FAILED'
7066 WHERE batch_id = l_batch_id;
7067 COMMIT;
7068 END IF;
7069 END LOOP;
7070
7071 IF x_return_status <> FND_API.G_RET_STS_ERROR THEN
7072 x_return_status := FND_API.G_RET_STS_SUCCESS;
7073 END IF;
7074
7075 EXCEPTION
7076 WHEN OTHERS THEN
7077 print_log('Exception in create_negotiations procedure.');
7078 x_return_status := FND_API.G_RET_STS_ERROR;
7079 FND_MSG_PUB.COUNT_AND_GET( p_count => x_msg_count,
7080 p_data => x_msg_data);
7081
7082 END create_amendments;
7083
7084
7085 PROCEDURE create_amendment( p_batch_id IN NUMBER,
7086 x_auction_header_id OUT NOCOPY NUMBER,
7087 x_return_status IN OUT NOCOPY VARCHAR2,
7088 x_msg_count IN OUT NOCOPY NUMBER,
7089 x_msg_data IN OUT NOCOPY varchar2)
7090 IS
7091 l_tpc_id pon_auction_headers_all.trading_partner_contact_id%TYPE;
7092 l_tpc_name pon_auction_headers_all.trading_partner_contact_name%TYPE;
7093 l_username fnd_user.user_name%TYPE;
7094 l_mgr_id fnd_user.user_id%TYPE;
7095 l_doctype_id pon_auction_headers_all.doctype_id%TYPE;
7096 P_ERROR_CODE VARCHAR2(50);
7097 P_ERROR_MESSAGE VARCHAR2(50);
7098 o_auction_header_id NUMBER;
7099 x_document_number VARCHAR2(50);
7100 x_request_id VARCHAR2(50);
7101 l_auctioN_header_id pon_auction_headers_interface.auctioN_header_id%TYPE;
7102 l_style_id pon_auction_headers_interface.style_id%TYPE;
7103 l_award_approval pon_auction_headers_interface.award_approval_flag%TYPE;
7104 l_retain_clause pon_auction_headers_interface.retain_clause_flag%TYPE;
7105 l_update_clause pon_auction_headers_interface.update_clause_flag%TYPE;
7106 l_retain_attachments pon_auction_headers_interface.retain_attachments_flag%TYPE;
7107 l_src_auction_header_id pon_auction_headers_interface.auction_header_id%TYPE;
7108 l_uda_template_id NUMBER;
7109 l_api_name CONSTANT VARCHAR2(30) := 'Create_amendment';
7110 l_api_version CONSTANT NUMBER := 1.0;
7111
7112 l_dummy_data VARCHAR2(100);
7113 l_extra_info VARCHAR2(100);
7114 l_row_in_hr VARCHAR2(100);
7115 l_vendor_relationship VARCHAR2(100);
7116 l_enterprise_relationship VARCHAR2(100);
7117 l_status VARCHAR2(100);
7118 l_exception_msg VARCHAR2(100);
7119
7120
7121 BEGIN
7122 print_log('In Create Ammendment procedure');
7123 x_return_status := 'S';
7124
7125 update pon_auction_headers_interface SET batch_id = p_batch_id WHERE interface_header_id = p_batch_id;
7126 update pon_item_prices_interface SET batch_id = p_batch_id, auction_line_number = interface_line_id WHERE interface_header_id = p_batch_id;
7127 update PON_AUC_ATTRIBUTES_INTERFACE SET batch_id = p_batch_id, auction_line_number = interface_line_id WHERE interface_header_id = p_batch_id;
7128 update pon_attribute_scores_interface SET batch_id = p_batch_id, LINE_NUMBER = interface_line_id WHERE interface_header_id = p_batch_id;
7129 update pon_bid_parties_interface SET batch_id = p_batch_id WHERE interface_header_id = p_batch_id;
7130 update PON_NEG_TEAM_INTERFACE SET batch_id = p_batch_id WHERE interface_header_id = p_batch_id;
7131 update PON_AUC_PRICE_ELEMENTS_INT SET batch_id = p_batch_id, auction_line_number = interface_line_id WHERE interface_header_id = p_batch_id;
7132 update pon_auc_price_breaks_interface SET batch_id = p_batch_id, auction_line_number = interface_line_id WHERE interface_header_id = p_batch_id;
7133 update pon_auc_price_differ_int SET batch_id = p_batch_id, auction_line_number = interface_line_id WHERE interface_header_id = p_batch_id;
7134
7135
7136 SELECT auction_header_id, award_approval_flag,
7137 retain_clause_flag,update_clause_flag, retain_attachments_flag,
7138 trading_partner_contact_name
7139 INTO l_auction_header_id, l_award_approval,
7140 l_retain_clause, l_update_clause, l_retain_attachments,
7141 l_tpc_name
7142 FROM pon_auction_headers_interface
7143 WHERE batch_id = p_batch_id;
7144
7145 -- checking validity of trading_partner_contact_name
7146 BEGIN
7147 SELECT DISTINCT EMP.USER_NAME, emp.person_party_id, SUP.USER_ID
7148 INTO l_username, l_tpc_id, l_mgr_id
7149 FROM PER_ALL_ASSIGNMENTS_F ASS,
7150 PER_ALL_ASSIGNMENTS_F SUPASS ,
7151 FND_USER SUP ,
7152 FND_USER EMP ,
7153 PER_ALL_PEOPLE_F PER ,
7154 PER_ALL_POSITIONS POS
7155 WHERE ASS.PERSON_ID = EMP.EMPLOYEE_ID
7156 AND ASS.SUPERVISOR_ID = SUP.EMPLOYEE_ID
7157 AND ASS.PRIMARY_FLAG = 'Y'
7158 AND ASS.ASSIGNMENT_TYPE IN ('E', 'C')
7159 AND TRUNC(SYSDATE) BETWEEN ASS.EFFECTIVE_START_DATE AND ASS.EFFECTIVE_END_DATE
7160 AND SUPASS.PERSON_ID = ASS.SUPERVISOR_ID
7161 AND SUPASS.POSITION_ID = POS.POSITION_ID(+)
7162 AND SUPASS.PRIMARY_FLAG = 'Y'
7163 AND ((SUPASS.ASSIGNMENT_TYPE = 'E'
7164 AND PER.CURRENT_EMPLOYEE_FLAG = 'Y')
7165 OR (SUPASS.ASSIGNMENT_TYPE = 'C'
7166 AND PER.CURRENT_NPW_FLAG = 'Y'))
7167 AND TRUNC(SYSDATE) BETWEEN PER.EFFECTIVE_START_DATE AND PER.EFFECTIVE_END_DATE
7168 AND TRUNC(SYSDATE) BETWEEN SUPASS.EFFECTIVE_START_DATE AND SUPASS.EFFECTIVE_END_DATE
7169 AND SUP.START_DATE <= SYSDATE
7170 AND NVL(SUP.END_DATE, SYSDATE) >= SYSDATE
7171 AND PER.PERSON_ID = SUP.EMPLOYEE_ID
7172 AND EMP.user_name = l_tpc_name;
7173 EXCEPTION
7174 WHEN No_Data_Found THEN
7175 x_return_status := FND_API.G_RET_STS_ERROR;
7176 insert_error ('PON_INT_TPC_INV',p_batch_id,'TRADING_PARTNER_CONTACT_NAME',
7177 NULL,fnd_global.user_id, fnd_global.login_id);
7178
7179 print_Log('trading parter name given is invalid for batch_id ' || p_batch_id );
7180 RAISE FND_API.G_EXC_ERROR;
7181 END;
7182
7183 IF(can_create_amendment(p_batch_id,l_tpc_id,l_auction_header_id)) THEN
7184 print_log('Ammendement can be created ' || x_return_status);
7185
7186 SELECT doctype_id, style_id
7187 INTO l_doctype_id, l_style_id
7188 FROM pon_auction_headers_all WHERE auction_header_id = l_auction_header_id;
7189
7190 IF PON_CLM_UTIL_PKG.IS_DOCUMENT_FEDERAL(p_doc_type_id => l_doctype_id) = 1 THEN
7191 pon_negotiation_copy_grp.FED_CREATE_AMD_COPY_NEG
7192 (1.0,'F','N',l_auction_header_id,g_trading_partner_id,l_tpc_id,USERENV('LANG'),l_tpc_id,
7193 l_doctype_id,'AMENDMENT',l_award_approval,l_username,l_mgr_id,'Y', 'N', 'Y',null,l_style_id,'N',
7194 x_auction_header_id,x_document_number,x_request_id,x_return_status,x_msg_count,x_msg_data);
7195 else
7196 pon_negotiation_copy_grp.COPY_NEGOTIATION
7197 (1.0,'F','N',l_auction_header_id,g_trading_partner_id,l_tpc_id,USERENV('LANG'),l_tpc_id,
7198 l_doctype_id,'AMENDMENT',l_award_approval,l_username,l_mgr_id,'Y', 'N', 'Y',null,l_style_id,
7199 x_auction_header_id,x_document_number,x_request_id,x_return_status,x_msg_count,x_msg_data);
7200 END IF;
7201
7202 print_log('Ammendment Copied ' || x_return_status);
7203
7204 IF ( x_return_status = 'S' ) THEN
7205 print_log(' Updating interface tables with auction_header_id ' || x_auction_header_id);
7206 update pon_item_prices_interface SET auction_header_id = x_auction_header_id WHERE batch_id = p_batch_id;
7207 update PON_AUC_ATTRIBUTES_INTERFACE SET auction_header_id = x_auction_header_id WHERE batch_id = p_batch_id;
7208 update pon_attribute_scores_interface SET auction_header_id = x_auction_header_id WHERE batch_id = p_batch_id;
7209 update pon_bid_parties_interface SET auction_header_id = x_auction_header_id WHERE batch_id = p_batch_id;
7210 update PON_NEG_TEAM_INTERFACE SET auction_header_id = x_auction_header_id WHERE batch_id = p_batch_id;
7211 update PON_AUC_PRICE_ELEMENTS_INT SET auction_header_id = x_auction_header_id WHERE batch_id = p_batch_id;
7212 update pon_auc_price_breaks_interface SET auction_header_id = x_auction_header_id WHERE batch_id = p_batch_id;
7213 update pon_auc_price_differ_int SET auction_header_id = x_auction_header_id WHERE batch_id = p_batch_id;
7214 ELSE
7215 print_log('Amendment creation failed for batch ' || p_batch_id);
7216 FND_MESSAGE.SET_NAME('PON','PON_INT_AMEND_FAIL');
7217 FND_MSG_PUB.ADD;
7218 RAISE FND_API.G_EXC_ERROR;
7219 END IF;
7220
7221 -- Call to populate neg_header_record_data record
7222 -- This record will be used to insert data in pon_auction_headers_all table
7223 populate_neg_header_rec(
7224 p_batch_id,
7225 'Y',
7226 x_auction_header_id
7227 );
7228
7229 -- Below call will populate org based, neg style based and po style based data in neg_header_record_data record
7230 init_rule_based_header_data('Y',x_auction_header_id);
7231
7232 validate_header(
7233 p_batch_id,
7234 g_trading_partner_id,
7235 'Y',
7236 x_auction_header_id
7237 );
7238
7239 BEGIN
7240 SELECT 'E' status
7241 INTO x_return_status
7242 FROM dual
7243 WHERE EXISTS
7244 (SELECT * FROM pon_interface_errors WHERE BATCH_ID= p_batch_Id
7245 );
7246 EXCEPTION
7247 WHEN No_Data_Found THEN
7248 x_return_status:=FND_API.G_RET_STS_SUCCESS;
7249 END;
7250
7251 IF(x_return_status=FND_API.G_RET_STS_ERROR) THEN
7252 print_Log('Error in pon_auction_headers_interface table. Please check pon_interface_errors for more details' );
7253 FND_MESSAGE.SET_NAME('PON','PON_INT_HEADER_VAL_ERR');
7254 FND_MSG_PUB.ADD;
7255 RAISE FND_API.G_EXC_ERROR;
7256 END IF;
7257
7258 print_log(' Header validations are completed ');
7259
7260 -- Insert data into pon_auction_headers_all table
7261 update_amendment_header(x_auction_header_id);
7262
7263 print_log('Header information updated for amendment ' || x_auction_header_id );
7264
7265 IF ( PON_CLM_UTIL_PKG.IS_DOCUMENT_FEDERAL(l_doctype_id) = 1 ) THEN
7266 SELECT uda_template_id INTO l_uda_template_id
7267 FROM pon_auction_Headers_all
7268 WHERE auction_header_id = x_auction_header_id;
7269
7270 process_uda_attributes(p_batch_id, x_auction_header_id, NULL, l_uda_template_id,'PON_AUC_HDRS_EXT_ATTRS', x_return_status);
7271 IF(x_return_status = FND_API.G_RET_STS_ERROR) THEN
7272 print_log('failure from create_amendment');
7273 insert_error ('PON_INT_UDA_ERR',p_batch_id,'UDA',
7274 NULL,fnd_global.user_id, fnd_global.login_id);
7275 RETURN;
7276 END IF;
7277 print_log('Header UDA information inserted' );
7278 END IF;
7279
7280
7281 -- add any additional member to collab team
7282 create_neg_team('N',
7283 p_batch_id,
7284 x_return_status);
7285
7286 IF(x_return_status = FND_API.G_RET_STS_ERROR) THEN
7287 print_log('failure from create_neg_team');
7288 insert_error ('PON_INT_COLL_FAIL',p_batch_id,'COLLABORATION_TEAM',
7289 NULL,fnd_global.user_id, fnd_global.login_id);
7290 RAISE FND_API.G_EXC_ERROR;
7291 END IF;
7292
7293 print_log('Negotiation team members insertion completed');
7294
7295 -- insert header requirements
7296 create_header_attr_inter('N',
7297 p_batch_id,
7298 x_return_status);
7299
7300 IF(x_return_status = FND_API.G_RET_STS_ERROR) THEN
7301 print_log('failure from create_header_attr_inter');
7302 insert_error ('PON_INT_ATT_FAIL',p_batch_id,'HEADER_ATTRIBUTES',
7303 NULL,fnd_global.user_id, fnd_global.login_id);
7304 RAISE FND_API.G_EXC_ERROR;
7305 END IF;
7306
7307 print_log('Header requirements insertion completed');
7308
7309 create_lines_with_children(
7310 p_batch_id,
7311 x_auction_header_id,
7312 x_return_status
7313 );
7314 print_log('Lines information inserted for batch_id ' || p_batch_id || ' auction_header_id ' || x_auction_header_id
7315 || ' x_return_status ' || x_return_status);
7316 IF(x_return_status = FND_API.G_RET_STS_ERROR) THEN
7317 print_log('failure from create_lines_with_children');
7318 insert_error ('PON_INT_LINE_FAIL',p_batch_id,'LINE',
7319 NULL,fnd_global.user_id, fnd_global.login_id);
7320 RAISE FND_API.G_EXC_ERROR;
7321 END IF;
7322
7323 IF ( PON_CLM_UTIL_PKG.IS_DOCUMENT_FEDERAL(l_doctype_id) = 1 ) THEN
7324 SELECT uda_template_id INTO l_uda_template_id
7325 FROM pon_auction_item_prices_all
7326 WHERE auction_header_id = x_auction_header_id
7327 AND ROWNUM=1;
7328
7329 FOR rec IN (SELECT line_number FROM pon_auction_item_prices_all WHERE auction_Header_id = x_auction_header_id ) LOOP
7330 process_uda_attributes(p_batch_id, x_auction_header_id, rec.line_number, l_uda_template_id, 'PON_AUC_PRICES_EXT_ATTRS', x_return_status);
7331 IF(x_return_status = FND_API.G_RET_STS_ERROR) THEN
7332 print_log('failure in Line UDA insertion for line ' || rec.line_number);
7333 insert_error ('PON_INT_LINEUDA_FAIL',p_batch_id,'LINE_UDA',
7334 NULL,fnd_global.user_id, fnd_global.login_id);
7335 RETURN;
7336 END IF;
7337 END LOOP;
7338 print_Log('Line level UDA insertion completed successfully');
7339 END IF;
7340
7341
7342 ELSE
7343 print_log('Amendment can not be created for the auction_header_id given for batch ' || p_batch_id);
7344 insert_error ('PON_INT_AMENDCHECK_FAIL',p_batch_id,'AMENDMENT',
7345 NULL,fnd_global.user_id, fnd_global.login_id);
7346 RAISE FND_API.G_EXC_ERROR;
7347
7348 END IF;
7349
7350 EXCEPTION
7351 WHEN OTHERS THEN
7352 x_return_status := 'E';
7353 FND_MSG_PUB.COUNT_AND_GET( p_count => x_msg_count,
7354 p_data => x_msg_data);
7355
7356 END create_amendment;
7357
7358 FUNCTION can_create_amendment(
7359 p_batch_id IN NUMBER,
7360 p_tpc_id IN NUMBER,
7361 p_auction_header_id IN NUMBER)
7362 RETURN boolean
7363 IS
7364 l_CLOSE_BIDDING_DATE pon_auction_headers_all.CLOSE_BIDDING_DATE%TYPE;
7365 l_view_by_DATE pon_auction_headers_all.view_by_DATE%TYPE;
7366 l_OPEN_BIDDING_DATE pon_auction_headers_all.OPEN_BIDDING_DATE%TYPE;
7367 l_auction_status pon_auction_headers_all.auction_status%TYPE;
7368 l_auc_tpc_id pon_auction_headers_all.trading_partner_contact_id%TYPE;
7369 l_auc_tp_id pon_auction_headers_all.trading_partner_id%TYPE;
7370 l_security_level_code pon_auction_headers_all.security_level_code%TYPE;
7371 l_username fnd_user.user_name%TYPE;
7372 P_ERROR_CODE VARCHAR2(50);
7373 P_ERROR_MESSAGE VARCHAR2(50);
7374 l_check VARCHAR(1);
7375 DRAFT_AMENDMENT_COUNT NUMBER;
7376
7377
7378 BEGIN
7379 print_log('canCreateAmendment');
7380
7381 BEGIN
7382
7383 SELECT CLOSE_BIDDING_DATE, view_by_DATE, OPEN_BIDDING_DATE,auction_status,trading_partner_contact_id,trading_partner_id,security_level_code
7384 INTO l_CLOSE_BIDDING_DATE,l_view_by_DATE,l_OPEN_BIDDING_DATE,l_auction_status,l_auc_tpc_id,l_auc_tp_id,l_security_level_code
7385 FROM PON_AUCTION_HEADERS_ALL
7386 WHERE auction_header_id=p_auction_header_id
7387 AND auction_status = 'ACTIVE';
7388 EXCEPTION
7389 WHEN No_Data_Found THEN
7390 print_log('No data found for given ' || p_auction_header_id);
7391 RETURN FALSE;
7392 END;
7393
7394 -- Check whether the auction is open for bidding i.e. sysdate < close_bidding_date
7395 IF(l_close_bidding_date IS NOT NULL) THEN
7396 IF (sysdate > l_close_bidding_date)then
7397 RETURN FALSE;
7398 END IF;
7399 END IF;
7400
7401 -- if the close date has not reached, then check whether preview date has been specified
7402 -- if preview date has been specified, check whether preview_date < sysdate
7403 -- if preview date not been specified. check whether open_date < sysdate
7404
7405 IF(l_view_by_DATE IS NULL) THEN
7406 l_view_by_DATE:=l_OPEN_BIDDING_DATE;
7407 END IF;
7408
7409 IF (l_view_by_DATE > sysdate)then
7410 RETURN FALSE;
7411 END IF;
7412
7413 --finally, make sure that the auction_status != 'AUCTION_CLOSED' auction_status != 'CANCELLED'
7414
7415 if( (l_auction_status='AUCTION_CLOSED') OR (l_auction_status='CANCELLED'))THEN
7416 -- if the auction is closed or canceled
7417 return false;
7418 END IF;
7419
7420 SELECT COUNT(AUCTION_HEADER_ID) INTO DRAFT_AMENDMENT_COUNT
7421 FROM PON_AUCTION_HEADERS_ALL AH
7422 WHERE AH.AUCTION_HEADER_ID_ORIG_AMEND <> AH.AUCTION_HEADER_ID
7423 AND AH.AUCTION_HEADER_ID_ORIG_AMEND = (
7424 SELECT AUCTION_HEADER_ID_ORIG_AMEND
7425 FROM PON_AUCTION_HEADERS_ALL
7426 WHERE AUCTION_HEADER_ID = p_auction_header_id)
7427 AND AH.AUCTION_STATUS = 'DRAFT';
7428
7429 IF (DRAFT_AMENDMENT_COUNT >0) THEN
7430 RETURN FALSE;
7431 END IF;
7432 SELECT user_name INTO l_username FROM fnd_user WHERE user_id = p_tpc_id;
7433
7434 if (p_tpc_id = l_auc_tpc_id) then
7435 return true;
7436 END IF;
7437 if (g_trading_partner_id = l_auc_tp_id) then
7438 BEGIN
7439 SELECT 'Y' INTO l_check FROM pon_neg_team_members WHERE MENU_NAME='PON_SOURCING_EDITNEG' AND user_name = l_username AND auction_header_id=p_auction_header_id ;
7440 EXCEPTION
7441 WHEN No_Data_Found THEN
7442 l_check:=NULL;
7443 END;
7444 IF(Nvl(l_check,'N')='Y') THEN
7445 RETURN TRUE;
7446 END IF;
7447
7448 BEGIN
7449 SELECT 'Y' INTO l_check FROM pon_neg_team_members WHERE user_name = l_username AND auction_header_id=p_auction_header_id ;
7450 EXCEPTION
7451 WHEN No_Data_Found THEN
7452 l_check:=NULL;
7453 END;
7454 IF(l_security_level_code='PUBLIC' AND Nvl(l_check,'N')='N') THEN
7455 RETURN TRUE;
7456 END IF;
7457 RETURN FALSE;
7458 END IF;
7459
7460 print_log('Can create amendment');
7461
7462 END can_create_amendment;
7463
7464 PROCEDURE update_amendment_header(p_auction_header_id IN NUMBER)
7465 AS
7466
7467 BEGIN
7468 UPDATE PON_AUCTION_HEADERS_ALL paha
7469 SET
7470 AUCTION_TITLE = Nvl(neg_header_record_data.auction_title,paha.auction_title) ,
7471 description = Nvl(neg_header_record_data.description,paha.description),
7472 GLOBAL_AGREEMENT_FLAG=Nvl(neg_header_record_data.GLOBAL_AGREEMENT_FLAG,paha.GLOBAL_AGREEMENT_FLAG),
7473 PRICE_BREAK_RESPONSE = Nvl(neg_header_record_data.PRICE_BREAK_RESPONSE,paha.PRICE_BREAK_RESPONSE),
7474 ADVANCE_NEGOTIABLE_FLAG = Nvl(neg_header_record_data.ADVANCE_NEGOTIABLE_FLAG,paha.ADVANCE_NEGOTIABLE_FLAG),
7475 RECOUPMENT_NEGOTIABLE_FLAG= Nvl(neg_header_record_data.RECOUPMENT_NEGOTIABLE_FLAG,paha.RECOUPMENT_NEGOTIABLE_FLAG),
7476 PROGRESS_PYMT_NEGOTIABLE_FLAG= Nvl(neg_header_record_data.PROGRESS_PYMT_NEGOTIABLE_FLAG,paha.PROGRESS_PYMT_NEGOTIABLE_FLAG),
7477 RETAINAGE_NEGOTIABLE_FLAG= Nvl(neg_header_record_data.RETAINAGE_NEGOTIABLE_FLAG,paha.RETAINAGE_NEGOTIABLE_FLAG),
7478 MAX_RETAINAGE_NEGOTIABLE_FLAG= Nvl(neg_header_record_data.MAX_RETAINAGE_NEGOTIABLE_FLAG,paha.MAX_RETAINAGE_NEGOTIABLE_FLAG),
7479 SUPPLIER_ENTERABLE_PYMT_FLAG= Nvl(neg_header_record_data.SUPPLIER_ENTERABLE_PYMT_FLAG,paha.SUPPLIER_ENTERABLE_PYMT_FLAG),
7480 PROGRESS_PAYMENT_TYPE= Nvl(neg_header_record_data.PROGRESS_PAYMENT_TYPE,paha.PROGRESS_PAYMENT_TYPE),
7481 PRICE_TIERS_INDICATOR= Nvl(neg_header_record_data.PRICE_TIERS_INDICATOR, paha.PRICE_TIERS_INDICATOR),
7482 -- QTY_PRICE_TIERS_ENABLED_FLAG= Nvl(neg_header_record_data.
7483 ship_to_location_id= Nvl(neg_header_record_data.ship_to_location_id, paha.ship_to_location_id),
7484 bill_to_location_id= Nvl(neg_header_record_data.bill_to_location_id, paha.bill_to_location_id),
7485 payment_terms_id= Nvl(neg_header_record_data.payment_terms_id, paha.payment_terms_id),
7486 fob_code= Nvl(neg_header_record_data.fob_code, paha.fob_code),
7487 freight_terms_code= Nvl(neg_header_record_data.freight_terms_code, paha.freight_terms_code),
7488 rate_type= Nvl(neg_header_record_data.rate_type, paha.rate_type),
7489 currency_code= Nvl(neg_header_record_data.currency_code, paha.currency_code),
7490 PO_START_DATE= Nvl(neg_header_record_data.PO_START_DATE, paha.PO_START_DATE),
7491 PO_END_DATE= Nvl(neg_header_record_data.PO_END_DATE, paha.PO_END_DATE),
7492 CLOSE_bidding_date= Nvl(neg_header_record_data.CLOSE_bidding_date, paha.CLOSE_bidding_date),
7493 note_to_bidders= Nvl(neg_header_record_data.note_to_bidders, paha.note_to_bidders),
7494 SHOW_BIDDER_NOTES= paha.SHOW_BIDDER_NOTES,
7495 BID_SCOPE_CODE= Nvl(neg_header_record_data.BID_SCOPE_CODE, paha.BID_SCOPE_CODE),
7496 -- BID_LIST_TYPE= Nvl(neg_header_record_data.
7497 -- BID_FREQUENCY_CODE= Nvl(neg_header_record_data.
7498 -- full_quantity_bid_code= Nvl(neg_header_record_data.
7499 multiple_rounds_flag= Nvl(neg_header_record_data.multiple_rounds_flag, paha.multiple_rounds_flag),
7500 manual_close_flag= Nvl(neg_header_record_data.manual_close_flag, paha.manual_close_flag),
7501 manual_extend_flag= Nvl(neg_header_record_data.manual_extend_flag, paha.manual_extend_flag),
7502 award_approval_flag= Nvl(neg_header_record_data.award_approval_flag, paha.award_approval_flag),
7503 -- CLOSE_DATE= Nvl(neg_header_record_data.
7504 AUTO_EXTEND_FLAG= Nvl(neg_header_record_data.AUTO_EXTEND_FLAG, paha.AUTO_EXTEND_FLAG),
7505 AUTO_EXTEND_NUMBER= Nvl(neg_header_record_data.AUTO_EXTEND_NUMBER, paha.AUTO_EXTEND_NUMBER),
7506 MIN_BID_DECREMENT= Nvl(neg_header_record_data.MIN_BID_DECREMENT, paha.MIN_BID_DECREMENT),
7507 CARRIER_CODE= Nvl(neg_header_record_data.CARRIER_CODE, paha.CARRIER_CODE),
7508 RATE_DATE= Nvl(neg_header_record_data.RATE_DATE, paha.RATE_DATE),
7509 -- RATE= Nvl(neg_header_record_data.RATE, paha.RATE),
7510 AUTO_EXTEND_ALL_LINES_FLAG= Nvl(neg_header_record_data.AUTO_EXTEND_ALL_LINES_FLAG, paha.AUTO_EXTEND_ALL_LINES_FLAG),
7511 ALLOW_OTHER_BID_CURRENCY_FLAG= Nvl(neg_header_record_data.ALLOW_OTHER_BID_CURRENCY_FLAG, paha.ALLOW_OTHER_BID_CURRENCY_FLAG),
7512 AUTO_EXTEND_DURATION= Nvl(neg_header_record_data.AUTO_EXTEND_DURATION, paha.AUTO_EXTEND_DURATION),
7513 MIN_BID_CHANGE_TYPE= Nvl(neg_header_record_data.MIN_BID_CHANGE_TYPE, paha.MIN_BID_CHANGE_TYPE),
7514 NUMBER_PRICE_DECIMALS= Nvl(neg_header_record_data.NUMBER_PRICE_DECIMALS, paha.NUMBER_PRICE_DECIMALS),
7515 AUTO_EXTEND_TYPE_FLAG= Nvl(neg_header_record_data.AUTO_EXTEND_TYPE_FLAG, paha.AUTO_EXTEND_TYPE_FLAG),
7516 -- APPROVAL_REQUIRED_FLAG= Nvl(neg_header_record_data.
7517 MAX_RESPONSES= Nvl(neg_header_record_data.MAX_RESPONSES, paha.MAX_RESPONSES),
7518 PO_MIN_REL_AMOUNT= Nvl(neg_header_record_data.PO_MIN_REL_AMOUNT, paha.PO_MIN_REL_AMOUNT),
7519 AMENDMENT_DESCRIPTION= Nvl(neg_header_record_data.AMENDMENT_DESCRIPTION, paha.AMENDMENT_DESCRIPTION),
7520 HDR_ATTR_MAXIMUM_SCORE= Nvl(neg_header_record_data.HDR_ATTR_MAXIMUM_SCORE, paha.HDR_ATTR_MAXIMUM_SCORE),
7521 INT_ATTRIBUTE_CATEGORY= Nvl(neg_header_record_data.INT_ATTRIBUTE_CATEGORY, paha.INT_ATTRIBUTE_CATEGORY),
7522 INT_ATTRIBUTE1= Nvl(neg_header_record_data.INT_ATTRIBUTE1, paha.INT_ATTRIBUTE1),
7523 INT_ATTRIBUTE2= Nvl(neg_header_record_data.INT_ATTRIBUTE2, paha.INT_ATTRIBUTE2),
7524 INT_ATTRIBUTE3= Nvl(neg_header_record_data.INT_ATTRIBUTE3, paha.INT_ATTRIBUTE3),
7525 INT_ATTRIBUTE4= Nvl(neg_header_record_data.INT_ATTRIBUTE4, paha.INT_ATTRIBUTE4),
7526 INT_ATTRIBUTE5= Nvl(neg_header_record_data.INT_ATTRIBUTE5, paha.INT_ATTRIBUTE5),
7527 INT_ATTRIBUTE6= Nvl(neg_header_record_data.INT_ATTRIBUTE6, paha.INT_ATTRIBUTE6),
7528 INT_ATTRIBUTE7= Nvl(neg_header_record_data.INT_ATTRIBUTE7, paha.INT_ATTRIBUTE7),
7529 INT_ATTRIBUTE8= Nvl(neg_header_record_data.INT_ATTRIBUTE8, paha.INT_ATTRIBUTE8),
7530 INT_ATTRIBUTE9= Nvl(neg_header_record_data.INT_ATTRIBUTE9, paha.INT_ATTRIBUTE9),
7531 INT_ATTRIBUTE10= Nvl(neg_header_record_data.INT_ATTRIBUTE10, paha.INT_ATTRIBUTE10),
7532 INT_ATTRIBUTE11= Nvl(neg_header_record_data.INT_ATTRIBUTE11, paha.INT_ATTRIBUTE11),
7533 INT_ATTRIBUTE12 = Nvl(neg_header_record_data.INT_ATTRIBUTE12 , paha.INT_ATTRIBUTE12 ),
7534 INT_ATTRIBUTE13 = Nvl(neg_header_record_data.INT_ATTRIBUTE13 , paha.INT_ATTRIBUTE13 ),
7535 INT_ATTRIBUTE14 = Nvl(neg_header_record_data.INT_ATTRIBUTE14 , paha.INT_ATTRIBUTE14 ),
7536 INT_ATTRIBUTE15= Nvl(neg_header_record_data.INT_ATTRIBUTE15, paha.INT_ATTRIBUTE15),
7537 EXT_ATTRIBUTE_CATEGORY= Nvl(neg_header_record_data.EXT_ATTRIBUTE_CATEGORY, paha.EXT_ATTRIBUTE_CATEGORY),
7538 EXT_ATTRIBUTE1= Nvl(neg_header_record_data.EXT_ATTRIBUTE1, paha.EXT_ATTRIBUTE1),
7539 EXT_ATTRIBUTE2= Nvl(neg_header_record_data.EXT_ATTRIBUTE2, paha.EXT_ATTRIBUTE2),
7540 EXT_ATTRIBUTE3= Nvl(neg_header_record_data.EXT_ATTRIBUTE3, paha.EXT_ATTRIBUTE3),
7541 EXT_ATTRIBUTE4= Nvl(neg_header_record_data.EXT_ATTRIBUTE4, paha.EXT_ATTRIBUTE4),
7542 EXT_ATTRIBUTE5 = Nvl(neg_header_record_data.EXT_ATTRIBUTE5 , paha.EXT_ATTRIBUTE5 ),
7543 EXT_ATTRIBUTE6 = Nvl(neg_header_record_data.EXT_ATTRIBUTE6 , paha.EXT_ATTRIBUTE6 ),
7544 EXT_ATTRIBUTE7 = Nvl(neg_header_record_data.EXT_ATTRIBUTE7 , paha.EXT_ATTRIBUTE7 ),
7545 EXT_ATTRIBUTE8= Nvl(neg_header_record_data.EXT_ATTRIBUTE8, paha.EXT_ATTRIBUTE8),
7546 EXT_ATTRIBUTE9= Nvl(neg_header_record_data.EXT_ATTRIBUTE9, paha.EXT_ATTRIBUTE9),
7547 EXT_ATTRIBUTE10= Nvl(neg_header_record_data.EXT_ATTRIBUTE10, paha.EXT_ATTRIBUTE10),
7548 EXT_ATTRIBUTE11= Nvl(neg_header_record_data.EXT_ATTRIBUTE11, paha.EXT_ATTRIBUTE11),
7549 EXT_ATTRIBUTE12= Nvl(neg_header_record_data.EXT_ATTRIBUTE12, paha.EXT_ATTRIBUTE12),
7550 EXT_ATTRIBUTE13= Nvl(neg_header_record_data.EXT_ATTRIBUTE13, paha.EXT_ATTRIBUTE13),
7551 EXT_ATTRIBUTE14 = Nvl(neg_header_record_data.EXT_ATTRIBUTE14 , paha.EXT_ATTRIBUTE14 ),
7552 EXT_ATTRIBUTE15= Nvl(neg_header_record_data.EXT_ATTRIBUTE15, paha.EXT_ATTRIBUTE15),
7553 PROJECT_ID = Nvl(neg_header_record_data.PROJECT_ID , paha.PROJECT_ID ),
7554 BID_DECREMENT_METHOD= Nvl(neg_header_record_data.BID_DECREMENT_METHOD, paha.BID_DECREMENT_METHOD),
7555 DISPLAY_BEST_PRICE_BLIND_FLAG= Nvl(neg_header_record_data.DISPLAY_BEST_PRICE_BLIND_FLAG, paha.DISPLAY_BEST_PRICE_BLIND_FLAG),
7556 FIRST_LINE_CLOSE_DATE = Nvl(neg_header_record_data.FIRST_LINE_CLOSE_DATE , paha.FIRST_LINE_CLOSE_DATE ),
7557 STAGGERED_CLOSING_INTERVAL = Nvl(neg_header_record_data.STAGGERED_CLOSING_INTERVAL , paha.STAGGERED_CLOSING_INTERVAL ),
7558 ENFORCE_PREVRND_BID_PRICE_FLAG= Nvl(neg_header_record_data.ENFORCE_PREVRND_BID_PRICE_FLAG, paha.ENFORCE_PREVRND_BID_PRICE_FLAG),
7559 AUTO_EXTEND_MIN_TRIGGER_RANK = Nvl(neg_header_record_data.AUTO_EXTEND_MIN_TRIGGER_RANK , paha.AUTO_EXTEND_MIN_TRIGGER_RANK ),
7560 standard_form= Nvl(neg_header_record_data.standard_form, paha.standard_form),
7561 document_format= Nvl(neg_header_record_data.document_format, paha.document_format)
7562 WHERE auction_header_id = p_auction_Header_id;
7563
7564 END update_amendment_header;
7565
7566 PROCEDURE insert_error (p_error_msg IN VARCHAR2 ,
7567 p_batch_id IN NUMBER,
7568 p_entity_type IN VARCHAR2,
7569 p_auction_header_id IN NUMBER,
7570 p_user_id IN NUMBER,
7571 p_user_login IN number)
7572 AS
7573
7574 BEGIN
7575 INSERT INTO PON_INTERFACE_ERRORS
7576 (
7577 INTERFACE_TYPE ,
7578 ERROR_MESSAGE_NAME,
7579 BATCH_ID ,
7580 ENTITY_TYPE ,
7581 AUCTION_HEADER_ID ,
7582 CREATED_BY ,
7583 CREATION_DATE ,
7584 LAST_UPDATED_BY ,
7585 LAST_UPDATE_DATE ,
7586 LAST_UPDATE_LOGIN
7587 )
7588 VALUES
7589 (
7590 g_interface_type,
7591 p_error_msg,
7592 p_batch_id,
7593 p_entity_type,
7594 p_auction_header_id,
7595 p_user_id,
7596 SYSDATE,
7597 p_user_id,
7598 SYSDATE,
7599 p_user_login
7600 );
7601
7602 END insert_error;
7603
7604 PROCEDURE line_sanity_validation(p_batch_id IN NUMBER )
7605
7606 IS
7607
7608 dummy NUMBER;
7609
7610 BEGIN
7611
7612 INSERT ALL
7613 WHEN (sel_line_id > 1
7614 AND NOT EXISTS (SELECT interface_line_id FROM pon_item_prices_interface t2
7615 WHERE t2.batch_id = p_batch_id
7616 AND t2.interface_line_id = (sel_line_id - 1)) )
7617 THEN INTO PON_INTERFACE_ERRORS
7618 (
7619 INTERFACE_TYPE ,
7620 ERROR_MESSAGE_NAME,
7621 BATCH_ID ,
7622 line_number,
7623 ENTITY_TYPE ,
7624 CREATED_BY ,
7625 CREATION_DATE ,
7626 LAST_UPDATED_BY ,
7627 LAST_UPDATE_DATE ,
7628 LAST_UPDATE_LOGIN
7629 )
7630 VALUES(
7631 'LINES',
7632 'PON_IMPORT_LINE_NUM_ERR',
7633 p_batch_id,
7634 sel_line_id,
7635 'PON_ITEM_PRICES_INTERFACE',
7636 fnd_global.user_id,
7637 SYSDATE,
7638 fnd_global.user_id,
7639 SYSDATE,
7640 fnd_global.login_id)
7641 WHEN (sel_line_id < 1 OR
7642 ( sel_line_id = 1 AND sel_group_type IN ('LOT_LINE','GROUP_LINE')))
7643 THEN INTO PON_INTERFACE_ERRORS
7644 (
7645 INTERFACE_TYPE ,
7646 ERROR_MESSAGE_NAME,
7647 BATCH_ID ,
7648 line_number,
7649 ENTITY_TYPE ,
7650 CREATED_BY ,
7651 CREATION_DATE ,
7652 LAST_UPDATED_BY ,
7653 LAST_UPDATE_DATE ,
7654 LAST_UPDATE_LOGIN
7655 )
7656 VALUES(
7657 'LINES',
7658 'PON_IMPORT_LINE_NUM_ERR',
7659 p_batch_id,
7660 sel_line_id,
7661 'PON_ITEM_PRICES_INTERFACE',
7662 fnd_global.user_id,
7663 SYSDATE,
7664 fnd_global.user_id,
7665 SYSDATE,
7666 fnd_global.login_id)
7667 WHEN (sel_line_id > 1
7668 AND EXISTS (SELECT interface_line_id FROM pon_item_prices_interface t2
7669 WHERE t2.batch_id = p_batch_id
7670 AND t2.interface_line_id = (sel_line_id - 1)
7671 AND
7672 (
7673 (sel_group_type = 'LOT_LINE'
7674 AND t2.group_type NOT IN ('LOT','LOT_LINE'))
7675 OR
7676 (sel_group_type = 'GROUP_LINE'
7677 AND t2.group_type NOT IN ('GROUP','GROUP_LINE'))
7678 )) )
7679 THEN INTO PON_INTERFACE_ERRORS
7680 (
7681 INTERFACE_TYPE ,
7682 ERROR_MESSAGE_NAME,
7683 BATCH_ID ,
7684 line_number,
7685 ENTITY_TYPE ,
7686 CREATED_BY ,
7687 CREATION_DATE ,
7688 LAST_UPDATED_BY ,
7689 LAST_UPDATE_DATE ,
7690 LAST_UPDATE_LOGIN
7691 )
7692 VALUES(
7693 'LINES',
7694 'PON_IMPORT_LINE_ORDER_ERR',
7695 p_batch_id,
7696 sel_line_id,
7697 'PON_ITEM_PRICES_INTERFACE',
7698 fnd_global.user_id,
7699 SYSDATE,
7700 fnd_global.user_id,
7701 SYSDATE,
7702 fnd_global.login_id)
7703 SELECT
7704 interface_line_id sel_line_id,
7705 group_type sel_group_type
7706 FROM pon_item_prices_interface
7707 WHERE batch_id = p_batch_id;
7708
7709 BEGIN
7710
7711 SELECT 1 INTO dummy FROM dual
7712 WHERE NOT EXISTS (SELECT interface_line_id FROM pon_item_prices_interface
7713 WHERE batch_id = p_batch_id AND interface_line_id = 1);
7714
7715 INSERT INTO PON_INTERFACE_ERRORS
7716 (
7717 INTERFACE_TYPE ,
7718 ERROR_MESSAGE_NAME,
7719 BATCH_ID ,
7720 ENTITY_TYPE ,
7721 CREATED_BY ,
7722 CREATION_DATE ,
7723 LAST_UPDATED_BY ,
7724 LAST_UPDATE_DATE ,
7725 LAST_UPDATE_LOGIN
7726 )
7727 VALUES(
7728 'LINES',
7729 'PON_IMPORT_LINE_NUM_ERR',
7730 p_batch_id,
7731 'PON_ITEM_PRICES_INTERFACE',
7732 fnd_global.user_id,
7733 SYSDATE,
7734 fnd_global.user_id,
7735 SYSDATE,
7736 fnd_global.login_id);
7737
7738 EXCEPTION
7739 WHEN OTHERS THEN
7740 NULL;
7741 END;
7742
7743 IF ( PON_CLM_UTIL_PKG.IS_DOCUMENT_FEDERAL(neg_header_record_data.doctype_id) = 1 ) THEN
7744
7745 INSERT ALL
7746 WHEN (sel_group_type <> 'LINE')
7747 THEN INTO PON_INTERFACE_ERRORS
7748 (
7749 INTERFACE_TYPE ,
7750 ERROR_MESSAGE_NAME,
7751 BATCH_ID ,
7752 line_number,
7753 ENTITY_TYPE ,
7754 CREATED_BY ,
7755 CREATION_DATE ,
7756 LAST_UPDATED_BY ,
7757 LAST_UPDATE_DATE ,
7758 LAST_UPDATE_LOGIN
7759 )
7760 VALUES(
7761 'LINES',
7762 'PON_IMPORT_LINE_GRP_ERR',
7763 p_batch_id,
7764 sel_line_id,
7765 'PON_ITEM_PRICES_INTERFACE',
7766 fnd_global.user_id,
7767 SYSDATE,
7768 fnd_global.user_id,
7769 SYSDATE,
7770 fnd_global.login_id)
7771 WHEN (sel_info_flag IS NULL )
7772 THEN INTO PON_INTERFACE_ERRORS
7773 (
7774 INTERFACE_TYPE ,
7775 ERROR_MESSAGE_NAME,
7776 column_name,
7777 BATCH_ID ,
7778 line_number,
7779 ENTITY_TYPE ,
7780 CREATED_BY ,
7781 CREATION_DATE ,
7782 LAST_UPDATED_BY ,
7783 LAST_UPDATE_DATE ,
7784 LAST_UPDATE_LOGIN
7785 )
7786 VALUES(
7787 'LINES',
7788 'PON_FIELD_MUST_BE_ENTERED',
7789 'CLM_INFO_FLAG',
7790 p_batch_id,
7791 sel_line_id,
7792 'PON_ITEM_PRICES_INTERFACE',
7793 fnd_global.user_id,
7794 SYSDATE,
7795 fnd_global.user_id,
7796 SYSDATE,
7797 fnd_global.login_id)
7798 WHEN (sel_info_flag = 'Y'
7799 AND (sel_price IS NOT NULL
7800 OR sel_qty IS NOT NULL
7801 OR sel_category IS NOT NULL
7802 OR sel_line_type IS NOT NULL ) )
7803 THEN INTO PON_INTERFACE_ERRORS
7804 (
7805 INTERFACE_TYPE ,
7806 ERROR_MESSAGE_NAME,
7807 BATCH_ID ,
7808 line_number,
7809 ENTITY_TYPE ,
7810 CREATED_BY ,
7811 CREATION_DATE ,
7812 LAST_UPDATED_BY ,
7813 LAST_UPDATE_DATE ,
7814 LAST_UPDATE_LOGIN
7815 )
7816 VALUES(
7817 'LINES',
7818 'PON_IMPORT_INFOLINE_ERR',
7819 p_batch_id,
7820 sel_line_id,
7821 'PON_ITEM_PRICES_INTERFACE',
7822 fnd_global.user_id,
7823 SYSDATE,
7824 fnd_global.user_id,
7825 SYSDATE,
7826 fnd_global.login_id)
7827
7828 WHEN (sel_group_Line_id IS NOT NULL
7829 AND (EXISTS (SELECT interface_line_id FROM pon_item_prices_interface t2
7830 WHERE t2.interface_line_id = sel_group_line_id
7831 AND Nvl(t2.clm_info_flag,'N') = 'N'
7832 AND Nvl(sel_info_flag,'N') = 'N' )
7833 OR sel_line_id = 1)) -- first line can't be slin
7834 THEN INTO PON_INTERFACE_ERRORS
7835 (
7836 INTERFACE_TYPE ,
7837 ERROR_MESSAGE_NAME,
7838 BATCH_ID ,
7839 line_number,
7840 ENTITY_TYPE ,
7841 CREATED_BY ,
7842 CREATION_DATE ,
7843 LAST_UPDATED_BY ,
7844 LAST_UPDATE_DATE ,
7845 LAST_UPDATE_LOGIN
7846 )
7847 VALUES(
7848 'LINES',
7849 'PON_IMPORT_CLINSLIN_ERR',
7850 p_batch_id,
7851 sel_line_id,
7852 'PON_ITEM_PRICES_INTERFACE',
7853 fnd_global.user_id,
7854 SYSDATE,
7855 fnd_global.user_id,
7856 SYSDATE,
7857 fnd_global.login_id)
7858
7859 SELECT
7860 interface_line_id sel_line_id,
7861 group_type sel_group_type,
7862 clm_info_flag sel_info_flag,
7863 group_line_id sel_group_Line_id,
7864 price sel_price,
7865 quantity sel_qty,
7866 category_name sel_category,
7867 line_type sel_line_type
7868 FROM pon_item_prices_interface
7869 WHERE batch_id = p_batch_id;
7870
7871 END IF;
7872
7873 EXCEPTION
7874 WHEN OTHERS THEN
7875 NULL;
7876
7877 END line_sanity_validation;
7878
7879 END PON_OPEN_INTERFACE_PVT;