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