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