DBA Data[Home] [Help]

PACKAGE BODY: APPS.PON_NEGOTIATION_PUBLISH_PVT

Source


1 PACKAGE BODY pon_negotiation_publish_pvt AS
2 /* $Header: PONNEGPB.pls 120.64.12020000.3 2013/02/20 05:20:40 hvutukur ship $ */
3 
4 g_module_prefix        CONSTANT VARCHAR2(50) := 'pon.plsql.PON_NEGOTIATION_PUBLISH_PVT.';
5 
6 TYPE DOCUMENT_TYPE_NAME IS TABLE OF PON_AUC_DOCTYPES.DOCTYPE_GROUP_NAME%TYPE INDEX BY BINARY_INTEGER;
7 TYPE DOCUMENT_TYPE_REQUIRED_RULE IS TABLE OF PON_AUC_DOCTYPE_RULES.REQUIRED_FLAG%TYPE INDEX BY PON_AUC_BIZRULES.NAME%TYPE;
8 TYPE DOCUMENT_TYPE_VALIDITY_RULE IS TABLE OF PON_AUC_DOCTYPE_RULES.VALIDITY_FLAG%TYPE INDEX BY PON_AUC_BIZRULES.NAME%TYPE;
9 
10 g_document_type_required_rule DOCUMENT_TYPE_REQUIRED_RULE;
11 g_document_type_validity_rule DOCUMENT_TYPE_VALIDITY_RULE;
12 g_document_type_names DOCUMENT_TYPE_NAME;
13 
14 g_null_int CONSTANT NUMBER := -9999;
15 g_unlimited_int CONSTANT NUMBER := 10000;
16 g_invalid_string CONSTANT VARCHAR2(10) := ')(*%^';
17 g_item_price_type_id CONSTANT NUMBER := -10;
18 g_precision_any CONSTANT NUMBER := 10000;
19 g_temp_labor CONSTANT VARCHAR2(20) := 'TEMP LABOR';
20 g_fixed_price CONSTANT VARCHAR2(20) :='FIXED PRICE';
21 g_fixed_amount CONSTANT VARCHAR2(20) := 'FIXED_AMOUNT';
22 g_per_unit CONSTANT VARCHAR2(10) := 'PER_UNIT';
23 g_empty_price_type CONSTANT VARCHAR2(20) := 'EMPTY PRICE TYPE';
24 g_none CONSTANT VARCHAR2(20) := 'NONE';
25 g_amount CONSTANT VARCHAR2(20) := 'AMOUNT';
26 g_interface_type CONSTANT VARCHAR2(20) := 'PUBLISHNEG';
27 g_auction_item_type CONSTANT VARCHAR2(20) := 'AUCTION_ITEM';
28 g_auction_attrs_type CONSTANT VARCHAR2(20) := 'AUCTION_ATTRS';
29 g_auction_pfs_type CONSTANT VARCHAR2(20) := 'AUCTION_PFS';
30 g_auction_pbs_type CONSTANT VARCHAR2(20) := 'AUCTION_PBS';
31 g_auction_pds_type CONSTANT VARCHAR2(20) := 'AUCTION_PDS';
32 g_rfq_pymts_type CONSTANT VARCHAR2(20) := 'AUCTION_PYMTS';
33 g_program_type_neg_approve CONSTANT VARCHAR2(20) := 'NEG_APPROVAL';
34 g_program_type_neg_publish CONSTANT VARCHAR2(20) := 'NEG_PUBLISH';
35 g_auction_pts_type CONSTANT VARCHAR2(20) := 'AUCTION_PTS';
36 
37 g_is_fed VARCHAR2(1) := 'N';
38 
39 
40 FUNCTION boolean_to_string (
41   p_boolean IN BOOLEAN
42 ) RETURN STRING IS
43 BEGIN
44 
45   IF (p_boolean) THEN
46     RETURN 'TRUE';
47   ELSE
48     RETURN 'FALSE';
49   END IF;
50 END boolean_to_string;
51 
52 FUNCTION IS_PROJECT_SPONSORED (
53   p_project_id IN NUMBER
54 ) RETURN VARCHAR2 IS
55 BEGIN
56 
57   IF p_project_id IS NOT NULL AND
58      GMS_TRANSACTIONS_PUB.IS_SPONSORED_PROJECT(p_project_id) THEN
59     RETURN 'Y';
60   ELSE
61      RETURN 'N';
62   END IF;
63 END IS_PROJECT_SPONSORED;
64 
65 
66 --Start Validation procedures
67 
68 /*
69  * Line validations: The following validations involve only the item_prices_all table and not the
70  * po line types table
71  * 1. The group type for a line should be 'GROUP_LINE' or 'LOT_LINE' if the parent_line_number is populated.
72  *    The group type for a line should be 'GROUP' or 'LOT' if the parent_line_number is not populated
73  * 2. The item description should not be an empty string if the doc type rules do not allow
74  * 3. The line_type_id should not be null
75  * 4. The category should not be empty
76  * 5. Target price should be positive
77  * 6. Bid start price should be positive
78  * 7. Current_price should be positive
79  * 8. Target price should be less than bid start price
80  * 9. If display target price is set then target prices should be entered
81  * 10. Po minimum release amount should be positive
82  * 11. When display unit target prices is set then unit target price should be entered
83  * 12. Target price  precision should be less than the auction currencyprecision
84  * 13. Bid start price precision should be less than the auction currency precision
85  * 14. Current price precision should be less than the auction currency precision
86  * 15. The precision of po minimum release amount should be less than the fnd currency precision
87  * 16. Need_by date should be after start date
88  * 17. Need by date should be after close bidding date. If no close bidding date then after sysdate
89  * 18. Need by start date should be after close bidding date. If no close bidding date then after sysdate
90  * 19. For lines with "planned" inventory items in a SPO negotiation either need-by from or need-by to date must be entered
91  * 20. If this is a global agreement then cummulative price breaks are not allowed.
92  * 21. If the user has selected to enter price breaks then there should be atleast one price break
93  *     If the price breaks are non negotiable (which also means the price break type is 'REQUIRED')
94  *     and the size is zero, the user must enter a price break.
95  * 22. If the user has selected to enter price differentials then there should be atleast one price differential.
96  * 23. if there are no price differentials and price differentails type is not NONE just give an error.
97  * 24. Every LOT or GROUP should have atleast one line inside it.
98  * 25. Unit Price should be greater than zero
99  * 26. There should be atleast one supplier price factor if the unit price is entered
100  * 27. The total weight of all attributes in an MAS auction should be 100
101  * 28. If quantity is entered then it should be positive
102  * 29. The precision of po agreed amount should be less than the auction currency PRECISION
103  * 30. Ship to location should not be NULL in case of RFI
104  * 31. In a private auction there should be no line without any invitees
105  */
106 
107 PROCEDURE VALIDATE_PROJECTS_DETAILS (
108   p_project_id         IN NUMBER,
109   p_task_id            IN NUMBER,
110   p_expenditure_date   IN DATE,
111   p_expenditure_type   IN VARCHAR2,
112   p_expenditure_org    IN NUMBER,
113   p_person_id          IN NUMBER,
114   p_auction_header_id  IN NUMBER,
115   p_line_number        IN NUMBER,
116   p_document_disp_line_number    IN VARCHAR2,
117   p_payment_id         IN NUMBER,
118   p_interface_line_id  IN NUMBER,
119   p_payment_display_number     IN NUMBER,
120   p_batch_id           IN NUMBER,
121   p_table_name         IN VARCHAR2,
122   p_interface_type     IN VARCHAR2,
123   p_entity_type        IN VARCHAR2,
124   p_called_from        IN VARCHAR2
125 ) IS
126 l_module  CONSTANT VARCHAR2(32) := 'VALIDATE_PROJECTS_DETAILS';
127 l_progress         VARCHAR2(200);
128 l_msg_application  VARCHAR2(50);
129 l_msg_type         VARCHAR2(1);
130 l_msg_token1       VARCHAR2(1000);
131 l_msg_token2       VARCHAR2(1000);
132 l_msg_token3       VARCHAR2(1000);
133 l_msg_data         VARCHAR2(1000);
134 l_msg_count        NUMBER;
135 l_billable_flag    VARCHAR2(1);
136 l_error_message_name      VARCHAR2(30);
137 l_token1_name      VARCHAR2(10);
138 l_token1_value      VARCHAR2(22);
139 l_token2_name      VARCHAR2(10);
140 l_token2_value      VARCHAR2(22);
141 l_token3_name      VARCHAR2(10);
142 l_token3_value      VARCHAR2(22);
143 
144 BEGIN
145 
146   IF p_called_from = 'LINES' THEN
147 
148     l_error_message_name := 'PON_PATC_VALIDATION_L';
149     l_token2_name := 'LINENUM';
150     l_token2_value := p_document_disp_line_number;
151     l_token3_name := null;
152     l_token3_value := null;
153   ELSIF p_called_from = 'PAYMENTS' THEN
154 
155     l_error_message_name := 'PON_PATC_VALIDATION_P';
156     l_token2_name := 'LINENUM';
157     l_token2_value := p_document_disp_line_number;
158     l_token3_name := 'PAYITEMNUM';
159     l_token3_value := p_payment_display_number;
160   ELSE --p_called_from = PAYMENTS_SP, LINES_SP
161     l_error_message_name := 'PON_PATC_VALIDATION_G';
162     l_token2_name := null;
163     l_token2_value := null;
164     l_token3_name := null;
165     l_token3_value := null;
166   END IF;
167 
168     PA_TRANSACTIONS_PUB.validate_transaction(
169       X_PROJECT_ID         => p_project_id,
170       X_TASK_ID            => p_task_id,
171       X_EI_DATE            => p_expenditure_date,
172       X_EXPENDITURE_TYPE   => p_expenditure_type,
173       X_NON_LABOR_RESOURCE => null,
174       X_PERSON_ID          => null,
175       x_incurred_by_org_id => p_expenditure_org,
176       X_CALLING_MODULE     => 'PO',
177       X_MSG_APPLICATION    => l_msg_application,
178       X_MSG_TYPE           => l_msg_type,
179       X_MSG_TOKEN1         => l_msg_token1,
180       x_msg_data           => l_msg_data,
181       X_MSG_TOKEN2         => l_msg_token2,
182       X_MSG_TOKEN3         => l_msg_token3,
183       X_MSG_COUNT          => l_msg_count,
184       X_BILLABLE_FLAG      => l_billable_flag);
185 
186     IF l_msg_data IS NOT NULL AND l_msg_type = 'E' THEN
187       INSERT INTO pon_interface_errors
188       (
189          error_message_name,
190          token1_name,
191          token1_value,
192          token2_name,
193          token2_value,
194          token3_name,
195          token3_value,
196          error_value_datatype,
197          interface_type,
198          table_name,
199          batch_id,
200          entity_type,
201          auction_header_id,
202          line_number,
203          payment_id,
204          interface_line_id,
205          expiration_date,
206          created_by,
207          creation_date,
208          last_updated_by,
209          last_update_date,
210          last_update_login
211       )
212        VALUES
213       (
214          l_error_message_name,
215          'PROJMSG',
216          fnd_message.get_string(l_msg_application, l_msg_data),
217          l_token2_name,
218          l_token2_value,
219          l_token3_name,
220          l_token3_value,
221          'TXT',
222          p_interface_type,
223          p_table_name,
224          p_batch_id,
225          p_entity_type, --DECODE(p_called_from,'LINES',g_auction_item_type,'PAYMENTS',g_rfq_pymts_type),
226          p_auction_header_id,
227          p_line_number,
228          p_payment_id,
229          p_interface_line_id,
230          SYSDATE+7,
231          FND_GLOBAL.user_id,
232          SYSDATE,
233          FND_GLOBAL.user_id,
234          SYSDATE,
235          FND_GLOBAL.login_id
236       );
237 	END IF;
238 EXCEPTION
239     WHEN OTHERS THEN
240 
241     IF (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.g_current_runtime_level) THEN
242       FND_LOG.string (log_level => FND_LOG.level_exception,
243         module  => g_module_prefix || 'VALIDATE_PROJECTS_DETAILS',
244         message => 'Exception occured validate_projects_details'
245             || ' Error Number :' || SQLCODE || ' Exception Message :' || SUBSTR(SQLERRM, 1, 200));
246     END IF;
247 END VALIDATE_PROJECTS_DETAILS;
248 
249 
250 
251 
252 PROCEDURE val_exhibits(
253 p_auction_header_id IN NUMBER,
254 p_request_id IN NUMBER,
255 p_batch_id IN NUMBER,
256 p_expiration_date IN DATE,
257 p_user_id IN NUMBER,
258 p_login_id IN NUMBER)
259 IS
260 l_exhibits_links NUMBER;
261 BEGIN
262 
263   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
264     FND_LOG.string(log_level => FND_LOG.level_procedure,
265       module  =>  g_module_prefix || 'val_exhibits',
266       message  => 'Entering PON_NEGOTIATION_HELPER_PVT.val_exhibits'
267                   || ', p_auction_header_id = ' || p_auction_header_id
268                   || ', p_user_id = ' || p_user_id
269                   || ', p_login_id = ' || p_login_id
270                   || ', p_batch_id = ' || p_batch_id);
271   END IF;
272 
273   BEGIN
274       SELECT Count(*)
275       INTO  l_exhibits_links
276       FROM pon_auction_exhibit_details
277       WHERE AUCTION_HEADER_ID=p_auction_header_id
278       AND ASSOCIATED_TO_LINE IS null;
279 
280        IF(l_exhibits_links>0) then
281         INSERT INTO PON_INTERFACE_ERRORS
282        (
283          INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
284          AUCTION_HEADER_ID, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY,
285          CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
286        )
287 
288          (SELECT g_interface_type, --INTERFACE_TYPE
289          'PON_EXHIBITS_LINK', -- ERROR_MESSAGE_NAME
290          p_request_id, -- REQUEST_ID
291          p_batch_id, --BATCH_ID
292          g_auction_item_type, -- ENTITY_TYPE
293          p_auction_header_id, -- AUCTION_HEADER_ID
294          p_expiration_date, -- EXPIRATION_DATE
295          'EXHIBIT_NUM',--TOKEN1_NAME
296          exhibits.EXHIBIT_NUMBER,--TOKEN1_VALUE
297          p_user_id, -- CREATED_BY
298          sysdate, -- CREATION_DATE
299          p_user_id, -- LAST_UPDATED_BY
300          sysdate, -- LAST_UPDATE_DATE
301          p_login_id
302          FROM  pon_auction_exhibit_details exhibits
303          WHERE AUCTION_HEADER_ID=p_auction_header_id
304          AND ASSOCIATED_TO_LINE IS NULL
305          ); -- LAST_UPDATE_LOGIN
306 
307 
308     END IF;
309   END;
310 
311 
312   BEGIN
313 
314       SELECT Count(*)
315       INTO l_exhibits_links from
316       (SELECT      exhibit_number,associated_to_line,
317                   nvl((select 1 from pon_auction_item_prices_all items_inner
318                   Where items_inner.auction_header_id = AuctionExhibitsEO.AUCTION_HEADER_ID
319                   And items_inner.exhibit_number = AuctionExhibitsEO.EXHIBIT_NUMBER
320                   And Nvl(items_inner.clm_cost_constraint,'Priced') not in ('NSP', 'NC')
321                   AND ROWNUM=1),0) as  IS_EXHIBIT_PRICED,
322                   (select decode(clm_cost_constraint,'NSP',0,'NC',0,1) from pon_auction_item_prices_all items_inner
323                    where items_inner.line_number = AuctionExhibitsEO.ASSOCIATED_TO_LINE
324                    AND items_inner.auction_header_id = AuctionExhibitsEO.AUCTION_HEADER_ID) as IS_LINE_PRICED
325       FROM PON_AUCTION_EXHIBIT_DETAILS AuctionExhibitsEO
326       WHERE AuctionExhibitsEO.AUCTION_HEADER_ID = p_auction_header_id
327       AND   Nvl(is_cdrl,'N') = 'N') -- This validation is not required for cdrl exhibits.
328       WHERE IS_EXHIBIT_PRICED = IS_LINE_PRICED;
329 
330     IF(l_exhibits_links>0) then
331      INSERT INTO PON_INTERFACE_ERRORS
332        (
333          INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
334          AUCTION_HEADER_ID, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY,
335          CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
336        )
337 
338          (SELECT g_interface_type, --INTERFACE_TYPE
339          'PON_EXHIBITS_LINK_CHANGED', -- ERROR_MESSAGE_NAME
340          p_request_id, -- REQUEST_ID
341          p_batch_id, --BATCH_ID
342          g_auction_item_type, -- ENTITY_TYPE
343          p_auction_header_id, -- AUCTION_HEADER_ID
344          p_expiration_date, -- EXPIRATION_DATE
345          'EXHIBIT_NUM',--TOKEN1_NAME
346          Lines.EXHIBIT_NUMBER,--TOKEN1_VALUE
347          p_user_id, -- CREATED_BY
348          sysdate, -- CREATION_DATE
349          p_user_id, -- LAST_UPDATED_BY
350          sysdate, -- LAST_UPDATE_DATE
351          p_login_id
352          FROM  (SELECT exhibit_number,associated_to_line,
353                   nvl((select 1 from pon_auction_item_prices_all items_inner
354                   Where items_inner.auction_header_id = AuctionExhibitsEO.AUCTION_HEADER_ID
355                   And items_inner.exhibit_number = AuctionExhibitsEO.EXHIBIT_NUMBER
356                   And Nvl(items_inner.clm_cost_constraint,'Priced') not in ('NSP', 'NC')
357                   AND ROWNUM=1),0) as  IS_EXHIBIT_PRICED,
358                   (select decode(clm_cost_constraint,'NSP',0,'NC',0,1) from pon_auction_item_prices_all items_inner
359                    where items_inner.line_number = AuctionExhibitsEO.ASSOCIATED_TO_LINE
360                    AND items_inner.auction_header_id = AuctionExhibitsEO.AUCTION_HEADER_ID) as IS_LINE_PRICED
361       FROM PON_AUCTION_EXHIBIT_DETAILS AuctionExhibitsEO
362       WHERE AuctionExhibitsEO.AUCTION_HEADER_ID = p_auction_header_id) Lines
363          WHERE Lines.IS_EXHIBIT_PRICED = Lines.IS_LINE_PRICED
364         ); -- LAST_UPDATE_LOGIN
365 
366 
367     END IF;
368    END;
369 
370 
371 
372 
373 END;
374 
375 
376 
377 PROCEDURE val_item_prices_all (
378   p_auction_header_id IN NUMBER,
379   p_request_id IN NUMBER,
380   p_expiration_date IN DATE,
381   p_user_id IN NUMBER,
382   p_login_id IN NUMBER,
383   p_batch_id IN NUMBER,
384   p_precision IN NUMBER,
385   p_fnd_precision IN NUMBER,
386   p_close_bidding_date IN DATE,
387   p_contract_type IN VARCHAR2,
388   p_global_agreement_flag IN VARCHAR2,
389   p_bid_ranking IN VARCHAR2,
390   p_doctype_id IN NUMBER,
391   p_invitees_count IN NUMBER,
392   p_bid_list_type IN VARCHAR2
393 ) IS
394 
395 l_temp NUMBER;
396 l_temp_fnd NUMBER;
397 l_price_tiers_indicator PON_AUCTION_HEADERS_ALL.PRICE_TIERS_INDICATOR%TYPE;
398 l_clm_info_flag PON_AUCTION_ITEM_PRICES_ALL.CLM_INFO_FLAG%TYPE;
399 l_doctype_id PON_AUCTION_HEADERS_ALL.doctype_id%TYPE;
400 
401 BEGIN
402 
403   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
404     FND_LOG.string(log_level => FND_LOG.level_procedure,
405       module  =>  g_module_prefix || 'val_item_prices_all',
406       message  => 'Entering PON_NEGOTIATION_HELPER_PVT.val_item_prices_all'
407                   || ', p_auction_header_id = ' || p_auction_header_id
408                   || ', p_expiration_date = ' || p_expiration_date
409                   || ', p_request_id = ' || p_request_id
410                   || ', p_user_id = ' || p_user_id
411                   || ', p_login_id = ' || p_login_id
412                   || ', p_batch_id = ' || p_batch_id);
413   END IF; --}
414 
415   BEGIN
416 
417       SELECT doctype_id INTO l_doctype_id FROM pon_auction_headers_all WHERE auction_Header_id = p_auction_header_id;
418 
419       SELECT
420         Nvl(pon_auc_doctype_rules.DEFAULT_VALUE,'N')  INTO  g_is_fed
421       FROM PON_AUC_DOCTYPE_RULES pon_auc_doctype_rules
422           , PON_AUC_BIZRULES pon_auc_bizrules
423       WHERE pon_auc_doctype_rules.BIZRULE_ID = pon_auc_bizrules.BIZRULE_ID
424         AND pon_auc_doctype_rules.DOCTYPE_ID = l_doctype_id
425         AND pon_auc_bizrules.NAME = 'FEDERAL_NEGOTIATION';
426       EXCEPTION
427       WHEN No_Data_Found THEN
428       g_is_fed := 'N';
429       WHEN OTHERS THEN
430         g_is_fed := 'N';
431   END;
432 
433   IF (p_precision <> g_precision_any) THEN
434     l_temp := power (10, p_precision);
435   ELSE
436     l_temp := 0;
437   END IF;
438 
439   Select price_tiers_indicator
440   into l_price_tiers_indicator
441   from pon_auction_headers_all
442   where auction_header_id = p_auction_header_id ;
443 
444   l_temp_fnd := power (10, p_fnd_precision);
445   	--Splited 1 -  fix bug 4908493
446   INSERT ALL  --bugfix
447 
448   -- The group type for a line should be 'GROUP_LINE' or 'LOT_LINE' if the parent_line_number is populated
449   -- The group type for a line should be 'GROUP' or 'LOT' if the parent_line_number is not populated
450 
451   WHEN
452   (
453     sel_group_type IS NULL OR
454     (sel_group_type IN ('GROUP_LINE', 'LOT_LINE') AND sel_parent_line_number IS NULL) OR
455     (sel_group_type IN ('GROUP', 'LOT') AND sel_parent_line_number IS NOT NULL)
456   )
457 
458   THEN INTO PON_INTERFACE_ERRORS
459   (
460     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
461     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
462     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
463   )
464   VALUES
465   (
466     g_interface_type, --INTERFACE_TYPE
467     'PON_INVALID_GROUP_TYPE', --ERROR_MESSAGE_NAME
468     p_request_id, -- REQUEST_ID
469     p_batch_id, --BATCH_ID
470     g_auction_item_type, -- ENTITY_TYPE
471     p_auction_header_id, -- AUCTION_HEADER_ID
472     sel_line_number, -- LINE_NUMBER
473     p_expiration_date, -- EXPIRATION_DATE
474     'NUMBER', -- TOKEN1_NAME
475     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
476     p_user_id, -- CREATED_BY
477     sysdate, -- CREATION_DATE
478     p_user_id, -- LAST_UPDATED_BY
479     sysdate, -- LAST_UPDATE_DATE
480     p_login_id
481   )
482 
483   -- The item description should not be an empty string if the doc type rules do not allow
484   WHEN
485   (
486     g_document_type_required_rule('ITEM_DESCRIPTION') = 'Y' AND
487     g_document_type_validity_rule ('ITEM_DESCRIPTION') = 'Y' AND
488     (sel_item_description IS NULL OR trim (sel_item_description) = '')
489   )
490 
491   THEN INTO PON_INTERFACE_ERRORS
492   (
493     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
494     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
495     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
496   )
497   VALUES
498   (
499     g_interface_type, --INTERFACE_TYPE
500     'PON_AUC_ITEMDESC_REQUIRED', -- ERROR_MESSAGE_NAME
501     p_request_id, -- REQUEST_ID
502     p_batch_id, -- BATCH_ID
503     g_auction_item_type, -- ENTITY_TYPE
504     p_auction_header_id, -- AUCTION_HEADER_ID
505     sel_line_number, -- LINE_NUMBER
506     p_expiration_date, -- EXPIRATION_DATE
507     'LINENUM', -- TOKEN1_NAME
508     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
509     p_user_id, -- CREATED_BY
510     sysdate, -- CREATION_DATE
511     p_user_id, -- LAST_UPDATED_BY
512     sysdate,
513     p_login_id
514   )
515   -- THE LINE_TYPE_ID SHOULD NOT BE NULL
516 
517   WHEN
518   (
519     g_document_type_required_rule ('LINE_TYPE') = 'Y' AND
520     g_document_type_validity_rule ('LINE_TYPE') = 'Y' AND
521     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
522     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
523     sel_line_type_id IS NULL
524   )
525 
526   THEN INTO PON_INTERFACE_ERRORS
527   (
528     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
529     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
530     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
531   )
532   VALUES
533   (
534     g_interface_type, --INTERFACE_TYPE
535     'PON_AUC_LINETYPE_REQUIRED', -- ERROR_MESSAGE_NAME
536     p_request_id, -- REQUEST_ID
537     p_batch_id, --BATCH_ID
538     g_auction_item_type, -- ENTITY_TYPE
539     p_auction_header_id, -- AUCTION_HEADER_ID
540     sel_line_number, -- LINE_NUMBER
541     p_expiration_date, -- EXPIRATION_DATE
542     'LINENUM', -- TOKEN1_NAME
543     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
544     p_user_id, -- CREATED_BY
545     sysdate, -- CREATION_DATE
546     p_user_id, -- LAST_UPDATED_BY
547     sysdate, -- LAST_UPDATE_DATE
548     p_login_id
549   )
550 
551   -- The category should not be empty
552 
553   WHEN
554   (
555     (sel_category_name IS NULL OR TRIM (sel_category_name) = '' OR sel_category_id IS NULL) AND
556     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
557     NVL (sel_group_type, g_invalid_string) <> 'GROUP'
558   )
559 
560   THEN INTO PON_INTERFACE_ERRORS
561   (
562     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID, LINE_NUMBER,
563     EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE,
564     LAST_UPDATE_LOGIN
565   )
566   VALUES
567   (
568     g_interface_type, --INTERFACE_TYPE
569     'PON_AUC_CAT_REQUIRED', -- ERROR_MESSAGE_NAME
570     p_request_id, -- REQUEST_ID
571     p_batch_id, --BATCH_ID
572     g_auction_item_type, -- ENTITY_TYPE
573     p_auction_header_id, -- AUCTION_HEADER_ID
574     sel_line_number, -- LINE_NUMBER
575     p_expiration_date, -- EXPIRATION_DATE
576     'LINENUM', -- TOKEN1_NAME
577     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
578     p_user_id, -- CREATED_BY
579     sysdate, -- CREATION_DATE
580     p_user_id, -- LAST_UPDATED_BY
581     sysdate, -- LAST_UPDATE_DATE
582     p_login_id
583   )
584 
585   -- Adding this check for the bug 14358414
586   -- If The category is not null check whether the category is valid or not
587 
588   WHEN
589   (
590     sel_category_name IS NOT NULL
591     AND sel_category_id IS NOT NULL
592     AND NOT EXISTS (SELECT  'X'
593                 FROM MTL_CATEGORIES_KFV MCK,
594                 MTL_CATEGORY_SETS MCS,
595                 MTL_DEFAULT_CATEGORY_SETS MDCS,
596                 MTL_CATEGORIES MC
597                 WHERE MCK.ENABLED_FLAG = 'Y'
598                 AND SYSDATE BETWEEN NVL(MCK.START_DATE_ACTIVE, SYSDATE) AND
599                 NVL(MCK.END_DATE_ACTIVE, SYSDATE) AND
600                 MCS.CATEGORY_SET_ID=MDCS.CATEGORY_SET_ID AND
601                 MDCS.FUNCTIONAL_AREA_ID=2 AND
602                 MCK.STRUCTURE_ID=MCS.STRUCTURE_ID AND
603                 NVL(MCK.DISABLE_DATE, SYSDATE + 1) > SYSDATE AND
604                 (MCS.VALIDATE_FLAG='Y' AND MCK.CATEGORY_ID IN
605                     (SELECT MCSV.CATEGORY_ID
606                       FROM MTL_CATEGORY_SET_VALID_CATS MCSV
607                       WHERE  MCSV.CATEGORY_SET_ID=MCS.CATEGORY_SET_ID)
608                   OR MCS.VALIDATE_FLAG <> 'Y')
609                 AND MCK.CATEGORY_ID = MC.CATEGORY_ID
610               AND MCK.CATEGORY_ID = sel_category_id )
611   )
612 
613   THEN INTO PON_INTERFACE_ERRORS
614   (
615     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID, LINE_NUMBER,
616     EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE,
617     LAST_UPDATE_LOGIN
618   )
619   VALUES
620   (
621     g_interface_type, --INTERFACE_TYPE
622     'PON_AUC_CAT_INACTIVE', -- ERROR_MESSAGE_NAME
623     p_request_id, -- REQUEST_ID
624     p_batch_id, --BATCH_ID
625     g_auction_item_type, -- ENTITY_TYPE
626     p_auction_header_id, -- AUCTION_HEADER_ID
627     sel_line_number, -- LINE_NUMBER
628     p_expiration_date, -- EXPIRATION_DATE
629     'LINENUM', -- TOKEN1_NAME
630     sel_document_disp_line_number, -- TOKEN1_VALUE
631     p_user_id, -- CREATED_BY
632     sysdate, -- CREATION_DATE
633     p_user_id, -- LAST_UPDATED_BY
634     sysdate, -- LAST_UPDATE_DATE
635     p_login_id
636   )
637 
638   --  CLM - Event Based Delivery Project
639   -- If Delivery Event is selected Period must not null
640 
641   WHEN(
642     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
643     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
644     (sel_delivery_event_code IS NOT NULL AND
645      (sel_delivery_period IS NULL OR sel_delivery_period_uom IS NULL OR sel_delivery_period_uom = '') )
646   )
647   THEN INTO PON_INTERFACE_ERRORS
648   (
649     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID, LINE_NUMBER,
650     EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE,
651     LAST_UPDATE_LOGIN
652   )
653   VALUES
654   (
655     g_interface_type, --INTERFACE_TYPE
656     'PON_AUC_PERIOD_REQUIRED', -- ERROR_MESSAGE_NAME
657     p_request_id, -- REQUEST_ID
658     p_batch_id, --BATCH_ID
659     g_auction_item_type, -- ENTITY_TYPE
660     p_auction_header_id, -- AUCTION_HEADER_ID
661     sel_line_number, -- LINE_NUMBER
662     p_expiration_date, -- EXPIRATION_DATE
663     'LINENUM', -- TOKEN1_NAME
664     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
665     p_user_id, -- CREATED_BY
666     sysdate, -- CREATION_DATE
667     p_user_id, -- LAST_UPDATED_BY
668     sysdate, -- LAST_UPDATE_DATE
669     p_login_id
670   )
671 
672   -- Delivery Period should be positive
673 
674   WHEN(
675     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
676     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
677      sel_delivery_event_code IS NOT NULL AND
678      sel_delivery_period IS not NULL AND
679      sel_delivery_period <= 0
680   )
681   THEN INTO PON_INTERFACE_ERRORS
682   (
683     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID, LINE_NUMBER,
684     EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE,
685     LAST_UPDATE_LOGIN
686   )
687   VALUES
688   (
689     g_interface_type, --INTERFACE_TYPE
690     'PON_AUC_INV_PERIOD', -- ERROR_MESSAGE_NAME
691     p_request_id, -- REQUEST_ID
692     p_batch_id, --BATCH_ID
693     g_auction_item_type, -- ENTITY_TYPE
694     p_auction_header_id, -- AUCTION_HEADER_ID
695     sel_line_number, -- LINE_NUMBER
696     p_expiration_date, -- EXPIRATION_DATE
697     'LINENUM', -- TOKEN1_NAME
698     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
699     p_user_id, -- CREATED_BY
700     sysdate, -- CREATION_DATE
701     p_user_id, -- LAST_UPDATED_BY
702     sysdate, -- LAST_UPDATE_DATE
703     p_login_id
704   )
705 
706   -- Period Of Performance Duration should be positive
707 
708   WHEN(
709     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
710     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
711      sel_delivery_event_code IS NOT NULL AND
712      sel_pop_duration IS not NULL AND
713      sel_pop_duration <= 0
714   )
715   THEN INTO PON_INTERFACE_ERRORS
716   (
717     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID, LINE_NUMBER,
718     EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE,
719     LAST_UPDATE_LOGIN
720   )
721   VALUES
722   (
723     g_interface_type, --INTERFACE_TYPE
724     'PON_AUC_INV_POP_DUR', -- ERROR_MESSAGE_NAME
725     p_request_id, -- REQUEST_ID
726     p_batch_id, --BATCH_ID
727     g_auction_item_type, -- ENTITY_TYPE
728     p_auction_header_id, -- AUCTION_HEADER_ID
729     sel_line_number, -- LINE_NUMBER
730     p_expiration_date, -- EXPIRATION_DATE
731     'LINENUM', -- TOKEN1_NAME
732     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
733     p_user_id, -- CREATED_BY
734     sysdate, -- CREATION_DATE
735     p_user_id, -- LAST_UPDATED_BY
736     sysdate, -- LAST_UPDATE_DATE
737     p_login_id
738   )
739   -- Target price should be positive
740 
741   WHEN
742   (
743     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
744     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
745     sel_target_price IS NOT NULL AND
746     sel_target_price <= 0
747   )
748 
749   THEN INTO PON_INTERFACE_ERRORS
750   (
751     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
752     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
753     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
754   )
755 
756   VALUES
757   (
758     g_interface_type, --INTERFACE_TYPE
759     'PON_AUCTS_TARGETPRICE_BE_POSIT', -- ERROR_MESSAGE_NAME
760     p_request_id, -- REQUEST_ID
761     p_batch_id, --BATCH_ID
762     g_auction_item_type, -- ENTITY_TYPE
763     p_auction_header_id, -- AUCTION_HEADER_ID
764     sel_line_number, -- LINE_NUMBER
765     p_expiration_date, -- EXPIRATION_DATE
766     'LINENUM', -- TOKEN1_NAME
767     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
768     p_user_id, -- CREATED_BY
769     sysdate, -- CREATION_DATE
770     p_user_id, -- LAST_UPDATED_BY
771     sysdate, -- LAST_UPDATE_DATE
772     p_login_id
773   )
774 
775   -- BID START PRICE SHOULD BE POSITIVE
776 
777   WHEN
778   (
779     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
780     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
781     sel_bid_start_price IS NOT NULL AND
782     sel_bid_start_price <= 0
783   )
784 
785   THEN INTO PON_INTERFACE_ERRORS
786   (
787     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
788     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
789     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
790   )
791 
792   VALUES
793   (
794     g_interface_type, --INTERFACE_TYPE
795     'PON_AUCTS_STARTPRICE_BE_POSIT', -- ERROR_MESSAGE_NAME
796     p_request_id, -- REQUEST_ID
797     p_batch_id, --BATCH_ID
798     g_auction_item_type, -- ENTITY_TYPE
799     p_auction_header_id, -- AUCTION_HEADER_ID
800     sel_line_number, -- LINE_NUMBER
801     p_expiration_date, -- EXPIRATION_DATE
802     'LINENUM', -- TOKEN1_NAME
803     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
804     p_user_id, -- CREATED_BY
805     sysdate, -- CREATION_DATE
806     p_user_id, -- LAST_UPDATED_BY
807     sysdate, -- LAST_UPDATE_DATE
808     p_login_id
809   )
810 
811   -- CURRENT_PRICE SHOULD BE POSITIVE
812 
813   WHEN
814   (
815     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
816     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
817     sel_current_price IS NOT NULL AND
818     sel_current_price  <= 0
819   )
820 
821   THEN INTO PON_INTERFACE_ERRORS
822   (
823     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
824     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
825     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
826   )
827 
828   VALUES
829   (
830     g_interface_type, --INTERFACE_TYPE
831     'PON_AUCTS_CURRENTPRICE_BE_POS', -- ERROR_MESSAGE_NAME
832     p_request_id, -- REQUEST_ID
833     p_batch_id, --BATCH_ID
834     g_auction_item_type, -- ENTITY_TYPE
835     p_auction_header_id, -- AUCTION_HEADER_ID
836     sel_line_number, -- LINE_NUMBER
837     p_expiration_date, -- EXPIRATION_DATE
838     'LINENUM', -- TOKEN1_NAME
839     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
840     p_user_id, -- CREATED_BY
841     sysdate, -- CREATION_DATE
842     p_user_id, -- LAST_UPDATED_BY
843     sysdate, -- LAST_UPDATE_DATE
844     p_login_id
845   )
846 
847   -- TARGET PRICE SHOULD BE LESS THAN BID START PRICE
848 
849   WHEN
850   (
851     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
852     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
853     sel_target_price >= sel_bid_start_price
854   )
855 
856   THEN INTO PON_INTERFACE_ERRORS
857   (
858     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
859     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
860     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
861   )
862 
863   VALUES
864   (
865     g_interface_type, --INTERFACE_TYPE
866     'PON_AUCTS_TARGET_LOWER_START', -- ERROR_MESSAGE_NAME
867     p_request_id, -- REQUEST_ID
868     p_batch_id, --BATCH_ID
869     g_auction_item_type, -- ENTITY_TYPE
870     p_auction_header_id, -- AUCTION_HEADER_ID
871     sel_line_number, -- LINE_NUMBER
872     p_expiration_date, -- EXPIRATION_DATE
873     'LINENUM', -- TOKEN1_NAME
874     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
875     p_user_id, -- CREATED_BY
876     sysdate, -- CREATION_DATE
877     p_user_id, -- LAST_UPDATED_BY
878     sysdate, -- LAST_UPDATE_DATE
879     p_login_id
880   )
881 
882   -- IF DISPLAY TARGET PRICE IS SET THEN TARGET PRICES SHOULD BE ENTERED
883 
884   WHEN
885   (
886     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
887     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
888     sel_target_price IS NULL AND
889     sel_display_target_price_flag = 'Y'
890   )
891   THEN INTO PON_INTERFACE_ERRORS
892   (
893     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
894     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
895     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
896   )
897   VALUES
898   (
899     g_interface_type, --INTERFACE_TYPE
900     'PON_AUCTS_NUM_TARGETPRICE', -- ERROR_MESSAGE_NAME
901     p_request_id, -- REQUEST_ID
902     p_batch_id, --BATCH_ID
903     g_auction_item_type, -- ENTITY_TYPE
904     p_auction_header_id, -- AUCTION_HEADER_ID
905     sel_line_number, -- LINE_NUMBER
906     p_expiration_date, -- EXPIRATION_DATE
907     'LINENUM', -- TOKEN1_NAME
908     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
909     p_user_id, -- CREATED_BY
910     sysdate, -- CREATION_DATE
911     p_user_id, -- LAST_UPDATED_BY
912     sysdate, -- LAST_UPDATE_DATE
913     p_login_id -- LAST_UPDATE_LOGIN
914   )
915 
916   -- PO MINIMUM RELEASE AMOUNT SHOULD BE POSITIVE
917 
918   WHEN
919   (
920     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
921     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
922     sel_po_min_rel_amount IS NOT NULL AND
923     sel_po_min_rel_amount <> g_null_int AND
924     sel_po_min_rel_amount < 0
925   )
926 
927   THEN INTO PON_INTERFACE_ERRORS
928   (
929     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
930     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
931     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
932   )
933   VALUES
934   (
935     g_interface_type, --INTERFACE_TYPE
936     'PON_AUCTS_MINRELAMT_BE_POSITIV', -- ERROR_MESSAGE_NAME
937     p_request_id, -- REQUEST_ID
938     p_batch_id, --BATCH_ID
939     g_auction_item_type, -- ENTITY_TYPE
940     p_auction_header_id, -- AUCTION_HEADER_ID
941     sel_line_number, -- LINE_NUMBER
942     p_expiration_date, -- EXPIRATION_DATE
943     'LINENUM', -- TOKEN1_NAME
944     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
945     p_user_id, -- CREATED_BY
946     sysdate, -- CREATION_DATE
947     p_user_id, -- LAST_UPDATED_BY
948     sysdate, -- LAST_UPDATE_DATE
949     p_login_id -- LAST_UPDATE_LOGIN
950   )
951 
952   -- WHEN DISPLAY UNIT TARGET PRICES IS SET THEN UNIT TARGET PRICE SHOULD BE ENTERED
953 
954   WHEN
955   (
956     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
957     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
958     sel_unit_target_price IS NULL AND
959     sel_unit_display_target_flag = 'Y'
960   )
961 
962   THEN INTO PON_INTERFACE_ERRORS
963   (
964     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
965     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
966     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
967   )
968 
969   VALUES
970   (
971     g_interface_type, --INTERFACE_TYPE
972     'PON_AUC_UNIT_SHOW_TARGET', -- ERROR_MESSAGE_NAME
973     p_request_id, -- REQUEST_ID
974     p_batch_id, --BATCH_ID
975     g_auction_item_type, -- ENTITY_TYPE
976     p_auction_header_id, -- AUCTION_HEADER_ID
977     sel_line_number, -- LINE_NUMBER
978     p_expiration_date, -- EXPIRATION_DATE
979     'LINENUM', -- TOKEN1_NAME
980     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
981     p_user_id, -- CREATED_BY
982     sysdate, -- CREATION_DATE
983     p_user_id, -- LAST_UPDATED_BY
984     sysdate, -- LAST_UPDATE_DATE
985     p_login_id -- LAST_UPDATE_LOGIN
986   )
987 
988   -- TARGET PRICE  PRECISION SHOULD BE LESS THAN THE AUCTION CURRENCYPRECISION
989 
990   WHEN
991   (
992     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
993     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
994     sel_target_price IS NOT NULL AND
995     ABS (sel_target_price * l_temp - TRUNC (sel_target_price * l_temp)) > 0
996   )
997   THEN INTO PON_INTERFACE_ERRORS
998   (
999     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
1000     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
1001     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
1002   )
1003   VALUES
1004   (
1005     g_interface_type, --INTERFACE_TYPE
1006     'PON_AUCTS_TARGETPRICE_PRECIS', -- ERROR_MESSAGE_NAME
1007     p_request_id, -- REQUEST_ID
1008     p_batch_id, -- BATCH_ID
1009     g_auction_item_type, -- ENTITY_TYPE
1010     p_auction_header_id, -- AUCTION_HEADER_ID
1011     sel_line_number, -- LINE_NUMBER
1012     p_expiration_date, -- EXPIRATION_DATE
1013     'LINENUM', -- TOKEN1_NAME
1014     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
1015     p_user_id, -- CREATED_BY
1016     sysdate, -- CREATION_DATE
1017     p_user_id, -- LAST_UPDATED_BY
1018     sysdate, -- LAST_UPDATE_DATE
1019     p_login_id -- LAST_UPDATE_LOGIN
1020   )
1021 
1022   -- BID START PRICE PRECISION SHOULD BE LESS THAN THE AUCTION CURRENCY PRECISION
1023 
1024   WHEN
1025   (
1026     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
1027     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
1028     sel_bid_start_price IS NOT NULL AND
1029     ABS (sel_bid_start_price * l_temp - TRUNC (sel_bid_start_price * l_temp)) > 0
1030   )
1031   THEN INTO PON_INTERFACE_ERRORS
1032   (
1033     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
1034     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
1035     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
1036   )
1037   VALUES
1038   (
1039     g_interface_type, --INTERFACE_TYPE
1040     'PON_AUCTS_STARTPRICE_PRECISION', -- ERROR_MESSAGE_NAME
1041     p_request_id, -- REQUEST_ID
1042     p_batch_id, -- BATCH_ID
1043     g_auction_item_type, -- ENTITY_TYPE
1044     p_auction_header_id, -- AUCTION_HEADER_ID
1045     sel_line_number, -- LINE_NUMBER
1046     p_expiration_date, -- EXPIRATION_DATE
1047     'LINENUM', -- TOKEN1_NAME
1048     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
1049     p_user_id, -- CREATED_BY
1050     sysdate, -- CREATION_DATE
1051     p_user_id, -- LAST_UPDATED_BY
1052     sysdate, -- LAST_UPDATE_DATE
1053     p_login_id -- LAST_UPDATE_LOGIN
1054   )
1055 
1056   -- CURRENT PRICE PRECISION SHOULD BE LESS THAN THE AUCTION CURRENCY PRECISION
1057 
1058   WHEN
1059   (
1060     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
1061     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
1062     sel_current_price IS NOT NULL AND
1063     ABS (sel_current_price * l_temp - TRUNC (sel_current_price * l_temp)) > 0
1064   )
1065   THEN INTO PON_INTERFACE_ERRORS
1066   (
1067     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
1068     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
1069     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
1070   )
1071   VALUES
1072   (
1073     g_interface_type, --INTERFACE_TYPE
1074     'PON_AUCTS_CURRENTPRICE_PRECIS', -- ERROR_MESSAGE_NAME
1075     p_request_id, -- REQUEST_ID
1076     p_batch_id, -- BATCH_ID
1077     g_auction_item_type, -- ENTITY_TYPE
1078     p_auction_header_id, -- AUCTION_HEADER_ID
1079     sel_line_number, -- LINE_NUMBER
1080     p_expiration_date, -- EXPIRATION_DATE
1081     'LINENUM', -- TOKEN1_NAME
1082     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
1083     p_user_id, -- CREATED_BY
1084     sysdate, -- CREATION_DATE
1085     p_user_id, -- LAST_UPDATED_BY
1086     sysdate, -- LAST_UPDATE_DATE
1087     p_login_id -- LAST_UPDATE_LOGIN
1088   )
1089   /*Fix for CLM Bug : 11826133 : Clm Unit Price should be a positive number.
1090    * No need to validate for NC/NSP lines...
1091   */
1092   WHEN
1093   (
1094     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
1095     sel_is_info_line <> 'Y' AND
1096     sel_clm_unit_price IS NOT NULL AND
1097     (sel_clm_cost_constraint NOT IN ('NC','NSP')) AND
1098     sel_clm_unit_price <= 0
1099   )
1100   THEN INTO PON_INTERFACE_ERRORS
1101   (
1102     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
1103     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
1104     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
1105   )
1106   VALUES
1107   (
1108     g_interface_type, --INTERFACE_TYPE
1109     'PON_AUCTS_CLMUNITPRICE_POSIT', -- ERROR_MESSAGE_NAME
1110     p_request_id, -- REQUEST_ID
1111     p_batch_id, -- BATCH_ID
1112     g_auction_item_type, -- ENTITY_TYPE
1113     p_auction_header_id, -- AUCTION_HEADER_ID
1114     sel_line_number, -- LINE_NUMBER
1115     p_expiration_date, -- EXPIRATION_DATE
1116     'LINENUM', -- TOKEN1_NAME
1117     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
1118     p_user_id, -- CREATED_BY
1119     sysdate, -- CREATION_DATE
1120     p_user_id, -- LAST_UPDATED_BY
1121     sysdate, -- LAST_UPDATE_DATE
1122     p_login_id -- LAST_UPDATE_LOGIN
1123   )
1124 
1125   /* CLM QA Bug : 10136754.
1126    * Validate CLM Unit Price for precision.
1127   */
1128   WHEN
1129   (
1130     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
1131     sel_is_info_line <> 'Y' AND
1132     sel_clm_unit_price IS NOT NULL AND
1133     ABS (sel_clm_unit_price * l_temp - TRUNC (sel_clm_unit_price * l_temp)) > 0
1134   )
1135   THEN INTO PON_INTERFACE_ERRORS
1136   (
1137     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
1138     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
1139     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
1140   )
1141   VALUES
1142   (
1143     g_interface_type, --INTERFACE_TYPE
1144     'PON_AUCTS_CLMUNITPRICE_PRECIS', -- ERROR_MESSAGE_NAME
1145     p_request_id, -- REQUEST_ID
1146     p_batch_id, -- BATCH_ID
1147     g_auction_item_type, -- ENTITY_TYPE
1148     p_auction_header_id, -- AUCTION_HEADER_ID
1149     sel_line_number, -- LINE_NUMBER
1150     p_expiration_date, -- EXPIRATION_DATE
1151     'LINENUM', -- TOKEN1_NAME
1152     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
1153     p_user_id, -- CREATED_BY
1154     sysdate, -- CREATION_DATE
1155     p_user_id, -- LAST_UPDATED_BY
1156     sysdate, -- LAST_UPDATE_DATE
1157     p_login_id -- LAST_UPDATE_LOGIN
1158   )
1159 
1160   -- THE PRECISION OF PO MINIMUM RELEASE AMOUNT SHOULD BE LESS THAN THE FND CURRENCY
1161   -- PRECISION
1162 
1163   WHEN
1164   (
1165     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
1166     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
1167     sel_po_min_rel_amount IS NOT NULL AND
1168     sel_po_min_rel_amount <> g_null_int AND
1169     ABS (sel_po_min_rel_amount * l_temp_fnd - TRUNC (sel_po_min_rel_amount * l_temp_fnd)) > 0
1170   )
1171 
1172   THEN INTO PON_INTERFACE_ERRORS
1173   (
1174     INTERFACE_TYPE,
1175     ERROR_MESSAGE_NAME,
1176     REQUEST_ID,
1177     BATCH_ID,
1178     ENTITY_TYPE,
1179     AUCTION_HEADER_ID,
1180     LINE_NUMBER,
1181     EXPIRATION_DATE,
1182     CREATED_BY,
1183     CREATION_DATE,
1184     LAST_UPDATED_BY,
1185     LAST_UPDATE_DATE,
1186     LAST_UPDATE_LOGIN
1187   )
1188 
1189   VALUES
1190   (
1191      g_interface_type, --INTERFACE_TYPE
1192      'PON_AUCTS_TOO_MANY_DIGITS_A', -- ERROR_MESSAGE_NAME
1193      p_request_id, -- REQUEST_ID
1194      p_batch_id, -- BATCH_ID
1195      g_auction_item_type, -- ENTITY_TYPE
1196      p_auction_header_id, -- AUCTION_HEADER_ID
1197      sel_line_number, -- LINE_NUMBER
1198      p_expiration_date, -- EXPIRATION_DATE
1199      p_user_id, -- CREATED_BY
1200      sysdate, -- CREATION_DATE
1201      p_user_id, -- LAST_UPDATED_BY
1202      sysdate, -- LAST_UPDATE_DATE
1203      p_login_id -- LAST_UPDATE_LOGIN
1204   )
1205 
1206   --  need_by date should be after start date
1207 
1208   WHEN
1209   (
1210     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
1211     -- no need to check for info flag for commercial
1212     -- sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
1213     -- for the bug 13580432
1214     g_is_fed <> 'Y' AND
1215     sel_need_by_date < sel_need_by_start_date
1216   )
1217 
1218   THEN INTO PON_INTERFACE_ERRORS
1219   (
1220     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
1221     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
1222     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
1223   )
1224 
1225   VALUES
1226    (
1227     g_interface_type, --INTERFACE_TYPE
1228     'PON_AUCTS_NEEDBY_BEFORE_FROM',  -- ERROR_MESSAGE_NAME
1229     p_request_id, -- REQUEST_ID
1230     p_batch_id, --BATCH_ID
1231     g_auction_item_type, -- ENTITY_TYPE
1232     p_auction_header_id, -- AUCTION_HEADER_ID
1233     sel_line_number, -- LINE_NUMBER
1234     p_expiration_date, -- EXPIRATION_DATE
1235     'LINENUM', -- TOKEN1_NAME
1236     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
1237     p_user_id, -- CREATED_BY
1238     sysdate, -- CREATION_DATE
1239     p_user_id, -- LAST_UPDATED_BY
1240     sysdate, -- LAST_UPDATE_DATE
1241     p_login_id -- LAST_UPDATE_LOGIN
1242    )
1243 
1244   -- NEED BY DATE SHOULD BE AFTER CLOSE BIDDING DATE
1245   -- IF NO CLOSE BIDDING DATE THEN AFTER SYSDATE
1246 
1247   WHEN
1248   (
1249     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
1250     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
1251     sel_need_by_date IS NOT NULL AND
1252     sel_need_by_date < nvl (p_close_bidding_date, SYSDATE)
1253   )
1254 
1255   THEN INTO PON_INTERFACE_ERRORS
1256   (
1257     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
1258     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
1259     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
1260   )
1261 
1262   VALUES
1263   (
1264     g_interface_type, --INTERFACE_TYPE
1265     NVL2 (p_close_bidding_date, Decode(g_is_fed,'Y','PON_AUC_POP_END_BEFORE_CLOSE','PON_AUC_NEEDBY_TO_BEFORE_CLOSE'),
1266     Decode(g_is_fed,'Y','PON_AUC_POP_END_BEFORE_TODAY','PON_AUC_NEEDBY_TO_BEFORE_TODAY') ), -- ERROR_MESSAGE_NAME
1267     p_request_id, -- REQUEST_ID
1268     p_batch_id, --BATCH_ID
1269     g_auction_item_type, -- ENTITY_TYPE
1270     p_auction_header_id, -- AUCTION_HEADER_ID
1271     sel_line_number, -- LINE_NUMBER
1272     p_expiration_date, -- EXPIRATION_DATE
1273     'LINENUM', -- TOKEN1_NAME
1274     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
1275     p_user_id, -- CREATED_BY
1276     sysdate, -- CREATION_DATE
1277     p_user_id, -- LAST_UPDATED_BY
1278     sysdate, -- LAST_UPDATE_DATE
1279     p_login_id -- LAST_UPDATE_LOGIN
1280   )
1281    -- clm changes
1282   -- option from date should not be before sysdate
1283   WHEN
1284   (
1285     sel_clm_base_line_num IS NOT NULL  AND
1286     Trunc(Nvl(sel_clm_option_from_date,SYSDATE - 1)) < trunc (SYSDATE)
1287   )
1288   THEN INTO PON_INTERFACE_ERRORS
1289   (
1290     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
1291     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
1292     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
1293   )
1294 
1295   VALUES
1296   (
1297     g_interface_type, --INTERFACE_TYPE
1298     'PON_CLM_OPT_FROMDATE_VAL', -- ERROR_MESSAGE_NAME
1299     p_request_id, -- REQUEST_ID
1300     p_batch_id, --BATCH_ID
1301     g_auction_item_type, -- ENTITY_TYPE
1302     p_auction_header_id, -- AUCTION_HEADER_ID
1303     sel_line_number, -- LINE_NUMBER
1304     p_expiration_date, -- EXPIRATION_DATE
1305     'LINENUM', -- TOKEN1_NAME
1306     sel_clm_line_num_display, -- TOKEN1_VALUE
1307     p_user_id, -- CREATED_BY
1308     sysdate, -- CREATION_DATE
1309     p_user_id, -- LAST_UPDATED_BY
1310     sysdate, -- LAST_UPDATE_DATE
1311     p_login_id -- LAST_UPDATE_LOGIN
1312   )
1313 
1314 
1315   -- Option from date should be earlier than option to date
1316   WHEN
1317   (
1318     sel_clm_base_line_num IS NOT NULL  AND
1319     sel_clm_option_to_date < nvl (sel_clm_option_from_date, SYSDATE)
1320   )
1321   THEN INTO PON_INTERFACE_ERRORS
1322   (
1323     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
1324     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
1325     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
1326   )
1327 
1328   VALUES
1329   (
1330     g_interface_type, --INTERFACE_TYPE
1331     'PON_CLM_OPT_TODATE_VAL', -- ERROR_MESSAGE_NAME
1332     p_request_id, -- REQUEST_ID
1333     p_batch_id, --BATCH_ID
1334     g_auction_item_type, -- ENTITY_TYPE
1335     p_auction_header_id, -- AUCTION_HEADER_ID
1336     sel_line_number, -- LINE_NUMBER
1337     p_expiration_date, -- EXPIRATION_DATE
1338     'LINENUM', -- TOKEN1_NAME
1339     sel_clm_line_num_display, -- TOKEN1_VALUE
1340     p_user_id, -- CREATED_BY
1341     sysdate, -- CREATION_DATE
1342     p_user_id, -- LAST_UPDATED_BY
1343     sysdate, -- LAST_UPDATE_DATE
1344     p_login_id -- LAST_UPDATE_LOGIN
1345   )
1346 
1347    SELECT
1348     LINE_NUMBER sel_line_number,
1349     DOCUMENT_DISP_LINE_NUMBER sel_document_disp_line_number,
1350     GROUP_TYPE sel_group_type,
1351     PARENT_LINE_NUMBER sel_parent_line_number,
1352     ITEM_DESCRIPTION sel_item_description,
1353     LINE_TYPE_ID sel_line_type_id,
1354     CATEGORY_NAME sel_category_name,
1355     CATEGORY_ID sel_category_id,
1356     TARGET_PRICE sel_target_price,
1357     PO_MIN_REL_AMOUNT sel_po_min_rel_amount,
1358     CURRENT_PRICE sel_current_price,
1359     BID_START_PRICE sel_bid_start_price,
1360     UNIT_DISPLAY_TARGET_FLAG sel_unit_display_target_flag,
1361     UNIT_TARGET_PRICE sel_unit_target_price,
1362     DISPLAY_TARGET_PRICE_FLAG sel_display_target_price_flag,
1363     NEED_BY_START_DATE sel_need_by_start_date,
1364     NEED_BY_DATE sel_need_by_date,
1365     -- Clin Slin Changes
1366     Nvl(CLM_INFO_FLAG,'N') sel_is_info_line,
1367     CLM_BASE_LINE_NUM sel_clm_base_line_num,
1368     CLM_OPTION_FROM_DATE sel_clm_option_from_date,
1369     CLM_OPTION_TO_DATE sel_clm_option_to_date,
1370     line_num_display sel_clm_line_num_display,
1371     clm_unit_price sel_clm_unit_price, -- Added for bug : 10136754
1372     nvl(clm_cost_constraint,'X') sel_clm_cost_constraint,  -- Added for bug 11826133
1373     --  CLM - Event Based Delivery Project
1374     CLM_DELIVERY_EVENT_CODE sel_delivery_event_code,
1375     CLM_DELIVERY_PERIOD sel_delivery_period,
1376     CLM_DELIVERY_PERIOD_UOM sel_delivery_period_uom,
1377     CLM_POP_DURATION  sel_pop_duration
1378   FROM
1379     PON_AUCTION_ITEM_PRICES_ALL
1380   WHERE
1381     AUCTION_HEADER_ID = p_auction_header_id;
1382 
1383     /*
1384   Added for CLM
1385   Option To Date validation
1386   */
1387   INSERT ALL
1388   WHEN(sel_clm_base_line_num IS NOT NULL  AND
1389        sel_clm_option_to_date < nvl (clm_sol_close_date, SYSDATE)
1390        )
1391   THEN INTO PON_INTERFACE_ERRORS
1392   (
1393     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
1394     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
1395     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
1396   )
1397   VALUES
1398   (
1399     g_interface_type, --INTERFACE_TYPE
1400     'PON_CLM_OPT_TODATE_VAL2', -- ERROR_MESSAGE_NAME
1401     p_request_id, -- REQUEST_ID
1402     p_batch_id, --BATCH_ID
1403     g_auction_item_type, -- ENTITY_TYPE
1404     p_auction_header_id, -- AUCTION_HEADER_ID
1405     sel_line_number, -- LINE_NUMBER
1406     p_expiration_date, -- EXPIRATION_DATE
1407     'LINENUM', -- TOKEN1_NAME
1408     sel_clm_line_num_display, -- TOKEN1_VALUE
1409     p_user_id, -- CREATED_BY
1410     sysdate, -- CREATION_DATE
1411     p_user_id, -- LAST_UPDATED_BY
1412     sysdate, -- LAST_UPDATE_DATE
1413     p_login_id -- LAST_UPDATE_LOGIN
1414   )
1415   SELECT
1416   paip.LINE_NUMBER sel_line_number,
1417   paip.line_num_display sel_clm_line_num_display,
1418   pah.close_bidding_date clm_sol_close_date,
1419   CLM_OPTION_TO_DATE sel_clm_option_to_date,
1420   CLM_BASE_LINE_NUM sel_clm_base_line_num
1421   FROM pon_auction_item_prices_all paip,
1422        pon_auction_headers_all pah
1423   WHERE paip.auction_header_id = p_auction_header_id
1424   AND paip.auction_header_id = pah.auction_header_id;
1425 
1426   /* Bug 9787380 - Start */
1427   /* Perform validations related to Period of Performance Start Date,
1428      Period of Performance End Date, Need by Date only in case of CLM. */
1429 
1430   IF g_is_fed = 'Y' THEN
1431 	  INSERT ALL
1432     WHEN
1433     (
1434       NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
1435       sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
1436       sel_need_by_start_date IS NOT NULL AND
1437       sel_need_by_date IS NOT NULL AND
1438       clm_need_by_date IS NOT NULL AND
1439       p_contract_type = 'STANDARD'
1440     )
1441 
1442     THEN INTO PON_INTERFACE_ERRORS
1443     (
1444       INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
1445       AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
1446       CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
1447     )
1448 
1449     VALUES
1450     (
1451       g_interface_type, --INTERFACE_TYPE
1452       'PON_NEED_BY_DATE_POP_DATE_VAL', -- ERROR_MESSAGE_NAME
1453       p_request_id, -- REQUEST_ID
1454       p_batch_id, --BATCH_ID
1455       g_auction_item_type, -- ENTITY_TYPE
1456       p_auction_header_id, -- AUCTION_HEADER_ID
1457       sel_line_number, -- LINE_NUMBER
1458       p_expiration_date, -- EXPIRATION_DATE
1459       'LINENUM', -- TOKEN1_NAME
1460       Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
1461       p_user_id, -- CREATED_BY
1462       sysdate, -- CREATION_DATE
1463       p_user_id, -- LAST_UPDATED_BY
1464       sysdate, -- LAST_UPDATE_DATE
1465       p_login_id -- LAST_UPDATE_LOGIN
1466     )
1467 
1468     WHEN
1469     (
1470       NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
1471       sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
1472       sel_need_by_start_date IS NOT NULL AND
1473       sel_need_by_date IS NULL AND
1474       p_contract_type = 'STANDARD'
1475     )
1476 
1477     THEN INTO PON_INTERFACE_ERRORS
1478     (
1479       INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
1480       AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
1481       CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
1482     )
1483 
1484     VALUES
1485     (
1486       g_interface_type, --INTERFACE_TYPE
1487       'PON_POP_END_DATE_REQUIRED_VAL', -- ERROR_MESSAGE_NAME
1488       p_request_id, -- REQUEST_ID
1489       p_batch_id, --BATCH_ID
1490       g_auction_item_type, -- ENTITY_TYPE
1491       p_auction_header_id, -- AUCTION_HEADER_ID
1492       sel_line_number, -- LINE_NUMBER
1493       p_expiration_date, -- EXPIRATION_DATE
1494       'LINENUM', -- TOKEN1_NAME
1495       Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
1496       p_user_id, -- CREATED_BY
1497       sysdate, -- CREATION_DATE
1498       p_user_id, -- LAST_UPDATED_BY
1499       sysdate, -- LAST_UPDATE_DATE
1500       p_login_id -- LAST_UPDATE_LOGIN
1501     )
1502 
1503     WHEN
1504     (
1505       NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
1506       sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
1507       sel_need_by_start_date IS NULL AND
1508       sel_need_by_date IS NOT NULL AND
1509       p_contract_type = 'STANDARD'
1510     )
1511 
1512     THEN INTO PON_INTERFACE_ERRORS
1513     (
1514       INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
1515       AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
1516       CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
1517     )
1518 
1519     VALUES
1520     (
1521       g_interface_type, --INTERFACE_TYPE
1522       'PON_POP_START_DATE_REQD_VAL', -- ERROR_MESSAGE_NAME
1523       p_request_id, -- REQUEST_ID
1524       p_batch_id, --BATCH_ID
1525       g_auction_item_type, -- ENTITY_TYPE
1526       p_auction_header_id, -- AUCTION_HEADER_ID
1527       sel_line_number, -- LINE_NUMBER
1528       p_expiration_date, -- EXPIRATION_DATE
1529       'LINENUM', -- TOKEN1_NAME
1530       Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
1531       p_user_id, -- CREATED_BY
1532       sysdate, -- CREATION_DATE
1533       p_user_id, -- LAST_UPDATED_BY
1534       sysdate, -- LAST_UPDATE_DATE
1535       p_login_id -- LAST_UPDATE_LOGIN
1536     )
1537 
1538     -- for the bug 13580432
1539     -- for planned items in Solicatations mandatory to enter need by date
1540      WHEN
1541     (
1542       -- no need to check for Group in federal it will always be line
1543       -- NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
1544       sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
1545       clm_need_by_date IS NULL AND
1546       p_contract_type = 'STANDARD' AND
1547       EXISTS (
1548         SELECT
1549         'X'
1550         FROM
1551         MTL_SYSTEM_ITEMS_KFV MSI,
1552         FINANCIALS_SYSTEM_PARAMS_ALL FSP
1553         WHERE
1554         NVL(FSP.ORG_ID, -9999) = NVL(sel_org_id,-9999) AND
1555         MSI.ORGANIZATION_ID = FSP.INVENTORY_ORGANIZATION_ID AND
1556         MSI.INVENTORY_ITEM_ID =  sel_item_id AND
1557         (MSI.INVENTORY_PLANNING_CODE IN (1, 2) OR MSI.MRP_PLANNING_CODE IN
1558         (3, 4, 7, 8, 9))
1559       )
1560     )
1561 
1562     THEN INTO PON_INTERFACE_ERRORS
1563     (
1564       INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
1565       AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
1566       CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
1567     )
1568     VALUES
1569     (
1570       g_interface_type, --INTERFACE_TYPE
1571       'PON_NEED_BY_DATE_REQUIRED', -- ERROR_MESSAGE_NAME
1572       p_request_id, -- REQUEST_ID
1573       p_batch_id, --BATCH_ID
1574       g_auction_item_type, -- ENTITY_TYPE
1575       p_auction_header_id, -- AUCTION_HEADER_ID
1576       sel_line_number, -- LINE_NUMBER
1577       p_expiration_date, -- EXPIRATION_DATE
1578       'LINENUM', -- TOKEN1_NAME
1579       Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
1580       p_user_id, -- CREATED_BY
1581       sysdate, -- CREATION_DATE
1582       p_user_id, -- LAST_UPDATED_BY
1583       sysdate, -- LAST_UPDATE_DATE
1584       p_login_id -- LAST_UPDATE_LOGIN
1585     )
1586 
1587     WHEN
1588     (
1589       -- no need to check for Group in federal it will always be line
1590       -- NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
1591       sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
1592       sel_need_by_date <= sel_need_by_start_date
1593     )
1594 
1595     THEN INTO PON_INTERFACE_ERRORS
1596     (
1597       INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
1598       AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
1599       CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
1600     )
1601 
1602     VALUES
1603     (
1604       g_interface_type, --INTERFACE_TYPE
1605       'PON_AUC_POP_BEFORE_FROM',  -- ERROR_MESSAGE_NAME
1606       p_request_id, -- REQUEST_ID
1607       p_batch_id, --BATCH_ID
1608       g_auction_item_type, -- ENTITY_TYPE
1609       p_auction_header_id, -- AUCTION_HEADER_ID
1610       sel_line_number, -- LINE_NUMBER
1611       p_expiration_date, -- EXPIRATION_DATE
1612       'LINENUM', -- TOKEN1_NAME
1613       Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
1614       p_user_id, -- CREATED_BY
1615       sysdate, -- CREATION_DATE
1616       p_user_id, -- LAST_UPDATED_BY
1617       sysdate, -- LAST_UPDATE_DATE
1618       p_login_id -- LAST_UPDATE_LOGIN
1619    )
1620 
1621   SELECT
1622     LINE_NUMBER sel_line_number,
1623     DOCUMENT_DISP_LINE_NUMBER sel_document_disp_line_number,
1624     GROUP_TYPE sel_group_type,
1625     NEED_BY_START_DATE sel_need_by_start_date,
1626     NEED_BY_DATE sel_need_by_date,
1627     CLM_NEED_BY_DATE clm_need_by_date,
1628     ITEM_ID sel_item_id,
1629     ORG_ID sel_org_id,
1630     Nvl(CLM_INFO_FLAG,'N') sel_is_info_line,
1631     line_num_display sel_clm_line_num_display
1632   FROM
1633     PON_AUCTION_ITEM_PRICES_ALL
1634   WHERE
1635     AUCTION_HEADER_ID = p_auction_header_id;
1636 
1637   END IF;
1638 
1639   /* Bug 9787380 - End */
1640 
1641 	--Split2 - fix bug 4908493
1642 	INSERT ALL --bugfix
1643 
1644 
1645   -- NEED BY START DATE SHOULD BE AFTER CLOSE BIDDING DATE
1646   -- IF NO CLOSE BIDDING DATE THEN AFTER SYSDATE
1647 
1648   WHEN
1649   (
1650     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
1651     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
1652     sel_need_by_start_date IS NOT NULL AND
1653     sel_need_by_start_date < nvl (p_close_bidding_date, SYSDATE) AND
1654     p_contract_type = 'STANDARD'
1655   )
1656 
1657   THEN INTO PON_INTERFACE_ERRORS
1658   (
1659     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
1660     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
1661     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
1662   )
1663 
1664   VALUES
1665   (
1666     g_interface_type, --INTERFACE_TYPE
1667     NVL2 (p_close_bidding_date, Decode(g_is_fed,'Y','PON_AUC_POP_START_BEF_CLOSE','PON_AUC_NEEDBY_FROM_BEF_CLOSE'),
1668     Decode(g_is_fed,'Y','PON_AUC_POP_START_BEF_TODAY','PON_AUC_NEEDBY_FROM_BEF_TODAY') ), -- ERROR_MESSAGE_NAME
1669     p_request_id, -- REQUEST_ID
1670     p_batch_id, --BATCH_ID
1671     g_auction_item_type, -- ENTITY_TYPE
1672     p_auction_header_id, -- AUCTION_HEADER_ID
1673     sel_line_number, -- LINE_NUMBER
1674     p_expiration_date, -- EXPIRATION_DATE
1675     'LINENUM', -- TOKEN1_NAME
1676     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
1677     p_user_id, -- CREATED_BY
1678     sysdate, -- CREATION_DATE
1679     p_user_id, -- LAST_UPDATED_BY
1680     sysdate, -- LAST_UPDATE_DATE
1681     p_login_id -- LAST_UPDATE_LOGIN
1682   )
1683 
1684   -- NEED BY DATE SHOULD BE AFTER CLOSE BIDDING DATE
1685   -- IF NO CLOSE BIDDING DATE THEN AFTER SYSDATE
1686 
1687   WHEN
1688   (
1689     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
1690     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
1691     clm_need_by_date IS NOT NULL AND
1692     clm_need_by_date < nvl (p_close_bidding_date, SYSDATE) AND
1693     p_contract_type = 'STANDARD'
1694   )
1695 
1696   THEN INTO PON_INTERFACE_ERRORS
1697   (
1698     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
1699     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
1700     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
1701   )
1702 
1703   VALUES
1704   (
1705     g_interface_type, --INTERFACE_TYPE
1706     NVL2 (p_close_bidding_date, 'PON_AUC_NEEDBY_DATE_BEF_CLOSE', 'PON_AUC_NEEDBY_DATE_BEF_TODAY'), -- ERROR_MESSAGE_NAME
1707     p_request_id, -- REQUEST_ID
1708     p_batch_id, --BATCH_ID
1709     g_auction_item_type, -- ENTITY_TYPE
1710     p_auction_header_id, -- AUCTION_HEADER_ID
1711     sel_line_number, -- LINE_NUMBER
1712     p_expiration_date, -- EXPIRATION_DATE
1713     'LINENUM', -- TOKEN1_NAME
1714     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
1715     p_user_id, -- CREATED_BY
1716     sysdate, -- CREATION_DATE
1717     p_user_id, -- LAST_UPDATED_BY
1718     sysdate, -- LAST_UPDATE_DATE
1719     p_login_id -- LAST_UPDATE_LOGIN
1720   )
1721 
1722   -- for lines with "planned" inventory items in a SPO negotiation
1723   -- either need-by from or need-by to date must be entered
1724 
1725   WHEN
1726   (
1727     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
1728     -- no need to check for info flag for commercial
1729     -- sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
1730     sel_need_by_date IS NULL AND
1731     sel_need_by_start_date IS NULL AND
1732     p_contract_type = 'STANDARD' AND
1733     -- for the bug 13580432
1734     g_is_fed <> 'Y' AND
1735     EXISTS (
1736       SELECT
1737       'X'
1738       FROM
1739       MTL_SYSTEM_ITEMS_KFV MSI,
1740       FINANCIALS_SYSTEM_PARAMS_ALL FSP
1741       WHERE
1742       NVL(FSP.ORG_ID, -9999) = NVL(sel_org_id,-9999) AND
1743       MSI.ORGANIZATION_ID = FSP.INVENTORY_ORGANIZATION_ID AND
1744       MSI.INVENTORY_ITEM_ID =  sel_item_id AND
1745       (MSI.INVENTORY_PLANNING_CODE IN (1, 2) OR MSI.MRP_PLANNING_CODE IN
1746        (3, 4, 7, 8, 9))
1747      )
1748   )
1749 
1750   THEN INTO PON_INTERFACE_ERRORS
1751   (
1752     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
1753     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
1754     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
1755   )
1756   VALUES
1757   (
1758     g_interface_type, --INTERFACE_TYPE
1759     'PON_NEED_BY_DATE_REQUIRED', -- ERROR_MESSAGE_NAME
1760     p_request_id, -- REQUEST_ID
1761     p_batch_id, --BATCH_ID
1762     g_auction_item_type, -- ENTITY_TYPE
1763     p_auction_header_id, -- AUCTION_HEADER_ID
1764     sel_line_number, -- LINE_NUMBER
1765     p_expiration_date, -- EXPIRATION_DATE
1766     'LINENUM', -- TOKEN1_NAME
1767     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
1768     p_user_id, -- CREATED_BY
1769     sysdate, -- CREATION_DATE
1770     p_user_id, -- LAST_UPDATED_BY
1771     sysdate, -- LAST_UPDATE_DATE
1772     p_login_id -- LAST_UPDATE_LOGIN
1773   )
1774 
1775   -- if this is a global agreement then cummulative price breaks are not
1776   -- allowed
1777 
1778   WHEN
1779   (
1780     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
1781     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
1782     sel_price_break_type = 'CUMULATIVE' AND
1783     p_global_agreement_flag = 'Y' AND
1784     l_price_tiers_indicator = 'PRICE_BREAKS' AND
1785     sel_clm_cost_constraint NOT IN ('NC','NSP')  -- CLM QA Bug : 9835426
1786   )
1787 
1788   THEN INTO PON_INTERFACE_ERRORS
1789   (
1790     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
1791     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
1792     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
1793   )
1794   VALUES
1795   (
1796     g_interface_type, --INTERFACE_TYPE
1797     'PON_AUC_BAD_PBTYPE_GLOBAL', -- ERROR_MESSAGE_NAME
1798     p_request_id, -- REQUEST_ID
1799     p_batch_id, --BATCH_ID
1800     g_auction_item_type, -- ENTITY_TYPE
1801     p_auction_header_id, -- AUCTION_HEADER_ID
1802     sel_line_number, -- LINE_NUMBER
1803     p_expiration_date, -- EXPIRATION_DATE
1804     'LINENUMBER', -- TOKEN1_NAME
1805     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
1806     p_user_id, -- CREATED_BY
1807     sysdate, -- CREATION_DATE
1808     p_user_id, -- LAST_UPDATED_BY
1809     sysdate, -- LAST_UPDATE_DATE
1810     p_login_id -- LAST_UPDATE_LOGIN
1811   )
1812 
1813   -- If the user has selected to enter price breaks
1814   -- then there should be atleast one price break
1815   -- If the price breaks are non negotiable (which also means the price
1816   -- break type is 'REQUIRED') and the size is zero, the user must
1817   -- enter a price break.
1818   WHEN
1819   (
1820     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
1821     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
1822     sel_price_break_neg_flag = 'N' AND
1823     NVL (sel_price_break_type, g_invalid_string) <> g_none AND
1824     sel_clm_cost_constraint NOT IN ('NC','NSP') AND -- CLM QA Bug : 9835426
1825     NOT EXISTS (
1826       SELECT 1
1827       FROM
1828         PON_AUCTION_SHIPMENTS_ALL PASA
1829       WHERE
1830         PASA.AUCTION_HEADER_ID = p_auction_header_id AND
1831         PASA.LINE_NUMBER = sel_line_number
1832       )
1833   )
1834 
1835   THEN INTO PON_INTERFACE_ERRORS
1836   (
1837     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
1838     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, CREATED_BY, CREATION_DATE,
1839     LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
1840   )
1841 
1842   VALUES
1843   (
1844     g_interface_type, --INTERFACE_TYPE
1845     'PON_PRICEBREAK_MUST_BE_ENTERED', -- ERROR_MESSAGE_NAME
1846     p_request_id, -- REQUEST_ID
1847     p_batch_id, --BATCH_ID
1848     g_auction_item_type, -- ENTITY_TYPE
1849     p_auction_header_id, -- AUCTION_HEADER_ID
1850     sel_line_number, -- LINE_NUMBER
1851     p_expiration_date, -- EXPIRATION_DATE
1852     p_user_id, -- CREATED_BY
1853     sysdate, -- CREATION_DATE
1854     p_user_id, -- LAST_UPDATED_BY
1855     sysdate, -- LAST_UPDATE_DATE
1856     p_login_id -- LAST_UPDATE_LOGIN
1857   )
1858 
1859   -- If the user has selected to enter price differentials then
1860   -- there should be atleast one price differential
1861 
1862   WHEN
1863   (
1864     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
1865     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
1866     sel_differential_response_type IS NOT NULL AND
1867     NOT EXISTS (
1868       SELECT 1
1869       FROM
1870       PON_PRICE_DIFFERENTIALS PPD
1871       WHERE
1872       PPD.AUCTION_HEADER_ID = p_auction_header_id AND
1873       PPD.LINE_NUMBER = sel_line_number AND
1874       PPD.SHIPMENT_NUMBER = -1
1875     )
1876   )
1877 
1878   THEN INTO PON_INTERFACE_ERRORS
1879   (
1880     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
1881     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE,TOKEN1_NAME, TOKEN1_VALUE,
1882     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
1883   )
1884   VALUES
1885   (
1886     g_interface_type, --INTERFACE_TYPE
1887     'PON_PRICEDIFF_MUST_BE_ENTERED', -- ERROR_MESSAGE_NAME
1888     p_request_id, -- REQUEST_ID
1889     p_batch_id, -- BATCH_ID
1890     g_auction_item_type, -- ENTITY_TYPE
1891     p_auction_header_id, -- AUCTION_HEADER_ID
1892     sel_line_number, -- LINE_NUMBER
1893     p_expiration_date, -- EXPIRATION_DATE
1894     'LINE_NUMBER', -- TOKEN1_NAME
1895     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
1896     p_user_id, -- CREATED_BY
1897     sysdate, -- CREATION_DATE
1898     p_user_id, -- LAST_UPDATED_BY
1899     sysdate, -- LAST_UPDATE_DATE
1900     p_login_id-- LAST_UPDATE_LOGIN
1901   )
1902 
1903   -- if there are no price differentials and price differentails type
1904   -- is not NONE just give an error
1905   WHEN
1906   (
1907     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
1908     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
1909     sel_differential_response_type IS NULL AND
1910     EXISTS (
1911       SELECT 1
1912       FROM
1913       PON_PRICE_DIFFERENTIALS PPD
1914       WHERE
1915       PPD.AUCTION_HEADER_ID = p_auction_header_id AND
1916       PPD.LINE_NUMBER = sel_line_number AND
1917       PPD.SHIPMENT_NUMBER = -1
1918     )
1919   )
1920 
1921   THEN INTO PON_INTERFACE_ERRORS
1922   (
1923     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
1924     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE,TOKEN1_NAME, TOKEN1_VALUE,
1925     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
1926   )
1927   VALUES
1928    (
1929     g_interface_type, --INTERFACE_TYPE
1930     'PON_SET_DIFF_RESPONSE_TYPE', -- ERROR_MESSAGE_NAME
1931     p_request_id, -- REQUEST_ID
1932     p_batch_id, -- BATCH_ID
1933     g_auction_item_type, -- ENTITY_TYPE
1934     p_auction_header_id, -- AUCTION_HEADER_ID
1935     sel_line_number, -- LINE_NUMBER
1936     p_expiration_date, -- EXPIRATION_DATE
1937     'LINE_NUMBER', -- TOKEN1_NAME
1938     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
1939     p_user_id, -- CREATED_BY
1940     sysdate, -- CREATION_DATE
1941     p_user_id, -- LAST_UPDATED_BY
1942     sysdate, -- LAST_UPDATE_DATE
1943     p_login_id-- LAST_UPDATE_LOGIN
1944    )
1945 
1946   -- Every LOT or GROUP should have atleast one line inside it
1947 
1948   WHEN
1949   (
1950     sel_group_type IN ('LOT', 'GROUP') AND
1951     NOT EXISTS (
1952       SELECT LINE_NUMBER
1953       FROM PON_AUCTION_ITEM_PRICES_ALL
1954       WHERE
1955       AUCTION_HEADER_ID = p_auction_header_id AND
1956       PARENT_LINE_NUMBER = sel_line_number
1957     )
1958   )
1959 
1960   THEN INTO PON_INTERFACE_ERRORS
1961   (
1962     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
1963     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
1964     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
1965   )
1966   VALUES
1967   (
1968     g_interface_type, --INTERFACE_TYPE
1969     decode (sel_group_type, 'LOT', 'PON_LOT_NEEDS_SUBLINES', 'PON_GROUP_NEEDS_SUBLINES'), -- ERROR_MESSAGE_NAME
1970     p_request_id, -- REQUEST_ID
1971     p_batch_id, --BATCH_ID
1972     g_auction_item_type, -- ENTITY_TYPE
1973     p_auction_header_id, -- AUCTION_HEADER_ID
1974     sel_line_number, -- LINE_NUMBER
1975     p_expiration_date, -- EXPIRATION_DATE
1976     'NUMBER', -- TOKEN1_NAME
1977     sel_document_disp_line_number, -- TOKEN1_VALUE
1978     p_user_id, -- CREATED_BY
1979     sysdate, -- CREATION_DATE
1980     p_user_id, -- LAST_UPDATED_BY
1981     sysdate, -- LAST_UPDATE_DATE
1982     p_login_id -- LAST_UPDATE_LOGIN
1983   )
1984 
1985   -- Unit Price should be greater than zero
1986 
1987   WHEN
1988   (
1989     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
1990     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
1991     sel_unit_target_price IS NOT NULL AND
1992     sel_unit_target_price < 0
1993   )
1994 
1995   THEN INTO PON_INTERFACE_ERRORS
1996   (
1997     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
1998     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
1999     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
2000   )
2001   VALUES
2002   (
2003     g_interface_type, --INTERFACE_TYPE
2004     'PON_AUC_UNIT_TARGET_BE_POS', -- ERROR_MESSAGE_NAME
2005     p_request_id, -- REQUEST_ID
2006     p_batch_id, --BATCH_ID
2007     g_auction_item_type, -- ENTITY_TYPE
2008     p_auction_header_id, -- AUCTION_HEADER_ID
2009     sel_line_number, -- LINE_NUMBER
2010     p_expiration_date, -- EXPIRATION_DATE
2011     'LINENUM', -- TOKEN1_NAME
2012     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
2013     p_user_id, -- CREATED_BY
2014     sysdate, -- CREATION_DATE
2015     p_user_id, -- LAST_UPDATED_BY
2016     sysdate, -- LAST_UPDATE_DATE
2017     p_login_id -- LAST_UPDATE_LOGIN
2018   )
2019 
2020   -- There should be atleast one supplier price factor if the unit price is entered
2021 
2022   WHEN
2023   (
2024     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
2025     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
2026     sel_unit_target_price IS NOT NULL AND
2027     NOT EXISTS (
2028         SELECT 1
2029         FROM
2030         PON_PRICE_ELEMENTS
2031         WHERE
2032         AUCTION_HEADER_ID = p_auction_header_id AND
2033         LINE_NUMBER = sel_line_number AND
2034         PF_TYPE='SUPPLIER'
2035        )
2036   )
2037 
2038   THEN INTO PON_INTERFACE_ERRORS
2039   (
2040     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
2041     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
2042     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
2043   )
2044   VALUES
2045   (
2046     g_interface_type, --INTERFACE_TYPE
2047     'PON_AUC_UNITPRICE_SUPPLIER', -- ERROR_MESSAGE_NAME
2048     p_request_id, -- REQUEST_ID
2049     p_batch_id, -- BATCH_ID
2050     g_auction_item_type, -- ENTITY_TYPE
2051     p_auction_header_id, -- AUCTION_HEADER_ID
2052     sel_line_number, -- LINE_NUMBER
2053     p_expiration_date, -- EXPIRATION_DATE
2054     'LINENUM', -- TOKEN1_NAME
2055     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
2056     p_user_id, -- CREATED_BY
2057     sysdate, -- CREATION_DATE
2058     p_user_id, -- LAST_UPDATED_BY
2059     sysdate, -- LAST_UPDATE_DATE
2060     p_login_id -- LAST_UPDATE_LOGIN
2061   )
2062 
2063   -- The total weight of all attributes in an MAS auction should be 100
2064 
2065   WHEN
2066   (
2067     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
2068     p_bid_ranking = 'MULTI_ATTRIBUTE_SCORING' AND
2069     EXISTS(
2070       SELECT 1
2071       FROM
2072         PON_AUCTION_ATTRIBUTES
2073       WHERE
2074         AUCTION_HEADER_ID = p_auction_header_id
2075         AND LINE_NUMBER = sel_line_number
2076         AND (NVL (SCORING_TYPE,g_invalid_string)='RANGE' OR NVL (SCORING_TYPE,g_invalid_string)='LOV')
2077     ) AND
2078     (
2079       SELECT
2080         SUM(weight)
2081       FROM
2082         PON_AUCTION_ATTRIBUTES
2083       WHERE
2084         AUCTION_HEADER_ID = p_auction_header_id
2085         AND LINE_NUMBER = sel_line_number) <> 100
2086   )
2087 
2088   THEN INTO PON_INTERFACE_ERRORS
2089   (
2090     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
2091     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
2092     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
2093   )
2094   VALUES
2095   (
2096     g_interface_type, --INTERFACE_TYPE
2097     'PON_AUC_INVALID_WEIGHTS_LINE', -- ERROR_MESSAGE_NAME
2098     p_request_id, -- REQUEST_ID
2099     p_batch_id, --BATCH_ID
2100     g_auction_attrs_type, -- ENTITY_TYPE
2101     p_auction_header_id, -- AUCTION_HEADER_ID
2102     sel_line_number, -- LINE_NUMBER
2103     p_expiration_date, -- EXPIRATION_DATE
2104     'LINE', -- TOKEN1_NAME
2105     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
2106     p_user_id, -- CREATED_BY
2107     sysdate, -- CREATION_DATE
2108     p_user_id, -- LAST_UPDATED_BY
2109     sysdate, -- LAST_UPDATE_DATE
2110     p_login_id -- LAST_UPDATE_LOGIN
2111   )
2112 
2113   -- If quantity is entered then it should be positive
2114   --bug 6193585 - check whether the quantity is less or equal to zero
2115   WHEN
2116   (
2117     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
2118     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
2119     sel_quantity IS NOT NULL AND
2120     sel_quantity <= 0
2121   )
2122 
2123   THEN INTO PON_INTERFACE_ERRORS
2124   (
2125     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
2126     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
2127     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
2128   )
2129   VALUES
2130   (
2131     g_interface_type, --INTERFACE_TYPE
2132     'PON_AUCTS_QUANTITY_BE_POSITIVE', -- ERROR_MESSAGE_NAME
2133     p_request_id, -- REQUEST_ID
2134     p_batch_id, --BATCH_ID
2135     g_auction_item_type, -- ENTITY_TYPE
2136     p_auction_header_id, -- AUCTION_HEADER_ID
2137     sel_line_number, -- LINE_NUMBER
2138     p_expiration_date, -- EXPIRATION_DATE
2139     'LINENUM', -- TOKEN1_NAME
2140     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
2141     p_user_id, -- CREATED_BY
2142     sysdate, -- CREATION_DATE
2143     p_user_id, -- LAST_UPDATED_BY
2144     sysdate, -- LAST_UPDATE_DATE
2145     p_login_id -- LAST_UPDATE_LOGIN
2146   )
2147 
2148   -- The precision of po agreed amount should be less than the auction currency PRECISION
2149 
2150   WHEN
2151   (
2152     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
2153     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
2154     sel_po_agreed_amount IS NOT NULL AND
2155     ABS (sel_po_agreed_amount * l_temp - TRUNC (sel_po_agreed_amount * l_temp)) > 0
2156   )
2157   THEN INTO PON_INTERFACE_ERRORS
2158   (
2159     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
2160     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
2161     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
2162   )
2163 
2164   VALUES
2165   (
2166     g_interface_type, --INTERFACE_TYPE
2167     'PON_AUCTS_POAGREEDAMT_PRECIS', -- ERROR_MESSAGE_NAME
2168     p_request_id, -- REQUEST_ID
2169     p_batch_id, -- BATCH_ID
2170     g_auction_item_type, -- ENTITY_TYPE
2171     p_auction_header_id, -- AUCTION_HEADER_ID
2172     sel_line_number, -- LINE_NUMBER
2173     p_expiration_date, -- EXPIRATION_DATE
2174     'LINENUM', -- TOKEN1_NAME
2175     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
2176     p_user_id, -- CREATED_BY
2177     sysdate, -- CREATION_DATE
2178     p_user_id, -- LAST_UPDATED_BY
2179     sysdate, -- LAST_UPDATE_DATE
2180     p_login_id -- LAST_UPDATE_LOGIN
2181   )
2182 
2183   -- Ship to location should not be NULL for an SPO not coming from a req except in case of RFI
2184 
2185   WHEN
2186   (
2187     g_document_type_required_rule('SHIP_TO_LOCATION') = 'Y' AND
2188     g_document_type_names (p_doctype_id) <> PON_CONTERMS_UTL_PVT.SRC_REQUEST_FOR_INFORMATION AND
2189     p_contract_type = 'STANDARD' AND
2190     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
2191     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
2192     nvl (sel_line_origination_code,g_invalid_string) <> 'REQUISITION' AND
2193     sel_ship_to_location_id IS NULL
2194   )
2195   THEN INTO PON_INTERFACE_ERRORS
2196   (
2197     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
2198     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
2199     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
2200   )
2201   VALUES
2202   (
2203     g_interface_type, --INTERFACE_TYPE
2204     'PON_AUC_SHIPTOLOC_MUST_ENTERED', -- ERROR_MESSAGE_NAME
2205     p_request_id, -- REQUEST_ID
2206     p_batch_id, -- BATCH_ID
2207     g_auction_item_type, -- ENTITY_TYPE
2208     p_auction_header_id, -- AUCTION_HEADER_ID
2209     sel_line_number, -- LINE_NUMBER
2210     p_expiration_date, -- EXPIRATION_DATE
2211     'LINENUM', -- TOKEN1_NAME
2212     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
2213     p_user_id, -- CREATED_BY
2214     sysdate, -- CREATION_DATE
2215     p_user_id, -- LAST_UPDATED_BY
2216     sysdate, -- LAST_UPDATE_DATE
2217     p_login_id -- LAST_UPDATE_LOGIN
2218   )
2219 
2220   -- In a private auction there should be no line without any invitees
2221 
2222   WHEN
2223   (
2224     p_bid_list_type = 'PRIVATE_BID_LIST' AND
2225     (SELECT COUNT(1)
2226     FROM PON_PARTY_LINE_EXCLUSIONS
2227     WHERE
2228     AUCTION_HEADER_ID = p_auction_header_id AND
2229     sel_group_type IN ('LOT', 'GROUP', 'LINE') AND
2230     LINE_NUMBER = sel_line_number) = p_invitees_count
2231   )
2232   THEN INTO PON_INTERFACE_ERRORS
2233   (
2234     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
2235     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
2236     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
2237   )
2238   VALUES
2239   (
2240     g_interface_type, --INTERFACE_TYPE
2241     'PON_LINE_SANS_INVITEE', -- ERROR_MESSAGE_NAME
2242     p_request_id, -- REQUEST_ID
2243     p_batch_id, --BATCH_ID
2244     g_auction_item_type, -- ENTITY_TYPE
2245     p_auction_header_id, -- AUCTION_HEADER_ID
2246     sel_line_number, -- LINE_NUMBER
2247     p_expiration_date, -- EXPIRATION_DATE
2248     'NUMBER', -- TOKEN1_NAME
2249     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
2250     p_user_id, -- CREATED_BY
2251     sysdate, -- CREATION_DATE
2252     p_user_id, -- LAST_UPDATED_BY
2253     sysdate, -- LAST_UPDATE_DATE
2254     p_login_id -- LAST_UPDATE_LOGIN
2255   )
2256   -- clm validations
2257   -- Priced clins should not have priced slins
2258   WHEN
2259   (
2260     Nvl(sel_is_info_line,'N') = 'N'
2261     AND EXISTS (SELECT 'Y' FROM pon_auction_item_prices_all
2262                 WHERE auction_header_id = p_auction_header_id
2263                 AND group_line_id = sel_line_number
2264                 AND Nvl(clm_info_flag,'N') = 'N')
2265   )
2266   THEN INTO PON_INTERFACE_ERRORS
2267   (
2268     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
2269     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
2270     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
2271   )
2272   VALUES
2273   (
2274     g_interface_type, --INTERFACE_TYPE
2275     'PON_CLM_SLIN_VAL', -- ERROR_MESSAGE_NAME
2276     p_request_id, -- REQUEST_ID
2277     p_batch_id, --BATCH_ID
2278     g_auction_item_type, -- ENTITY_TYPE
2279     p_auction_header_id, -- AUCTION_HEADER_ID
2280     sel_line_number, -- LINE_NUMBER
2281     p_expiration_date, -- EXPIRATION_DATE
2282     'NUMBER', -- TOKEN1_NAME
2283     sel_clm_line_num_display, -- TOKEN1_VALUE
2284     p_user_id, -- CREATED_BY
2285     sysdate, -- CREATION_DATE
2286     p_user_id, -- LAST_UPDATED_BY
2287     sysdate, -- LAST_UPDATE_DATE
2288     p_login_id -- LAST_UPDATE_LOGIN
2289   )
2290 
2291   SELECT
2292     LINE_NUMBER sel_line_number,
2293     DOCUMENT_DISP_LINE_NUMBER sel_document_disp_line_number,
2294     GROUP_TYPE sel_group_type,
2295     UNIT_TARGET_PRICE sel_unit_target_price,
2296     NEED_BY_START_DATE sel_need_by_start_date,
2297     NEED_BY_DATE sel_need_by_date,
2298     CLM_NEED_BY_DATE clm_need_by_date,
2299     ITEM_ID sel_item_id,
2300     ORG_ID sel_org_id,
2301     PRICE_BREAK_TYPE sel_price_break_type,
2302     DIFFERENTIAL_RESPONSE_TYPE sel_differential_response_type,
2303     PRICE_BREAK_NEG_FLAG sel_price_break_neg_flag,
2304     QUANTITY sel_quantity,
2305     PO_AGREED_AMOUNT sel_po_agreed_amount,
2306     LINE_ORIGINATION_CODE sel_line_origination_code,
2307     SHIP_TO_LOCATION_ID sel_ship_to_location_id,
2308     -- Clin Slin Changes
2309     Nvl(CLM_INFO_FLAG,'N') sel_is_info_line,
2310     GROUP_LINE_ID sel_group_line_id,
2311     line_num_display sel_clm_line_num_display,
2312     --CLM QA Bug : 9835426
2313     nvl(clm_cost_constraint,'X') sel_clm_cost_constraint
2314   FROM
2315     PON_AUCTION_ITEM_PRICES_ALL
2316   WHERE
2317     AUCTION_HEADER_ID = p_auction_header_id;
2318 
2319   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
2320     FND_LOG.string(log_level => FND_LOG.level_procedure,
2321       module  =>  g_module_prefix || 'val_item_prices_all',
2322       message  => 'Leaving PON_NEGOTIATION_HELPER_PVT.val_item_prices_all'
2323                   || ', p_auction_header_id = ' || p_auction_header_id);
2324   END IF; --}
2325 
2326 END val_item_prices_all;
2327 
2328 /*
2329  * Line validations: The following validations involve the item_prices_all table and the
2330  * po line types table.
2331  * 1. Uom code should not be empty for non fixed price items
2332  * 2. Ship to location should not be NULL for an SPO not coming from a req except in case of RFI
2333  * 3. Job id should not be NULL for temp labor lines
2334  * 4. For temp labor based lines the po agreed amount should be a positive number
2335  * 5. Only global agreements and RFIs can have temp labor lines
2336  * 6. Unit target price precision should be less than currency precision for fixed price lines
2337  * 7. For non fixed price items the unit price should have precision less than the auction currency precision
2338  * 8. Quantity should be entered for blanket/contract for lines with fixed amount price elements and non fixed price items
2339  * 9. Quantity is required if the document is RFI and the line is not temp labor based
2340  */
2341 PROCEDURE val_item_prices_po_lines (
2342   p_auction_header_id IN NUMBER,
2343   p_request_id IN NUMBER,
2344   p_expiration_date IN DATE,
2345   p_user_id IN NUMBER,
2346   p_login_id IN NUMBER,
2347   p_batch_id IN NUMBER,
2348   p_doctype_id IN NUMBER,
2349   p_contract_type IN VARCHAR2,
2350   p_global_agreement_flag IN VARCHAR2,
2351   p_precision IN NUMBER,
2352   p_fnd_precision IN NUMBER
2353 ) IS
2354 
2355 l_temp NUMBER;
2356 l_temp_fnd NUMBER;
2357 BEGIN
2358 
2359   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --
2360     FND_LOG.string(log_level => FND_LOG.level_procedure,
2361       module  =>  g_module_prefix || 'val_item_prices_po_lines',
2362       message  => 'Entering PON_NEGOTIATION_HELPER_PV.val_item_prices_po_lines'
2363                   || ', p_auction_header_id = ' || p_auction_header_id);
2364   END IF; --
2365 
2366   IF (p_precision <> g_precision_any) THEN
2367     l_temp := power (10, p_precision);
2368   ELSE
2369     l_temp := 0;
2370   END IF;
2371 
2372   l_temp_fnd := power (10, p_fnd_precision);
2373 
2374   INSERT ALL
2375 
2376   -- Uom code should not be empty for non fixed price items
2377 
2378   WHEN
2379   (
2380     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
2381     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
2382     NVL (sel_order_type_lookup_code, g_invalid_string) <> g_fixed_price AND
2383     NVL (sel_quantity_disabled_flag, g_invalid_string) <> 'Y' AND
2384     (
2385       sel_uom_code IS NULL OR TRIM (sel_uom_code) = ''
2386     )
2387   )
2388   THEN INTO PON_INTERFACE_ERRORS
2389   (
2390     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
2391     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
2392     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
2393   )
2394   VALUES
2395   (
2396     g_interface_type, --INTERFACE_TYPE
2397     'PON_AUC_UOM_REQUIRED', -- ERROR_MESSAGE_NAME
2398     p_request_id, -- REQUEST_ID
2399     p_batch_id, --BATCH_ID
2400     g_auction_item_type, -- ENTITY_TYPE
2401     p_auction_header_id, -- AUCTION_HEADER_ID
2402     sel_line_number, -- LINE_NUMBER
2403     p_expiration_date, -- EXPIRATION_DATE
2404     'LINENUM', -- TOKEN1_NAME
2405     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
2406     p_user_id, -- CREATED_BY
2407     sysdate, -- CREATION_DATE
2408     p_user_id, -- LAST_UPDATED_BY
2409     sysdate, -- LAST_UPDATE_DATE
2410     p_login_id -- LAST_UPDATE_LOGIN
2411   )
2412 
2413   -- Ship to location should not be NULL in case of RFI and non temp labor lines
2414 
2415   WHEN
2416   (
2417     sel_ship_to_location_id IS NULL AND
2418     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
2419     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
2420     nvl (sel_line_origination_code,g_invalid_string) <> 'REQUISITION' AND
2421     g_document_type_required_rule('SHIP_TO_LOCATION') = 'Y' AND
2422     ((nvl (sel_purchase_basis,g_invalid_string) <> g_temp_labor AND
2423     g_document_type_names (p_doctype_id) = PON_CONTERMS_UTL_PVT.SRC_REQUEST_FOR_INFORMATION) OR
2424     p_contract_type = 'STANDARD')
2425   )
2426   THEN INTO PON_INTERFACE_ERRORS
2427   (
2428     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
2429     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
2430     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
2431   )
2432   VALUES
2433   (
2434     g_interface_type, --INTERFACE_TYPE
2435     'PON_AUC_SHIPTOLOC_MUST_ENTERED', -- ERROR_MESSAGE_NAME
2436     p_request_id, -- REQUEST_ID
2437     p_batch_id, --BATCH_ID
2438     g_auction_item_type, -- ENTITY_TYPE
2439     p_auction_header_id, -- AUCTION_HEADER_ID
2440     sel_line_number, -- LINE_NUMBER
2441     p_expiration_date, -- EXPIRATION_DATE
2442     'LINENUM', -- TOKEN1_NAME
2443     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number),  -- TOKEN1_VALUE
2444     p_user_id, -- CREATED_BY
2445     sysdate, -- CREATION_DATE
2446     p_user_id, -- LAST_UPDATED_BY
2447     sysdate, -- LAST_UPDATE_DATE
2448     p_login_id-- LAST_UPDATE_LOGIN
2449   )
2450 
2451   -- Job id should not be NULL for temp labor lines
2452 
2453   WHEN
2454   (
2455     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
2456     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
2457     sel_job_id IS NULL AND
2458     sel_purchase_basis = g_temp_labor
2459   )
2460   THEN INTO PON_INTERFACE_ERRORS
2461   (
2462     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
2463     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
2464     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
2465   )
2466   VALUES
2467   (
2468     g_interface_type, --INTERFACE_TYPE
2469     'PON_AUC_JOB_REQUIRED', -- ERROR_MESSAGE_NAME
2470     p_request_id, -- REQUEST_ID
2471     p_batch_id, --BATCH_ID
2472     g_auction_item_type, -- ENTITY_TYPE
2473     p_auction_header_id, -- AUCTION_HEADER_ID
2474     sel_line_number, -- LINE_NUMBER
2475     p_expiration_date, -- EXPIRATION_DATE
2476     'LINENUM', -- TOKEN1_NAME
2477     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number),  -- TOKEN1_VALUE
2478     p_user_id, -- CREATED_BY
2479     sysdate, -- CREATION_DATE
2480     p_user_id, -- LAST_UPDATED_BY
2481     sysdate, -- LAST_UPDATE_DATE
2482     p_login_id -- LAST_UPDATE_LOGIN
2483   )
2484 
2485   -- For temp labor based lines the po agreed amount should be a positive number
2486 
2487   WHEN
2488   (
2489     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
2490     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
2491     sel_po_agreed_amount IS NOT NULL AND
2492     sel_purchase_basis = g_temp_labor AND
2493     sel_po_agreed_amount <= 0
2494   )
2495   THEN INTO PON_INTERFACE_ERRORS
2496   (
2497     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
2498     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
2499     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
2500   )
2501   VALUES
2502   (
2503     g_interface_type, --INTERFACE_TYPE
2504     'PON_AUCTS_POAGREEDAMT_BE_POSIT', -- ERROR_MESSAGE_NAME
2505     p_request_id, -- REQUEST_ID
2506     p_batch_id, --BATCH_ID
2507     g_auction_item_type, -- ENTITY_TYPE
2508     p_auction_header_id, -- AUCTION_HEADER_ID
2509     sel_line_number, -- LINE_NUMBER
2510     p_expiration_date, -- EXPIRATION_DATE
2511     'LINENUM', -- TOKEN1_NAME
2512     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number),  -- TOKEN1_VALUE
2513     p_user_id, -- CREATED_BY
2514     sysdate, -- CREATION_DATE
2515     p_user_id, -- LAST_UPDATED_BY
2516     sysdate, -- LAST_UPDATE_DATE
2517     p_login_id-- LAST_UPDATE_LOGIN
2518   )
2519 
2520   -- Only global agreements and RFIs can have temp labor lines
2521 
2522   WHEN
2523   (
2524     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
2525     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
2526     sel_purchase_basis = g_temp_labor AND
2527     g_document_type_names (p_doctype_id) <> PON_CONTERMS_UTL_PVT.SRC_REQUEST_FOR_INFORMATION AND
2528     NVL (p_global_agreement_flag, g_invalid_string) <> 'Y'
2529   )
2530 
2531   THEN INTO PON_INTERFACE_ERRORS
2532   (
2533     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
2534     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, CREATED_BY, CREATION_DATE,
2535     LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
2536   )
2537   VALUES
2538   (
2539     g_interface_type, --INTERFACE_TYPE
2540     'PON_AUCTS_NOT_GLOBAL_TEMP', -- ERROR_MESSAGE_NAME
2541     p_request_id, -- REQUEST_ID
2542     p_batch_id, --BATCH_ID
2543     g_auction_item_type, -- ENTITY_TYPE
2544     p_auction_header_id, -- AUCTION_HEADER_ID
2545     sel_line_number, -- LINE_NUMBER
2546     p_expiration_date, -- EXPIRATION_DATE
2547     p_user_id, -- CREATED_BY
2548     sysdate, -- CREATION_DATE
2549     p_user_id, -- LAST_UPDATED_BY
2550     sysdate, -- LAST_UPDATE_DATE
2551     p_login_id -- LAST_UPDATE_LOGIN
2552   )
2553 
2554   -- Unit target price precision should be less than currency precision for fixed price lines
2555 
2556   WHEN
2557   (
2558     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
2559     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
2560     sel_unit_target_price IS NOT NULL AND
2561     sel_order_type_lookup_code = g_fixed_price AND
2562     ABS (sel_unit_target_price * l_temp_fnd - TRUNC (sel_unit_target_price * l_temp_fnd)) > 0
2563   )
2564 
2565   THEN INTO PON_INTERFACE_ERRORS
2566   (
2567     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
2568     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
2569     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
2570   )
2571 
2572   VALUES
2573   (
2574     g_interface_type, --INTERFACE_TYPE
2575     'PON_AUC_UNITPRICE_CUR_PREC', -- ERROR_MESSAGE_NAME
2576     p_request_id, -- REQUEST_ID
2577     p_batch_id, -- BATCH_ID
2578     g_auction_item_type, -- ENTITY_TYPE
2579     p_auction_header_id, -- AUCTION_HEADER_ID
2580     sel_line_number, -- LINE_NUMBER
2581     p_expiration_date, -- EXPIRATION_DATE
2582     'LINENUM', -- TOKEN1_NAME
2583     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number),  -- TOKEN1_VALUE
2584     p_user_id, -- CREATED_BY
2585     sysdate, -- CREATION_DATE
2586     p_user_id, -- LAST_UPDATED_BY
2587     sysdate, -- LAST_UPDATE_DATE
2588     p_login_id -- LAST_UPDATE_LOGIN
2589   )
2590 
2591   -- For non fixed price items the unit price should have precision less than
2592   -- then auction currency precision
2593 
2594   WHEN
2595   (
2596     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
2597     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
2598     sel_unit_target_price IS NOT NULL AND
2599     NVL (sel_order_type_lookup_code, g_invalid_string) <> g_fixed_price AND
2600     ABS (sel_unit_target_price  * l_temp - TRUNC (sel_unit_target_price * l_temp)) > 0
2601   )
2602 
2603   THEN INTO PON_INTERFACE_ERRORS
2604   (
2605     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
2606     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
2607     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
2608   )
2609 
2610   VALUES
2611   (
2612     g_interface_type, --INTERFACE_TYPE
2613     'PON_AUC_UNITPRICE_PREC', -- ERROR_MESSAGE_NAME
2614     p_request_id, -- REQUEST_ID
2615     p_batch_id, -- BATCH_ID
2616     g_auction_item_type, -- ENTITY_TYPE
2617     p_auction_header_id, -- AUCTION_HEADER_ID
2618     sel_line_number, -- LINE_NUMBER
2619     p_expiration_date, -- EXPIRATION_DATE
2620     'LINENUM', -- TOKEN1_NAME
2621     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number),  -- TOKEN1_VALUE
2622     p_user_id, -- CREATED_BY
2623     sysdate, -- CREATION_DATE
2624     p_user_id, -- LAST_UPDATED_BY
2625     sysdate, -- LAST_UPDATE_DATE
2626     p_login_id -- LAST_UPDATE_LOGIN
2627   )
2628 
2629   -- Quantity should be entered for blanket/contract for lines with fixed amount
2630   -- price elements
2631 
2632   WHEN
2633   (
2634     (p_contract_type = 'BLANKET' OR p_contract_type = 'CONTRACT') AND
2635     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
2636     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
2637     NVL (sel_quantity_disabled_flag, g_invalid_string) <> 'Y' AND
2638     NVL (sel_order_type_lookup_code, g_invalid_string) <> g_fixed_price AND
2639     sel_quantity IS NULL AND
2640       EXISTS (
2641         SELECT 1
2642         FROM
2643         PON_PRICE_ELEMENTS
2644         WHERE
2645         AUCTION_HEADER_ID = p_auction_header_id AND
2646         LINE_NUMBER = sel_line_number AND
2647         PRICING_BASIS = g_fixed_amount)
2648   )
2649   THEN INTO PON_INTERFACE_ERRORS
2650   (
2651     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, ENTITY_TYPE, AUCTION_HEADER_ID,
2652     LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY,
2653     CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN,
2654     BATCH_ID
2655   )
2656   VALUES
2657   (
2658     g_interface_type, --INTERFACE_TYPE
2659     'PON_AUC_QUAN_FIXED_AMT', -- ERROR_MESSAGE_NAME
2660     p_request_id, -- REQUEST_ID
2661     g_auction_item_type, -- ENTITY_TYPE
2662     p_auction_header_id, -- AUCTION_HEADER_ID
2663     sel_line_number, -- LINE_NUMBER
2664     p_expiration_date, -- EXPIRATION_DATE
2665     'LINENUM', -- TOKEN1_NAME
2666     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number),  -- TOKEN1_VALUE
2667     p_user_id, -- CREATED_BY
2668     sysdate, -- CREATION_DATE
2669     p_user_id, -- LAST_UPDATED_BY
2670     sysdate, -- LAST_UPDATE_DATE
2671     p_login_id, -- LAST_UPDATE_LOGIN
2672     p_batch_id -- BATCH_ID
2673   )
2674 
2675   -- Quantity is required if the document is RFI and the line is not
2676   -- temp labor based
2677 
2678   WHEN
2679   (
2680     sel_quantity IS NULL AND
2681     NVL (sel_group_type, g_invalid_string) <> 'GROUP' AND
2682     sel_is_info_line <> 'Y' AND       -- Clin Slin Changes
2683     NVL (sel_quantity_disabled_flag, g_invalid_string) <> 'Y' AND
2684     NVL (sel_order_type_lookup_code, g_invalid_string) <> g_fixed_price AND
2685     NVL (sel_purchase_basis, g_invalid_string) <> g_temp_labor AND
2686     g_document_type_names (p_doctype_id) = PON_CONTERMS_UTL_PVT.SRC_REQUEST_FOR_INFORMATION
2687   )
2688   THEN INTO PON_INTERFACE_ERRORS
2689   (
2690     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, ENTITY_TYPE, AUCTION_HEADER_ID,
2691     LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY,
2692     CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN,
2693     BATCH_ID
2694   )
2695   VALUES
2696   (
2697     g_interface_type, --INTERFACE_TYPE
2698     'PON_AUC_QUANTITY_REQUIRED', -- ERROR_MESSAGE_NAME
2699     p_request_id, -- REQUEST_ID
2700     g_auction_item_type, -- ENTITY_TYPE
2701     p_auction_header_id, -- AUCTION_HEADER_ID
2702     sel_line_number, -- LINE_NUMBER
2703     p_expiration_date, -- EXPIRATION_DATE
2704     'LINENUM', -- TOKEN1_NAME
2705     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number),  -- TOKEN1_VALUE
2706     p_user_id, -- CREATED_BY
2707     sysdate, -- CREATION_DATE
2708     p_user_id, -- LAST_UPDATED_BY
2709     sysdate, -- LAST_UPDATE_DATE
2710     p_login_id, -- LAST_UPDATE_LOGIN
2711     p_batch_id -- BATCH_ID
2712   )
2713 
2714   SELECT
2715     PAIP.LINE_NUMBER sel_line_number,
2716     PAIP.DOCUMENT_DISP_LINE_NUMBER sel_document_disp_line_number,
2717     PAIP.GROUP_TYPE sel_group_type,
2718     PLTB.ORDER_TYPE_LOOKUP_CODE sel_order_type_lookup_code,
2719     PAIP.QUANTITY_DISABLED_FLAG sel_quantity_disabled_flag,
2720     PAIP.UOM_CODE sel_uom_code,
2721     PAIP.SHIP_TO_LOCATION_ID sel_ship_to_location_id,
2722     PAIP.LINE_ORIGINATION_CODE sel_line_origination_code,
2723     PLTB.PURCHASE_BASIS sel_purchase_basis,
2724     PAIP.JOB_ID sel_job_id,
2725     PAIP.PO_AGREED_AMOUNT sel_po_agreed_amount,
2726     PAIP.UNIT_TARGET_PRICE sel_unit_target_price,
2727     PAIP.QUANTITY sel_quantity,
2728     -- Clin Slin Changes
2729     Nvl(CLM_INFO_FLAG,'N') sel_is_info_line,
2730     PAIP.line_num_display sel_clm_line_num_display
2731   FROM
2732     PON_AUCTION_ITEM_PRICES_ALL PAIP,
2733     PO_LINE_TYPES_B PLTB
2734   WHERE
2735     PAIP.AUCTION_HEADER_ID = p_auction_header_id AND
2736     PLTB.LINE_TYPE_ID = PAIP.LINE_TYPE_ID;
2737 
2738   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
2739     FND_LOG.string(log_level => FND_LOG.level_procedure,
2740       module  =>  g_module_prefix || 'val_item_prices_po_lines',
2741       message  => 'Returning PON_NEGOTIATION_HELPER_PVT.val_item_prices_po_lines'
2742                   || ', p_auction_header_id = ' || p_auction_header_id);
2743   END IF; --}
2744 END val_item_prices_po_lines;
2745 
2746 /*
2747  * In case of a multi currency auction there cannot be an amount
2748  * based line.
2749  * Need to show only one error (so ROWNUM=1) and hence cannot be merged
2750  * into the other validations.
2751  */
2752 PROCEDURE VAL_LINE_AMOUNT_MULTI_CURR(
2753   p_auction_header_id IN NUMBER,
2754   l_allow_other_bid_currency IN VARCHAR2,
2755   p_request_id IN NUMBER,
2756   p_expiration_date IN DATE,
2757   p_user_id IN NUMBER,
2758   p_login_id IN NUMBER,
2759   p_batch_id IN NUMBER
2760 ) IS
2761 
2762 l_doctype_suffix VARCHAR2(10);
2763 BEGIN
2764   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
2765     FND_LOG.string(log_level => FND_LOG.level_procedure,
2766       module  =>  g_module_prefix || 'VAL_LINE_AMOUNT_MULTI_CURR',
2767       message  => 'Entering PON_NEGOTIATION_HELPER_PVT.VAL_LINE_AMOUNT_MULTI_CURR'
2768                   || ', p_auction_header_id = ' || p_auction_header_id);
2769   END IF; --}
2770 
2771   IF (l_allow_other_bid_currency = 'Y') THEN --{
2772 
2773     l_doctype_suffix := PON_LARGE_AUCTION_UTIL_PKG.GET_DOCTYPE_SUFFIX (p_auction_header_id);
2774 
2775     INSERT INTO PON_INTERFACE_ERRORS
2776     (
2777       INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
2778       AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, CREATED_BY,
2779       CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
2780     )
2781     SELECT
2782       g_interface_type, --INTERFACE_TYPE
2783       'PON_AUC_AMOUNT_CURR' || l_doctype_suffix, -- ERROR_MESSAGE_NAME
2784       p_request_id, -- REQUEST_ID
2785       p_batch_id, --BATCH_ID
2786       g_auction_item_type, -- ENTITY_TYPE
2787       p_auction_header_id, -- AUCTION_HEADER_ID
2788       LINE_NUMBER, -- LINE_NUMBER
2789       p_expiration_date, -- EXPIRATION_DATE
2790       p_user_id, -- CREATED_BY
2791       sysdate, -- CREATION_DATE
2792       p_user_id, -- LAST_UPDATED_BY
2793       sysdate, -- LAST_UPDATE_DATE
2794       p_login_id -- LAST_UPDATE_LOGIN
2795     FROM
2796       PON_AUCTION_ITEM_PRICES_ALL PAIP,
2797       PO_LINE_TYPES_B PLTB
2798     WHERE
2799       AUCTION_HEADER_ID = p_auction_header_id AND
2800       PAIP.LINE_TYPE_ID = PLTB.LINE_TYPE_ID AND
2801       NVL (PAIP.GROUP_TYPE, g_invalid_string) <> 'GROUP' AND
2802       Nvl(paip.CLM_INFO_FLAG,'N') <> 'Y' AND
2803       PLTB.ORDER_TYPE_LOOKUP_CODE = g_amount AND
2804       ROWNUM =1;
2805   END IF; --}
2806 
2807   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
2808     FND_LOG.string(log_level => FND_LOG.level_procedure,
2809       module  =>  g_module_prefix || 'VAL_LINE_AMOUNT_MULTI_CURR',
2810       message  => 'Returning PON_NEGOTIATION_HELPER_PVT.VAL_LINE_AMOUNT_MULTI_CURR'
2811                   || ', p_auction_header_id = ' || p_auction_header_id);
2812   END IF; --}
2813 END VAL_LINE_AMOUNT_MULTI_CURR;
2814 
2815 -- START_ATTRIBUTE_VALIDATIONS
2816 /*
2817  * The following attribute validations are performed
2818  * 1. Attribute name should not be empty
2819  * 2. If the display target flag is set to y then the value should not be null
2820  * 3. ==REMOVED ER 4689885, BUG 5633348== If the attribute is only a display attribute then the display target flag should be set
2821  * 4. Weight should be an integer
2822  * 5. The weight value should be between 0 and 100 if entered
2823  * 6. Attribute max score should an integer
2824  * 7. The attrribute maximum score should be a positive number
2825  * 8. If full quantity bids are required then quantity (-20) cannot be scored
2826  * 9. For MAS auctions, if weight is greater than zero then the scoring type should not be null or NONE
2827  */
2828 PROCEDURE VAL_ATTRIBUTES (
2829   p_auction_header_id IN NUMBER,
2830   p_request_id IN NUMBER,
2831   p_expiration_date IN DATE,
2832   p_user_id IN NUMBER,
2833   p_login_id IN NUMBER,
2834   p_batch_id IN NUMBER,
2835   p_full_quantity_bid_code IN VARCHAR2,
2836   p_bid_ranking IN VARCHAR2
2837   ) IS
2838 BEGIN
2839   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
2840     FND_LOG.string(log_level => FND_LOG.level_procedure,
2841       module  =>  g_module_prefix || 'VAL_ATTRIBUTES',
2842       message  => 'Entering procedure'
2843                   || ', p_auction_header_id = ' || p_auction_header_id);
2844   END IF; --}
2845 
2846   INSERT ALL
2847 
2848   -- ATTRIBUTE NAME SHOULD NOT BE EMPTY
2849 
2850   WHEN
2851   (
2852     sel_attribute_name IS NULL OR
2853     TRIM (sel_attribute_name) = ''
2854   )
2855   THEN INTO PON_INTERFACE_ERRORS
2856   (
2857     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID,
2858     LINE_NUMBER, ATTRIBUTE_NAME, EXPIRATION_DATE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY,
2859     LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
2860   )
2861   VALUES
2862   (
2863     g_interface_type, --INTERFACE_TYPE
2864     'PON_ATTRIB_NAME_M', -- ERROR_MESSAGE_NAME
2865     p_request_id, -- REQUEST_ID
2866     p_batch_id, --BATCH_ID
2867     g_auction_attrs_type, -- ENTITY_TYPE
2868     p_auction_header_id, -- AUCTION_HEADER_ID
2869     sel_line_number, -- LINE_NUMBER
2870     sel_attribute_name, -- ATTRIBUTE_NAME
2871     p_expiration_date, -- EXPIRATION_DATE
2872     p_user_id, -- CREATED_BY
2873     sysdate, -- CREATION_DATE
2874     p_user_id, -- LAST_UPDATED_BY
2875     sysdate, -- LAST_UPDATE_DATE
2876     p_login_id -- LAST_UPDATE_LOGIN
2877   )
2878 
2879   -- IF THE DISPLAY TARGET FLAG IS SET TO Y THEN THE VALUE SHOULD NOT BE NULL
2880 
2881   WHEN
2882   (
2883     sel_sequence_number is not null and
2884     sel_sequence_number > 0 and
2885     sel_value IS NULL AND
2886     sel_display_target_flag = 'Y'
2887   )
2888   THEN INTO PON_INTERFACE_ERRORS
2889   (
2890     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
2891     AUCTION_HEADER_ID, LINE_NUMBER, ATTRIBUTE_NAME, EXPIRATION_DATE,
2892     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
2893   )
2894   VALUES
2895   (
2896     g_interface_type, --INTERFACE_TYPE
2897     'PON_AUCTS_ATTR_SHOW_TARGET', -- ERROR_MESSAGE_NAME
2898     p_request_id, -- REQUEST_ID
2899     p_batch_id, --BATCH_ID
2900     g_auction_attrs_type, -- ENTITY_TYPE
2901     p_auction_header_id, -- AUCTION_HEADER_ID
2902     sel_line_number, -- LINE_NUMBER
2903     sel_attribute_name, -- ATTRIBUTE_NAME
2904     p_expiration_date, -- EXPIRATION_DATE
2905     p_user_id, -- CREATED_BY
2906     sysdate, -- CREATION_DATE
2907     p_user_id, -- LAST_UPDATED_BY
2908     sysdate, -- LAST_UPDATE_DATE
2909     p_login_id -- LAST_UPDATE_LOGIN
2910   )
2911 
2912   --WEIGHT SHOULD BE An integer
2913 
2914   WHEN
2915   (
2916     sel_weight IS NOT NULL AND
2917     (sel_weight - sel_trunc_weight <> 0)
2918   )
2919   THEN INTO PON_INTERFACE_ERRORS
2920   (
2921     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
2922     AUCTION_HEADER_ID, LINE_NUMBER, ATTRIBUTE_NAME, EXPIRATION_DATE,
2923     TOKEN1_NAME, TOKEN1_VALUE, TOKEN2_NAME, TOKEN2_VALUE,
2924     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
2925   )
2926   VALUES
2927   (
2928     g_interface_type, --INTERFACE_TYPE
2929     'PON_AUCTS_LINE_WEIGHT_INT', -- ERROR_MESSAGE_NAME
2930     p_request_id, -- REQUEST_ID
2931     p_batch_id, --BATCH_ID
2932     g_auction_attrs_type, -- ENTITY_TYPE
2933     p_auction_header_id, -- AUCTION_HEADER_ID
2934     sel_line_number, -- LINE_NUMBER
2935     sel_attribute_name, -- ATTRIBUTE_NAME
2936     p_expiration_date, -- EXPIRATION_DATE
2937     'LINE', -- TOKEN1_NAME
2938     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
2939     'ATTRIBUTE', -- TOKEN2_NAME
2940     sel_attribute_name, -- TOKEN2_VALUE
2941     p_user_id, -- CREATED_BY
2942     sysdate, -- CREATION_DATE
2943     p_user_id, -- LAST_UPDATED_BY
2944     sysdate, -- LAST_UPDATE_DATE
2945     p_login_id -- LAST_UPDATE_LOGIN
2946   )
2947 
2948   -- THE WEIGHT VALUE SHOULD BE BETWEEN 0 AND 100 IF ENTERED
2949 
2950   WHEN
2951   (
2952     sel_weight is not null AND
2953     sel_trunc_weight NOT BETWEEN 0 AND 100
2954   )
2955   THEN INTO PON_INTERFACE_ERRORS
2956   (
2957     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
2958     AUCTION_HEADER_ID, LINE_NUMBER, ATTRIBUTE_NAME, EXPIRATION_DATE,
2959     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
2960   )
2961   VALUES
2962   (
2963     g_interface_type, --INTERFACE_TYPE
2964     'PON_AUC_LINE_WEIGHT_RANGE', -- ERROR_MESSAGE_NAME
2965     p_request_id, -- REQUEST_ID
2966     p_batch_id, --BATCH_ID
2967     g_auction_attrs_type, -- ENTITY_TYPE
2968     p_auction_header_id, -- AUCTION_HEADER_ID
2969     sel_line_number, -- LINE_NUMBER
2970     sel_attribute_name, -- ATTRIBUTE_NAME
2971     p_expiration_date, -- EXPIRATION_DATE
2972     p_user_id, -- CREATED_BY
2973     sysdate, -- CREATION_DATE
2974     p_user_id, -- LAST_UPDATED_BY
2975     sysdate, -- LAST_UPDATE_DATE
2976     p_login_id -- LAST_UPDATE_LOGIN
2977   )
2978 
2979   -- attribute max score should an integer
2980 
2981   WHEN
2982   (
2983     sel_attr_max_score is not null AND
2984     (sel_attr_max_score - sel_trunc_attr_max_score <> 0)
2985   )
2986   THEN INTO PON_INTERFACE_ERRORS
2987   (
2988     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
2989     AUCTION_HEADER_ID, LINE_NUMBER, ATTRIBUTE_NAME, EXPIRATION_DATE,
2990     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
2991   )
2992   VALUES
2993   (
2994     g_interface_type, --INTERFACE_TYPE
2995     'PON_AUCTS_MUST_BE_A_INT_M', -- ERROR_MESSAGE_NAME
2996     p_request_id, -- REQUEST_ID
2997     p_batch_id, --BATCH_ID
2998     g_auction_attrs_type, -- ENTITY_TYPE
2999     p_auction_header_id, -- AUCTION_HEADER_ID
3000     sel_line_number, -- LINE_NUMBER
3001     sel_attribute_name, -- ATTRIBUTE_NAME
3002     p_expiration_date, -- EXPIRATION_DATE
3003     p_user_id, -- CREATED_BY
3004     sysdate, -- CREATION_DATE
3005     p_user_id, -- LAST_UPDATED_BY
3006     sysdate, -- LAST_UPDATE_DATE
3007     p_login_id -- LAST_UPDATE_LOGIN
3008   )
3009 
3010   -- THE ATTRRIBUTE MAXIMUM SCORE SHOULD BE A POSITIVE NUMBER
3011 
3012   WHEN
3013   (
3014     sel_attr_max_score is not null AND
3015     (sel_trunc_attr_max_score < 0)
3016   )
3017   THEN INTO PON_INTERFACE_ERRORS
3018   (
3019     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
3020     AUCTION_HEADER_ID, LINE_NUMBER, ATTRIBUTE_NAME, EXPIRATION_DATE, CREATED_BY,
3021     CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
3022   )
3023   VALUES
3024   (
3025     g_interface_type, --INTERFACE_TYPE
3026     'PON_AUC_INVALID_MAXSCORE_RANGE', -- ERROR_MESSAGE_NAME
3027     p_request_id, -- REQUEST_ID
3028     p_batch_id, --BATCH_ID
3029     g_auction_attrs_type, -- ENTITY_TYPE
3030     p_auction_header_id, -- AUCTION_HEADER_ID
3031     sel_line_number, -- LINE_NUMBER
3032     sel_attribute_name, -- ATTRIBUTE_NAME
3033     p_expiration_date, -- EXPIRATION_DATE
3034     p_user_id, -- CREATED_BY
3035     sysdate, -- CREATION_DATE
3036     p_user_id, -- LAST_UPDATED_BY
3037     sysdate, -- LAST_UPDATE_DATE
3038     p_login_id -- LAST_UPDATE_LOGIN
3039   )
3040 
3041   -- If full quantity bids are required then quantity (-20) cannot be scored
3042 
3043   WHEN
3044   (
3045     sel_sequence_number = -20 AND
3046     p_bid_ranking = 'MULTI_ATTRIBUTE_SCORING' AND
3047     p_full_quantity_bid_code = 'FULL_QTY_BIDS_REQD'
3048   )
3049   THEN INTO PON_INTERFACE_ERRORS
3050   (
3051     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
3052     AUCTION_HEADER_ID, LINE_NUMBER, ATTRIBUTE_NAME, EXPIRATION_DATE,
3053     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
3054   )
3055   VALUES
3056   (
3057     g_interface_type, --INTERFACE_TYPE
3058     'PON_AUC_QUANTITY_SCORE_ERR', -- ERROR_MESSAGE_NAME
3059     p_request_id, -- REQUEST_ID
3060     p_batch_id, --BATCH_ID
3061     g_auction_attrs_type, -- ENTITY_TYPE
3062     p_auction_header_id, -- AUCTION_HEADER_ID
3063     sel_line_number, -- LINE_NUMBER
3064     sel_attribute_name, -- ATTRIBUTE_NAME
3065     p_expiration_date, -- EXPIRATION_DATE
3066     p_user_id, -- CREATED_BY
3067     sysdate, -- CREATION_DATE
3068     p_user_id, -- LAST_UPDATED_BY
3069     sysdate, -- LAST_UPDATE_DATE
3070     p_login_id -- LAST_UPDATE_LOGIN
3071   )
3072 
3073   -- For MAS auctions, if weight is greater than zero then the scoring type
3074   -- should not be null or NONE
3075 
3076   WHEN
3077   (
3078     sel_weight IS NOT NULL AND
3079     sel_weight > 0 AND
3080     p_bid_ranking = 'MULTI_ATTRIBUTE_SCORING' AND
3081     NVL (sel_scoring_type, 'NONE') = 'NONE'
3082   )
3083   THEN INTO PON_INTERFACE_ERRORS
3084   (
3085     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
3086     AUCTION_HEADER_ID, LINE_NUMBER, ATTRIBUTE_NAME, EXPIRATION_DATE, TOKEN1_NAME,
3087     TOKEN1_VALUE, TOKEN2_NAME, TOKEN2_VALUE, CREATED_BY, CREATION_DATE,
3088     LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
3089   )
3090   VALUES
3091   (
3092     g_interface_type, --INTERFACE_TYPE
3093     'PON_AUC_SCORE_WLINE_REQUIRED', -- ERROR_MESSAGE_NAME
3094     p_request_id, -- REQUEST_ID
3095     p_batch_id, --BATCH_ID
3096     g_auction_attrs_type, -- ENTITY_TYPE
3097     p_auction_header_id, -- AUCTION_HEADER_ID
3098     sel_line_number, -- LINE_NUMBER
3099     sel_attribute_name, -- ATTRIBUTE_NAME
3100     p_expiration_date, -- EXPIRATION_DATE
3101     'LINE', -- TOKEN1_NAME
3102     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
3103     'ATTRIBUTE', -- TOKEN2_NAME
3104     sel_attribute_name, -- TOKEN2_VALUE
3105     p_user_id, -- CREATED_BY
3106     sysdate, -- CREATION_DATE
3107     p_user_id, -- LAST_UPDATED_BY
3108     sysdate, -- LAST_UPDATE_DATE
3109     p_login_id -- LAST_UPDATE_LOGIN
3110   )
3111 
3112   -- For MAS auctions, if weight is zero or null and the scoring type
3113   -- is not null and not none then error
3114 
3115   WHEN
3116   (
3117     p_bid_ranking = 'MULTI_ATTRIBUTE_SCORING' AND
3118     (sel_weight IS NULL OR sel_weight <= 0) AND
3119     NVL (sel_scoring_type, 'NONE') <> 'NONE'
3120   )
3121   THEN INTO PON_INTERFACE_ERRORS
3122   (
3123     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
3124     AUCTION_HEADER_ID, LINE_NUMBER, ATTRIBUTE_NAME, EXPIRATION_DATE, TOKEN1_NAME,
3125     TOKEN1_VALUE, TOKEN2_NAME, TOKEN2_VALUE, CREATED_BY, CREATION_DATE,
3126     LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
3127   )
3128   VALUES
3129   (
3130     g_interface_type, --INTERFACE_TYPE
3131     'PON_AUC_WEIGHT_LINE_REQUIRED', -- ERROR_MESSAGE_NAME
3132     p_request_id, -- REQUEST_ID
3133     p_batch_id, --BATCH_ID
3134     g_auction_attrs_type, -- ENTITY_TYPE
3135     p_auction_header_id, -- AUCTION_HEADER_ID
3136     sel_line_number, -- LINE_NUMBER
3137     sel_attribute_name, -- ATTRIBUTE_NAME
3138     p_expiration_date, -- EXPIRATION_DATE
3139     'LINE', -- TOKEN1_NAME
3140     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
3141     'ATTRIBUTE', -- TOKEN2_NAME
3142     sel_attribute_name, -- TOKEN2_VALUE
3143     p_user_id, -- CREATED_BY
3144     sysdate, -- CREATION_DATE
3145     p_user_id, -- LAST_UPDATED_BY
3146     sysdate, -- LAST_UPDATE_DATE
3147     p_login_id -- LAST_UPDATE_LOGIN
3148   )
3149 
3150   SELECT
3151     PAA.LINE_NUMBER sel_line_number,
3152     PAA.ATTRIBUTE_NAME sel_attribute_name,
3153     PAA.SEQUENCE_NUMBER sel_sequence_number,
3154     PAA.VALUE sel_value,
3155     PAA.DISPLAY_TARGET_FLAG sel_display_target_flag,
3156     PAA.DISPLAY_ONLY_FLAG sel_display_only_flag,
3157     PAA.WEIGHT sel_weight,
3158     TRUNC (PAA.WEIGHT) sel_trunc_weight,
3159     PAA.ATTR_MAX_SCORE sel_attr_max_score,
3160     TRUNC (PAA.ATTR_MAX_SCORE) sel_trunc_attr_max_score,
3161     PAIP.DOCUMENT_DISP_LINE_NUMBER sel_document_disp_line_number,
3162     PAA.SCORING_TYPE sel_scoring_type,
3163     PAIP.LINE_NUM_DISPLAY sel_clm_line_num_display
3164   FROM
3165     PON_AUCTION_ATTRIBUTES PAA,
3166     PON_AUCTION_ITEM_PRICES_ALL PAIP
3167   WHERE
3168     PAIP.AUCTION_HEADER_ID = p_auction_header_id AND
3169     PAA.AUCTION_HEADER_ID = p_auction_header_id AND
3170     PAIP.LINE_NUMBER = PAA.LINE_NUMBER AND
3171     PAA.ATTR_LEVEL = 'LINE';
3172 
3173   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
3174     FND_LOG.string(log_level => FND_LOG.level_procedure,
3175       module  =>  g_module_prefix || 'VAL_ATTRIBUTES',
3176       message  => 'Leaving procedure'
3177                   || ', p_auction_header_id = ' || p_auction_header_id);
3178   END IF; --}
3179 END VAL_ATTRIBUTES;
3180 
3181 /*
3182  * Two attributes within a single line cannot have the same name
3183  * Since we have used GroupBy to determine duplicates this cannot
3184  * be merged with the VAL_ATTRIBUTES
3185  */
3186 
3187 PROCEDURE VAL_ATTR_NAME_UNIQUE(
3188   p_auction_header_id IN NUMBER,
3189   p_request_id IN NUMBER,
3190   p_expiration_date IN DATE,
3191   p_user_id IN NUMBER,
3192   p_login_id IN NUMBER,
3193   p_batch_id IN NUMBER
3194   ) IS
3195 BEGIN
3196   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
3197     FND_LOG.string(log_level => FND_LOG.level_procedure,
3198       module  =>  g_module_prefix || 'VAL_ATTR_NAME_UNIQUE',
3199       message  => 'Entering PON_NEGOTIATION_HELPER_PVT.VAL_ATTR_NAME_UNIQUE'
3200                   || ', p_auction_header_id = ' || p_auction_header_id);
3201   END IF; --}
3202 
3203   INSERT INTO PON_INTERFACE_ERRORS
3204   (
3205     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
3206     AUCTION_HEADER_ID, LINE_NUMBER, ATTRIBUTE_NAME, EXPIRATION_DATE,
3207     TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY,
3208     LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
3209   )
3210   SELECT
3211     g_interface_type, --INTERFACE_TYPE
3212     'PON_AUC_DUPLICATE_LINE_ATTRS', -- ERROR_MESSAGE_NAME
3213     p_request_id, -- REQUEST_ID
3214     p_batch_id, --BATCH_ID
3215     g_auction_attrs_type, -- ENTITY_TYPE
3216     p_auction_header_id, -- AUCTION_HEADER_ID
3217     LINE_NUMBER, -- LINE_NUMBER
3218     ATTRIBUTE_NAME, -- ATTRIBUTE_NAME
3219     p_expiration_date, -- EXPIRATION_DATE
3220     'ATTRIBUTE_NAME', -- TOKEN1_NAME
3221     ATTRIBUTE_NAME, -- TOKEN1_VALUE
3222     p_user_id, -- CREATED_BY
3223     sysdate, -- CREATION_DATE
3224     p_user_id, -- LAST_UPDATED_BY
3225     sysdate, -- LAST_UPDATE_DATE
3226     p_login_id -- LAST_UPDATE_LOGIN
3227   FROM
3228     PON_AUCTION_ATTRIBUTES
3229   WHERE
3230     ATTR_LEVEL='LINE' AND
3231     AUCTION_HEADER_ID=p_auction_header_id
3232   GROUP by AUCTION_HEADER_ID, LINE_NUMBER, attribute_name
3233   HAVING count(LINE_NUMBER) > 1;
3234 
3235   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
3236     FND_LOG.string(log_level => FND_LOG.level_procedure,
3237       module  =>  g_module_prefix || 'VAL_ATTR_NAME_UNIQUE',
3238       message  => 'Returning PON_NEGOTIATION_HELPER_PVT.VAL_ATTR_NAME_UNIQUE'
3239                   || ', p_auction_header_id = ' || p_auction_header_id);
3240   END IF; --}
3241 END VAL_ATTR_NAME_UNIQUE;
3242 
3243 /*
3244  * The following validations are performed:
3245  * 1. Entered score value should be between 0 and 100
3246  * 2. Score must be a positive number
3247  */
3248 PROCEDURE VAL_ATTR_SCORES(
3249   p_auction_header_id IN NUMBER,
3250   p_request_id IN NUMBER,
3251   p_expiration_date IN DATE,
3252   p_user_id IN NUMBER,
3253   p_login_id IN NUMBER,
3254   p_batch_id IN NUMBER
3255   ) IS
3256 BEGIN
3257   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
3258     FND_LOG.string(log_level => FND_LOG.level_procedure,
3259       module  =>  g_module_prefix || 'VAL_ATTR_SCORES',
3260       message  => 'Entering PON_NEGOTIATION_HELPER_PVT.VAL_ATTR_SCORES'
3261                   || ', p_auction_header_id = ' || p_auction_header_id);
3262   END IF; --}
3263 
3264   INSERT ALL
3265 
3266   -- Entered score value should be between 0 and 100
3267 
3268   WHEN
3269   (
3270     SCORE is not null AND
3271     sel_trunc_score NOT BETWEEN 0 and 100
3272   )
3273   THEN INTO PON_INTERFACE_ERRORS
3274   (
3275     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID,
3276     ENTITY_TYPE, AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE,
3277     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
3278   )
3279   VALUES
3280   (
3281     g_interface_type, --INTERFACE_TYPE
3282     'PON_AUC_INVALID_SCORE', -- ERROR_MESSAGE_NAME
3283     p_request_id, -- REQUEST_ID
3284     p_batch_id, --BATCH_ID
3285     g_auction_attrs_type, -- ENTITY_TYPE
3286     p_auction_header_id, -- AUCTION_HEADER_ID
3287     LINE_NUMBER, -- LINE_NUMBER
3288     p_expiration_date, -- EXPIRATION_DATE
3289     p_user_id, -- CREATED_BY
3290     sysdate, -- CREATION_DATE
3291     p_user_id, -- LAST_UPDATED_BY
3292     sysdate, -- LAST_UPDATE_DATE
3293     p_login_id -- LAST_UPDATE_LOGIN
3294   )
3295 
3296   -- SCORE MUST BE A POSITIVE NUMBER
3297 
3298   WHEN
3299   (
3300     SCORE is not null AND
3301     (SCORE - sel_trunc_score <>0)
3302   )
3303   THEN INTO PON_INTERFACE_ERRORS
3304   (
3305     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
3306     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, CREATED_BY,
3307     CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
3308   )
3309   VALUES
3310   (
3311     g_interface_type, --INTERFACE_TYPE
3312     'PON_AUCTS_MUST_BE_A_INT_M', -- ERROR_MESSAGE_NAME
3313     p_request_id, -- REQUEST_ID
3314     p_batch_id, --BATCH_ID
3315     g_auction_attrs_type, -- ENTITY_TYPE
3316     p_auction_header_id, -- AUCTION_HEADER_ID
3317     LINE_NUMBER, -- LINE_NUMBER
3318     p_expiration_date, -- EXPIRATION_DATE
3319     p_user_id, -- CREATED_BY
3320     sysdate, -- CREATION_DATE
3321     p_user_id, -- LAST_UPDATED_BY
3322     sysdate, -- LAST_UPDATE_DATE
3323     p_login_id -- LAST_UPDATE_LOGIN
3324   )
3325 
3326   SELECT
3327     SCORE,
3328     LINE_NUMBER,
3329     TRUNC (SCORE) sel_trunc_score
3330   FROM
3331     PON_ATTRIBUTE_SCORES
3332   WHERE
3333     AUCTION_HEADER_ID = p_auction_header_id AND
3334     LINE_NUMBER > 0;
3335 
3336   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
3337     FND_LOG.string(log_level => FND_LOG.level_procedure,
3338       module  =>  g_module_prefix || 'VAL_ATTR_SCORES',
3339       message  => 'Returning PON_NEGOTIATION_HELPER_PVT.VAL_ATTR_SCORES'
3340                   || ', p_auction_header_id = ' || p_auction_header_id);
3341   END IF; --}
3342 END VAL_ATTR_SCORES;
3343 
3344 /*
3345  * The following validations are performed
3346  * 1. Price break effective start date should be before effective end date
3347  * 2. Ship to locaton and ship to org should be proper. The ship_to_location and ship_to_org if both are entered then either
3348      a.The Ship_to_location should belong to the Ship_to_organization
3349      b.The Ship_to_location should be a global location (inventory_organization_id is null)
3350  * 3. Price break should not be empty. Only price should not be entered
3351  * 4. Quantity should not be empty or negative
3352  * 5. The price break price should be positive
3353  * 6. Effective start date after sysdate or close date
3354  * 7. Effective end date after sysdate or close date
3355  * 8. Response type if entered should have price differentials
3356  * 9. If the response type is null then there should be no price differentials
3357  * 10. Precision of the price entered should be less than the auction currency precision
3358  * 11. Effective start date should be after po start date
3359  * 12. Effective end date should be after po start date
3360  * 13. The effective start date should be before po end date if both are entered
3361  * 14. Effective end date should be before the po end date
3362  */
3363 PROCEDURE VAL_PRICE_BREAKS (
3364   p_auction_header_id IN NUMBER,
3365   p_close_bidding_date IN DATE,
3366   p_request_id IN NUMBER,
3367   p_expiration_date IN DATE,
3368   p_user_id IN NUMBER,
3369   p_login_id IN NUMBER,
3370   p_batch_id IN NUMBER,
3371   p_precision IN NUMBER,
3372   p_po_start_date IN DATE,
3373   p_po_end_date IN DATE
3374 ) IS
3375 
3376 l_temp NUMBER;
3377 BEGIN
3378 
3379   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
3380     FND_LOG.string(log_level => FND_LOG.level_procedure,
3381       module  =>  g_module_prefix || 'VAL_PRICE_BREAKS',
3382       message  => 'Entering Procedure' || ', p_auction_header_id = ' || p_auction_header_id);
3383   END IF; --}
3384 
3385   IF (p_precision <> g_precision_any) THEN
3386     l_temp := power (10, p_precision);
3387   ELSE
3388     l_temp := 0;
3389   END IF;
3390 
3391   INSERT ALL
3392 
3393   -- PRICE BREAK EFFECTIVE START DATE SHOULD BE BEFORE EFFECTIVE END DATE
3394 
3395   WHEN
3396   (
3397     sel_effective_start_date IS NOT NULL AND
3398     sel_effective_end_date IS NOT NULL AND
3399     sel_effective_end_date < sel_effective_start_date
3400   )
3401   THEN INTO PON_INTERFACE_ERRORS
3402   (
3403     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
3404     AUCTION_HEADER_ID, LINE_NUMBER, SHIPMENT_NUMBER, EXPIRATION_DATE, TOKEN1_NAME,
3405     TOKEN1_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE,
3406     LAST_UPDATE_LOGIN
3407   )
3408   VALUES
3409   (
3410     g_interface_type, --INTERFACE_TYPE
3411     'PON_AUCTS_EFFC_END_BEF_START', -- ERROR_MESSAGE_NAME
3412     p_request_id, -- REQUEST_ID
3413     p_batch_id, --BATCH_ID
3414     g_auction_pbs_type, -- ENTITY_TYPE
3415     p_auction_header_id, -- AUCTION_HEADER_ID
3416     sel_line_number, -- LINE_NUMBER
3417     sel_shipment_number, -- SHIPMENT_NUMBER
3418     p_expiration_date, -- EXPIRATION_DATE
3419     'LINENUM', -- TOKEN1_NAME
3420     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
3421     p_user_id, -- CREATED_BY
3422     sysdate, -- CREATION_DATE
3423     p_user_id, -- LAST_UPDATED_BY
3424     sysdate, -- LAST_UPDATE_DATE
3425     p_login_id -- LAST_UPDATE_LOGIN
3426   )
3427 
3428   -- SHIP TO LOCATON AND SHIP TO ORG SHOULD BE PROPER
3429   -- THE SHIP_TO_LOCATION AND SHIP_TO_ORG IF BOTH ARE ENTERED THEN EITHER
3430   -- 1. The Ship_to_location should belong to the Ship_to_organization
3431   -- 2. The Ship_to_location should be a global location (inventory_organization_id is null)
3432 
3433   WHEN
3434   (
3435     sel_ship_to_organization_id IS NOT NULL AND
3436     sel_ship_to_location_id IS NOT NULL AND
3437     NOT EXISTS (SELECT l.INVENTORY_ORGANIZATION_ID
3438         FROM HR_LOCATIONS_ALL L
3439         WHERE SYSDATE < NVL(L.INACTIVE_DATE, SYSDATE + 1) AND
3440         NVL(L.SHIP_TO_SITE_FLAG,'N') = 'Y' AND
3441         L.LOCATION_ID = sel_ship_to_location_id AND
3442         nvl (L.INVENTORY_ORGANIZATION_ID, sel_ship_to_organization_id) = sel_ship_to_organization_id)
3443   )
3444   THEN INTO PON_INTERFACE_ERRORS
3445   (
3446     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID, LINE_NUMBER,
3447     SHIPMENT_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY,
3448     LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
3449   )
3450   VALUES
3451   (
3452     g_interface_type, --INTERFACE_TYPE
3453     'PON_AUC_SHIP_TO_MATCHING_ERR', -- ERROR_MESSAGE_NAME
3454     p_request_id, -- REQUEST_ID
3455     p_batch_id, --BATCH_ID
3456     g_auction_pbs_type, -- ENTITY_TYPE
3457     p_auction_header_id, -- AUCTION_HEADER_ID
3458     sel_line_number, -- LINE_NUMBER
3459     sel_shipment_number, -- SHIPMENT_NUMBER
3460     p_expiration_date, -- EXPIRATION_DATE
3461     'LINENUM', -- TOKEN1_NAME
3462     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
3463     p_user_id, -- CREATED_BY
3464     sysdate, -- CREATION_DATE
3465     p_user_id, -- LAST_UPDATED_BY
3466     sysdate, -- LAST_UPDATE_DATE
3467     p_login_id -- LAST_UPDATE_LOGIN
3468   )
3469 
3470   -- PRICE BREAK SHOULD NOT BE EMPTY
3471   -- ONLY PRICE SHOULD NOT BE ENTERED
3472 
3473   WHEN
3474   (
3475     sel_ship_to_organization_id IS NULL AND
3476     sel_ship_to_location_id IS NULL AND
3477     sel_effective_start_date IS NULL AND
3478     sel_effective_end_date IS NULL AND
3479     sel_quantity IS NULL
3480   )
3481   THEN INTO PON_INTERFACE_ERRORS
3482   (
3483     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID, LINE_NUMBER,
3484     SHIPMENT_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY,
3485     LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
3486   )
3487   VALUES
3488   (
3489     g_interface_type, --INTERFACE_TYPE
3490     NVL2 (sel_price, 'PON_AUCTS_PB_PRICE_ONLY', 'PON_AUCTS_SHIPMENT_EMPTY'), -- ERROR_MESSAGE_NAME
3491     p_request_id, -- REQUEST_ID
3492     p_batch_id, --BATCH_ID
3493     g_auction_pbs_type, -- ENTITY_TYPE
3494     p_auction_header_id, -- AUCTION_HEADER_ID
3495     sel_line_number, -- LINE_NUMBER
3496     sel_shipment_number, -- SHIPMENT_NUMBER
3497     p_expiration_date, -- EXPIRATION_DATE
3498     'LINENUM', -- TOKEN1_NAME
3499     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
3500     p_user_id, -- CREATED_BY
3501     sysdate, -- CREATION_DATE
3502     p_user_id, -- LAST_UPDATED_BY
3503     sysdate, -- LAST_UPDATE_DATE
3504     p_login_id -- LAST_UPDATE_LOGIN
3505   )
3506 
3507   -- quantity should not be empty or negative
3508 
3509   WHEN
3510   (
3511     sel_quantity IS NOT NULL AND
3512     sel_quantity < 0 AND
3513     sel_quantity <> g_null_int
3514   )
3515   THEN INTO PON_INTERFACE_ERRORS
3516   (
3517     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID, LINE_NUMBER,
3518     SHIPMENT_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY,
3519     LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
3520   )
3521   VALUES
3522   (
3523     g_interface_type, --INTERFACE_TYPE
3524     'PON_AUCTS_PB_QUANTITY_POSITIVE', -- ERROR_MESSAGE_NAME
3525     p_request_id, -- REQUEST_ID
3526     p_batch_id, --BATCH_ID
3527     g_auction_pbs_type, -- ENTITY_TYPE
3528     p_auction_header_id, -- AUCTION_HEADER_ID
3529     sel_line_number, -- LINE_NUMBER
3530     sel_shipment_number, -- SHIPMENT_NUMBER
3531     p_expiration_date, -- EXPIRATION_DATE
3532     'LINENUM', -- TOKEN1_NAME
3533     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
3534     p_user_id, -- CREATED_BY
3535     sysdate, -- CREATION_DATE
3536     p_user_id, -- LAST_UPDATED_BY
3537     sysdate, -- LAST_UPDATE_DATE
3538     p_login_id -- LAST_UPDATE_LOGIN
3539   )
3540 
3541   -- the price break price should be positive
3542 
3543   WHEN
3544   (
3545     sel_price < 0
3546   )
3547   THEN INTO PON_INTERFACE_ERRORS
3548   (
3549     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID, LINE_NUMBER,
3550     SHIPMENT_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY,
3551     LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
3552   )
3553   VALUES
3554   (
3555     g_interface_type, --INTERFACE_TYPE
3556     'PON_AUCTS_PB_RPICE_POSITIVE', -- ERROR_MESSAGE_NAME
3557     p_request_id, -- REQUEST_ID
3558     p_batch_id, --BATCH_ID
3559     g_auction_pbs_type, -- ENTITY_TYPE
3560     p_auction_header_id, -- AUCTION_HEADER_ID
3561     sel_line_number, -- LINE_NUMBER
3562     sel_shipment_number, -- SHIPMENT_NUMBER
3563     p_expiration_date, -- EXPIRATION_DATE
3564     'LINENUM', -- TOKEN1_NAME
3565     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
3566     p_user_id, -- CREATED_BY
3567     sysdate, -- CREATION_DATE
3568     p_user_id, -- LAST_UPDATED_BY
3569     sysdate, -- LAST_UPDATE_DATE
3570     p_login_id -- LAST_UPDATE_LOGIN
3571   )
3572 
3573   --  EFFECTIVE START DATE AFTER SYSDATE OR CLOSE DATE
3574 
3575   WHEN
3576   (
3577     sel_effective_start_date IS NOT NULL AND
3578     sel_effective_start_date <= NVL (p_close_bidding_date, SYSDATE)
3579   )
3580   THEN INTO PON_INTERFACE_ERRORS
3581   (
3582     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID, LINE_NUMBER,
3583     SHIPMENT_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY,
3584     LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
3585   )
3586   VALUES
3587   (
3588     g_interface_type, --INTERFACE_TYPE
3589     NVL2 (p_close_bidding_date, 'PON_AUC_EFFC_FROM_BEF_CLOSE', 'PON_AUC_EFFC_FROM_BEF_TODAY'), -- ERROR_MESSAGE_NAME
3590     p_request_id, -- REQUEST_ID
3591     p_batch_id, -- BATCH_ID
3592     g_auction_pbs_type, -- ENTITY_TYPE
3593     p_auction_header_id, -- AUCTION_HEADER_ID
3594     sel_line_number, -- LINE_NUMBER
3595     sel_shipment_number, -- SHIPMENT_NUMBER
3596     p_expiration_date, -- EXPIRATION_DATE
3597     'LINENUM', -- TOKEN1_NAME
3598     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
3599     p_user_id, -- CREATED_BY
3600     sysdate, -- CREATION_DATE
3601     p_user_id, -- LAST_UPDATED_BY
3602     sysdate, -- LAST_UPDATE_DATE
3603     p_login_id -- LAST_UPDATE_LOGIN
3604   )
3605 
3606   --  EFFECTIVE END DATE AFTER SYSDATE OR CLOSE DATE
3607 
3608   WHEN
3609   (
3610     sel_effective_end_date IS NOT NULL AND
3611     sel_effective_end_date <= NVL (p_close_bidding_date, SYSDATE)
3612   )
3613   THEN INTO PON_INTERFACE_ERRORS
3614   (
3615     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID, LINE_NUMBER,
3616     SHIPMENT_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY,
3617     LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
3618   )
3619   VALUES
3620   (
3621     g_interface_type, --INTERFACE_TYPE
3622     NVL2 (p_close_bidding_date, 'PON_AUC_EFFC_TO_BEFORE_CLOSE',
3623       'PON_AUC_EFFC_TO_BEFORE_TODAY'), -- ERROR_MESSAGE_NAME
3624     p_request_id, -- REQUEST_ID
3625     p_batch_id, --BATCH_ID
3626     g_auction_pbs_type, -- ENTITY_TYPE
3627     p_auction_header_id, -- AUCTION_HEADER_ID
3628     sel_line_number, -- LINE_NUMBER
3629     sel_shipment_number, -- SHIPMENT_NUMBER
3630     p_expiration_date, -- EXPIRATION_DATE
3631     'LINENUM', -- TOKEN1_NAME
3632     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number),-- TOKEN1_VALUE
3633     p_user_id, -- CREATED_BY
3634     sysdate, -- CREATION_DATE
3635     p_user_id, -- LAST_UPDATED_BY
3636     sysdate, -- LAST_UPDATE_DATE
3637     p_login_id -- LAST_UPDATE_LOGIN
3638   )
3639 
3640   -- RESPONSE TYPE if entered should have price differentials
3641 
3642   WHEN
3643   (
3644     sel_differential_response_type IS NOT NULL AND
3645     NOT EXISTS (
3646       SELECT 1
3647       FROM PON_PRICE_DIFFERENTIALS PPD
3648       WHERE
3649       PPD.AUCTION_HEADER_ID = p_auction_header_id AND
3650       PPD.LINE_NUMBER = sel_line_number AND
3651       PPD.SHIPMENT_NUMBER = sel_shipment_number
3652     )
3653   )
3654   THEN INTO PON_INTERFACE_ERRORS
3655   (
3656     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID, LINE_NUMBER,
3657     SHIPMENT_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY,
3658     LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
3659   )
3660   VALUES
3661   (
3662     g_interface_type, --INTERFACE_TYPE
3663     'PON_PRICEDIFF_REQD_FOR_SHIP', -- ERROR_MESSAGE_NAME
3664     p_request_id, -- REQUEST_ID
3665     p_batch_id, --BATCH_ID
3666     g_auction_pbs_type, -- ENTITY_TYPE
3667     p_auction_header_id, -- AUCTION_HEADER_ID
3668     sel_line_number, -- LINE_NUMBER
3669     sel_shipment_number, -- SHIPMENT_NUMBER
3670     p_expiration_date, -- EXPIRATION_DATE
3671     'LINENUM', -- TOKEN1_NAME
3672     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
3673     p_user_id, -- CREATED_BY
3674     sysdate, -- CREATION_DATE
3675     p_user_id, -- LAST_UPDATED_BY
3676     sysdate, -- LAST_UPDATE_DATE
3677     p_login_id -- LAST_UPDATE_LOGIN
3678   )
3679 
3680   -- RESPONSE TYPE: If the response type is null then there should be no price differentials
3681 
3682   WHEN
3683   (
3684     sel_differential_response_type IS NULL AND
3685     EXISTS (
3686       SELECT 1
3687       FROM PON_PRICE_DIFFERENTIALS PPD
3688       WHERE
3689       PPD.AUCTION_HEADER_ID = p_auction_header_id AND
3690       PPD.LINE_NUMBER = sel_line_number AND
3691       PPD.SHIPMENT_NUMBER = sel_shipment_number
3692     )
3693   )
3694   THEN INTO PON_INTERFACE_ERRORS
3695   (
3696     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID, LINE_NUMBER,
3697     SHIPMENT_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY,
3698     LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
3699   )
3700   VALUES
3701   (
3702     g_interface_type, --INTERFACE_TYPE
3703     'PON_SET_DIFFER_RESPONSE_TYPE', -- ERROR_MESSAGE_NAME
3704     p_request_id, -- REQUEST_ID
3705     p_batch_id, -- BATCH_ID
3706     g_auction_pbs_type, -- ENTITY_TYPE
3707     p_auction_header_id, -- AUCTION_HEADER_ID
3708     sel_line_number, -- LINE_NUMBER
3709     sel_shipment_number, -- SHIPMENT_NUMBER
3710     p_expiration_date, -- EXPIRATION_DATE
3711     'LINENUM', -- TOKEN1_NAME
3712     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
3713     p_user_id, -- CREATED_BY
3714     sysdate, -- CREATION_DATE
3715     p_user_id, -- LAST_UPDATED_BY
3716     sysdate, -- LAST_UPDATE_DATE
3717     p_login_id -- LAST_UPDATE_LOGIN
3718   )
3719 
3720   -- Precision of the price entered should be less than the auction currency precision
3721 
3722   WHEN
3723   (
3724     sel_price >= 0 AND
3725     ABS (sel_price  * l_temp - TRUNC (sel_price * l_temp)) > 0
3726   )
3727   THEN INTO PON_INTERFACE_ERRORS
3728   (
3729     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
3730     AUCTION_HEADER_ID, LINE_NUMBER, SHIPMENT_NUMBER, EXPIRATION_DATE, TOKEN1_NAME,
3731     TOKEN1_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
3732   )
3733   VALUES
3734   (
3735     g_interface_type, --INTERFACE_TYPE
3736     'PON_PB_PRICE_PRECISION', -- ERROR_MESSAGE_NAME
3737     p_request_id, -- REQUEST_ID
3738     p_batch_id, -- BATCH_ID
3739     g_auction_pbs_type, -- ENTITY_TYPE
3740     p_auction_header_id, -- AUCTION_HEADER_ID
3741     sel_line_number, -- LINE_NUMBER
3742     sel_shipment_number, -- SHIPMENT_NUMBER
3743     p_expiration_date, -- EXPIRATION_DATE
3744     'LINENUM', -- TOKEN1_NAME
3745     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
3746     p_user_id, -- CREATED_BY
3747     sysdate, -- CREATION_DATE
3748     p_user_id, -- LAST_UPDATED_BY
3749     sysdate, -- LAST_UPDATE_DATE
3750     p_login_id -- LAST_UPDATE_LOGIN
3751   )
3752 
3753   -- EFFECTIVE START DATE SHOULD BE AFTER PO START DATE
3754 
3755   WHEN
3756   (
3757     p_po_start_date IS NOT NULL AND
3758     sel_effective_start_date IS NOT NULL AND
3759     sel_effective_start_date < p_po_start_date
3760   )
3761   THEN INTO PON_INTERFACE_ERRORS
3762   (
3763     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, batch_id, ENTITY_TYPE,AUCTION_HEADER_ID, LINE_NUMBER,
3764     SHIPMENT_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY,CREATION_DATE, LAST_UPDATED_BY,
3765     LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
3766   )
3767   VALUES
3768   (
3769     g_interface_type, --INTERFACE_TYPE
3770     'PON_AUC_EFFC_FROM_BEF_NEG', -- ERROR_MESSAGE_NAME
3771     p_request_id, -- REQUEST_ID
3772     p_batch_id, -- BATCH_ID
3773     g_auction_pbs_type, -- ENTITY_TYPE
3774     p_auction_header_id, -- AUCTION_HEADER_ID
3775     sel_line_number, -- LINE_NUMBER
3776     sel_shipment_number, -- SHIPMENT_NUMBER
3777     p_expiration_date, -- EXPIRATION_DATE
3778     'LINENUM', -- TOKEN1_NAME
3779     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
3780     p_user_id, -- CREATED_BY
3781     sysdate, -- CREATION_DATE
3782     p_user_id, -- LAST_UPDATED_BY
3783     sysdate, -- LAST_UPDATE_DATE
3784     p_login_id -- LAST_UPDATE_LOGIN
3785   )
3786 
3787   -- EFFECTIVE END DATE SHOULD BE AFTER PO START DATE
3788 
3789   WHEN
3790   (
3791     p_po_start_date IS NOT NULL AND
3792     sel_effective_end_date IS NOT NULL AND
3793     sel_effective_end_date < p_po_start_date
3794   )
3795   THEN INTO PON_INTERFACE_ERRORS
3796   (
3797     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, batch_id, ENTITY_TYPE,AUCTION_HEADER_ID, LINE_NUMBER,
3798     SHIPMENT_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY,CREATION_DATE, LAST_UPDATED_BY,
3799     LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
3800   )
3801   VALUES
3802   (
3803     g_interface_type, --INTERFACE_TYPE
3804     'PON_AUC_EFFC_TO_BEFORE_NEG', -- ERROR_MESSAGE_NAME
3805     p_request_id, -- REQUEST_ID
3806     p_batch_id, -- BATCH_ID
3807     g_auction_pbs_type, -- ENTITY_TYPE
3808     p_auction_header_id, -- AUCTION_HEADER_ID
3809     sel_line_number, -- LINE_NUMBER
3810     sel_shipment_number, -- SHIPMENT_NUMBER
3811     p_expiration_date, -- EXPIRATION_DATE
3812     'LINENUM', -- TOKEN1_NAME
3813     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
3814     p_user_id, -- CREATED_BY
3815     sysdate, -- CREATION_DATE
3816     p_user_id, -- LAST_UPDATED_BY
3817     sysdate, -- LAST_UPDATE_DATE
3818     p_login_id -- LAST_UPDATE_LOGIN
3819   )
3820 
3821   -- the effective start date should be before po end date if both are entered
3822 
3823   WHEN
3824   (
3825     p_po_end_date IS NOT NULL AND
3826     sel_effective_start_date IS NOT NULL AND
3827     sel_effective_start_date > p_po_end_date
3828   )
3829   THEN INTO PON_INTERFACE_ERRORS
3830   (
3831     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, batch_id, ENTITY_TYPE, AUCTION_HEADER_ID, LINE_NUMBER,
3832     SHIPMENT_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY,
3833     LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
3834   )
3835   VALUES
3836   (
3837     g_interface_type, --INTERFACE_TYPE
3838     'PON_AUC_EFFC_FROM_AFT_NEG', -- ERROR_MESSAGE_NAME
3839     p_request_id, -- REQUEST_ID
3840     p_batch_id, -- BATCH_ID
3841     g_auction_pbs_type, -- ENTITY_TYPE
3842     p_auction_header_id, -- AUCTION_HEADER_ID
3843     sel_line_number, -- LINE_NUMBER
3844     sel_shipment_number, -- SHIPMENT_NUMBER
3845     p_expiration_date, -- EXPIRATION_DATE
3846     'LINENUM', -- TOKEN1_NAME
3847     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
3848     p_user_id, -- CREATED_BY
3849     sysdate, -- CREATION_DATE
3850     p_user_id, -- LAST_UPDATED_BY
3851     sysdate, -- LAST_UPDATE_DATE
3852     p_login_id -- LAST_UPDATE_LOGIN
3853   )
3854 
3855   -- effective end date should be before the po end date
3856 
3857   WHEN
3858   (
3859     p_po_end_date IS NOT NULL AND
3860     sel_effective_end_date IS NOT NULL AND
3861     sel_effective_end_date > p_po_end_date
3862   )
3863   THEN INTO PON_INTERFACE_ERRORS
3864   (
3865     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, batch_id, ENTITY_TYPE, AUCTION_HEADER_ID, LINE_NUMBER,
3866     SHIPMENT_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY,
3867     LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
3868   )
3869   VALUES
3870   (
3871     g_interface_type, --INTERFACE_TYPE
3872     'PON_AUC_EFFC_TO_AFT_NEG', -- ERROR_MESSAGE_NAME
3873     p_request_id, -- REQUEST_ID
3874     p_batch_id, -- BATCH_ID
3875     g_auction_pbs_type, -- ENTITY_TYPE
3876     p_auction_header_id, -- AUCTION_HEADER_ID
3877     sel_line_number, -- LINE_NUMBER
3878     sel_shipment_number, -- SHIPMENT_NUMBER
3879     p_expiration_date, -- EXPIRATION_DATE
3880     'LINENUM', -- TOKEN1_NAME
3881     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
3882     p_user_id, -- CREATED_BY
3883     sysdate, -- CREATION_DATE
3884     p_user_id, -- LAST_UPDATED_BY
3885     sysdate, -- LAST_UPDATE_DATE
3886     p_login_id -- LAST_UPDATE_LOGIN
3887   )
3888 
3889   SELECT
3890     PAIP.LINE_NUMBER sel_line_number,
3891     PAIP.DOCUMENT_DISP_LINE_NUMBER sel_document_disp_line_number,
3892     PASA.SHIPMENT_NUMBER sel_shipment_number,
3893     PASA.PRICE sel_price,
3894     PASA.QUANTITY sel_quantity,
3895     PASA.EFFECTIVE_END_DATE sel_effective_end_date,
3896     PASA.EFFECTIVE_START_DATE sel_effective_start_date,
3897     PASA.SHIP_TO_LOCATION_ID sel_ship_to_location_id,
3898     PASA.SHIP_TO_ORGANIZATION_ID sel_ship_to_organization_id,
3899     PASA.DIFFERENTIAL_RESPONSE_TYPE sel_differential_response_type,
3900     PAIP.LINE_NUM_DISPLAY sel_clm_line_num_display
3901   FROM
3902     PON_AUCTION_ITEM_PRICES_ALL PAIP,
3903     PON_AUCTION_SHIPMENTS_ALL PASA
3904   WHERE
3905     PAIP.AUCTION_HEADER_ID = p_auction_header_id AND
3906     PASA.AUCTION_HEADER_ID = p_auction_header_id AND
3907     PAIP.LINE_NUMBER = PASA.LINE_NUMBER;
3908 
3909   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
3910     FND_LOG.string(log_level => FND_LOG.level_procedure,
3911       module  =>  g_module_prefix || 'VAL_PRICE_BREAKS',
3912       message  => 'Leaving procedure');
3913   END IF; --}
3914 
3915 END VAL_PRICE_BREAKS;
3916 
3917 /*
3918  * The following validations are performed
3919  * 1. Min Quantity should not be null or negative
3920  * 2. Max Quantity should not be null or negative
3921  * 3. Max quantity should be greater or equal to the min quantity
3922  * 4. The ranges of min-max quantities should not overlap across tiers for a given line
3923  * 5. The price tier price should be positive if not null
3924  * 6. Precision of the price entered should be less than the auction currency precision
3925  */
3926 PROCEDURE VAL_QTY_BASED_PRICE_TIERS (
3927   p_auction_header_id IN NUMBER,
3928   p_close_bidding_date IN DATE,
3929   p_request_id IN NUMBER,
3930   p_expiration_date IN DATE,
3931   p_user_id IN NUMBER,
3932   p_login_id IN NUMBER,
3933   p_batch_id IN NUMBER,
3934   p_precision IN NUMBER
3935 ) IS
3936 
3937 l_temp NUMBER;
3938 BEGIN
3939 
3940   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
3941     FND_LOG.string(log_level => FND_LOG.level_procedure,
3942       module  =>  g_module_prefix || 'VAL_QTY_BASED_PRICE_TIERS',
3943       message  => 'Entering Procedure' || ', p_auction_header_id = ' || p_auction_header_id);
3944   END IF; --}
3945 
3946   IF (p_precision <> g_precision_any) THEN
3947     l_temp := power (10, p_precision);
3948   ELSE
3949     l_temp := 0;
3950   END IF;
3951 
3952   INSERT ALL
3953 
3954   -- The min quantity is a required field. If the min quantity is null,
3955   -- we insert rows into the interface errors table.
3956 
3957   WHEN
3958   (
3959     sel_min_quantity IS NULL
3960     OR
3961     sel_min_quantity = g_null_int
3962   )
3963   THEN INTO PON_INTERFACE_ERRORS
3964   (
3965     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
3966     AUCTION_HEADER_ID, LINE_NUMBER, SHIPMENT_NUMBER, EXPIRATION_DATE, TOKEN1_NAME,
3967     TOKEN1_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE,
3968     LAST_UPDATE_LOGIN
3969   )
3970   VALUES
3971   (
3972     g_interface_type, --INTERFACE_TYPE
3973     'PON_AUCTS_PT_MIN_QUANTITY_REQ', -- ERROR_MESSAGE_NAME
3974     p_request_id, -- REQUEST_ID
3975     p_batch_id, --BATCH_ID
3976     g_auction_pts_type, -- ENTITY_TYPE
3977     p_auction_header_id, -- AUCTION_HEADER_ID
3978     sel_line_number, -- LINE_NUMBER
3979     sel_shipment_number, -- SHIPMENT_NUMBER
3980     p_expiration_date, -- EXPIRATION_DATE
3981     'LINENUM', -- TOKEN1_NAME
3982     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
3983     p_user_id, -- CREATED_BY
3984     sysdate, -- CREATION_DATE
3985     p_user_id, -- LAST_UPDATED_BY
3986     sysdate, -- LAST_UPDATE_DATE
3987     p_login_id -- LAST_UPDATE_LOGIN
3988   )
3989 
3990   -- The max quantity is a required field. If the min quantity is null,
3991   -- we insert rows into the interface errors table.
3992 
3993   WHEN
3994   (
3995     sel_max_quantity IS NULL
3996     OR
3997     sel_max_quantity = g_null_int
3998   )
3999   THEN INTO PON_INTERFACE_ERRORS
4000   (
4001     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID, LINE_NUMBER,
4002     SHIPMENT_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY,
4003     LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
4004   )
4005   VALUES
4006   (
4007     g_interface_type, --INTERFACE_TYPE
4008     'PON_AUCTS_PT_MAX_QUANTITY_REQ', -- ERROR_MESSAGE_NAME
4009     p_request_id, -- REQUEST_ID
4010     p_batch_id, --BATCH_ID
4011     g_auction_pts_type, -- ENTITY_TYPE
4012     p_auction_header_id, -- AUCTION_HEADER_ID
4013     sel_line_number, -- LINE_NUMBER
4014     sel_shipment_number, -- SHIPMENT_NUMBER
4015     p_expiration_date, -- EXPIRATION_DATE
4016     'LINENUM', -- TOKEN1_NAME
4017     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
4018     p_user_id, -- CREATED_BY
4019     sysdate, -- CREATION_DATE
4020     p_user_id, -- LAST_UPDATED_BY
4021     sysdate, -- LAST_UPDATE_DATE
4022     p_login_id -- LAST_UPDATE_LOGIN
4023   )
4024 
4025   -- The min quantity should be a positive number. i.e. strictly greater than zero.
4026 
4027   WHEN
4028   (
4029     (sel_min_quantity IS NOT NULL AND
4030     sel_min_quantity <= 0 AND
4031     sel_min_quantity <> g_null_int)
4032   )
4033   THEN INTO PON_INTERFACE_ERRORS
4034   (
4035     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID, LINE_NUMBER,
4036     SHIPMENT_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY,
4037     LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
4038   )
4039   VALUES
4040   (
4041     g_interface_type, --INTERFACE_TYPE
4042     'PON_AUCTS_PT_QUANTITY_POSITIVE', -- ERROR_MESSAGE_NAME
4043     p_request_id, -- REQUEST_ID
4044     p_batch_id, --BATCH_ID
4045     g_auction_pts_type, -- ENTITY_TYPE
4046     p_auction_header_id, -- AUCTION_HEADER_ID
4047     sel_line_number, -- LINE_NUMBER
4048     sel_shipment_number, -- SHIPMENT_NUMBER
4049     p_expiration_date, -- EXPIRATION_DATE
4050     'LINENUM', -- TOKEN1_NAME
4051     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
4052     p_user_id, -- CREATED_BY
4053     sysdate, -- CREATION_DATE
4054     p_user_id, -- LAST_UPDATED_BY
4055     sysdate, -- LAST_UPDATE_DATE
4056     p_login_id -- LAST_UPDATE_LOGIN
4057   )
4058 
4059   -- The max quantity should be a positive number. i.e. strictly greater than zero.
4060 
4061   WHEN
4062   (
4063     (sel_max_quantity IS NOT NULL AND
4064     sel_max_quantity <= 0 AND
4065     sel_max_quantity <> g_null_int)
4066   )
4067   THEN INTO PON_INTERFACE_ERRORS
4068   (
4069     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID, LINE_NUMBER,
4070     SHIPMENT_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY,
4071     LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
4072   )
4073   VALUES
4074   (
4075     g_interface_type, --INTERFACE_TYPE
4076     'PON_AUCTS_PT_QUANTITY_POSITIVE', -- ERROR_MESSAGE_NAME
4077     p_request_id, -- REQUEST_ID
4078     p_batch_id, --BATCH_ID
4079     g_auction_pts_type, -- ENTITY_TYPE
4080     p_auction_header_id, -- AUCTION_HEADER_ID
4081     sel_line_number, -- LINE_NUMBER
4082     sel_shipment_number, -- SHIPMENT_NUMBER
4083     p_expiration_date, -- EXPIRATION_DATE
4084     'LINENUM', -- TOKEN1_NAME
4085     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
4086     p_user_id, -- CREATED_BY
4087     sysdate, -- CREATION_DATE
4088     p_user_id, -- LAST_UPDATED_BY
4089     sysdate, -- LAST_UPDATE_DATE
4090     p_login_id -- LAST_UPDATE_LOGIN
4091   )
4092   -- max quantity should be greater or equal to the min quantity. i.e if min quantity should not
4093   -- be greater than max quantity
4094 
4095   WHEN
4096   (
4097     sel_min_quantity > sel_max_quantity
4098   )
4099   THEN INTO PON_INTERFACE_ERRORS
4100   (
4101     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID, LINE_NUMBER,
4102     SHIPMENT_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY,
4103     LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
4104   )
4105   VALUES
4106   (
4107     g_interface_type, --INTERFACE_TYPE
4108     'PON_QT_MAX_MIN_QTY_ERR', -- ERROR_MESSAGE_NAME
4109     p_request_id, -- REQUEST_ID
4110     p_batch_id, --BATCH_ID
4111     g_auction_pts_type, -- ENTITY_TYPE
4112     p_auction_header_id, -- AUCTION_HEADER_ID
4113     sel_line_number, -- LINE_NUMBER
4114     sel_shipment_number, -- SHIPMENT_NUMBER
4115     p_expiration_date, -- EXPIRATION_DATE
4116     'LINENUM', -- TOKEN1_NAME
4117     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
4118     p_user_id, -- CREATED_BY
4119     sysdate, -- CREATION_DATE
4120     p_user_id, -- LAST_UPDATED_BY
4121     sysdate, -- LAST_UPDATE_DATE
4122     p_login_id -- LAST_UPDATE_LOGIN
4123   )
4124 
4125   -- the price tier price should be positive( i.e. if it is not null then it should be positive)
4126 
4127   WHEN
4128   (
4129     sel_price <> g_null_int
4130     AND
4131     sel_price <= 0
4132   )
4133   THEN INTO PON_INTERFACE_ERRORS
4134   (
4135     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID, LINE_NUMBER,
4136     SHIPMENT_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY,
4137     LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
4138   )
4139   VALUES
4140   (
4141     g_interface_type, --INTERFACE_TYPE
4142     'PON_AUCTS_QT_PRICE_POSITIVE', -- ERROR_MESSAGE_NAME
4143     p_request_id, -- REQUEST_ID
4144     p_batch_id, --BATCH_ID
4145     g_auction_pts_type, -- ENTITY_TYPE
4146     p_auction_header_id, -- AUCTION_HEADER_ID
4147     sel_line_number, -- LINE_NUMBER
4148     sel_shipment_number, -- SHIPMENT_NUMBER
4149     p_expiration_date, -- EXPIRATION_DATE
4150     'LINENUM', -- TOKEN1_NAME
4151     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
4152     p_user_id, -- CREATED_BY
4153     sysdate, -- CREATION_DATE
4154     p_user_id, -- LAST_UPDATED_BY
4155     sysdate, -- LAST_UPDATE_DATE
4156     p_login_id -- LAST_UPDATE_LOGIN
4157   )
4158 
4159   -- Precision of the price entered should be less than the auction currency precision
4160 
4161   WHEN
4162   (
4163     sel_price > 0 AND
4164     ABS (sel_price  * l_temp - TRUNC (sel_price * l_temp)) > 0
4165   )
4166   THEN INTO PON_INTERFACE_ERRORS
4167   (
4168     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
4169     AUCTION_HEADER_ID, LINE_NUMBER, SHIPMENT_NUMBER, EXPIRATION_DATE, TOKEN1_NAME,
4170     TOKEN1_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
4171   )
4172   VALUES
4173   (
4174     g_interface_type, --INTERFACE_TYPE
4175     'PON_QT_PRICE_PRECISION', -- ERROR_MESSAGE_NAME
4176     p_request_id, -- REQUEST_ID
4177     p_batch_id, -- BATCH_ID
4178     g_auction_pts_type, -- ENTITY_TYPE
4179     p_auction_header_id, -- AUCTION_HEADER_ID
4180     sel_line_number, -- LINE_NUMBER
4181     sel_shipment_number, -- SHIPMENT_NUMBER
4182     p_expiration_date, -- EXPIRATION_DATE
4183     'LINENUM', -- TOKEN1_NAME
4184     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
4185     p_user_id, -- CREATED_BY
4186     sysdate, -- CREATION_DATE
4187     p_user_id, -- LAST_UPDATED_BY
4188     sysdate, -- LAST_UPDATE_DATE
4189     p_login_id -- LAST_UPDATE_LOGIN
4190   )
4191 
4192   SELECT
4193     PAIP.LINE_NUMBER sel_line_number,
4194     PAIP.DOCUMENT_DISP_LINE_NUMBER sel_document_disp_line_number,
4195     PASA.SHIPMENT_NUMBER sel_shipment_number,
4196     PASA.PRICE sel_price,
4197     PASA.QUANTITY sel_min_quantity,
4198     PASA.MAX_QUANTITY sel_max_quantity,
4199     PAIP.LINE_NUM_DISPLAY sel_clm_line_num_display
4200   FROM
4201     PON_AUCTION_ITEM_PRICES_ALL PAIP,
4202     PON_AUCTION_SHIPMENTS_ALL PASA
4203   WHERE
4204     PAIP.AUCTION_HEADER_ID = p_auction_header_id AND
4205     PASA.AUCTION_HEADER_ID = p_auction_header_id AND
4206     PAIP.LINE_NUMBER = PASA.LINE_NUMBER;
4207 
4208   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
4209     FND_LOG.string(log_level => FND_LOG.level_procedure,
4210       module  =>  g_module_prefix || 'VAL_PRICE_BREAKS',
4211       message  => 'Leaving procedure');
4212   END IF; --}
4213 
4214   -- The ranges of min-max quantities should not overlap across tiers for a given line in a negotiation
4215   -- When this validation is performed at shipments level multiple error message were thrown for one particular line
4216   -- To avoid the multiple error messages this validation has to be performed at line level rather than shipments level.
4217 
4218   INSERT INTO PON_INTERFACE_ERRORS
4219   (
4220     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID, LINE_NUMBER,
4221     EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY,
4222     LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
4223   )
4224  Select
4225     g_interface_type, --INTERFACE_TYPE
4226     'PON_AUC_OVERLAP_RANGES_QT', -- ERROR_MESSAGE_NAME
4227     p_request_id, -- REQUEST_ID
4228     p_batch_id, --BATCH_ID
4229     g_auction_pts_type, -- ENTITY_TYPE
4230     p_auction_header_id, -- AUCTION_HEADER_ID
4231     paip.line_number, -- LINE_NUMBER
4232     p_expiration_date, -- EXPIRATION_DATE
4233     'LINENUM', -- TOKEN1_NAME
4234     Decode(g_is_fed,'Y',paip.line_num_display,paip.line_number), -- TOKEN1_VALUE
4235     p_user_id, -- CREATED_BY
4236     sysdate, -- CREATION_DATE
4237     p_user_id, -- LAST_UPDATED_BY
4238     sysdate, -- LAST_UPDATE_DATE
4239     p_login_id    -- LAST_UPDATE_LOGIN
4240 FROM pon_auction_item_prices_all paip
4241 WHERE paip.auction_header_id = p_auction_header_id
4242  AND paip.line_number IN
4243   (SELECT DISTINCT pasa.line_number
4244    FROM pon_auction_shipments_all pasa1,
4245    pon_auction_shipments_all pasa
4246    WHERE pasa1.auction_header_id = p_auction_header_id
4247    and pasa.auction_header_id = p_auction_header_id
4248    AND pasa.line_number = pasa1.line_number
4249    AND pasa1.shipment_number <> pasa.shipment_number
4250    AND pasa1.quantity <= pasa.quantity
4251    AND pasa.quantity <= pasa1.max_quantity) ;
4252 
4253 END VAL_QTY_BASED_PRICE_TIERS;
4254 
4255 /*
4256  * Check to ensure that there are no duplicate price differentials.
4257  * Keeping this outside all other validations as we need a group by here
4258  */
4259 PROCEDURE VAL_PD_UNIQUE(
4260   p_auction_header_id IN NUMBER,
4261   p_request_id IN NUMBER,
4262   p_expiration_date IN DATE,
4263   p_user_id IN NUMBER,
4264   p_login_id IN NUMBER,
4265   p_batch_id IN NUMBER
4266  ) IS
4267 BEGIN
4268   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
4269     FND_LOG.string(log_level => FND_LOG.level_procedure,
4270       module  =>  g_module_prefix || 'VAL_PD_UNIQUE',
4271       message  => 'Entering procedure' || ', p_auction_header_id = ' || p_auction_header_id);
4272   END IF; --}
4273 
4274   -- For price differentials directly under the lines
4275 
4276   INSERT INTO PON_INTERFACE_ERRORS
4277   (
4278     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
4279     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
4280     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
4281   )
4282   SELECT
4283     g_interface_type, --INTERFACE_TYPE
4284     'PON_DUPLICATE_PRICE_TYPES_ERR', -- ERROR_MESSAGE_NAME
4285     p_request_id, -- REQUEST_ID
4286     p_batch_id, --BATCH_ID
4287     g_auction_pds_type, -- ENTITY_TYPE
4288     p_auction_header_id, -- AUCTION_HEADER_ID
4289     PAIP.LINE_NUMBER, -- LINE_NUMBER
4290     p_expiration_date, -- EXPIRATION_DATE
4291     'LINE_NUMBER', -- TOKEN1_NAME
4292     Decode(g_is_fed,'Y',paip.line_num_display,PAIP.DOCUMENT_DISP_LINE_NUMBER), -- TOKEN1_VALUE
4293     p_user_id, -- CREATED_BY
4294     sysdate, -- CREATION_DATE
4295     p_user_id, -- LAST_UPDATED_BY
4296     sysdate, -- LAST_UPDATE_DATE
4297     p_login_id -- LAST_UPDATE_LOGIN
4298   FROM
4299     PON_PRICE_DIFFERENTIALS PPD,
4300     PON_AUCTION_ITEM_PRICES_ALL PAIP
4301   WHERE
4302     PPD.AUCTION_HEADER_ID = p_auction_header_id AND
4303     PAIP.AUCTION_HEADER_ID = p_auction_header_id AND
4304     PPD.LINE_NUMBER = PAIP.LINE_NUMBER AND
4305     PPD.SHIPMENT_NUMBER = -1
4306   GROUP BY
4307     PPD.AUCTION_HEADER_ID,
4308     PAIP.LINE_NUMBER,
4309     PAIP.DOCUMENT_DISP_LINE_NUMBER,
4310     PAIP.LINE_NUM_DISPLAY,
4311     PPD.PRICE_TYPE
4312   HAVING
4313     COUNT(PPD.LINE_NUMBER) > 1;
4314 
4315   -- For price differentials under shipments
4316 
4317   INSERT INTO PON_INTERFACE_ERRORS
4318   (
4319     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
4320     AUCTION_HEADER_ID, LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
4321     CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
4322   )
4323   SELECT
4324     g_interface_type, --INTERFACE_TYPE
4325     'PON_DUPLICATE_PRICE_TYPES', -- ERROR_MESSAGE_NAME
4326     p_request_id, -- REQUEST_ID
4327     p_batch_id, --BATCH_ID
4328     g_auction_pds_type, -- ENTITY_TYPE
4329     p_auction_header_id, -- AUCTION_HEADER_ID
4330     PAIP.LINE_NUMBER, -- LINE_NUMBER
4331     p_expiration_date, -- EXPIRATION_DATE
4332     'LINE_NUMBER', -- TOKEN1_NAME
4333     Decode(g_is_fed,'Y',paip.line_num_display,PAIP.DOCUMENT_DISP_LINE_NUMBER),-- TOKEN1_VALUE
4334     p_user_id, -- CREATED_BY
4335     sysdate, -- CREATION_DATE
4336     p_user_id, -- LAST_UPDATED_BY
4337     sysdate, -- LAST_UPDATE_DATE
4338     p_login_id -- LAST_UPDATE_LOGIN
4339   FROM
4340     PON_PRICE_DIFFERENTIALS PPD,
4341     PON_AUCTION_ITEM_PRICES_ALL PAIP,
4342     PON_AUCTION_SHIPMENTS_ALL PAS
4343   WHERE
4344     PPD.AUCTION_HEADER_ID = p_auction_header_id AND
4345     PAIP.AUCTION_HEADER_ID = p_auction_header_id AND
4346     PAS.AUCTION_HEADER_ID = p_auction_header_id AND
4347     PPD.LINE_NUMBER = PAIP.LINE_NUMBER AND
4348     PPD.LINE_NUMBER = PAS.LINE_NUMBER AND
4349     PAS.SHIPMENT_NUMBER = PPD.SHIPMENT_NUMBER
4350   GROUP BY
4351     PPD.AUCTION_HEADER_ID,
4352     PAIP.LINE_NUMBER,
4353     PAIP.DOCUMENT_DISP_LINE_NUMBER,
4354     PAIP.LINE_NUM_DISPLAY,
4355     PPD.PRICE_TYPE,
4356     PAS.SHIPMENT_NUMBER
4357   HAVING
4358     COUNT(PPD.LINE_NUMBER) > 1;
4359 
4360   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
4361     FND_LOG.string(log_level => FND_LOG.level_procedure,
4362       module  =>  g_module_prefix || 'VAL_PD_UNIQUE',
4363       message  => 'Leaving procedure');
4364   END IF; --}
4365 END VAL_PD_UNIQUE;
4366 
4367 /*
4368  * The following validations are performed:
4369  * 1. Multiplier should be a positive number
4370  * 2. Price differential should not be empty
4371  *
4372  * Validations are performed for price differentials directly under the lines
4373  * and also for those that are under the shipments
4374  */
4375 PROCEDURE VAL_PRICE_DIFFERENTIALS (
4376   p_auction_header_id IN NUMBER,
4377   p_request_id IN NUMBER,
4378   p_expiration_date IN DATE,
4379   p_user_id IN NUMBER,
4380   p_login_id IN NUMBER,
4381   p_batch_id IN NUMBER
4382 ) IS
4383 BEGIN
4384   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
4385     FND_LOG.string(log_level => FND_LOG.level_procedure,
4386       module  =>  g_module_prefix || 'VAL_PRICE_DIFFERENTIALS',
4387       message  => 'Entering procedure' || ', p_auction_header_id = ' || p_auction_header_id);
4388   END IF; --}
4389 
4390   -- FOR PRICE DIFFERENTIALS DIRECTLY UNDER LINES
4391 
4392   INSERT ALL
4393 
4394   -- MULTIPLIER SHOULD BE A POSITIVE NUMBER
4395 
4396   WHEN
4397   (
4398     sel_multiplier IS NULL OR
4399     sel_multiplier <= 0
4400   )
4401   THEN INTO PON_INTERFACE_ERRORS
4402   (
4403     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID,
4404     LINE_NUMBER, PRICE_DIFFERENTIAL_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
4405     TOKEN2_NAME, TOKEN2_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE,
4406     LAST_UPDATE_LOGIN
4407   )
4408   VALUES
4409   (
4410     g_interface_type, --INTERFACE_TYPE
4411     NVL2 (sel_multiplier, 'PON_AUCTS_TAR_MULT_POSITIVE', 'PON_AUCTS_TAR_MULT_REQD'),         -- ERROR_MESSAGE_NAME
4412     p_request_id, -- REQUEST_ID
4413     p_batch_id, --BATCH_ID
4414     g_auction_pds_type, -- ENTITY_TYPE
4415     p_auction_header_id, -- AUCTION_HEADER_ID
4416     sel_line_number, -- LINE_NUMBER
4417     sel_price_differential_number, -- PRICE_DIFFERENTIAL_NUMBER
4418     p_expiration_date, -- EXPIRATION_DATE
4419     'LINE_NUMBER', -- TOKEN1_NAME
4420     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
4421     'PRICE_TYPE', -- TOKEN2_NAME
4422     sel_price_differential_desc, -- TOKEN2_VALUE
4423     p_user_id, -- CREATED_BY
4424     sysdate, -- CREATION_DATE
4425     p_user_id, -- LAST_UPDATED_BY
4426     sysdate, -- LAST_UPDATE_DATE
4427     p_login_id -- LAST_UPDATE_LOGIN
4428   )
4429 
4430   -- PRICE DIFFERENTIAL SHOULD NOT BE EMPTY
4431 
4432   WHEN
4433   (
4434     sel_price_type = g_empty_price_type AND
4435     sel_multiplier IS NULL
4436   )
4437   THEN INTO PON_INTERFACE_ERRORS
4438   (
4439     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID,
4440     LINE_NUMBER, PRICE_DIFFERENTIAL_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, TOKEN2_NAME,
4441     TOKEN2_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
4442   )
4443   VALUES
4444   (
4445     g_interface_type, --INTERFACE_TYPE
4446     'PON_AUCTS_PRICE_DIFF_EMPTY', -- ERROR_MESSAGE_NAME
4447     p_request_id, -- REQUEST_ID
4448     p_batch_id, --BATCH_ID
4449     g_auction_pds_type, -- ENTITY_TYPE
4450     p_auction_header_id, -- AUCTION_HEADER_ID
4451     sel_line_number, -- LINE_NUMBER
4452     sel_price_differential_number, -- PRICE_DIFFERENTIAL_NUMBER
4453     p_expiration_date, -- EXPIRATION_DATE
4454     'LINE_NUMBER', -- TOKEN1_NAME
4455     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
4456     'PRICE_TYPE', -- TOKEN1_NAME
4457     sel_price_differential_desc, -- TOKEN1_VALUE
4458     p_user_id, -- CREATED_BY
4459     sysdate, -- CREATION_DATE
4460     p_user_id, -- LAST_UPDATED_BY
4461     sysdate, -- LAST_UPDATE_DATE
4462     p_login_id -- LAST_UPDATE_LOGIN
4463   )
4464 
4465   SELECT
4466     PPD.MULTIPLIER sel_multiplier,
4467     PAIP.LINE_NUMBER sel_line_number,
4468     PAIP.DOCUMENT_DISP_LINE_NUMBER sel_document_disp_line_number,
4469     PPD.PRICE_DIFFERENTIAL_NUMBER sel_price_differential_number,
4470     PPDL.PRICE_DIFFERENTIAL_DESC sel_price_differential_desc,
4471     PPD.PRICE_TYPE sel_price_type,
4472     PAIP.LINE_NUM_DISPLAY sel_clm_line_num_display
4473   FROM
4474     PON_PRICE_DIFFERENTIALS PPD,
4475     PON_AUCTION_ITEM_PRICES_ALL PAIP,
4476     PO_PRICE_DIFF_LOOKUPS_V PPDL
4477   WHERE
4478     PAIP.AUCTION_HEADER_ID = p_auction_header_id AND
4479     PPD.AUCTION_HEADER_ID = p_auction_header_id AND
4480     PAIP.LINE_NUMBER = PPD.LINE_NUMBER AND
4481     PPDL.PRICE_DIFFERENTIAL_TYPE = PPD.PRICE_TYPE AND
4482     PPD.SHIPMENT_NUMBER = -1;
4483 
4484   -- FOR PRICE DIFFERENTIALS UNDER PRICE BREAKS
4485 
4486   INSERT ALL
4487 
4488   -- MULTIPLIER SHOULD BE A POSITIVE NUMBER
4489 
4490   WHEN
4491   (
4492     sel_multiplier IS NULL OR
4493     sel_multiplier <= 0
4494   )
4495   THEN INTO PON_INTERFACE_ERRORS
4496   (
4497     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID,
4498     LINE_NUMBER, SHIPMENT_NUMBER, PRICE_DIFFERENTIAL_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
4499     TOKEN2_NAME, TOKEN2_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE,
4500     LAST_UPDATE_LOGIN
4501   )
4502   VALUES
4503   (
4504     g_interface_type, --INTERFACE_TYPE
4505     DECODE (sel_multiplier, 'PON_AUCTS_TAR_MULT_POS_SHIP', 'PON_AUCTS_TAR_MULT_REQD_SHIP'),         -- ERROR_MESSAGE_NAME
4506     p_request_id, -- REQUEST_ID
4507     p_batch_id, --BATCH_ID
4508     g_auction_pds_type, -- ENTITY_TYPE
4509     p_auction_header_id, -- AUCTION_HEADER_ID
4510     sel_line_number, -- LINE_NUMBER
4511     sel_shipment_number, -- SHIPMENT_NUMBER
4512     sel_price_differential_number, -- PRICE_DIFFERENTIAL_NUMBER
4513     p_expiration_date, -- EXPIRATION_DATE
4514     'LINE_NUMBER', -- TOKEN1_NAME
4515     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
4516     'PRICE_TYPE', -- TOKEN2_NAME
4517     sel_price_differential_desc, -- TOKEN2_VALUE
4518     p_user_id, -- CREATED_BY
4519     sysdate, -- CREATION_DATE
4520     p_user_id, -- LAST_UPDATED_BY
4521     sysdate, -- LAST_UPDATE_DATE
4522     p_login_id -- LAST_UPDATE_LOGIN
4523   )
4524 
4525   -- PRICE DIFFERENTIAL SHOULD NOT BE EMPTY
4526 
4527   WHEN
4528   (
4529     sel_price_type = g_empty_price_type AND
4530     sel_multiplier IS NULL
4531   )
4532   THEN INTO PON_INTERFACE_ERRORS
4533   (
4534     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID,
4535     LINE_NUMBER, SHIPMENT_NUMBER, PRICE_DIFFERENTIAL_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, TOKEN2_NAME,
4536     TOKEN2_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
4537   )
4538   VALUES
4539   (
4540     g_interface_type, --INTERFACE_TYPE
4541     'PON_AUCTS_PRICE_DIFF_EMPTY', -- ERROR_MESSAGE_NAME
4542     p_request_id, -- REQUEST_ID
4543     p_batch_id, --BATCH_ID
4544     g_auction_pds_type, -- ENTITY_TYPE
4545     p_auction_header_id, -- AUCTION_HEADER_ID
4546     sel_line_number, -- LINE_NUMBER
4547     sel_shipment_number, -- SHIPMENT_NUMBER
4548     sel_price_differential_number, -- PRICE_DIFFERENTIAL_NUMBER
4549     p_expiration_date, -- EXPIRATION_DATE
4550     'LINE_NUMBER', -- TOKEN1_NAME
4551     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
4552     'PRICE_TYPE', -- TOKEN1_NAME
4553     sel_price_differential_desc, -- TOKEN1_VALUE
4554     p_user_id, -- CREATED_BY
4555     sysdate, -- CREATION_DATE
4556     p_user_id, -- LAST_UPDATED_BY
4557     sysdate, -- LAST_UPDATE_DATE
4558     p_login_id -- LAST_UPDATE_LOGIN
4559   )
4560 
4561   SELECT
4562     PPD.MULTIPLIER sel_multiplier,
4563     PAIP.LINE_NUMBER sel_line_number,
4564     PAIP.DOCUMENT_DISP_LINE_NUMBER sel_document_disp_line_number,
4565     PPD.PRICE_DIFFERENTIAL_NUMBER sel_price_differential_number,
4566     PPD.PRICE_TYPE sel_price_type,
4567     PPD.SHIPMENT_NUMBER sel_shipment_number,
4568     PPDL.PRICE_DIFFERENTIAL_DESC sel_price_differential_desc,
4569     PAIP.LINE_NUM_DISPLAY sel_clm_line_num_display
4570   FROM
4571     PON_AUCTION_ITEM_PRICES_ALL PAIP,
4572     PON_AUCTION_SHIPMENTS_ALL PASA,
4573     PON_PRICE_DIFFERENTIALS PPD,
4574     PO_PRICE_DIFF_LOOKUPS_V PPDL
4575   WHERE
4576     PAIP.AUCTION_HEADER_ID = p_auction_header_id AND
4577     PPD.AUCTION_HEADER_ID = p_auction_header_id AND
4578     PASA.AUCTION_HEADER_ID = p_auction_header_id AND
4579     PAIP.LINE_NUMBER = PASA.LINE_NUMBER AND
4580     PASA.LINE_NUMBER = PPD.LINE_NUMBER AND
4581     PPDL.PRICE_DIFFERENTIAL_TYPE = PPD.PRICE_TYPE AND
4582     PASA.SHIPMENT_NUMBER = PPD.SHIPMENT_NUMBER;
4583 
4584   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
4585     FND_LOG.string(log_level => FND_LOG.level_procedure,
4586       module  =>  g_module_prefix || 'VAL_PRICE_DIFFERENTIALS',
4587       message  => 'Leaving procedure');
4588   END IF; --}
4589 END VAL_PRICE_DIFFERENTIALS;
4590 
4591 /*
4592  * The following validations are performed:
4593  * 1. For line type price elements the value should be > 0
4594  * 2. For non line type price elements the value should be < 0
4595  * 3. If the display target flag is set then target value should be entered
4596  * 4. If the pricing basis is per unit then the value enteres should have a precision less
4597  *    than the auction currency precision
4598  * 5. If the pricing basis is fixed amount then the value precision should be less than the
4599  *    fnd currency precision
4600  * 6. There should not be any inactive price elements
4601  * 7. Pricing Basis should not be NULL - added this for back button support
4602  * 8. Cost Factor name cannot be null - added this for back button support
4603  */
4604 PROCEDURE VAL_PRICE_ELEMENTS (
4605   p_auction_header_id IN NUMBER,
4606   p_request_id IN NUMBER,
4607   p_expiration_date IN DATE,
4608   p_user_id IN NUMBER,
4609   p_login_id IN NUMBER,
4610   p_batch_id IN NUMBER,
4611   p_precision IN NUMBER,
4612   p_fnd_precision IN NUMBER,
4613   p_trading_partner_id IN NUMBER
4614 ) IS
4615 
4616 l_temp NUMBER;
4617 l_temp_fnd NUMBER;
4618 l_doctype_suffix VARCHAR2(10);
4619 BEGIN
4620 
4621   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
4622     FND_LOG.string(log_level => FND_LOG.level_procedure,
4623       module  =>  g_module_prefix || 'VAL_PRICE_ELEMENTS',
4624       message  => 'Entering procedure with:' || ' p_auction_header_id = ' || p_auction_header_id ||
4625                   ', p_trading_partner_id = ' || p_trading_partner_id);
4626   END IF; --}
4627 
4628   IF (p_precision <> g_precision_any) THEN
4629     l_temp := power (10, p_precision);
4630   ELSE
4631     l_temp := 0;
4632   END IF;
4633 
4634   l_doctype_suffix := PON_LARGE_AUCTION_UTIL_PKG.GET_DOCTYPE_SUFFIX (p_auction_header_id);
4635 
4636   INSERT ALL
4637 
4638   -- FOR LINE TYPE PRICE ELEMENTS THE VALUE SHOULD BE > 0
4639 
4640   WHEN
4641   (
4642     sel_value IS NOT NULL AND
4643     sel_price_element_type_id = g_item_price_type_id AND
4644     sel_value <= 0
4645   )
4646   THEN INTO PON_INTERFACE_ERRORS
4647   (
4648     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID,
4649     LINE_NUMBER, PRICE_ELEMENT_TYPE_ID, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, TOKEN2_NAME,
4650     TOKEN2_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
4651   )
4652   VALUES
4653   (
4654     g_interface_type, --INTERFACE_TYPE
4655     'PON_PE_VALUE_MUST_BE_POS', -- ERROR_MESSAGE_NAME
4656     p_request_id, -- REQUEST_ID
4657     p_batch_id, --BATCH_ID
4658     g_auction_pfs_type, -- ENTITY_TYPE
4659     p_auction_header_id, -- AUCTION_HEADER_ID
4660     sel_line_number, -- LINE_NUMBER
4661     sel_price_element_type_id, -- PRICE_ELEMENT_TYPE_ID
4662     p_expiration_date, -- EXPIRATION_DATE
4663     'LINE_NUMBER', -- TOKEN1_NAME
4664     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
4665     'PE_NAME', -- TOKEN1_NAME
4666     sel_name, -- TOKEN1_VALUE
4667     p_user_id, -- CREATED_BY
4668     sysdate, -- CREATION_DATE
4669     p_user_id, -- LAST_UPDATED_BY
4670     sysdate, -- LAST_UPDATE_DATE
4671     p_login_id -- LAST_UPDATE_LOGIN
4672   )
4673 
4674   -- FOR NON LINE TYPE PRICE ELEMENTS THE VALUE SHOULD BE < 0
4675 
4676   WHEN
4677   (
4678     sel_VALUE IS NOT NULL AND
4679     sel_PRICE_ELEMENT_TYPE_ID <> g_item_price_type_id AND
4680     sel_VALUE < 0
4681   )
4682   THEN INTO PON_INTERFACE_ERRORS
4683   (
4684     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID,
4685     LINE_NUMBER, PRICE_ELEMENT_TYPE_ID, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
4686     TOKEN2_NAME, TOKEN2_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE,
4687     LAST_UPDATE_LOGIN
4688   )
4689   VALUES
4690   (
4691     g_interface_type, --INTERFACE_TYPE
4692     'PON_PE_VALUE_BE_POS_OR_ZERO', -- ERROR_MESSAGE_NAME
4693     p_request_id, -- REQUEST_ID
4694     p_batch_id, -- BATCH_ID
4695     g_auction_pfs_type, -- ENTITY_TYPE
4696     p_auction_header_id, -- AUCTION_HEADER_ID
4697     sel_line_number, -- LINE_NUMBER
4698     sel_price_element_type_id, -- PRICE_ELEMENT_TYPE_ID
4699     p_expiration_date, -- EXPIRATION_DATE
4700     'LINE_NUMBER', -- TOKEN1_NAME
4701     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
4702     'PE_NAME', -- TOKEN1_NAME
4703     sel_name, -- TOKEN1_VALUE
4704     p_user_id, -- CREATED_BY
4705     sysdate, -- CREATION_DATE
4706     p_user_id, -- LAST_UPDATED_BY
4707     sysdate, -- LAST_UPDATE_DATE
4708     p_login_id -- LAST_UPDATE_LOGIN
4709   )
4710 
4711   -- IF THE DISPLAY TARGET FLAG IS SET THEN TARGET VALUE SHOULD BE ENTERED
4712 
4713   WHEN
4714   (
4715     sel_value IS NULL AND
4716     sel_display_target_flag = 'Y'
4717   )
4718   THEN INTO PON_INTERFACE_ERRORS
4719   (
4720     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID,
4721     LINE_NUMBER, PRICE_ELEMENT_TYPE_ID, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
4722     TOKEN2_NAME, TOKEN2_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE,
4723     LAST_UPDATE_LOGIN
4724   )
4725   VALUES
4726   (
4727     g_interface_type, --INTERFACE_TYPE
4728     'PON_AUC_PE_SHOW_TARGET', -- ERROR_MESSAGE_NAME
4729     p_request_id, -- REQUEST_ID
4730     p_batch_id, --BATCH_ID
4731     g_auction_pfs_type, -- ENTITY_TYPE
4732     p_auction_header_id, -- AUCTION_HEADER_ID
4733     sel_line_number, -- LINE_NUMBER
4734     sel_price_element_type_id, -- PRICE_ELEMENT_TYPE_ID
4735     p_expiration_date, -- EXPIRATION_DATE
4736     'LINE_NUMBER', -- TOKEN1_NAME
4737     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
4738     'PE_NAME', -- TOKEN1_NAME
4739     sel_name, -- TOKEN1_VALUE
4740     p_user_id, -- CREATED_BY
4741     sysdate, -- CREATION_DATE
4742     p_user_id, -- LAST_UPDATED_BY
4743     sysdate, -- LAST_UPDATE_DATE
4744     p_login_id -- LAST_UPDATE_LOGIN
4745   )
4746 
4747   -- If the pricing basis is per unit then the value enteres should have
4748   -- a precision less than the auction currency precision
4749 
4750   WHEN
4751   (
4752     sel_value IS NOT NULL AND
4753     sel_pricing_basis = g_per_unit AND
4754     ABS (sel_value  * l_temp - TRUNC (sel_value * l_temp))> 0
4755   )
4756 
4757   THEN INTO PON_INTERFACE_ERRORS
4758   (
4759     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
4760     AUCTION_HEADER_ID, LINE_NUMBER, PRICE_ELEMENT_TYPE_ID, EXPIRATION_DATE,
4761     TOKEN1_NAME, TOKEN1_VALUE, TOKEN2_NAME, TOKEN2_VALUE, CREATED_BY,
4762     CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
4763   )
4764   VALUES
4765   (
4766     g_interface_type, --INTERFACE_TYPE
4767     'PON_PE_TOO_MANY_DIGITS_M' || l_doctype_suffix, -- ERROR_MESSAGE_NAME
4768     p_request_id, -- REQUEST_ID
4769     p_batch_id, --BATCH_ID
4770     g_auction_pfs_type, -- ENTITY_TYPE
4771     p_auction_header_id, -- AUCTION_HEADER_ID
4772     sel_line_number, -- LINE_NUMBER
4773     sel_price_element_type_id, -- PRICE_ELEMENT_TYPE_ID
4774     p_expiration_date, -- EXPIRATION_DATE
4775     'LINE_NUMBER', -- TOKEN1_NAME
4776     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
4777     'PE_NAME', -- TOKEN1_NAME
4778     sel_name, -- TOKEN1_VALUE
4779     p_user_id, -- CREATED_BY
4780     sysdate, -- CREATION_DATE
4781     p_user_id, -- LAST_UPDATED_BY
4782     sysdate, -- LAST_UPDATE_DATE
4783     p_login_id -- LAST_UPDATE_LOGIN
4784   )
4785 
4786   -- If the pricing basis is fixed amount then the value precision should
4787   -- be less than the fnd currency precision
4788 
4789   WHEN
4790   (
4791     sel_value IS NOT NULL AND
4792     sel_pricing_basis = g_fixed_amount AND
4793     ABS (sel_value * l_temp_fnd - TRUNC (sel_value * l_temp_fnd)) >0
4794   )
4795   THEN INTO PON_INTERFACE_ERRORS
4796   (
4797     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
4798     AUCTION_HEADER_ID, LINE_NUMBER, PRICE_ELEMENT_TYPE_ID, EXPIRATION_DATE,
4799     TOKEN1_NAME, TOKEN1_VALUE, TOKEN2_NAME, TOKEN2_VALUE, CREATED_BY,
4800     CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
4801   )
4802   VALUES
4803   (
4804     g_interface_type, --INTERFACE_TYPE
4805     'PON_PE_TOO_MANY_DIGITS_A', -- ERROR_MESSAGE_NAME
4806     p_request_id, -- REQUEST_ID
4807     p_batch_id, -- BATCH_ID
4808     g_auction_pfs_type, -- ENTITY_TYPE
4809     p_auction_header_id, -- AUCTION_HEADER_ID
4810     sel_line_number, -- LINE_NUMBER
4811     sel_price_element_type_id, -- PRICE_ELEMENT_TYPE_ID
4812     p_expiration_date, -- EXPIRATION_DATE
4813     'LINE_NUMBER', -- TOKEN1_NAME
4814     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
4815     'PE_NAME', -- TOKEN1_NAME
4816     sel_name, -- TOKEN1_VALUE
4817     p_user_id, -- CREATED_BY
4818     sysdate, -- CREATION_DATE
4819     p_user_id, -- LAST_UPDATED_BY
4820     sysdate, -- LAST_UPDATE_DATE
4821     p_login_id -- LAST_UPDATE_LOGIN
4822   )
4823 
4824   -- There should not be any inactive price elements
4825 
4826   WHEN
4827   (
4828     sel_enabled_flag = 'N'
4829   )
4830   THEN INTO PON_INTERFACE_ERRORS
4831   (
4832     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
4833     AUCTION_HEADER_ID, LINE_NUMBER, PRICE_ELEMENT_TYPE_ID, EXPIRATION_DATE,
4834     TOKEN1_NAME, TOKEN1_VALUE, TOKEN2_NAME, TOKEN2_VALUE, CREATED_BY,
4835     CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
4836   )
4837   VALUES
4838   (
4839     g_interface_type, --INTERFACE_TYPE
4840     'PON_AUC_AUCTION_INA_PES', -- ERROR_MESSAGE_NAME
4841     p_request_id, -- REQUEST_ID
4842     p_batch_id, --BATCH_ID
4843     g_auction_pfs_type, -- ENTITY_TYPE
4844     p_auction_header_id, -- AUCTION_HEADER_ID
4845     sel_line_number, -- LINE_NUMBER
4846     sel_price_element_type_id, -- PRICE_ELEMENT_TYPE_ID
4847     p_expiration_date, -- EXPIRATION_DATE
4848     'LINE_NUMBER', -- TOKEN1_NAME
4849     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
4850     'PE_NAME', -- TOKEN1_NAME
4851     sel_name, -- TOKEN1_VALUE
4852     p_user_id, -- CREATED_BY
4853     sysdate, -- CREATION_DATE
4854     p_user_id, -- LAST_UPDATED_BY
4855     sysdate, -- LAST_UPDATE_DATE
4856     p_login_id -- LAST_UPDATE_LOGIN
4857   )
4858 
4859   -- Pricing Basis should not be NULL - added this for back button support
4860   -- Pricing basis column is made nullable on the database
4861 
4862   WHEN
4863   (
4864     sel_pricing_basis IS NULL
4865   )
4866   THEN INTO PON_INTERFACE_ERRORS
4867   (
4868     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
4869     AUCTION_HEADER_ID, LINE_NUMBER, PRICE_ELEMENT_TYPE_ID, EXPIRATION_DATE,
4870     TOKEN1_NAME, TOKEN1_VALUE,
4871     CREATED_BY,CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
4872   )
4873   VALUES
4874   (
4875     g_interface_type, --INTERFACE_TYPE
4876     'PON_AUC_PRICING_BASIS_M', -- ERROR_MESSAGE_NAME
4877     p_request_id, -- REQUEST_ID
4878     p_batch_id, --BATCH_ID
4879     g_auction_pfs_type, -- ENTITY_TYPE
4880     p_auction_header_id, -- AUCTION_HEADER_ID
4881     sel_line_number, -- LINE_NUMBER
4882     sel_price_element_type_id, -- PRICE_ELEMENT_TYPE_ID
4883     p_expiration_date, -- EXPIRATION_DATE
4884     'LINE_NUMBER', -- TOKEN1_NAME
4885     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
4886     p_user_id, -- CREATED_BY
4887     sysdate, -- CREATION_DATE
4888     p_user_id, -- LAST_UPDATED_BY
4889     sysdate, -- LAST_UPDATE_DATE
4890     p_login_id -- LAST_UPDATE_LOGIN
4891   )
4892 
4893   -- Cost factor name should not be null (added for back button support)
4894 
4895   WHEN
4896   (
4897     sel_name IS NULL
4898   )
4899   THEN INTO PON_INTERFACE_ERRORS
4900   (
4901     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
4902     AUCTION_HEADER_ID, LINE_NUMBER, PRICE_ELEMENT_TYPE_ID, EXPIRATION_DATE,
4903     TOKEN1_NAME, TOKEN1_VALUE,
4904     CREATED_BY,CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
4905   )
4906   VALUES
4907   (
4908     g_interface_type, --INTERFACE_TYPE
4909     'PON_PE_REQUIRED', -- ERROR_MESSAGE_NAME
4910     p_request_id, -- REQUEST_ID
4911     p_batch_id, --BATCH_ID
4912     g_auction_pfs_type, -- ENTITY_TYPE
4913     p_auction_header_id, -- AUCTION_HEADER_ID
4914     sel_line_number, -- LINE_NUMBER
4915     sel_price_element_type_id, -- PRICE_ELEMENT_TYPE_ID
4916     p_expiration_date, -- EXPIRATION_DATE
4917     'LINE_NUMBER', -- TOKEN1_NAME
4918     Decode(g_is_fed,'Y',sel_clm_line_num_display,sel_document_disp_line_number), -- TOKEN1_VALUE
4919     p_user_id, -- CREATED_BY
4920     sysdate, -- CREATION_DATE
4921     p_user_id, -- LAST_UPDATED_BY
4922     sysdate, -- LAST_UPDATE_DATE
4923     p_login_id -- LAST_UPDATE_LOGIN
4924   )
4925 
4926   SELECT
4927     PAIP.LINE_NUMBER sel_line_number,
4928     PAIP.DOCUMENT_DISP_LINE_NUMBER sel_document_disp_line_number,
4929     PPE.PRICE_ELEMENT_TYPE_ID sel_price_element_type_id,
4930     PPETL.NAME sel_name,
4931     PPE.VALUE sel_value,
4932     PPE.DISPLAY_TARGET_FLAG sel_display_target_flag,
4933     PPE.PRICING_BASIS sel_pricing_basis,
4934     PPET.ENABLED_FLAG sel_enabled_flag,
4935     PPET.SYSTEM_FLAG sel_system_flag,
4936     PAIP.LINE_NUM_DISPLAY sel_clm_line_num_display
4937   FROM
4938     PON_AUCTION_ITEM_PRICES_ALL PAIP,
4939     PON_PRICE_ELEMENTS PPE,
4940     PON_PRICE_ELEMENT_TYPES_TL PPETL,
4941     PON_PRICE_ELEMENT_TYPES PPET
4942   WHERE
4943     PAIP.AUCTION_HEADER_ID = p_auction_header_id AND
4944     PPE.AUCTION_HEADER_ID = p_auction_header_id AND
4945     PAIP.LINE_NUMBER = PPE.LINE_NUMBER AND
4946     PPE.PRICE_ELEMENT_TYPE_ID = PPETL.PRICE_ELEMENT_TYPE_ID(+) AND
4947     PPE.PRICE_ELEMENT_TYPE_ID = PPET.PRICE_ELEMENT_TYPE_ID(+) AND
4948     PPETL.LANGUAGE(+) = USERENV ('LANG');
4949 
4950   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
4951     FND_LOG.string(log_level => FND_LOG.level_procedure,
4952       module  =>  g_module_prefix || 'VAL_PRICE_ELEMENTS',
4953       message  => 'Leaving procedure');
4954   END IF; --}
4955 END VAL_PRICE_ELEMENTS;
4956 
4957 /*
4958  * Check to see that there are no duplicate price elements.
4959  * This is being kept outside the other validations as this
4960  * involves a group by
4961  */
4962 PROCEDURE VAL_PE_UNIQUE (
4963   p_auction_header_id IN NUMBER,
4964   p_request_id IN NUMBER,
4965   p_expiration_date IN DATE,
4966   p_user_id IN NUMBER,
4967   p_login_id IN NUMBER,
4968   p_batch_id IN NUMBER
4969  ) IS
4970 BEGIN
4971   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
4972     FND_LOG.string(log_level => FND_LOG.level_procedure,
4973       module  =>  g_module_prefix || 'VAL_PE_UNIQUE',
4974       message  => 'Entering PON_NEGOTIATION_HELPER_PVT.VAL_PE_UNIQUE'
4975                   || ', p_auction_header_id = ' || p_auction_header_id);
4976   END IF; --}
4977 
4978   INSERT INTO PON_INTERFACE_ERRORS
4979   (
4980     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
4981     AUCTION_HEADER_ID, LINE_NUMBER, PRICE_ELEMENT_TYPE_ID, EXPIRATION_DATE,
4982     TOKEN1_NAME, TOKEN1_VALUE, TOKEN2_NAME, TOKEN2_VALUE, CREATED_BY,
4983     CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
4984   )
4985   SELECT
4986     g_interface_type, --INTERFACE_TYPE
4987     'PON_AUC_DUPLICATE_PES', -- ERROR_MESSAGE_NAME
4988     p_request_id, -- REQUEST_ID
4989     p_batch_id, --BATCH_ID
4990     g_auction_pfs_type, -- ENTITY_TYPE
4991     p_auction_header_id, -- AUCTION_HEADER_ID
4992     PPE.LINE_NUMBER, -- LINE_NUMBER
4993     PPE.PRICE_ELEMENT_TYPE_ID, -- PRICE_ELEMENT_TYPE_ID
4994     p_expiration_date, -- EXPIRATION_DATE
4995     'LINE_NUMBER', -- TOKEN1_NAME
4996     Decode(g_is_fed,'Y',PAIP.LINE_NUM_DISPLAY,PAIP.DOCUMENT_DISP_LINE_NUMBER), -- TOKEN1_VALUE
4997     'PE_NAME', -- TOKEN1_NAME
4998     PPETL.NAME, -- TOKEN1_VALUE
4999     p_user_id, -- CREATED_BY
5000     sysdate, -- CREATION_DATE
5001     p_user_id, -- LAST_UPDATED_BY
5002     sysdate, -- LAST_UPDATE_DATE
5003     p_login_id -- LAST_UPDATE_LOGIN
5004   FROM
5005     PON_AUCTION_ITEM_PRICES_ALL PAIP,
5006     PON_PRICE_ELEMENTS PPE,
5007     PON_PRICE_ELEMENT_TYPES_TL PPETL
5008   WHERE
5009     PAIP.AUCTION_HEADER_ID = p_auction_header_id AND
5010     PPE.AUCTION_HEADER_ID = p_auction_header_id AND
5011     PAIP.LINE_NUMBER = PPE.LINE_NUMBER AND
5012     PPE.PRICE_ELEMENT_TYPE_ID  = PPETL.PRICE_ELEMENT_TYPE_ID AND
5013     PPETL.LANGUAGE = USERENV ('LANG')
5014   GROUP BY
5015     PPE.AUCTION_HEADER_ID,
5016     PPE.LINE_NUMBER,
5017     PPE.PRICE_ELEMENT_TYPE_ID,
5018     PAIP.DOCUMENT_DISP_LINE_NUMBER,
5019     PAIP.LINE_NUM_DISPLAY,
5020     PPETL.NAME
5021   HAVING
5022     COUNT (PPE.LINE_NUMBER) > 1;
5023 
5024   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
5025     FND_LOG.string(log_level => FND_LOG.level_procedure,
5026       module  =>  g_module_prefix || 'VAL_PE_UNIQUE',
5027       message  => 'Leaving procedure');
5028   END IF; --}
5029 END VAL_PE_UNIQUE;
5030 
5031 -- Validating if there is any supplier who has been restricted on all the
5032 -- negotiation lines
5033 PROCEDURE VAL_PARTY_EXCLUSIONS (
5034   p_auction_header_id IN NUMBER,
5035   p_request_id IN NUMBER,
5036   p_expiration_date IN DATE,
5037   p_user_id IN NUMBER,
5038   p_login_id IN NUMBER,
5039   p_batch_id IN NUMBER
5040 ) IS
5041 
5042 l_major_line_count NUMBER;
5043 BEGIN
5044   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
5045     FND_LOG.string(log_level => FND_LOG.level_procedure,
5046       module  =>  g_module_prefix || 'VAL_PARTY_EXCLUSIONS',
5047       message  => 'Entering Procedure' || ', p_auction_header_id = ' || p_auction_header_id);
5048   END IF; --}
5049 
5050   -- LOGIC: count the number of exclusions for this supplier from
5051   -- pon_party_line_exclusions table and if that number is equal
5052   -- to the number of major lines in the negotiation then it is
5053   -- and error
5054   SELECT
5055     COUNT(LINE_NUMBER)
5056   INTO
5057     l_major_line_count
5058   FROM
5059     pon_auction_item_prices_all
5060   WHERE
5061     auction_header_id = p_auction_header_id AND
5062     group_type IN ('LOT', 'GROUP', 'LINE');
5063 
5064   INSERT INTO PON_INTERFACE_ERRORS
5065   (
5066     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
5067     AUCTION_HEADER_ID, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY,
5068     CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
5069   )
5070   SELECT
5071     g_interface_type, --INTERFACE_TYPE
5072     'PON_PARTY_TOTALLY_EXCLUDED', -- ERROR_MESSAGE_NAME
5073     p_request_id, -- REQUEST_ID
5074     p_batch_id, --BATCH_ID
5075     g_auction_attrs_type, -- ENTITY_TYPE
5076     p_auction_header_id, -- AUCTION_HEADER_ID
5077     p_expiration_date, -- EXPIRATION_DATE
5078     'SUPPLIER_NAME', -- TOKEN1_NAME
5079     pbp.trading_partner_name, -- TOKEN1_VALUE
5080     p_user_id, -- CREATED_BY
5081     sysdate, -- CREATION_DATE
5082     p_user_id, -- LAST_UPDATED_BY
5083     sysdate, -- LAST_UPDATE_DATE
5084     p_login_id -- LAST_UPDATE_LOGIN
5085   FROM
5086     pon_bidding_parties pbp
5087   WHERE
5088     pbp.auction_header_id = p_auction_header_id AND
5089     (SELECT
5090        COUNT(trading_partner_id)
5091      FROM
5092        pon_party_line_exclusions pple
5093      WHERE
5094        pple.trading_partner_id = pbp.trading_partner_id AND
5095        pple.vendor_site_id = pbp.vendor_site_id AND
5096        pple.auction_header_id = p_auction_header_id) = l_major_line_count;
5097 
5098   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
5099     FND_LOG.string(log_level => FND_LOG.level_procedure,
5100       module  =>  g_module_prefix || 'VAL_PARTY_EXCLUSIONS',
5101       message  => 'Leaving Procedure');
5102   END IF; --}
5103 
5104 END VAL_PARTY_EXCLUSIONS;
5105 
5106 PROCEDURE VAL_LINE_REF_DATA (
5107   p_auction_header_id IN NUMBER,
5108   p_request_id IN NUMBER,
5109   p_expiration_date IN DATE,
5110   p_user_id IN NUMBER,
5111   p_login_id IN NUMBER,
5112   p_batch_id IN NUMBER
5113 ) IS
5114 BEGIN
5115   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
5116     FND_LOG.string(log_level => FND_LOG.level_procedure,
5117       module  =>  g_module_prefix || 'VAL_LINE_REF_DATA',
5118       message  => 'Entering Procedure p_auction_header_id = ' || p_auction_header_id);
5119   END IF; --}
5120   INSERT ALL
5121 
5122   -- VALIDATE JOB ID
5123 
5124   WHEN
5125   (
5126      SELECTED_PURCHASE_BASIS = g_temp_labor AND
5127      NOT EXISTS (SELECT 'X'
5128                  FROM PO_JOB_ASSOCIATIONS
5129                  WHERE JOB_ID = SELECTED_JOB_ID)
5130   )
5131   THEN INTO PON_INTERFACE_ERRORS
5132   (
5133     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID,
5134     LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE,
5135     LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
5136   )
5137   VALUES
5138   (
5139     g_interface_type, --INTERFACE_TYPE
5140     'PON_AUC_DATA_INVALID_REF_JOB', -- ERROR_MESSAGE_NAME
5141     p_request_id, -- REQUEST_ID
5142     p_batch_id, --BATCH_ID
5143     g_auction_item_type, -- ENTITY_TYPE
5144     p_auction_header_id, -- AUCTION_HEADER_ID
5145     LINE_NUMBER, -- LINE_NUMBER
5146     p_expiration_date, -- EXPIRATION_DATE
5147     'NUM', -- TOKEN1_NAME
5148     Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER), -- TOKEN1_VALUE
5149     p_user_id, -- CREATED_BY
5150     sysdate, -- CREATION_DATE
5151     p_user_id, -- LAST_UPDATED_BY
5152     sysdate, -- LAST_UPDATE_DATE
5153     p_login_id -- LAST_UPDATE_LOGIN
5154   )
5155 
5156   -- VALIDATE LINE TYPE ERROR
5157 
5158   WHEN
5159   (
5160     SELECTED_LINE_ORIGINATION_CODE = 'BLANKET' AND
5161     sel_clm_info_flag <> 'Y' AND -- Clin Slin Changes
5162     NOT EXISTS (SELECT  'X'
5163                 FROM  PO_LINE_TYPES_B
5164                 WHERE  LINE_TYPE_ID = SELECTED_LINE_TYPE_ID)
5165   )
5166   THEN INTO PON_INTERFACE_ERRORS
5167   (
5168     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID,
5169     LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE,
5170     LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
5171   )
5172   VALUES
5173   (
5174     g_interface_type, --INTERFACE_TYPE
5175     'PON_AUC_DATA_INVALID_REF_LTYP', -- ERROR_MESSAGE_NAME
5176     p_request_id, -- REQUEST_ID
5177     p_batch_id, --BATCH_ID
5178     g_auction_item_type, -- ENTITY_TYPE
5179     p_auction_header_id, -- AUCTION_HEADER_ID
5180     LINE_NUMBER, -- LINE_NUMBER
5181     p_expiration_date, -- EXPIRATION_DATE
5182     'NUM', -- TOKEN1_NAME
5183     Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER), -- TOKEN1_VALUE
5184     p_user_id, -- CREATED_BY
5185     sysdate, -- CREATION_DATE
5186     p_user_id, -- LAST_UPDATED_BY
5187     sysdate, -- LAST_UPDATE_DATE
5188     p_login_id -- LAST_UPDATE_LOGIN
5189   )
5190 
5191   -- VALIDATE CATEGORY
5192 
5193   WHEN
5194   (
5195     SELECTED_LINE_ORIGINATION_CODE = 'BLANKET' AND
5196     SELECTED_ITEM_ID IS NOT NULL AND
5197     NOT EXISTS (SELECT  'X'
5198                         FROM  MTL_ITEM_CATEGORIES MIC,
5199                               MTL_DEFAULT_SETS_VIEW MDSV,
5200                               FINANCIALS_SYSTEM_PARAMS_ALL FSP
5201                        WHERE  MIC.INVENTORY_ITEM_ID = SELECTED_ITEM_ID
5202                          AND  MIC.ORGANIZATION_ID =
5203                               FSP.INVENTORY_ORGANIZATION_ID
5204                          AND  NVL(FSP.ORG_ID, -9999) = NVL(SELECTED_ORG_ID, -9999)
5205                          AND  MIC.CATEGORY_SET_ID =  MDSV.CATEGORY_SET_ID
5206                          AND  MDSV.FUNCTIONAL_AREA_ID = 2)
5207   )
5208   THEN INTO PON_INTERFACE_ERRORS
5209   (
5210     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID,
5211     LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE,
5212     LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
5213   )
5214   VALUES
5215   (
5216       g_interface_type, --INTERFACE_TYPE
5217       'PON_AUC_DATA_INVALID_REF_CAT', -- ERROR_MESSAGE_NAME
5218       p_request_id, -- REQUEST_ID
5219       p_batch_id, --BATCH_ID
5220       g_auction_item_type, -- ENTITY_TYPE
5221       p_auction_header_id, -- AUCTION_HEADER_ID
5222       LINE_NUMBER, -- LINE_NUMBER
5223       p_expiration_date, -- EXPIRATION_DATE
5224       'NUM', -- TOKEN1_NAME
5225       decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER), -- TOKEN1_VALUE
5226       p_user_id, -- CREATED_BY
5227       sysdate, -- CREATION_DATE
5228       p_user_id, -- LAST_UPDATED_BY
5229       sysdate, -- LAST_UPDATE_DATE
5230       p_login_id -- LAST_UPDATE_LOGIN
5231   )
5232 
5233   -- VALIDATE ITEM REVISION
5234 
5235   WHEN
5236   (
5237      SELECTED_LINE_ORIGINATION_CODE = 'BLANKET' AND
5238      SELECTED_ITEM_ID IS NOT NULL AND
5239      SELECTED_ITEM_REVISION IS NOT NULL AND
5240      NOT EXISTS (SELECT  'X'
5241                  FROM  MTL_ITEM_REVISIONS
5242                  WHERE  REVISION = SELECTED_ITEM_REVISION AND
5243                INVENTORY_ITEM_ID = SELECTED_ITEM_ID)
5244   )
5245   THEN INTO PON_INTERFACE_ERRORS
5246   (
5247     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID,
5248     LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE,
5249     LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
5250   )
5251   VALUES
5252   (
5253     g_interface_type, --INTERFACE_TYPE
5254     'PON_AUC_DATA_INVALID_REF_REV', -- ERROR_MESSAGE_NAME
5255     p_request_id, -- REQUEST_ID
5256     p_batch_id, --BATCH_ID
5257     g_auction_item_type, -- ENTITY_TYPE
5258     p_auction_header_id, -- AUCTION_HEADER_ID
5259     LINE_NUMBER, -- LINE_NUMBER
5260     p_expiration_date, -- EXPIRATION_DATE
5261     'NUM', -- TOKEN1_NAME
5262     Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER), -- TOKEN1_VALUE
5263     p_user_id, -- CREATED_BY
5264     sysdate, -- CREATION_DATE
5265     p_user_id, -- LAST_UPDATED_BY
5266     sysdate, -- LAST_UPDATE_DATE
5267     p_login_id -- LAST_UPDATE_LOGIN
5268   )
5269 
5270   -- VALIDATE OUTSIDE PROCESSING
5271 
5272   WHEN
5273   (
5274     SELECTED_LINE_ORIGINATION_CODE = 'BLANKET' AND
5275     SELECTED_ITEM_ID IS NOT NULL AND
5276     NOT EXISTS (SELECT  'X'
5277                 FROM
5278                 MTL_SYSTEM_ITEMS MSI,
5279                   FINANCIALS_SYSTEM_PARAMS_ALL FSP
5280                 WHERE
5281                 MSI.INVENTORY_ITEM_ID = SELECTED_ITEM_ID AND
5282                 MSI.ORGANIZATION_ID = FSP.INVENTORY_ORGANIZATION_ID AND
5283                 NVL(FSP.ORG_ID, -9999) = NVL(SELECTED_ORG_ID, -9999) AND
5284                 (MSI.OUTSIDE_OPERATION_FLAG <> 'Y'
5285                               OR (MSI.OUTSIDE_OPERATION_FLAG = 'Y'
5286                                  AND EXISTS (SELECT  'OP LINE TYPE'
5287                                                FROM  PO_LINE_TYPES_B PLT
5288                                               WHERE  PLT.LINE_TYPE_ID = SELECTED_LINE_TYPE_ID
5289                                                 AND  PLT.OUTSIDE_OPERATION_FLAG ='Y') ) ) )
5290   )
5291   THEN INTO PON_INTERFACE_ERRORS
5292   (
5293     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID,
5294     LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE,
5295     LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
5296   )
5297   VALUES
5298   (
5299     g_interface_type, --INTERFACE_TYPE
5300     'PON_AUC_INVALID_OP_LINE_REF', -- ERROR_MESSAGE_NAME
5301     p_request_id, -- REQUEST_ID
5302     p_batch_id, --BATCH_ID
5303     g_auction_item_type, -- ENTITY_TYPE
5304     p_auction_header_id, -- AUCTION_HEADER_ID
5305     LINE_NUMBER, -- LINE_NUMBER
5306     p_expiration_date, -- EXPIRATION_DATE
5307     'NUM', -- TOKEN1_NAME
5308     Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER), -- TOKEN1_VALUE
5309     p_user_id, -- CREATED_BY
5310     sysdate, -- CREATION_DATE
5311     p_user_id, -- LAST_UPDATED_BY
5312     sysdate, -- LAST_UPDATE_DATE
5313     p_login_id -- LAST_UPDATE_LOGIN
5314   )
5315 
5316   -- VALIDATE ITEM PURCHASEABLE
5317 
5318   WHEN
5319   (
5320     SELECTED_LINE_ORIGINATION_CODE = 'BLANKET' AND
5321     SELECTED_ITEM_ID IS NOT NULL AND
5322     NOT EXISTS (SELECT  'X'
5323                 FROM
5324                 MTL_SYSTEM_ITEMS MSI,
5325                   FINANCIALS_SYSTEM_PARAMS_ALL FSP
5326                 WHERE
5327                 MSI.INVENTORY_ITEM_ID = SELECTED_ITEM_ID AND
5328                 MSI.PURCHASING_ENABLED_FLAG = 'Y' AND
5329                 MSI.ORGANIZATION_ID = FSP.INVENTORY_ORGANIZATION_ID AND
5330                 NVL(FSP.ORG_ID, -9999) = NVL(SELECTED_ORG_ID, -9999))
5331   )
5332   THEN INTO PON_INTERFACE_ERRORS
5333   (
5334     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID,
5335     LINE_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, CREATED_BY, CREATION_DATE,
5336     LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
5337   )
5338   VALUES
5339   (
5340     g_interface_type, --INTERFACE_TYPE
5341     'PON_AUC_ITEM_NOT_PURCHASE_REF', -- ERROR_MESSAGE_NAME
5342     p_request_id, -- REQUEST_ID
5343     p_batch_id, --BATCH_ID
5344     g_auction_item_type, -- ENTITY_TYPE
5345     p_auction_header_id, -- AUCTION_HEADER_ID
5346     LINE_NUMBER, -- LINE_NUMBER
5347     p_expiration_date, -- EXPIRATION_DATE
5348     'NUM', -- TOKEN1_NAME
5349     Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER), -- TOKEN1_VALUE
5350     p_user_id, -- CREATED_BY
5351     sysdate, -- CREATION_DATE
5352     p_user_id, -- LAST_UPDATED_BY
5353     sysdate, -- LAST_UPDATE_DATE
5354     p_login_id -- LAST_UPDATE_LOGIN
5355   )
5356 
5357   SELECT
5358     PAIP.JOB_ID SELECTED_JOB_ID,
5359     PAIP.PURCHASE_BASIS SELECTED_PURCHASE_BASIS,
5360     PAIP.LINE_ORIGINATION_CODE SELECTED_LINE_ORIGINATION_CODE,
5361     PAIP.LINE_TYPE_ID SELECTED_LINE_TYPE_ID,
5362     PAIP.ITEM_ID SELECTED_ITEM_ID,
5363     PAIP.ORG_ID SELECTED_ORG_ID,
5364     PAIP.ITEM_REVISION SELECTED_ITEM_REVISION,
5365     PAIP.DOCUMENT_DISP_LINE_NUMBER,
5366     PAIP.LINE_NUMBER,
5367     Nvl(paip.clm_info_flag, 'N') sel_clm_info_flag, -- clin slin changes
5368     PAIP.LINE_NUM_DISPLAY
5369   FROM
5370     PON_AUCTION_ITEM_PRICES_ALL PAIP
5371   WHERE
5372     PAIP.AUCTION_HEADER_ID = p_auction_header_id
5373     AND Nvl(paip.clm_info_flag,'N')<>'Y';
5374 
5375   INSERT ALL
5376 
5377   -- VALIDATE SHIP TO ORG 1
5378 
5379   WHEN
5380   (
5381     SELECTED_SHIP_TO_ORG_ID IS NOT NULL AND
5382     SELECTED_ITEM_ID IS NOT NULL AND
5383     SELECTED_ITEM_REVISION IS NOT NULL AND
5384     SELECTED_SHIP_TO_ORG_ID NOT IN
5385       (SELECT  OOD.ORGANIZATION_ID
5386          FROM  ORG_ORGANIZATION_DEFINITIONS OOD,
5387                MTL_SYSTEM_ITEMS MSI,
5388                MTL_ITEM_REVISIONS MIR,
5389                FINANCIALS_SYSTEM_PARAMS_ALL FSP,
5390                PO_LINE_TYPES_B PLTB
5391         WHERE  OOD.SET_OF_BOOKS_ID = FSP.SET_OF_BOOKS_ID AND
5392                FSP.ORG_ID = SELECTED_ORG_ID AND
5393                PLTB.LINE_TYPE_ID = SELECTED_LINE_TYPE_ID AND
5394                SYSDATE < NVL(OOD.DISABLE_DATE,SYSDATE+1) AND
5395                OOD.ORGANIZATION_ID = MIR.ORGANIZATION_ID AND
5396                MSI.ORGANIZATION_ID = OOD.ORGANIZATION_ID AND
5397                MSI.PURCHASING_ENABLED_FLAG = 'Y' AND
5398                MIR.INVENTORY_ITEM_ID = SELECTED_ITEM_ID AND
5399                MIR.REVISION = SELECTED_ITEM_REVISION AND
5400                MSI.INVENTORY_ITEM_ID = MIR.INVENTORY_ITEM_ID AND
5401                ((PLTB.OUTSIDE_OPERATION_FLAG = 'Y' AND
5402                  MSI.OUTSIDE_OPERATION_FLAG = 'Y') OR PLTB.OUTSIDE_OPERATION_FLAG = 'N'))
5403   )
5404   THEN INTO PON_INTERFACE_ERRORS
5405   (
5406     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID,
5407     LINE_NUMBER, SHIPMENT_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
5408     TOKEN2_NAME, TOKEN2_VALUE, CREATED_BY, CREATION_DATE,
5409     LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
5410   )
5411   VALUES
5412   (
5413     g_interface_type, --INTERFACE_TYPE
5414     'PON_AUC_DATA_INVALID_SHIPO_REF', -- ERROR_MESSAGE_NAME
5415     p_request_id, -- REQUEST_ID
5416     p_batch_id, --BATCH_ID
5417     g_auction_pbs_type, -- ENTITY_TYPE
5418     p_auction_header_id, -- AUCTION_HEADER_ID
5419     LINE_NUMBER, -- LINE_NUMBER
5420     SHIPMENT_NUMBER, -- SHIPMENT_NUMBER
5421     p_expiration_date, -- EXPIRATION_DATE
5422     'ITEMNUM', -- TOKEN1_NAME
5423     Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER), -- TOKEN1_VALUE
5424     'SHIPNUM', -- TOKEN2_NAME
5425     SHIPMENT_NUMBER, -- TOKEN2_VALUE
5426     p_user_id, -- CREATED_BY
5427     sysdate, -- CREATION_DATE
5428     p_user_id, -- LAST_UPDATED_BY
5429     sysdate, -- LAST_UPDATE_DATE
5430     p_login_id -- LAST_UPDATE_LOGIN
5431   )
5432 
5433   -- VALIDATE SHIP TO LOC
5434 
5435   WHEN
5436   (
5437     SELECTED_SHIP_TO_LOCATION_ID IS NOT NULL AND
5438     SELECTED_SHIP_TO_LOCATION_ID NOT IN
5439       (SELECT  LOC.LOCATION_ID
5440          FROM  HR_LOCATIONS_ALL LOC,
5441                HR_ALL_ORGANIZATION_UNITS HAOU
5442         WHERE  HAOU.ORGANIZATION_ID = SELECTED_ORG_ID AND
5443                NVL (LOC.BUSINESS_GROUP_ID, NVL(HAOU.BUSINESS_GROUP_ID, -99)) = NVL (HAOU.BUSINESS_GROUP_ID, -99) AND
5444           LOC.SHIP_TO_SITE_FLAG = 'Y' AND
5445           (SELECTED_SHIP_TO_ORG_ID IS NULL OR
5446            NVL(LOC.INVENTORY_ORGANIZATION_ID, NVL(SELECTED_SHIP_TO_ORG_ID,-1)) = NVL(SELECTED_SHIP_TO_ORG_ID,-1)) AND SYSDATE < NVL(LOC.INACTIVE_DATE, SYSDATE + 1))
5447   )
5448   THEN INTO PON_INTERFACE_ERRORS
5449   (
5450     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID,
5451     LINE_NUMBER, SHIPMENT_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, TOKEN2_NAME,
5452     TOKEN2_VALUE, CREATED_BY, CREATION_DATE,
5453     LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
5454   )
5455   VALUES
5456   (
5457     g_interface_type, --INTERFACE_TYPE
5458     'PON_AUC_DATA_INVALID_SHIPL_REF', -- ERROR_MESSAGE_NAME
5459     p_request_id, -- REQUEST_ID
5460     p_batch_id, --BATCH_ID
5461     g_auction_pbs_type, -- ENTITY_TYPE
5462     p_auction_header_id, -- AUCTION_HEADER_ID
5463     LINE_NUMBER, -- LINE_NUMBER
5464     SHIPMENT_NUMBER, -- SHIPMENT_NUMBER
5465     p_expiration_date, -- EXPIRATION_DATE
5466     'ITEMNUM', -- TOKEN1_NAME
5467     Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER), -- TOKEN1_VALUE
5468     'SHIPNUM', -- TOKEN2_NAME
5469     SHIPMENT_NUMBER, -- TOKEN2_VALUE
5470     p_user_id, -- CREATED_BY
5471     sysdate, -- CREATION_DATE
5472     p_user_id, -- LAST_UPDATED_BY
5473     sysdate, -- LAST_UPDATE_DATE
5474     p_login_id -- LAST_UPDATE_LOGIN
5475   )
5476 
5477   SELECT
5478     PAIP.LINE_NUMBER,
5479     PAIP.DOCUMENT_DISP_LINE_NUMBER,
5480     PSA.SHIPMENT_NUMBER,
5481     PSA.SHIP_TO_LOCATION_ID SELECTED_SHIP_TO_LOCATION_ID,
5482     PSA.SHIP_TO_ORGANIZATION_ID SELECTED_SHIP_TO_ORG_ID,
5483     PAIP.ORG_ID SELECTED_ORG_ID,
5484     PAIP.ITEM_ID SELECTED_ITEM_ID,
5485     PAIP.ITEM_REVISION SELECTED_ITEM_REVISION,
5486     PAIP.LINE_TYPE_ID SELECTED_LINE_TYPE_ID,
5487     PAIP.LINE_NUM_DISPLAY
5488   FROM
5489     PON_AUCTION_SHIPMENTS_ALL PSA,
5490     PON_AUCTION_ITEM_PRICES_ALL PAIP
5491   WHERE
5492     PSA.AUCTION_HEADER_ID = P_AUCTION_HEADER_ID AND
5493     PAIP.AUCTION_HEADER_ID = P_AUCTION_HEADER_ID AND
5494     PSA.LINE_NUMBER = PAIP.LINE_NUMBER;
5495 
5496   INSERT ALL
5497 
5498   -- VALIDATE SHIP TO ORG 2
5499 
5500   WHEN
5501   (
5502     SELECTED_SHIP_TO_ORG_ID IS NOT NULL AND
5503     SELECTED_ITEM_ID IS NOT NULL AND
5504     SELECTED_ITEM_REVISION IS NULL AND
5505     SELECTED_SHIP_TO_ORG_ID NOT IN
5506       (SELECT  OOD.ORGANIZATION_ID
5507          FROM  ORG_ORGANIZATION_DEFINITIONS OOD,
5508                MTL_SYSTEM_ITEMS_KFV MSI,
5509                FINANCIALS_SYSTEM_PARAMS_ALL FSP,
5510                PO_LINE_TYPES_B PLTB
5511         WHERE  OOD.SET_OF_BOOKS_ID = FSP.SET_OF_BOOKS_ID AND
5512                FSP.ORG_ID = SELECTED_ORG_ID AND
5513                PLTB.LINE_TYPE_ID = SELECTED_LINE_TYPE_ID AND
5514                SYSDATE < NVL(OOD.DISABLE_DATE,SYSDATE+1) AND
5515                OOD.ORGANIZATION_ID = MSI.ORGANIZATION_ID AND
5516                MSI.INVENTORY_ITEM_ID = SELECTED_ITEM_ID AND
5517                MSI.PURCHASING_ENABLED_FLAG = 'Y' AND
5518                NVL(MSI.OUTSIDE_OPERATION_FLAG, 'N') =
5519   NVL(PLTB.OUTSIDE_OPERATION_FLAG, 'N'))
5520   )
5521   THEN INTO PON_INTERFACE_ERRORS
5522   (
5523     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID,
5524     LINE_NUMBER, SHIPMENT_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
5525     TOKEN2_NAME, TOKEN2_VALUE, CREATED_BY, CREATION_DATE,
5526     LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
5527   )
5528   VALUES
5529   (
5530     g_interface_type, --INTERFACE_TYPE
5531     'PON_AUC_DATA_INVALID_SHIPO_REF', -- ERROR_MESSAGE_NAME
5532     p_request_id, -- REQUEST_ID
5533     p_batch_id, --BATCH_ID
5534     g_auction_pbs_type, -- ENTITY_TYPE
5535     p_auction_header_id, -- AUCTION_HEADER_ID
5536     LINE_NUMBER, -- LINE_NUMBER
5537     SHIPMENT_NUMBER, -- SHIPMENT_NUMBER
5538     p_expiration_date, -- EXPIRATION_DATE
5539     'ITEMNUM', -- TOKEN1_NAME
5540     Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER), -- TOKEN1_VALUE
5541     'SHIPNUM', -- TOKEN2_NAME
5542     SHIPMENT_NUMBER, -- TOKEN2_VALUE
5543     p_user_id, -- CREATED_BY
5544     sysdate, -- CREATION_DATE
5545     p_user_id, -- LAST_UPDATED_BY
5546     sysdate, -- LAST_UPDATE_DATE
5547     p_login_id -- LAST_UPDATE_LOGIN
5548   )
5549 
5550   -- VALIDATE SHIP TO ORG 3
5551 
5552   WHEN
5553   (
5554     SELECTED_SHIP_TO_ORG_ID IS NOT NULL AND
5555     SELECTED_ITEM_ID IS NULL AND
5556     SELECTED_SHIP_TO_ORG_ID NOT IN
5557       (SELECT  OOD.ORGANIZATION_ID
5558          FROM  ORG_ORGANIZATION_DEFINITIONS OOD,
5559                FINANCIALS_SYSTEM_PARAMS_ALL FSP
5560         WHERE  OOD.SET_OF_BOOKS_ID = FSP.SET_OF_BOOKS_ID AND
5561                FSP.ORG_ID = SELECTED_ORG_ID AND
5562                SYSDATE < NVL(OOD.DISABLE_DATE,SYSDATE+1) )
5563   )
5564   THEN INTO PON_INTERFACE_ERRORS
5565   (
5566     INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE, AUCTION_HEADER_ID,
5567     LINE_NUMBER, SHIPMENT_NUMBER, EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
5568     TOKEN2_NAME, TOKEN2_VALUE, CREATED_BY, CREATION_DATE,
5569     LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
5570   )
5571   VALUES
5572   (
5573     g_interface_type, --INTERFACE_TYPE
5574     'PON_AUC_DATA_INVALID_SHIPO_REF', -- ERROR_MESSAGE_NAME
5575     p_request_id, -- REQUEST_ID
5576     p_batch_id, --BATCH_ID
5577     g_auction_pbs_type, -- ENTITY_TYPE
5578     p_auction_header_id, -- AUCTION_HEADER_ID
5579     LINE_NUMBER, -- LINE_NUMBER
5580     SHIPMENT_NUMBER, -- SHIPMENT_NUMBER
5581     p_expiration_date, -- EXPIRATION_DATE
5582     'ITEMNUM', -- TOKEN1_NAME
5583     Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER), -- TOKEN1_VALUE
5584     'SHIPNUM', -- TOKEN2_NAME
5585     SHIPMENT_NUMBER, -- TOKEN2_VALUE
5586     p_user_id, -- CREATED_BY
5587     sysdate, -- CREATION_DATE
5588     p_user_id, -- LAST_UPDATED_BY
5589     sysdate, -- LAST_UPDATE_DATE
5590     p_login_id -- LAST_UPDATE_LOGIN
5591   )
5592 
5593   SELECT
5594     PAIP.LINE_NUMBER,
5595     PAIP.DOCUMENT_DISP_LINE_NUMBER,
5596     PSA.SHIPMENT_NUMBER,
5597     PSA.SHIP_TO_ORGANIZATION_ID SELECTED_SHIP_TO_ORG_ID,
5598     PAIP.ORG_ID SELECTED_ORG_ID,
5599     PAIP.ITEM_ID SELECTED_ITEM_ID,
5600     PAIP.ITEM_REVISION SELECTED_ITEM_REVISION,
5601     PAIP.LINE_TYPE_ID SELECTED_LINE_TYPE_ID,
5602     PAIP.LINE_NUM_DISPLAY
5603   FROM
5604     PON_AUCTION_SHIPMENTS_ALL PSA,
5605     PON_AUCTION_ITEM_PRICES_ALL PAIP
5606   WHERE
5607     PSA.AUCTION_HEADER_ID = P_AUCTION_HEADER_ID AND
5608     PAIP.AUCTION_HEADER_ID = P_AUCTION_HEADER_ID AND
5609     PSA.LINE_NUMBER = PAIP.LINE_NUMBER;
5610 
5611   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
5612     FND_LOG.string(log_level => FND_LOG.level_procedure,
5613       module  =>  g_module_prefix || 'VAL_LINE_REF_DATA',
5614       message  => 'Leaving Procedure');
5615   END IF; --}
5616 
5617 END VAL_LINE_REF_DATA;
5618 
5619 PROCEDURE VAL_OUTSIDE_FLAG_EXISTS (
5620   p_auction_header_id IN NUMBER,
5621   p_is_global_agreement IN BOOLEAN,
5622   p_request_id IN NUMBER,
5623   p_expiration_date IN DATE,
5624   p_user_id IN NUMBER,
5625   p_login_id IN NUMBER,
5626   p_batch_id IN NUMBER
5627 ) IS
5628 
5629 l_outside_flag NUMBER;
5630 BEGIN
5631 
5632   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
5633     FND_LOG.string(log_level => FND_LOG.level_procedure,
5634       module  =>  g_module_prefix || 'VAL_OUTSIDE_FLAG_EXISTS',
5635       message  => 'Entering Procedure p_auction_header_id = ' || p_auction_header_id);
5636   END IF; --}
5637 
5638   --VALIDATION FOR OUTSIDE FLAG ONLY
5639   --IN CASE OF GLOBAL AGREEMENTS
5640 
5641   --ONLY ONE ERROR WILL BE SHOWN SO ROWNUM = 1
5642   IF (p_is_global_agreement) THEN
5643 
5644     IF (FND_LOG.level_statement>= FND_LOG.g_current_runtime_level) THEN --{
5645       FND_LOG.string(log_level => FND_LOG.level_statement,
5646         module  =>  g_module_prefix || 'VAL_OUTSIDE_FLAG_EXISTS',
5647         message  => 'This is a global agreement so validation for outside ops');
5648     END IF; --}
5649 
5650     INSERT INTO PON_INTERFACE_ERRORS
5651     (
5652       INTERFACE_TYPE, ERROR_MESSAGE_NAME, REQUEST_ID, BATCH_ID, ENTITY_TYPE,
5653       AUCTION_HEADER_ID, EXPIRATION_DATE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY,
5654       LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
5655     )
5656     SELECT
5657       g_interface_type, -- INTERFACE_TYPE
5658       'PON_AUC_GLOBAL_OP_LINE', -- ERROR_MESSAGE_NAME
5659       p_request_id, -- REQUEST_ID
5660       p_batch_id, -- BATCH_ID
5661       g_auction_item_type, -- ENTITY_TYPE
5662       p_auction_header_id, -- AUCTION_HEADER_ID
5663       p_expiration_date, -- EXPIRATION_DATE
5664       p_user_id, -- CREATED_BY
5665       sysdate, -- CREATION_DATE
5666       p_user_id, -- LAST_UPDATED_BY
5667       sysdate, -- LAST_UPDATE_DATE
5668       p_login_id -- LAST_UPDATE_LOGIN
5669     FROM
5670       PO_LINE_TYPES_B PLTB,
5671       PON_AUCTION_ITEM_PRICES_ALL PAIP
5672     WHERE
5673       PAIP.AUCTION_HEADER_ID=p_auction_header_id AND
5674       PLTB.LINE_TYPE_ID= PAIP.LINE_TYPE_ID AND
5675       PLTB.OUTSIDE_OPERATION_FLAG='Y' AND
5676       ROWNUM=1;
5677   END IF;
5678 
5679   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
5680     FND_LOG.string(log_level => FND_LOG.level_procedure,
5681       module  =>  g_module_prefix || 'VAL_OUTSIDE_FLAG_EXISTS',
5682       message  => 'Leaving Procedure');
5683   END IF; --}
5684 END VAL_OUTSIDE_FLAG_EXISTS;
5685 
5686 PROCEDURE validate_complexwork_lines(
5687   p_auction_header_id     IN NUMBER,
5688   p_request_id            IN NUMBER,
5689   p_expiration_date       IN DATE,
5690   p_user_id               IN NUMBER,
5691   p_login_id              IN NUMBER,
5692   p_batch_id              IN NUMBER,
5693   p_fnd_currency_precision IN NUMBER
5694                         )
5695 IS
5696 l_contract_type              PON_AUCTION_HEADERS_ALL.contract_type%TYPE;
5697 l_progress_payment_type      PON_AUCTION_HEADERS_ALL.progress_payment_type%TYPE;
5698 l_recoupment_negotiable_flag PON_AUCTION_HEADERS_ALL.recoupment_negotiable_flag%TYPE;
5699 l_advance_negotiable_flag    PON_AUCTION_HEADERS_ALL.advance_negotiable_flag%TYPE;
5700 
5701 CURSOR l_proj_cursor IS
5702   SELECT line_number, document_disp_line_number,
5703          project_id, project_task_id, project_expenditure_type,
5704 		 project_exp_organization_id, project_expenditure_item_date
5705   FROM PON_AUCTION_ITEM_PRICES_ALL
5706   WHERE auction_header_id=p_auction_header_id
5707   AND project_id IS NOT NULL
5708   AND project_task_id IS NOT NULL
5709   AND project_expenditure_type IS NOT NULL
5710   AND project_exp_organization_id IS NOT NULL
5711   AND project_expenditure_item_date IS NOT NULL;
5712 
5713 BEGIN
5714 
5715 SELECT pah.contract_type,
5716        pah.progress_payment_type,
5717 	   pah.recoupment_negotiable_flag,
5718 	   pah.advance_negotiable_flag
5719 INTO   l_contract_type,
5720        l_progress_payment_type,
5721        l_recoupment_negotiable_flag,
5722        l_advance_negotiable_flag
5723 FROM  pon_auction_headers_all pah
5724 WHERE auction_header_id = p_auction_header_id;
5725 
5726 IF l_progress_payment_type <> 'NONE' AND l_contract_type = 'CONTRACT' THEN
5727   INSERT ALL
5728   WHEN NOT ((order_type_lookup_code = 'FIXED PRICE' AND purchase_basis = 'SERVICES') OR
5729    (order_type_lookup_code = 'QUANTITY' AND purchase_basis = 'GOODS'))
5730    OR po_outside_operation_flag = 'Y' THEN
5731    INTO pon_interface_errors
5732    (
5733     interface_type,               error_message_name,                                         batch_id,               -- 1
5734     entity_type,                  auction_header_id,                                          line_number,            -- 2
5735     token1_name,                  token1_value,                                               expiration_date,        -- 3
5736     created_by,                   creation_date,                                              last_updated_by,        -- 4
5737     last_update_date,             last_update_login,                                           request_id              -- 5
5738    )
5739   VALUES
5740    (
5741     g_interface_type,             'PON_LINE_TYPE_INVALID_L',                                  p_batch_id,                      -- 2
5742     g_auction_item_type,          auction_header_id,                                          s_line_number,     -- 3
5743     'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),                                  p_expiration_date,             -- 4
5744     p_user_id,                    SYSDATE,                                                    p_user_id,                      -- 5
5745     SYSDATE,                      p_login_id,                                                 p_request_id                    -- 6
5746    )
5747   SELECT
5748        paip.AUCTION_HEADER_ID,
5749        paip.DOCUMENT_DISP_LINE_NUMBER,
5750        paip.PURCHASE_BASIS,
5751        paip.ORDER_TYPE_LOOKUP_CODE,
5752        paip.line_number s_line_number,
5753        plt.outside_operation_flag po_outside_operation_flag,
5754        paip.line_num_display
5755   FROM PON_AUCTION_ITEM_PRICES_ALL paip,
5756        PO_LINE_TYPES plt
5757   WHERE paip.auction_header_id = p_auction_header_id
5758   AND   paip.line_type_id = plt.line_type_id (+)
5759   AND   paip.group_type NOT IN ('GROUP','LOT_LINE');
5760 
5761 ELSIF l_contract_type = 'STANDARD' THEN
5762 
5763   INSERT ALL
5764   WHEN s_clm_info_flag = 'N' AND retainage_rate_percent IS NOT NULL AND (retainage_rate_percent < 0 OR retainage_rate_percent > 100) THEN
5765    INTO pon_interface_errors
5766    (
5767     interface_type,               error_message_name,                                         batch_id,               -- 2
5768     entity_type,            auction_header_id,                                          line_number,            -- 3
5769     token1_name,                  token1_value,                                               expiration_date,        -- 4
5770     created_by,                   creation_date,                                              last_updated_by,        -- 5
5771     last_update_date,             last_update_login,                                           request_id              -- 6
5772    )
5773   VALUES
5774    (
5775     g_interface_type,             'PON_RTNG_RATE_WRONG_L',                                      p_batch_id,                      -- 2
5776     g_auction_item_type,            auction_header_id,                                           s_line_number,     -- 3
5777     'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),                                    p_expiration_date,             -- 4
5778     p_user_id,                     SYSDATE,                                                     p_user_id,                      -- 5
5779     SYSDATE,                      p_login_id,                                                   p_request_id                     -- 6
5780    )
5781 
5782   WHEN s_clm_info_flag = 'N' AND max_retainage_amount IS NOT NULL AND max_retainage_amount < 0 THEN
5783    INTO pon_interface_errors
5784    (
5785     interface_type,               error_message_name,                                         batch_id,               -- 2
5786     entity_type,            auction_header_id,                                          line_number,            -- 3
5787     token1_name,                  token1_value,                                               expiration_date,        -- 4
5788     created_by,                   creation_date,                                              last_updated_by,        -- 5
5789     last_update_date,             last_update_login,                                           request_id              -- 6
5790     )
5791   VALUES
5792    (
5793     g_interface_type,             'PON_MAX_RTNG_WRONG_L',                                       p_batch_id,                      -- 2
5794     g_auction_item_type,            auction_header_id,                                          s_line_number,     -- 3
5795     'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),                                    p_expiration_date,             -- 4
5796     p_user_id,                     SYSDATE,                                                    p_user_id,                      -- 5
5797     SYSDATE,                      p_login_id,                                                   p_request_id                     -- 6
5798    )
5799 
5800   WHEN s_clm_info_flag = 'N' AND advance_amount IS NOT NULL AND advance_amount < 0 THEN
5801    INTO pon_interface_errors
5802    (
5803     interface_type,               error_message_name,                                         batch_id,               -- 2
5804     entity_type,            auction_header_id,                                          line_number,            -- 3
5805     token1_name,                  token1_value,                                               expiration_date,        -- 4
5806     created_by,                   creation_date,                                              last_updated_by,        -- 5
5807     last_update_date,             last_update_login,                                           request_id              -- 6
5808    )
5809   VALUES
5810    (
5811     g_interface_type,             'PON_ADV_AMT_WRONG_L',                                        p_batch_id,                      -- 2
5812     g_auction_item_type,            auction_header_id,                                          s_line_number,     -- 3
5813     'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),                                    p_expiration_date,             -- 4
5814     p_user_id,                     SYSDATE,                                                    p_user_id,                      -- 5
5815     SYSDATE,                      p_login_id,                                                   p_request_id                     -- 6
5816    )
5817 
5818   WHEN s_clm_info_flag = 'N' AND progress_pymt_rate_percent IS NOT NULL AND (progress_pymt_rate_percent < 0 OR progress_pymt_rate_percent > 100) then
5819    INTO pon_interface_errors
5820    (
5821     interface_type,               error_message_name,                                         batch_id,               -- 2
5822     entity_type,            auction_header_id,                                          line_number,            -- 3
5823     token1_name,                  token1_value,                                               expiration_date,        -- 4
5824     created_by,                   creation_date,                                              last_updated_by,        -- 5
5825     last_update_date,             last_update_login,                                           request_id              -- 6
5826    )
5827   VALUES
5828    (
5829     g_interface_type,             'PON_PROG_PYMT_RATE_WRONG_L',                                 p_batch_id,                      -- 2
5830     g_auction_item_type,            auction_header_id,                                          s_line_number,     -- 3
5831     'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),                                    p_expiration_date,             -- 4
5832     p_user_id,                     SYSDATE,                                                    p_user_id,                      -- 5
5833     SYSDATE,                      p_login_id,                                                   p_request_id                     -- 6
5834    )
5835   WHEN s_clm_info_flag = 'N' AND recoupment_rate_percent IS NOT NULL AND (recoupment_rate_percent < 0 OR recoupment_rate_percent > 100) THEN
5836    INTO pon_interface_errors
5837    (
5838     interface_type,             error_message_name,                                         batch_id,               -- 2
5839     entity_type,            auction_header_id,                                          line_number,            -- 3
5840     token1_name,                  token1_value,                                               expiration_date,        -- 4
5841     created_by,                   creation_date,                                              last_updated_by,        -- 5
5842     last_update_date,             last_update_login,                                           request_id              -- 6
5843    )
5844   VALUES
5845    (
5846     g_interface_type,               'PON_RECOUP_RATE_WRONG_L',                                    p_batch_id,                      -- 2
5847     g_auction_item_type,            auction_header_id,                                          s_line_number,     -- 3
5848     'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),                                    p_expiration_date,             -- 4
5849     p_user_id,                     SYSDATE,                                                    p_user_id,                      -- 5
5850     SYSDATE,                      p_login_id,                                                   p_request_id                     -- 6
5851    )
5852 
5853   WHEN s_clm_info_flag = 'N' AND progress_pymt_rate_percent IS NOT NULL AND
5854        PON_BID_VALIDATIONS_PKG.validate_currency_precision(progress_pymt_rate_percent, 2) = 'F' THEN
5855    INTO pon_interface_errors
5856    (
5857     interface_type,             error_message_name,                                         batch_id,               -- 2
5858     entity_type,            auction_header_id,                                          line_number,            -- 3
5859     token1_name,                  token1_value,                                               expiration_date,        -- 4
5860     created_by,                   creation_date,                                              last_updated_by,        -- 5
5861     last_update_date,             last_update_login,                                           request_id,            -- 6
5862     token2_name,                  token2_value
5863    )
5864   VALUES
5865    (
5866     g_interface_type,               'PON_INVALID_RATE_PRECISION_L',                                    p_batch_id,                      -- 2
5867     g_auction_item_type,            auction_header_id,                                          s_line_number,     -- 3
5868     'ATTRIBUTENAME',              fnd_message.get_string('PON','PON_PROGRESS_PYMT_RATE'),     p_expiration_date,                    -- 4
5869     p_user_id,                     SYSDATE,                                                    p_user_id,                      -- 5
5870     SYSDATE,                      p_login_id,                                                   p_request_id,                  -- 6
5871     'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER)
5872    )
5873 
5874   WHEN s_clm_info_flag = 'N' AND recoupment_rate_percent IS NOT NULL AND
5875        PON_BID_VALIDATIONS_PKG.validate_currency_precision(recoupment_rate_percent, 2) = 'F' THEN
5876    INTO pon_interface_errors
5877    (
5878     interface_type,             error_message_name,                                         batch_id,               -- 2
5879     entity_type,            auction_header_id,                                          line_number,            -- 3
5880     token1_name,                  token1_value,                                               expiration_date,        -- 4
5881     created_by,                   creation_date,                                              last_updated_by,        -- 5
5882     last_update_date,             last_update_login,                                           request_id,            -- 6
5883     token2_name,                  token2_value
5884    )
5885   VALUES
5886    (
5887     g_interface_type,               'PON_INVALID_RATE_PRECISION_L',                                    p_batch_id,                      -- 2
5888     g_auction_item_type,            auction_header_id,                                          s_line_number,     -- 3
5889     'ATTRIBUTENAME',              fnd_message.get_string('PON','PON_RECOUPMENT_RATE'),     p_expiration_date,                    -- 4
5890     p_user_id,                     SYSDATE,                                                    p_user_id,                      -- 5
5891     SYSDATE,                      p_login_id,                                                   p_request_id,                  -- 6
5892     'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER)
5893    )
5894 
5895   WHEN s_clm_info_flag = 'N' AND retainage_rate_percent IS NOT NULL AND
5896        PON_BID_VALIDATIONS_PKG.validate_currency_precision(retainage_rate_percent, 2) = 'F' THEN
5897    INTO pon_interface_errors
5898    (
5899     interface_type,             error_message_name,                                         batch_id,               -- 2
5900     entity_type,            auction_header_id,                                          line_number,            -- 3
5901     token1_name,                  token1_value,                                               expiration_date,        -- 4
5902     created_by,                   creation_date,                                              last_updated_by,        -- 5
5903     last_update_date,             last_update_login,                                           request_id,            -- 6
5904     token2_name,                  token2_value
5905    )
5906   VALUES
5907    (
5908     g_interface_type,               'PON_INVALID_RATE_PRECISION_L',                                    p_batch_id,                      -- 2
5909     g_auction_item_type,            auction_header_id,                                          s_line_number,     -- 3
5910     'ATTRIBUTENAME',              fnd_message.get_string('PON','PON_RETAINAGE_RATE'),     p_expiration_date,                    -- 4
5911     p_user_id,                     SYSDATE,                                                    p_user_id,                      -- 5
5912     SYSDATE,                      p_login_id,                                                   p_request_id,                  -- 6
5913     'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER)
5914    )
5915 
5916   WHEN s_clm_info_flag = 'N' AND advance_amount IS NOT NULL AND
5917        PON_BID_VALIDATIONS_PKG.validate_currency_precision(advance_amount, p_fnd_currency_precision) = 'F' THEN
5918    INTO pon_interface_errors
5919    (
5920     interface_type,             error_message_name,                                         batch_id,               -- 2
5921     entity_type,            auction_header_id,                                          line_number,            -- 3
5922     token1_name,                  token1_value,                                               expiration_date,        -- 4
5923     created_by,                   creation_date,                                              last_updated_by,        -- 5
5924     last_update_date,             last_update_login,                                           request_id,            -- 6
5925     token2_name,                  token2_value
5926    )
5927   VALUES
5928    (
5929     g_interface_type,               'PON_LINEAMT_INVALID_PRECISION',                                    p_batch_id,                      -- 2
5930     g_auction_item_type,            auction_header_id,                                          s_line_number,     -- 3
5931     'ATTRIBUTENAME',              fnd_message.get_string('PON','PON_ADVANCE_AMOUNT_FLAG'),     p_expiration_date,                    -- 4
5932     p_user_id,                     SYSDATE,                                                    p_user_id,                      -- 5
5933     SYSDATE,                      p_login_id,                                                   p_request_id,                  -- 6
5934     'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER)
5935    )
5936 
5937   WHEN s_clm_info_flag = 'N' AND max_retainage_amount IS NOT NULL AND
5938        PON_BID_VALIDATIONS_PKG.validate_currency_precision(max_retainage_amount, p_fnd_currency_precision) = 'F' THEN
5939    INTO pon_interface_errors
5940    (
5941     interface_type,             error_message_name,                                         batch_id,               -- 2
5942     entity_type,            auction_header_id,                                          line_number,            -- 3
5943     token1_name,                  token1_value,                                               expiration_date,        -- 4
5944     created_by,                   creation_date,                                              last_updated_by,        -- 5
5945     last_update_date,             last_update_login,                                           request_id,            -- 6
5946     token2_name,                  token2_value
5947    )
5948   VALUES
5949    (
5950     g_interface_type,               'PON_LINEAMT_INVALID_PRECISION',                                    p_batch_id,                      -- 2
5951     g_auction_item_type,            auction_header_id,                                          s_line_number,     -- 3
5952     'ATTRIBUTENAME',              fnd_message.get_string('PON','PON_MAX_RETAINAGE_AMOUNT'),     p_expiration_date,                    -- 4
5953     p_user_id,                     SYSDATE,                                                    p_user_id,                      -- 5
5954     SYSDATE,                      p_login_id,                                                   p_request_id,                  -- 6
5955     'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER)
5956    )
5957 
5958   WHEN s_clm_info_flag = 'N' AND l_progress_payment_type = 'FINANCE' AND progress_pymt_rate_percent IS NULL THEN
5959    INTO pon_interface_errors
5960    (
5961     interface_type,               error_message_name,                                         batch_id,               -- 2
5962     entity_type,            auction_header_id,                                          line_number,            -- 3
5963     token1_name,                  token1_value,                                               expiration_date,        -- 4
5964     created_by,                   creation_date,                                              last_updated_by,        -- 5
5965     last_update_date,             last_update_login,                                           request_id              -- 6
5966    )
5967   VALUES
5968    (
5969     g_interface_type,             'PON_PROG_PYMT_NEEDED_L',                                 p_batch_id,                      -- 2
5970     g_auction_item_type,            auction_header_id,                                          s_line_number,     -- 3
5971     'LINENUM',                 Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),                                p_expiration_date,                    -- 4
5972     p_user_id,                     SYSDATE,                                                    p_user_id,                      -- 5
5973     SYSDATE,                      p_login_id,                                                   p_request_id                     -- 6
5974    )
5975 
5976   WHEN s_clm_info_flag = 'N' AND (l_progress_payment_type <> 'NONE' AND
5977       (po_outside_operation_flag = 'Y' OR
5978         NOT ((order_type_lookup_code = 'FIXED PRICE' AND purchase_basis = 'SERVICES') OR
5979              (order_type_lookup_code = 'QUANTITY' AND purchase_basis = 'GOODS'))
5980       )) THEN
5981    INTO pon_interface_errors
5982    (
5983     interface_type,               error_message_name,                                         batch_id,               -- 2
5984     entity_type,            auction_header_id,                                          line_number,            -- 3
5985     token1_name,                  token1_value,                                               expiration_date,        -- 4
5986     created_by,                   creation_date,                                              last_updated_by,        -- 5
5987     last_update_date,             last_update_login,                                           request_id              -- 6
5988    )
5989   VALUES
5990    (
5991     g_interface_type,             'PON_LINE_TYPE_INVALID_L',                                    p_batch_id,                      -- 2
5992     g_auction_item_type,            auction_header_id,                                          s_line_number,     -- 3
5993     'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),                                  p_expiration_date,             -- 4
5994     p_user_id,                     SYSDATE,                                                    p_user_id,                      -- 5
5995     SYSDATE,                      p_login_id,                                                   p_request_id                     -- 6
5996    )
5997 
5998   WHEN s_clm_info_flag = 'N' AND progress_pymt_rate_percent IS NOT NULL AND
5999        recoupment_rate_percent IS NULL AND
6000        l_recoupment_negotiable_flag = 'N' THEN
6001    INTO pon_interface_errors
6002    (
6003     interface_type,               error_message_name,                                         batch_id,               -- 2
6004     entity_type,                  auction_header_id,                                          line_number,            -- 3
6005     token1_name,                  token1_value,                                               expiration_date,        -- 4
6006     created_by,                   creation_date,                                              last_updated_by,        -- 5
6007     last_update_date,             last_update_login,                                           request_id              -- 6
6008    )
6009   VALUES
6010    (
6011     g_interface_type,             'PON_RECUP_NEEDED_WITH_PPRATE_L',                             p_batch_id,                      -- 2
6012     g_auction_item_type,          auction_header_id,                                          s_line_number,     -- 3
6013     'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),                                  p_expiration_date,                    -- 4
6014     p_user_id,                     SYSDATE,                                                    p_user_id,                      -- 5
6015     SYSDATE,                      p_login_id,                                                   p_request_id                     -- 6
6016    )
6017 
6018   WHEN s_clm_info_flag = 'N' AND ((advance_amount IS NOT NULL or l_advance_negotiable_flag = 'Y') AND
6019         (recoupment_rate_percent IS NULL AND l_recoupment_negotiable_flag = 'N')) THEN
6020    INTO pon_interface_errors
6021    (
6022     interface_type,               error_message_name,                                         batch_id,               -- 2
6023     entity_type,                  auction_header_id,                                          line_number,            -- 3
6024     token1_name,                  token1_value,                                               expiration_date,        -- 4
6025     created_by,                   creation_date,                                              last_updated_by,        -- 5
6026     last_update_date,             last_update_login,                                           request_id              -- 6
6027    )
6028   VALUES
6029    (
6030     g_interface_type,             'PON_RECUP_NEEDED_WITH_ADVAMT_L',                             p_batch_id,                      -- 2
6031     g_auction_item_type,          auction_header_id,                                          s_line_number,     -- 3
6032     'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),                                  p_expiration_date,                    -- 4
6033     p_user_id,                     SYSDATE,                                                    p_user_id,                      -- 5
6034     SYSDATE,                      p_login_id,                                                   p_request_id                     -- 6
6035    )
6036 
6037   WHEN s_clm_info_flag = 'N' AND target_price IS NOT NULL AND advance_amount IS NOT NULL
6038      AND (advance_amount > nvl(s_quantity,1) * target_price) THEN
6039    INTO pon_interface_errors
6040    (
6041     interface_type,               error_message_name,                                         batch_id,               -- 2
6042     entity_type,                  auction_header_id,                                          line_number,            -- 3
6043     token1_name,                  token1_value,                                               expiration_date,        -- 4
6044     created_by,                   creation_date,                                              last_updated_by,        -- 5
6045     last_update_date,             last_update_login,                                           request_id              -- 6
6046    )
6047   VALUES
6048    (
6049     g_interface_type,             'PON_ADV_AMT_MORE_L',                             p_batch_id,                      -- 2
6050     g_auction_item_type,          auction_header_id,                                          s_line_number,     -- 3
6051     'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),                                  p_expiration_date,                    -- 4
6052     p_user_id,                     SYSDATE,                                                    p_user_id,                      -- 5
6053     SYSDATE,                      p_login_id,                                                   p_request_id                     -- 6
6054    )
6055 
6056   WHEN s_clm_info_flag = 'N' AND l_progress_payment_type = 'ACTUAL' AND recoupment_rate_percent IS NOT NULL
6057      AND target_price IS NOT NULL
6058      AND advance_amount IS NOT NULL
6059      AND (recoupment_rate_percent < (advance_amount * 100)/(nvl(s_quantity,1) * target_price)) THEN
6060    INTO pon_interface_errors
6061    (
6062     interface_type,               error_message_name,                                         batch_id,               -- 2
6063     entity_type,                  auction_header_id,                                          line_number,            -- 3
6064     token1_name,                  token1_value,                                               expiration_date,        -- 4
6065     created_by,                   creation_date,                                              last_updated_by,        -- 5
6066     last_update_date,             last_update_login,                                           request_id              -- 6
6067    )
6068   VALUES
6069    (
6070     g_interface_type,             'PON_RECOUP_LESS_THAN_ADV_L',                             p_batch_id,                      -- 2
6071     g_auction_item_type,          auction_header_id,                                          s_line_number,     -- 3
6072     'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),                                  p_expiration_date,                    -- 4
6073     p_user_id,                     SYSDATE,                                                    p_user_id,                      -- 5
6074     SYSDATE,                      p_login_id,                                                   p_request_id                     -- 6
6075    )
6076 
6077   WHEN s_clm_info_flag = 'N' AND l_progress_payment_type = 'FINANCE' AND recoupment_rate_percent IS NOT NULL
6078      AND target_price IS NOT NULL AND progress_pymt_rate_percent IS NOT NULL
6079      AND recoupment_rate_percent < (((((progress_pymt_rate_percent/100) * (SELECT nvl(sum(nvl(p_aps.target_price,0)*nvl(p_aps.quantity,nvl(s_quantity,1))),0)
6080 			                                                                   FROM PON_AUC_PAYMENTS_SHIPMENTS p_aps
6081 																			   WHERE p_aps.auction_header_id=p_auction_header_id
6082 																			   AND p_aps.line_number=s_line_number ))
6083 			                          + NVL(advance_amount,0)) * 100)/((nvl(s_quantity, 1) * target_price)))  THEN
6084    INTO pon_interface_errors
6085    (
6086     interface_type,               error_message_name,                                         batch_id,               -- 2
6087     entity_type,                  auction_header_id,                                          line_number,            -- 3
6088     token1_name,                  token1_value,                                               expiration_date,        -- 4
6089     created_by,                   creation_date,                                              last_updated_by,        -- 5
6090     last_update_date,             last_update_login,                                           request_id              -- 6
6091    )
6092   VALUES
6093    (
6094     g_interface_type,             'PON_RECOUP_LESS_THAN_PYMT_L',                             p_batch_id,                      -- 2
6095     g_auction_item_type,          auction_header_id,                                          s_line_number,     -- 3
6096     'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),                                  p_expiration_date,                    -- 4
6097     p_user_id,                     SYSDATE,                                                    p_user_id,                      -- 5
6098     SYSDATE,                      p_login_id,                                                   p_request_id                     -- 6
6099    )
6100 
6101   WHEN (pai_project_id IS NOT NULL OR pai_project_task_id IS NOT NULL OR pai_project_exp_org_id IS NOT NULL
6102         OR pai_project_exp_item_date IS NOT NULL OR pai_project_exp_type IS NOT NULL)
6103   AND (pai_project_id IS NULL OR pai_project_task_id IS NULL OR pai_project_exp_org_id IS NULL
6104         OR pai_project_exp_item_date IS NULL OR pai_project_exp_type IS NULL) THEN
6105    INTO pon_interface_errors
6106    (
6107     interface_type,               error_message_name,                                         batch_id,               -- 2
6108     entity_type,            auction_header_id,                                          line_number,            -- 3
6109     token1_name,                  token1_value,                                               expiration_date,        -- 4
6110     created_by,                   creation_date,                                              last_updated_by,        -- 5
6111     last_update_date,             last_update_login,                                           request_id              -- 6
6112    )
6113   VALUES
6114    (
6115     g_interface_type,             'PON_PROJ_INFO_INCOMPLETE_L',                                    p_batch_id,                      -- 2
6116     g_auction_item_type,            auction_header_id,                                          s_line_number,     -- 3
6117     'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),                                  p_expiration_date,                    -- 4
6118     p_user_id,                     SYSDATE,                                                    p_user_id,                      -- 5
6119     SYSDATE,                      p_login_id,                                                   p_request_id                     -- 6
6120    )
6121   SELECT
6122        paip.AUCTION_HEADER_ID,
6123        paip.LINE_NUMBER s_line_number,
6124        paip.DOCUMENT_DISP_LINE_NUMBER,
6125        paip.ADVANCE_AMOUNT,
6126        paip.RECOUPMENT_RATE_PERCENT,
6127        paip.PROGRESS_PYMT_RATE_PERCENT,
6128        paip.RETAINAGE_RATE_PERCENT,
6129        paip.MAX_RETAINAGE_AMOUNT,
6130        paip.TARGET_PRICE,
6131        paip.QUANTITY s_quantity,
6132        paip.PROJECT_ID pai_project_id,
6133        paip.PROJECT_TASK_ID pai_project_task_id,
6134        paip.PROJECT_AWARD_ID pai_project_award_id,
6135        paip.PROJECT_EXPENDITURE_TYPE pai_project_exp_type,
6136        paip.PROJECT_EXP_ORGANIZATION_ID pai_project_exp_org_id,
6137        paip.PROJECT_EXPENDITURE_ITEM_DATE pai_project_exp_item_date,
6138        paip.PURCHASE_BASIS,
6139        paip.ORDER_TYPE_LOOKUP_CODE,
6140        paip.LINE_ORIGINATION_CODE,
6141        paip.has_payments_flag,
6142 	   plt.outside_operation_flag po_outside_operation_flag,
6143      paip.line_num_display,
6144      Nvl(paip.clm_info_flag, 'N') s_clm_info_flag
6145   FROM PON_AUCTION_ITEM_PRICES_ALL paip,
6146        PO_LINE_TYPES plt
6147   WHERE paip.auction_header_id = p_auction_header_id
6148   AND   paip.line_type_id = plt.line_type_id (+)
6149   AND   paip.group_type NOT IN ('GROUP','LOT_LINE');
6150 
6151 
6152 --bug 4933437- split the above sql into 3 because of shared mem high bug
6153 -- the query below will be execute only if work owner populated
6154 
6155 INSERT ALL
6156   WHEN work_approver_user_id IS NOT NULL
6157   AND NOT EXISTS (SELECT 1
6158                     FROM PER_WORKFORCE_CURRENT_X  peo,
6159                          FND_USER fu
6160                    WHERE fu.user_id = work_approver_user_id
6161                      AND fu.employee_id = peo.person_id
6162     			     AND SYSDATE >= nvl(fu.start_date, SYSDATE)
6163 				     AND SYSDATE <= nvl(fu.end_date, SYSDATE) ) THEN
6164    INTO pon_interface_errors
6165    (
6166     interface_type,               error_message_name,                                         batch_id,               -- 2
6167     entity_type,                  auction_header_id,                                          line_number,            -- 3
6168     token1_name,                  token1_value,                                               expiration_date,        -- 4
6169     created_by,                   creation_date,                                              last_updated_by,        -- 5
6170     last_update_date,             last_update_login,                                           request_id              -- 6
6171    )
6172   VALUES
6173    (
6174     g_interface_type,             'PON_LIN_OWNER_INVALID_L',                             p_batch_id,                      -- 2
6175     g_auction_item_type,          auction_header_id,                                          s_line_number,     -- 3
6176     'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),                                  p_expiration_date,                    -- 4
6177     p_user_id,                     SYSDATE,                                                    p_user_id,                      -- 5
6178     SYSDATE,                      p_login_id,                                                   p_request_id                     -- 6
6179    )
6180   SELECT
6181        paip.AUCTION_HEADER_ID,
6182        paip.LINE_NUMBER s_line_number,
6183        paip.DOCUMENT_DISP_LINE_NUMBER,
6184        paip.WORK_APPROVER_USER_ID,
6185        paip.line_num_display
6186   FROM PON_AUCTION_ITEM_PRICES_ALL paip
6187   WHERE paip.auction_header_id = p_auction_header_id
6188   AND   paip.WORK_APPROVER_USER_ID IS NOT NULL;
6189 
6190 
6191 -- the queries below will be excuted only if all the project info has been supplied by user
6192 -- hence even if it takes more memory because of project views, this query will be rarely executed
6193  INSERT ALL
6194   WHEN pai_project_id IS NOT NULL
6195   AND NOT EXISTS(SELECT 1
6196                  FROM pa_projects_expend_v pro
6197                  WHERE pro.project_id = pai_project_id) THEN
6198    INTO pon_interface_errors
6199    (
6200     interface_type,               error_message_name,                                         batch_id,               -- 2
6201     entity_type,            auction_header_id,                                          line_number,            -- 3
6202     token1_name,                  token1_value,                                               expiration_date,        -- 4
6203     created_by,                   creation_date,                                              last_updated_by,        -- 5
6204     last_update_date,             last_update_login,                                           request_id              -- 6
6205    )
6206   VALUES
6207    (
6208     g_interface_type,             'PON_PROJ_NUM_INVALID_L',                                     p_batch_id,                      -- 2
6209     g_auction_item_type,          auction_header_id,                                          s_line_number,     -- 3
6210     'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),                                  p_expiration_date,                    -- 4
6211     p_user_id,                     SYSDATE,                                                    p_user_id,                      -- 5
6212     SYSDATE,                      p_login_id,                                                   p_request_id                     -- 6
6213    )
6214 
6215   WHEN pai_project_id IS NOT NULL AND pai_project_task_id IS NOT NULL
6216   AND NOT EXISTS(SELECT 1
6217                  FROM pa_tasks_expend_v tas
6218                  WHERE tas.project_id = pai_project_id
6219                  AND tas.task_id = pai_project_task_id) THEN
6220    INTO pon_interface_errors
6221    (
6222     interface_type,               error_message_name,                                         batch_id,               -- 2
6223     entity_type,            auction_header_id,                                          line_number,            -- 3
6224     token1_name,                  token1_value,                                               expiration_date,        -- 4
6225     created_by,                   creation_date,                                              last_updated_by,        -- 5
6226     last_update_date,             last_update_login,                                           request_id              -- 6
6227    )
6228   VALUES
6229    (
6230     g_interface_type,             'PON_PROJ_TASK_INVALID_L',                                    p_batch_id,                      -- 2
6231     g_auction_item_type,            auction_header_id,                                          s_line_number,     -- 3
6232     'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),                                  p_expiration_date,                    -- 4
6233     p_user_id,                     SYSDATE,                                                    p_user_id,                      -- 5
6234     SYSDATE,                      p_login_id,                                                   p_request_id                     -- 6
6235    )
6236 
6237   WHEN pai_project_id IS NOT NULL
6238   AND pai_project_task_id IS NOT NULL
6239   AND pai_project_award_id IS NOT NULL
6240   AND NOT EXISTS (SELECT 1
6241                     FROM GMS_AWARDS_BASIC_V award
6242                    WHERE award.project_id = pai_project_id
6243                      AND award.task_id = pai_project_task_id
6244                      AND award.award_id  = pai_project_award_id) THEN
6245    INTO pon_interface_errors
6246    (
6247     interface_type,               error_message_name,                                         batch_id,               -- 2
6248     entity_type,            auction_header_id,                                          line_number,            -- 3
6249     token1_name,                  token1_value,                                               expiration_date,        -- 4
6250     created_by,                   creation_date,                                              last_updated_by,        -- 5
6251     last_update_date,             last_update_login,                                           request_id              -- 6
6252    )
6253   VALUES
6254    (
6255     g_interface_type,             'PON_PROJ_AWARD_INVALID_L',                                   p_batch_id,                      -- 2
6256     g_auction_item_type,            auction_header_id,                                          s_line_number,     -- 3
6257     'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),                                  p_expiration_date,                    -- 4
6258     p_user_id,                     SYSDATE,                                                    p_user_id,                      -- 5
6259     SYSDATE,                      p_login_id,                                                   p_request_id                     -- 6
6260    )
6261 
6262   WHEN pai_project_exp_org_id IS NOT NULL
6263   AND NOT EXISTS (SELECT 1
6264                     FROM PA_ORGANIZATIONS_EXPEND_V porg
6265                    WHERE porg.organization_id = pai_project_exp_org_id) THEN
6266 
6267    INTO pon_interface_errors
6268    (
6269     interface_type,               error_message_name,                                         batch_id,               -- 2
6270     entity_type,            auction_header_id,                                          line_number,            -- 3
6271     token1_name,                  token1_value,                                               expiration_date,        -- 4
6272     created_by,                   creation_date,                                              last_updated_by,        -- 5
6273     last_update_date,             last_update_login,                                           request_id              -- 6
6274    )
6275   VALUES
6276    (
6277     g_interface_type,             'PON_PROJ_EXPORG_INVALID_L',                                  p_batch_id,                      -- 2
6278     g_auction_item_type,            auction_header_id,                                          s_line_number,     -- 3
6279     'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),                                  p_expiration_date,                    -- 4
6280     p_user_id,                     SYSDATE,                                                    p_user_id,                      -- 5
6281     SYSDATE,                      p_login_id,                                                   p_request_id                     -- 6
6282    )
6283 
6284 WHEN pai_project_exp_type IS NOT NULL
6285 AND NOT EXISTS (SELECT 1
6286                 FROM pa_expenditure_types_expend_v exptype
6287                 WHERE system_linkage_function = 'VI'
6288                 AND exptype.expenditure_type = pai_project_exp_type
6289                 AND  trunc(sysdate) BETWEEN nvl(exptype.expnd_typ_start_date_active, trunc(sysdate))
6290                                     AND  nvl(exptype.expnd_typ_end_date_Active, trunc(sysdate))
6291                 AND trunc(sysdate) BETWEEN nvl(exptype.sys_link_start_date_active, trunc(sysdate))
6292                                     AND  nvl(exptype.sys_link_end_date_Active, trunc(sysdate))) THEN
6293    INTO pon_interface_errors
6294    (
6295     interface_type,               error_message_name,                                         batch_id,               -- 2
6296     entity_type,            auction_header_id,                                          line_number,            -- 3
6297     token1_name,                  token1_value,                                               expiration_date,        -- 4
6298     created_by,                   creation_date,                                              last_updated_by,        -- 5
6299     last_update_date,             last_update_login,                                           request_id              -- 6
6300    )
6301   VALUES
6302    (
6303     g_interface_type,             'PON_PROJ_EXPTYPE_INVALID_L',                                  p_batch_id,                      -- 2
6304     g_auction_item_type,            auction_header_id,                                          s_line_number,     -- 3
6305     'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),                                  p_expiration_date,                    -- 4
6306     p_user_id,                     SYSDATE,                                                    p_user_id,                      -- 5
6307     SYSDATE,                      p_login_id,                                                   p_request_id                     -- 6
6308    )
6309 
6310   WHEN pai_project_id IS NOT NULL
6311   AND pai_project_award_id IS NULL
6312   AND IS_PROJECT_SPONSORED(pai_project_id) = 'Y' THEN
6313    INTO pon_interface_errors
6314    (
6315     interface_type,               error_message_name,                                         batch_id,               -- 2
6316     entity_type,                  auction_header_id,                                          line_number,            -- 3
6317     token1_name,                  token1_value,                                               expiration_date,        -- 4
6318     created_by,                   creation_date,                                              last_updated_by,        -- 5
6319     last_update_date,             last_update_login,                                           request_id              -- 6
6320    )
6321   VALUES
6322    (
6323     g_interface_type,             'PON_PROJ_AWARD_NULL_L',                                     p_batch_id,                      -- 2
6324     g_auction_item_type,          auction_header_id,                                          s_line_number,     -- 3
6325     'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),                                  p_expiration_date,                    -- 4
6326     p_user_id,                     SYSDATE,                                                    p_user_id,                      -- 5
6327     SYSDATE,                      p_login_id,                                                   p_request_id                     -- 6
6328    )
6329 
6330   SELECT
6331        paip.AUCTION_HEADER_ID,
6332        paip.LINE_NUMBER s_line_number,
6333        paip.DOCUMENT_DISP_LINE_NUMBER,
6334        paip.PROJECT_ID pai_project_id,
6335        paip.PROJECT_TASK_ID pai_project_task_id,
6336        paip.PROJECT_AWARD_ID pai_project_award_id,
6337        paip.PROJECT_EXPENDITURE_TYPE pai_project_exp_type,
6338        paip.PROJECT_EXP_ORGANIZATION_ID pai_project_exp_org_id,
6339        paip.PROJECT_EXPENDITURE_ITEM_DATE pai_project_exp_item_date,
6340        paip.line_num_display
6341   FROM PON_AUCTION_ITEM_PRICES_ALL paip
6342   WHERE paip.auction_header_id = p_auction_header_id
6343   AND   paip.PROJECT_ID IS NOT NULL
6344   AND   paip.PROJECT_TASK_ID IS NOT NULL
6345   AND   paip.PROJECT_EXPENDITURE_TYPE IS NOT NULL
6346   AND   paip.PROJECT_EXP_ORGANIZATION_ID IS NOT NULL
6347   AND   paip.PROJECT_EXPENDITURE_ITEM_DATE IS NOT NULL;
6348 
6349 
6350   --Validate project fields with PATC
6351     FOR l_proj_record IN l_proj_cursor LOOP
6352         VALIDATE_PROJECTS_DETAILS (
6353             p_project_id                => l_proj_record.project_id,
6354             p_task_id                   => l_proj_record.project_task_id,
6355             p_expenditure_date          => l_proj_record.project_expenditure_item_date,
6356             p_expenditure_type          => l_proj_record.project_expenditure_type,
6357             p_expenditure_org           => l_proj_record.project_exp_organization_id,
6358             p_person_id                 => null,
6359             p_auction_header_id         => p_auction_header_id,
6360             p_line_number               => l_proj_record.line_number,
6361             p_document_disp_line_number => l_proj_record.document_disp_line_number,
6362             p_payment_id                => null,
6363             p_interface_line_id         => null,
6364             p_payment_display_number    => null,
6365             p_batch_id                  => p_batch_id,
6366             p_table_name                => null,
6367             p_interface_type            => g_interface_type,
6368             p_entity_type               => g_auction_item_type,
6369             p_called_from               => 'LINES');
6370     END LOOP;
6371 
6372    BEGIN
6373 
6374      INSERT INTO PON_INTERFACE_ERRORS
6375      (
6376       interface_type,
6377       error_message_name,
6378       batch_id,
6379       entity_type,
6380       auction_header_id,
6381       line_number,
6382       token1_name,
6383       token1_value,
6384       token2_name,
6385       token2_value,
6386       expiration_date,
6387       created_by,
6388       creation_date,
6389       last_updated_by,
6390       last_update_date,
6391       last_update_login,
6392       request_id
6393      )
6394       SELECT
6395         g_interface_type, --INTERFACE_TYPE
6396         'PON_PYMT_NUM_NOT_UNQ', -- ERROR_MESSAGE_NAME
6397         p_batch_id, --BATCH_ID
6398         g_auction_item_type, -- ENTITY_TYPE
6399         paps.auction_header_id, -- AUCTION_HEADER_ID
6400         paps.line_number, -- LINE_NUMBER
6401         'PAYITEMNUM', --Token1
6402         paps.payment_display_number, --token 1 value
6403         'LINENUM', --Token2
6404         Decode(g_is_fed,'Y',pai.line_num_display,pai.document_disp_line_number), --token 2 value
6405         p_expiration_date, -- EXPIRATION_DATE
6406         p_user_id, -- CREATED_BY
6407         sysdate, -- CREATION_DATE
6408         p_user_id, -- LAST_UPDATED_BY
6409         sysdate, -- LAST_UPDATE_DATE
6410         p_login_id, -- LAST_UPDATE_LOGIN
6411         p_request_id --REQUEST_ID
6412       FROM
6413         PON_AUC_PAYMENTS_SHIPMENTS paps, PON_AUCTION_ITEM_PRICES_ALL pai
6414       WHERE paps.auction_header_id=pai.auction_header_id
6415  	  AND paps.line_number = pai.line_number
6416 	  AND paps.auction_header_id = p_auction_header_id
6417 	  GROUP BY paps.auction_header_id, paps.line_number,
6418                paps.payment_display_number, pai.document_disp_line_number,pai.line_num_display
6419 	  HAVING count(*) > 1;
6420 
6421   EXCEPTION
6422   WHEN OTHERS THEN
6423     IF (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.g_current_runtime_level) THEN
6424       FND_LOG.string (log_level => FND_LOG.level_exception,
6425         module  => g_module_prefix || 'VALIDATE_COMPLEXWORK_LINES',
6426         message => 'Exception occured in duplicate payitem check of validate_complexwork_lines'
6427             || ' Error Number :' || SQLCODE || ' Exception Message :' || SUBSTR(SQLERRM, 1, 200));
6428     END IF;
6429     Raise;
6430   END;
6431 
6432 END IF; -- End of if l_contract_type = 'STANDARD'
6433 END validate_complexwork_lines;
6434 
6435 PROCEDURE validate_payments (
6436   p_auction_header_id     IN NUMBER,
6437   p_request_id            IN NUMBER,
6438   p_expiration_date       IN DATE,
6439   p_user_id               IN NUMBER,
6440   p_login_id              IN NUMBER,
6441   p_batch_id              IN NUMBER,
6442   p_price_precision       IN NUMBER
6443 ) IS
6444 l_module CONSTANT VARCHAR2(32) := 'VALIDATE_PAYMENTS';
6445 l_progress              VARCHAR2(200);
6446 
6447 CURSOR l_proj_cursor IS
6448   SELECT paps.payment_display_number, paps.payment_id,
6449          paps.project_id, paps.project_task_id, paps.project_expenditure_type,
6450 		 paps.project_exp_organization_id, paps.project_expenditure_item_date,
6451 		 paip.line_number, paip.document_disp_line_number
6452   FROM   PON_AUC_PAYMENTS_SHIPMENTS paps,
6453          PON_AUCTION_ITEM_PRICES_ALL paip
6454   WHERE paps.auction_header_id=p_auction_header_id
6455   AND paps.project_id IS NOT NULL
6456   AND paps.project_task_id IS NOT NULL
6457   AND paps.project_expenditure_type IS NOT NULL
6458   AND paps.project_exp_organization_id IS NOT NULL
6459   AND paps.project_expenditure_item_date IS NOT NULL
6460   AND paip.auction_header_id = paps.auction_header_id
6461   AND paip.line_number = paps.line_number;
6462 
6463 BEGIN
6464 
6465 
6466 
6467   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
6468     FND_LOG.string(log_level => FND_LOG.level_procedure,
6469       module  =>  g_module_prefix || 'VALIDATE_PAYMENTS',
6470       message  => 'Entering PON_NEGOTIATION_PUBLISH_PVT.VALIDATE_PAYMENTS'
6471                   || ', p_auction_header_id = ' || p_auction_header_id
6472                   || ', p_request_id = ' || p_request_id
6473                   || ', p_expiration_date = ' || p_expiration_date
6474                   || ', p_user_id = ' || p_user_id
6475                   || ', p_login_id = ' || p_login_id
6476                   || ', p_batch_id = ' || p_batch_id
6477                   || ', p_price_precision = ' || p_price_precision);
6478   END IF; --}
6479 
6480 INSERT ALL
6481 WHEN payment_display_number < 1 OR payment_display_number<> ROUND(payment_display_number) THEN
6482  INTO pon_interface_errors
6483  (
6484   column_name,                  entity_attr_name,             error_message_name,            -- 1
6485   error_value_datatype,         error_value_number,           error_value_date,              -- 2
6486   token1_name,                  token1_value,                 token2_name,                   -- 3
6487   token2_value,                 interface_type,               table_name,                    -- 4
6488   batch_id,                     interface_line_id,            entity_type,                   -- 5
6489   auction_header_id,            line_number,                  payment_id,                    -- 6
6490   expiration_date,              created_by,                   creation_date,                 -- 7
6491   last_updated_by,              last_update_date,             last_update_login              -- 8
6492  )
6493 VALUES
6494  (
6495   'PON_AUCTS_PAYITEM_NUMBER',   NULL,                        'PON_PYMT_NUM_WRONG',           -- 1
6496   'NUM',                        payment_display_number,       NULL,                          -- 2
6497   'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),    'PAYITEMNUM',                  -- 3
6498    payment_display_number,      g_interface_type,             'PON_AUC_PAYMENTS_INTERFACE',  -- 4
6499   p_batch_id,                   NULL,            g_rfq_pymts_type,              -- 5
6500   auction_header_id,            s_line_number,    NULL,                          -- 6
6501   p_expiration_date,                   p_user_id,                     SYSDATE,                       -- 7
6502   p_user_id,                     SYSDATE,                      p_login_id                      -- 8
6503  )
6504 WHEN payment_type_code = 'RATE' AND quantity < 0 THEN
6505  INTO pon_interface_errors
6506  (
6507   column_name,                  entity_attr_name,             error_message_name,            -- 1
6508   error_value_datatype,         error_value_number,           error_value_date,              -- 2
6509   token1_name,                  token1_value,                 token2_name,                   -- 3
6510   token2_value,                 interface_type,               table_name,                    -- 4
6511   batch_id,                     interface_line_id,            entity_type,                   -- 5
6512   auction_header_id,            line_number,                  payment_id,                    -- 6
6513   expiration_date,              created_by,                   creation_date,                 -- 7
6514   last_updated_by,              last_update_date,             last_update_login              -- 8
6515  )
6516 VALUES
6517  (
6518   'PON_AUCTS_QUANTITY',         NULL,                        'PON_PYMT_QTY_WRONG',           -- 1
6519   'NUM',                        quantity,                     NULL,                          -- 2
6520   'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),    'PAYITEMNUM',                  -- 3
6521    payment_display_number,      g_interface_type,             'PON_AUC_PAYMENTS_INTERFACE',  -- 4
6522   p_batch_id,                   NULL,            g_rfq_pymts_type,              -- 5
6523   auction_header_id,            s_line_number,    NULL,                          -- 6
6524   p_expiration_date,                   p_user_id,                     SYSDATE,                       -- 7
6525   p_user_id,                     SYSDATE,                      p_login_id                      -- 8
6526  )
6527 WHEN target_price IS NOT NULL AND target_price < 0 THEN
6528  INTO pon_interface_errors
6529  (
6530   column_name,                  entity_attr_name,             error_message_name,            -- 1
6531   error_value_datatype,         error_value_number,           error_value_date,              -- 2
6532   token1_name,                  token1_value,                 token2_name,                   -- 3
6533   token2_value,                 interface_type,               table_name,                    -- 4
6534   batch_id,                     interface_line_id,            entity_type,                   -- 5
6535   auction_header_id,            line_number,                  payment_id,                    -- 6
6536   expiration_date,              created_by,                   creation_date,                 -- 7
6537   last_updated_by,              last_update_date,             last_update_login              -- 8
6538  )
6539 VALUES
6540  (
6541   'PON_AUCTS_TARGET_PRICE',     NULL,                        'PON_PYMT_TPRICE_WRONG',        -- 1
6542   'NUM',                        target_price,                 NULL,                          -- 2
6543   'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),    'PAYITEMNUM',                  -- 3
6544    payment_display_number,      g_interface_type,             'PON_AUC_PAYMENTS_INTERFACE',  -- 4
6545   p_batch_id,                   NULL,            g_rfq_pymts_type,              -- 5
6546   auction_header_id,            s_line_number,    NULL,                          -- 6
6547   p_expiration_date,                   p_user_id,                     SYSDATE,                       -- 7
6548   p_user_id,                     SYSDATE,                      p_login_id                      -- 8
6549  )
6550 WHEN target_price IS NOT NULL
6551 AND PON_BID_VALIDATIONS_PKG.validate_price_precision(target_price, p_price_precision) = 'F' THEN
6552  INTO pon_interface_errors
6553  (
6554   column_name,                  entity_attr_name,             error_message_name,            -- 1
6555   error_value_datatype,         error_value_number,           error_value_date,              -- 2
6556   token1_name,                  token1_value,                 token2_name,                   -- 3
6557   token2_value,                 interface_type,               table_name,                    -- 4
6558   batch_id,                     interface_line_id,            entity_type,                   -- 5
6559   auction_header_id,            line_number,                  payment_id,                    -- 6
6560   expiration_date,              created_by,                   creation_date,                 -- 7
6561   last_updated_by,              last_update_date,             last_update_login              -- 8
6562  )
6563 VALUES
6564  (
6565   'PON_AUCTS_TARGET_PRICE',     NULL,                        'PON_TARGETPRICE_INVALID_PREC_P',        -- 1
6566   'NUM',                        target_price,                 NULL,                          -- 2
6567   'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),    'PAYITEMNUM',                  -- 3
6568    payment_display_number,      g_interface_type,             'PON_AUC_PAYMENTS_INTERFACE',  -- 4
6569   p_batch_id,                   NULL,            g_rfq_pymts_type,              -- 5
6570   auction_header_id,            s_line_number,    NULL,                          -- 6
6571   p_expiration_date,                   p_user_id,                     SYSDATE,                       -- 7
6572   p_user_id,                     SYSDATE,                      p_login_id                      -- 8
6573  )
6574 WHEN payment_display_number IS NULL THEN
6575  INTO pon_interface_errors
6576  (
6577   column_name,                  entity_attr_name,             error_message_name,            -- 1
6578   error_value_datatype,         error_value_number,           error_value_date,              -- 2
6579   token1_name,                  token1_value,                 token2_name,                   -- 3
6580   token2_value,                 interface_type,               table_name,                    -- 4
6581   batch_id,                     interface_line_id,            entity_type,                   -- 5
6582   auction_header_id,            line_number,                  payment_id,                    -- 6
6583   expiration_date,              created_by,                   creation_date,                 -- 7
6584   last_updated_by,              last_update_date,             last_update_login              -- 8
6585  )
6586 VALUES
6587  (
6588   'PON_AUCTS_PAYITEM_NUMBER',   NULL,                        'PON_PYMT_NUM_MISSING',         -- 1
6589   'NUM',                        payment_display_number,       NULL,                          -- 2
6590   'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),    'PAYITEMNUM',                  -- 3
6591    payment_display_number,      g_interface_type,             'PON_AUC_PAYMENTS_INTERFACE',  -- 4
6592   p_batch_id,                   NULL,            g_rfq_pymts_type,              -- 5
6593   auction_header_id,            s_line_number,    NULL,                          -- 6
6594   p_expiration_date,                   p_user_id,                     SYSDATE,                       -- 7
6595   p_user_id,                     SYSDATE,                      p_login_id                      -- 8
6596  )
6597 WHEN payment_type_code IS NULL THEN
6598  INTO pon_interface_errors
6599  (
6600   column_name,                  entity_attr_name,             error_message_name,            -- 1
6601   error_value_datatype,         error_value,                  error_value_date,              -- 2
6602   token1_name,                  token1_value,                 token2_name,                   -- 3
6603   token2_value,                 interface_type,               table_name,                    -- 4
6604   batch_id,                     interface_line_id,            entity_type,                   -- 5
6605   auction_header_id,            line_number,                  payment_id,                    -- 6
6606   expiration_date,              created_by,                   creation_date,                 -- 7
6607   last_updated_by,              last_update_date,             last_update_login              -- 8
6608  )
6609 VALUES
6610  (
6611   'PON_AUCTS_PAYITEM_TYPE',     NULL,                        'PON_PYMT_TYPE_NULL',           -- 1
6612   'TXT',                        payment_type_code,            NULL,                          -- 2
6613   'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),    'PAYITEMNUM',                  -- 3
6614    payment_display_number,      g_interface_type,             'PON_AUC_PAYMENTS_INTERFACE',  -- 4
6615   p_batch_id,                   NULL,            g_rfq_pymts_type,              -- 5
6616   auction_header_id,            s_line_number,    NULL,                          -- 6
6617   p_expiration_date,                   p_user_id,                     SYSDATE,                       -- 7
6618   p_user_id,                     SYSDATE,                      p_login_id                      -- 8
6619  )
6620 WHEN payment_description IS NULL THEN
6621  INTO pon_interface_errors
6622  (
6623   column_name,                  entity_attr_name,             error_message_name,            -- 1
6624   error_value_datatype,         error_value,                  error_value_date,              -- 2
6625   token1_name,                  token1_value,                 token2_name,                   -- 3
6626   token2_value,                 interface_type,               table_name,                    -- 4
6627   batch_id,                     interface_line_id,            entity_type,                   -- 5
6628   auction_header_id,            line_number,                  payment_id,                    -- 6
6629   expiration_date,              created_by,                   creation_date,                 -- 7
6630   last_updated_by,              last_update_date,             last_update_login              -- 8
6631  )
6632 VALUES
6633  (
6634   'PON_AUCTS_PAYMENT_DESC',     NULL,                        'PON_PYMT_DESC_NULL',           -- 1
6635   'TXT',                        payment_description,          NULL,                          -- 2
6636   'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),    'PAYITEMNUM',                  -- 3
6637    payment_display_number,      g_interface_type,             'PON_AUC_PAYMENTS_INTERFACE',  -- 4
6638   p_batch_id,                   NULL,            g_rfq_pymts_type,              -- 5
6639   auction_header_id,            s_line_number,    NULL,                          -- 6
6640   p_expiration_date,                   p_user_id,                     SYSDATE,                       -- 7
6641   p_user_id,                     SYSDATE,                      p_login_id                      -- 8
6642  )
6643 WHEN payment_type_code = 'RATE' AND quantity IS NULL THEN
6644  INTO pon_interface_errors
6645  (
6646   column_name,                  entity_attr_name,             error_message_name,            -- 1
6647   error_value_datatype,         error_value_number,           error_value_date,              -- 2
6648   token1_name,                  token1_value,                 token2_name,                   -- 3
6649   token2_value,                 interface_type,               table_name,                    -- 4
6650   batch_id,                     interface_line_id,            entity_type,                   -- 5
6651   auction_header_id,            line_number,                  payment_id,                    -- 6
6652   expiration_date,              created_by,                   creation_date,                 -- 7
6653   last_updated_by,              last_update_date,             last_update_login              -- 8
6654  )
6655 VALUES
6656  (
6657   'PON_AUCTS_QUANTITY',         NULL,                        'PON_PYMT_QTY_NULL',            -- 1
6658   'NUM',                        NULL,                         NULL,                          -- 2
6659   'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),    'PAYITEMNUM',                  -- 3
6660    payment_display_number,      g_interface_type,             'PON_AUC_PAYMENTS_INTERFACE',  -- 4
6661   p_batch_id,                   NULL,            g_rfq_pymts_type,              -- 5
6662   auction_header_id,            s_line_number,    NULL,                          -- 6
6663   p_expiration_date,                   p_user_id,                     SYSDATE,                       -- 7
6664   p_user_id,                     SYSDATE,                      p_login_id                      -- 8
6665  )
6666 WHEN payment_type_code = 'RATE' AND uom_code IS NULL THEN
6667  INTO pon_interface_errors
6668  (
6669   column_name,                  entity_attr_name,             error_message_name,            -- 1
6670   error_value_datatype,         error_value,                  error_value_date,              -- 2
6671   token1_name,                  token1_value,                 token2_name,                   -- 3
6672   token2_value,                 interface_type,               table_name,                    -- 4
6673   batch_id,                     interface_line_id,            entity_type,                   -- 5
6674   auction_header_id,            line_number,                  payment_id,                    -- 6
6675   expiration_date,              created_by,                   creation_date,                 -- 7
6676   last_updated_by,              last_update_date,             last_update_login              -- 8
6677  )
6678 VALUES
6679  (
6680   NULL,                         NULL,                        'PON_PYMT_UOM_NULL',            -- 1
6681   'TXT',                        NULL,                         NULL,                          -- 2
6682   'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),    'PAYITEMNUM',                  -- 3
6683    payment_display_number,      g_interface_type,             'PON_AUC_PAYMENTS_INTERFACE',  -- 4
6684   p_batch_id,                   NULL,            g_rfq_pymts_type,              -- 5
6685   auction_header_id,            s_line_number,    NULL,                          -- 6
6686   p_expiration_date,                   p_user_id,                     SYSDATE,                       -- 7
6687   p_user_id,                     SYSDATE,                      p_login_id                      -- 8
6688  )
6689 WHEN nvl(supplier_enterable_pymt_flag,'N') = 'N' AND ship_to_location_id IS NULL THEN
6690  INTO pon_interface_errors
6691  (
6692   column_name,                  entity_attr_name,             error_message_name,            -- 1
6693   error_value_datatype,         error_value,                  error_value_date,              -- 2
6694   token1_name,                  token1_value,                 token2_name,                   -- 3
6695   token2_value,                 interface_type,               table_name,                    -- 4
6696   batch_id,                     interface_line_id,            entity_type,                   -- 5
6697   auction_header_id,            line_number,                  payment_id,                    -- 6
6698   expiration_date,              created_by,                   creation_date,                 -- 7
6699   last_updated_by,              last_update_date,             last_update_login              -- 8
6700  )
6701 VALUES
6702  (
6703   NULL,                         NULL,                        'PON_PYMT_SHIPTO_NULL',            -- 1
6704   'TXT',                        NULL,                         NULL,                          -- 2
6705   'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),    'PAYITEMNUM',                  -- 3
6706    payment_display_number,      g_interface_type,             'PON_AUC_PAYMENTS_INTERFACE',  -- 4
6707   p_batch_id,                   NULL,            g_rfq_pymts_type,              -- 5
6708   auction_header_id,            s_line_number,    NULL,                          -- 6
6709   p_expiration_date,                   p_user_id,                     SYSDATE,                       -- 7
6710   p_user_id,                     SYSDATE,                      p_login_id                      -- 8
6711  )
6712 WHEN need_by_date IS NOT NULL AND need_by_date <= pah_close_bidding_date THEN
6713  INTO pon_interface_errors
6714  (
6715   column_name,                  entity_attr_name,             error_message_name,            -- 1
6716   error_value_datatype,         error_value_number,           error_value_date,              -- 2
6717   token1_name,                  token1_value,                 token2_name,                   -- 3
6718   token2_value,                 interface_type,               table_name,                    -- 4
6719   batch_id,                     interface_line_id,            entity_type,                   -- 5
6720   auction_header_id,            line_number,                  payment_id,                    -- 6
6721   expiration_date,              created_by,                   creation_date,                 -- 7
6722   last_updated_by,              last_update_date,             last_update_login              -- 8
6723  )
6724 VALUES
6725  (
6726   'PON_AUCTS_NEEDBY',           NULL,                        'PON_PYMT_NDATE_LESS_CDATE',    -- 1
6727   'TIM',                        NULL,                        need_by_date,                   -- 2
6728   'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),    'PAYITEMNUM',                  -- 3
6729    payment_display_number,      g_interface_type,             'PON_AUC_PAYMENTS_INTERFACE',  -- 4
6730   p_batch_id,                   NULL,            g_rfq_pymts_type,              -- 5
6731   auction_header_id,            s_line_number,    NULL,                          -- 6
6732   p_expiration_date,                   p_user_id,                     SYSDATE,                       -- 7
6733   p_user_id,                     SYSDATE,                      p_login_id                      -- 8
6734  )
6735   WHEN work_approver_user_id IS NOT NULL
6736   AND NOT EXISTS (SELECT 1
6737                     FROM  PER_WORKFORCE_CURRENT_X peo,
6738                          FND_USER fu
6739                    WHERE fu.user_id = work_approver_user_id
6740                      AND fu.employee_id = peo.person_id
6741     			     AND SYSDATE >= nvl(fu.start_date, SYSDATE)
6742 				     AND SYSDATE <= nvl(fu.end_date, SYSDATE) ) THEN
6743  INTO pon_interface_errors
6744  (
6745   column_name,                  entity_attr_name,             error_message_name,            -- 1
6746   error_value_datatype,         error_value_number,           error_value_date,              -- 2
6747   token1_name,                  token1_value,                 token2_name,                   -- 3
6748   token2_value,                 interface_type,               table_name,                    -- 4
6749   batch_id,                     interface_line_id,            entity_type,                   -- 5
6750   auction_header_id,            line_number,                  payment_id,                    -- 6
6751   expiration_date,              created_by,                   creation_date,                 -- 7
6752   last_updated_by,              last_update_date,             last_update_login              -- 8
6753  )
6754 VALUES
6755  (
6756   NULL,                         NULL,                        'PON_PYMT_OWNER_INVALID',    -- 1
6757   'TIM',                        work_approver_user_id,        NULL,                   -- 2
6758   'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),    'PAYITEMNUM',                  -- 3
6759    payment_display_number,      g_interface_type,             'PON_AUC_PAYMENTS_INTERFACE',  -- 4
6760   p_batch_id,                   NULL,            g_rfq_pymts_type,              -- 5
6761   auction_header_id,            s_line_number,    NULL,                          -- 6
6762   p_expiration_date,                   p_user_id,                     SYSDATE,                       -- 7
6763   p_user_id,                     SYSDATE,                      p_login_id                      -- 8
6764  )
6765   WHEN (s_project_id IS NOT NULL OR s_project_task_id IS NOT NULL OR s_project_exp_org_id IS NOT NULL
6766         OR s_project_exp_item_date IS NOT NULL OR s_project_exp_type IS NOT NULL)
6767   AND (s_project_id IS NULL OR s_project_task_id IS NULL OR s_project_exp_org_id IS NULL
6768         OR s_project_exp_item_date IS NULL OR s_project_exp_type IS NULL) THEN
6769  INTO pon_interface_errors
6770  (
6771   column_name,                  entity_attr_name,             error_message_name,            -- 1
6772   error_value_datatype,         error_value,                  error_value_date,              -- 2
6773   token1_name,                  token1_value,                 token2_name,                   -- 3
6774   token2_value,                 interface_type,               table_name,                    -- 4
6775   batch_id,                     interface_line_id,            entity_type,                   -- 5
6776   auction_header_id,            line_number,                  payment_id,                    -- 6
6777   expiration_date,              created_by,                   creation_date,                 -- 7
6778   last_updated_by,              last_update_date,             last_update_login              -- 8
6779  )
6780 VALUES
6781  (
6782   NULL,                         NULL,                        'PON_PROJ_INFO_INCOMPLETE_P',    -- 1
6783   'TXT',                        s_project_exp_type,          NULL,                   -- 2
6784   'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),    'PAYITEMNUM',                  -- 3
6785    payment_display_number,      g_interface_type,             'PON_AUC_PAYMENTS_INTERFACE',  -- 4
6786   p_batch_id,                   NULL,            g_rfq_pymts_type,              -- 5
6787   auction_header_id,            s_line_number,    NULL,                          -- 6
6788   p_expiration_date,                   p_user_id,                     SYSDATE,                       -- 7
6789   p_user_id,                     SYSDATE,                      p_login_id                      -- 8
6790  )
6791 SELECT
6792   ppi.project_id s_project_id,
6793   ppi.project_task_id s_project_task_id,
6794   ppi.project_expenditure_type s_project_exp_type,
6795   ppi.project_exp_organization_id s_project_exp_org_id,
6796   ppi.project_expenditure_item_date s_project_exp_item_date,
6797   ppi.project_award_id s_project_award_id,
6798   ppi.payment_display_number,
6799   ppi.payment_type_code,
6800   ppi.uom_code,
6801   ppi.auction_header_id auction_header_id,
6802   pai.document_disp_line_number,
6803   ppi.work_approver_user_id,
6804   ppi.ship_to_location_id,
6805   ppi.target_price,
6806   ppi.quantity,
6807   ppi.payment_description,
6808   ppi.need_by_date,
6809   pah.close_bidding_date pah_close_bidding_date,
6810   pah.supplier_enterable_pymt_flag,
6811   pai.line_number s_line_number,
6812   pai.line_num_display
6813  FROM PON_AUC_PAYMENTS_SHIPMENTS ppi,
6814       PON_AUCTION_ITEM_PRICES_ALL pai,
6815       PON_AUCTION_HEADERS_ALL pah
6816  WHERE ppi.auction_header_id = pai.auction_header_id
6817  AND   ppi.line_number = pai.line_number
6818  AND   pah.auction_header_id = ppi.auction_header_id
6819  AND   ppi.auction_header_id = p_auction_header_id;
6820 
6821 
6822 -- Validate projects fields separately because of bug 4933437
6823 INSERT ALL
6824   WHEN s_project_id IS NOT NULL
6825   AND NOT EXISTS(SELECT 1
6826                  FROM pa_projects_expend_v pro
6827                  WHERE pro.project_id = s_project_id) THEN
6828  INTO pon_interface_errors
6829  (
6830   column_name,                  entity_attr_name,             error_message_name,            -- 1
6831   error_value_datatype,         error_value_number,           error_value_date,              -- 2
6832   token1_name,                  token1_value,                 token2_name,                   -- 3
6833   token2_value,                 interface_type,               table_name,                    -- 4
6834   batch_id,                     interface_line_id,            entity_type,                   -- 5
6835   auction_header_id,            line_number,                  payment_id,                    -- 6
6836   expiration_date,              created_by,                   creation_date,                 -- 7
6837   last_updated_by,              last_update_date,             last_update_login              -- 8
6838  )
6839 VALUES
6840  (
6841   NULL,                         NULL,                        'PON_PROJ_NUM_INVALID_P',    -- 1
6842   'TIM',                        NULL,                         NULL,                   -- 2
6843   'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),    'PAYITEMNUM',                  -- 3
6844    payment_display_number,      g_interface_type,             'PON_AUC_PAYMENTS_INTERFACE',  -- 4
6845   p_batch_id,                   NULL,            g_rfq_pymts_type,              -- 5
6846   auction_header_id,            s_line_number,    NULL,                          -- 6
6847   p_expiration_date,                   p_user_id,                     SYSDATE,                       -- 7
6848   p_user_id,                     SYSDATE,                      p_login_id                      -- 8
6849  )
6850   WHEN s_project_id IS NOT NULL AND s_project_task_id IS NOT NULL
6851   AND NOT EXISTS(SELECT 1
6852                  FROM pa_tasks_expend_v tas
6853                  WHERE tas.project_id = s_project_id
6854                  AND tas.task_id = s_project_task_id) THEN
6855  INTO pon_interface_errors
6856  (
6857   column_name,                  entity_attr_name,             error_message_name,            -- 1
6858   error_value_datatype,         error_value_number,           error_value_date,              -- 2
6859   token1_name,                  token1_value,                 token2_name,                   -- 3
6860   token2_value,                 interface_type,               table_name,                    -- 4
6861   batch_id,                     interface_line_id,            entity_type,                   -- 5
6862   auction_header_id,            line_number,                  payment_id,                    -- 6
6863   expiration_date,              created_by,                   creation_date,                 -- 7
6864   last_updated_by,              last_update_date,             last_update_login              -- 8
6865  )
6866 VALUES
6867  (
6868   NULL,                         NULL,                        'PON_PROJ_TASK_INVALID_P',    -- 1
6869   'TIM',                        NULL,                         NULL,                   -- 2
6870   'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),    'PAYITEMNUM',                  -- 3
6871    payment_display_number,      g_interface_type,             'PON_AUC_PAYMENTS_INTERFACE',  -- 4
6872   p_batch_id,                   NULL,            g_rfq_pymts_type,              -- 5
6873   auction_header_id,            s_line_number,    NULL,                          -- 6
6874   p_expiration_date,                   p_user_id,                     SYSDATE,                       -- 7
6875   p_user_id,                     SYSDATE,                      p_login_id                      -- 8
6876  )
6877   WHEN s_project_id IS NOT NULL
6878   AND s_project_task_id IS NOT NULL
6879   AND s_project_award_id IS NOT NULL
6880   AND NOT EXISTS (SELECT 1
6881                     FROM GMS_AWARDS_BASIC_V award
6882                    WHERE award.project_id = s_project_id
6883                      AND award.task_id = s_project_task_id
6884                      AND award.award_id  = s_project_award_id) THEN
6885  INTO pon_interface_errors
6886  (
6887   column_name,                  entity_attr_name,             error_message_name,            -- 1
6888   error_value_datatype,         error_value_number,           error_value_date,              -- 2
6889   token1_name,                  token1_value,                 token2_name,                   -- 3
6890   token2_value,                 interface_type,               table_name,                    -- 4
6891   batch_id,                     interface_line_id,            entity_type,                   -- 5
6892   auction_header_id,            line_number,                  payment_id,                    -- 6
6893   expiration_date,              created_by,                   creation_date,                 -- 7
6894   last_updated_by,              last_update_date,             last_update_login              -- 8
6895  )
6896 VALUES
6897  (
6898   NULL,                         NULL,                        'PON_PROJ_AWARD_INVALID_P',    -- 1
6899   'TIM',                        NULL,                         NULL,                   -- 2
6900   'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),    'PAYITEMNUM',                  -- 3
6901    payment_display_number,      g_interface_type,             'PON_AUC_PAYMENTS_INTERFACE',  -- 4
6902   p_batch_id,                   NULL,            g_rfq_pymts_type,              -- 5
6903   auction_header_id,            s_line_number,    NULL,                          -- 6
6904   p_expiration_date,                   p_user_id,                     SYSDATE,                       -- 7
6905   p_user_id,                     SYSDATE,                      p_login_id                      -- 8
6906  )
6907   WHEN s_project_id IS NOT NULL
6908   AND s_project_award_id IS NULL
6909   AND IS_PROJECT_SPONSORED(s_project_id) = 'Y' THEN
6910  INTO pon_interface_errors
6911  (
6912   column_name,                  entity_attr_name,             error_message_name,            -- 1
6913   error_value_datatype,         error_value_number,           error_value_date,              -- 2
6914   token1_name,                  token1_value,                 token2_name,                   -- 3
6915   token2_value,                 interface_type,               table_name,                    -- 4
6916   batch_id,                     interface_line_id,            entity_type,                   -- 5
6917   auction_header_id,            line_number,                  payment_id,                    -- 6
6918   expiration_date,              created_by,                   creation_date,                 -- 7
6919   last_updated_by,              last_update_date,             last_update_login              -- 8
6920  )
6921 VALUES
6922  (
6923   NULL,                         NULL,                        'PON_PROJ_AWARD_NULL_P',    -- 1
6924   'TIM',                        NULL,                         NULL,                   -- 2
6925   'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),    'PAYITEMNUM',                  -- 3
6926    payment_display_number,      g_interface_type,             'PON_AUC_PAYMENTS_INTERFACE',  -- 4
6927   p_batch_id,                   NULL,            g_rfq_pymts_type,              -- 5
6928   auction_header_id,            s_line_number,    NULL,                          -- 6
6929   p_expiration_date,                   p_user_id,                     SYSDATE,                       -- 7
6930   p_user_id,                     SYSDATE,                      p_login_id                      -- 8
6931  )
6932   WHEN s_project_exp_org_id IS NOT NULL
6933   AND NOT EXISTS (SELECT 1
6934                     FROM PA_ORGANIZATIONS_EXPEND_V porg
6935                    WHERE porg.organization_id = s_project_exp_org_id) THEN
6936  INTO pon_interface_errors
6937  (
6938   column_name,                  entity_attr_name,             error_message_name,            -- 1
6939   error_value_datatype,         error_value_number,           error_value_date,              -- 2
6940   token1_name,                  token1_value,                 token2_name,                   -- 3
6941   token2_value,                 interface_type,               table_name,                    -- 4
6942   batch_id,                     interface_line_id,            entity_type,                   -- 5
6943   auction_header_id,            line_number,                  payment_id,                    -- 6
6944   expiration_date,              created_by,                   creation_date,                 -- 7
6945   last_updated_by,              last_update_date,             last_update_login              -- 8
6946  )
6947 VALUES
6948  (
6949   NULL,                         NULL,                        'PON_PROJ_EXPORG_INVALID_P',    -- 1
6950   'TIM',                        NULL,                         NULL,                   -- 2
6951   'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),    'PAYITEMNUM',                  -- 3
6952    payment_display_number,      g_interface_type,             'PON_AUC_PAYMENTS_INTERFACE',  -- 4
6953   p_batch_id,                   NULL,            g_rfq_pymts_type,              -- 5
6954   auction_header_id,            s_line_number,    NULL,                          -- 6
6955   p_expiration_date,                   p_user_id,                     SYSDATE,                       -- 7
6956   p_user_id,                     SYSDATE,                      p_login_id                      -- 8
6957  )
6958 WHEN s_project_exp_type IS NOT NULL
6959 AND NOT EXISTS (SELECT 1
6960                 FROM pa_expenditure_types_expend_v exptype
6961                 WHERE system_linkage_function = 'VI'
6962                 AND exptype.expenditure_type = s_project_exp_type
6963                 AND  trunc(sysdate) BETWEEN nvl(exptype.expnd_typ_start_date_active, trunc(sysdate))
6964                                     AND  nvl(exptype.expnd_typ_end_date_Active, trunc(sysdate))
6965                 AND trunc(sysdate) BETWEEN nvl(exptype.sys_link_start_date_active, trunc(sysdate))
6966                                     AND  nvl(exptype.sys_link_end_date_Active, trunc(sysdate))) THEN
6967  INTO pon_interface_errors
6968  (
6969   column_name,                  entity_attr_name,             error_message_name,            -- 1
6970   error_value_datatype,         error_value,                  error_value_date,              -- 2
6971   token1_name,                  token1_value,                 token2_name,                   -- 3
6972   token2_value,                 interface_type,               table_name,                    -- 4
6973   batch_id,                     interface_line_id,            entity_type,                   -- 5
6974   auction_header_id,            line_number,                  payment_id,                    -- 6
6975   expiration_date,              created_by,                   creation_date,                 -- 7
6976   last_updated_by,              last_update_date,             last_update_login              -- 8
6977  )
6978 VALUES
6979  (
6980   NULL,                         NULL,                        'PON_PROJ_EXPTYPE_INVALID_P',    -- 1
6981   'TXT',                        s_project_exp_type,          NULL,                   -- 2
6982   'LINENUM',                    Decode(g_is_fed,'Y',LINE_NUM_DISPLAY,DOCUMENT_DISP_LINE_NUMBER),    'PAYITEMNUM',                  -- 3
6983    payment_display_number,      g_interface_type,             'PON_AUC_PAYMENTS_INTERFACE',  -- 4
6984   p_batch_id,                   NULL,            g_rfq_pymts_type,              -- 5
6985   auction_header_id,            s_line_number,    NULL,                          -- 6
6986   p_expiration_date,                   p_user_id,                     SYSDATE,                       -- 7
6987   p_user_id,                     SYSDATE,                      p_login_id                      -- 8
6988  )
6989 SELECT
6990   ppi.project_id s_project_id,
6991   ppi.project_task_id s_project_task_id,
6992   ppi.project_expenditure_type s_project_exp_type,
6993   ppi.project_exp_organization_id s_project_exp_org_id,
6994   ppi.project_expenditure_item_date s_project_exp_item_date,
6995   ppi.project_award_id s_project_award_id,
6996   ppi.payment_display_number,
6997   ppi.auction_header_id auction_header_id,
6998   pai.document_disp_line_number,
6999   ppi.work_approver_user_id,
7000   pai.line_number s_line_number,
7001   pai.line_num_display
7002  FROM PON_AUC_PAYMENTS_SHIPMENTS ppi,
7003       PON_AUCTION_ITEM_PRICES_ALL pai,
7004       PON_AUCTION_HEADERS_ALL pah
7005  WHERE ppi.auction_header_id = pai.auction_header_id
7006  AND   ppi.line_number = pai.line_number
7007  AND   ppi.auction_header_id = p_auction_header_id
7008  AND   pah.auction_header_id = pai.auction_header_id
7009  AND   ppi.project_id  IS NOT NULL
7010  AND   ppi.project_task_id  IS NOT NULL
7011  AND   ppi.project_expenditure_type IS NOT NULL
7012  AND   ppi.project_exp_organization_id IS NOT NULL
7013  AND   ppi.project_expenditure_item_date IS NOT NULL;
7014 
7015   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
7016     FND_LOG.string(log_level => FND_LOG.level_procedure,
7017       module  =>  g_module_prefix || 'VALIDATE_PAYMENTS',
7018       message  => 'Leaving PON_NEGOTIATION_PUBLISH_PVT.VALIDATE_PAYMENTS'
7019                   || ', p_auction_header_id = ' || p_auction_header_id);
7020   END IF; --}
7021   --Validate project fields with PATC
7022     FOR l_proj_record IN l_proj_cursor LOOP
7023         VALIDATE_PROJECTS_DETAILS (
7024             p_project_id                => l_proj_record.project_id,
7025             p_task_id                   => l_proj_record.project_task_id,
7026             p_expenditure_date          => l_proj_record.project_expenditure_item_date,
7027             p_expenditure_type          => l_proj_record.project_expenditure_type,
7028             p_expenditure_org           => l_proj_record.project_exp_organization_id,
7029             p_person_id                 => null,
7030             p_auction_header_id         => p_auction_header_id,
7031             p_line_number               => l_proj_record.line_number,
7032             p_document_disp_line_number => l_proj_record.document_disp_line_number,
7033             p_payment_id                => l_proj_record.payment_id,
7034             p_interface_line_id         => null,
7035             p_payment_display_number    => l_proj_record.payment_display_number,
7036             p_batch_id                  => p_batch_id,
7037             p_table_name                => null,
7038             p_interface_type            => g_interface_type,
7039             p_entity_type               => g_rfq_pymts_type,
7040             p_called_from               => 'PAYMENTS');
7041     END LOOP;
7042 
7043 
7044 EXCEPTION
7045     WHEN OTHERS THEN
7046 
7047     IF (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.g_current_runtime_level) THEN
7048       FND_LOG.string (log_level => FND_LOG.level_exception,
7049         module  => g_module_prefix || 'VALIDATE_PAYMENTS',
7050         message => 'Exception occured validate_payments'
7051             || ' Error Number :' || SQLCODE || ' Exception Message :' || SUBSTR(SQLERRM, 1, 200));
7052     END IF;
7053 
7054 END validate_payments;
7055 
7056 
7057 -- End Validation procedures
7058 
7059 PROCEDURE LOAD_DOCTYPE_NAME_DATA
7060 IS
7061 
7062 l_doctype_id PON_NEG_COPY_DATATYPES_GRP.NUMBER_TYPE;
7063 l_doctype_group_name PON_NEG_COPY_DATATYPES_GRP.VARCHAR50_TYPE;
7064 BEGIN
7065 
7066   SELECT
7067     doctype_id,
7068     doctype_group_name
7069   BULK COLLECT INTO
7070     l_doctype_id,
7071     l_doctype_group_name
7072   FROM
7073     pon_auc_doctypes;
7074 
7075   IF (l_doctype_id.COUNT > 0) THEN --{
7076 
7077     FOR x in 1..l_doctype_id.COUNT LOOP
7078 
7079       g_document_type_names (l_doctype_id (x)) := l_doctype_group_name (x);
7080     END LOOP;
7081   END IF; --}
7082 END LOAD_DOCTYPE_NAME_DATA;
7083 
7084 /*======================================================================
7085  *  PROCEDURE : LOAD_BIZRULE_DATA
7086  *  PARAMETERS:
7087  *              p_doctype_id - The doctype id of the negotiation
7088  *
7089  *  COMMENT   : This procedure will load the document rules corresponding
7090  *              to this doctype_id
7091  *  EXCEPTION : None
7092  *======================================================================*/
7093 PROCEDURE LOAD_BIZRULE_DATA (
7094   p_doctype_id  NUMBER
7095 ) IS
7096 
7097 l_bizrule_name PON_NEG_COPY_DATATYPES_GRP.VARCHAR50_TYPE;
7098 l_doctype_rule_required PON_NEG_COPY_DATATYPES_GRP.VARCHAR1_TYPE;
7099 l_doctype_rule_validity PON_NEG_COPY_DATATYPES_GRP.VARCHAR1_TYPE;
7100 BEGIN
7101 
7102   SELECT
7103     BIZRULE.NAME,
7104     DOCTYPE_RULE.REQUIRED_FLAG,
7105     DOCTYPE_RULE.VALIDITY_FLAG
7106   BULK COLLECT INTO
7107     l_bizrule_name,
7108     l_doctype_rule_required,
7109     l_doctype_rule_validity
7110   FROM
7111     PON_AUC_BIZRULES BIZRULE,
7112     PON_AUC_DOCTYPE_RULES DOCTYPE_RULE
7113   WHERE
7114     BIZRULE.BIZRULE_ID = DOCTYPE_RULE.BIZRULE_ID AND
7115     DOCTYPE_RULE.DOCTYPE_ID = p_doctype_id;
7116 
7117   IF (l_bizrule_name.COUNT <> 0) THEN --{
7118 
7119     FOR x IN 1..l_bizrule_name.COUNT LOOP
7120 
7121        g_document_type_required_rule (l_bizrule_name(x)) := l_doctype_rule_required (x);
7122        g_document_type_validity_rule (l_bizrule_name(x)) := l_doctype_rule_validity (x);
7123     END LOOP;
7124   END IF; --}
7125 END LOAD_BIZRULE_DATA;
7126 
7127 --Start Helper Methods
7128 
7129 FUNCTION IS_GLOBAL_AGREEMENT (
7130   p_global_agreement_flag IN VARCHAR2
7131 ) RETURN BOOLEAN IS
7132 BEGIN
7133 
7134   IF (p_global_agreement_flag = 'Y') THEN --{
7135 
7136     RETURN TRUE;
7137   END IF; --}
7138 
7139   RETURN FALSE;
7140 END IS_GLOBAL_AGREEMENT;
7141 
7142 --These methods belong to PONNEGHS.pls, keeping them here
7143 --temporarily
7144 PROCEDURE HAS_TEMP_LABOR_LINES (
7145   p_auction_header_id IN NUMBER,
7146   x_return_value OUT NOCOPY VARCHAR2
7147 ) IS
7148 
7149 l_line_number NUMBER;
7150 BEGIN
7151 
7152   SELECT
7153     LINE_NUMBER
7154   INTO
7155     l_line_number
7156   FROM
7157     PON_AUCTION_ITEM_PRICES_ALL
7158   WHERE
7159     AUCTION_HEADER_ID = p_auction_header_id AND
7160     PURCHASE_BASIS = 'TEMP LABOR' AND
7161     ROWNUM = 1;
7162 
7163   x_return_value := 'Y';
7164 EXCEPTION WHEN NO_DATA_FOUND THEN --{
7165 x_return_value := 'N';
7166 
7167 END HAS_TEMP_LABOR_LINES;
7168 
7169 PROCEDURE SET_ITEM_HAS_CHILDREN_FLAGS (
7170   p_auction_header_id IN NUMBER,
7171   p_close_bidding_date IN DATE
7172 ) IS
7173 BEGIN
7174   --HAS_ATTRIBUTES_FLAG, HAS_SHIPMENTS_FLAG, HAS_PRICE_ELEMENTS_FLAG,
7175   --HAS_BUYER_PFS_FLAG, HAS_PRICE_DIFFERENTIALS_FLAG,HAS_QUANTITY_TIERS
7176   UPDATE
7177     PON_AUCTION_ITEM_PRICES_ALL PAIP
7178   SET
7179     HAS_ATTRIBUTES_FLAG = NVL(
7180                  (SELECT 'Y'
7181                  FROM PON_AUCTION_ATTRIBUTES
7182                  WHERE AUCTION_HEADER_ID = p_auction_header_id
7183                  AND LINE_NUMBER = PAIP.LINE_NUMBER
7184                   AND ROWNUM = 1), 'N'),
7185     HAS_SHIPMENTS_FLAG = NVL (
7186                  (SELECT 'Y'
7187                  FROM PON_AUCTION_SHIPMENTS_ALL
7188                  WHERE AUCTION_HEADER_ID = p_auction_header_id
7189                   AND shipment_type = 'PRICE BREAK'
7190                   AND LINE_NUMBER = PAIP.LINE_NUMBER
7191                   AND ROWNUM = 1),'N'),
7192     HAS_PRICE_ELEMENTS_FLAG = NVL (
7193                  (SELECT 'Y'
7194                  FROM PON_PRICE_ELEMENTS
7195                  WHERE AUCTION_HEADER_ID = p_auction_header_id
7196                   AND LINE_NUMBER = PAIP.LINE_NUMBER
7197                   AND PF_TYPE = 'SUPPLIER'
7198                   AND ROWNUM = 1), 'N'),
7199     HAS_BUYER_PFS_FLAG = NVL (
7200                  (SELECT 'Y'
7201                  FROM PON_PRICE_ELEMENTS
7202                  WHERE AUCTION_HEADER_ID = p_auction_header_id
7203                   AND LINE_NUMBER = PAIP.LINE_NUMBER
7204                   AND ROWNUM = 1
7205                   AND PF_TYPE = 'BUYER'),'N'),
7206     HAS_PRICE_DIFFERENTIALS_FLAG = NVL (
7207                  (SELECT 'Y'
7208                  FROM PON_PRICE_DIFFERENTIALS
7209                  WHERE AUCTION_HEADER_ID = p_auction_header_id
7210                   AND LINE_NUMBER = PAIP.LINE_NUMBER
7211                   AND SHIPMENT_NUMBER = -1
7212                   AND ROWNUM = 1),'N'),
7213     HAS_QUANTITY_TIERS = NVL (
7214                  (SELECT 'Y'
7215                  FROM PON_AUCTION_SHIPMENTS_ALL
7216                  WHERE AUCTION_HEADER_ID = p_auction_header_id
7217                   AND shipment_type = 'QUANTITY BASED'
7218                   AND LINE_NUMBER = PAIP.LINE_NUMBER
7219                   AND ROWNUM = 1),'N'),
7220     CLOSE_BIDDING_DATE = p_close_bidding_date,
7221     LAST_UPDATE_DATE = SYSDATE,
7222     LAST_UPDATE_LOGIN = FND_GLOBAL.LOGIN_ID(),
7223     LAST_UPDATED_BY = FND_GLOBAL.USER_ID()
7224   WHERE
7225     AUCTION_HEADER_ID = p_auction_header_id;
7226 END SET_ITEM_HAS_CHILDREN_FLAGS;
7227 
7228 --These methods belong to PONNEGHS.pls, keeping them here
7229 --temporarily
7230 
7231 PROCEDURE GET_LOT_GRP_MAX_DISP_LINE_NUM (
7232   p_auction_header_id IN NUMBER,
7233   p_parent_line_number IN NUMBER,
7234   x_max_disp_line_number OUT NOCOPY NUMBER
7235 ) IS
7236 BEGIN
7237 
7238   SELECT MAX (DISP_LINE_NUMBER)
7239   INTO x_max_disp_line_number
7240   FROM PON_AUCTION_ITEM_PRICES_ALL
7241   WHERE AUCTION_HEADER_ID = p_auction_header_id
7242   AND PARENT_LINE_NUMBER = p_parent_line_number;
7243 
7244   IF (x_max_disp_line_number IS NULL) THEN
7245     SELECT DISP_LINE_NUMBER
7246     INTO x_max_disp_line_number
7247     FROM PON_AUCTION_ITEM_PRICES_ALL
7248     WHERE AUCTION_HEADER_ID = p_auction_header_id
7249     AND LINE_NUMBER = p_parent_line_number;
7250   END IF;
7251 
7252 END GET_LOT_GRP_MAX_DISP_LINE_NUM;
7253 
7254 /***********************************************************
7255  *  - Clin Slin project Changes Start.
7256  *********************************************************/
7257 
7258 PROCEDURE GET_CLIN_GRP_MAX_DISP_LINE_NUM (
7259   p_auction_header_id IN NUMBER,
7260   p_parent_line_number IN NUMBER,
7261   x_max_disp_line_number OUT NOCOPY NUMBER
7262 ) IS
7263 BEGIN
7264 
7265   SELECT MAX (DISP_LINE_NUMBER)
7266   INTO x_max_disp_line_number
7267   FROM PON_AUCTION_ITEM_PRICES_ALL
7268   WHERE AUCTION_HEADER_ID = p_auction_header_id
7269   AND group_line_id = p_parent_line_number;
7270 
7271   IF (x_max_disp_line_number IS NULL) THEN
7272     SELECT DISP_LINE_NUMBER
7273     INTO x_max_disp_line_number
7274     FROM PON_AUCTION_ITEM_PRICES_ALL
7275     WHERE AUCTION_HEADER_ID = p_auction_header_id
7276     AND LINE_NUMBER = p_parent_line_number;
7277   END IF;
7278 
7279 END GET_CLIN_GRP_MAX_DISP_LINE_NUM;
7280 
7281 /***********************************************************
7282  * CLM - Clin Slin project Changes End.
7283  *********************************************************/
7284 
7285 -- End Validation procedures
7286 
7287 PROCEDURE VALIDATE_LINES (
7288   x_result OUT NOCOPY VARCHAR2, --1
7289   x_error_code OUT NOCOPY VARCHAR2, --2
7290   x_error_message OUT NOCOPY VARCHAR2, --3
7291   p_auction_header_id IN NUMBER, --4
7292   p_doctype_id IN NUMBER, --5
7293   p_auction_currency_precision IN NUMBER, --6
7294   p_fnd_currency_precision IN NUMBER, --7
7295   p_close_bidding_date IN DATE, --8
7296   p_contract_type IN VARCHAR2, --9
7297   p_global_agreement_flag IN VARCHAR2, --10
7298   p_allow_other_bid_currency IN VARCHAR2, --11
7299   p_bid_ranking IN VARCHAR2,  --12
7300   p_po_start_date IN DATE, --13
7301   p_po_end_date IN DATE, --14
7302   p_trading_partner_id IN NUMBER, --15
7303   p_full_quantity_bid_code IN VARCHAR2, --16
7304   p_invitees_count IN NUMBER, --17
7305   p_bid_list_type IN VARCHAR2, --18
7306   p_request_id IN NUMBER, -- 19
7307   p_for_approval IN VARCHAR2, -- 20
7308   p_user_id IN NUMBER, --21
7309   p_line_attribute_enabled_flag IN VARCHAR2, --22
7310   p_pf_type_allowed IN VARCHAR2, --23
7311   p_progress_payment_type IN VARCHAR2, --24
7312   p_large_neg_enabled_flag IN VARCHAR2, --25
7313   p_price_tiers_indicator IN VARCHAR2, --26
7314   x_batch_id OUT NOCOPY NUMBER --27
7315 )IS
7316 
7317 l_is_global_agreement BOOLEAN;
7318 
7319 l_expiration_date DATE;
7320 l_user_id NUMBER;
7321 l_login_id NUMBER;
7322 l_batch_id NUMBER;
7323 
7324 l_module_name VARCHAR2(30);
7325 
7326 BEGIN
7327 
7328   l_module_name := 'validate_lines';
7329 
7330   x_result := FND_API.G_RET_STS_SUCCESS;
7331 
7332   IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
7333     FND_LOG.string(log_level => FND_LOG.level_procedure,
7334       module  =>  g_module_prefix || l_module_name,
7335       message  => 'Entering procedure:'
7336                   || 'p_auction_header_id = ' || p_auction_header_id
7337                   || ', p_doctype_id = ' || p_doctype_id
7338                   || ', p_auction_currency_precision = ' || p_auction_currency_precision
7339                   || ', p_fnd_currency_precision = ' || p_fnd_currency_precision
7340                   || ', p_close_bidding_date = ' || p_close_bidding_date
7341                   || ', p_contract_type = ' || p_contract_type
7342                   || ', p_global_agreement_flag = ' || p_global_agreement_flag
7343                   || ', p_allow_other_bid_currency = ' || p_allow_other_bid_currency
7344                   || ', p_bid_ranking = ' || p_bid_ranking
7345                   || ', p_po_end_date = ' || p_po_end_date
7346                   || ', p_po_start_date = ' || p_po_start_date
7347                   || ', p_trading_partner_id = ' || p_trading_partner_id
7348                   || ', p_full_quantity_bid_code = ' || p_full_quantity_bid_code
7349                   || ', p_invitees_count = ' || p_invitees_count
7350                   || ', p_bid_list_type = ' || p_bid_list_type
7351                   || ', p_request_id = ' || p_request_id
7352                   || ', p_for_approval = ' || p_for_approval
7353                   || ', p_user_id = ' || p_user_id
7354                   || ', p_line_attribute_enabled_flag = ' || p_line_attribute_enabled_flag
7355                   || ', p_pf_type_allowed = ' || p_pf_type_allowed
7356                   || ', p_price_tiers_indicator = ' || p_price_tiers_indicator);
7357   END IF; --}
7358 
7359   -- Load the document related data.
7360   LOAD_DOCTYPE_NAME_DATA ();
7361   LOAD_BIZRULE_DATA (p_doctype_id);
7362 
7363   -- Errors will expire after seven days of creation
7364   l_expiration_date := SYSDATE + 7;
7365 
7366   l_user_id := p_user_id;
7367   l_login_id := FND_GLOBAL.LOGIN_ID;
7368 
7369   l_is_global_agreement := IS_GLOBAL_AGREEMENT (p_global_agreement_flag);
7370 
7371   SELECT PON_ITEM_PRICES_INTERFACE_S.NEXTVAL
7372   INTO l_batch_id
7373   FROM DUAL;
7374 
7375   x_batch_id := l_batch_id;
7376 
7377   IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
7378     FND_LOG.string(log_level => FND_LOG.level_statement,
7379       module  =>  g_module_prefix || l_module_name,
7380       message  => 'Validating Lines: Validations that do not require join with po line types');
7381   END IF; --}
7382 
7383   -- Validations that are done in this procedure do not require a join with
7384   -- po_line_types_b
7385   val_item_prices_all (
7386     p_auction_header_id, p_request_id, l_expiration_date, l_user_id,
7387     l_login_id, l_batch_id, p_auction_currency_precision,
7388     p_fnd_currency_precision, p_close_bidding_date, p_contract_type,
7389     p_global_agreement_flag, p_bid_ranking, p_doctype_id,
7390     p_invitees_count, p_bid_list_type);
7391 
7392   IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
7393     FND_LOG.string(log_level => FND_LOG.level_statement,
7394       module  =>  g_module_prefix || l_module_name,
7395       message  => 'Validating Lines: Validations that require join with po line types');
7396   END IF; --}
7397 
7398   val_exhibits(p_auction_header_id,p_request_id,l_batch_id,l_expiration_date,l_user_id,l_login_id);
7399 
7400   -- Validations that are done in this procedure require a join with
7401   -- po_line_types_b
7402   val_item_prices_po_lines (
7403     p_auction_header_id, p_request_id, l_expiration_date, l_user_id,
7404     l_login_id, l_batch_id, p_doctype_id, p_contract_type, p_global_agreement_flag,
7405     p_auction_currency_precision, p_fnd_currency_precision);
7406 
7407   /*
7408    * ATTRIBUTE VALIDATIONS
7409    */
7410   -- Attribute validations only if the p_line_attribute_enabled_flag is set to Y
7411   IF (NVL (p_line_attribute_enabled_flag, 'Y') = 'Y') THEN
7412 
7413     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
7414       FND_LOG.string(log_level => FND_LOG.level_statement,
7415         module  =>  g_module_prefix || l_module_name,
7416         message  => 'Validation attributes');
7417     END IF; --}
7418     val_attributes (
7419       p_auction_header_id, p_request_id, l_expiration_date, l_user_id,
7420       l_login_id, l_batch_id, p_full_quantity_bid_code, p_bid_ranking);
7421 
7422     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
7423       FND_LOG.string(log_level => FND_LOG.level_statement,
7424         module  =>  g_module_prefix || l_module_name,
7425         message  => 'Validation attributes for uniqueness withing a line');
7426     END IF; --}
7427     val_attr_name_unique(
7428       p_auction_header_id, p_request_id, l_expiration_date, l_user_id, l_login_id,
7429       l_batch_id);
7430 
7431     -- Score validations only if the p_line_mas_enabled_flag is set to Y and if it is multi attribute scoring
7432     -- We are not checking for NVL (p_line_mas_enabled_flag, 'Y') = 'Y' because bid ranking can be set to
7433     -- MAS only if the condition is true
7434     IF (p_bid_ranking = 'MULTI_ATTRIBUTE_SCORING') THEN
7435 
7436       IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
7437         FND_LOG.string(log_level => FND_LOG.level_statement,
7438           module  =>  g_module_prefix || l_module_name,
7439           message  => 'Validation attribute scores');
7440       END IF; --}
7441       val_attr_scores(
7442         p_auction_header_id, p_request_id, l_expiration_date, l_user_id, l_login_id,
7443         l_batch_id);
7444 
7445     END IF;
7446   END IF;
7447 
7448   /*
7449    * SHIPMENTS VALIDATIONS
7450    */
7451   -- Shipment validation only if it is not an RFI and it is a BLANKET OR A CONTRACT
7452   -- and if price tiers indicator is price breaks, if price tiers indicator is price breaks then
7453   -- we can assume that negotiation is not an RFI and is either a BLANKET or a CONTRACT
7454   IF (p_price_tiers_indicator = 'PRICE_BREAKS') THEN
7455 
7456     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
7457       FND_LOG.string(log_level => FND_LOG.level_statement,
7458         module  =>  g_module_prefix || l_module_name,
7459         message  => 'Validating price breaks');
7460     END IF; --}
7461     val_price_breaks (
7462       p_auction_header_id, p_close_bidding_date, p_request_id, l_expiration_date, l_user_id,
7463       l_login_id, l_batch_id, p_auction_currency_precision, p_po_start_date, p_po_end_date);
7464 
7465   END IF;
7466 
7467   /*
7468    * QUANTITY BASED PRICE TIERS VALIDATIONS
7469    */
7470   -- Shipment validation only if it is not an RFI
7471   -- and if price tiers indicator is Quantity based price tiers
7472   IF (p_price_tiers_indicator = 'QUANTITY_BASED') THEN
7473 
7474     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
7475       FND_LOG.string(log_level => FND_LOG.level_statement,
7476         module  =>  g_module_prefix || l_module_name,
7477         message  => 'Validating quantity based price tiers');
7478     END IF; --}
7479     val_qty_based_price_tiers  (
7480       p_auction_header_id, p_close_bidding_date, p_request_id, l_expiration_date, l_user_id,
7481       l_login_id, l_batch_id,p_auction_currency_precision);
7482 
7483   END IF;
7484 
7485   /*
7486    * PRICE DIFFERENTIALS VALIDATIONS
7487    */
7488   -- Price differential validation only if this is an RFI or this is a global agreement
7489   IF (g_document_type_names (p_doctype_id) = PON_CONTERMS_UTL_PVT.SRC_REQUEST_FOR_INFORMATION OR
7490       l_is_global_agreement) THEN
7491 
7492     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
7493       FND_LOG.string(log_level => FND_LOG.level_statement,
7494         module  =>  g_module_prefix || l_module_name,
7495         message  => 'Validating for unique price differentials');
7496     END IF; --}
7497     val_pd_unique(
7498       p_auction_header_id, p_request_id, l_expiration_date, l_user_id, l_login_id,
7499       l_batch_id);
7500 
7501     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
7502       FND_LOG.string(log_level => FND_LOG.level_statement,
7503         module  =>  g_module_prefix || l_module_name,
7504         message  => 'Validating price differentials');
7505     END IF; --}
7506     val_price_differentials(
7507       p_auction_header_id, p_request_id, l_expiration_date, l_user_id, l_login_id,
7508       l_batch_id);
7509 
7510   END IF;
7511 
7512   /*
7513    * COST FACTOR VALIDATIONS
7514    */
7515   IF (p_pf_type_allowed <> 'NONE') THEN
7516 
7517     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
7518       FND_LOG.string(log_level => FND_LOG.level_statement,
7519         module  =>  g_module_prefix || l_module_name,
7520         message  => 'Validating price elements');
7521     END IF; --}
7522     val_price_elements (p_auction_header_id, p_request_id, l_expiration_date, l_user_id,
7523       l_login_id, l_batch_id, p_auction_currency_precision, p_fnd_currency_precision,
7524       p_trading_partner_id);
7525 
7526     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
7527       FND_LOG.string(log_level => FND_LOG.level_statement,
7528         module  =>  g_module_prefix || l_module_name,
7529         message  => 'Validation for unique price elements');
7530     END IF; --}
7531     val_pe_unique (
7532       p_auction_header_id, p_request_id, l_expiration_date, l_user_id, l_login_id,
7533       l_batch_id);
7534 
7535   END IF;
7536 
7537   -- Validate party exclusions only if this is not a large negotiation
7538   IF (nvl (p_large_neg_enabled_flag, 'N') <> 'Y') THEN
7539 
7540     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
7541       FND_LOG.string(log_level => FND_LOG.level_statement,
7542         module  =>  g_module_prefix || l_module_name,
7543         message  => 'Validating party exclusions:');
7544     END IF; --}
7545     val_party_exclusions (
7546       p_auction_header_id, p_request_id, l_expiration_date, l_user_id, l_login_id, l_batch_id);
7547 
7548   END IF;
7549 
7550   -- The reference data validation should happen only in case of publication
7551   -- and concurrent flow
7552   IF ('N' = p_for_approval AND p_request_id IS NOT NULL) THEN
7553     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
7554       FND_LOG.string(log_level => FND_LOG.level_statement,
7555         module  =>  g_module_prefix || l_module_name,
7556         message  => 'Validating reference data');
7557     END IF; --}
7558     val_line_ref_data (
7559       p_auction_header_id, p_request_id, l_expiration_date, l_user_id, l_login_id,
7560       l_batch_id);
7561   END IF;
7562 
7563   IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
7564     FND_LOG.string(log_level => FND_LOG.level_statement,
7565       module  =>  g_module_prefix || l_module_name,
7566       message  => 'Validation for multi currency aution with amount based lines');
7567   END IF; --}
7568   val_line_amount_multi_curr (
7569     p_auction_header_id, p_allow_other_bid_currency, p_request_id, l_expiration_date,
7570     l_user_id, l_login_id, l_batch_id);
7571 
7572   IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
7573     FND_LOG.string(log_level => FND_LOG.level_statement,
7574       module  =>  g_module_prefix || l_module_name,
7575       message  => 'Validating if outside operation lines are included in a global agreement');
7576   END IF; --}
7577   val_outside_flag_exists (
7578     p_auction_header_id, l_is_global_agreement, p_request_id, l_expiration_date, l_user_id,
7579     l_login_id, l_batch_id);
7580 
7581   IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
7582     FND_LOG.string(log_level => FND_LOG.level_statement,
7583       module  =>  g_module_prefix || l_module_name,
7584       message  => 'Validating Complex work fields');
7585   END IF; --}
7586   validate_complexwork_lines (
7587     p_auction_header_id, p_request_id, l_expiration_date, l_user_id, l_login_id,
7588     l_batch_id, p_fnd_currency_precision);
7589 
7590   IF p_progress_payment_type <> 'NONE' AND p_contract_type = 'STANDARD' THEN
7591     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
7592       FND_LOG.string(log_level => FND_LOG.level_statement,
7593         module  =>  g_module_prefix || 'VALIDATE_LINES',
7594         message  => 'Validating payments:');
7595     END IF; --}
7596     VALIDATE_PAYMENTS (p_auction_header_id, p_request_id, l_expiration_date, l_user_id, l_login_id, l_batch_id, p_auction_currency_precision);
7597   END IF;
7598 
7599 EXCEPTION
7600   WHEN OTHERS THEN
7601     x_result := FND_API.G_RET_STS_UNEXP_ERROR;
7602     x_error_code := SQLCODE;
7603     x_error_message := SUBSTR(SQLERRM, 1, 100);
7604 
7605     IF (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.g_current_runtime_level) THEN
7606       FND_LOG.string (log_level => FND_LOG.level_exception,
7607         module  => g_module_prefix || l_module_name,
7608         message => 'Unexpected exception occured error_code = ' || x_error_code ||
7609           ', error_message = ' || x_error_message);
7610     END IF;
7611 
7612 END VALIDATE_LINES;
7613 
7614 PROCEDURE LOG_INTERFACE_ERROR (
7615   p_interface_type IN VARCHAR2,
7616   p_error_message_name IN VARCHAR2,
7617   p_token1_name IN VARCHAR2,
7618   p_token1_value IN VARCHAR2,
7619   p_token2_name IN VARCHAR2,
7620   p_token2_value IN VARCHAR2,
7621   p_request_id IN NUMBER,
7622   p_auction_header_id IN NUMBER,
7623   p_expiration_date IN DATE,
7624   p_user_id IN NUMBER
7625 ) IS
7626 BEGIN
7627 
7628   INSERT INTO PON_INTERFACE_ERRORS
7629   (
7630     INTERFACE_TYPE,
7631     ERROR_MESSAGE_NAME,
7632     TOKEN1_NAME,
7633     TOKEN1_VALUE,
7634     TOKEN2_NAME,
7635     TOKEN2_VALUE,
7636     REQUEST_ID,
7637     AUCTION_HEADER_ID,
7638     EXPIRATION_DATE,
7639     CREATED_BY,
7640     CREATION_DATE,
7641     LAST_UPDATED_BY,
7642     LAST_UPDATE_DATE,
7643     LAST_UPDATE_LOGIN
7644   )
7645   VALUES
7646   (
7647     p_interface_type, --INTERFACE_TYPE
7648     p_error_message_name, --ERROR_MESSAGE_NAME
7649     p_token1_name, -- TOKEN1_NAME
7650     p_token1_value, --TOKEN1_VALUE
7651     p_token2_name, --TOKEN2_NAME
7652     p_token2_value, -- TOKEN2_VALUE
7653     p_request_id, -- REQUEST_ID
7654     p_auction_header_id, -- AUCTION_HEADER_ID
7655     p_expiration_date, -- EXPIRATION_DATE
7656     p_user_id, -- CREATED_BY
7657     sysdate, -- CREATION_DATE
7658     p_user_id, -- LAST_UPDATED_BY
7659     sysdate, -- LAST_UPDATE_DATE
7660     FND_GLOBAL.LOGIN_ID -- LAST_UPDATE_LOGIN
7661   );
7662 END LOG_INTERFACE_ERROR;
7663 
7664 FUNCTION CHECK_ACTION_ERRORS_PRESENT (
7665   p_batch_id IN NUMBER
7666 ) RETURN BOOLEAN IS
7667 
7668 l_batch_id NUMBER;
7669 BEGIN
7670 
7671   IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
7672     FND_LOG.string(log_level => FND_LOG.level_statement,
7673       module  =>  g_module_prefix || 'CHECK_ACTION_ERRORS_PRESENT',
7674       message  => 'Checking if any errors are present for batch id = ' || p_batch_id);
7675   END IF; --}
7676 
7677   SELECT
7678     BATCH_ID
7679   INTO
7680     l_batch_id
7681   FROM
7682     PON_INTERFACE_ERRORS
7683   WHERE
7684     BATCH_ID = p_batch_id AND
7685     ROWNUM =1;
7686 
7687   RETURN TRUE;
7688 
7689 EXCEPTION WHEN NO_DATA_FOUND THEN
7690   RETURN FALSE;
7691 
7692 END CHECK_ACTION_ERRORS_PRESENT;
7693 
7694 PROCEDURE RETRIEVE_ERRORS_AND_ROLLBACK (
7695   p_batch_id IN NUMBER
7696 ) IS
7697 l_interface_type                           PON_NEG_COPY_DATATYPES_GRP.VARCHAR50_TYPE;
7698 l_column_name                              PON_NEG_COPY_DATATYPES_GRP.VARCHAR50_TYPE;
7699 l_table_name                               PON_NEG_COPY_DATATYPES_GRP.VARCHAR50_TYPE;
7700 l_interface_line_id                        PON_NEG_COPY_DATATYPES_GRP.NUMBER_TYPE;
7701 l_error_message_name                       PON_NEG_COPY_DATATYPES_GRP.VARCHAR2000_TYPE;
7702 l_error_value                              PON_NEG_COPY_DATATYPES_GRP.VARCHAR100_TYPE;
7703 l_created_by                               PON_NEG_COPY_DATATYPES_GRP.NUMBER_TYPE;
7704 l_creation_date                            PON_NEG_COPY_DATATYPES_GRP.SIMPLE_DATE_TYPE;
7705 l_last_updated_by                          PON_NEG_COPY_DATATYPES_GRP.NUMBER_TYPE;
7706 l_last_update_date                         PON_NEG_COPY_DATATYPES_GRP.SIMPLE_DATE_TYPE;
7707 l_last_update_login                        PON_NEG_COPY_DATATYPES_GRP.NUMBER_TYPE;
7708 l_request_id                               PON_NEG_COPY_DATATYPES_GRP.NUMBER_TYPE;
7709 l_entity_type                              PON_NEG_COPY_DATATYPES_GRP.VARCHAR50_TYPE;
7710 l_entity_attr_name                         PON_NEG_COPY_DATATYPES_GRP.VARCHAR50_TYPE;
7711 l_error_value_date                         PON_NEG_COPY_DATATYPES_GRP.SIMPLE_DATE_TYPE;
7712 l_error_value_number                       PON_NEG_COPY_DATATYPES_GRP.NUMBER_TYPE;
7713 l_error_value_datatype                     PON_NEG_COPY_DATATYPES_GRP.VARCHAR20_TYPE;
7714 l_auction_header_id                        PON_NEG_COPY_DATATYPES_GRP.NUMBER_TYPE;
7715 l_bid_number                               PON_NEG_COPY_DATATYPES_GRP.NUMBER_TYPE;
7716 l_line_number                              PON_NEG_COPY_DATATYPES_GRP.NUMBER_TYPE;
7717 l_attribute_name                           PON_NEG_COPY_DATATYPES_GRP.VARCHAR300_TYPE;
7718 l_price_element_type_id                    PON_NEG_COPY_DATATYPES_GRP.NUMBER_TYPE;
7719 l_shipment_number                          PON_NEG_COPY_DATATYPES_GRP.NUMBER_TYPE;
7720 l_price_differential_number                PON_NEG_COPY_DATATYPES_GRP.NUMBER_TYPE;
7721 l_expiration_date                          PON_NEG_COPY_DATATYPES_GRP.SIMPLE_DATE_TYPE;
7722 l_token1_name                              PON_NEG_COPY_DATATYPES_GRP.VARCHAR50_TYPE;
7723 l_token1_value                             PON_NEG_COPY_DATATYPES_GRP.VARCHAR300_TYPE;
7724 l_token2_name                              PON_NEG_COPY_DATATYPES_GRP.VARCHAR50_TYPE;
7725 l_token2_value                             PON_NEG_COPY_DATATYPES_GRP.VARCHAR300_TYPE;
7726 l_token3_name                              PON_NEG_COPY_DATATYPES_GRP.VARCHAR50_TYPE;
7727 l_token3_value                             PON_NEG_COPY_DATATYPES_GRP.VARCHAR300_TYPE;
7728 l_token4_name                              PON_NEG_COPY_DATATYPES_GRP.VARCHAR50_TYPE;
7729 l_token4_value                             PON_NEG_COPY_DATATYPES_GRP.VARCHAR300_TYPE;
7730 l_token5_name                              PON_NEG_COPY_DATATYPES_GRP.VARCHAR50_TYPE;
7731 l_token5_value                             PON_NEG_COPY_DATATYPES_GRP.VARCHAR300_TYPE;
7732 l_payment_id                               PON_NEG_COPY_DATATYPES_GRP.NUMBER_TYPE;
7733 l_bid_payment_id                           PON_NEG_COPY_DATATYPES_GRP.NUMBER_TYPE;
7734 BEGIN
7735 
7736   SELECT
7737     INTERFACE_TYPE,
7738     COLUMN_NAME,
7739     TABLE_NAME,
7740     INTERFACE_LINE_ID,
7741     ERROR_MESSAGE_NAME,
7742     ERROR_VALUE,
7743     CREATED_BY,
7744     CREATION_DATE,
7745     LAST_UPDATED_BY,
7746     LAST_UPDATE_DATE,
7747     LAST_UPDATE_LOGIN,
7748     REQUEST_ID,
7749     ENTITY_TYPE,
7750     ENTITY_ATTR_NAME,
7751     ERROR_VALUE_DATE,
7752     ERROR_VALUE_NUMBER,
7753     ERROR_VALUE_DATATYPE,
7754     AUCTION_HEADER_ID,
7755     BID_NUMBER,
7756     LINE_NUMBER,
7757     ATTRIBUTE_NAME,
7758     PRICE_ELEMENT_TYPE_ID,
7759     SHIPMENT_NUMBER,
7760     PRICE_DIFFERENTIAL_NUMBER,
7761     EXPIRATION_DATE,
7762     TOKEN1_NAME,
7763     TOKEN1_VALUE,
7764     TOKEN2_NAME,
7765     TOKEN2_VALUE,
7766     TOKEN3_NAME,
7767     TOKEN3_VALUE,
7768     TOKEN4_NAME,
7769     TOKEN4_VALUE,
7770     TOKEN5_NAME,
7771     TOKEN5_VALUE,
7772     PAYMENT_ID,
7773     BID_PAYMENT_ID
7774   BULK COLLECT INTO
7775     l_interface_type,
7776     l_column_name,
7777     l_table_name,
7778     l_interface_line_id,
7779     l_error_message_name,
7780     l_error_value,
7781     l_created_by,
7782     l_creation_date,
7783     l_last_updated_by,
7784     l_last_update_date,
7785     l_last_update_login,
7786     l_request_id,
7787     l_entity_type,
7788     l_entity_attr_name,
7789     l_error_value_date,
7790     l_error_value_number,
7791     l_error_value_datatype,
7792     l_auction_header_id,
7793     l_bid_number,
7794     l_line_number,
7795     l_attribute_name,
7796     l_price_element_type_id,
7797     l_shipment_number,
7798     l_price_differential_number,
7799     l_expiration_date,
7800     l_token1_name,
7801     l_token1_value,
7802     l_token2_name,
7803     l_token2_value,
7804     l_token3_name,
7805     l_token3_value,
7806     l_token4_name,
7807     l_token4_value,
7808     l_token5_name,
7809     l_token5_value,
7810     l_payment_id,
7811     l_bid_payment_id
7812   FROM
7813     PON_INTERFACE_ERRORS
7814   WHERE
7815     BATCH_ID = p_batch_id;
7816 
7817   ROLLBACK;
7818 
7819   FORALL x IN 1..l_interface_type.COUNT
7820   INSERT INTO PON_INTERFACE_ERRORS
7821   (
7822     INTERFACE_TYPE,
7823     COLUMN_NAME,
7824     TABLE_NAME,
7825     BATCH_ID,
7826     INTERFACE_LINE_ID,
7827     ERROR_MESSAGE_NAME,
7828     ERROR_VALUE,
7829     CREATED_BY,
7830     CREATION_DATE,
7831     LAST_UPDATED_BY,
7832     LAST_UPDATE_DATE,
7833     LAST_UPDATE_LOGIN,
7834     REQUEST_ID,
7835     ENTITY_TYPE,
7836     ENTITY_ATTR_NAME,
7837     ERROR_VALUE_DATE,
7838     ERROR_VALUE_NUMBER,
7839     ERROR_VALUE_DATATYPE,
7840     AUCTION_HEADER_ID,
7841     BID_NUMBER,
7842     LINE_NUMBER,
7843     ATTRIBUTE_NAME,
7844     PRICE_ELEMENT_TYPE_ID,
7845     SHIPMENT_NUMBER,
7846     PRICE_DIFFERENTIAL_NUMBER,
7847     EXPIRATION_DATE,
7848     TOKEN1_NAME,
7849     TOKEN1_VALUE,
7850     TOKEN2_NAME,
7851     TOKEN2_VALUE,
7852     TOKEN3_NAME,
7853     TOKEN3_VALUE,
7854     TOKEN4_NAME,
7855     TOKEN4_VALUE,
7856     TOKEN5_NAME,
7857     TOKEN5_VALUE,
7858     PAYMENT_ID,
7859     BID_PAYMENT_ID
7860   )
7861   VALUES
7862   (
7863     l_interface_type (x),
7864     l_column_name (x),
7865     l_table_name (x),
7866     p_batch_id,
7867     l_interface_line_id (x),
7868     l_error_message_name (x),
7869     l_error_value (x),
7870     l_created_by (x),
7871     l_creation_date (x),
7872     l_last_updated_by (x),
7873     l_last_update_date (x),
7874     l_last_update_login (x),
7875     l_request_id (x),
7876     l_entity_type (x),
7877     l_entity_attr_name (x),
7878     l_error_value_date (x),
7879     l_error_value_number (x),
7880     l_error_value_datatype (x),
7881     l_auction_header_id (x),
7882     l_bid_number (x),
7883     l_line_number (x),
7884     l_attribute_name (x),
7885     l_price_element_type_id (x),
7886     l_shipment_number (x),
7887     l_price_differential_number (x),
7888     l_expiration_date (x),
7889     l_token1_name (x),
7890     l_token1_value (x),
7891     l_token2_name (x),
7892     l_token2_value (x),
7893     l_token3_name (x),
7894     l_token3_value (x),
7895     l_token4_name (x),
7896     l_token4_value (x),
7897     l_token5_name (x),
7898     l_token5_value (x),
7899     l_payment_id (x),
7900     l_bid_payment_id (x)
7901   );
7902 
7903 END RETRIEVE_ERRORS_AND_ROLLBACK;
7904 
7905 PROCEDURE update_line_flag_seq_closedate (
7906   x_result OUT NOCOPY VARCHAR,
7907   x_error_code OUT NOCOPY VARCHAR,
7908   x_error_message OUT NOCOPY VARCHAR,
7909   p_user_id IN NUMBER,
7910   p_login_id IN NUMBER,
7911   p_auction_header_id IN NUMBER,
7912   p_close_bidding_date IN DATE,
7913   p_stag_closing_enabled_flag IN VARCHAR,
7914   p_curr_from_line_number IN NUMBER,
7915   p_curr_to_line_number IN NUMBER
7916 ) IS
7917 
7918 l_module_name VARCHAR2 (30);
7919 BEGIN
7920 
7921   l_module_name := 'update_line_flag_seq_closedate';
7922   x_result := FND_API.g_ret_sts_success;
7923 
7924   IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
7925     FND_LOG.string (log_level => FND_LOG.level_procedure,
7926       module => g_module_prefix || l_module_name,
7927       message => 'Entered procedure = ' || l_module_name);
7928   END IF;
7929 
7930   UPDATE pon_auction_item_prices_all paip
7931   SET
7932   -- the max sub line sequence number is set to the greatest
7933     -- max_sub_line_sequence_number between this round and the
7934     -- previous round
7935     max_sub_line_sequence_number = GREATEST (
7936       (
7937        SELECT
7938          NVL (MAX (sub_line_sequence_number),0)
7939        FROM
7940          pon_auction_item_prices_all
7941        WHERE
7942          auction_header_id=p_auction_header_id AND
7943          parent_line_number = paip.line_number AND
7944          group_type IN ('LOT_LINE', 'GROUP_LINE')
7945       ), NVL(max_sub_line_sequence_number,0))
7946   WHERE
7947     auction_header_id = p_auction_header_id AND
7948     line_number >= p_curr_from_line_number AND
7949     line_number <= p_curr_to_line_number AND
7950     group_type IN ('LOT', 'GROUP');
7951 
7952   UPDATE pon_auction_item_prices_all paip
7953   SET
7954     close_bidding_date = decode(p_stag_closing_enabled_flag, 'Y', close_bidding_date, p_close_bidding_date),
7955 
7956     -- If the line has any attributes this flag will be Y else N
7957     has_attributes_flag = NVL(
7958                  (SELECT 'Y'
7959                  FROM PON_AUCTION_ATTRIBUTES
7960                  WHERE AUCTION_HEADER_ID = p_auction_header_id
7961                  AND LINE_NUMBER = PAIP.LINE_NUMBER
7962                   AND ROWNUM = 1), 'N'),
7963 
7964     -- If the line has any shipments this flag will be Y else N
7965     has_shipments_flag = NVL (
7966                  (SELECT 'Y'
7967                   FROM pon_auction_shipments_all
7968                   WHERE auction_header_id = p_auction_header_id
7969                   AND line_number = paip.line_number
7970                   AND shipment_type = 'PRICE BREAK'
7971                   AND rownum = 1),'N'),
7972 
7973     -- If the line has any supplier price factors this flag will be Y else N
7974     has_price_elements_flag = NVL (
7975                  (SELECT 'Y'
7976                  FROM pon_price_elements
7977                  WHERE auction_header_id = p_auction_header_id
7978                   AND line_number = paip.line_number
7979                   AND pf_type = 'SUPPLIER'
7980                   AND rownum = 1), 'N'),
7981 
7982     -- If the line has any buyer price factors this flag will be Y else N
7983     has_buyer_pfs_flag = NVL (
7984                  (SELECT 'Y'
7985                  FROM pon_price_elements
7986                  WHERE auction_header_id = p_auction_header_id
7987                   AND line_number = paip.line_number
7988                   AND pf_type = 'BUYER'
7989                   AND rownum = 1),'N'),
7990 
7991     -- If the line has any price differentials this flag will be Y else N
7992     has_price_differentials_flag = NVL (
7993                  (SELECT 'Y'
7994                   FROM pon_price_differentials
7995                   WHERE auction_header_id = p_auction_header_id
7996                   AND line_number = paip.line_number
7997                   AND shipment_number = -1
7998                   AND rownum = 1),'N'),
7999 
8000      --complex work - If the line has any payments this flag will be Y else N
8001     has_Payments_flag = NVL(
8002                  (SELECT 'Y'
8003                  FROM PON_AUC_PAYMENTS_SHIPMENTS
8004                  WHERE AUCTION_HEADER_ID = p_auction_header_id
8005                  AND LINE_NUMBER = PAIP.LINE_NUMBER
8006                   AND ROWNUM = 1), 'N'),
8007 
8008      --Quantity tiers project - If the line has any quantity based price tiers this flag will be Y else N
8009     has_quantity_tiers = NVL (
8010                  (SELECT 'Y'
8011                  FROM PON_AUCTION_SHIPMENTS_ALL
8012                  WHERE AUCTION_HEADER_ID = p_auction_header_id
8013                   AND shipment_type = 'QUANTITY BASED'
8014                   AND LINE_NUMBER = PAIP.LINE_NUMBER
8015                   AND ROWNUM = 1),'N'),
8016      -- Is quantity scored flag is set to Y in case quantity there is a line
8017      -- attribute for quantity (sequence_number = QUANTITY_SEQ_NUMBER
8018     is_quantity_scored = NVL (
8019                  (SELECT 'Y'
8020                  FROM PON_AUCTION_ATTRIBUTES
8021                  WHERE AUCTION_HEADER_ID = p_auction_header_id
8022                  AND LINE_NUMBER = PAIP.LINE_NUMBER
8023                  AND SEQUENCE_NUMBER = -20
8024                  AND ROWNUM = 1), 'N'),
8025 
8026      -- Is quantity need by date scored flag is set to Y in case there is a line
8027      -- attribute for need by date (sequence_number = NEED_BY_DATE_SEQ_NUMBER
8028     is_need_by_date_scored = NVL (
8029                  (SELECT 'Y'
8030                  FROM PON_AUCTION_ATTRIBUTES
8031                  WHERE AUCTION_HEADER_ID = p_auction_header_id
8032                  AND LINE_NUMBER = PAIP.LINE_NUMBER
8033                  AND SEQUENCE_NUMBER = -10
8034                  AND ROWNUM = 1), 'N'),
8035     -- standard who columns
8036     last_update_date = sysdate,
8037     last_update_login = p_login_id,
8038     last_updated_by = p_user_id
8039   WHERE
8040     auction_header_id = p_auction_header_id AND
8041     line_number >= p_curr_from_line_number AND
8042     line_number <= p_curr_to_line_number;
8043 
8044   IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
8045     FND_LOG.string (log_level => FND_LOG.level_procedure,
8046       module => g_module_prefix || l_module_name,
8047       message => 'Leaving procedure = ' || l_module_name);
8048   END IF;
8049 
8050 EXCEPTION
8051   WHEN OTHERS THEN
8052     x_result := FND_API.G_RET_STS_UNEXP_ERROR;
8053     x_error_code := SQLCODE;
8054     x_error_message := SUBSTR(SQLERRM, 1, 100);
8055 
8056     IF (FND_LOG.level_exception >= FND_LOG.g_current_runtime_level) THEN
8057       FND_LOG.string (log_level => FND_LOG.level_exception,
8058         module => g_module_prefix || l_module_name,
8059         message => 'Unexpected exception occured error_code = ' || x_error_code || ', error_message = ' || x_error_message);
8060     END IF;
8061 
8062 END update_line_flag_seq_closedate;
8063 
8064 PROCEDURE process_price_factors (p_auction_header_id IN NUMBER,
8065                                 p_user_id           IN NUMBER,
8066                                 p_login_id          IN NUMBER,
8067                                 p_from_line_number IN NUMBER,
8068                                 p_to_line_number IN NUMBER) IS
8069 
8070 l_module_name VARCHAR2(30);
8071 BEGIN
8072 
8073   l_module_name := 'process_price_factors';
8074   IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
8075     FND_LOG.string (log_level => FND_LOG.level_procedure,
8076       module => g_module_prefix || l_module_name,
8077       message => 'Entering procedure = ' || l_module_name);
8078   END IF;
8079 
8080   MERGE INTO pon_price_elements ppe
8081   USING
8082   (
8083     SELECT
8084       auction_header_id,
8085       line_number,
8086       order_type_lookup_code,
8087       unit_target_price,
8088       unit_display_target_flag
8089     FROM
8090       pon_auction_item_prices_all
8091     WHERE
8092       auction_header_id = p_auction_header_id AND
8093       (has_price_elements_flag = 'Y' OR has_buyer_pfs_flag = 'Y') AND
8094       line_number >= p_from_line_number AND
8095       line_number <= p_to_line_number
8096   )paip
8097 
8098   ON
8099   (
8100     paip.auction_header_id = ppe.auction_header_id AND
8101     paip.line_number = ppe.line_number AND
8102     ppe.price_element_type_id = -10
8103   )
8104 
8105   WHEN MATCHED THEN UPDATE
8106   SET
8107     pricing_basis = decode(paip.order_type_lookup_code, 'FIXED PRICE', 'FIXED_AMOUNT', 'PER_UNIT'),
8108     value = paip.unit_target_price,
8109     display_target_flag = unit_display_target_flag,
8110     last_update_date = sysdate,
8111     last_updated_by = p_user_id
8112 
8113   WHEN NOT MATCHED THEN INSERT
8114   (
8115     auction_header_id,
8116     line_number,
8117     list_id,
8118     price_element_type_id,
8119     pricing_basis,
8120     value,
8121     display_target_flag,
8122     sequence_number,
8123     creation_date,
8124     created_by,
8125     last_update_date,
8126     last_updated_by,
8127     pf_type,
8128     display_to_suppliers_flag
8129   )
8130   VALUES
8131   (
8132     paip.auction_header_id,
8133     paip.line_number,
8134     -1,
8135     -10,
8136     decode(paip.order_type_lookup_code, 'FIXED PRICE', 'FIXED_AMOUNT', 'PER_UNIT'),
8137     paip.unit_target_price,
8138     paip.unit_display_target_flag,
8139     -10,
8140     sysdate,
8141     p_user_id,
8142     sysdate,
8143     p_user_id,
8144     'SUPPLIER',
8145     'Y'
8146   );
8147 
8148   -- Populate the pon_pf_supplier_formula table
8149 
8150   MERGE INTO pon_pf_supplier_formula ppsf
8151   USING
8152   (
8153     SELECT
8154       paip.auction_header_id,
8155       paip.line_number,
8156       pbp.trading_partner_id,
8157       pbp.vendor_site_id,
8158       pbp.requested_supplier_id,
8159       sum(decode(ppe.pricing_basis, 'PER_UNIT', Decode(Nvl(ppe.negative_cost_factor_flag,'N'),'Y', -ppsv.Value,ppsv.Value) , 0)) unit_price,
8160       sum(decode(ppe.pricing_basis, 'FIXED_AMOUNT', Decode(Nvl(ppe.negative_cost_factor_flag,'N'),'Y', -ppsv.Value,ppsv.Value), 0)) fixed_amount,
8161       1 + sum(decode(ppe.pricing_basis, 'PERCENTAGE', Decode(Nvl(ppe.negative_cost_factor_flag,'N'),'Y', -ppsv.Value/100,ppsv.Value/100), 0)) percentage
8162     from
8163       pon_auction_item_prices_all paip,
8164       pon_bidding_parties pbp,
8165       pon_pf_supplier_values ppsv,
8166       pon_price_elements ppe
8167     where
8168       paip.auction_header_id = p_auction_header_id and
8169       pbp.auction_header_id = paip.auction_header_id and
8170       pbp.auction_header_id = ppsv.auction_header_id and
8171       paip.line_number >= p_from_line_number and
8172       paip.line_number <= p_to_line_number and
8173       pbp.sequence = ppsv.supplier_seq_number and
8174       paip.line_number = ppsv.line_number and
8175       ppsv.auction_header_id = ppe.auction_header_id and
8176       ppsv.line_number = ppe.line_number and
8177       ppsv.pf_seq_number = ppe.sequence_number
8178     group by
8179       paip.auction_header_id,
8180       paip.line_number,
8181       pbp.trading_partner_id,
8182       pbp.vendor_site_id,
8183       pbp.requested_supplier_id
8184   ) pfsdata
8185   ON
8186   (
8187     pfsdata.auction_header_id = ppsf.auction_header_id and
8188     pfsdata.line_number = ppsf.line_number and
8189     (pfsdata.trading_partner_id = ppsf.trading_partner_id
8190       OR pfsdata.requested_supplier_id = ppsf.requested_supplier_id) and
8191     pfsdata.vendor_site_id = ppsf.vendor_site_id
8192   )
8193   WHEN MATCHED THEN UPDATE
8194   SET
8195     unit_price = pfsdata.unit_price,
8196     fixed_amount = pfsdata.fixed_amount,
8197     percentage = pfsdata.percentage,
8198     last_update_date = sysdate,
8199     last_updated_by = p_user_id,
8200     last_update_login = p_login_id
8201   WHEN NOT MATCHED THEN INSERT
8202   (
8203     auction_header_id,
8204     line_number,
8205     trading_partner_id,
8206     vendor_site_id,
8207     requested_supplier_id,
8208     unit_price,
8209     fixed_amount,
8210     percentage,
8211     creation_date,
8212     created_by,
8213     last_update_date,
8214     last_updated_by,
8215     last_update_login
8216   )
8217   VALUES
8218   (
8219     pfsdata.auction_header_id,
8220     pfsdata.line_number,
8221     pfsdata.trading_partner_id,
8222     pfsdata.vendor_site_id,
8223     pfsdata.requested_supplier_id,
8224     pfsdata.unit_price,
8225     pfsdata.fixed_amount,
8226     pfsdata.percentage,
8227     sysdate,
8228     p_user_id,
8229     sysdate,
8230     p_user_id,
8231     p_login_id
8232   );
8233 
8234 END PROCESS_PRICE_FACTORS;
8235 
8236 --Complex work
8237 -- This procedure processes a batch of payments
8238 PROCEDURE Process_Payments_batch (
8239   x_result OUT NOCOPY VARCHAR,
8240   x_error_code OUT NOCOPY VARCHAR,
8241   x_error_message OUT NOCOPY VARCHAR,
8242   p_auction_header_id IN NUMBER,
8243   p_user_id IN NUMBER,
8244   p_login_id IN NUMBER,
8245   p_curr_from_line_number IN NUMBER,
8246   p_curr_to_line_number IN NUMBER
8247 ) IS
8248 
8249 l_module_name VARCHAR2 (30);
8250 
8251 BEGIN
8252 
8253   l_module_name := 'process_payments_batch';
8254   x_result := FND_API.g_ret_sts_success;
8255 
8256   IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
8257     FND_LOG.string (log_level => FND_LOG.level_procedure,
8258       module => g_module_prefix || l_module_name,
8259       message => 'Entered procedure = ' || l_module_name);
8260   END IF;
8261 
8262   IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
8263     FND_LOG.string (log_level => FND_LOG.level_procedure,
8264       module => g_module_prefix || l_module_name,
8265       message => 'Update Payments Fields = ' || l_module_name);
8266   END IF;
8267 
8268   UPDATE pon_auc_payments_shipments pay
8269   SET
8270     SHIP_TO_LOCATION_ID = null,
8271     WORK_APPROVER_USER_ID = null,
8272     NOTE_TO_BIDDERS = null,
8273     PROJECT_ID = null,
8274     PROJECT_TASK_ID = null,
8275     PROJECT_AWARD_ID = null,
8276     PROJECT_EXPENDITURE_TYPE = null,
8277     PROJECT_EXP_ORGANIZATION_ID = null,
8278     PROJECT_EXPENDITURE_ITEM_DATE = null,
8279     -- standard who columns
8280     last_update_date = sysdate,
8281     last_update_login = p_login_id,
8282     last_updated_by = p_user_id
8283   WHERE
8284     auction_header_id = p_auction_header_id  AND
8285     line_number >= p_curr_from_line_number AND
8286     line_number <= p_curr_to_line_number;
8287 
8288    IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
8289     FND_LOG.string (log_level => FND_LOG.level_procedure,
8290       module => g_module_prefix || l_module_name,
8291       message => 'Before call Delete_Payment_Attachments = ' || l_module_name);
8292    END IF;
8293 
8294 
8295    PON_NEGOTIATION_HELPER_PVT.Delete_Payment_Attachments(
8296       p_auction_header_id => p_auction_header_id,
8297       p_curr_from_line_number => p_curr_from_line_number,
8298       p_curr_to_line_number => p_curr_to_line_number);
8299 
8300   IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
8301     FND_LOG.string (log_level => FND_LOG.level_procedure,
8302       module => g_module_prefix || l_module_name,
8303       message => 'After Call Delete_Payment_Attachments = ' || l_module_name);
8304    END IF;
8305 
8306   IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
8307     FND_LOG.string (log_level => FND_LOG.level_procedure,
8308       module => g_module_prefix || l_module_name,
8309       message => 'Leaving procedure = ' || l_module_name);
8310   END IF;
8311 
8312 EXCEPTION
8313   WHEN OTHERS THEN
8314     x_result := FND_API.G_RET_STS_UNEXP_ERROR;
8315     x_error_code := SQLCODE;
8316     x_error_message := SUBSTR(SQLERRM, 1, 100);
8317 
8318     IF (FND_LOG.level_exception >= FND_LOG.g_current_runtime_level) THEN
8319       FND_LOG.string (log_level => FND_LOG.level_exception,
8320         module => g_module_prefix || l_module_name,
8321         message => 'Unexpected exception occured error_code = ' || x_error_code || ', error_message = ' || x_error_message);
8322     END IF;
8323 
8324 END Process_Payments_batch;
8325 
8326 --Complex work
8327 -- This procedure processes a batch of payments
8328 PROCEDURE Process_Payments_auto (
8329   x_result OUT NOCOPY VARCHAR,
8330   x_error_code OUT NOCOPY VARCHAR,
8331   x_error_message OUT NOCOPY VARCHAR,
8332   p_auction_header_id IN NUMBER,
8333   p_user_id IN NUMBER,
8334   p_login_id IN NUMBER,
8335   p_curr_from_line_number IN NUMBER,
8336   p_curr_to_line_number IN NUMBER
8337 ) IS
8338   PRAGMA AUTONOMOUS_TRANSACTION;
8339 
8340 l_module_name VARCHAR2 (30);
8341 
8342 BEGIN
8343 
8344   l_module_name := 'process_payments_auto';
8345   x_result := FND_API.g_ret_sts_success;
8346 
8347   IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
8348     FND_LOG.string (log_level => FND_LOG.level_procedure,
8349       module => g_module_prefix || l_module_name,
8350       message => 'Entered procedure = ' || l_module_name);
8351   END IF;
8352 
8353     Process_Payments_batch (
8354      x_result => x_result ,
8355      x_error_code => x_error_code ,
8356      x_error_message => x_error_message ,
8357      p_auction_header_id => p_auction_header_id ,
8358      p_user_id => p_user_id ,
8359      p_login_id => p_login_id ,
8360      p_curr_from_line_number => p_curr_from_line_number ,
8361      p_curr_to_line_number => p_curr_to_line_number);
8362 
8363      IF (x_result <> FND_API.g_ret_sts_success) THEN
8364       ROLLBACK;
8365       return;
8366     END IF;
8367 
8368     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
8369       FND_LOG.string(log_level => FND_LOG.level_statement,
8370         module  =>  g_module_prefix || l_module_name,
8371         message  => 'Commiting data for lines between ' || p_curr_from_line_number || ' and ' || p_curr_to_line_number);
8372     END IF; --}
8373 
8374     COMMIT;
8375 
8376   IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
8377     FND_LOG.string (log_level => FND_LOG.level_procedure,
8378       module => g_module_prefix || l_module_name,
8379       message => 'Leaving procedure = ' || l_module_name);
8380   END IF;
8381 
8382 EXCEPTION
8383   WHEN OTHERS THEN
8384     x_result := FND_API.G_RET_STS_UNEXP_ERROR;
8385     x_error_code := SQLCODE;
8386     x_error_message := SUBSTR(SQLERRM, 1, 100);
8387     Rollback;
8388 
8389     IF (FND_LOG.level_exception >= FND_LOG.g_current_runtime_level) THEN
8390       FND_LOG.string (log_level => FND_LOG.level_exception,
8391         module => g_module_prefix || l_module_name,
8392         message => 'Unexpected exception occured error_code = ' || x_error_code || ', error_message = ' || x_error_message);
8393     END IF;
8394 
8395 END Process_Payments_auto;
8396 
8397 --Complex work
8398 -- This procedure nullifies the attributes that should not be populated
8399 --if a supplier is allowed to enter payments and also deletes the attachments to
8400 -- those payments for a batch of lines
8401 PROCEDURE Process_Payments (
8402   x_result OUT NOCOPY VARCHAR,
8403   x_error_code OUT NOCOPY VARCHAR,
8404   x_error_message OUT NOCOPY VARCHAR,
8405   p_auction_header_id IN NUMBER,
8406   p_user_id IN NUMBER,
8407   p_login_id IN NUMBER
8408 ) IS
8409 
8410 
8411 l_module_name VARCHAR2 (30);
8412 l_max_line_number NUMBER;
8413 l_batch_start NUMBER;
8414 l_batch_end NUMBER;
8415 l_batch_size NUMBER;
8416 
8417 BEGIN
8418 
8419   l_module_name := 'process_payments';
8420   x_result := FND_API.g_ret_sts_success;
8421 
8422   IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
8423     FND_LOG.string (log_level => FND_LOG.level_procedure,
8424       module => g_module_prefix || l_module_name,
8425       message => 'Entered procedure = ' || l_module_name);
8426   END IF;
8427 
8428   l_batch_size := PON_LARGE_AUCTION_UTIL_PKG.BATCH_SIZE;
8429 
8430    SELECT NVL (MAX (line_number), 0)
8431    INTO l_max_line_number
8432    FROM pon_auction_item_prices_all
8433    WHERE auction_header_id = p_auction_header_id;
8434 
8435   IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
8436     FND_LOG.string (log_level => FND_LOG.level_procedure,
8437       module => g_module_prefix || l_module_name,
8438       message => 'Update Payments Fields = ' || l_module_name);
8439   END IF;
8440 
8441   -- Define the initial batch range (line numbers are indexed from 1)
8442   l_batch_start := 1;
8443 
8444   --determine the max line number for this batch
8445   IF (l_max_line_number <= l_batch_size) THEN
8446     l_batch_end := l_max_line_number;
8447        IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
8448       FND_LOG.string(log_level => FND_LOG.level_statement,
8449         module  =>  g_module_prefix || l_module_name,
8450         message  => 'before call to  Process_Payments_batch  l_curr_to_line_number = ' || l_batch_end ||
8451                     ' p_auction_header_id = ' || p_auction_header_id ||
8452                     ', p_user_id = ' || p_user_id ||
8453                     ', p_login_id = ' || p_login_id ||
8454                     ', p_curr_from_line_number = ' || l_batch_start ||
8455                     ', p_curr_to_line_number = ' || l_batch_end);
8456     END IF; --}
8457 
8458    Process_Payments_batch (
8459      x_result => x_result ,
8460      x_error_code => x_error_code ,
8461      x_error_message => x_error_message ,
8462      p_auction_header_id => p_auction_header_id ,
8463      p_user_id => p_user_id ,
8464      p_login_id => p_login_id ,
8465      p_curr_from_line_number => l_batch_start ,
8466      p_curr_to_line_number => l_batch_end);
8467 
8468 
8469    IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
8470     FND_LOG.string (log_level => FND_LOG.level_procedure,
8471       module => g_module_prefix || l_module_name,
8472       message => 'After Call Process_Payments_batch = ' || l_module_name);
8473     END IF;
8474 
8475 
8476   ELSE
8477     l_batch_end := l_batch_size;
8478 
8479   -- loop for each batch
8480   WHILE (l_batch_start <= l_max_line_number) LOOP --{
8481 
8482     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
8483       FND_LOG.string(log_level => FND_LOG.level_statement,
8484         module  =>  g_module_prefix || l_module_name,
8485         message  => 'before call to  Process_Payments_auto  l_curr_to_line_number = ' || l_batch_end ||
8486                     ' p_auction_header_id = ' || p_auction_header_id ||
8487                     ', p_user_id = ' || p_user_id ||
8488                     ', p_login_id = ' || p_login_id ||
8489                     ', p_curr_from_line_number = ' || l_batch_start ||
8490                     ', p_curr_to_line_number = ' || l_batch_end);
8491     END IF; --}
8492 
8493    Process_Payments_auto (
8494      x_result => x_result ,
8495      x_error_code => x_error_code ,
8496      x_error_message => x_error_message ,
8497      p_auction_header_id => p_auction_header_id ,
8498      p_user_id => p_user_id ,
8499      p_login_id => p_login_id ,
8500      p_curr_from_line_number => l_batch_start ,
8501      p_curr_to_line_number => l_batch_end);
8502 
8503 
8504    IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
8505     FND_LOG.string (log_level => FND_LOG.level_procedure,
8506       module => g_module_prefix || l_module_name,
8507       message => 'After Call Process_Payments_auto = ' || l_module_name);
8508     END IF;
8509 
8510    IF (x_result <> FND_API.g_ret_sts_success) THEN
8511       return;
8512     END IF;
8513 
8514     -- Find the new batch range
8515     l_batch_start := l_batch_end + 1;
8516     IF (l_batch_end + l_batch_size > l_max_line_number) THEN
8517       l_batch_end := l_max_line_number;
8518     ELSE
8519       l_batch_end := l_batch_end + l_batch_size;
8520     END IF;
8521 
8522     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
8523       FND_LOG.string(log_level => FND_LOG.level_statement,
8524         module  =>  g_module_prefix || l_module_name,
8525         message  => 'Calculated new l_curr_from_line_number = ' || l_batch_start);
8526     END IF; --}
8527 
8528   END LOOP; --}
8529 
8530  END IF;--}
8531   IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
8532     FND_LOG.string (log_level => FND_LOG.level_procedure,
8533       module => g_module_prefix || l_module_name,
8534       message => 'Leaving procedure = ' || l_module_name);
8535   END IF;
8536 
8537 EXCEPTION
8538   WHEN OTHERS THEN
8539     x_result := FND_API.G_RET_STS_UNEXP_ERROR;
8540     x_error_code := SQLCODE;
8541     x_error_message := SUBSTR(SQLERRM, 1, 100);
8542 
8543     IF (FND_LOG.level_exception >= FND_LOG.g_current_runtime_level) THEN
8544       FND_LOG.string (log_level => FND_LOG.level_exception,
8545         module => g_module_prefix || l_module_name,
8546         message => 'Unexpected exception occured error_code = ' || x_error_code || ', error_message = ' || x_error_message);
8547     END IF;
8548 
8549 END Process_Payments;
8550 
8551 PROCEDURE update_header_before_publish (
8552   x_result OUT NOCOPY VARCHAR,
8553   x_error_code OUT NOCOPY VARCHAR,
8554   x_error_message OUT NOCOPY VARCHAR,
8555   p_auction_header_id IN NUMBER
8556 ) IS
8557 
8558 l_line_number NUMBER;
8559 l_attributes_exist VARCHAR2(30);
8560 l_has_price_elements VARCHAR2(30);
8561 l_has_pe_for_all_items VARCHAR2(30);
8562 l_module_name VARCHAR2(30);
8563 
8564 BEGIN
8565   l_module_name := 'update_header_before_publish';
8566   x_result := FND_API.G_RET_STS_SUCCESS;
8567 
8568 --MAX_DOCUMENT_LINE_NUMBER and MAX_INTERNAL_LINE_NUMBER on the header
8569 --HAS_ATTRIBUTES_FLAG, HAS_PRICE_ELEMENTS_FLAG, HAS_PE_FOR_ALL_ITEMS
8570   BEGIN
8571     SELECT 'YES'
8572     INTO l_attributes_exist
8573     FROM PON_AUCTION_ATTRIBUTES
8574     WHERE AUCTION_HEADER_ID = p_auction_header_id
8575     AND ROWNUM = 1;
8576 
8577     EXCEPTION WHEN NO_DATA_FOUND THEN --{
8578       l_attributes_exist := 'NONE';
8579   END;
8580 
8581   IF (l_attributes_exist = 'YES') THEN --{
8582     BEGIN
8583       SELECT 'BOTH'
8584       INTO l_attributes_exist
8585       FROM PON_AUCTION_ATTRIBUTES
8586       WHERE AUCTION_HEADER_ID = p_auction_header_id
8587       AND MANDATORY_FLAG = 'Y'
8588       AND ROWNUM = 1;
8589 
8590       EXCEPTION WHEN NO_DATA_FOUND THEN --{
8591         l_attributes_exist := 'OPTIONAL';
8592     END;
8593   END IF; --}
8594 
8595   IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
8596     FND_LOG.string(log_level => FND_LOG.level_statement,
8597       module  =>  g_module_prefix || l_module_name,
8598       message  => 'Done getting the flag l_attributes_exist = ' || l_attributes_exist);
8599   END IF; --}
8600 
8601   BEGIN
8602 
8603     SELECT 'Y'
8604     INTO l_has_price_elements
8605     FROM PON_PRICE_ELEMENTS
8606     WHERE AUCTION_HEADER_ID = p_auction_header_id
8607     AND ROWNUM = 1;
8608 
8609     EXCEPTION WHEN NO_DATA_FOUND THEN --{
8610       l_has_price_elements := 'N';
8611   END;
8612 
8613   IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
8614     FND_LOG.string(log_level => FND_LOG.level_statement,
8615       module  =>  g_module_prefix || l_module_name,
8616       message  => 'Done getting the flag l_has_price_elements = ' || l_has_price_elements);
8617   END IF; --}
8618 
8619   IF (l_has_price_elements = 'Y') THEN --{
8620 
8621     BEGIN
8622       SELECT 'N'
8623       INTO l_has_pe_for_all_items
8624       FROM PON_AUCTION_ITEM_PRICES_ALL PAIP
8625       WHERE PAIP.AUCTION_HEADER_ID = P_AUCTION_HEADER_ID AND
8626       HAS_PRICE_ELEMENTS_FLAG = 'N' AND
8627       HAS_BUYER_PFS_FLAG = 'N' AND
8628       ROWNUM = 1;
8629 
8630       EXCEPTION WHEN NO_DATA_FOUND THEN --{
8631         l_has_pe_for_all_items := 'Y';
8632     END;
8633   ELSE
8634 
8635     l_has_pe_for_all_items := 'N';
8636   END IF; --}
8637 
8638   IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
8639     FND_LOG.string(log_level => FND_LOG.level_statement,
8640       module  =>  g_module_prefix || l_module_name,
8641       message  => 'Done getting the flag l_has_pe_for_all_items = ' || l_has_pe_for_all_items);
8642   END IF; --}
8643 
8644 
8645   UPDATE
8646     PON_AUCTION_HEADERS_ALL PAHA
8647   SET
8648     ATTRIBUTES_EXIST = l_attributes_exist,
8649     HAS_PRICE_ELEMENTS = l_has_price_elements,
8650     HAS_PE_FOR_ALL_ITEMS = l_has_pe_for_all_items,
8651     MAX_INTERNAL_LINE_NUM = GREATEST (NVL (PAHA.MAX_INTERNAL_LINE_NUM,0),
8652                                          (SELECT
8653                                             MAX(PAIP.LINE_NUMBER)
8654                                           FROM
8655                                             PON_AUCTION_ITEM_PRICES_ALL PAIP
8656                                           WHERE
8657                                             PAIP.AUCTION_HEADER_ID = p_auction_header_id)),
8658     MAX_DOCUMENT_LINE_NUM = GREATEST (NVL (PAHA.MAX_DOCUMENT_LINE_NUM,0),
8659                                          (SELECT
8660                                             MAX(PAIP.SUB_LINE_SEQUENCE_NUMBER)
8661                                           FROM
8662                                             PON_AUCTION_ITEM_PRICES_ALL PAIP
8663                                           WHERE
8664                                             PAIP.GROUP_TYPE IN ('LOT', 'GROUP', 'LINE')
8665                                             AND PAIP.AUCTION_HEADER_ID = p_auction_header_id))
8666   WHERE
8667     PAHA.AUCTION_HEADER_ID = p_auction_header_id;
8668 
8669 EXCEPTION
8670   WHEN OTHERS THEN
8671     x_result := FND_API.G_RET_STS_UNEXP_ERROR;
8672     x_error_code := SQLCODE;
8673     x_error_message := SUBSTR(SQLERRM, 1, 100);
8674 
8675     IF (FND_LOG.level_exception >= FND_LOG.g_current_runtime_level) THEN
8676       FND_LOG.string (log_level => FND_LOG.level_exception,
8677         module => g_module_prefix || l_module_name,
8678         message => 'Unexpected exception occured error_code = ' ||
8679               x_error_code || ', error_message = ' || x_error_message);
8680     END IF;
8681 
8682 END update_header_before_publish;
8683 
8684 PROCEDURE update_lines_before_publish (
8685   x_result OUT NOCOPY VARCHAR,
8686   x_error_code OUT NOCOPY VARCHAR,
8687   x_error_message OUT NOCOPY VARCHAR,
8688   p_auction_header_id IN NUMBER,
8689   p_close_bidding_date IN DATE,
8690   p_user_id IN NUMBER,
8691   p_login_id IN NUMBER
8692 ) IS
8693 
8694 l_large_neg_enabled_flag VARCHAR2(2);
8695 l_complete_flag VARCHAR2(2);
8696 l_stag_closing_enabled_flag VARCHAR2(1);
8697 
8698 l_max_line_number NUMBER;
8699 l_batch_start NUMBER;
8700 l_batch_end NUMBER;
8701 l_supplier_payments PON_AUCTION_HEADERS_ALL.SUPPLIER_ENTERABLE_PYMT_FLAG%TYPE;
8702 
8703 l_batch_size NUMBER;
8704 l_module_name VARCHAR2(30);
8705 BEGIN
8706 
8707   l_batch_size := PON_LARGE_AUCTION_UTIL_PKG.BATCH_SIZE;
8708   l_module_name := 'update_lines_before_publish';
8709   x_result := FND_API.g_ret_sts_success;
8710 
8711   IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
8712     FND_LOG.string(log_level => FND_LOG.level_statement,
8713       module  =>  g_module_prefix || l_module_name,
8714       message  => 'Batch size is = ' || l_batch_size);
8715   END IF; --}
8716 
8717   SELECT large_neg_enabled_flag, complete_flag, supplier_enterable_pymt_flag,
8718        nvl2(staggered_closing_interval,'Y','N')
8719   INTO l_large_neg_enabled_flag, l_complete_flag, l_supplier_payments,
8720        l_stag_closing_enabled_flag
8721   FROM pon_auction_headers_all
8722   WHERE auction_header_id = p_auction_header_id;
8723 
8724   SELECT NVL (MAX (line_number), 0)
8725   INTO l_max_line_number
8726   FROM pon_auction_item_prices_all
8727   WHERE auction_header_id = p_auction_header_id;
8728 
8729   -- clean up from any previous failures
8730 
8731   -- delete data from pon_pf_supplier_values before
8732   -- calling the pon_lrg_draft_to_ord_pf_copy procedure to populate it again
8733   -- Only for large auctions
8734 
8735   IF (l_large_neg_enabled_flag = 'Y') THEN
8736     DELETE FROM
8737       pon_pf_supplier_values
8738     WHERE
8739       auction_header_id = p_auction_header_id;
8740   END IF;
8741 
8742   -- clean up the pon_price_elements table of any line type price elements:
8743   -- why we need a clean up?
8744   -- a. After a failure the user might have deleted all price elements from a line, in which case this row should not be present
8745   -- b. After a failure the user might have deleted the line (the price element row will not have a parent ...) and created another
8746   --    (we reuse the line numbers)
8747 
8748   DELETE FROM
8749     pon_price_elements
8750   WHERE
8751     auction_header_id = p_auction_header_id and
8752     price_element_type_id = -10;
8753 
8754   -- clean up the pon_pf_supplier_formula table of any rows for this auction:
8755   -- why we need a clean up?
8756   -- a. After a failure the user might have deleted all price elements from a line
8757 
8758   DELETE FROM
8759     pon_pf_supplier_formula
8760   WHERE
8761     auction_header_id = p_auction_header_id;
8762 
8763   COMMIT;
8764 
8765   -- calling update_line_flag_seq_closedate process_price_factors, pon_lrg_draft_to_ord_pf_copy
8766   -- in batches
8767 
8768   -- Define the initial batch range (line numbers are indexed from 1)
8769   l_batch_start := 1;
8770 
8771   --determine the max line number for this batch
8772   IF (l_max_line_number <= l_batch_size) THEN
8773     l_batch_end := l_max_line_number;
8774   ELSE
8775     l_batch_end := l_batch_size;
8776   END IF;
8777 
8778   -- loop for each batch
8779   WHILE (l_batch_start <= l_max_line_number) LOOP --{
8780 
8781     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
8782       FND_LOG.string(log_level => FND_LOG.level_statement,
8783         module  =>  g_module_prefix || l_module_name,
8784         message  => 'Calculated new l_curr_to_line_number = ' || l_batch_end ||
8785                     ' Calling process_price_factors, pon_lrg_draft_to_ord_pf_copy '||
8786                     ' and update_line_flag_seq_closedate with' ||
8787                     ' p_auction_header_id = ' || p_auction_header_id ||
8788                     ', p_user_id = ' || p_user_id ||
8789                     ', p_login_id = ' || p_login_id ||
8790                     ', p_curr_from_line_number = ' || l_batch_start ||
8791                     ', p_curr_to_line_number = ' || l_batch_end);
8792     END IF; --}
8793 
8794     -- set the flags, sequences and close data on the lines
8795 
8796     update_line_flag_seq_closedate (
8797       x_result => x_result,
8798       x_error_code => x_error_code,
8799       x_error_message => x_error_message,
8800       p_user_id => p_user_id,
8801       p_login_id => p_login_id,
8802       p_auction_header_id => p_auction_header_id,
8803       p_close_bidding_date => p_close_bidding_date,
8804       p_stag_closing_enabled_flag => l_stag_closing_enabled_flag,
8805       p_curr_from_line_number => l_batch_start,
8806       p_curr_to_line_number => l_batch_end);
8807 
8808     IF (x_result <> FND_API.g_ret_sts_success) THEN
8809       return;
8810     END IF;
8811 
8812     -- in case of a large auction call this procedure
8813 
8814     IF ('Y' = l_large_neg_enabled_flag) THEN
8815       PON_NEGOTIATION_COPY_GRP.pon_lrg_draft_to_ord_pf_copy (
8816         p_source_auction_hdr_id => p_auction_header_id,
8817         p_destination_auction_hdr_id => p_auction_header_id,
8818         p_user_id => p_user_id,
8819         p_from_line_number => l_batch_start,
8820         p_to_line_number => l_batch_end);
8821     END IF;
8822 
8823     -- populate the pon_price_elements table and the pon_pf_supplier_formula table (MERGE)
8824 
8825     process_price_factors (
8826       p_auction_header_id => p_auction_header_id,
8827       p_user_id => p_user_id,
8828       p_login_id => p_login_id,
8829       p_from_line_number => l_batch_start,
8830       p_to_line_number => l_batch_end);
8831 
8832     IF (x_result <> FND_API.g_ret_sts_success) THEN
8833       return;
8834     END IF;
8835 
8836     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
8837       FND_LOG.string(log_level => FND_LOG.level_statement,
8838         module  =>  g_module_prefix || l_module_name,
8839         message  => 'Commiting data for lines between ' || l_batch_start || ' and ' || l_batch_end);
8840     END IF; --}
8841 
8842     COMMIT;
8843 
8844     -- Find the new batch range
8845     l_batch_start := l_batch_end + 1;
8846     IF (l_batch_end + l_batch_size > l_max_line_number) THEN
8847       l_batch_end := l_max_line_number;
8848     ELSE
8849       l_batch_end := l_batch_end + l_batch_size;
8850     END IF;
8851 
8852     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
8853       FND_LOG.string(log_level => FND_LOG.level_statement,
8854         module  =>  g_module_prefix || l_module_name,
8855         message  => 'Calculated new l_curr_from_line_number = ' || l_batch_start);
8856     END IF; --}
8857 
8858   END LOOP; --}
8859 
8860 EXCEPTION
8861   WHEN OTHERS THEN
8862     x_result := FND_API.g_ret_sts_unexp_error;
8863     x_error_code := SQLCODE;
8864     x_error_message := SUBSTR(SQLERRM, 1, 100);
8865 
8866     IF (FND_LOG.level_exception >= FND_LOG.g_current_runtime_level) THEN
8867       FND_LOG.string (log_level => FND_LOG.level_exception,
8868         module => g_module_prefix || l_module_name,
8869         message => 'Unexpected exception occured error_code = ' || x_error_code || ', error_message = ' || x_error_message);
8870     END IF;
8871 END update_lines_before_publish;
8872 
8873 PROCEDURE update_before_publish (
8874   x_result OUT NOCOPY VARCHAR2,
8875   x_error_code OUT NOCOPY VARCHAR2,
8876   x_error_message OUT NOCOPY VARCHAR2,
8877   p_auction_header_id IN NUMBER,
8878   p_close_bidding_date IN DATE,
8879   p_user_id IN NUMBER,
8880   p_login_id IN NUMBER
8881 ) IS
8882 
8883 l_module_name VARCHAR2 (30);
8884 BEGIN
8885 
8886   l_module_name := 'update_before_publish';
8887   x_result := FND_API.g_ret_sts_success;
8888 
8889   IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
8890     FND_LOG.string (log_level => FND_LOG.level_procedure,
8891       module => g_module_prefix || l_module_name,
8892       message => 'Entered procedure = ' || l_module_name);
8893   END IF;
8894 
8895   -- set the auction_status to draft and the complete flag to Y
8896 
8897   UPDATE
8898     pon_auction_headers_all
8899   SET
8900     auction_status = 'DRAFT',
8901     last_updated_by = p_user_id,
8902     last_update_date = sysdate
8903   WHERE
8904     auction_header_id = p_auction_header_id;
8905 
8906   -- update the lines
8907   update_lines_before_publish (
8908     x_result,
8909     x_error_code,
8910     x_error_message,
8911     p_auction_header_id,
8912     p_close_bidding_date,
8913     p_user_id,
8914     p_login_id);
8915 
8916   IF (x_result <> FND_API.g_ret_sts_success) THEN
8917     return;
8918   END IF;
8919 
8920   -- update the header
8921   update_header_before_publish (
8922     x_result,
8923     x_error_code,
8924     x_error_message,
8925     p_auction_header_id);
8926 
8927   IF (x_result <> FND_API.g_ret_sts_success) THEN
8928     return;
8929   END IF;
8930 
8931   -- set the auction_status to active and the complete flag to Y
8932 
8933   UPDATE
8934     pon_auction_headers_all
8935   SET
8936     auction_status = 'ACTIVE',
8937     last_updated_by = p_user_id,
8938     last_update_date = sysdate
8939   WHERE
8940     auction_header_id = p_auction_header_id;
8941 
8942   IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
8943     FND_LOG.string (log_level => FND_LOG.level_procedure,
8944       module => g_module_prefix || l_module_name,
8945       message => 'Leaving procedure = ' || l_module_name);
8946   END IF;
8947 
8948 EXCEPTION
8949   WHEN OTHERS THEN
8950     x_result := FND_API.g_ret_sts_unexp_error;
8951     x_error_code := SQLCODE;
8952     x_error_message := SUBSTR(SQLERRM, 1, 100);
8953 
8954     IF (FND_LOG.level_exception >= FND_LOG.g_current_runtime_level) THEN
8955       FND_LOG.string (log_level => FND_LOG.level_exception,
8956         module => g_module_prefix || l_module_name,
8957         message => 'Unexpected exception occured error_code = ' || x_error_code || ', error_message = ' || x_error_message);
8958     END IF;
8959 END update_before_publish;
8960 
8961 PROCEDURE report_concurrent_failure (
8962   x_result OUT NOCOPY VARCHAR2,
8963   x_error_code OUT NOCOPY VARCHAR2,
8964   x_error_message OUT NOCOPY VARCHAR2,
8965   p_request_id IN NUMBER,
8966   p_user_name IN VARCHAR2,
8967   p_auction_header_id IN NUMBER,
8968   p_program_type_code IN VARCHAR2
8969 ) IS
8970 
8971 l_module_name VARCHAR2 (30);
8972 BEGIN
8973 
8974   l_module_name := 'report_concurrent_failure';
8975   x_result := FND_API.g_ret_sts_success;
8976 
8977   IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
8978     FND_LOG.string (log_level => FND_LOG.level_procedure,
8979       module => g_module_prefix || l_module_name,
8980       message => 'Entered procedure = ' || l_module_name);
8981   END IF;
8982 
8983   IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
8984     FND_LOG.string(log_level => FND_LOG.level_statement,
8985       module  =>  g_module_prefix || 'report_concurrent_failure',
8986       message  => 'Calling the notification genration procedure to inform failure'
8987                   || ', p_request_id = ' || p_request_id
8988                   || ', p_messagetype = ' || 'E'
8989                   || ', p_RecepientUsername = ' || p_user_name
8990                   || ', p_recepientType = ' || 'BUYER'
8991                   || ', p_auction_header_id = ' || p_auction_header_id
8992                   || ', p_ProgramTypeCode = ' || p_program_type_code
8993                   || ', p_DestinationPageCode = ' || 'PON_CONCURRENT_ERRORS'
8994                   || ', p_bid_number = NULL');
8995   END IF; --}
8996 
8997   PON_WF_UTL_PKG.ReportConcProgramStatus (
8998     p_request_id => p_request_id,
8999     p_messagetype => 'E',
9000     p_RecepientUsername => p_user_name,
9001     p_recepientType =>'BUYER',
9002     p_auction_header_id => p_auction_header_id,
9003     p_ProgramTypeCode => p_program_type_code,
9004     p_DestinationPageCode => 'PON_CONCURRENT_ERRORS',
9005     p_bid_number => NULL);
9006 
9007   IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
9008     FND_LOG.string (log_level => FND_LOG.level_procedure,
9009       module => g_module_prefix || l_module_name,
9010       message => 'Leaving procedure = ' || l_module_name);
9011   END IF;
9012 
9013 EXCEPTION
9014   WHEN OTHERS THEN
9015     x_result := FND_API.g_ret_sts_unexp_error;
9016     x_error_code := SQLCODE;
9017     x_error_message := SUBSTR(SQLERRM, 1, 100);
9018 
9019     IF (FND_LOG.level_exception >= FND_LOG.g_current_runtime_level) THEN
9020       FND_LOG.string (log_level => FND_LOG.level_exception,
9021         module => g_module_prefix || l_module_name,
9022         message => 'Unexpected exception occured error_code = ' ||
9023                   x_error_code || ', error_message = ' || x_error_message);
9024     END IF;
9025 
9026 END report_concurrent_failure;
9027 
9028 PROCEDURE report_concurrent_success (
9029   x_result OUT NOCOPY VARCHAR2,
9030   x_error_code OUT NOCOPY VARCHAR2,
9031   x_error_message OUT NOCOPY VARCHAR2,
9032   p_request_id IN NUMBER,
9033   p_user_name IN VARCHAR2,
9034   p_auction_header_id IN NUMBER,
9035   p_program_type_code IN VARCHAR2
9036 ) IS
9037 
9038 l_module_name VARCHAR2 (30);
9039 l_destination_page_code VARCHAR2(30);
9040 BEGIN
9041 
9042   l_module_name := 'report_concurrent_success';
9043   x_result := FND_API.g_ret_sts_success;
9044 
9045   IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
9046     FND_LOG.string (log_level => FND_LOG.level_procedure,
9047       module => g_module_prefix || l_module_name,
9048       message => 'Entered procedure = ' || l_module_name);
9049   END IF;
9050 
9051   -- The destination code in case of succesful approval submission
9052   -- will be the manage drafts page.
9053   IF (p_program_type_code = g_program_type_neg_approve) THEN
9054     l_destination_page_code := 'PON_MANAGE_DRAFT_NEG';
9055   ELSE
9056     l_destination_page_code := 'PON_NEG_SUMMARY';
9057   END IF;
9058 
9059   IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9060     FND_LOG.string(log_level => FND_LOG.level_statement,
9061       module  =>  g_module_prefix || l_module_name,
9062       message  => 'Calling the notification genration procedure to inform success'
9063                   || ', p_request_id = ' || p_request_id
9064                   || ', p_messagetype = ' || 'S'
9065                   || ', p_RecepientUsername = ' || p_user_name
9066                   || ', p_recepientType = ' || 'BUYER'
9067                   || ', p_auction_header_id = ' || p_auction_header_id
9068                   || ', p_ProgramTypeCode = ' || p_program_type_code
9069                   || ', p_DestinationPageCode = ' || l_destination_page_code
9070                   || ', p_bid_number = NULL');
9071   END IF; --}
9072 
9073   PON_WF_UTL_PKG.ReportConcProgramStatus (
9074     p_request_id => p_request_id,
9075     p_messagetype => 'S',
9076     p_RecepientUsername => p_user_name,
9077     p_recepientType =>'BUYER',
9078     p_auction_header_id => p_auction_header_id,
9079     p_ProgramTypeCode => p_program_type_code,
9080     p_DestinationPageCode => l_destination_page_code,
9081     p_bid_number => NULL);
9082 
9083   IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
9084     FND_LOG.string (log_level => FND_LOG.level_procedure,
9085       module => g_module_prefix || l_module_name,
9086       message => 'Leaving procedure = ' || l_module_name);
9087   END IF;
9088 
9089 EXCEPTION
9090   WHEN OTHERS THEN
9091     x_result := FND_API.g_ret_sts_unexp_error;
9092     x_error_code := SQLCODE;
9093     x_error_message := SUBSTR(SQLERRM, 1, 100);
9094 
9095     IF (FND_LOG.level_exception >= FND_LOG.g_current_runtime_level) THEN
9096       FND_LOG.string (log_level => FND_LOG.level_exception,
9097         module => g_module_prefix || l_module_name,
9098         message => 'Unexpected exception occured error_code = ' ||
9099                   x_error_code || ', error_message = ' || x_error_message);
9100     END IF;
9101 
9102 END report_concurrent_success;
9103 
9104 PROCEDURE handle_fatal_exception (
9105   x_result OUT NOCOPY VARCHAR2,
9106   x_error_code OUT NOCOPY VARCHAR2,
9107   x_error_message OUT NOCOPY VARCHAR2,
9108   p_request_id IN  NUMBER,
9109   p_user_name IN VARCHAR2,
9110   p_user_id IN NUMBER,
9111   p_auction_header_id IN NUMBER,
9112   p_program_type_code IN VARCHAR2,
9113   p_log_message IN VARCHAR2,
9114   p_document_number IN VARCHAR2
9115 ) IS
9116 
9117 l_module_name VARCHAR2 (30);
9118 l_error_message_name VARCHAR2(30);
9119 BEGIN
9120 
9121   l_module_name := 'handle_fatal_exception';
9122   x_result := FND_API.g_ret_sts_success;
9123 
9124   IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
9125     FND_LOG.string (log_level => FND_LOG.level_procedure,
9126       module => g_module_prefix || l_module_name,
9127       message => 'Entered procedure = ' || l_module_name);
9128   END IF;
9129 
9130   -- Rollback any changes
9131   ROLLBACK;
9132 
9133   -- Log the error message
9134   IF (FND_LOG.level_exception >= FND_LOG.g_current_runtime_level) THEN
9135     FND_LOG.string (log_level => FND_LOG.level_exception,
9136       module => g_module_prefix || l_module_name,
9137       message => 'Fatal Error Message = ' || p_log_message);
9138   END IF;
9139 
9140   -- send a failure notification
9141   report_concurrent_failure (
9142     x_result => x_result,
9143     x_error_code => x_error_code,
9144     x_error_message => x_error_message,
9145     p_request_id => p_request_id,
9146     p_user_name => p_user_name,
9147     p_auction_header_id => p_auction_header_id,
9148     p_program_type_code => p_program_type_code);
9149 
9150   if (p_program_type_code = g_program_type_neg_publish) THEN
9151     l_error_message_name := 'PON_NEG_PUBLISH_FATAL_ERROR';
9152 
9153   ELSE
9154     l_error_message_name := 'PON_NEG_APPROVE_FATAL_ERROR';
9155   END IF;
9156 
9157   -- insert an error row into the pon_interface_errors table
9158   LOG_INTERFACE_ERROR (
9159     p_interface_type => g_interface_type,
9160     p_error_message_name => l_error_message_name,
9161     p_token1_name => 'DOC_NUM',
9162     p_token1_value => p_document_number,
9163     p_token2_name => 'REQUEST_ID',
9164     p_token2_value => p_request_id,
9165     p_request_id => p_request_id,
9166     p_auction_header_id => p_auction_header_id,
9167     p_expiration_date => SYSDATE + 7,
9168     p_user_id => p_user_id);
9169 
9170   -- commit
9171   COMMIT;
9172 
9173   IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
9174     FND_LOG.string (log_level => FND_LOG.level_procedure,
9175       module => g_module_prefix || l_module_name,
9176       message => 'Leaving procedure = ' || l_module_name);
9177   END IF;
9178 
9179 EXCEPTION
9180   WHEN OTHERS THEN
9181     x_result := FND_API.g_ret_sts_unexp_error;
9182     x_error_code := SQLCODE;
9183     x_error_message := SUBSTR(SQLERRM, 1, 100);
9184 
9185     IF (FND_LOG.level_exception >= FND_LOG.g_current_runtime_level) THEN
9186       FND_LOG.string (log_level => FND_LOG.level_exception,
9187         module => g_module_prefix || l_module_name,
9188         message => 'Unexpected exception occured error_code = ' ||
9189                   x_error_code || ', error_message = ' || x_error_message);
9190     END IF;
9191 
9192 END handle_fatal_exception;
9193 PROCEDURE pon_publish_super_large_neg (
9194   ERRBUF OUT NOCOPY VARCHAR2,
9195   RETCODE OUT NOCOPY VARCHAR2,
9196   ARGUMENT1 IN NUMBER,   -- P_AUCTION_HEADER_ID
9197   ARGUMENT2 IN VARCHAR2, -- P_FOR_APPROVAL
9198   ARGUMENT3 IN VARCHAR2, -- P_NOTE_TO_APPROVERS
9199   ARGUMENT4 IN VARCHAR2, -- P_ENCRYPTED_AUCTION_HEADER_ID
9200   ARGUMENT5 IN VARCHAR2, -- P_USER_NAME
9201   ARGUMENT6 IN NUMBER,    -- P_USER_ID
9202   ARGUMENT7 IN VARCHAR2, --P_CLIENT_TIMEZONE
9203   ARGUMENT8 IN VARCHAR2, --P_SERVER_TIMEZONE
9204   ARGUMENT9 IN VARCHAR2, --P_DATE_FORMAT_MASk
9205   ARGUMENT10 IN VARCHAR2, --P_USER_PARTY_ID
9206   ARGUMENT11 IN VARCHAR2, --P_COMPANY_PARTY_ID
9207   ARGUMENT12 IN VARCHAR2 --P_CURR_LANGUAGE
9208 ) IS
9209 
9210 l_is_amendment BOOLEAN;
9211 l_is_new_round BOOLEAN;
9212 l_login_id NUMBER;
9213 
9214 l_draft_locked PON_AUCTION_HEADERS_ALL.DRAFT_LOCKED%TYPE;
9215 l_draft_locked_by_contact_id PON_AUCTION_HEADERS_ALL.DRAFT_LOCKED_BY_CONTACT_ID%TYPE;
9216 l_doctype_id PON_AUCTION_HEADERS_ALL.DOCTYPE_ID%TYPE;
9217 l_auction_currency_precision PON_AUCTION_HEADERS_ALL.NUMBER_PRICE_DECIMALS%TYPE;
9218 l_close_bidding_date PON_AUCTION_HEADERS_ALL.cLOSE_BIDDING_DATE%TYPE;
9219 l_contract_type PON_AUCTION_HEADERS_ALL.CONTRACT_TYPE%TYPE;
9220 l_global_agreement_flag PON_AUCTION_HEADERS_ALL.GLOBAL_AGREEMENT_FLAG%TYPE;
9221 l_allow_other_bid_currency PON_AUCTION_HEADERS_ALL.ALLOW_OTHER_BID_CURRENCY_FLAG%TYPE;
9222 l_bid_ranking PON_AUCTION_HEADERS_ALL.BID_RANKING%TYPE;
9223 l_po_start_date PON_AUCTION_HEADERS_ALL.PO_START_DATE%TYPE;
9224 l_po_end_date PON_AUCTION_HEADERS_ALL.PO_END_DATE%TYPE;
9225 l_trading_partner_id PON_AUCTION_HEADERS_ALL.TRADING_PARTNER_ID%TYPE;
9226 l_full_quantity_bid_code PON_AUCTION_HEADERS_ALL.FULL_QUANTITY_BID_CODE%TYPE;
9227 l_bid_list_type PON_AUCTION_HEADERS_ALL.BID_LIST_TYPE%TYPE;
9228 l_document_number PON_AUCTION_HEADERS_ALL.DOCUMENT_NUMBER%TYPE;
9229 l_amendment_number PON_AUCTION_HEADERS_ALL.AMENDMENT_NUMBER%TYPE;
9230 l_auction_round_number PON_AUCTION_HEADERS_ALL.AUCTION_ROUND_NUMBER%TYPE;
9231 l_auction_header_id_prev_round PON_AUCTION_HEADERS_ALL.AUCTION_HEADER_ID_PREV_ROUND%TYPE;
9232 l_auction_header_id_prev_amend PON_AUCTION_HEADERS_ALL.AUCTION_HEADER_ID_PREV_AMEND%TYPE;
9233 l_auction_origination_code PON_AUCTION_HEADERS_ALL.AUCTION_ORIGINATION_CODE%TYPE;
9234 l_auction_title PON_AUCTION_HEADERS_ALL.AUCTION_TITLE%TYPE;
9235 l_trading_partner_contact_id PON_AUCTION_HEADERS_ALL.TRADING_PARTNER_CONTACT_ID%TYPE;
9236 l_large_neg_enabled_flag PON_AUCTION_HEADERS_ALL.LARGE_NEG_ENABLED_FLAG%TYPE;
9237 l_auction_header_id_orig_amend PON_AUCTION_HEADERS_ALL.AUCTION_HEADER_ID_ORIG_AMEND%TYPE;
9238 l_open_auction_now_flag PON_AUCTION_HEADERS_ALL.OPEN_AUCTION_NOW_FLAG%TYPE;
9239 l_publish_auction_now_flag PON_AUCTION_HEADERS_ALL.PUBLISH_AUCTION_NOW_FLAG%TYPE;
9240 l_open_bidding_date PON_AUCTION_HEADERS_ALL.OPEN_BIDDING_DATE%TYPE;
9241 l_view_by_date PON_AUCTION_HEADERS_ALL.VIEW_BY_DATE%TYPE;
9242 l_auto_extend_flag PON_AUCTION_HEADERS_ALL.AUTO_EXTEND_FLAG%TYPE;
9243 l_auto_extend_number PON_AUCTION_HEADERS_ALL.AUTO_EXTEND_NUMBER%TYPE;
9244 l_bid_visibility_code PON_AUCTION_HEADERS_ALL.BID_VISIBILITY_CODE%TYPE;
9245 l_price_driven_auction_flag PON_AUCTION_HEADERS_ALL.PRICE_DRIVEN_AUCTION_FLAG%TYPE;
9246 l_min_bid_decrement PON_AUCTION_HEADERS_ALL.MIN_BID_DECREMENT%TYPE;
9247 l_line_attribute_enabled_flag PON_AUCTION_HEADERS_ALL.LINE_ATTRIBUTE_ENABLED_FLAG%TYPE;
9248 l_pf_type_allowed PON_AUCTION_HEADERS_ALL.PF_TYPE_ALLOWED%TYPE;
9249 l_progress_payment_type PON_AUCTION_HEADERS_ALL.PROGRESS_PAYMENT_TYPE%TYPE;
9250 l_trading_partner_contact_name PON_AUCTION_HEADERS_ALL.TRADING_PARTNER_CONTACT_NAME%TYPE;
9251 l_award_by_date PON_AUCTION_HEADERS_ALL.AWARD_BY_DATE%TYPE;
9252 l_reminder_date PON_AUCTION_HEADERS_ALL.REMINDER_DATE%TYPE;
9253 l_number_of_lines PON_AUCTION_HEADERS_ALL.NUMBER_OF_LINES%TYPE;
9254 l_event_id PON_AUCTION_HEADERS_ALL.EVENT_ID%TYPE;
9255 l_trading_partner_name PON_AUCTION_HEADERS_ALL.TRADING_PARTNER_NAME%TYPE;
9256 l_note_to_bidders PON_AUCTION_HEADERS_ALL.NOTE_TO_BIDDERS%TYPE;
9257 l_price_tiers_indicator PON_AUCTION_HEADERS_ALL.PRICE_TIERS_INDICATOR%TYPE;
9258 
9259 p_auction_header_id NUMBER;
9260 p_for_approval BOOLEAN;
9261 p_note_to_approvers VARCHAR2(2000);
9262 p_encrypted_auction_header_id VARCHAR2(2000);
9263 p_user_name VARCHAR2(2000);
9264 p_user_id NUMBER;
9265 p_client_timezone VARCHAR2(2000);
9266 p_server_timezone VARCHAR2(2000);
9267 p_date_format_mask VARCHAR2(2000);
9268 p_user_party_id NUMBER;
9269 p_company_party_id NUMBER;
9270 p_curr_language VARCHAR2(200);
9271 
9272 l_batch_id NUMBER;
9273 l_fnd_currency_precision NUMBER;
9274 l_invitees_count NUMBER;
9275 l_errors_present BOOLEAN;
9276 l_request_id NUMBER;
9277 l_redirect_func VARCHAR2(30);
9278 l_prev_document_number NUMBER;
9279 l_error_code VARCHAR2(100);
9280 l_error_msg VARCHAR2(500);
9281 l_return_msg VARCHAR2(200);
9282 l_return_value NUMBER;
9283 l_return_status VARCHAR2(200);
9284 l_msg_count NUMBER;
9285 l_result VARCHAR2(2);
9286 l_programTypeCode VARCHAR2(30);
9287 l_transaction_type VARCHAR2(30);
9288 
9289 l_module_name VARCHAR2 (30);
9290 
9291 -- Sol Project
9292 l_conf_doc_auc_header_id  PON_AUCTION_HEADERS_ALL.AUCTION_HEADER_ID%TYPE;
9293 l_conf_doc_number	  PON_AUCTION_HEADERS_ALL.DOCUMENT_NUMBER%TYPE;
9294 l_conf_doc_revision	  PON_AUCTION_HEADERS_ALL.REVISION%TYPE;
9295 l_conf_doc_request_id     NUMBER;
9296 l_amendment_flag	  PON_AUCTION_HEADERS_ALL.AMENDMENT_FLAG%TYPE;
9297 -- Sol Project
9298 
9299 l_revNum PON_AUCTION_HEADERS_ALL.REVISION%TYPE;
9300 l_pdfFileName varchar2(300);
9301 BEGIN
9302 
9303   -- STORE THE ARGUMENTS INTO LOCAL VARIABLES
9304   l_module_name := 'pon_publish_super_large_neg';
9305 
9306   p_auction_header_id := ARGUMENT1;
9307   IF ('Y' = ARGUMENT2) THEN --{
9308     p_for_approval := TRUE;
9309     l_programTypeCode := g_program_type_neg_approve;
9310   ELSE
9311     p_for_approval := FALSE;
9312     l_programTypeCode := g_program_type_neg_publish;
9313   END IF; --}
9314 
9315   p_note_to_approvers := ARGUMENT3;
9316   p_encrypted_auction_header_id := ARGUMENT4;
9317   p_user_name := ARGUMENT5;
9318   p_user_id := ARGUMENT6;
9319   p_client_timezone := ARGUMENT7;
9320   p_server_timezone := ARGUMENT8;
9321   p_date_format_mask := ARGUMENT9;
9322   p_user_party_id := ARGUMENT10;
9323   p_company_party_id := ARGUMENT11;
9324   p_curr_language := ARGUMENT12;
9325 
9326   l_request_id := FND_GLOBAL.CONC_REQUEST_ID;
9327   l_login_id := FND_GLOBAL.LOGIN_ID;
9328 
9329   IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN --{
9330     FND_LOG.string(log_level => FND_LOG.level_procedure,
9331       module => g_module_prefix || l_module_name,
9332       message  => 'Entered procedure: p_auction_header_id = ' || p_auction_header_id
9333                   || ', p_for_approval = ' || BOOLEAN_TO_STRING (p_for_approval)
9334                   || ', p_note_to_approvers = ' || p_note_to_approvers
9335                   || ', p_encrypted_auction_header_id = ' || p_encrypted_auction_header_id
9336                   || ', p_user_name = ' || p_user_name
9337                   || ', p_user_id = ' || p_user_id
9338                   || ', p_client_timezone = ' || p_client_timezone
9339                   || ', p_server_timezone = ' || p_server_timezone
9340                   || ', p_date_format_mask = ' || p_date_format_mask
9341                   || ', p_user_party_id = ' || p_user_party_id
9342                   || ', p_company_party_id = ' || p_company_party_id
9343                   || ', p_curr_language = ' || p_curr_language);
9344   END IF; --}
9345 
9346   IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9347     FND_LOG.string(log_level => FND_LOG.level_statement,
9348       module => g_module_prefix || l_module_name,
9349       message  => 'Collection auction information');
9350   END IF; --}
9351 
9352   BEGIN -- { Start of try block
9353 
9354     --COLLECT THE NEGOTIATION INFO
9355     SELECT
9356       DRAFT_LOCKED,
9357       DRAFT_LOCKED_BY_CONTACT_ID,
9358       DOCTYPE_ID,
9359       NUMBER_PRICE_DECIMALS,
9360       CLOSE_BIDDING_DATE,
9361       CONTRACT_TYPE,
9362       GLOBAL_AGREEMENT_FLAG,
9363       ALLOW_OTHER_BID_CURRENCY_FLAG,
9364       BID_RANKING,
9365       PO_START_DATE,
9366       PO_END_DATE,
9367       TRADING_PARTNER_ID,
9368       FULL_QUANTITY_BID_CODE,
9369       BID_LIST_TYPE,
9370       AMENDMENT_NUMBER,
9371       AUCTION_ROUND_NUMBER,
9372       DOCUMENT_NUMBER,
9373       AUCTION_HEADER_ID_PREV_ROUND,
9374       AUCTION_HEADER_ID_PREV_AMEND,
9375       AUCTION_ORIGINATION_CODE,
9376       AUCTION_TITLE,
9377       TRADING_PARTNER_CONTACT_ID,
9378       LARGE_NEG_ENABLED_FLAG,
9379       AUCTION_HEADER_ID_ORIG_AMEND,
9380       OPEN_AUCTION_NOW_FLAG,
9381       PUBLISH_AUCTION_NOW_FLAG,
9382       OPEN_BIDDING_DATE,
9383       VIEW_BY_DATE,
9384       AUTO_EXTEND_FLAG,
9385       AUTO_EXTEND_NUMBER,
9386       BID_VISIBILITY_CODE,
9387       PRICE_DRIVEN_AUCTION_FLAG,
9388       MIN_BID_DECREMENT,
9389       LINE_ATTRIBUTE_ENABLED_FLAG, --19
9390       PF_TYPE_ALLOWED,
9391       PROGRESS_PAYMENT_TYPE,
9392       TRADING_PARTNER_CONTACT_NAME,
9393       AWARD_BY_DATE,
9394       REMINDER_DATE,
9395       NUMBER_OF_LINES,
9396       EVENT_ID,
9397       TRADING_PARTNER_NAME,
9398       NOTE_TO_BIDDERS,
9399       PRICE_TIERS_INDICATOR,
9400       nvl(AMENDMENT_FLAG,'N')  -- Sol Project
9401     INTO
9402       l_draft_locked,
9403       l_draft_locked_by_contact_id,
9404       l_doctype_id,
9405       l_auction_currency_precision,
9406       l_close_bidding_date,
9407       l_contract_type,
9408       l_global_agreement_flag,
9409       l_allow_other_bid_currency,
9410       l_bid_ranking,
9411       l_po_start_date,
9412       l_po_end_date,
9413       l_trading_partner_id,
9414       l_full_quantity_bid_code,
9415       l_bid_list_type,
9416       l_amendment_number,
9417       l_auction_round_number,
9418       l_document_number,
9419       l_auction_header_id_prev_round,
9420       l_auction_header_id_prev_amend,
9421       l_auction_origination_code,
9422       l_auction_title,
9423       l_trading_partner_contact_id,
9424       l_large_neg_enabled_flag,
9425       l_auction_header_id_orig_amend,
9426       l_open_auction_now_flag,
9427       l_publish_auction_now_flag,
9428       l_open_bidding_date,
9429       l_view_by_date,
9430       l_auto_extend_flag,
9431       l_auto_extend_number,
9432       l_bid_visibility_code,
9433       l_price_driven_auction_flag,
9434       l_min_bid_decrement,
9435       l_line_attribute_enabled_flag,
9436       l_pf_type_allowed,
9437       l_progress_payment_type,
9438       l_trading_partner_contact_name,
9439       l_award_by_date,
9440       l_reminder_date,
9441       l_number_of_lines,
9442       l_event_id,
9443       l_trading_partner_name,
9444       l_note_to_bidders,
9445       l_price_tiers_indicator,
9446       l_amendment_flag     -- Sol Project
9447     FROM
9448       pon_auction_headers_all
9449     WHERE
9450       auction_header_id = p_auction_header_id;
9451 
9452     SELECT COUNT(auction_header_id)
9453     INTO l_invitees_count
9454     FROM pon_bidding_parties
9455     WHERE auction_header_id = p_auction_header_id;
9456 
9457     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9458       FND_LOG.string(log_level => FND_LOG.level_statement,
9459         module => g_module_prefix || l_module_name,
9460         message  => 'Auction information collected: ' ||
9461                     'l_draft_locked = ' || l_draft_locked ||
9462                     ', l_draft_locked_by_contact_id = ' || l_draft_locked_by_contact_id ||
9463                     ', l_doctype_id = ' || l_doctype_id ||
9464                     ', l_auction_currency_precision = ' || l_auction_currency_precision ||
9465                     ', l_close_bidding_date = ' || l_close_bidding_date ||
9466                     ', l_contract_type = ' || l_contract_type ||
9467                     ', l_global_agreement_flag = ' || l_global_agreement_flag ||
9468                     ', l_allow_other_bid_currency = ' || l_allow_other_bid_currency ||
9469                     ', l_bid_ranking = ' || l_bid_ranking ||
9470                     ', l_po_start_date = ' || l_po_start_date ||
9471                     ', l_po_end_date = ' || l_po_end_date ||
9472                     ', l_trading_partner_id, = ' || l_trading_partner_id ||
9473                     ', l_full_quantity_bid_code, = ' || l_full_quantity_bid_code ||
9474                     ', l_bid_list_type, = ' || l_bid_list_type ||
9475                     ', l_amendment_number, = ' || l_amendment_number ||
9476                     ', l_auction_round_number, = ' || l_auction_round_number ||
9477                     ', l_document_number, = ' || l_document_number ||
9478                     ', l_auction_header_id_prev_round, = ' || l_auction_header_id_prev_round ||
9479                     ', l_auction_header_id_prev_amend, = ' || l_auction_header_id_prev_amend ||
9480                     ', l_auction_origination_code, = ' || l_auction_origination_code ||
9481                     ', l_auction_title, = ' || l_auction_title ||
9482                     ', l_trading_partner_contact_id, = ' || l_trading_partner_contact_id ||
9483                     ', l_large_neg_enabled_flag, = ' || l_large_neg_enabled_flag ||
9484                     ', l_auction_header_id_orig_amend, = ' || l_auction_header_id_orig_amend ||
9485                     ', l_open_auction_now_flag, = ' || l_open_auction_now_flag ||
9486                     ', l_publish_auction_now_flag, = ' || l_publish_auction_now_flag ||
9487                     ', l_open_bidding_date, = ' || l_open_bidding_date ||
9488                     ', l_view_by_date = ' || l_view_by_date ||
9489                     ', l_auto_extend_flag = ' || l_auto_extend_flag ||
9490                     ', l_auto_extend_number = ' || l_auto_extend_number ||
9491                     ', l_progress_payment_type, = ' || l_progress_payment_type ||
9492                     ', l_bid_visibility_code = ' || l_bid_visibility_code ||
9493                     ', l_price_tiers_indicator = ' || l_price_tiers_indicator);
9494     END IF; --}
9495 
9496     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9497       FND_LOG.string(log_level => FND_LOG.level_statement,
9498         module => g_module_prefix || l_module_name,
9499         message  => 'Checking for lock on the negotiation');
9500     END IF; --}
9501 
9502     --CHECK FOR DRAFT LOCK ON THE NEGOTIATION
9503 
9504     IF (NOT ('Y' = l_draft_locked AND l_draft_locked_by_contact_id = p_user_party_id)) THEN --{
9505 
9506       IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9507         FND_LOG.string(log_level => FND_LOG.level_statement,
9508         module => g_module_prefix || l_module_name,
9509           message  => 'The person who initiated the concurrent program no longer has the lock on the negotiation');
9510       END IF; --}
9511 
9512       RETCODE := 2;
9513       ERRBUF := 'PON_NO_DRAFT_LOCK';
9514 
9515       --Log this error in the PON_INTERFACE_ERRORS TABLE
9516 
9517       LOG_INTERFACE_ERROR (
9518         p_interface_type => g_interface_type,
9519         p_error_message_name => 'PON_NO_DRAFT_LOCK',
9520         p_token1_name => null,
9521         p_token1_value => null,
9522         p_token2_name => null,
9523         p_token2_value => null,
9524         p_request_id => l_request_id,
9525         p_auction_header_id => p_auction_header_id,
9526         p_expiration_date => SYSDATE + 7,
9527         p_user_id => p_user_id);
9528 
9529       IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9530         FND_LOG.string(log_level => FND_LOG.level_statement,
9531           module => g_module_prefix || l_module_name,
9532           message  => 'Setting return code to 2 and returning after logging PON_NO_DRAFT_LOCK error');
9533       END IF; --}
9534 
9535       report_concurrent_failure (
9536         x_result => l_result,
9537         x_error_code => l_error_code,
9538         x_error_message => l_error_msg,
9539         p_request_id => l_request_id,
9540         p_user_name => p_user_name,
9541         p_auction_header_id => p_auction_header_id,
9542         p_program_type_code => l_programTypeCode);
9543 
9544       --Issue a commit so that the error is pushed to the database and return
9545 
9546       COMMIT;
9547       RETURN;
9548     END IF; --}
9549 
9550     --INITIALIZE THE l_is_new_round and l_is_amendment variables
9551     l_is_new_round := false;
9552     l_is_amendment := false;
9553 
9554     -- Amendment always takes the first preference.
9555     -- During new round creation we clear out the previous amendment details
9556     -- But during amendment creation we retain the previous round details
9557     IF (l_amendment_number > 0) THEN --{
9558 
9559       l_is_amendment := true;
9560       l_prev_document_number := l_auction_header_id_prev_amend;
9561     ELSIF (l_auction_round_number > 1) THEN --{
9562 
9563       l_is_new_round := true;
9564       l_prev_document_number := l_auction_header_id_prev_round;
9565     END IF; --}
9566 
9567 
9568     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9569       FND_LOG.string(log_level => FND_LOG.level_statement,
9570         module => g_module_prefix || l_module_name,
9571         message  => 'New round/amendment variables initialized' ||
9572                     ', l_is_new_round = ' || BOOLEAN_TO_STRING (l_is_new_round)||
9573                     ', l_is_amendment = ' || BOOLEAN_TO_STRING (l_is_amendment)||
9574                     ', l_prev_document_number = ' || l_prev_document_number);
9575     END IF; --}
9576 
9577     --Call to PON_NEG_UPDATE_PKG.CAN_EDIT_DRAFT_AMEND
9578     --If the negotiation that the buyer is amending becomes closed or cancelled,
9579 
9580     IF (l_is_amendment) THEN
9581 
9582       IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9583         FND_LOG.string(log_level => FND_LOG.level_statement,
9584           module => g_module_prefix || l_module_name,
9585           message  => 'This is an amendment, checking if the amendment can be published or not');
9586       END IF; --}
9587 
9588       PON_NEG_UPDATE_PKG.CAN_EDIT_DRAFT_AMEND (
9589         p_auction_header_id_prev_doc => l_auction_header_id_prev_amend,
9590         x_error_code => l_error_code);
9591 
9592       IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9593         FND_LOG.string(log_level => FND_LOG.level_statement,
9594           module => g_module_prefix || l_module_name,
9595           message  => 'The return code from call to PON_NEG_UPDATE_PKG.CAN_EDIT_DRAFT_AMEND = ' || l_error_code);
9596       END IF; --}
9597 
9598       IF (l_error_code <> 'SUCCESS') THEN
9599 
9600 	IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9601           FND_LOG.string(log_level => FND_LOG.level_statement,
9602             module => g_module_prefix || l_module_name,
9603             message  => 'The return code is not success so logging error and exiting');
9604         END IF; --}
9605 
9606         RETCODE := 2;
9607         ERRBUF := 'PON_EDIT_DRAFT_AMEND_ERROR';
9608 
9609         LOG_INTERFACE_ERROR (
9610           p_interface_type => g_interface_type,
9611           p_error_message_name => 'PON_EDIT_DRAFT_AMEND_ERROR',
9612           p_token1_name => null,
9613           p_token1_value => null,
9614           p_token2_name => null,
9615           p_token2_value => null,
9616           p_request_id => l_request_id,
9617           p_auction_header_id => p_auction_header_id,
9618           p_expiration_date => SYSDATE + 7,
9619           p_user_id => p_user_id);
9620 
9621         report_concurrent_failure (
9622           x_result => l_result,
9623           x_error_code => l_error_code,
9624           x_error_message => l_error_msg,
9625           p_request_id => l_request_id,
9626           p_user_name => p_user_name,
9627           p_auction_header_id => p_auction_header_id,
9628           p_program_type_code => l_programTypeCode);
9629 
9630         COMMIT;
9631         RETURN;
9632       END IF;
9633     END IF;
9634 
9635     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9636       FND_LOG.string(log_level => FND_LOG.level_statement,
9637         module => g_module_prefix || l_module_name,
9638         message  => 'Calling validate lines procedure');
9639     END IF; --}
9640 
9641     -- The validate lines procedure is the same as the one that is
9642     -- called during the online publish flow
9643 
9644     VALIDATE_LINES (
9645       l_result, --1
9646       l_error_code, --2
9647       l_error_msg, --3
9648       p_auction_header_id, --4
9649       l_doctype_id, --5
9650       l_auction_currency_precision , --6
9651       l_fnd_currency_precision , --7
9652       l_close_bidding_date , --8
9653       l_contract_type , --9
9654       l_global_agreement_flag , --10
9655       l_allow_other_bid_currency , --11
9656       l_bid_ranking , --12
9657       l_po_start_date , --13
9658       l_po_end_date , --14
9659       l_trading_partner_id , --15
9660       l_full_quantity_bid_code , --16
9661       l_invitees_count , --17
9662       l_bid_list_type , --18
9663       l_request_id, --19
9664       ARGUMENT2, --20
9665       p_user_id, --21
9666       l_line_attribute_enabled_flag, --22
9667       l_pf_type_allowed, --23
9668       l_progress_payment_type, --24
9669       l_large_neg_enabled_flag, --25
9670       l_price_tiers_indicator, --26
9671       l_batch_id  --27
9672     );
9673 
9674     IF (l_result <> FND_API.G_RET_STS_SUCCESS) THEN -- {
9675 
9676       handle_fatal_exception (
9677         x_result => l_result,
9678         x_error_code => l_error_code,
9679         x_error_message => l_error_msg,
9680         p_request_id => l_request_id,
9681         p_user_name => p_user_name,
9682         p_user_id => p_user_id,
9683         p_auction_header_id => p_auction_header_id,
9684         p_program_type_code => l_programTypeCode,
9685         p_log_message => l_error_msg,
9686         p_document_number => l_document_number);
9687       RETCODE := 2;
9688       RETURN;
9689     END IF; --}
9690 
9691     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9692       FND_LOG.string(log_level => FND_LOG.level_statement,
9693         module => g_module_prefix || l_module_name,
9694         message  => 'Calling CHECK_ACTION_ERRORS_PRESENT with l_batch_id = ' || l_batch_id);
9695     END IF; --}
9696 
9697     -- Check if there are any errors logged by the VALIDATE_LINES procedure
9698     l_errors_present := CHECK_ACTION_ERRORS_PRESENT (l_batch_id);
9699 
9700     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9701       FND_LOG.string(log_level => FND_LOG.level_statement,
9702         module => g_module_prefix || l_module_name,
9703         message  => 'Return value from CHECK_ACTION_ERRORS_PRESENT = ' || BOOLEAN_TO_STRING (l_errors_present));
9704     END IF; --}
9705 
9706     IF (l_errors_present) THEN --{
9707 
9708       -- If errors are present then the concurrent program status should be set to ERROR
9709       RETCODE := 2;
9710 
9711       IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9712         FND_LOG.string(log_level => FND_LOG.level_statement,
9713           module => g_module_prefix || l_module_name,
9714           message  => 'Errors were found while validating, exiting with return code = ' || RETCODE);
9715       END IF; --}
9716 
9717       IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9718         FND_LOG.string(log_level => FND_LOG.level_statement,
9719           module => g_module_prefix || l_module_name,
9720           message  => 'Rolling back the transaction and saving the errors');
9721       END IF; --}
9722 
9723       --Pull errors to table of records, perform rollback and then push them back
9724       RETRIEVE_ERRORS_AND_ROLLBACK (l_batch_id);
9725 
9726       -- Send notification about failure
9727       report_concurrent_failure (
9728         x_result => l_result,
9729         x_error_code => l_error_code,
9730         x_error_message => l_error_msg,
9731         p_request_id => l_request_id,
9732         p_user_name => p_user_name,
9733         p_auction_header_id => p_auction_header_id,
9734         p_program_type_code => l_programTypeCode);
9735 
9736     --No errors go ahead
9737     ELSE
9738 
9739       --Initialize the redirect function used for initiating the approval workflow
9740       IF (l_is_new_round OR l_is_amendment) THEN --{
9741 
9742         l_redirect_func := 'PONCRT_VWCHNG_SUBMIT';
9743       ELSE
9744 
9745         l_redirect_func := 'PON_NEG_CRT_REVIEW';
9746       END IF; --}
9747 
9748       IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9749         FND_LOG.string(log_level => FND_LOG.level_statement,
9750           module => g_module_prefix || l_module_name,
9751           message  => 'l_redirect_func = ' || l_redirect_func);
9752       END IF; --}
9753 
9754       -- No errors but this is for approval flow, so simply release the lock
9755       -- on the draft and initiate the approval workflow
9756 
9757       IF (p_for_approval) THEN --{
9758 
9759         IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9760           FND_LOG.string(log_level => FND_LOG.level_statement,
9761             module => g_module_prefix || l_module_name,
9762             message  => 'This is for approval');
9763         END IF; --}
9764 
9765         UPDATE PON_AUCTION_HEADERS_ALL
9766         SET
9767           DRAFT_LOCKED = 'N',
9768           DRAFT_LOCKED_BY = NULL,
9769           DRAFT_LOCKED_BY_CONTACT_ID = NULL,
9770           DRAFT_LOCKED_DATE = NULL,
9771           DRAFT_UNLOCKED_BY = p_company_party_id,
9772           DRAFT_UNLOCKED_BY_CONTACT_ID = p_user_party_id,
9773           DRAFT_UNLOCKED_DATE = SYSDATE,
9774           LAST_UPDATE_DATE = SYSDATE,
9775           LAST_UPDATED_BY = p_user_id
9776         WHERE
9777           AUCTION_HEADER_ID = p_auction_header_id;
9778 
9779         IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9780           FND_LOG.string(log_level => FND_LOG.level_statement,
9781             module => g_module_prefix || l_module_name,
9782             message  => 'Initiating the approval workflow'
9783                         || ', p_encrypted_auction_header_id = ' || p_encrypted_auction_header_id
9784                         || ', P_AUCTION_HEADER_ID = ' || p_auction_header_id
9785                         || ', P_NOTE_TO_APPROVERS = ' || p_note_to_approvers
9786                         || ', P_SUBMIT_USER_NAME = ' || p_user_name
9787                         || ', P_REDIRECT_FUNC = ' || l_redirect_func);
9788         END IF; --}
9789 
9790         -- Call the submit_for_approval api to initiate the
9791         -- workflow
9792         PON_AUCTION_APPROVAL_PKG.submit_for_approval (
9793           p_auction_header_id_encrypted => p_encrypted_auction_header_id,
9794           p_auction_header_id => p_auction_header_id,
9795           p_note_to_approvers => p_note_to_approvers,
9796           p_submit_user_name => p_user_name,
9797           p_redirect_func => l_redirect_func);
9798 
9799         -- Send a success notification to the user that auction
9800         -- is successfully submitted for approval
9801         report_concurrent_success (
9802           x_result => l_result,
9803           x_error_code => l_error_code,
9804           x_error_message => l_error_msg,
9805           p_request_id => l_request_id,
9806           p_user_name => p_user_name,
9807           p_auction_header_id => p_auction_header_id,
9808           p_program_type_code => l_programTypeCode);
9809 
9810       -- OK this is the publish flow, need to call all before publish method
9811       -- contracts methods, etc and make the auction active
9812 
9813       ELSE
9814 		/* Sol Project : In case of publishing large federal amendments
9815 	   We need to create a conformed document.
9816 	   Newly created conformed document will be published.
9817 	*/
9818 	IF (PON_CLM_UTIL_PKG.IS_DOCUMENT_FEDERAL(l_doctype_id) = 1 AND l_amendment_flag = 'Y') THEN
9819 
9820 		IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9821 		  FND_LOG.string(log_level => FND_LOG.level_statement,
9822 		    module => g_module_prefix || l_module_name,
9823 		    message  => 'This is for creating conformed document. Calling pon_negotiation_copy_grp.CONFORM_AMENDMENT');
9824 		END IF; --}
9825 
9826 		pon_negotiation_copy_grp.CONFORM_AMENDMENT(p_source_auction_header_id  => p_auction_header_id,
9827 						   x_auction_header_id         => l_conf_doc_auc_header_id,
9828 						   x_document_number           => l_conf_doc_number,
9829 						   x_request_id                => l_conf_doc_request_id,
9830 						   x_return_status             => l_result,
9831 						   x_msg_count                 => l_msg_count,
9832 						   x_msg_data                  => l_error_msg,
9833 						   x_revision                  => l_conf_doc_revision);
9834 
9835 		IF (l_result <> FND_API.G_RET_STS_SUCCESS) THEN
9836 
9837       IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9838 		    FND_LOG.string(log_level => FND_LOG.level_statement,
9839 		                   module => g_module_prefix || l_module_name,
9840 		                   message  => 'Error occured while creating conformed document, errors are as below:');
9841 		  END IF; --}
9842 
9843       FOR i IN 1..l_msg_count LOOP
9844 		      l_error_msg := FND_MSG_PUB.Get(p_msg_index => i,p_encoded => 'F');
9845           IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9846               FND_LOG.string(log_level => FND_LOG.level_statement,
9847                              module => g_module_prefix || l_module_name,
9848                              message  => l_error_msg);
9849           END IF; --}
9850           --Log this error in the PON_INTERFACE_ERRORS TABLE
9851           LOG_INTERFACE_ERROR (
9852             p_interface_type => g_interface_type,
9853             p_error_message_name => l_error_msg,
9854             p_token1_name => null,
9855             p_token1_value => null,
9856             p_token2_name => null,
9857             p_token2_value => null,
9858             p_request_id => l_request_id,
9859             p_auction_header_id => p_auction_header_id,
9860             p_expiration_date => SYSDATE + 7,
9861             p_user_id => p_user_id);
9862 
9863       END LOOP;
9864 
9865       IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9866         FND_LOG.string(log_level => FND_LOG.level_statement,
9867           module => g_module_prefix || l_module_name,
9868           message  => 'Setting return code to 2 and returning after logging errors.');
9869       END IF; --}
9870 
9871 		  RETCODE := 2;
9872       ERRBUF := l_error_msg;
9873 
9874       report_concurrent_failure (
9875         x_result => l_result,
9876         x_error_code => l_error_code,
9877         x_error_message => l_error_msg,
9878         p_request_id => l_request_id,
9879         p_user_name => p_user_name,
9880         p_auction_header_id => p_auction_header_id,
9881         p_program_type_code => l_programTypeCode);
9882 
9883       --Issue a commit so that the error is pushed to the database and return
9884 
9885       COMMIT;
9886       RETURN;
9887 		END IF;
9888 	ELSE
9889 		IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9890 		  FND_LOG.string(log_level => FND_LOG.level_statement,
9891 		    module => g_module_prefix || l_module_name,
9892 		    message  => 'This is for publish');
9893 		END IF; --}
9894 
9895 		IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9896 		  FND_LOG.string(log_level => FND_LOG.level_statement,
9897 		    module => g_module_prefix || l_module_name,
9898 		    message  => 'Calling update lines before publish');
9899 		END IF; --}
9900 
9901 		-- The close bidding date and other flags on the lines.
9902 		-- The updates on lines happens in batches with commit
9903 		-- being issued after every batch
9904 		update_lines_before_publish (
9905 		  x_result => l_result,
9906 		  x_error_code => l_error_code,
9907 		  x_error_message => l_error_msg,
9908 		  p_auction_header_id => p_auction_header_id,
9909 		  p_close_bidding_date => l_close_bidding_date,
9910 		  p_user_id => p_user_id,
9911 		  p_login_id => l_login_id);
9912 
9913 		IF (l_result <> FND_API.G_RET_STS_SUCCESS) THEN -- {
9914 
9915 		  handle_fatal_exception (
9916 		    x_result => l_result,
9917 		    x_error_code => l_error_code,
9918 		    x_error_message => l_error_msg,
9919 		    p_request_id => l_request_id,
9920 		    p_user_name => p_user_name,
9921 		    p_user_id => p_user_id,
9922 		    p_auction_header_id => p_auction_header_id,
9923 		    p_program_type_code => l_programTypeCode,
9924 		    p_log_message => l_error_msg,
9925 		    p_document_number => l_document_number);
9926 		  RETCODE := 2;
9927 		  RETURN;
9928 		END IF; --}
9929 
9930 		IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9931 		  FND_LOG.string(log_level => FND_LOG.level_statement,
9932 		    module => g_module_prefix || l_module_name,
9933 		    message  => 'Calling update header before publish');
9934 		END IF; --}
9935 
9936 		-- The max sequence number fields and other flags on the
9937 		-- header
9938 		update_header_before_publish (
9939 		  x_result => l_result,
9940 		  x_error_code => l_error_code,
9941 		  x_error_message => l_error_msg,
9942 		  p_auction_header_id => p_auction_header_id);
9943 
9944 		IF (l_result <> FND_API.G_RET_STS_SUCCESS) THEN -- {
9945 
9946 		  handle_fatal_exception (
9947 		    x_result => l_result,
9948 		    x_error_code => l_error_code,
9949 		    x_error_message => l_error_msg,
9950 		    p_request_id => l_request_id,
9951 		    p_user_name => p_user_name,
9952 		    p_user_id => p_user_id,
9953 		    p_auction_header_id => p_auction_header_id,
9954 		    p_program_type_code => l_programTypeCode,
9955 		    p_log_message => l_error_msg,
9956 		    p_document_number => l_document_number);
9957 		  RETCODE := 2;
9958 		  RETURN;
9959 		END IF; --}
9960 
9961 		IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9962 		  FND_LOG.string(log_level => FND_LOG.level_statement,
9963 		    module => g_module_prefix || l_module_name,
9964 		    message  => 'Checking if this is a new round or amendment');
9965 		END IF; --}
9966 
9967 		-- In case of an amendment or a multi round need to call the
9968 		-- PON_NEG_UPDATE_PKG.UPDATE_TO_NEW_DOCUMENT method.
9969 		IF (l_is_amendment OR l_is_new_round) THEN --{
9970 
9971 		  IF (l_is_amendment) THEN
9972 		    l_transaction_type := 'CREATE_AMENDMENT';
9973 		  ELSE
9974 		    l_transaction_type := 'CREATE_NEW_ROUND';
9975 		  END IF;
9976 
9977 		  IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
9978 		    FND_LOG.string(log_level => FND_LOG.level_statement,
9979 		      module => g_module_prefix || l_module_name,
9980 		      message  => 'Calling update_to_new_document');
9981 		  END IF; --}
9982 
9983 		  PON_NEG_UPDATE_PKG.update_to_new_document (
9984 		    p_auction_header_id_curr_doc => p_auction_header_id,
9985 		    p_doc_number_curr_doc => l_document_number,
9986 		    p_auction_header_id_prev_doc => l_prev_document_number,
9987 		    p_auction_origination_code => l_auction_origination_code,
9988 		    p_is_new => 'N',
9989 		    p_is_publish => 'Y',
9990 		    p_transaction_type => l_transaction_type,
9991 		    p_user_id => p_user_id,
9992 		    x_error_code => l_error_code,
9993 		    x_error_msg => l_error_msg);
9994 
9995 		  IF (nvl (l_error_code, g_invalid_string) <> 'SUCCESS') THEN
9996 
9997 		    --EXCEPTION: EXIT FROM CONCURRENT PROGRAM
9998 		    IF (FND_LOG.level_exception >= FND_LOG.g_current_runtime_level) THEN --{
9999 		      FND_LOG.string(log_level => FND_LOG.level_exception,
10000 			module => g_module_prefix || l_module_name,
10001 			message  => 'Exception in update_to_new_document call = ' || l_error_msg);
10002 		    END IF; --}
10003 
10004 		    -- Rollback till the previous commit
10005 		    ROLLBACK;
10006 
10007 		    -- log an error into the interface_error table
10008 		    LOG_INTERFACE_ERROR (
10009 		      p_interface_type => g_interface_type,
10010 		      p_error_message_name => 'PON_UNEXPECTED_ERROR',
10011 		      p_token1_name => null,
10012 		      p_token1_value => null,
10013 		      p_token2_name => null,
10014 		      p_token2_value => null,
10015 		      p_request_id => l_request_id,
10016 		      p_auction_header_id => p_auction_header_id,
10017 		      p_expiration_date => SYSDATE + 7,
10018 		      p_user_id => p_user_id);
10019 
10020 		    -- send out a failure notification
10021 		    report_concurrent_failure (
10022 		      x_result => l_result,
10023 		      x_error_code => l_error_code,
10024 		      x_error_message => l_error_msg,
10025 		      p_request_id => l_request_id,
10026 		      p_user_name => p_user_name,
10027 		      p_auction_header_id => p_auction_header_id,
10028 		      p_program_type_code => l_programTypeCode);
10029 
10030 		    -- commit, so the notification and error are inserted.
10031 		    COMMIT;
10032 
10033 		    -- set the concurrent program status to error and simply return.
10034 		    RETCODE := 2;
10035 
10036 		    RETURN;
10037 		  END IF;
10038 		END IF; -- end  IF (l_is_amendment OR l_is_new_round)}
10039 
10040 		IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN --{
10041 		  FND_LOG.string(log_level => FND_LOG.level_statement,
10042 		    module => g_module_prefix || l_module_name,
10043 		    message  => 'Inserting row into pon discussions');
10044 		END IF; --}
10045 
10046 		-- Contracts related methods
10047 		--PON_CONTERMS_UTL_PVT.resolveDeliverables
10048 		--PON_CONTERMS_UTL_PVT.cancelDeliverables
10049 		--PON_CONTERMS_UTL_PVT.updateDelivOnAmendment
10050 
10051 		IF (NVL(FND_PROFILE.VALUE ('POC_ENABLED'),'N') = 'Y') THEN --{
10052 
10053 		  PON_CONTERMS_UTL_PVT.resolvedeliverables (
10054 		    p_auction_header_id => p_auction_header_id,
10055 		    x_msg_data => l_return_msg,
10056 		    x_msg_count => l_msg_count,
10057 		    x_return_status => l_return_status);
10058 
10059 		  IF (l_is_new_round) THEN --{
10060 
10061 		    PON_CONTERMS_UTL_PVT.canceldeliverables (
10062 		     p_auction_header_id => l_auction_header_id_prev_round,
10063 		     p_doc_type_id => l_doctype_id,
10064 		     x_msg_data => l_return_msg,
10065 		     x_msg_count => l_msg_count,
10066 		     x_return_status => l_return_status);
10067 		  END IF; --}
10068 
10069 		  IF (l_is_amendment) THEN --{
10070 
10071 		    PON_CONTERMS_UTL_PVT.updatedelivonamendment (
10072 		      p_auction_header_id_orig => l_auction_header_id_orig_amend,
10073 		      p_auction_header_id_prev => l_auction_header_id_prev_amend,
10074 		      p_doc_type_id => l_doctype_id,
10075 		      p_close_bidding_date => l_close_bidding_date,
10076 		      x_result => l_return_status,
10077 		      x_error_code => l_error_code,
10078 		      x_error_message => l_error_msg);
10079 		  END IF; --}
10080 		END IF; --}
10081 
10082 		-- AuctionHeadersALLEOImpl.setAutoExtendFields
10083 		IF (l_auto_extend_flag = null OR l_auto_extend_flag = 'N' OR l_bid_visibility_code = 'SEALED_AUCTION') THEN
10084 		  UPDATE PON_AUCTION_HEADERS_ALL
10085 		  SET
10086 		    AUTO_EXTEND_TYPE_FLAG = 'FROM_AUCTION_CLOSE_DATE',
10087 		    AUTO_EXTEND_DURATION = NULL,
10088 		    AUTO_EXTEND_NUMBER = NULL,
10089 		    AUTO_EXTEND_ALL_LINES_FLAG = 'Y',
10090 		    AUTO_EXTEND_FLAG = 'N',
10091 		    LAST_UPDATE_DATE = SYSDATE,
10092 		    LAST_UPDATED_BY = p_user_id
10093 		  WHERE
10094 		    AUCTION_HEADER_ID = p_auction_header_id;
10095 
10096 		ELSIF (l_auto_extend_flag = 'Y' AND l_auto_extend_number = NULL) THEN
10097 		  UPDATE PON_AUCTION_HEADERS_ALL
10098 		  SET
10099 		    AUTO_EXTEND_NUMBER = g_unlimited_int,
10100 		    LAST_UPDATE_DATE = SYSDATE,
10101 		    LAST_UPDATED_BY = p_user_id
10102 		  WHERE
10103 		    AUCTION_HEADER_ID = p_auction_header_id;
10104 
10105 		END IF;
10106 
10107 		-- AuctionHeadersALLEOImpl.setDecrementFields
10108 		IF ('MULTI_ATTRIBUTE_SCORING' = l_bid_ranking) THEN
10109 		  UPDATE pon_auction_headers_all
10110 		  SET
10111 		    min_bid_change_type = null,
10112 		    price_driven_auction_flag = 'N',
10113 		    min_bid_decrement = NULL,
10114 		    last_update_date = sysdate,
10115 		    last_updated_by = p_user_id
10116 		  WHERE
10117 		    auction_header_id = p_auction_header_id;
10118 
10119 		ELSIF ( NVL (l_price_driven_auction_flag, g_invalid_string) <> 'Y') THEN
10120 
10121 		  UPDATE PON_AUCTION_HEADERS_ALL
10122 		  SET
10123 		    MIN_BID_CHANGE_TYPE = NULL,
10124 		    MIN_BID_DECREMENT = NULL,
10125 		    LAST_UPDATE_DATE = SYSDATE,
10126 		    LAST_UPDATED_BY = p_user_id
10127 		  WHERE
10128 		    AUCTION_HEADER_ID = p_auction_header_id;
10129 		ELSIF (l_min_bid_decrement = null OR l_min_bid_decrement = '') THEN
10130 
10131 		  UPDATE PON_AUCTION_HEADERS_ALL
10132 		  SET
10133 		    MIN_BID_CHANGE_TYPE = NULL,
10134 		    LAST_UPDATE_DATE = SYSDATE,
10135 		    LAST_UPDATED_BY = p_user_id
10136 		  WHERE
10137 		    AUCTION_HEADER_ID = p_auction_header_id;
10138 		END IF;
10139 
10140 		--UPDATE THE OPEN_BIDDING_DATE AND VIEW_BY_DATE COLUMNS
10141 		IF (l_open_auction_now_flag = 'Y') THEN
10142 		  l_open_bidding_date := SYSDATE;
10143 		END IF;
10144 
10145 		IF (l_publish_auction_now_flag = 'Y') THEN
10146 		  l_view_by_date := SYSDATE;
10147 		END IF;
10148 
10149 		PON_AUCTION_PKG.start_auction (
10150 		  p_auction_header_id_encrypted => p_encrypted_auction_header_id, --1
10151 		  p_auction_header_id => p_auction_header_id, --2
10152 		  p_trading_partner_contact_name => l_trading_partner_contact_name, --3
10153 		  p_trading_partner_contact_id => l_trading_partner_contact_id, --4
10154 		  p_trading_partner_name => l_trading_partner_name, --5
10155 		  p_trading_partner_id => l_trading_partner_id, --6
10156 		  p_open_bidding_date => l_open_bidding_date, --7
10157 		  p_close_bidding_date => l_close_bidding_date, --8
10158 		  p_award_by_date => l_award_by_date, --9
10159 		  p_reminder_date => l_reminder_date, --10
10160 		  p_bid_list_type => l_bid_list_type, --11
10161 		  p_note_to_bidders => l_note_to_bidders, --12
10162 		  p_number_of_items => l_number_of_lines, --13
10163 		  p_auction_title => l_auction_title, --14
10164 		  p_event_id => l_event_id); --15
10165 
10166 		-- Make the auction active
10167 		UPDATE PON_AUCTION_HEADERS_ALL
10168 		SET
10169 		  AUCTION_STATUS = 'ACTIVE',
10170 		  REQUEST_ID = NULL,
10171 		  REQUESTED_BY = NULL,
10172 		  REQUEST_DATE = NULL,
10173 		  OPEN_BIDDING_DATE = l_open_bidding_date,
10174 		  VIEW_BY_DATE = l_view_by_date,
10175 		  LAST_UPDATE_DATE = SYSDATE,
10176 		  LAST_UPDATED_BY = p_user_id
10177 		WHERE
10178 		  AUCTION_HEADER_ID = p_auction_header_id;
10179 --Bug:9954903-start
10180 		-- Submit the concurrent program to generate the pdf
10181 		if (PON_CLM_UTIL_PKG.IS_DOCUMENT_FEDERAL(l_doctype_id) = 1) then
10182 			l_pdfFileName := PON_CLM_UTIL_PKG.get_clm_pdf_name(
10183 							l_document_number,
10184 							l_revNum,
10185 							p_curr_language,
10186 							'BUYER'
10187 							);
10188 			l_return_value := FND_REQUEST.SUBMIT_REQUEST (
10189 					  APPLICATION => 'PON',
10190 					  PROGRAM => 'PON_CLM_DOWNLOAD_PDF',
10191 					  DESCRIPTION => null,
10192 					  START_TIME => null,
10193 					  SUB_REQUEST => false,
10194 					  ARGUMENT1 => p_auction_header_id,
10195 					  ARGUMENT2 => 'BUYER',
10196 					  ARGUMENT3 => l_pdfFileName,
10197 					  ARGUMENT4 => p_curr_language,
10198 					  ARGUMENT5 => p_user_id,
10199 					  ARGUMENT6 => p_user_name,
10200 					  ARGUMENT7 => 'N',
10201 					  ARGUMENT8 => 'STORE_CLM_PDF'
10202 					);
10203 --Bug:9954903-end
10204 		else
10205 			-- Submit the concurrent program to generate the pdf
10206 			l_return_value := FND_REQUEST.SUBMIT_REQUEST (
10207 			  APPLICATION => 'PON',
10208 			  PROGRAM => 'PON_GENERATE_PDF',
10209 			  DESCRIPTION => null,
10210 			  START_TIME => null,
10211 			  SUB_REQUEST => false,
10212 			  ARGUMENT1 => p_auction_header_id,
10213 			  ARGUMENT2 => p_client_timezone,
10214 			  ARGUMENT3 => p_server_timezone,
10215 			  ARGUMENT4 => p_date_format_mask);
10216 		end if;
10217 		-- Send notification to user about success of the concurrent
10218 		-- program.
10219 		report_concurrent_success (
10220 		  x_result => l_result,
10221 		  x_error_code => l_error_code,
10222 		  x_error_message => l_error_msg,
10223 		  p_request_id => l_request_id,
10224 		  p_user_name => p_user_name,
10225 		  p_auction_header_id => p_auction_header_id,
10226 		  p_program_type_code => l_programTypeCode);
10227 
10228 	END IF;  -- End if federal amendment
10229       END IF; --if po_for_approval}
10230 
10231       RETCODE := 0;
10232     END IF; --if l_errors_present}
10233 
10234   EXCEPTION WHEN OTHERS THEN --} End of Try block and start of catch block{
10235 
10236       -- In case of an exception then
10237       -- rollback any changes done and send out a failure notification
10238       ROLLBACK;
10239 
10240       IF (FND_LOG.level_exception >= FND_LOG.g_current_runtime_level) THEN --{
10241         FND_LOG.string(log_level => FND_LOG.level_exception,
10242           module  =>  g_module_prefix || l_module_name,
10243           message  => substrb(SQLERRM, 1, 500));
10244       END IF; --}
10245 
10246       -- Set the concurrent program status to error
10247       RETCODE := 2;
10248 
10249       -- Insert a row into the interface error table
10250       LOG_INTERFACE_ERROR (
10251         p_interface_type => g_interface_type,
10252         p_error_message_name => 'PON_UNEXPECTED_ERROR',
10253         p_token1_name => null,
10254         p_token1_value => null,
10255         p_token2_name => null,
10256         p_token2_value => null,
10257         p_request_id => l_request_id,
10258         p_auction_header_id => p_auction_header_id,
10259         p_expiration_date => SYSDATE + 7,
10260         p_user_id => p_user_id);
10261 
10262       --Send the failure notification
10263       report_concurrent_failure (
10264         x_result => l_result,
10265         x_error_code => l_error_code,
10266         x_error_message => l_error_msg,
10267         p_request_id => l_request_id,
10268         p_user_name => p_user_name,
10269         p_auction_header_id => p_auction_header_id,
10270         p_program_type_code => l_programTypeCode);
10271   END; --}
10272 
10273   COMMIT;
10274 
10275   IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN --{
10276     FND_LOG.string(log_level => FND_LOG.level_procedure,
10277       module  =>  g_module_prefix || l_module_name,
10278       message  => 'Leaving concurrent program');
10279   END IF; --}
10280 
10281 END PON_PUBLISH_SUPER_LARGE_NEG;
10282 
10283 
10284 END PON_NEGOTIATION_PUBLISH_PVT;