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