[Home] [Help]
PACKAGE BODY: APPS.PON_BID_VALIDATIONS_PKG
Source
1 PACKAGE BODY pon_bid_validations_pkg AS
2 --$Header: PONBDVLB.pls 120.84.12020000.2 2013/02/09 07:25:11 hvutukur ship $
3
4 g_fnd_debug CONSTANT VARCHAR2(1) := NVL(FND_PROFILE.VALUE('AFLOG_ENABLED'),'N');
5 g_module_prefix CONSTANT VARCHAR2(35) := 'pon.plsql.bidValidationsPkg.';
6
7 g_exp_date TIMESTAMP;
8 g_exp_days_offset CONSTANT NUMBER := 7;
9
10 g_null_int CONSTANT NUMBER := -9999;
11
12 g_number_mask CONSTANT VARCHAR2(255) := '9999999999999999999999999999999999999999999999D9999999999999999';
13
14
15 g_is_fed VARCHAR2(1) := 'N';
16
17
18 ----------------------------------------------------------------
19 -- Formats the number based on the precision pased. If the --
20 -- precision is passed as any then no formatting is done. --
21 ----------------------------------------------------------------
22 FUNCTION GET_MASK(p_precision in NUMBER) return VARCHAR2 is
23 l_mask varchar2(80);
24
25 BEGIN
26 -- precision is ANY
27 if (p_precision = 10000) then
28 l_mask := 'FM999G999G999G999G999G999G999G990D0999999999'; -- consider a big mask to accomodate big numbers
29 return l_mask;
30 elsif (p_precision = 0) then
31 -- For 0 precision we need to hide the decimal seperator
32 l_mask := 'FM999G999G999G999G999G999G999G999'; -- consider a big mask to accomodate big numbers
33 return l_mask;
34 else
35 l_mask := 'FM999G999G999G999G999G999G999G990D'; -- consider a big mask to accomodate big numbers
36 l_mask := rpad(l_mask, (length(l_mask) + p_precision), '0');
37 return l_mask;
38 end if;
39 END;
40
41 ----------------------------------------------------------------
42 -- Formats the price passed based on the format passed. --
43 -- If the price does have a decimal part then the decimal --
44 -- separator will not be displayed. If the price is less --
45 -- that 0 then 0 will be displayed before the decimal --
46 -- separator --
47 ----------------------------------------------------------------
48 FUNCTION FORMAT_PRICE
49 ( p_price in NUMBER,
50 p_format_mask in VARCHAR2,
51 p_precision IN NUMBER
52 ) return VARCHAR2 is
53 l_mask varchar2(80);
54 BEGIN
55 if (p_price is null) then
56 return null;
57 elsif ((ceil(p_price) - p_price) =0 and p_precision = 10000) then
58 -- if price does not have decimal seperator and precision is 'Any' then
59 -- the decimal will not be displayed
60 l_mask := 'FM999G999G999G999G999G999G999G999'; -- consider a big mask to accomodate big numbers
61 else
62 l_mask := p_format_mask; -- consider the original mask
63 end if;
64
65 return to_char(p_price,l_mask);
66
67 END;
68
69
70 -- ======================================================================
71 -- PROCEDURE: VALIDATE_PRICE_PRECISION PUBLIC
72 -- PARAMETERS:
73 -- p_number IN number to validate
74 -- p_precision IN desired precision
75 --
76 -- RETURN: T if number's precision is within p_precision decimals. F if not
77 --
78 -- COMMENT: determines if number's precision is withint p_precision decimals
79 -- ======================================================================
80 FUNCTION validate_price_precision
81 (
82 p_number IN NUMBER,
83 p_precision IN NUMBER
84 ) RETURN VARCHAR2 IS
85 BEGIN
86
87 IF (p_number IS null) THEN
88 RETURN 'T';
89 END IF;
90
91 IF p_precision = 10000
92 OR (MOD(MOD(ABS(p_number), 1) * POWER(10, p_precision), 1) = 0) THEN
93 RETURN 'T';
94 ELSE
95 RETURN 'F';
96 END IF;
97
98 END validate_price_precision;
99
100 -- ======================================================================
101 -- PROCEDURE: VALIDATE_CURRENCY_PRECISION PUBLIC
102 -- PARAMETERS:
103 -- p_number IN number to validate
104 -- p_precision IN desired precision
105 --
106 -- RETURN: T if number's precision is within p_precision decimals. F if not
107 --
108 -- COMMENT: determines if number's precision is withint p_precision decimals
109 -- ======================================================================
110 FUNCTION validate_currency_precision
111 (
112 p_number IN NUMBER,
113 p_precision IN NUMBER
114 ) RETURN VARCHAR2 IS
115 BEGIN
116
117 IF (p_number IS null) THEN
118 RETURN 'T';
119 END IF;
120
121 IF (MOD(MOD(ABS(p_number), 1) * POWER(10, p_precision), 1) = 0) THEN
122 RETURN 'T';
123 ELSE
124 RETURN 'F';
125 END IF;
126
127 END validate_currency_precision;
128
129
130
131
132 PROCEDURE populate_has_bid_changed_line
133 (
134 p_auc_header_id IN pon_bid_item_prices.auction_header_id%TYPE,
135 p_bid_number IN pon_bid_item_prices.bid_number%TYPE,
136 p_source_bid IN pon_bid_item_prices.bid_number%TYPE,
137 p_batch_id IN pon_bid_item_prices.batch_id%TYPE,
138 p_batch_start IN NUMBER,
139 p_batch_end IN NUMBER,
140 p_rebid_flag IN VARCHAR2,
141 p_blanket IN VARCHAR2,
142 p_use_batch_id IN VARCHAR2,
143 p_spreadsheet IN VARCHAR
144 ) IS
145 BEGIN
146
147 -- spreadsheet case:
148 -- Blindly set has_bid_flag to Y for all bidded lines in the spreadsheet
149 -- (any line with batch_id = p_batch_id will have a bid.)
150 -- If rebid, then is_changed line logic will be run, so initialize
151 -- it to 'N' for all lines
152 -- If not rebid, then we won't be running the is_changed_line logic below
153 -- so set the flag to 'Y' for all lines
154 --
155 -- online case:
156 -- for power bidding, don't mess with has_bid_flag.
157 -- since power bidding is always a rebid, we will always be
158 -- initializing all is_changed_line_flag to 'N' and then selectively
159 -- setting them to 'Y' with the is_changed_line logic below
160
161 UPDATE pon_bid_item_prices bl
162 SET bl.has_bid_flag = decode(p_use_batch_id, 'Y', 'Y', bl.has_bid_flag),
163 bl.is_changed_line_flag = decode(p_rebid_flag, 'N', 'Y', 'N'),
164 bl.has_user_bid_flag = Decode(g_is_fed, 'Y',
165 decode(p_use_batch_id, 'Y', 'Y', bl.has_user_bid_flag),'') -- ELIN project changes
166 WHERE bl.bid_number = p_bid_number
167 AND ((p_use_batch_id = 'Y' AND bl.batch_id = p_batch_id)
168 OR (p_use_batch_id = 'N'
169 AND bl.line_number >= p_batch_start
170 AND bl.line_number <= p_batch_end))
171 --ELIN project changes
172 AND ( (Nvl(bl.user_marked_flag,'N') = 'Y' AND Nvl(bl.has_user_bid_flag, 'N') = 'Y')
173 OR Nvl(bl.user_marked_flag,'N') = 'N');
174
175 -- no need to run the is_changed_line logic below
176 -- if we're doing spreadsheet upload and this is not a rebid
177 IF (p_use_batch_id = 'Y' AND p_rebid_flag = 'N') THEN
178 RETURN;
179 END IF;
180
181 UPDATE pon_bid_item_prices bl
182 SET bl.is_changed_line_flag = 'Y'
183 WHERE bl.bid_number = p_bid_number
184 AND ((p_use_batch_id = 'Y' AND bl.batch_id = p_batch_id)
185 OR (p_use_batch_id = 'N'
186 AND bl.line_number >= p_batch_start
187 AND bl.line_number <= p_batch_end))
188 --ELIN project changes
189 AND ( (Nvl(bl.user_marked_flag,'N') = 'Y' AND Nvl(bl.has_user_bid_flag, 'N') = 'Y')
190 OR Nvl(bl.user_marked_flag,'N') = 'N')
191 --ELIN project changes end
192 AND ((NVL(bl.bid_currency_unit_price, g_null_int) <> NVL(bl.old_bid_currency_unit_price, g_null_int)
193 OR NVL(bl.bid_currency_price, g_null_int) <> NVL(bl.old_bid_currency_price, g_null_int)
194 OR bl.proxy_bid_limit_price IS NOT NULL
195 AND NVL(bl.bid_currency_limit_price, g_null_int) <> NVL(bl.old_bid_currency_limit_price, g_null_int)
196 OR bl.promised_date IS NULL AND bl.old_promised_date IS NOT NULL
197 OR bl.promised_date IS NOT NULL AND bl.old_promised_date IS NULL
198 OR bl.promised_date <> bl.old_promised_date
199 OR NVL(bl.po_bid_min_rel_amount, g_null_int) <> NVL(bl.old_po_bid_min_rel_amount, g_null_int)
200 OR bl.note_to_auction_owner IS NULL AND bl.old_note_to_auction_owner IS NOT NULL
201 OR bl.note_to_auction_owner IS NOT NULL AND bl.old_note_to_auction_owner IS NULL
202 OR bl.note_to_auction_owner <> bl.old_note_to_auction_owner
203 OR bl.old_quantity IS NOT NULL AND NVL(bl.quantity, g_null_int) <> bl.old_quantity
204 OR NVL(bl.bid_curr_advance_amount, g_null_int) <> NVL(bl.old_bid_curr_advance_amount, g_null_int)
205 OR NVL(bl.recoupment_rate_percent, g_null_int) <> NVL(bl.old_recoupment_rate_percent, g_null_int)
206 OR NVL(bl.progress_pymt_rate_percent, g_null_int) <> NVL(bl.old_progress_pymt_rate_percent, g_null_int)
207 OR NVL(bl.retainage_rate_percent, g_null_int) <> NVL(bl.old_retainage_rate_percent, g_null_int)
208 OR NVL(bl.bid_curr_max_retainage_amt, g_null_int) <> NVL(bl.old_bid_curr_max_retainage_amt, g_null_int)
209 )
210
211 OR (bl.has_attributes_flag = 'Y'
212 AND EXISTS
213
214 -- Check attributes
215 (SELECT ba.line_number
216 FROM pon_bid_attribute_values ba
217 WHERE ba.bid_number = bl.bid_number
218 AND ba.line_number = bl.line_number
219 AND (ba.value IS NULL AND ba.old_value IS NOT NULL OR
220 ba.value IS NOT NULL AND ba.old_value IS NULL OR
221 ba.value <> ba.old_value)
222 AND rownum = 1))
223
224 OR EXISTS
225
226 -- Check price factors
227 (SELECT bpf.line_number
228 FROM pon_bid_price_elements bpf
229 WHERE bpf.bid_number = bl.bid_number
230 AND bpf.line_number = bl.line_number
231 AND bpf.pf_type = 'SUPPLIER'
232 AND NVL(bpf.bid_currency_value, g_null_int) <> NVL(old_bid_currency_value, g_null_int)
233 AND rownum = 1)
234 OR EXISTS
235
236 -- Check payments for xml spreadsheet upload case
237 (SELECT bps.bid_line_number
238 FROM pon_bid_payments_shipments bps
239 WHERE p_spreadsheet = g_xml_upload_mode
240 AND bps.bid_number = bl.bid_number
241 AND bps.bid_line_number = bl.line_number
242 AND (NVL(bps.payment_display_number, g_null_int) <> NVL(old_payment_display_number, g_null_int)
243 OR bps.payment_type_code IS NULL AND bps.old_payment_type_code IS NOT NULL
244 OR bps.payment_type_code IS NOT NULL AND bps.old_payment_type_code IS NULL
245 OR bps.payment_type_code <> bps.old_payment_type_code
246 OR bps.payment_description IS NULL AND bps.old_payment_description IS NOT NULL
247 OR bps.payment_description IS NOT NULL AND bps.old_payment_description IS NULL
248 OR bps.payment_description <> bps.old_payment_description
249 OR NVL(bps.quantity, g_null_int) <> NVL(old_quantity, g_null_int)
250 OR NVL(bps.uom_code, g_null_int) <> NVL(old_uom_code, g_null_int)
251 OR NVL(bps.bid_currency_price, g_null_int) <> NVL(old_bid_currency_price, g_null_int)
252 OR bps.promised_date IS NULL AND bps.old_promised_date IS NOT NULL
253 OR bps.promised_date IS NOT NULL AND bps.old_promised_date IS NULL
254 OR bps.promised_date <> bps.old_promised_date)
255 AND rownum = 1)
256
257 -- Check if any payments were deleted
258 OR (nvl(bl.old_no_of_payments,0) <> (select count(payment_display_number)
259 from pon_bid_payments_shipments bps
260 where bps.bid_number = bl.bid_number
261 and bps.bid_line_number = bl.line_number))
262
263 OR ( (bl.has_shipments_flag = 'Y' or bl.has_quantity_tiers = 'Y')
264 AND EXISTS
265
266 -- Check shipments
267 -- If auction_shipment_number is null then it is user defined
268 -- so we must check all possible values that can be changed
269 (SELECT bpb.line_number
270 FROM pon_bid_shipments bpb
271 WHERE bpb.bid_number = bl.bid_number
272 AND bpb.line_number = bl.line_number
273 AND (bpb.auction_shipment_number IS null
274 AND (NVL(bpb.ship_to_organization_id, g_null_int) <> NVL(bpb.old_ship_to_org_id, g_null_int)
275 OR NVL(bpb.ship_to_location_id, g_null_int) <> NVL(bpb.old_ship_to_loc_id, g_null_int)
276 OR bpb.effective_start_date IS NULL AND bpb.old_effective_start_date IS NOT NULL
277 OR bpb.effective_start_date IS NOT NULL AND bpb.old_effective_start_date IS NULL
278 OR bpb.effective_start_date <> bpb.old_effective_start_date
279 OR bpb.effective_end_date IS NULL AND bpb.old_effective_end_date IS NOT NULL
280 OR bpb.effective_end_date IS NOT NULL AND bpb.old_effective_end_date IS NULL
281 OR bpb.effective_end_date <> bpb.old_effective_end_date
282 OR NVL(bpb.quantity, g_null_int) <> NVL(bpb.old_quantity, g_null_int)
283 OR NVL(bpb.max_quantity, g_null_int) <> NVL(bpb.old_max_quantity, g_null_int)
284 OR bpb.price_type IS NULL AND bpb.old_price_type IS NOT NULL
285 OR bpb.price_type IS NOT NULL AND bpb.old_price_type IS NULL
286 OR bpb.price_type <> bpb.old_price_type)
287 OR bpb.price_type = 'PRICE' AND NVL(bpb.bid_currency_unit_price, g_null_int) <> NVL(bpb.old_bid_currency_unit_price, g_null_int)
288 OR bpb.price_type = 'PRICE DISCOUNT' AND NVL(bpb.price_discount, g_null_int) <> NVL(bpb.old_price_discount, g_null_int)
289 OR NVL(bpb.bid_currency_price, g_null_int) <> NVL(bpb.old_bid_currency_price, g_null_int))
290 AND rownum = 1))
291
292 OR (bl.has_price_differentials_flag = 'Y'
293 AND EXISTS
294
295 -- Check price differentials, including shipment price differentials
296 (SELECT bpd.line_number
297 FROM pon_bid_price_differentials bpd
298 WHERE bpd.bid_number = bl.bid_number
299 AND bpd.line_number = bl.line_number
300 AND NVL(bpd.multiplier, g_null_int) <> NVL(bpd.old_multiplier, g_null_int)
301 AND rownum = 1))
302 );
303
304
305 -- process groups
306 -- when a group line has been changed, change the group too.
307 UPDATE pon_bid_item_prices pbip
308 SET pbip.is_changed_line_flag = 'Y'
309 WHERE pbip.bid_number = p_bid_number
310 AND pbip.line_number IN
311 (SELECT al.parent_line_number
312 FROM pon_bid_item_prices bl,
313 pon_auction_item_prices_all al
314 WHERE bl.bid_number = p_bid_number
315 AND bl.auction_header_id = al.auction_header_id
316 AND bl.line_number = al.line_number
317 AND al.group_type = 'GROUP_LINE'
318 AND bl.is_changed_line_flag = 'Y'
319 AND ((p_use_batch_id = 'Y' AND bl.batch_id = p_batch_id)
320 OR (p_use_batch_id = 'N'
321 AND bl.line_number >= p_batch_start
322 AND bl.line_number <= p_batch_end)));
323
324
325
326
327
328 -- We need some special checks for price breaks because
329 -- a user could have added or removed them.
330 -- Only consider the case of a rebid where the line had a previous bid
331 -- and only for blanket agreements.
332
333 -- Check all unmodified lines against source_bid if the source_bid is valid
334 IF (p_spreadsheet = g_xml_upload_mode and p_blanket = 'Y' AND p_rebid_flag = 'Y' AND p_source_bid > 0) THEN
335
336 UPDATE pon_bid_item_prices bl
337 SET bl.is_changed_line_flag = 'Y'
338 WHERE bl.bid_number = p_bid_number
339 AND bl.batch_id = p_batch_id
340 AND (EXISTS
341
342 -- Check if a shipment was deleted
343 (SELECT old_bpb.line_number
344 FROM pon_bid_shipments bpb, pon_bid_shipments old_bpb
345 WHERE old_bpb.bid_number = p_source_bid
346 AND old_bpb.line_number = bl.line_number
347 AND bpb.bid_number (+) = p_bid_number
348 AND bpb.line_number (+) = old_bpb.line_number
349 AND bpb.shipment_number (+) = old_bpb.shipment_number
350 AND bpb.shipment_number IS null
351 AND rownum = 1)
352
353 OR EXISTS
354
355 -- Check if a shipment was added
356 (SELECT bpb.line_number
357 FROM pon_bid_shipments bpb, pon_bid_shipments old_bpb
358 WHERE bpb.bid_number = p_bid_number
359 AND bpb.line_number = bl.line_number
360 AND old_bpb.bid_number (+) = p_source_bid
361 AND old_bpb.line_number (+) = bpb.line_number
362 AND old_bpb.shipment_number (+) = bpb.shipment_number
363 AND old_bpb.shipment_number IS null
364 AND rownum = 1)
365 );
366 END IF;
367
368
369 END populate_has_bid_changed_line;
370
371 -- wrapper for spreadsheet case
372 PROCEDURE populate_has_bid_changed_line
373 (
374 p_auc_header_id IN pon_bid_item_prices.auction_header_id%TYPE,
375 p_bid_number IN pon_bid_item_prices.bid_number%TYPE,
376 p_source_bid IN pon_bid_item_prices.bid_number%TYPE,
377 p_batch_id IN pon_bid_item_prices.batch_id%TYPE,
378 p_rebid_flag VARCHAR2,
379 p_blanket VARCHAR2,
380 p_spreadsheet IN VARCHAR2
381 )
382 IS
383 BEGIN
384 populate_has_bid_changed_line(p_auc_header_id, p_bid_number, p_source_bid,
385 p_batch_id, -1, -1, p_rebid_flag, p_blanket,
386 'Y', p_spreadsheet);
387
388 END populate_has_bid_changed_line;
389
390
391 -- wrapper for online case
392 PROCEDURE populate_has_bid_changed_line
393 (
394 p_auc_header_id IN pon_bid_item_prices.auction_header_id%TYPE,
395 p_bid_number IN pon_bid_item_prices.bid_number%TYPE,
396 p_source_bid IN pon_bid_item_prices.bid_number%TYPE,
397 p_batch_start IN NUMBER,
398 p_batch_end IN NUMBER,
399 p_rebid_flag IN VARCHAR2,
400 p_blanket IN VARCHAR2,
401 p_use_batch_id IN VARCHAR2
405 -1, p_batch_start, p_batch_end, p_rebid_flag,
402 ) IS
403 BEGIN
404 populate_has_bid_changed_line(p_auc_header_id, p_bid_number, p_source_bid,
406 p_blanket, 'N', g_online_mode);
407 END populate_has_bid_changed_line;
408
409
410
411 PROCEDURE calc_total_weighted_score
412 (
413 p_bid_number IN pon_bid_item_prices.bid_number%TYPE,
414 p_batch_id IN pon_bid_item_prices.batch_id%TYPE
415 ) IS
416 BEGIN
417
418 -- First populate the score for each attribute
419 -- The match we make is dependent on the attributes datatype
420 -- TXT - we match value against value
421 -- NUM - we check value between from_range and to_range,
422 -- converting varchar to number first
423 -- DAT - we check value between from_range and to_range,
424 -- converting varchar to date first (timestamp for need_by_date)
425 UPDATE pon_bid_attribute_values ba
426 SET ba.score =
427 nvl((SELECT s.score
428 FROM pon_attribute_scores s
429 WHERE s.auction_header_id = ba.auction_header_id
430 AND s.line_number = ba.line_number
431 AND s.attribute_sequence_number = ba.sequence_number
432 AND (datatype = 'TXT' AND ba.value = s.value
433 OR datatype = 'NUM' AND to_number(ba.value, g_number_mask, 'NLS_NUMERIC_CHARACTERS=''.,''')
434 BETWEEN to_number(nvl(s.from_range, ba.value), g_number_mask, 'NLS_NUMERIC_CHARACTERS=''.,''')
435 AND to_number(nvl(s.to_range, ba.value), g_number_mask, 'NLS_NUMERIC_CHARACTERS=''.,''')
436 OR datatype = 'DAT'
437 AND (ba.sequence_number = -10 AND
438 to_date(ba.value, 'dd-mm-yyyy hh24:mi:ss') BETWEEN
439 to_date(nvl(s.from_range, ba.value), 'dd-mm-yyyy hh24:mi:ss')
440 AND to_date(nvl(s.to_range, ba.value), 'dd-mm-yyyy hh24:mi:ss')
441 OR ba.sequence_number <> -10 AND
442 to_date(ba.value, 'dd-mm-yyyy') BETWEEN
443 to_date(nvl(s.from_range, ba.value), 'dd-mm-yyyy')
444 AND to_date(nvl(s.to_range, ba.value), 'dd-mm-yyyy')))),
445 nvl2(ba.value, 0, null))
446 WHERE ba.bid_number = p_bid_number
447 AND EXISTS (SELECT bl.line_number
448 FROM pon_bid_item_prices bl
449 WHERE bl.bid_number = p_bid_number
450 AND bl.line_number = ba.line_number
451 AND bl.batch_id = p_batch_id);
452
453
454 UPDATE pon_bid_attribute_values ba
455 SET ba.weighted_score =
456 (SELECT decode(nvl(aa.scoring_type, 'NONE'),
457 'NONE', null,
458 aa.weight / 100.0 * nvl(ba.score, 0))
459 FROM pon_auction_attributes aa
460 WHERE aa.auction_header_id = ba.auction_header_id
461 AND aa.line_number = ba.line_number
462 AND aa.sequence_number = ba.sequence_number)
463 WHERE ba.bid_number = p_bid_number
464 AND EXISTS (SELECT bl.line_number
465 FROM pon_bid_item_prices bl
466 WHERE bl.bid_number = p_bid_number
467 AND bl.line_number = ba.line_number
468 AND bl.batch_id = p_batch_id);
469
470
471 -- Conditions to check with total_weighted_score:
472 -- If there were no scored attributes, set to 100.
473 -- If there was a scored attribute that didn't recieve a bid, set to null
474 -- Ignore all unscored (weight not > 0) attributes
475 -- LOGIC: decode(# scored attr,
476 -- null, if line has bid then 100 else null,
477 -- 0, if line has bid then 100 else null,
478 -- # scored attr with bids,
479 -- score, null)
480
481 UPDATE pon_bid_item_prices bl
482 SET bl.total_weighted_score =
483 (SELECT decode(sum(sign(aa.weight)),
484 null, decode(bl.has_bid_flag, 'Y', 100, null),
485 0, decode(bl.has_bid_flag, 'Y', 100, null),
486 sum(decode(sign(aa.weight), 1, nvl2(ba.value, 1, 0), 0)),
487 sum(aa.weight / 100.0 * nvl(ba.score, 0)), null)
488 FROM pon_bid_attribute_values ba, pon_auction_attributes aa
489 WHERE ba.bid_number = bl.bid_number
490 AND ba.line_number = bl.line_number
491 AND aa.auction_header_id = ba.auction_header_id
492 AND aa.line_number = ba.line_number
493 AND aa.sequence_number = ba.sequence_number)
494 WHERE bl.bid_number = p_bid_number
495 AND bl.batch_id = p_batch_id;
496
497 END calc_total_weighted_score;
498
499 PROCEDURE validate_bids_placed
500 (
501 p_auc_header_id IN pon_bid_item_prices.auction_header_id%TYPE,
502 p_bid_number IN pon_bid_item_prices.bid_number%TYPE,
503 p_interface_type IN pon_interface_errors.interface_type%TYPE,
504 p_userid IN pon_interface_errors.created_by%TYPE,
505 p_rebid IN VARCHAR2,
506 p_bid_all_lines IN VARCHAR2,
507 p_auc_has_items IN VARCHAR2,
508 p_evaluation_flag IN VARCHAR2, -- Added for ER: Supplier Management: Supplier Evaluation
509 p_suffix IN VARCHAR2,
510 p_batch_id IN pon_interface_errors.batch_id%TYPE,
511 p_request_id IN pon_interface_errors.request_id%TYPE
512 ) IS
513 l_header_modified VARCHAR2(1);
514
515 --Unsolicited Lines Project
516 l_allow_unsol_lines pon_auction_headers_all.ALLOW_UNSOL_OFFER_LINES%TYPE;
517 l_changed_unsol_line_count NUMBER;
518 BEGIN
519
520 -- Determine if the bid header was modified
521 SELECT decode(count(bh.bid_number), 0, 'N', 'Y')
522 INTO l_header_modified
523 FROM pon_bid_headers bh
524 WHERE bh.bid_number = p_bid_number
525 AND ((bh.old_note_to_auction_owner IS null
526 AND bh.note_to_auction_owner IS NOT null
527 OR bh.old_note_to_auction_owner IS NOT null
531 OR (bh.old_bid_expiration_date IS null
528 AND bh.note_to_auction_owner IS null
529 OR bh.old_note_to_auction_owner <> bh.note_to_auction_owner)
530 OR nvl(bh.old_bidders_bid_number, -1) <> nvl(bh.bidders_bid_number, -1)
532 AND bh.bid_expiration_date IS NOT null
533 OR bh.old_bid_expiration_date IS NOT null
534 AND bh.bid_expiration_date IS null
535 OR bh.old_bid_expiration_date <> bh.bid_expiration_date)
536 OR nvl(bh.old_min_bid_change, -1) <> nvl(bh.min_bid_change, -1)
537 -- surrog bid receipt date must be non-null if surrogate bid
538 OR bh.surrog_bid_flag = 'Y'
539 AND bh.old_surrog_bid_receipt_date <> bh.surrog_bid_receipt_date
540 -- Check if a header attribute was modified
541 OR EXISTS
542 (SELECT null
543 FROM pon_bid_attribute_values ba
544 WHERE ba.bid_number = p_bid_number
545 AND ba.line_number = -1
546 AND (ba.old_value <> ba.value
547 OR ba.old_value IS null AND ba.value IS NOT null
548 OR ba.value IS null AND ba.old_value IS NOT null)));
549
550 --Unsolicited Lines Project
551 BEGIN
552
553 SELECT Nvl(ALLOW_UNSOL_OFFER_LINES,'N')
554 INTO l_allow_unsol_lines
555 FROM pon_auction_headers_all
556 WHERE auction_header_id = p_auc_header_id;
557
558 IF p_rebid = 'Y' AND l_allow_unsol_lines = 'Y' THEN
559 l_changed_unsol_line_count := 0;
560
561 SELECT Count(*)
562 INTO l_changed_unsol_line_count
563 FROM pon_bid_item_prices
564 WHERE bid_number = p_bid_number
565 AND auction_line_number = -1
566 AND Nvl(is_changed_line_flag,'N') = 'Y';
567
568 END IF;
569
570 EXCEPTION
571 WHEN No_Data_Found THEN
572 l_changed_unsol_line_count := 0;
573 END;
574 --End Unsolicited Lines Project.
575
576 INSERT FIRST
577
578 -- When rebidding, the header or one line must be changed
579 /* Unsolicited Lines Project : During rebid, if neg lines are not changed, then check
580 if unsol line count is also zero. If so, throw error.
581 */
582 WHEN p_rebid = 'Y' AND l_header_modified = 'N' AND
583 (s_changed_line_count = 0 AND (l_allow_unsol_lines = 'Y' AND l_changed_unsol_line_count = 0))THEN
584 INTO pon_interface_errors
585 (INTERFACE_TYPE,
586 TABLE_NAME,
587 BATCH_ID,
588 ERROR_MESSAGE_NAME,
589 CREATED_BY,
590 CREATION_DATE,
591 LAST_UPDATED_BY,
592 LAST_UPDATE_DATE,
593 REQUEST_ID,
594 AUCTION_HEADER_ID,
595 BID_NUMBER,
596 EXPIRATION_DATE)
597 VALUES
598 (p_interface_type,
599 'PON_BID_HEADERS',
600 p_batch_id,
601 'PON_BID_NO_CHANGES',
602 p_userid,
603 sysdate,
604 p_userid,
605 sysdate,
606 p_request_id,
607 p_auc_header_id,
608 p_bid_number,
609 g_exp_date)
610
611 -- All lines must have recieved a bid if that is a requirement
612 -- Added the p_evaluation_flag condition for ER: Supplier Management: Supplier Evaluation
613 WHEN p_bid_all_lines = 'Y' AND s_avail_bidded_lines <> s_bidded_lines AND p_evaluation_flag = 'N' THEN
614 INTO pon_interface_errors
615 (INTERFACE_TYPE,
616 TABLE_NAME,
617 BATCH_ID,
618 ERROR_MESSAGE_NAME,
619 CREATED_BY,
620 CREATION_DATE,
621 LAST_UPDATED_BY,
622 LAST_UPDATE_DATE,
623 REQUEST_ID,
624 AUCTION_HEADER_ID,
625 BID_NUMBER,
626 EXPIRATION_DATE)
627 VALUES
628 (p_interface_type,
629 'PON_BID_HEADERS',
630 p_batch_id,
631 'PON_MUST_BIDALL_ITEMS' || p_suffix,
632 p_userid,
633 sysdate,
634 p_userid,
635 sysdate,
636 p_request_id,
637 p_auc_header_id,
638 p_bid_number,
639 g_exp_date)
640
641 -- At least one line must have recieved a bid if the auction has lines
642 -- Added the p_evaluation_flag condition for ER: Supplier Management: Supplier Evaluation
643 /* modified for bug#12951763 : As this is a generic validation that should be fired at any stage of
644 rounds of bidding, removing bidding flag(p_rebid) from the condition */
645 -- WHEN p_rebid = 'N' AND p_auc_has_items = 'Y' AND s_has_bid_count = 0 AND p_evaluation_flag = 'N' THEN
646 /* 13565622 : Relax this validation, when priced unsolicited lines exist. */
647 WHEN p_auc_has_items = 'Y' AND s_has_bid_count = 0 AND p_evaluation_flag = 'N'
648 AND PON_UNSOL_UTIL_PKG.HAS_PRICED_UNSOL_RESP_LINES(p_bid_number) = 'N' THEN
649 /* modified for bug#12951763 */
650 INTO pon_interface_errors
651 (INTERFACE_TYPE,
652 TABLE_NAME,
653 BATCH_ID,
654 ERROR_MESSAGE_NAME,
655 CREATED_BY,
656 CREATION_DATE,
657 LAST_UPDATED_BY,
658 LAST_UPDATE_DATE,
659 REQUEST_ID,
660 AUCTION_HEADER_ID,
661 BID_NUMBER,
662 EXPIRATION_DATE)
663 VALUES
664 (p_interface_type,
665 'PON_BID_HEADERS',
666 p_batch_id,
667 'PON_MUST_BID_ATLEAST_ONE' || p_suffix,
668 p_userid,
669 sysdate,
670 p_userid,
671 sysdate,
672 p_request_id,
673 p_auc_header_id,
674 p_bid_number,
675 g_exp_date)
676
677 SELECT
678 count(bl.line_number) s_line_count,
679 -- modified by Allen Yang for surrogate bid bug #7703665, #8220778 2009/02/03
680 ----------------------------------------------------------------------------
681 ---sum(decode(bl.has_bid_flag, 'Y', 1, 0)) s_has_bid_count,
685 decode(NVL(paha.TECHNICAL_EVALUATION_STATUS, 'NOT_COMPLETED'), 'NOT_COMPLETED',
682 /* bug#10221791 changes for two part RFQ surrogate bid*/
683 sum(decode(bl.has_bid_flag, 'Y', 1,
684 decode(NVL(paha.Two_Part_Flag, 'N'), 'Y',
686 decode(NVL(pbh.surrog_bid_flag, 'N'), 'Y',
687 decode(NVL(paha.FULL_QUANTITY_BID_CODE, 'FULL_QTY_BIDS_REQD'), 'FULL_QTY_BIDS_REQD', 1,
688 Decode( Decode(paip.order_type_lookup_code,'QUANTITY','Y','N'),'N',1,
689 Decode( Decode(paha.contract_type,'STANDARD','Y','N'),'N',1,
690 0))), 0), 0), 0))) s_has_bid_count,
691 sum(decode(bl.is_changed_line_flag, 'Y', 1, 0)) s_changed_line_count,
692 sum(decode(paip.group_type, 'LINE', 1, 'LOT', 1, 'GROUP_LINE', 1, 0)) s_avail_bidded_lines,
693 --sum(decode(bl.has_bid_flag, 'Y', decode(paip.group_type, 'LINE', 1, 'LOT', 1, 'GROUP_LINE', 1, 0), 0)) s_bidded_lines
694 /* bug#10221791 changes for two part RFQ surrogate bid*/
695 sum(decode(bl.has_bid_flag, 'Y',
696 decode(paip.group_type, 'LINE', 1, 'LOT', 1, 'GROUP_LINE', 1, 0),
697
698 decode(NVL(paha.Two_Part_Flag, 'N'), 'Y',
699 decode(NVL(paha.TECHNICAL_EVALUATION_STATUS, 'NOT_COMPLETED'), 'NOT_COMPLETED',
700 decode(NVL(pbh.surrog_bid_flag, 'N'), 'Y',
701 decode(NVL(paha.FULL_QUANTITY_BID_CODE, 'FULL_QTY_BIDS_REQD'), 'FULL_QTY_BIDS_REQD',1,
702 Decode( Decode(paip.order_type_lookup_code,'QUANTITY','Y','N'),'N',1,
703 Decode( Decode(paha.contract_type,'STANDARD','Y','N'),'N',1,
704 0))), 0), 0), 0))) s_bidded_lines
705
706 ----------------------------------------------------------------------------
707 FROM pon_bid_item_prices bl,
708 pon_auction_item_prices_all paip
709 -- added by Allen Yang for surrogate bid bug 7703665, #8220778 2009/02/03
710 ---------------------------------------------------------------
711 , pon_auction_headers_all paha,
712 pon_bid_headers pbh
713 ---------------------------------------------------------------
714 WHERE bl.bid_number = p_bid_number and
715 bl.auction_header_id = paip.auction_header_id and
716 bl.line_number = paip.line_number
717 -- added by Allen Yang for surrogate bid bug 7703665, #8220778 2009/02/03
718 ---------------------------------------------------------------
719 and bl.bid_number = pbh.bid_number
720 and pbh.auction_header_id = paha.auction_header_id
721 ---------------------------------------------------------------
722 AND nvl(bl.clm_info_flag, 'N') <> 'Y' -- CLM-CLIN/SLIN Changes
723 --CLM QA bug : 9835426:No need to offer on NC/NSP lines.
724 AND (Nvl(bl.clm_cost_constraint,'X') NOT IN ('NSP','NC'));
725
726 END validate_bids_placed;
727
728 PROCEDURE validate_lots_and_groups
729 (
730 p_auc_header_id IN pon_bid_item_prices.auction_header_id%TYPE,
731 p_bid_number IN pon_bid_item_prices.bid_number%TYPE,
732 p_interface_type IN pon_interface_errors.interface_type%TYPE,
733 p_userid IN pon_interface_errors.created_by%TYPE,
734 p_spreadsheet IN VARCHAR2,
735 p_batch_id IN pon_interface_errors.batch_id%TYPE,
736 p_request_id IN pon_interface_errors.request_id%TYPE
737 ) IS
738 BEGIN
739
740 INSERT ALL
741
742 -- All lines in a GROUP must be bid on simultaneously
743 WHEN s_group_type = 'GROUP' AND
744 (SELECT decode(sum(decode(bl.has_bid_flag, 'Y', 1, 0)), 0, 'OK',
745 count(bl.bid_number), 'OK', 'N')
746 FROM pon_bid_item_prices bl, pon_auction_item_prices_all al
747 WHERE bl.bid_number = p_bid_number
748 AND al.auction_header_id = bl.auction_header_id
749 AND al.line_number = bl.line_number
750 AND al.auction_header_id = p_auc_header_id
751 AND al.parent_line_number = s_line_number) = 'N' THEN
752 INTO pon_interface_errors
753 (INTERFACE_TYPE,
754 TABLE_NAME,
755 BATCH_ID,
756 INTERFACE_LINE_ID,
757 ERROR_MESSAGE_NAME,
758 CREATED_BY,
759 CREATION_DATE,
760 LAST_UPDATED_BY,
761 LAST_UPDATE_DATE,
762 REQUEST_ID,
763 AUCTION_HEADER_ID,
764 BID_NUMBER,
765 LINE_NUMBER,
766 EXPIRATION_DATE,
767 TOKEN1_NAME,
768 TOKEN1_VALUE,
769 WORKSHEET_NAME,
770 WORKSHEET_SEQUENCE_NUMBER,
771 ENTITY_MESSAGE_CODE)
772 VALUES
773 (p_interface_type,
774 'PON_BID_ITEM_PRICES',
775 p_batch_id,
776 s_interface_line_id,
777 'PON_GROUP_PARTIAL_BID_ERR',
778 p_userid,
779 sysdate,
780 p_userid,
781 sysdate,
782 p_request_id,
783 p_auc_header_id,
784 p_bid_number,
785 s_line_number,
786 g_exp_date,
787 'LINENUMBER',
788 --s_document_disp_line_number,
789 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
790 s_worksheet_name,
791 s_worksheet_sequence_number,
792 s_entity_message_code)
793
794 -- If a lot has no bid, none of it's children can be bid on
795 WHEN s_group_type = 'LOT' AND s_has_bid_flag = 'N' AND EXISTS
796 (SELECT bl.bid_number
797 FROM pon_bid_item_prices bl, pon_auction_item_prices_all al
798 WHERE bl.bid_number = p_bid_number
799 AND al.auction_header_id = bl.auction_header_id
800 AND al.line_number = bl.line_number
801 AND al.auction_header_id = p_auc_header_id
802 AND al.parent_line_number = s_line_number
803 AND bl.has_bid_flag = 'Y'
804 AND rownum = 1) THEN
805 INTO pon_interface_errors
806 (INTERFACE_TYPE,
810 ERROR_MESSAGE_NAME,
807 TABLE_NAME,
808 BATCH_ID,
809 INTERFACE_LINE_ID,
811 CREATED_BY,
812 CREATION_DATE,
813 LAST_UPDATED_BY,
814 LAST_UPDATE_DATE,
815 REQUEST_ID,
816 AUCTION_HEADER_ID,
817 BID_NUMBER,
818 LINE_NUMBER,
819 EXPIRATION_DATE,
820 TOKEN1_NAME,
821 TOKEN1_VALUE,
822 WORKSHEET_NAME,
823 WORKSHEET_SEQUENCE_NUMBER,
824 ENTITY_MESSAGE_CODE)
825 VALUES
826 (p_interface_type,
827 'PON_BID_ITEM_PRICES',
828 p_batch_id,
829 s_interface_line_id,
830 'PON_LOT_NOT_BID_ERR',
831 p_userid,
832 sysdate,
833 p_userid,
834 sysdate,
835 p_request_id,
836 p_auc_header_id,
837 p_bid_number,
838 s_line_number,
839 g_exp_date,
840 'LINENUMBER',
841 --s_document_disp_line_number,
842 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
843 s_worksheet_name,
844 s_worksheet_sequence_number,
845 s_entity_message_code)
846 SELECT
847 bl.line_number s_line_number,
848 bl.has_bid_flag s_has_bid_flag,
849 decode(p_spreadsheet, g_txt_upload_mode, bl.interface_line_id,
850 g_xml_upload_mode, bl.interface_line_id,
851 to_number(null)) s_interface_line_id,
852 al.group_type s_group_type,
853 al.document_disp_line_number s_document_disp_line_number,
854 decode(p_spreadsheet, g_xml_upload_mode, bl.worksheet_name,
855 to_char(null)) s_worksheet_name,
856 decode(p_spreadsheet, g_xml_upload_mode, bl.worksheet_sequence_number,
857 to_number(null)) s_worksheet_sequence_number,
858 decode(p_spreadsheet, g_xml_upload_mode, 'PON_AUC_ITEMS', to_char(null)) s_entity_message_code,
859 al.line_num_display s_clm_line_num_display
860 FROM pon_bid_item_prices bl
861 , pon_auction_item_prices_all al
862 , pon_bid_headers pbh
863 WHERE bl.bid_number = p_bid_number
864 AND al.auction_header_id = bl.auction_header_id
865 AND al.line_number = bl.line_number
866 AND al.auction_header_id = p_auc_header_id
867 AND al.group_type IN ('GROUP', 'LOT')
868 AND (p_spreadsheet = g_online_mode OR bl.batch_id = p_batch_id)
869 AND pbh.bid_number = bl.bid_number
870 AND (pbh.SURROG_BID_FLAG = 'Y' OR nvl(al.close_bidding_date, sysdate+1) > sysdate);
871
872 END validate_lots_and_groups;
873
874 PROCEDURE validate_lines
875 (
876 p_auc_header_id IN pon_bid_item_prices.auction_header_id%TYPE,
877 p_bid_number IN pon_bid_item_prices.bid_number%TYPE,
878 p_interface_type IN pon_interface_errors.interface_type%TYPE,
879 p_userid IN pon_interface_errors.created_by%TYPE,
880 p_tpid IN pon_bid_headers.trading_partner_id%TYPE,
881 p_vensid IN pon_bid_headers.vendor_site_id%TYPE,
882 p_spreadsheet IN VARCHAR2,
883 p_blanket IN VARCHAR2,
884 p_global IN VARCHAR2,
885 p_trans_view IN VARCHAR2,
886 p_rebid IN VARCHAR2,
887 p_full_qty_reqd IN VARCHAR2,
888 p_header_disp_pf IN VARCHAR2,
889 p_price_driven IN VARCHAR2,
890 p_percent_decr IN VARCHAR2,
891 p_bid_decr_method IN pon_auction_headers_all.bid_decrement_method%TYPE,
892 p_min_bid_decr IN pon_auction_headers_all.min_bid_decrement%TYPE,
893 p_min_bid_change IN pon_bid_headers.min_bid_change%TYPE,
894 p_rate IN pon_bid_headers.rate%TYPE,
895 p_price_precision IN pon_bid_headers.number_price_decimals%TYPE,
896 p_amt_precision IN fnd_currencies.precision%TYPE,
897 p_bid_curr_code IN pon_bid_headers.bid_currency_code%TYPE,
898 p_suffix IN VARCHAR2,
899 p_batch_id IN pon_interface_errors.batch_id%TYPE,
900 p_request_id IN pon_interface_errors.request_id%TYPE
901 --added by Allen Yang for Surrogate Bid 2008/09/03
902 --------------------------------------------------
903 , p_two_part_tech_surrogate_flag IN VARCHAR2
904 --------------------------------------------------
905 ) IS
906
907 l_price_mask VARCHAR2(80);
908 BEGIN
909
910 -- get the price mask according to price precision
911 l_price_mask := get_mask(p_price_precision);
912
913 -- STEP 1: pre-release 12 validations.
914 -- currently 26 validations. This statement has 1-13.
915 INSERT ALL
916
917 -- Header level field min_bid_change is required if there is a proxy line
918 WHEN p_min_bid_change IS null AND s_proxy_bid_limit_price IS NOT null THEN
919 INTO pon_interface_errors
920 (INTERFACE_TYPE,
921 COLUMN_NAME,
922 TABLE_NAME,
923 BATCH_ID,
924 INTERFACE_LINE_ID,
925 ERROR_MESSAGE_NAME,
926 CREATED_BY,
927 CREATION_DATE,
928 LAST_UPDATED_BY,
929 LAST_UPDATE_DATE,
930 REQUEST_ID,
931 ENTITY_TYPE,
932 ENTITY_ATTR_NAME,
933 ERROR_VALUE_NUMBER,
934 ERROR_VALUE_DATATYPE,
935 AUCTION_HEADER_ID,
936 BID_NUMBER,
937 LINE_NUMBER,
938 EXPIRATION_DATE,
939 TOKEN1_NAME,
940 TOKEN1_VALUE,
941 WORKSHEET_NAME,
942 WORKSHEET_SEQUENCE_NUMBER,
943 ENTITY_MESSAGE_CODE)
944 VALUES
945 (p_interface_type,
946 decode(p_spreadsheet, g_xml_upload_mode,
947 fnd_message.get_string('PON', 'PON_AUCTS_MIN_BID_DEC' || p_suffix),
948 fnd_message.get_string('PON', 'PON_AUCTS_MIN_BID_PRICE')),
949 'PON_BID_ITEM_PRICES',
950 p_batch_id,
951 s_interface_line_id,
952 'PON_AUCTS_MIN_DEC_NULL' || p_suffix,
953 p_userid,
954 sysdate,
955 p_userid,
956 sysdate,
957 p_request_id,
958 'BID_ITEMS',
962 p_auc_header_id,
959 'ProxyBidLimitPrice',
960 s_proxy_bid_limit_price,
961 'NUM',
963 p_bid_number,
964 s_line_number,
965 g_exp_date,
966 'LINENUMBER',
967 --s_document_disp_line_number,
968 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
969 s_worksheet_name,
970 s_worksheet_sequence_number,
971 s_entity_message_code)
972 -- Price and quantity are required fields if they are editable
973 WHEN p_blanket = 'N' AND s_price_editable = 'Y' AND s_price IS null
974 AND s_qty_editable = 'Y' AND s_bid_quantity IS null
975 -- added by Allen Yang for Surrogate Bid 2008/09/03
976 ---------------------------------------------------
977 AND p_two_part_tech_surrogate_flag = 'N'
978 ---------------------------------------------------
979 THEN
980 INTO pon_interface_errors
981 (INTERFACE_TYPE,
982 TABLE_NAME,
983 BATCH_ID,
984 INTERFACE_LINE_ID,
985 ERROR_MESSAGE_NAME,
986 CREATED_BY,
987 CREATION_DATE,
988 LAST_UPDATED_BY,
989 LAST_UPDATE_DATE,
990 REQUEST_ID,
991 ENTITY_TYPE,
992 ENTITY_ATTR_NAME,
993 ERROR_VALUE_DATATYPE,
994 AUCTION_HEADER_ID,
995 BID_NUMBER,
996 LINE_NUMBER,
997 EXPIRATION_DATE,
998 TOKEN1_NAME,
999 TOKEN1_VALUE,
1000 WORKSHEET_NAME,
1001 WORKSHEET_SEQUENCE_NUMBER,
1002 ENTITY_MESSAGE_CODE)
1003 VALUES
1004 (p_interface_type,
1005 'PON_BID_ITEM_PRICES',
1006 p_batch_id,
1007 s_interface_line_id,
1008 'PON_BID_PRICE_QTY_REQD' || p_suffix,
1009 p_userid,
1010 sysdate,
1011 p_userid,
1012 sysdate,
1013 p_request_id,
1014 'BID_ITEMS',
1015 'Price',
1016 'TXT',
1017 p_auc_header_id,
1018 p_bid_number,
1019 s_line_number,
1020 g_exp_date,
1021 'LINENUMBER',
1022 --s_document_disp_line_number,
1023 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
1024 s_worksheet_name,
1025 s_worksheet_sequence_number,
1026 s_entity_message_code)
1027
1028 -- Price is a required field if it is editable
1029 WHEN s_price_editable = 'Y' AND s_price IS null
1030 -- added by Allen Yang for Surrogate Bid 2008/09/03
1031 ---------------------------------------------------
1032 AND p_two_part_tech_surrogate_flag = 'N'
1033 ---------------------------------------------------
1034 THEN
1035 INTO pon_interface_errors
1036 (INTERFACE_TYPE,
1037 TABLE_NAME,
1038 COLUMN_NAME,
1039 BATCH_ID,
1040 INTERFACE_LINE_ID,
1041 ERROR_MESSAGE_NAME,
1042 CREATED_BY,
1043 CREATION_DATE,
1044 LAST_UPDATED_BY,
1045 LAST_UPDATE_DATE,
1046 REQUEST_ID,
1047 ENTITY_TYPE,
1048 ENTITY_ATTR_NAME,
1049 ERROR_VALUE_DATATYPE,
1050 AUCTION_HEADER_ID,
1051 BID_NUMBER,
1052 LINE_NUMBER,
1053 EXPIRATION_DATE,
1054 TOKEN1_NAME,
1055 TOKEN1_VALUE,
1056 WORKSHEET_NAME,
1057 WORKSHEET_SEQUENCE_NUMBER,
1058 ENTITY_MESSAGE_CODE)
1059 VALUES
1060 (p_interface_type,
1061 'PON_BID_ITEM_PRICES',
1062 fnd_message.get_string('PON', 'PON_AUCTS_BID_PRICE' || p_suffix),
1063 p_batch_id,
1064 s_interface_line_id,
1065 'PON_BID_PRICE_REQUIRED' || p_suffix,
1066 p_userid,
1067 sysdate,
1068 p_userid,
1069 sysdate,
1070 p_request_id,
1071 'BID_ITEMS',
1072 'Price',
1073 'TXT',
1074 p_auc_header_id,
1075 p_bid_number,
1076 s_line_number,
1077 g_exp_date,
1078 'LINENUMBER',
1079 --s_document_disp_line_number,
1080 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
1081 s_worksheet_name,
1082 s_worksheet_sequence_number,
1083 s_entity_message_code)
1084
1085 -- Quantity is a required field if it is editable
1086 WHEN p_blanket = 'N' AND s_qty_editable = 'Y' AND s_bid_quantity IS null THEN
1087 INTO pon_interface_errors
1088 (INTERFACE_TYPE,
1089 TABLE_NAME,
1090 COLUMN_NAME,
1091 BATCH_ID,
1092 INTERFACE_LINE_ID,
1093 ERROR_MESSAGE_NAME,
1094 CREATED_BY,
1095 CREATION_DATE,
1096 LAST_UPDATED_BY,
1097 LAST_UPDATE_DATE,
1098 REQUEST_ID,
1099 ENTITY_TYPE,
1100 ENTITY_ATTR_NAME,
1101 ERROR_VALUE_DATATYPE,
1102 AUCTION_HEADER_ID,
1103 BID_NUMBER,
1104 LINE_NUMBER,
1105 EXPIRATION_DATE,
1106 TOKEN1_NAME,
1107 TOKEN1_VALUE,
1108 WORKSHEET_NAME,
1109 WORKSHEET_SEQUENCE_NUMBER,
1110 ENTITY_MESSAGE_CODE)
1111 VALUES
1112 (p_interface_type,
1113 'PON_BID_ITEM_PRICES',
1114 fnd_message.get_string('PON', 'PON_AUCTS_BID_QTY' || p_suffix),
1115 p_batch_id,
1116 s_interface_line_id,
1117 'PON_BID_QUANTITY_REQUIRED' || p_suffix,
1118 p_userid,
1119 sysdate,
1120 p_userid,
1121 sysdate,
1122 p_request_id,
1123 'BID_ITEMS',
1124 'Quantity',
1125 'TXT',
1126 p_auc_header_id,
1127 p_bid_number,
1128 s_line_number,
1129 g_exp_date,
1130 'LINENUMBER',
1131 --s_document_disp_line_number,
1135 s_entity_message_code)
1132 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
1133 s_worksheet_name,
1134 s_worksheet_sequence_number,
1136
1137 -- Bug 7460446 Bid cannot be zero or negative
1138 -- Doesn't apply for blanket agreements
1139 WHEN p_blanket = 'N' AND s_bid_quantity <= 0 THEN
1140 INTO pon_interface_errors
1141 (INTERFACE_TYPE,
1142 COLUMN_NAME,
1143 TABLE_NAME,
1144 BATCH_ID,
1145 INTERFACE_LINE_ID,
1146 ERROR_MESSAGE_NAME,
1147 CREATED_BY,
1148 CREATION_DATE,
1149 LAST_UPDATED_BY,
1150 LAST_UPDATE_DATE,
1151 REQUEST_ID,
1152 ENTITY_TYPE,
1153 ENTITY_ATTR_NAME,
1154 ERROR_VALUE_NUMBER,
1155 ERROR_VALUE_DATATYPE,
1156 AUCTION_HEADER_ID,
1157 BID_NUMBER,
1158 LINE_NUMBER,
1159 EXPIRATION_DATE,
1160 TOKEN1_NAME,
1161 TOKEN1_VALUE,
1162 WORKSHEET_NAME,
1163 WORKSHEET_SEQUENCE_NUMBER,
1164 ENTITY_MESSAGE_CODE)
1165 VALUES
1166 (p_interface_type,
1167 fnd_message.get_string('PON', 'PON_AUCTS_BID_QTY' || p_suffix),
1168 'PON_BID_ITEM_PRICES',
1169 p_batch_id,
1170 s_interface_line_id,
1171 'PON_AUC_BIDQTY_NEG' || p_suffix,
1172 p_userid,
1173 sysdate,
1174 p_userid,
1175 sysdate,
1176 p_request_id,
1177 'BID_ITEMS',
1178 'Quantity',
1179 s_bid_quantity,
1180 'NUM',
1181 p_auc_header_id,
1182 p_bid_number,
1183 s_line_number,
1184 g_exp_date,
1185 'LINENUMBER',
1186 --s_document_disp_line_number,
1187 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
1188 s_worksheet_name,
1189 s_worksheet_sequence_number,
1190 s_entity_message_code)
1191
1192 -- Bid quantity should not exceed auction quantity
1193 -- Does not apply for blanket agreements
1194 WHEN p_blanket = 'N' AND s_bid_quantity > s_auc_quantity THEN
1195 INTO pon_interface_errors
1196 (INTERFACE_TYPE,
1197 COLUMN_NAME,
1198 TABLE_NAME,
1199 BATCH_ID,
1200 INTERFACE_LINE_ID,
1201 ERROR_MESSAGE_NAME,
1202 CREATED_BY,
1203 CREATION_DATE,
1204 LAST_UPDATED_BY,
1205 LAST_UPDATE_DATE,
1206 REQUEST_ID,
1207 ENTITY_TYPE,
1208 ENTITY_ATTR_NAME,
1209 ERROR_VALUE_NUMBER,
1210 ERROR_VALUE_DATATYPE,
1211 AUCTION_HEADER_ID,
1212 BID_NUMBER,
1213 LINE_NUMBER,
1214 EXPIRATION_DATE,
1215 TOKEN1_NAME,
1216 TOKEN1_VALUE,
1217 WORKSHEET_NAME,
1218 WORKSHEET_SEQUENCE_NUMBER,
1219 ENTITY_MESSAGE_CODE)
1220 VALUES
1221 (p_interface_type,
1222 fnd_message.get_string('PON', 'PON_AUCTS_BID_QTY' || p_suffix),
1223 'PON_BID_ITEM_PRICES',
1224 p_batch_id,
1225 s_interface_line_id,
1226 'PON_INVALID_BID_QTY' || p_suffix,
1227 p_userid,
1228 sysdate,
1229 p_userid,
1230 sysdate,
1231 p_request_id,
1232 'BID_ITEMS',
1233 'Quantity',
1234 s_bid_quantity,
1235 'NUM',
1236 p_auc_header_id,
1237 p_bid_number,
1238 s_line_number,
1239 g_exp_date,
1240 'LINENUMBER',
1241 --s_document_disp_line_number,
1242 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
1243 s_worksheet_name,
1244 s_worksheet_sequence_number,
1245 s_entity_message_code)
1246
1247 -- If the need_by_date is scored, then promised date is required
1248 -- Does not apply for blanket agreements
1249 WHEN p_blanket = 'N' AND s_need_by_date_scored = 'Y'
1250 AND s_promised_date IS null
1251 -- added by Allen Yang for Surrogate Bid 2008/09/03
1252 ---------------------------------------------------
1253 AND p_two_part_tech_surrogate_flag = 'N'
1254 ---------------------------------------------------
1255 THEN
1256 INTO pon_interface_errors
1257 (INTERFACE_TYPE,
1258 COLUMN_NAME,
1259 TABLE_NAME,
1260 BATCH_ID,
1261 INTERFACE_LINE_ID,
1262 ERROR_MESSAGE_NAME,
1263 CREATED_BY,
1264 CREATION_DATE,
1265 LAST_UPDATED_BY,
1266 LAST_UPDATE_DATE,
1267 REQUEST_ID,
1268 ENTITY_TYPE,
1269 ENTITY_ATTR_NAME,
1270 ERROR_VALUE_DATATYPE,
1271 AUCTION_HEADER_ID,
1272 BID_NUMBER,
1273 LINE_NUMBER,
1274 EXPIRATION_DATE,
1275 TOKEN1_NAME,
1276 TOKEN1_VALUE,
1277 WORKSHEET_NAME,
1278 WORKSHEET_SEQUENCE_NUMBER,
1279 ENTITY_MESSAGE_CODE)
1280 VALUES
1281 (p_interface_type,
1282 fnd_message.get_string('PON', 'PON_AUCTS_PROMISED_DATE'),
1283 'PON_BID_ITEM_PRICES',
1284 p_batch_id,
1285 s_interface_line_id,
1286 'PON_AUC_PROMISED_DATE_REQ',
1287 p_userid,
1288 sysdate,
1289 p_userid,
1290 sysdate,
1291 p_request_id,
1292 'BID_ITEMS',
1293 'PromisedDate',
1294 'TXT',
1295 p_auc_header_id,
1296 p_bid_number,
1297 s_line_number,
1298 g_exp_date,
1299 'LINENUMBER',
1300 --s_document_disp_line_number,
1301 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
1302 s_worksheet_name,
1303 s_worksheet_sequence_number,
1304 s_entity_message_code)
1305
1306 -- The promised date cannot be earlier than the current date
1307 -- Does not apply to blanket agreements
1311 AND p_two_part_tech_surrogate_flag = 'N'
1308 WHEN p_blanket = 'N' AND s_promised_date < s_current_date
1309 -- added by Allen Yang for Surrogate Bid 2008/09/03
1310 ---------------------------------------------------
1312 ---------------------------------------------------
1313 THEN
1314 INTO pon_interface_errors
1315 (INTERFACE_TYPE,
1316 COLUMN_NAME,
1317 TABLE_NAME,
1318 BATCH_ID,
1319 INTERFACE_LINE_ID,
1320 ERROR_MESSAGE_NAME,
1321 CREATED_BY,
1322 CREATION_DATE,
1323 LAST_UPDATED_BY,
1324 LAST_UPDATE_DATE,
1325 REQUEST_ID,
1326 ENTITY_TYPE,
1327 ENTITY_ATTR_NAME,
1328 ERROR_VALUE_DATE,
1329 ERROR_VALUE_DATATYPE,
1330 AUCTION_HEADER_ID,
1331 BID_NUMBER,
1332 LINE_NUMBER,
1333 EXPIRATION_DATE,
1334 TOKEN1_NAME,
1335 TOKEN1_VALUE,
1336 WORKSHEET_NAME,
1337 WORKSHEET_SEQUENCE_NUMBER,
1338 ENTITY_MESSAGE_CODE)
1339 VALUES
1340 (p_interface_type,
1341 fnd_message.get_string('PON', 'PON_AUCTS_PROMISED_DATE'),
1342 'PON_BID_ITEM_PRICES',
1343 p_batch_id,
1344 s_interface_line_id,
1345 'PON_AUC_PDATE_TOO_EARLY',
1346 p_userid,
1347 sysdate,
1348 p_userid,
1349 sysdate,
1350 p_request_id,
1351 'BID_ITEMS',
1352 'PromisedDate',
1353 s_promised_date,
1354 'DAT',
1355 p_auc_header_id,
1356 p_bid_number,
1357 s_line_number,
1358 g_exp_date,
1359 'LINENUMBER',
1360 --s_document_disp_line_number,
1361 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
1362 s_worksheet_name,
1363 s_worksheet_sequence_number,
1364 s_entity_message_code)
1365
1366 --CLM Bug : 10212430 : Enter either promise date or POP dates
1367 WHEN p_blanket = 'N'
1368 AND (s_promised_date is not null and (s_clm_pop_start_date is not null OR s_clm_pop_end_date is not null))
1369 AND p_two_part_tech_surrogate_flag = 'N'
1370 THEN
1371 INTO pon_interface_errors
1372 (INTERFACE_TYPE,
1373 COLUMN_NAME,
1374 TABLE_NAME,
1375 BATCH_ID,
1376 INTERFACE_LINE_ID,
1377 ERROR_MESSAGE_NAME,
1378 CREATED_BY,
1379 CREATION_DATE,
1380 LAST_UPDATED_BY,
1381 LAST_UPDATE_DATE,
1382 REQUEST_ID,
1383 ENTITY_TYPE,
1384 ENTITY_ATTR_NAME,
1385 ERROR_VALUE_DATE,
1386 ERROR_VALUE_DATATYPE,
1387 AUCTION_HEADER_ID,
1388 BID_NUMBER,
1389 LINE_NUMBER,
1390 EXPIRATION_DATE,
1391 TOKEN1_NAME,
1392 TOKEN1_VALUE,
1393 WORKSHEET_NAME,
1394 WORKSHEET_SEQUENCE_NUMBER,
1395 ENTITY_MESSAGE_CODE)
1396 VALUES
1397 (p_interface_type,
1398 fnd_message.get_string('PON', 'PON_AUCTS_PROMISED_DATE'),
1399 'PON_BID_ITEM_PRICES',
1400 p_batch_id,
1401 s_interface_line_id,
1402 'PON_CLM_PROMISE_POPDT_LINE_VAL',
1403 p_userid,
1404 sysdate,
1405 p_userid,
1406 sysdate,
1407 p_request_id,
1408 'BID_ITEMS',
1409 'PromisedDate',
1410 s_promised_date,
1411 'DAT',
1412 p_auc_header_id,
1413 p_bid_number,
1414 s_line_number,
1415 g_exp_date,
1416 'LINENUM',
1417 --s_document_disp_line_number,
1418 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
1419 s_worksheet_name,
1420 s_worksheet_sequence_number,
1421 s_entity_message_code)
1422
1423 --CLM Bug : 10212430 : If Promise date is null, then both POP Start date is entered,then
1424 -- pop end date is mandatory and vice versa.
1425 WHEN p_blanket = 'N'
1426 AND (s_promised_date is null and (s_clm_pop_start_date is not null AND s_clm_pop_end_date is null))
1427 AND p_two_part_tech_surrogate_flag = 'N'
1428 THEN
1429 INTO pon_interface_errors
1430 (INTERFACE_TYPE,
1431 COLUMN_NAME,
1432 TABLE_NAME,
1433 BATCH_ID,
1434 INTERFACE_LINE_ID,
1435 ERROR_MESSAGE_NAME,
1436 CREATED_BY,
1437 CREATION_DATE,
1438 LAST_UPDATED_BY,
1439 LAST_UPDATE_DATE,
1440 REQUEST_ID,
1441 ENTITY_TYPE,
1442 ENTITY_ATTR_NAME,
1443 ERROR_VALUE_DATATYPE,
1444 AUCTION_HEADER_ID,
1445 BID_NUMBER,
1446 LINE_NUMBER,
1447 EXPIRATION_DATE,
1448 TOKEN1_NAME,
1449 TOKEN1_VALUE,
1450 WORKSHEET_NAME,
1451 WORKSHEET_SEQUENCE_NUMBER,
1452 ENTITY_MESSAGE_CODE)
1453 VALUES
1454 (p_interface_type,
1455 fnd_message.get_string('PON', 'PON_CLM_PROMISE_POP_END_DATE'),
1456 'PON_BID_ITEM_PRICES',
1457 p_batch_id,
1458 s_interface_line_id,
1459 'PON_CLM_PROMISE_POP_ENDDT_REQ',
1460 p_userid,
1461 sysdate,
1462 p_userid,
1463 sysdate,
1464 p_request_id,
1465 'BID_ITEMS',
1466 'PromisePopEndDate',
1467 'TXT',
1468 p_auc_header_id,
1469 p_bid_number,
1470 s_line_number,
1471 g_exp_date,
1472 'LINENUM',
1473 --s_document_disp_line_number,
1474 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
1475 s_worksheet_name,
1476 s_worksheet_sequence_number,
1477 s_entity_message_code)
1478
1482 AND (s_promised_date is null and (s_clm_pop_start_date is null AND s_clm_pop_end_date is not null))
1479 --CLM Bug : 10212430 : If Promise date is null, then both POP Start date is entered,then
1480 -- pop end date is mandatory and vice versa.
1481 WHEN p_blanket = 'N'
1483 AND p_two_part_tech_surrogate_flag = 'N'
1484 THEN
1485 INTO pon_interface_errors
1486 (INTERFACE_TYPE,
1487 COLUMN_NAME,
1488 TABLE_NAME,
1489 BATCH_ID,
1490 INTERFACE_LINE_ID,
1491 ERROR_MESSAGE_NAME,
1492 CREATED_BY,
1493 CREATION_DATE,
1494 LAST_UPDATED_BY,
1495 LAST_UPDATE_DATE,
1496 REQUEST_ID,
1497 ENTITY_TYPE,
1498 ENTITY_ATTR_NAME,
1499 ERROR_VALUE_DATATYPE,
1500 AUCTION_HEADER_ID,
1501 BID_NUMBER,
1502 LINE_NUMBER,
1503 EXPIRATION_DATE,
1504 TOKEN1_NAME,
1505 TOKEN1_VALUE,
1506 WORKSHEET_NAME,
1507 WORKSHEET_SEQUENCE_NUMBER,
1508 ENTITY_MESSAGE_CODE)
1509 VALUES
1510 (p_interface_type,
1511 fnd_message.get_string('PON', 'PON_CLM_PROMISE_POP_START_DATE'),
1512 'PON_BID_ITEM_PRICES',
1513 p_batch_id,
1514 s_interface_line_id,
1515 'PON_CLM_PROMISE_POP_STDT_REQ',
1516 p_userid,
1517 sysdate,
1518 p_userid,
1519 sysdate,
1520 p_request_id,
1521 'BID_ITEMS',
1522 'PromisePopStartDate',
1523 'TXT',
1524 p_auc_header_id,
1525 p_bid_number,
1526 s_line_number,
1527 g_exp_date,
1528 'LINENUM',
1529 --s_document_disp_line_number,
1530 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
1531 s_worksheet_name,
1532 s_worksheet_sequence_number,
1533 s_entity_message_code)
1534
1535 --CLM Bug : 10212430 : POP Start date should be less than POP end date.
1536 WHEN p_blanket = 'N'
1537 AND ( s_promised_date is null AND
1538 (s_clm_pop_start_date is not null AND s_clm_pop_end_date is not null AND (s_clm_pop_end_date <= s_clm_pop_start_date))
1539 )
1540 AND p_two_part_tech_surrogate_flag = 'N'
1541 THEN
1542 INTO pon_interface_errors
1543 (INTERFACE_TYPE,
1544 COLUMN_NAME,
1545 TABLE_NAME,
1546 BATCH_ID,
1547 INTERFACE_LINE_ID,
1548 ERROR_MESSAGE_NAME,
1549 CREATED_BY,
1550 CREATION_DATE,
1551 LAST_UPDATED_BY,
1552 LAST_UPDATE_DATE,
1553 REQUEST_ID,
1554 ENTITY_TYPE,
1555 ENTITY_ATTR_NAME,
1556 ERROR_VALUE_DATE,
1557 ERROR_VALUE_DATATYPE,
1558 AUCTION_HEADER_ID,
1559 BID_NUMBER,
1560 LINE_NUMBER,
1561 EXPIRATION_DATE,
1562 TOKEN1_NAME,
1563 TOKEN1_VALUE,
1564 WORKSHEET_NAME,
1565 WORKSHEET_SEQUENCE_NUMBER,
1566 ENTITY_MESSAGE_CODE)
1567 VALUES
1568 (p_interface_type,
1569 fnd_message.get_string('PON', 'PON_CLM_PROMISE_POP_START_DATE'),
1570 'PON_BID_ITEM_PRICES',
1571 p_batch_id,
1572 s_interface_line_id,
1573 'PON_CLM_PROMISE_POP_DATE_VALX',
1574 p_userid,
1575 sysdate,
1576 p_userid,
1577 sysdate,
1578 p_request_id,
1579 'BID_ITEMS',
1580 'PromisePopStartDate',
1581 s_clm_pop_start_date,
1582 'DAT',
1583 p_auc_header_id,
1584 p_bid_number,
1585 s_line_number,
1586 g_exp_date,
1587 'LINENUM',
1588 --s_document_disp_line_number,
1589 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
1590 s_worksheet_name,
1591 s_worksheet_sequence_number,
1592 s_entity_message_code)
1593 --CLM Bug : 10212430 : POP Start date should be less than current date.
1594 WHEN p_blanket = 'N'
1595 AND ( s_promised_date is null AND
1596 (s_clm_pop_start_date is not null AND s_clm_pop_start_date < s_current_date)
1597 )
1598 AND p_two_part_tech_surrogate_flag = 'N'
1599 THEN
1600 INTO pon_interface_errors
1601 (INTERFACE_TYPE,
1602 COLUMN_NAME,
1603 TABLE_NAME,
1604 BATCH_ID,
1605 INTERFACE_LINE_ID,
1606 ERROR_MESSAGE_NAME,
1607 CREATED_BY,
1608 CREATION_DATE,
1609 LAST_UPDATED_BY,
1610 LAST_UPDATE_DATE,
1611 REQUEST_ID,
1612 ENTITY_TYPE,
1613 ENTITY_ATTR_NAME,
1614 ERROR_VALUE_DATE,
1615 ERROR_VALUE_DATATYPE,
1616 AUCTION_HEADER_ID,
1617 BID_NUMBER,
1618 LINE_NUMBER,
1619 EXPIRATION_DATE,
1620 TOKEN1_NAME,
1621 TOKEN1_VALUE,
1622 WORKSHEET_NAME,
1623 WORKSHEET_SEQUENCE_NUMBER,
1624 ENTITY_MESSAGE_CODE)
1625 VALUES
1626 (p_interface_type,
1627 fnd_message.get_string('PON', 'PON_CLM_PROMISE_POP_START_DATE'),
1628 'PON_BID_ITEM_PRICES',
1629 p_batch_id,
1630 s_interface_line_id,
1631 'PON_BID_POP_START_BEF_TODAY',
1632 p_userid,
1633 sysdate,
1634 p_userid,
1635 sysdate,
1636 p_request_id,
1637 'BID_ITEMS',
1638 'PromisePopStartDate',
1639 s_clm_pop_start_date,
1640 'DAT',
1641 p_auc_header_id,
1642 p_bid_number,
1643 s_line_number,
1644 g_exp_date,
1645 'LINE_NUM',
1646 --s_document_disp_line_number,
1647 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
1648 s_worksheet_name,
1649 s_worksheet_sequence_number,
1650 s_entity_message_code)
1651 --CLM Bug : 10212430 : POP End date should be less than current date.
1652 WHEN p_blanket = 'N'
1653 AND ( s_promised_date is null AND
1654 (s_clm_pop_end_date is not null AND s_clm_pop_end_date < s_current_date)
1655 )
1656 AND p_two_part_tech_surrogate_flag = 'N'
1657 THEN
1658 INTO pon_interface_errors
1659 (INTERFACE_TYPE,
1660 COLUMN_NAME,
1661 TABLE_NAME,
1662 BATCH_ID,
1663 INTERFACE_LINE_ID,
1664 ERROR_MESSAGE_NAME,
1665 CREATED_BY,
1666 CREATION_DATE,
1667 LAST_UPDATED_BY,
1668 LAST_UPDATE_DATE,
1669 REQUEST_ID,
1670 ENTITY_TYPE,
1671 ENTITY_ATTR_NAME,
1672 ERROR_VALUE_DATE,
1673 ERROR_VALUE_DATATYPE,
1674 AUCTION_HEADER_ID,
1675 BID_NUMBER,
1676 LINE_NUMBER,
1677 EXPIRATION_DATE,
1678 TOKEN1_NAME,
1679 TOKEN1_VALUE,
1680 WORKSHEET_NAME,
1681 WORKSHEET_SEQUENCE_NUMBER,
1682 ENTITY_MESSAGE_CODE)
1683 VALUES
1684 (p_interface_type,
1685 fnd_message.get_string('PON', 'PON_CLM_PROMISE_POP_END_DATE'),
1686 'PON_BID_ITEM_PRICES',
1687 p_batch_id,
1688 s_interface_line_id,
1689 'PON_BID_POP_END_BEF_TODAY',
1690 p_userid,
1691 sysdate,
1692 p_userid,
1693 sysdate,
1694 p_request_id,
1695 'BID_ITEMS',
1696 'PromisePopEndDate',
1697 s_clm_pop_end_date,
1698 'DAT',
1699 p_auc_header_id,
1700 p_bid_number,
1701 s_line_number,
1702 g_exp_date,
1703 'LINE_NUM',
1704 --s_document_disp_line_number,
1705 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
1706 s_worksheet_name,
1707 s_worksheet_sequence_number,
1708 s_entity_message_code)
1709
1710 -- EVENT BASED DELIVERY PROJECT
1711 -- Promised Period should be positive.
1712 WHEN p_blanket = 'N'
1713 AND s_clm_del_event is not null
1714 AND s_promised_period is not null
1715 AND s_promised_period <= 0
1716 THEN
1717 INTO pon_interface_errors
1718 (INTERFACE_TYPE,
1719 COLUMN_NAME,
1720 TABLE_NAME,
1721 BATCH_ID,
1722 INTERFACE_LINE_ID,
1723 ERROR_MESSAGE_NAME,
1724 CREATED_BY,
1725 CREATION_DATE,
1726 LAST_UPDATED_BY,
1727 LAST_UPDATE_DATE,
1728 REQUEST_ID,
1729 ENTITY_TYPE,
1730 ENTITY_ATTR_NAME,
1731 ERROR_VALUE_NUMBER,
1732 ERROR_VALUE_DATATYPE,
1733 AUCTION_HEADER_ID,
1734 BID_NUMBER,
1735 LINE_NUMBER,
1736 EXPIRATION_DATE,
1737 TOKEN1_NAME,
1738 TOKEN1_VALUE,
1739 WORKSHEET_NAME,
1740 WORKSHEET_SEQUENCE_NUMBER,
1741 ENTITY_MESSAGE_CODE)
1742 VALUES
1743 (p_interface_type,
1744 fnd_message.get_string('PON', 'PON_CLM_PROMISE_PERIOD'),
1745 'PON_BID_ITEM_PRICES',
1746 p_batch_id,
1747 s_interface_line_id,
1748 'PON_BID_INV_PERIOD',
1749 p_userid,
1750 sysdate,
1751 p_userid,
1752 sysdate,
1753 p_request_id,
1754 'BID_ITEMS',
1755 'PromisePeriod',
1756 s_promised_period,
1757 'NUM',
1758 p_auc_header_id,
1759 p_bid_number,
1760 s_line_number,
1761 g_exp_date,
1762 'LINENUM',
1763 --s_document_disp_line_number,
1764 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
1765 s_worksheet_name,
1766 s_worksheet_sequence_number,
1767 s_entity_message_code)
1768
1769 -- Promised POP Duration should be positive.
1770 WHEN p_blanket = 'N'
1771 AND s_clm_del_event is not null
1772 AND s_promised_pop_duration is not null
1773 AND s_promised_pop_duration <= 0
1774 THEN
1775 INTO pon_interface_errors
1776 (INTERFACE_TYPE,
1777 COLUMN_NAME,
1778 TABLE_NAME,
1779 BATCH_ID,
1780 INTERFACE_LINE_ID,
1781 ERROR_MESSAGE_NAME,
1782 CREATED_BY,
1783 CREATION_DATE,
1784 LAST_UPDATED_BY,
1785 LAST_UPDATE_DATE,
1786 REQUEST_ID,
1787 ENTITY_TYPE,
1788 ENTITY_ATTR_NAME,
1789 ERROR_VALUE_NUMBER,
1790 ERROR_VALUE_DATATYPE,
1794 EXPIRATION_DATE,
1791 AUCTION_HEADER_ID,
1792 BID_NUMBER,
1793 LINE_NUMBER,
1795 TOKEN1_NAME,
1796 TOKEN1_VALUE,
1797 WORKSHEET_NAME,
1798 WORKSHEET_SEQUENCE_NUMBER,
1799 ENTITY_MESSAGE_CODE)
1800 VALUES
1801 (p_interface_type,
1802 fnd_message.get_string('PON', 'PON_CLM_PROMISE_PERIOD'),
1803 'PON_BID_ITEM_PRICES',
1804 p_batch_id,
1805 s_interface_line_id,
1806 'PON_BID_INV_POP_DUR',
1807 p_userid,
1808 sysdate,
1809 p_userid,
1810 sysdate,
1811 p_request_id,
1812 'BID_ITEMS',
1813 'PromisePOPDuration',
1814 s_promised_pop_duration,
1815 'NUM',
1816 p_auc_header_id,
1817 p_bid_number,
1818 s_line_number,
1819 g_exp_date,
1820 'LINENUM',
1821 --s_document_disp_line_number,
1822 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
1823 s_worksheet_name,
1824 s_worksheet_sequence_number,
1825 s_entity_message_code)
1826
1827 -- po_bid_min_rel_amount should not be negative
1828 WHEN p_blanket = 'Y' AND s_po_bid_min_rel_amount < 0 THEN
1829 INTO pon_interface_errors
1830 (INTERFACE_TYPE,
1831 COLUMN_NAME,
1832 TABLE_NAME,
1833 BATCH_ID,
1834 INTERFACE_LINE_ID,
1835 ERROR_MESSAGE_NAME,
1836 CREATED_BY,
1837 CREATION_DATE,
1838 LAST_UPDATED_BY,
1839 LAST_UPDATE_DATE,
1840 REQUEST_ID,
1841 ENTITY_TYPE,
1842 ENTITY_ATTR_NAME,
1843 ERROR_VALUE_NUMBER,
1844 ERROR_VALUE_DATATYPE,
1845 AUCTION_HEADER_ID,
1846 BID_NUMBER,
1847 LINE_NUMBER,
1848 EXPIRATION_DATE,
1849 TOKEN1_NAME,
1850 TOKEN1_VALUE,
1851 WORKSHEET_NAME,
1852 WORKSHEET_SEQUENCE_NUMBER,
1853 ENTITY_MESSAGE_CODE)
1854 VALUES
1855 (p_interface_type,
1856 fnd_message.get_string('PON', 'PON_AUC_BID_MIN_REL_AMOUNT' || p_suffix),
1857 'PON_BID_ITEM_PRICES',
1858 p_batch_id,
1859 s_interface_line_id,
1860 'PON_AUC_MINREL_POS_ZERO' || p_suffix,
1861 p_userid,
1862 sysdate,
1863 p_userid,
1864 sysdate,
1865 p_request_id,
1866 'BID_ITEMS',
1867 'PoBidMinRelAmount',
1868 s_po_bid_min_rel_amount,
1869 'NUM',
1870 p_auc_header_id,
1871 p_bid_number,
1872 s_line_number,
1873 g_exp_date,
1874 'LINENUMBER',
1875 --s_document_disp_line_number,
1876 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
1877 s_worksheet_name,
1878 s_worksheet_sequence_number,
1879 s_entity_message_code)
1880
1881 -- po_bid_min_rel_amount should not exceed currency precision
1882 WHEN p_blanket = 'Y' AND validate_currency_precision(
1883 s_po_bid_min_rel_amount, p_amt_precision) = 'F' THEN
1884 INTO pon_interface_errors
1885 (INTERFACE_TYPE,
1886 COLUMN_NAME,
1887 TABLE_NAME,
1888 BATCH_ID,
1889 INTERFACE_LINE_ID,
1890 ERROR_MESSAGE_NAME,
1891 CREATED_BY,
1892 CREATION_DATE,
1893 LAST_UPDATED_BY,
1894 LAST_UPDATE_DATE,
1895 REQUEST_ID,
1896 ENTITY_TYPE,
1897 ENTITY_ATTR_NAME,
1898 ERROR_VALUE_NUMBER,
1899 ERROR_VALUE_DATATYPE,
1900 AUCTION_HEADER_ID,
1901 BID_NUMBER,
1902 LINE_NUMBER,
1903 EXPIRATION_DATE,
1904 TOKEN1_NAME,
1905 TOKEN1_VALUE,
1906 WORKSHEET_NAME,
1907 WORKSHEET_SEQUENCE_NUMBER,
1908 ENTITY_MESSAGE_CODE)
1909 VALUES
1910 (p_interface_type,
1911 fnd_message.get_string('PON', 'PON_AUC_BID_MIN_REL_AMOUNT' || p_suffix),
1912 'PON_BID_ITEM_PRICES',
1913 p_batch_id,
1914 s_interface_line_id,
1915 'PON_AUC_MINREL_MIN_PREC' || p_suffix,
1916 p_userid,
1917 sysdate,
1918 p_userid,
1919 sysdate,
1920 p_request_id,
1921 'BID_ITEMS',
1922 'PoBidMinRelAmount',
1923 s_po_bid_min_rel_amount,
1924 'NUM',
1925 p_auc_header_id,
1926 p_bid_number,
1927 s_line_number,
1928 g_exp_date,
1929 'LINENUMBER',
1930 --s_document_disp_line_number,
1931 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
1932 s_worksheet_name,
1933 s_worksheet_sequence_number,
1934 s_entity_message_code)
1935
1936 -- bid_currency_unit_price should be positive
1937 -- bid_currency_unit_price only validated when header disp_pf_flag is Y
1938 -- Suppress error if spreadsheet case and no price factors
1939 WHEN p_header_disp_pf = 'Y' AND s_bid_currency_unit_price <= 0
1940 AND (p_spreadsheet = g_online_mode OR s_display_price_factors_flag = 'Y')
1941 -- added by Allen Yang for Surrogate Bid 2008/09/03
1942 ---------------------------------------------------
1943 AND p_two_part_tech_surrogate_flag = 'N'
1944 ---------------------------------------------------
1945 THEN
1946 INTO pon_interface_errors
1947 (INTERFACE_TYPE,
1948 COLUMN_NAME,
1949 TABLE_NAME,
1950 BATCH_ID,
1951 INTERFACE_LINE_ID,
1952 ERROR_MESSAGE_NAME,
1953 CREATED_BY,
1954 CREATION_DATE,
1955 LAST_UPDATED_BY,
1956 LAST_UPDATE_DATE,
1957 REQUEST_ID,
1958 ENTITY_TYPE,
1959 ENTITY_ATTR_NAME,
1960 ERROR_VALUE_NUMBER,
1961 ERROR_VALUE_DATATYPE,
1962 AUCTION_HEADER_ID,
1963 BID_NUMBER,
1964 LINE_NUMBER,
1965 EXPIRATION_DATE,
1966 TOKEN1_NAME,
1967 TOKEN1_VALUE,
1968 WORKSHEET_NAME,
1969 WORKSHEET_SEQUENCE_NUMBER,
1970 ENTITY_MESSAGE_CODE)
1971 VALUES
1972 (p_interface_type,
1973 fnd_message.get_string('PON', 'PON_AUCTION_ITEM_PRICE' || p_suffix),
1974 'PON_BID_ITEM_PRICES',
1975 p_batch_id,
1976 s_interface_line_id,
1977 'PON_LINEPRICE_MUST_BE_POS',
1978 p_userid,
1979 sysdate,
1980 p_userid,
1981 sysdate,
1982 p_request_id,
1983 'BID_ITEMS',
1984 'BidCurrencyUnitPrice',
1985 s_bid_currency_unit_price,
1986 'NUM',
1987 p_auc_header_id,
1988 p_bid_number,
1989 s_line_number,
1990 g_exp_date,
1991 'LINENUMBER',
1992 --s_document_disp_line_number,
1993 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
1994 s_worksheet_name,
1995 s_worksheet_sequence_number,
1996 s_entity_message_code)
1997
1998 -- bid_currency_unit_price precision should not exceed price precision
1999 -- as part of bug 14657112, removed the condition checking
2000 -- whether price factors are displayed.
2001 -- Precision should be checked in any case
2002 WHEN validate_price_precision(
2003 s_bid_currency_unit_price, p_price_precision) = 'F'
2004 -- added by Allen Yang for Surrogate Bid 2008/09/03
2005 ---------------------------------------------------
2006 AND p_two_part_tech_surrogate_flag = 'N'
2007 ---------------------------------------------------
2008 THEN
2009 INTO pon_interface_errors
2010 (INTERFACE_TYPE,
2011 COLUMN_NAME,
2012 TABLE_NAME,
2013 BATCH_ID,
2014 INTERFACE_LINE_ID,
2015 ERROR_MESSAGE_NAME,
2016 CREATED_BY,
2017 CREATION_DATE,
2018 LAST_UPDATED_BY,
2019 LAST_UPDATE_DATE,
2020 REQUEST_ID,
2021 ENTITY_TYPE,
2022 ENTITY_ATTR_NAME,
2023 ERROR_VALUE_NUMBER,
2024 ERROR_VALUE_DATATYPE,
2025 AUCTION_HEADER_ID,
2026 BID_NUMBER,
2027 LINE_NUMBER,
2028 EXPIRATION_DATE,
2029 TOKEN1_NAME,
2030 TOKEN1_VALUE,
2031 WORKSHEET_NAME,
2032 WORKSHEET_SEQUENCE_NUMBER,
2033 ENTITY_MESSAGE_CODE)
2034 VALUES
2035 (p_interface_type,
2036 fnd_message.get_string('PON', 'PON_AUCTION_ITEM_PRICE' || p_suffix),
2037 'PON_BID_ITEM_PRICES',
2038 p_batch_id,
2039 s_interface_line_id,
2040 'PON_LINEPRICE_MIN_PREC' || p_suffix,
2041 p_userid,
2042 sysdate,
2043 p_userid,
2044 sysdate,
2045 p_request_id,
2046 'BID_ITEMS',
2047 'BidCurrencyUnitPrice',
2048 s_bid_currency_unit_price,
2049 'NUM',
2050 p_auc_header_id,
2051 p_bid_number,
2052 s_line_number,
2053 g_exp_date,
2054 'LINENUMBER',
2055 --s_document_disp_line_number,
2056 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
2057 s_worksheet_name,
2058 s_worksheet_sequence_number,
2059 s_entity_message_code)
2060
2061 -- If the line has price factors, the line price is required
2062 WHEN s_display_price_factors_flag = 'Y'
2063 AND s_bid_currency_unit_price IS null
2064 -- added by Allen Yang for Surrogate Bid 2008/09/03
2065 ---------------------------------------------------
2066 AND p_two_part_tech_surrogate_flag = 'N'
2067 ---------------------------------------------------
2068 THEN
2069 INTO pon_interface_errors
2070 (INTERFACE_TYPE,
2071 COLUMN_NAME,
2072 TABLE_NAME,
2073 BATCH_ID,
2074 INTERFACE_LINE_ID,
2075 ERROR_MESSAGE_NAME,
2076 CREATED_BY,
2077 CREATION_DATE,
2078 LAST_UPDATED_BY,
2079 LAST_UPDATE_DATE,
2080 REQUEST_ID,
2081 ENTITY_TYPE,
2082 ENTITY_ATTR_NAME,
2083 ERROR_VALUE_DATATYPE,
2084 AUCTION_HEADER_ID,
2085 BID_NUMBER,
2086 LINE_NUMBER,
2087 EXPIRATION_DATE,
2088 TOKEN1_NAME,
2089 TOKEN1_VALUE,
2090 WORKSHEET_NAME,
2091 WORKSHEET_SEQUENCE_NUMBER,
2092 ENTITY_MESSAGE_CODE)
2093 VALUES
2094 (p_interface_type,
2095 fnd_message.get_string('PON', 'PON_AUCTS_BID_PRICE' || p_suffix),
2096 'PON_BID_ITEM_PRICES',
2097 p_batch_id,
2098 s_interface_line_id,
2099 'PON_BID_PRICE_REQUIRED' || p_suffix,
2100 p_userid,
2101 sysdate,
2102 p_userid,
2103 sysdate,
2104 p_request_id,
2105 'BID_ITEMS',
2106 'BidCurrencyUnitPrice',
2107 'TXT',
2108 p_auc_header_id,
2109 p_bid_number,
2110 s_line_number,
2111 g_exp_date,
2112 'LINENUMBER',
2113 --s_document_disp_line_number,
2114 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
2115 s_worksheet_name,
2116 s_worksheet_sequence_number,
2117 s_entity_message_code)
2118 SELECT
2119 sysdate s_current_date,
2120 decode(al.price_disabled_flag, 'Y', 'N',
2121 decode(bl.display_price_factors_flag, 'Y', 'N',
2122 Decode(Nvl(al.clm_info_flag,'N'),'Y','N',-- added for clm clin/slin proj
2123 decode(al.group_type, 'GROUP', 'N',
2124 Decode(Nvl(al.clm_cost_constraint,'X'),'NSP','N','NC','N','Y'))))) s_price_editable, -- CLM QA bug : 9835426 : If cost constraint is NC or NSP, price is not editable
2125 decode(p_full_qty_reqd, 'Y', 'N',
2126 decode(al.quantity_disabled_flag, 'Y', 'N',
2127 decode(al.group_type, 'GROUP', 'N',
2128 Decode(Nvl(al.clm_info_flag,'N'),'Y','N', -- added for clm clin/slin proj
2129 decode(al.order_type_lookup_code, 'AMOUNT', 'N',
2130 'RATE', 'N', 'FIXED PRICE', 'N', 'Y'))))) s_qty_editable,
2131 bl.quantity s_bid_quantity,
2132 bl.promised_date s_promised_date,
2133 bl.PROMISE_POP_START_DATE s_clm_pop_start_date, --CLM bug : 10212430 : POP Start date.
2134 bl.PROMISE_POP_END_DATE s_clm_pop_end_date, --CLM bug : 10212430 : POP End date.
2135 -- Event Based Delivery Project
2136 al.CLM_DELIVERY_EVENT_CODE s_clm_del_event,
2137 bl.CLM_PROMISE_PERIOD s_promised_period,
2138 bl.CLM_PROMISE_POP_DURATION s_promised_pop_duration,
2139 bl.bid_currency_unit_price s_bid_currency_unit_price,
2140 bl.price s_price,
2141 bl.po_bid_min_rel_amount s_po_bid_min_rel_amount,
2142 bl.proxy_bid_limit_price s_proxy_bid_limit_price,
2143 bl.display_price_factors_flag s_display_price_factors_flag,
2144 al.is_need_by_date_scored s_need_by_date_scored,
2145 al.quantity s_auc_quantity,
2146 bl.line_number s_line_number,
2147 decode(p_spreadsheet, g_xml_upload_mode, bl.interface_line_id,
2148 g_txt_upload_mode, bl.interface_line_id,
2149 to_number(null)) s_interface_line_id,
2150 al.document_disp_line_number s_document_disp_line_number,
2151 decode(p_spreadsheet, g_xml_upload_mode, bl.worksheet_name, to_char(null)) s_worksheet_name,
2152 decode(p_spreadsheet, g_xml_upload_mode, bl.worksheet_sequence_number, to_number(null)) s_worksheet_sequence_number,
2153 decode(p_spreadsheet, g_xml_upload_mode, 'PON_AUC_ITEMS', to_char(null)) s_entity_message_code,
2154 al.line_num_display s_clm_line_num_display
2155 FROM pon_auction_item_prices_all al
2156 , pon_bid_item_prices bl
2157 , pon_bid_headers pbh
2158 WHERE al.auction_header_id = p_auc_header_id
2159 AND bl.bid_number = p_bid_number
2160 AND al.line_number = bl.line_number
2161 AND bl.is_changed_line_flag = 'Y'
2162 AND (p_spreadsheet = g_online_mode OR bl.batch_id = p_batch_id)
2163 AND pbh.bid_number = bl.bid_number
2164 AND (pbh.SURROG_BID_FLAG = 'Y' OR nvl(al.close_bidding_date, sysdate+1) > sysdate);
2165
2166
2167 -- STEP 2: pre-release 12 validations 14-26
2168 INSERT ALL
2169
2170 -- bid_currency_price should be positive
2171 WHEN s_bid_currency_price <= 0
2172 -- added by Allen Yang for Surrogate Bid 2008/09/03
2173 ---------------------------------------------------
2174 AND p_two_part_tech_surrogate_flag = 'N'
2175 ---------------------------------------------------
2176 THEN
2177 INTO pon_interface_errors
2178 (INTERFACE_TYPE,
2179 COLUMN_NAME,
2180 TABLE_NAME,
2181 BATCH_ID,
2182 INTERFACE_LINE_ID,
2183 ERROR_MESSAGE_NAME,
2184 CREATED_BY,
2185 CREATION_DATE,
2186 LAST_UPDATED_BY,
2187 LAST_UPDATE_DATE,
2188 REQUEST_ID,
2189 ENTITY_TYPE,
2190 ENTITY_ATTR_NAME,
2191 ERROR_VALUE_NUMBER,
2192 ERROR_VALUE_DATATYPE,
2193 AUCTION_HEADER_ID,
2194 BID_NUMBER,
2195 LINE_NUMBER,
2196 EXPIRATION_DATE,
2197 TOKEN1_NAME,
2198 TOKEN1_VALUE,
2199 WORKSHEET_NAME,
2200 WORKSHEET_SEQUENCE_NUMBER,
2201 ENTITY_MESSAGE_CODE)
2202 VALUES
2203 (p_interface_type,
2204 fnd_message.get_string('PON', 'PON_AUCTS_BID_PRICE' || p_suffix),
2205 'PON_BID_ITEM_PRICES',
2206 p_batch_id,
2207 s_interface_line_id,
2208 decode(p_trans_view, 'N',
2209 'PON_AUC_BIDPRICE_MUST_BE_POS' || p_suffix,
2210 decode(s_display_price_factors_flag, 'Y',
2211 'PON_LINE_BIDPRICE_INVALID_2' || p_suffix,
2212 'PON_AUC_BIDPRICE_MUST_BE_POS' || p_suffix)),
2213 p_userid,
2214 sysdate,
2215 p_userid,
2216 sysdate,
2217 p_request_id,
2218 'BID_ITEMS',
2219 'BidCurrencyPrice',
2220 s_bid_currency_price,
2221 'NUM',
2222 p_auc_header_id,
2223 p_bid_number,
2224 s_line_number,
2225 g_exp_date,
2226 'LINENUMBER',
2227 s_document_disp_line_number,
2228 s_worksheet_name,
2229 s_worksheet_sequence_number,
2230 s_entity_message_code)
2231
2232 -- bid_currency_price precision should not exceed price precision
2233 WHEN
2234 -- added by Allen Yang for Surrogate Bid 2008/09/03
2235 ---------------------------------------------------
2236 p_two_part_tech_surrogate_flag = 'N' AND
2237 ---------------------------------------------------
2238 /*For clm bug : 10136754 : For federal : Only goods line types should be validated against solicitation precision */
2239 ( (( nvl(g_is_fed,'N')='Y' AND s_order_type_lookup_code = 'QUANTITY') OR nvl(g_is_fed,'N')='N') AND
2240 validate_price_precision(s_bid_currency_price, p_price_precision) = 'F')
2241 THEN
2242 INTO pon_interface_errors
2243 (INTERFACE_TYPE,
2244 COLUMN_NAME,
2245 TABLE_NAME,
2246 BATCH_ID,
2247 INTERFACE_LINE_ID,
2248 ERROR_MESSAGE_NAME,
2249 CREATED_BY,
2250 CREATION_DATE,
2251 LAST_UPDATED_BY,
2252 LAST_UPDATE_DATE,
2253 REQUEST_ID,
2254 ENTITY_TYPE,
2255 ENTITY_ATTR_NAME,
2256 ERROR_VALUE_NUMBER,
2257 ERROR_VALUE_DATATYPE,
2258 AUCTION_HEADER_ID,
2259 BID_NUMBER,
2260 LINE_NUMBER,
2261 EXPIRATION_DATE,
2262 TOKEN1_NAME,
2263 TOKEN1_VALUE,
2264 WORKSHEET_NAME,
2265 WORKSHEET_SEQUENCE_NUMBER,
2266 ENTITY_MESSAGE_CODE)
2267 VALUES
2268 (p_interface_type,
2269 fnd_message.get_string('PON', 'PON_AUCTS_BID_PRICE' || p_suffix),
2270 'PON_BID_ITEM_PRICES',
2271 p_batch_id,
2272 s_interface_line_id,
2273 'PON_AUCTS_BIDPRICE_MIN_PREC' || p_suffix,
2274 p_userid,
2275 sysdate,
2276 p_userid,
2277 sysdate,
2278 p_request_id,
2279 'BID_ITEMS',
2280 'BidCurrencyPrice',
2281 s_bid_currency_price,
2282 'NUM',
2283 p_auc_header_id,
2284 p_bid_number,
2285 s_line_number,
2286 g_exp_date,
2287 'LINENUMBER',
2288 --s_document_disp_line_number,
2289 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
2290 s_worksheet_name,
2291 s_worksheet_sequence_number,
2292 s_entity_message_code)
2293
2294 -- bid_currency_price precision should not exceed price precision
2295 WHEN
2296 -- added by Allen Yang for Surrogate Bid 2008/09/03
2297 ---------------------------------------------------
2298 p_two_part_tech_surrogate_flag = 'N' AND
2299 ---------------------------------------------------
2300 /*For clm bug : 10136754 : For federal : Only goods line types should be validated against solicitation precision
2301 * Amount/Firm Fixed price lines should be validated against fnd precision.
2302 */
2303 ( (nvl(g_is_fed,'N')='Y' AND s_order_type_lookup_code <> 'QUANTITY') AND
2304 validate_price_precision(s_bid_currency_price, p_amt_precision) = 'F')
2305 THEN
2306 INTO pon_interface_errors
2307 (INTERFACE_TYPE,
2308 COLUMN_NAME,
2309 TABLE_NAME,
2310 BATCH_ID,
2311 INTERFACE_LINE_ID,
2312 ERROR_MESSAGE_NAME,
2313 CREATED_BY,
2314 CREATION_DATE,
2315 LAST_UPDATED_BY,
2316 LAST_UPDATE_DATE,
2317 REQUEST_ID,
2318 ENTITY_TYPE,
2319 ENTITY_ATTR_NAME,
2320 ERROR_VALUE_NUMBER,
2321 ERROR_VALUE_DATATYPE,
2322 AUCTION_HEADER_ID,
2323 BID_NUMBER,
2324 LINE_NUMBER,
2325 EXPIRATION_DATE,
2326 TOKEN1_NAME,
2327 TOKEN1_VALUE,
2328 WORKSHEET_NAME,
2329 WORKSHEET_SEQUENCE_NUMBER,
2330 ENTITY_MESSAGE_CODE)
2331 VALUES
2332 (p_interface_type,
2333 fnd_message.get_string('PON', 'PON_AUCTS_BID_PRICE' || p_suffix),
2334 'PON_BID_ITEM_PRICES',
2335 p_batch_id,
2336 s_interface_line_id,
2337 'PON_AUCTS_BIDPRICE_MIN_PREC' || p_suffix,
2338 p_userid,
2339 sysdate,
2340 p_userid,
2341 sysdate,
2342 p_request_id,
2343 'BID_ITEMS',
2344 'BidCurrencyPrice',
2345 s_bid_currency_price,
2346 'NUM',
2347 p_auc_header_id,
2348 p_bid_number,
2349 s_line_number,
2350 g_exp_date,
2351 'LINENUMBER',
2352 --s_document_disp_line_number,
2353 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
2354 s_worksheet_name,
2355 s_worksheet_sequence_number,
2356 s_entity_message_code)
2357
2358 -- In untransformed view, bid_currency_trans_price should be positive
2359 -- since bid_currency_price is the same as bid_currency_unit_price
2360 -- Do not report the error if one will be reported for bid_currency_price
2361 WHEN p_trans_view = 'Y' AND s_bid_currency_price > 0
2362 AND s_bid_currency_trans_price <= 0
2363 -- added by Allen Yang for Surrogate Bid 2008/09/03
2364 ---------------------------------------------------
2365 AND p_two_part_tech_surrogate_flag = 'N'
2366 ---------------------------------------------------
2367 THEN
2368 INTO pon_interface_errors
2369 (INTERFACE_TYPE,
2370 COLUMN_NAME,
2371 TABLE_NAME,
2372 BATCH_ID,
2373 INTERFACE_LINE_ID,
2374 ERROR_MESSAGE_NAME,
2375 CREATED_BY,
2376 CREATION_DATE,
2377 LAST_UPDATED_BY,
2378 LAST_UPDATE_DATE,
2379 REQUEST_ID,
2380 ENTITY_TYPE,
2381 ENTITY_ATTR_NAME,
2382 ERROR_VALUE_NUMBER,
2383 ERROR_VALUE_DATATYPE,
2384 AUCTION_HEADER_ID,
2385 BID_NUMBER,
2386 LINE_NUMBER,
2387 EXPIRATION_DATE,
2388 TOKEN1_NAME,
2389 TOKEN1_VALUE,
2390 WORKSHEET_NAME,
2391 WORKSHEET_SEQUENCE_NUMBER,
2392 ENTITY_MESSAGE_CODE)
2393 VALUES
2394 (p_interface_type,
2395 fnd_message.get_string('PON', 'PON_AUCTS_BID_PRICE' || p_suffix),
2396 'PON_BID_ITEM_PRICES',
2397 p_batch_id,
2398 s_interface_line_id,
2399 'PON_LINE_BIDPRICE_INVALID_1' || p_suffix,
2400 p_userid,
2401 sysdate,
2402 p_userid,
2403 sysdate,
2404 p_request_id,
2405 'BID_ITEMS',
2406 'BidCurrencyTransPrice',
2407 s_bid_currency_trans_price,
2408 'NUM',
2409 p_auc_header_id,
2410 p_bid_number,
2411 s_line_number,
2412 g_exp_date,
2413 'LINENUMBER',
2414 --s_document_disp_line_number,
2415 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
2416 s_worksheet_name,
2417 s_worksheet_sequence_number,
2418 s_entity_message_code)
2419
2420 -- bid_currency_limit_price should be positive
2421 WHEN s_bid_currency_limit_price <= 0
2422 -- added by Allen Yang for Surrogate Bid 2008/09/03
2423 ---------------------------------------------------
2424 AND p_two_part_tech_surrogate_flag = 'N'
2425 ---------------------------------------------------
2426 THEN
2427 INTO pon_interface_errors
2428 (INTERFACE_TYPE,
2429 COLUMN_NAME,
2430 TABLE_NAME,
2431 BATCH_ID,
2432 INTERFACE_LINE_ID,
2433 ERROR_MESSAGE_NAME,
2434 CREATED_BY,
2435 CREATION_DATE,
2436 LAST_UPDATED_BY,
2437 LAST_UPDATE_DATE,
2438 REQUEST_ID,
2439 ENTITY_TYPE,
2440 ENTITY_ATTR_NAME,
2441 ERROR_VALUE_NUMBER,
2442 ERROR_VALUE_DATATYPE,
2443 AUCTION_HEADER_ID,
2444 BID_NUMBER,
2445 LINE_NUMBER,
2446 EXPIRATION_DATE,
2447 TOKEN1_NAME,
2448 TOKEN1_VALUE,
2449 WORKSHEET_NAME,
2450 WORKSHEET_SEQUENCE_NUMBER,
2451 ENTITY_MESSAGE_CODE)
2452 VALUES
2453 (p_interface_type,
2454 decode(p_spreadsheet,
2455 g_xml_upload_mode,
2456 fnd_message.get_string('PON', 'PON_AUCTS_PROXY_MIN'),
2457 fnd_message.get_string('PON', 'PON_AUCTS_MIN_BID_PRICE')),
2458 'PON_BID_ITEM_PRICES',
2459 p_batch_id,
2460 s_interface_line_id,
2461 'PON_AUC_LIMPRICE_MUST_BE_POS',
2462 p_userid,
2463 sysdate,
2464 p_userid,
2465 sysdate,
2466 p_request_id,
2467 'BID_ITEMS',
2468 'BidCurrencyLimitPrice',
2469 s_bid_currency_limit_price,
2470 'NUM',
2471 p_auc_header_id,
2472 p_bid_number,
2473 s_line_number,
2474 g_exp_date,
2475 'LINENUMBER',
2476 --s_document_disp_line_number,
2477 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
2478 s_worksheet_name,
2479 s_worksheet_sequence_number,
2480 s_entity_message_code)
2481
2485 ---------------------------------------------------
2482 -- bid_currency_limit_price precision should not exceed price precision
2483 WHEN
2484 -- added by Allen Yang for Surrogate Bid 2008/09/03
2486 p_two_part_tech_surrogate_flag = 'N' AND
2487 ---------------------------------------------------
2488 validate_price_precision(s_bid_currency_limit_price, p_price_precision) = 'F' THEN
2489 INTO pon_interface_errors
2490 (INTERFACE_TYPE,
2491 COLUMN_NAME,
2492 TABLE_NAME,
2493 BATCH_ID,
2494 INTERFACE_LINE_ID,
2495 ERROR_MESSAGE_NAME,
2496 CREATED_BY,
2497 CREATION_DATE,
2498 LAST_UPDATED_BY,
2499 LAST_UPDATE_DATE,
2500 REQUEST_ID,
2501 ENTITY_TYPE,
2502 ENTITY_ATTR_NAME,
2503 ERROR_VALUE_NUMBER,
2504 ERROR_VALUE_DATATYPE,
2505 AUCTION_HEADER_ID,
2506 BID_NUMBER,
2507 LINE_NUMBER,
2508 EXPIRATION_DATE,
2509 TOKEN1_NAME,
2510 TOKEN1_VALUE,
2511 WORKSHEET_NAME,
2512 WORKSHEET_SEQUENCE_NUMBER,
2513 ENTITY_MESSAGE_CODE)
2514 VALUES
2515 (p_interface_type,
2516 decode(p_spreadsheet,
2517 g_xml_upload_mode,
2518 fnd_message.get_string('PON', 'PON_AUCTS_PROXY_MIN'),
2519 fnd_message.get_string('PON', 'PON_AUCTS_MIN_BID_PRICE')),
2520 'PON_BID_ITEM_PRICES',
2521 p_batch_id,
2522 s_interface_line_id,
2523 'PON_AUCTS_LIMIT_MIN_PREC' || p_suffix,
2524 p_userid,
2525 sysdate,
2526 p_userid,
2527 sysdate,
2528 p_request_id,
2529 'BID_ITEMS',
2530 'BidCurrencyLimitPrice',
2531 s_bid_currency_limit_price,
2532 'NUM',
2533 p_auc_header_id,
2534 p_bid_number,
2535 s_line_number,
2536 g_exp_date,
2537 'LINENUMBER',
2538 --s_document_disp_line_number,
2539 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
2540 s_worksheet_name,
2541 s_worksheet_sequence_number,
2542 s_entity_message_code)
2543
2544 -- price should be lower then the line start price.
2545 -- Will not apply if price is disabled for this line
2546 -- bug 5701482
2547 -- need use the bid currency price and do round up
2548 -- to precision to avoid the small gap caused by
2549 -- currency conversion
2550 -- If the precision is ANY, round up to 10 decimal points
2551 -- bug 12682523
2552 -- using cost factors to transform s_enforced_bid_start_price inaddition to applying rate for currency conversion before validation
2553 WHEN s_price_disabled_flag = 'N' AND
2554 s_bid_currency_price > ROUND(decode(p_trans_view, 'Y', s_enforced_bid_start_price,
2555 PON_TRANSFORM_BIDDING_PKG.untransform_one_price(p_auc_header_id,
2556 s_line_number,
2557 s_enforced_bid_start_price,
2558 s_auc_quantity,
2559 p_tpid,
2560 p_vensid
2561 )
2562 )*s_rate, decode(s_precision, 10000, 10, s_precision)
2563 )
2564
2565 -- added by Allen Yang for Surrogate Bid 2008/09/03
2566 ---------------------------------------------------
2567 AND p_two_part_tech_surrogate_flag = 'N'
2568 ---------------------------------------------------
2569 THEN
2570 INTO pon_interface_errors
2571 (INTERFACE_TYPE,
2572 COLUMN_NAME,
2573 TABLE_NAME,
2574 BATCH_ID,
2575 INTERFACE_LINE_ID,
2576 ERROR_MESSAGE_NAME,
2577 CREATED_BY,
2578 CREATION_DATE,
2579 LAST_UPDATED_BY,
2580 LAST_UPDATE_DATE,
2581 REQUEST_ID,
2582 ENTITY_TYPE,
2583 ENTITY_ATTR_NAME,
2584 ERROR_VALUE_NUMBER,
2585 ERROR_VALUE_DATATYPE,
2586 AUCTION_HEADER_ID,
2587 BID_NUMBER,
2588 LINE_NUMBER,
2589 EXPIRATION_DATE,
2590 TOKEN1_NAME,
2591 TOKEN1_VALUE,
2592 TOKEN2_NAME,
2593 TOKEN2_VALUE,
2594 TOKEN3_NAME,
2595 TOKEN3_VALUE,
2596 WORKSHEET_NAME,
2597 WORKSHEET_SEQUENCE_NUMBER,
2598 ENTITY_MESSAGE_CODE)
2599 VALUES
2600 (p_interface_type,
2601 fnd_message.get_string('PON', 'PON_AUCTS_BID_PRICE' || p_suffix),
2602 'PON_BID_ITEM_PRICES',
2603 p_batch_id,
2604 s_interface_line_id,
2605 'PON_BP_LTE_BIDSTARTPRICE' || p_suffix,
2606 p_userid,
2607 sysdate,
2608 p_userid,
2609 sysdate,
2610 p_request_id,
2611 'BID_ITEMS',
2612 'BidCurrencyPrice',
2613 s_bid_currency_price,
2614 'NUM',
2615 p_auc_header_id,
2616 p_bid_number,
2617 s_line_number,
2618 g_exp_date,
2619 'BIDPRICE',
2620 format_price(s_bid_currency_price, l_price_mask, p_price_precision),
2621 'STARTPRICE',
2622 format_price(decode(p_trans_view, 'Y',
2623 s_enforced_bid_start_price,
2624 PON_TRANSFORM_BIDDING_PKG.untransform_one_price( p_auc_header_id,
2625 s_line_number,
2626 s_enforced_bid_start_price,
2630 'LINENUMBER',
2627 s_auc_quantity,
2628 p_tpid,
2629 p_vensid)) * p_rate, l_price_mask, p_price_precision),
2631 --s_document_disp_line_number,
2632 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
2633 s_worksheet_name,
2634 s_worksheet_sequence_number,
2635 s_entity_message_code)
2636
2637 -- When rebidding, the new price must be lower than the old_price
2638 -- by the specified minimum bid decrement, if it was changed.
2639 -- Does not apply to LOT_LINEs
2640 -- Will not apply if price is disabled for this line, or negotiation
2641 -- is not price driver
2642 WHEN s_price_disabled_flag = 'N' AND p_rebid = 'Y' AND p_price_driven = 'Y'
2643 AND p_bid_decr_method <> 'BEST_PRICE'
2644 AND s_price <> s_old_price AND s_group_type <> 'LOT_LINE'
2645 AND s_price + (nvl(s_min_bid_decr,0)/p_rate) > s_old_price
2646 AND s_min_bid_decr IS NOT NULL
2647 -- added by Allen Yang for Surrogate Bid 2008/09/03
2648 ---------------------------------------------------
2649 AND p_two_part_tech_surrogate_flag = 'N'
2650 ---------------------------------------------------
2651 THEN
2652 INTO pon_interface_errors
2653 (INTERFACE_TYPE,
2654 COLUMN_NAME,
2655 TABLE_NAME,
2656 BATCH_ID,
2657 INTERFACE_LINE_ID,
2658 ERROR_MESSAGE_NAME,
2659 CREATED_BY,
2660 CREATION_DATE,
2661 LAST_UPDATED_BY,
2662 LAST_UPDATE_DATE,
2663 REQUEST_ID,
2664 ENTITY_TYPE,
2665 ENTITY_ATTR_NAME,
2666 ERROR_VALUE_NUMBER,
2667 ERROR_VALUE_DATATYPE,
2668 AUCTION_HEADER_ID,
2669 BID_NUMBER,
2670 LINE_NUMBER,
2671 EXPIRATION_DATE,
2672 TOKEN1_NAME,
2673 TOKEN1_VALUE,
2674 TOKEN2_NAME,
2675 TOKEN2_VALUE,
2676 WORKSHEET_NAME,
2677 WORKSHEET_SEQUENCE_NUMBER,
2678 ENTITY_MESSAGE_CODE
2679 )
2680 VALUES
2681 (p_interface_type,
2682 fnd_message.get_string('PON', 'PON_AUCTS_BID_PRICE' || p_suffix),
2683 'PON_BID_ITEM_PRICES',
2684 p_batch_id,
2685 s_interface_line_id,
2686 'PON_MIN_BID_DECREMENT' || p_suffix,
2687 p_userid,
2688 sysdate,
2689 p_userid,
2690 sysdate,
2691 p_request_id,
2692 'BID_ITEMS',
2693 'Price',
2694 s_price,
2695 'NUM',
2696 p_auc_header_id,
2697 p_bid_number,
2698 s_line_number,
2699 g_exp_date,
2700 'LINENUMBER',
2701 --s_document_disp_line_number,
2702 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
2703 'BIDDECREMENT',
2704 format_price(s_min_bid_decr, l_price_mask, p_price_precision) || ' '||p_bid_curr_code,
2705 s_worksheet_name,
2706 s_worksheet_sequence_number,
2707 s_entity_message_code
2708 )
2709
2710 -- When rebidding, the new price must be lower than the best_bid_price
2711 -- by the specified minimum bid decrement, if suppliers are
2712 -- supposed to reduce by best response price
2713 -- Does not apply to LOT_LINEs
2714 -- Will not apply if price is disabled for this line, or negotiation
2715 -- is not price driven
2716 WHEN s_price_disabled_flag = 'N' AND p_bid_decr_method = 'BEST_PRICE' AND p_price_driven = 'Y'
2717 AND s_group_type <> 'LOT_LINE'
2718 AND p_rebid = 'Y'
2719 AND s_auc_best_bid_price IS NOT NULL
2720 AND s_price <> s_old_price
2721 AND s_price + (nvl(s_min_bid_decr,0)/p_rate) > s_best_bid_price
2722 AND s_min_bid_decr IS NOT NULL
2723 -- added by Allen Yang for Surrogate Bid 2008/09/03
2724 ---------------------------------------------------
2725 AND p_two_part_tech_surrogate_flag = 'N'
2726 ---------------------------------------------------
2727 THEN
2728 INTO pon_interface_errors
2729 (INTERFACE_TYPE,
2730 COLUMN_NAME,
2731 TABLE_NAME,
2732 BATCH_ID,
2733 INTERFACE_LINE_ID,
2734 ERROR_MESSAGE_NAME,
2735 CREATED_BY,
2736 CREATION_DATE,
2737 LAST_UPDATED_BY,
2738 LAST_UPDATE_DATE,
2739 REQUEST_ID,
2740 ENTITY_TYPE,
2741 ENTITY_ATTR_NAME,
2742 ERROR_VALUE_NUMBER,
2743 ERROR_VALUE_DATATYPE,
2744 AUCTION_HEADER_ID,
2745 BID_NUMBER,
2746 LINE_NUMBER,
2747 EXPIRATION_DATE,
2748 TOKEN1_NAME,
2749 TOKEN1_VALUE,
2750 TOKEN2_NAME,
2751 TOKEN2_VALUE,
2752 WORKSHEET_NAME,
2753 WORKSHEET_SEQUENCE_NUMBER,
2754 ENTITY_MESSAGE_CODE
2755 )
2756 VALUES
2757 (p_interface_type,
2758 fnd_message.get_string('PON', 'PON_AUCTS_BID_PRICE' || p_suffix),
2759 'PON_BID_ITEM_PRICES',
2760 p_batch_id,
2761 s_interface_line_id,
2762 'PON_MIN_BESTBID_DECREMENT' || p_suffix,
2763 p_userid,
2764 sysdate,
2765 p_userid,
2766 sysdate,
2767 p_request_id,
2768 'BID_ITEMS',
2769 'Price',
2770 s_price,
2771 'NUM',
2772 p_auc_header_id,
2773 p_bid_number,
2774 s_line_number,
2775 g_exp_date,
2776 'LINENUMBER',
2777 --s_document_disp_line_number,
2778 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
2779 'BIDDECREMENT',
2780 format_price(s_min_bid_decr, l_price_mask, p_price_precision) || ' '||p_bid_curr_code,
2781 s_worksheet_name,
2782 s_worksheet_sequence_number,
2783 s_entity_message_code
2784 )
2785
2786 -- When rebidding, the new price must be <= old_price, if changed
2787 -- Does not apply to LOT_LINEs
2788 -- Will not apply if price is disabled for this line, or negotiation
2789 -- is not price driver
2790 WHEN s_price_disabled_flag = 'N' AND p_rebid = 'Y' AND p_price_driven = 'Y'
2791 AND s_price <> s_old_price AND s_group_type <> 'LOT_LINE'
2792 AND s_price > decode(p_bid_decr_method,'BEST_PRICE',s_best_bid_price,s_old_price)
2793 AND s_min_bid_decr IS NULL
2794 -- added by Allen Yang for Surrogate Bid 2008/09/03
2795 ---------------------------------------------------
2796 AND p_two_part_tech_surrogate_flag = 'N'
2797 ---------------------------------------------------
2798 THEN
2799 INTO pon_interface_errors
2800 (INTERFACE_TYPE,
2801 COLUMN_NAME,
2802 TABLE_NAME,
2803 BATCH_ID,
2804 INTERFACE_LINE_ID,
2805 ERROR_MESSAGE_NAME,
2806 CREATED_BY,
2807 CREATION_DATE,
2808 LAST_UPDATED_BY,
2809 LAST_UPDATE_DATE,
2810 REQUEST_ID,
2811 ENTITY_TYPE,
2812 ENTITY_ATTR_NAME,
2813 ERROR_VALUE_NUMBER,
2814 ERROR_VALUE_DATATYPE,
2815 AUCTION_HEADER_ID,
2816 BID_NUMBER,
2817 LINE_NUMBER,
2818 EXPIRATION_DATE,
2819 TOKEN1_NAME,
2820 TOKEN1_VALUE,
2821 WORKSHEET_NAME,
2822 WORKSHEET_SEQUENCE_NUMBER,
2823 ENTITY_MESSAGE_CODE)
2824 VALUES
2825 (p_interface_type,
2826 fnd_message.get_string('PON', 'PON_AUCTS_BID_PRICE' || p_suffix),
2827 'PON_BID_ITEM_PRICES',
2828 p_batch_id,
2829 s_interface_line_id,
2830 decode(p_bid_decr_method,'BEST_PRICE','PON_BESTBID_PRICE_LOWER','PON_BID_PRICE_LOWER') || p_suffix,
2831 p_userid,
2832 sysdate,
2833 p_userid,
2834 sysdate,
2835 p_request_id,
2836 'BID_ITEMS',
2837 'Price',
2838 s_price,
2839 'NUM',
2840 p_auc_header_id,
2841 p_bid_number,
2842 s_line_number,
2843 g_exp_date,
2844 'LINENUMBER',
2845 --s_document_disp_line_number,
2846 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
2847 s_worksheet_name,
2848 s_worksheet_sequence_number,
2849 s_entity_message_code)
2850
2851 -- proxy_bid_limit_price must be lower than price by the bid minimum
2852 -- bid change (or auction minimum bid change if that is null)
2853 -- Don't do this validation when buyer tries to place a
2854 -- surrogate bid after auction is closed
2855 WHEN (NOT (s_surrog_bid_flag = 'Y' AND
2856 s_close_bidding_date < s_current_date) AND
2857 (s_proxy_bid_limit_price + s_min_bid_change > s_price))
2858 -- added by Allen Yang for Surrogate Bid 2008/09/03
2859 ---------------------------------------------------
2860 AND p_two_part_tech_surrogate_flag = 'N'
2861 ---------------------------------------------------
2862 THEN
2863 INTO pon_interface_errors
2864 (INTERFACE_TYPE,
2865 COLUMN_NAME,
2866 TABLE_NAME,
2867 BATCH_ID,
2868 INTERFACE_LINE_ID,
2869 ERROR_MESSAGE_NAME,
2870 CREATED_BY,
2871 CREATION_DATE,
2872 LAST_UPDATED_BY,
2873 LAST_UPDATE_DATE,
2874 REQUEST_ID,
2875 ENTITY_TYPE,
2876 ENTITY_ATTR_NAME,
2877 ERROR_VALUE_NUMBER,
2878 ERROR_VALUE_DATATYPE,
2879 AUCTION_HEADER_ID,
2880 BID_NUMBER,
2881 LINE_NUMBER,
2882 EXPIRATION_DATE,
2883 TOKEN1_NAME,
2884 TOKEN1_VALUE,
2885 WORKSHEET_NAME,
2886 WORKSHEET_SEQUENCE_NUMBER,
2887 ENTITY_MESSAGE_CODE)
2888 VALUES
2889 (p_interface_type,
2890 decode(p_spreadsheet,
2891 g_xml_upload_mode,
2892 fnd_message.get_string('PON', 'PON_AUCTS_PROXY_MIN'),
2893 fnd_message.get_string('PON', 'PON_AUCTS_MIN_BID_PRICE')),
2894 'PON_BID_ITEM_PRICES',
2895 p_batch_id,
2896 s_interface_line_id,
2897 'PON_AUCTS_LIMIT_MIN_LESS_PRI' || p_suffix,
2898 p_userid,
2899 sysdate,
2900 p_userid,
2901 sysdate,
2902 p_request_id,
2903 'BID_ITEMS',
2904 'BidCurrencyLimitPrice',
2905 s_proxy_bid_limit_price,
2906 'NUM',
2907 p_auc_header_id,
2908 p_bid_number,
2909 s_line_number,
2910 g_exp_date,
2911 'LINENUMBER',
2915 s_worksheet_sequence_number,
2912 --s_document_disp_line_number,
2913 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
2914 s_worksheet_name,
2916 s_entity_message_code)
2917
2918 -- There was a previous bid on this line which was deleted
2919 -- Not allowed to unbid when rebidding.
2920 WHEN p_rebid = 'Y' AND s_is_changed_line_flag = 'Y'
2921 AND s_has_bid_flag = 'N' THEN
2922 INTO pon_interface_errors
2923 (INTERFACE_TYPE,
2924 TABLE_NAME,
2925 BATCH_ID,
2926 INTERFACE_LINE_ID,
2927 ERROR_MESSAGE_NAME,
2928 CREATED_BY,
2929 CREATION_DATE,
2930 LAST_UPDATED_BY,
2931 LAST_UPDATE_DATE,
2932 REQUEST_ID,
2933 AUCTION_HEADER_ID,
2934 BID_NUMBER,
2935 LINE_NUMBER,
2936 EXPIRATION_DATE,
2937 TOKEN1_NAME,
2938 TOKEN1_VALUE,
2939 WORKSHEET_NAME,
2940 WORKSHEET_SEQUENCE_NUMBER,
2941 ENTITY_MESSAGE_CODE)
2942 VALUES
2943 (p_interface_type,
2944 'PON_BID_ITEM_PRICES',
2945 p_batch_id,
2946 s_interface_line_id,
2947 'PON_CANNOT_UNBID' || p_suffix,
2948 p_userid,
2949 sysdate,
2950 p_userid,
2951 sysdate,
2952 p_request_id,
2953 p_auc_header_id,
2954 p_bid_number,
2955 s_line_number,
2956 g_exp_date,
2957 'LINENUMBER',
2958 --s_document_disp_line_number,
2959 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
2960 s_worksheet_name,
2961 s_worksheet_sequence_number,
2962 s_entity_message_code)
2963
2964 -- CUMULATIVE price breaks not allowed in blanket agreements
2965 WHEN p_blanket = 'Y' AND p_global = 'Y'
2966 AND s_price_break_type = 'CUMULATIVE'
2967 --CLM QA Bug : 9835426 : For NC, NSP lines, Price Tiers are not allowed
2968 AND s_clm_cost_constraint NOT IN ('NC','NSP')
2969 -- added by Allen Yang for Surrogate Bid 2008/09/03
2970 ---------------------------------------------------
2971 AND p_two_part_tech_surrogate_flag = 'N'
2972 ---------------------------------------------------
2973 THEN
2974 INTO pon_interface_errors
2975 (INTERFACE_TYPE,
2976 TABLE_NAME,
2977 BATCH_ID,
2978 INTERFACE_LINE_ID,
2979 ERROR_MESSAGE_NAME,
2980 CREATED_BY,
2981 CREATION_DATE,
2982 LAST_UPDATED_BY,
2983 LAST_UPDATE_DATE,
2984 REQUEST_ID,
2985 ENTITY_TYPE,
2986 ENTITY_ATTR_NAME,
2987 ERROR_VALUE,
2988 ERROR_VALUE_DATATYPE,
2989 AUCTION_HEADER_ID,
2990 BID_NUMBER,
2991 LINE_NUMBER,
2992 EXPIRATION_DATE,
2993 TOKEN1_NAME,
2994 TOKEN1_VALUE,
2995 WORKSHEET_NAME,
2996 WORKSHEET_SEQUENCE_NUMBER,
2997 ENTITY_MESSAGE_CODE)
2998 VALUES
2999 (p_interface_type,
3000 'PON_BID_ITEM_PRICES',
3001 p_batch_id,
3002 s_interface_line_id,
3003 'PON_AUC_BAD_PBTYPE_GLOBAL',
3004 p_userid,
3005 sysdate,
3006 p_userid,
3007 sysdate,
3008 p_request_id,
3009 'BID_ITEMS',
3010 'PriceBreakType',
3011 s_price_break_type,
3012 'TXT',
3013 p_auc_header_id,
3014 p_bid_number,
3015 s_line_number,
3016 g_exp_date,
3017 'LINENUMBER',
3018 --s_document_disp_line_number,
3019 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
3020 s_worksheet_name,
3021 s_worksheet_sequence_number,
3022 s_entity_message_code)
3023
3024 -- The line is not allowed to have shipments if price_break_type is NONE
3025 WHEN
3026 -- added by Allen Yang for Surrogate Bid 2008/09/03
3027 ---------------------------------------------------
3028 p_two_part_tech_surrogate_flag = 'N' AND
3029 ---------------------------------------------------
3030 s_price_break_type = 'NONE' AND
3031 EXISTS (SELECT bpb.shipment_number
3032 FROM pon_bid_shipments bpb
3033 WHERE bpb.bid_number = p_bid_number
3034 AND bpb.line_number = s_line_number
3035 AND bpb.shipment_type = 'PRICE BREAK')
3036 THEN
3037 INTO pon_interface_errors
3038 (INTERFACE_TYPE,
3039 TABLE_NAME,
3040 BATCH_ID,
3041 INTERFACE_LINE_ID,
3042 ERROR_MESSAGE_NAME,
3043 CREATED_BY,
3044 CREATION_DATE,
3045 LAST_UPDATED_BY,
3046 LAST_UPDATE_DATE,
3047 REQUEST_ID,
3048 ENTITY_TYPE,
3049 ENTITY_ATTR_NAME,
3050 ERROR_VALUE,
3051 ERROR_VALUE_DATATYPE,
3052 AUCTION_HEADER_ID,
3053 BID_NUMBER,
3054 LINE_NUMBER,
3055 EXPIRATION_DATE,
3056 TOKEN1_NAME,
3057 TOKEN1_VALUE,
3058 WORKSHEET_NAME,
3059 WORKSHEET_SEQUENCE_NUMBER,
3060 ENTITY_MESSAGE_CODE)
3061 VALUES
3062 (p_interface_type,
3063 'PON_BID_ITEM_PRICES',
3064 p_batch_id,
3065 s_interface_line_id,
3066 'PON_AUC_BAD_PBTYPE_SHIPS',
3067 p_userid,
3068 sysdate,
3069 p_userid,
3070 sysdate,
3071 p_request_id,
3072 'BID_ITEMS',
3073 'PriceBreakType',
3074 s_price_break_type,
3075 'TXT',
3076 p_auc_header_id,
3077 p_bid_number,
3078 s_line_number,
3079 g_exp_date,
3080 'LINENUMBER',
3081 --s_document_disp_line_number,
3082 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
3083 s_worksheet_name,
3084 s_worksheet_sequence_number,
3085 s_entity_message_code)
3086 SELECT
3087 decode(p_percent_decr, 'Y',
3088 -- Bug 12943462
3089 -- Modified the Bid decrement price for both the Controls Best Price checked and unchecked
3090 p_min_bid_decr * (decode(p_bid_decr_method,'BEST_PRICE',nvl(al.best_bid_price,0),bl.old_price))/100,--bug 7601028:calculating the minimum decrement amount on the basis of previous bid
3091 p_min_bid_decr) s_min_bid_decr,
3092 decode(p_percent_decr, 'Y',
3093 nvl(p_min_bid_change, p_min_bid_decr) * bl.price/100, --bug 7601028:calculating the minimum change amount on the basis of previous bid
3094 nvl(p_min_bid_change, p_min_bid_decr)) s_min_bid_change,
3095 al.group_type s_group_type,
3096 bl.bid_currency_price s_bid_currency_price,
3097 bl.bid_currency_trans_price s_bid_currency_trans_price,
3098 bl.bid_currency_limit_price s_bid_currency_limit_price,
3099 bl.price s_price,
3100 bl.proxy_bid_limit_price s_proxy_bid_limit_price,
3101 bl.price_break_type s_price_break_type,
3102 bl.display_price_factors_flag s_display_price_factors_flag,
3103 bl.old_price s_old_price,
3104 bl.has_bid_flag s_has_bid_flag,
3105 bl.is_changed_line_flag s_is_changed_line_flag,
3106 al.quantity s_auc_quantity,
3107 al.bid_start_price s_bid_start_price,
3108 nvl(al.price_disabled_flag, 'N') s_price_disabled_flag,
3109 bl.line_number s_line_number,
3110 decode(p_spreadsheet, g_txt_upload_mode, bl.interface_line_id,
3111 g_xml_upload_mode, bl.interface_line_id,
3112 to_number(null)) s_interface_line_id,
3113 al.document_disp_line_number s_document_disp_line_number,
3114 nvl(al.best_bid_price,0) s_best_bid_price,
3115 al.best_bid_price s_auc_best_bid_price,
3116 bl.bid_start_price s_enforced_bid_start_price,
3117 bh.surrog_bid_flag s_surrog_bid_flag,
3118 al.close_bidding_date s_close_bidding_date,
3119 sysdate s_current_date,
3120 decode(p_spreadsheet, g_xml_upload_mode, bl.worksheet_name, to_char(null)) s_worksheet_name,
3121 decode(p_spreadsheet, g_xml_upload_mode, bl.worksheet_sequence_number, to_number(null)) s_worksheet_sequence_number,
3122 decode(p_spreadsheet, g_xml_upload_mode, 'PON_AUC_ITEMS', to_char(null)) s_entity_message_code,
3123 bh.rate s_rate,
3124 bh.number_price_decimals s_precision,
3125 al.line_num_display s_clm_line_num_display,
3126 nvl(bl.clm_cost_constraint,'X') s_clm_cost_constraint, -- CLM QA Bug : 9835426
3127 al.order_type_lookup_code s_order_type_lookup_code --For clm bug : 10136754
3128 FROM pon_auction_item_prices_all al, pon_bid_item_prices bl,
3129 pon_bid_headers bh
3130 WHERE al.auction_header_id = p_auc_header_id
3131 AND bh.bid_number = p_bid_number
3132 AND bl.bid_number = p_bid_number
3133 AND al.line_number = bl.line_number
3134 AND bl.is_changed_line_flag = 'Y'
3135 AND (p_spreadsheet = g_online_mode OR bl.batch_id = p_batch_id)
3136 AND bh.bid_number = bl.bid_number
3137 AND (bh.SURROG_BID_FLAG = 'Y' OR nvl(al.close_bidding_date, sysdate+1) > sysdate);
3138
3139 -- STEP 3: perform rel 12 and post rel 12 validations.
3140 -- Validations 1-10 in this statement
3141 INSERT ALL
3142
3143 -- Retainage rate should be between 0 and 100
3144 WHEN
3145 -- added by Allen Yang for Surrogate Bid 2008/09/03
3146 ---------------------------------------------------
3147 p_two_part_tech_surrogate_flag = 'N' AND
3148 ---------------------------------------------------
3149 retainage_rate_percent IS NOT NULL AND (retainage_rate_percent < 0 OR retainage_rate_percent > 100) THEN
3150 INTO pon_interface_errors
3151 (INTERFACE_TYPE, COLUMN_NAME, TABLE_NAME, --1
3152 BATCH_ID, INTERFACE_LINE_ID, ERROR_MESSAGE_NAME, --2
3153 CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, --3
3154 LAST_UPDATE_DATE, REQUEST_ID, ENTITY_TYPE, --4
3155 ENTITY_ATTR_NAME, ERROR_VALUE_NUMBER, ERROR_VALUE_DATATYPE, --5
3156 AUCTION_HEADER_ID, BID_NUMBER, LINE_NUMBER, --6
3157 EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
3158 WORKSHEET_NAME, WORKSHEET_SEQUENCE_NUMBER, ENTITY_MESSAGE_CODE) --7
3159 VALUES
3160 (p_interface_type, fnd_message.get_string('PON','PON_RETAINAGE_RATE'), 'PON_BID_ITEM_PRICES', --1
3161 p_batch_id, s_interface_line_id, 'PON_RTNG_RATE_WRONG_L', --2
3162 p_userid, sysdate, p_userid, --3
3163 sysdate, p_request_id, 'BID_ITEMS', --4
3164 'RetainageRatePercent', retainage_rate_percent, 'NUM', --5
3165 p_auc_header_id, p_bid_number, s_line_number, --6
3166 g_exp_date, 'LINENUM', --s_document_disp_line_number,
3167 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
3168 s_worksheet_name, s_worksheet_sequence_number, s_entity_message_code) --7
3169 -- bid_curr_max_retainage_amt should be greater than equal to 0
3170 WHEN
3171 -- added by Allen Yang for Surrogate Bid 2008/09/03
3172 ---------------------------------------------------
3173 p_two_part_tech_surrogate_flag = 'N' AND
3174 ---------------------------------------------------
3175 bid_curr_max_retainage_amt IS NOT NULL AND bid_curr_max_retainage_amt < 0 THEN
3176 INTO pon_interface_errors
3177 (INTERFACE_TYPE, COLUMN_NAME, TABLE_NAME, --1
3178 BATCH_ID, INTERFACE_LINE_ID, ERROR_MESSAGE_NAME, --2
3179 CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, --3
3180 LAST_UPDATE_DATE, REQUEST_ID, ENTITY_TYPE, --4
3181 ENTITY_ATTR_NAME, ERROR_VALUE_NUMBER, ERROR_VALUE_DATATYPE, --5
3182 AUCTION_HEADER_ID, BID_NUMBER, LINE_NUMBER, --6
3183 EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
3184 WORKSHEET_NAME, WORKSHEET_SEQUENCE_NUMBER, ENTITY_MESSAGE_CODE) --7
3185 VALUES
3186 (p_interface_type, fnd_message.get_string('PON','PON_MAX_RETAINAGE_AMOUNT'), 'PON_BID_ITEM_PRICES', --1
3187 p_batch_id, s_interface_line_id, 'PON_MAX_RTNG_WRONG_L', --2
3188 p_userid, sysdate, p_userid, --3
3189 sysdate, p_request_id, 'BID_ITEMS', --4
3190 'BidCurrMaxRetainageAmt', bid_curr_max_retainage_amt, 'NUM', --5
3191 p_auc_header_id, p_bid_number, s_line_number, --6
3192 g_exp_date, 'LINENUM', --s_document_disp_line_number,
3193 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
3194 s_worksheet_name, s_worksheet_sequence_number, s_entity_message_code) --7
3195 -- bid_curr_advance_amount should be greater than equal to 0
3196 WHEN
3197 -- added by Allen Yang for Surrogate Bid 2008/09/03
3198 ---------------------------------------------------
3199 p_two_part_tech_surrogate_flag = 'N' AND
3200 ---------------------------------------------------
3201 bid_curr_advance_amount IS NOT NULL AND bid_curr_advance_amount < 0 THEN
3202 INTO pon_interface_errors
3203 (INTERFACE_TYPE, COLUMN_NAME, TABLE_NAME, --1
3204 BATCH_ID, INTERFACE_LINE_ID, ERROR_MESSAGE_NAME, --2
3205 CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, --3
3206 LAST_UPDATE_DATE, REQUEST_ID, ENTITY_TYPE, --4
3207 ENTITY_ATTR_NAME, ERROR_VALUE_NUMBER, ERROR_VALUE_DATATYPE, --5
3208 AUCTION_HEADER_ID, BID_NUMBER, LINE_NUMBER, --6
3209 EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
3210 WORKSHEET_NAME, WORKSHEET_SEQUENCE_NUMBER, ENTITY_MESSAGE_CODE) --7
3211 VALUES
3212 (p_interface_type, fnd_message.get_string('PON','PON_ADVANCE_AMOUNT_FLAG'), 'PON_BID_ITEM_PRICES', --1
3213 p_batch_id, s_interface_line_id, 'PON_ADV_AMT_WRONG_L', --2
3214 p_userid, sysdate, p_userid, --3
3215 sysdate, p_request_id, 'BID_ITEMS', --4
3216 'BidCurrAdvanceAmount', bid_curr_advance_amount, 'NUM', --5
3217 p_auc_header_id, p_bid_number, s_line_number, --6
3218 g_exp_date, 'LINENUM', --s_document_disp_line_number,
3219 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
3220 s_worksheet_name, s_worksheet_sequence_number, s_entity_message_code) --7
3221 -- progress_pymt_rate_percent should be between 0 and 100
3222 WHEN
3223 -- added by Allen Yang for Surrogate Bid 2008/09/03
3224 ---------------------------------------------------
3225 p_two_part_tech_surrogate_flag = 'N' AND
3226 ---------------------------------------------------
3227 progress_pymt_rate_percent IS NOT NULL AND
3228 (progress_pymt_rate_percent < 0 OR progress_pymt_rate_percent > 100) THEN
3229 INTO pon_interface_errors
3230 (INTERFACE_TYPE, COLUMN_NAME, TABLE_NAME, --1
3231 BATCH_ID, INTERFACE_LINE_ID, ERROR_MESSAGE_NAME, --2
3232 CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, --3
3233 LAST_UPDATE_DATE, REQUEST_ID, ENTITY_TYPE, --4
3234 ENTITY_ATTR_NAME, ERROR_VALUE_NUMBER, ERROR_VALUE_DATATYPE, --5
3235 AUCTION_HEADER_ID, BID_NUMBER, LINE_NUMBER, --6
3236 EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
3237 WORKSHEET_NAME, WORKSHEET_SEQUENCE_NUMBER, ENTITY_MESSAGE_CODE) --7
3238 VALUES
3239 (p_interface_type, fnd_message.get_string('PON','PON_PROGRESS_PYMT_RATE'), 'PON_BID_ITEM_PRICES', --1
3240 p_batch_id, s_interface_line_id, 'PON_PROG_PYMT_RATE_WRONG_L', --2
3241 p_userid, sysdate, p_userid, --3
3242 sysdate, p_request_id, 'BID_ITEMS', --4
3243 'ProgressPymtRatePercent', progress_pymt_rate_percent, 'NUM', --5
3244 p_auc_header_id, p_bid_number, s_line_number, --6
3245 g_exp_date, 'LINENUM', --s_document_disp_line_number,
3246 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
3247 s_worksheet_name, s_worksheet_sequence_number, s_entity_message_code) --7
3248 -- recoupment_rate_percent should be between 0 and 100
3249 WHEN
3250 -- added by Allen Yang for Surrogate Bid 2008/09/03
3251 ---------------------------------------------------
3252 p_two_part_tech_surrogate_flag = 'N' AND
3253 ---------------------------------------------------
3254 recoupment_rate_percent IS NOT NULL AND
3255 (recoupment_rate_percent < 0 OR recoupment_rate_percent > 100) THEN
3256 INTO pon_interface_errors
3257 (INTERFACE_TYPE, COLUMN_NAME, TABLE_NAME, --1
3258 BATCH_ID, INTERFACE_LINE_ID, ERROR_MESSAGE_NAME, --2
3259 CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, --3
3260 LAST_UPDATE_DATE, REQUEST_ID, ENTITY_TYPE, --4
3261 ENTITY_ATTR_NAME, ERROR_VALUE_NUMBER, ERROR_VALUE_DATATYPE, --5
3262 AUCTION_HEADER_ID, BID_NUMBER, LINE_NUMBER, --6
3263 EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
3264 WORKSHEET_NAME, WORKSHEET_SEQUENCE_NUMBER, ENTITY_MESSAGE_CODE) --7
3265 VALUES
3266 (p_interface_type, fnd_message.get_string('PON','PON_RECOUPMENT_RATE'), 'PON_BID_ITEM_PRICES', --1
3267 p_batch_id, s_interface_line_id, 'PON_RECOUP_RATE_WRONG', --2
3268 p_userid, sysdate, p_userid, --3
3269 sysdate, p_request_id, 'BID_ITEMS', --4
3270 'RecoupmentRatePercent', recoupment_rate_percent, 'NUM', --5
3271 p_auc_header_id, p_bid_number, s_line_number, --6
3272 g_exp_date, 'LINENUM', --s_document_disp_line_number,
3273 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
3274 s_worksheet_name, s_worksheet_sequence_number, s_entity_message_code) --7
3275 -- progress_pymt_rate_percent is mandatory for progress_payment_type = FINANCE
3276 WHEN
3277 -- added by Allen Yang for Surrogate Bid 2008/09/03
3278 ---------------------------------------------------
3279 p_two_part_tech_surrogate_flag = 'N' AND
3280 ---------------------------------------------------
3281 progress_payment_type = 'FINANCE' AND contract_type='STANDARD'
3282 AND s_group_type NOT IN ('GROUP','LOT_LINE') AND s_clm_info_flag <> 'Y' AND progress_pymt_rate_percent IS NULL THEN
3283 INTO pon_interface_errors
3284 (INTERFACE_TYPE, COLUMN_NAME, TABLE_NAME, --1
3285 BATCH_ID, INTERFACE_LINE_ID, ERROR_MESSAGE_NAME, --2
3286 CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, --3
3287 LAST_UPDATE_DATE, REQUEST_ID, ENTITY_TYPE, --4
3288 ENTITY_ATTR_NAME, ERROR_VALUE, ERROR_VALUE_DATATYPE, --5
3289 AUCTION_HEADER_ID, BID_NUMBER, LINE_NUMBER, --6
3290 BID_PAYMENT_ID, EXPIRATION_DATE, TOKEN1_NAME, --7
3291 TOKEN1_VALUE, TOKEN2_NAME, TOKEN2_VALUE,
3292 WORKSHEET_NAME, WORKSHEET_SEQUENCE_NUMBER, ENTITY_MESSAGE_CODE) --8
3293 VALUES
3294 (p_interface_type, fnd_message.get_string('PON','PON_PROGRESS_PYMT_RATE'), 'PON_BID_ITEM_PRICES', --1
3295 p_batch_id, s_interface_line_id, 'PON_PROG_PYMT_NEEDED_L', --2
3296 p_userid, sysdate, p_userid, --3
3297 sysdate, p_request_id, 'BID_ITEMS', --4
3298 'ProgressPymtRatePercent', progress_pymt_rate_percent, 'TXT', --5
3299 p_auc_header_id, p_bid_number, s_line_number, --6
3300 NULL, g_exp_date, 'LINENUM', --7
3301 --s_document_disp_line_number,
3302 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
3303 null, null,
3304 s_worksheet_name, s_worksheet_sequence_number, s_entity_message_code) --8
3305
3306 -- retainage_rate_percent is mandatory if retainage is negotiable
3307 WHEN
3308 -- added by Allen Yang for Surrogate Bid 2008/09/03
3309 ---------------------------------------------------
3310 p_two_part_tech_surrogate_flag = 'N' AND
3311 ---------------------------------------------------
3312 retainage_negotiable_flag = 'Y'
3313 AND s_group_type NOT IN ('GROUP','LOT_LINE') AND s_clm_info_flag <> 'Y' AND retainage_rate_percent IS NULL THEN
3314 INTO pon_interface_errors
3315 (INTERFACE_TYPE, COLUMN_NAME, TABLE_NAME, --1
3316 BATCH_ID, INTERFACE_LINE_ID, ERROR_MESSAGE_NAME, --2
3317 CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, --3
3318 LAST_UPDATE_DATE, REQUEST_ID, ENTITY_TYPE, --4
3319 ENTITY_ATTR_NAME, ERROR_VALUE, ERROR_VALUE_DATATYPE, --5
3320 AUCTION_HEADER_ID, BID_NUMBER, LINE_NUMBER, --6
3321 BID_PAYMENT_ID, EXPIRATION_DATE, TOKEN1_NAME, --7
3322 TOKEN1_VALUE, TOKEN2_NAME, TOKEN2_VALUE, WORKSHEET_NAME, WORKSHEET_SEQUENCE_NUMBER, ENTITY_MESSAGE_CODE) --8
3323 VALUES
3324 (p_interface_type, fnd_message.get_string('PON','PON_RETAINAGE_RATE'), 'PON_BID_ITEM_PRICES', --1
3325 p_batch_id, s_interface_line_id, 'PON_RETAINAGE_NEEDED_L', --2
3326 p_userid, sysdate, p_userid, --3
3327 sysdate, p_request_id, 'BID_ITEMS', --4
3328 'RetainageRatePercent', retainage_rate_percent, 'TXT', --5
3329 p_auc_header_id, p_bid_number, s_line_number, --6
3330 NULL, g_exp_date, 'LINENUM', --7
3331 --s_document_disp_line_number,
3332 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
3333 null, null,
3334 s_worksheet_name, s_worksheet_sequence_number, s_entity_message_code) --8
3335 -- bid_curr_max_retainage_amount is mandatory if maximum retainage amount is negotiable
3336 WHEN
3337 -- added by Allen Yang for Surrogate Bid 2008/09/03
3338 ---------------------------------------------------
3339 p_two_part_tech_surrogate_flag = 'N' AND
3340 ---------------------------------------------------
3341 max_retainage_negotiable_flag = 'Y'
3342 AND s_group_type NOT IN ('GROUP','LOT_LINE') AND s_clm_info_flag <> 'Y' AND bid_curr_max_retainage_amt IS NULL THEN
3343 INTO pon_interface_errors
3344 (INTERFACE_TYPE, COLUMN_NAME, TABLE_NAME, --1
3345 BATCH_ID, INTERFACE_LINE_ID, ERROR_MESSAGE_NAME, --2
3346 CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, --3
3347 LAST_UPDATE_DATE, REQUEST_ID, ENTITY_TYPE, --4
3348 ENTITY_ATTR_NAME, ERROR_VALUE, ERROR_VALUE_DATATYPE, --5
3349 AUCTION_HEADER_ID, BID_NUMBER, LINE_NUMBER, --6
3350 BID_PAYMENT_ID, EXPIRATION_DATE, TOKEN1_NAME, --7
3351 TOKEN1_VALUE, TOKEN2_NAME, TOKEN2_VALUE,
3352 WORKSHEET_NAME, WORKSHEET_SEQUENCE_NUMBER, ENTITY_MESSAGE_CODE) --8
3353 VALUES
3354 (p_interface_type, fnd_message.get_string('PON','PON_MAX_RETAINAGE_AMOUNT'), 'PON_BID_ITEM_PRICES', --1
3355 p_batch_id, s_interface_line_id, 'PON_MAX_RETAINAGE_NEEDED_L', --2
3356 p_userid, sysdate, p_userid, --3
3357 sysdate, p_request_id, 'BID_ITEMS', --4
3358 'BidCurrMaxRetainageAmt', bid_curr_max_retainage_amt, 'TXT', --5
3359 p_auc_header_id, p_bid_number, s_line_number, --6
3360 NULL, g_exp_date, 'LINENUM', --7
3361 --s_document_disp_line_number,
3362 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
3363 null, null,
3364 s_worksheet_name, s_worksheet_sequence_number, s_entity_message_code) --8
3365
3366 -- recoupment_rate_percent is mandatory if recoupment rate is negotiable
3367 WHEN
3368 -- added by Allen Yang for Surrogate Bid 2008/09/03
3369 ---------------------------------------------------
3370 p_two_part_tech_surrogate_flag = 'N' AND
3371 ---------------------------------------------------
3372 (s_group_type NOT IN ('GROUP','LOT_LINE') AND s_clm_info_flag <> 'Y' AND
3373 ((recoupment_negotiable_flag = 'Y' AND recoupment_rate_percent IS NULL) OR
3374 ((progress_pymt_rate_percent IS NOT NULL OR bid_curr_advance_amount IS NOT NULL) AND
3375 recoupment_rate_percent IS NULL)))
3376 THEN
3377 INTO pon_interface_errors
3378 (INTERFACE_TYPE, COLUMN_NAME, TABLE_NAME, --1
3379 BATCH_ID, INTERFACE_LINE_ID, ERROR_MESSAGE_NAME, --2
3380 CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, --3
3381 LAST_UPDATE_DATE, REQUEST_ID, ENTITY_TYPE, --4
3382 ENTITY_ATTR_NAME, ERROR_VALUE, ERROR_VALUE_DATATYPE, --5
3383 AUCTION_HEADER_ID, BID_NUMBER, LINE_NUMBER, --6
3384 BID_PAYMENT_ID, EXPIRATION_DATE, TOKEN1_NAME, --7
3385 TOKEN1_VALUE, TOKEN2_NAME, TOKEN2_VALUE, WORKSHEET_NAME, WORKSHEET_SEQUENCE_NUMBER, ENTITY_MESSAGE_CODE) --8
3386 VALUES
3387 (p_interface_type, fnd_message.get_string('PON','PON_RECOUPMENT_RATE'), 'PON_BID_ITEM_PRICES', --1
3388 p_batch_id, s_interface_line_id, 'PON_RECUP_RATE_NEEDED_L', --2
3389 p_userid, sysdate, p_userid, --3
3390 sysdate, p_request_id, 'BID_ITEMS', --4
3391 'RecoupmentRatePercent', recoupment_rate_percent, 'TXT', --5
3392 p_auc_header_id, p_bid_number, s_line_number, --6
3393 NULL, g_exp_date, 'LINENUM', --7
3394 --s_document_disp_line_number,
3395 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
3399 WHEN
3396 null, null,
3397 s_worksheet_name, s_worksheet_sequence_number, s_entity_message_code) --8
3398 -- bid_curr_advance_amount is mandatory if advance amount is negotiable
3400 -- added by Allen Yang for Surrogate Bid 2008/09/03
3401 ---------------------------------------------------
3402 p_two_part_tech_surrogate_flag = 'N' AND
3403 ---------------------------------------------------
3404 advance_negotiable_flag = 'Y'
3405 AND s_group_type NOT IN ('GROUP','LOT_LINE')
3406 AND s_clm_info_flag <> 'Y'
3407 AND bid_curr_advance_amount IS NULL THEN
3408 INTO pon_interface_errors
3409 (INTERFACE_TYPE, COLUMN_NAME, TABLE_NAME, --1
3410 BATCH_ID, INTERFACE_LINE_ID, ERROR_MESSAGE_NAME, --2
3411 CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, --3
3412 LAST_UPDATE_DATE, REQUEST_ID, ENTITY_TYPE, --4
3413 ENTITY_ATTR_NAME, ERROR_VALUE, ERROR_VALUE_DATATYPE, --5
3414 AUCTION_HEADER_ID, BID_NUMBER, LINE_NUMBER, --6
3415 BID_PAYMENT_ID, EXPIRATION_DATE, TOKEN1_NAME, --7
3416 TOKEN1_VALUE, TOKEN2_NAME, TOKEN2_VALUE, WORKSHEET_NAME, WORKSHEET_SEQUENCE_NUMBER, ENTITY_MESSAGE_CODE) --8
3417 VALUES
3418 (p_interface_type, fnd_message.get_string('PON','PON_ADVANCE_AMOUNT_FLAG'), 'PON_BID_ITEM_PRICES', --1
3419 p_batch_id, s_interface_line_id, 'PON_ADVANCE_AMT_NEEDED_L', --2
3420 p_userid, sysdate, p_userid, --3
3421 sysdate, p_request_id, 'BID_ITEMS', --4
3422 'BidCurrAdvanceAmount', bid_curr_advance_amount, 'TXT', --5
3423 p_auc_header_id, p_bid_number, s_line_number, --6
3424 NULL, g_exp_date, 'LINENUM', --7
3425 --s_document_disp_line_number,
3426 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
3427 null, null, s_worksheet_name, s_worksheet_sequence_number, s_entity_message_code) --8
3428
3429 SELECT
3430 al.group_type s_group_type,
3431 bl.quantity s_bid_quantity,
3432 bl.bid_currency_unit_price s_bid_currency_unit_price,
3433 bl.bid_curr_advance_amount,
3434 bl.bid_curr_max_retainage_amt,
3435 bl.recoupment_rate_percent,
3436 bl.retainage_rate_percent,
3437 bl.progress_pymt_rate_percent,
3438 bl.has_bid_payments_flag,
3439 bl.line_number s_line_number,
3440 decode(p_spreadsheet, g_txt_upload_mode, bl.interface_line_id,
3441 g_xml_upload_mode, bl.interface_line_id,
3442 to_number(null)) s_interface_line_id,
3443 al.document_disp_line_number s_document_disp_line_number,
3444 al.order_type_lookup_code s_order_type_lookup_code,
3445 al.quantity s_auc_quantity,
3446 pah.progress_payment_type,
3447 pah.advance_negotiable_flag,
3448 pah.retainage_negotiable_flag,
3449 pah.max_retainage_negotiable_flag,
3450 pah.recoupment_negotiable_flag,
3451 pah.progress_pymt_negotiable_flag,
3452 pah.contract_type,
3453 decode(p_spreadsheet, g_xml_upload_mode, bl.worksheet_name, to_char(null)) s_worksheet_name,
3454 decode(p_spreadsheet, g_xml_upload_mode, bl.worksheet_sequence_number, to_number(null)) s_worksheet_sequence_number,
3455 decode(p_spreadsheet, g_xml_upload_mode, 'PON_AUC_ITEMS', to_char(null)) s_entity_message_code,
3456 al.line_num_display s_clm_line_num_display,
3457 Nvl(al.clm_info_flag, 'N') s_clm_info_flag
3458 FROM pon_auction_item_prices_all al, pon_bid_item_prices bl, pon_auction_headers_all pah
3459 WHERE al.auction_header_id = p_auc_header_id
3460 AND bl.bid_number = p_bid_number
3461 AND pah.auction_header_id = p_auc_header_id
3462 AND al.line_number = bl.line_number
3463 AND bl.is_changed_line_flag = 'Y'
3464 AND (p_spreadsheet = g_online_mode OR bl.batch_id = p_batch_id);
3465
3466 -- STEP 4: rel 12 and post rel 12 validations
3467 -- validations 11-20
3468 INSERT ALL
3469
3470 WHEN
3471 -- added by Allen Yang for Surrogate Bid 2008/09/03
3472 ---------------------------------------------------
3473 p_two_part_tech_surrogate_flag = 'N' AND
3474 ---------------------------------------------------
3475 bid_curr_advance_amount IS NOT NULL AND s_bid_currency_unit_price IS NOT NULL AND
3476 (bid_curr_advance_amount > (NVL(s_bid_quantity,1) * s_bid_currency_unit_price)) THEN
3477 INTO pon_interface_errors
3478 (INTERFACE_TYPE, COLUMN_NAME, TABLE_NAME, --1
3479 BATCH_ID, INTERFACE_LINE_ID, ERROR_MESSAGE_NAME, --2
3480 CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, --3
3481 LAST_UPDATE_DATE, REQUEST_ID, ENTITY_TYPE, --4
3482 ENTITY_ATTR_NAME, ERROR_VALUE_NUMBER, ERROR_VALUE_DATATYPE, --5
3483 AUCTION_HEADER_ID, BID_NUMBER, LINE_NUMBER, --6
3484 EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE, --7
3485 WORKSHEET_NAME, WORKSHEET_SEQUENCE_NUMBER, ENTITY_MESSAGE_CODE) --8
3486 VALUES
3487 (p_interface_type, fnd_message.get_string('PON','PON_ADVANCE_AMOUNT_FLAG'), 'PON_BID_ITEM_PRICES', --1
3488 p_batch_id, s_interface_line_id, 'PON_ADV_AMT_MORE_L', --2
3489 p_userid, sysdate, p_userid, --3
3490 sysdate, p_request_id, 'BID_ITEMS', --4
3491 NULL, bid_curr_advance_amount, 'NUM', --5
3492 p_auc_header_id, p_bid_number, s_line_number, --6
3493 g_exp_date, 'LINENUM', Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),--s_document_disp_line_number, --7
3494
3495 s_worksheet_name, s_worksheet_sequence_number, s_entity_message_code) --8
3496 WHEN
3497 -- added by Allen Yang for Surrogate Bid 2008/09/03
3498 ---------------------------------------------------
3499 p_two_part_tech_surrogate_flag = 'N' AND
3500 ---------------------------------------------------
3501 (p_spreadsheet = g_online_mode OR p_spreadsheet = g_xml_upload_mode) AND progress_payment_type = 'FINANCE' AND
3502 recoupment_rate_percent IS NOT NULL AND progress_pymt_rate_percent IS NOT NULL AND
3503 s_bid_currency_unit_price IS NOT NULL AND
3504 recoupment_rate_percent < (((((progress_pymt_rate_percent/100) * (SELECT nvl(sum(nvl(bid_currency_price,0)*nvl(quantity,nvl(s_bid_quantity,1))),0)
3505 FROM PON_BID_PAYMENTS_SHIPMENTS p_bps
3506 WHERE p_bps.auction_header_id=p_auc_header_id
3507 AND p_bps.bid_line_number=s_line_number
3508 AND p_bps.bid_number=p_bid_number))
3509 + nvl(bid_curr_advance_amount,0)) * 100)/((nvl(s_bid_quantity, 1) * s_bid_currency_unit_price))) THEN
3510 INTO pon_interface_errors
3511 (INTERFACE_TYPE, COLUMN_NAME, TABLE_NAME, --1
3512 BATCH_ID, INTERFACE_LINE_ID, ERROR_MESSAGE_NAME, --2
3513 CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, --3
3514 LAST_UPDATE_DATE, REQUEST_ID, ENTITY_TYPE, --4
3515 ENTITY_ATTR_NAME, ERROR_VALUE_NUMBER, ERROR_VALUE_DATATYPE, --5
3516 AUCTION_HEADER_ID, BID_NUMBER, LINE_NUMBER, --6
3517 EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,--7
3518 WORKSHEET_NAME, WORKSHEET_SEQUENCE_NUMBER, ENTITY_MESSAGE_CODE) --8
3519 VALUES
3520 (p_interface_type, fnd_message.get_string('PON','PON_RECOUPMENT_RATE'), 'PON_BID_ITEM_PRICES', --1
3521 p_batch_id, s_interface_line_id, 'PON_RECOUP_LESS_THAN_PYMT_L', --2
3522 p_userid, sysdate, p_userid, --3
3523 sysdate, p_request_id, 'BID_ITEMS', --4
3524 NULL, recoupment_rate_percent, 'NUM', --5
3525 p_auc_header_id, p_bid_number, s_line_number, --6
3526 g_exp_date, 'LINENUM',
3527 --s_document_disp_line_number,
3528 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),--7
3529 s_worksheet_name, s_worksheet_sequence_number, s_entity_message_code) --8
3530 WHEN
3531 -- added by Allen Yang for Surrogate Bid 2008/09/03
3532 ---------------------------------------------------
3533 p_two_part_tech_surrogate_flag = 'N' AND
3534 ---------------------------------------------------
3535 (p_spreadsheet = g_online_mode OR p_spreadsheet = g_xml_upload_mode) AND progress_payment_type = 'ACTUAL' AND
3536 recoupment_rate_percent IS NOT NULL AND bid_curr_advance_amount IS NOT NULL AND
3537 s_bid_currency_unit_price IS NOT NULL AND
3538 recoupment_rate_percent <((bid_curr_advance_amount * 100)/(nvl(s_bid_quantity,1) * s_bid_currency_unit_price)) THEN
3539 INTO pon_interface_errors
3540 (INTERFACE_TYPE, COLUMN_NAME, TABLE_NAME, --1
3541 BATCH_ID, INTERFACE_LINE_ID, ERROR_MESSAGE_NAME, --2
3542 CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, --3
3543 LAST_UPDATE_DATE, REQUEST_ID, ENTITY_TYPE, --4
3544 ENTITY_ATTR_NAME, ERROR_VALUE_NUMBER, ERROR_VALUE_DATATYPE, --5
3545 AUCTION_HEADER_ID, BID_NUMBER, LINE_NUMBER, --6
3546 EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,--7
3547 WORKSHEET_NAME, WORKSHEET_SEQUENCE_NUMBER, ENTITY_MESSAGE_CODE) --8
3548 VALUES
3549 (p_interface_type, fnd_message.get_string('PON','PON_RECOUPMENT_RATE'), 'PON_BID_ITEM_PRICES', --1
3550 p_batch_id, s_interface_line_id, 'PON_RECOUP_LESS_THAN_ADV_L', --2
3551 p_userid, sysdate, p_userid, --3
3552 sysdate, p_request_id, 'BID_ITEMS', --4
3553 NULL, recoupment_rate_percent, 'NUM', --5
3554 p_auc_header_id, p_bid_number, s_line_number, --6
3555 g_exp_date, 'LINENUM', Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number), --7
3556 --s_document_disp_line_number,
3557 s_worksheet_name, s_worksheet_sequence_number, s_entity_message_code) --8
3558 WHEN
3559 -- added by Allen Yang for Surrogate Bid 2008/09/03
3560 ---------------------------------------------------
3561 p_two_part_tech_surrogate_flag = 'N' AND
3565 has_bid_payments_flag = 'Y' AND
3562 ---------------------------------------------------
3563 (p_spreadsheet = g_online_mode OR p_spreadsheet = g_xml_upload_mode) AND progress_payment_type = 'ACTUAL' AND
3564 s_group_type NOT IN ('GROUP','LOT_LINE') AND
3566 s_bid_currency_unit_price IS NOT NULL AND
3567 round(nvl(s_bid_quantity,1)* s_bid_currency_unit_price,p_amt_precision) <> s_sum_pymt_amt --bug 14657112
3568 THEN
3569 INTO pon_interface_errors
3570 (INTERFACE_TYPE, COLUMN_NAME, TABLE_NAME, --1
3571 BATCH_ID, INTERFACE_LINE_ID, ERROR_MESSAGE_NAME, --2
3572 CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, --3
3573 LAST_UPDATE_DATE, REQUEST_ID, ENTITY_TYPE, --4
3574 ENTITY_ATTR_NAME, ERROR_VALUE, ERROR_VALUE_DATATYPE, --5
3575 AUCTION_HEADER_ID, BID_NUMBER, LINE_NUMBER, --6
3576 EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
3577 TOKEN2_NAME, TOKEN2_VALUE,
3578 TOKEN3_NAME, TOKEN3_VALUE,
3579 WORKSHEET_NAME, WORKSHEET_SEQUENCE_NUMBER, ENTITY_MESSAGE_CODE) --7
3580 VALUES
3581 (p_interface_type, NULL, 'PON_BID_ITEM_PRICES', --1
3582 p_batch_id, s_interface_line_id, 'PON_PYMNT_AMT_MORE_ACTUAL', --2
3583 p_userid, sysdate, p_userid, --3
3584 sysdate, p_request_id, 'BID_ITEMS', --4
3585 NULL, NULL, 'TXT', --5
3586 p_auc_header_id, p_bid_number, s_line_number, --6
3587 g_exp_date,
3588 'LINEAMT', round(nvl(s_bid_quantity,1)* s_bid_currency_unit_price,p_amt_precision),
3589 'PYMTAMT', s_sum_pymt_amt,
3590 'LINENUM', s_document_disp_line_number,
3591 s_worksheet_name, s_worksheet_sequence_number, s_entity_message_code) --7
3592 WHEN
3593 -- added by Allen Yang for Surrogate Bid 2008/09/03
3594 ---------------------------------------------------
3595 p_two_part_tech_surrogate_flag = 'N' AND
3596 ---------------------------------------------------
3597 (p_spreadsheet = g_online_mode OR p_spreadsheet = g_xml_upload_mode ) AND progress_payment_type = 'FINANCE' AND
3598 has_bid_payments_flag = 'Y' AND
3599 s_group_type NOT IN ('GROUP','LOT_LINE') AND
3600 s_bid_currency_unit_price IS NOT NULL AND
3601 (nvl(s_bid_quantity,1)* s_bid_currency_unit_price)- nvl(bid_curr_advance_amount,0) < (SELECT nvl(sum(nvl(bid_currency_price,0) * DECODE(s_order_type_lookup_code,'GOODS',NVL(s_auc_quantity,1),NVL(quantity,1))),0)
3602 FROM pon_bid_payments_shipments
3603 WHERE auction_header_id = p_auc_header_id
3604 AND bid_number = p_bid_number
3605 AND bid_line_number = s_line_number) THEN
3606 INTO pon_interface_errors
3607 (INTERFACE_TYPE, COLUMN_NAME, TABLE_NAME, --1
3608 BATCH_ID, INTERFACE_LINE_ID, ERROR_MESSAGE_NAME, --2
3609 CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, --3
3610 LAST_UPDATE_DATE, REQUEST_ID, ENTITY_TYPE, --4
3611 ENTITY_ATTR_NAME, ERROR_VALUE, ERROR_VALUE_DATATYPE, --5
3612 AUCTION_HEADER_ID, BID_NUMBER, LINE_NUMBER, --6
3613 EXPIRATION_DATE, TOKEN1_NAME, TOKEN1_VALUE,
3614 WORKSHEET_NAME, WORKSHEET_SEQUENCE_NUMBER, ENTITY_MESSAGE_CODE) --7
3615 VALUES
3616 (p_interface_type, NULL, 'PON_BID_ITEM_PRICES', --1
3617 p_batch_id, s_interface_line_id, 'PON_PYMNT_AMT_MORE_FINANCE', --2
3618 p_userid, sysdate, p_userid, --3
3619 sysdate, p_request_id, 'BID_ITEMS', --4
3620 NULL, NULL, 'TXT', --5
3621 p_auc_header_id, p_bid_number, s_line_number, --6
3622 g_exp_date, 'LINENUM', Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),--s_document_disp_line_number,
3623 s_worksheet_name, s_worksheet_sequence_number, s_entity_message_code) --7
3624 -- bid_curr_advance_amount should not exceed currency precision
3625 WHEN
3626 -- added by Allen Yang for Surrogate Bid 2008/09/03
3627 ---------------------------------------------------
3628 p_two_part_tech_surrogate_flag = 'N' AND
3629 ---------------------------------------------------
3630 bid_curr_advance_amount IS NOT NULL AND
3631 validate_currency_precision(bid_curr_advance_amount, p_amt_precision) = 'F' THEN
3632 INTO pon_interface_errors
3633 (INTERFACE_TYPE, COLUMN_NAME, TABLE_NAME, --1
3634 BATCH_ID, INTERFACE_LINE_ID, ERROR_MESSAGE_NAME, --2
3635 CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, --3
3636 LAST_UPDATE_DATE, REQUEST_ID, ENTITY_TYPE, --4
3637 ENTITY_ATTR_NAME, ERROR_VALUE_NUMBER, ERROR_VALUE_DATATYPE, --5
3638 AUCTION_HEADER_ID, BID_NUMBER, LINE_NUMBER, --6
3639 BID_PAYMENT_ID, EXPIRATION_DATE, TOKEN1_NAME, --7
3640 TOKEN1_VALUE, TOKEN2_NAME, TOKEN2_VALUE,
3641 WORKSHEET_NAME, WORKSHEET_SEQUENCE_NUMBER, ENTITY_MESSAGE_CODE) --8
3642 VALUES
3643 (p_interface_type, fnd_message.get_string('PON','PON_ADVANCE_AMOUNT_FLAG'), 'PON_BID_ITEM_PRICES', --1
3644 p_batch_id, s_interface_line_id, 'PON_LINEAMT_INVALID_PRECISION', --2
3645 p_userid, sysdate, p_userid, --3
3646 sysdate, p_request_id, 'BID_ITEMS', --4
3647 'BidCurrAdvanceAmount', bid_curr_advance_amount, 'NUM', --5
3648 p_auc_header_id, p_bid_number, s_line_number, --6
3649 NULL, g_exp_date, 'LINENUM', --7
3650 --s_document_disp_line_number,
3651 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number), 'ATTRIBUTENAME', fnd_message.get_string('PON','PON_ADVANCE_AMOUNT_FLAG'),
3652 s_worksheet_name, s_worksheet_sequence_number, s_entity_message_code) --8
3653 -- bid_curr_max_retainage_amt should not exceed currency precision
3654 WHEN
3655 -- added by Allen Yang for Surrogate Bid 2008/09/03
3656 ---------------------------------------------------
3657 p_two_part_tech_surrogate_flag = 'N' AND
3658 ---------------------------------------------------
3659 bid_curr_max_retainage_amt IS NOT NULL AND
3660 validate_currency_precision(bid_curr_max_retainage_amt, p_amt_precision) = 'F' THEN
3661 INTO pon_interface_errors
3662 (INTERFACE_TYPE, COLUMN_NAME, TABLE_NAME, --1
3663 BATCH_ID, INTERFACE_LINE_ID, ERROR_MESSAGE_NAME, --2
3664 CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, --3
3665 LAST_UPDATE_DATE, REQUEST_ID, ENTITY_TYPE, --4
3666 ENTITY_ATTR_NAME, ERROR_VALUE_NUMBER, ERROR_VALUE_DATATYPE, --5
3667 AUCTION_HEADER_ID, BID_NUMBER, LINE_NUMBER, --6
3668 BID_PAYMENT_ID, EXPIRATION_DATE, TOKEN1_NAME, --7
3669 TOKEN1_VALUE, TOKEN2_NAME, TOKEN2_VALUE, WORKSHEET_NAME, WORKSHEET_SEQUENCE_NUMBER, ENTITY_MESSAGE_CODE) --8
3670 VALUES
3671 (p_interface_type, fnd_message.get_string('PON','PON_MAX_RETAINAGE_AMOUNT'), 'PON_BID_ITEM_PRICES', --1
3672 p_batch_id, s_interface_line_id, 'PON_LINEAMT_INVALID_PRECISION', --2
3673 p_userid, sysdate, p_userid, --3
3674 sysdate, p_request_id, 'BID_ITEMS', --4
3675 'BidCurrMaxRetainageAmt', bid_curr_max_retainage_amt, 'NUM', --5
3676 p_auc_header_id, p_bid_number, s_line_number, --6
3677 NULL, g_exp_date, 'LINENUM', --7
3678 --s_document_disp_line_number,
3679 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number), 'ATTRIBUTENAME', fnd_message.get_string('PON','PON_MAX_RETAINAGE_AMOUNT'),
3680 s_worksheet_name, s_worksheet_sequence_number, s_entity_message_code) --8
3681 -- progress_pymt_rate_percent should not exceed currency precision
3682 WHEN
3683 -- added by Allen Yang for Surrogate Bid 2008/09/03
3684 ---------------------------------------------------
3685 p_two_part_tech_surrogate_flag = 'N' AND
3686 ---------------------------------------------------
3687 progress_pymt_rate_percent IS NOT NULL AND
3688 validate_currency_precision(progress_pymt_rate_percent, 2) = 'F' THEN
3689 INTO pon_interface_errors
3690 (INTERFACE_TYPE, COLUMN_NAME, TABLE_NAME, --1
3691 BATCH_ID, INTERFACE_LINE_ID, ERROR_MESSAGE_NAME, --2
3692 CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, --3
3693 LAST_UPDATE_DATE, REQUEST_ID, ENTITY_TYPE, --4
3694 ENTITY_ATTR_NAME, ERROR_VALUE_NUMBER, ERROR_VALUE_DATATYPE, --5
3695 AUCTION_HEADER_ID, BID_NUMBER, LINE_NUMBER, --6
3696 BID_PAYMENT_ID, EXPIRATION_DATE, TOKEN1_NAME, --7
3697 TOKEN1_VALUE, TOKEN2_NAME, TOKEN2_VALUE, WORKSHEET_NAME, WORKSHEET_SEQUENCE_NUMBER, ENTITY_MESSAGE_CODE) --8
3698 VALUES
3699 (p_interface_type, fnd_message.get_string('PON','PON_PROGRESS_PYMT_RATE'), 'PON_BID_ITEM_PRICES', --1
3700 p_batch_id, s_interface_line_id, 'PON_INVALID_RATE_PRECISION_L', --2
3701 p_userid, sysdate, p_userid, --3
3702 sysdate, p_request_id, 'BID_ITEMS', --4
3703 'ProgressPymtRatePercent', progress_pymt_rate_percent, 'NUM', --5
3704 p_auc_header_id, p_bid_number, s_line_number, --6
3705 NULL, g_exp_date, 'LINENUM', --7
3706 --s_document_disp_line_number,
3707 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number), 'ATTRIBUTENAME', fnd_message.get_string('PON','PON_PROGRESS_PYMT_RATE'),
3708 s_worksheet_name, s_worksheet_sequence_number, s_entity_message_code) --8
3709 -- retainage_rate_percent should not exceed currency precision
3710 WHEN
3711 -- added by Allen Yang for Surrogate Bid 2008/09/03
3712 ---------------------------------------------------
3713 p_two_part_tech_surrogate_flag = 'N' AND
3714 ---------------------------------------------------
3715 retainage_rate_percent IS NOT NULL AND
3716 validate_currency_precision(retainage_rate_percent, 2) = 'F' THEN
3717 INTO pon_interface_errors
3718 (INTERFACE_TYPE, COLUMN_NAME, TABLE_NAME, --1
3719 BATCH_ID, INTERFACE_LINE_ID, ERROR_MESSAGE_NAME, --2
3720 CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, --3
3721 LAST_UPDATE_DATE, REQUEST_ID, ENTITY_TYPE, --4
3722 ENTITY_ATTR_NAME, ERROR_VALUE_NUMBER, ERROR_VALUE_DATATYPE, --5
3723 AUCTION_HEADER_ID, BID_NUMBER, LINE_NUMBER, --6
3724 BID_PAYMENT_ID, EXPIRATION_DATE, TOKEN1_NAME, --7
3725 TOKEN1_VALUE, TOKEN2_NAME, TOKEN2_VALUE, WORKSHEET_NAME, WORKSHEET_SEQUENCE_NUMBER, ENTITY_MESSAGE_CODE) --8
3726 VALUES
3727 (p_interface_type, fnd_message.get_string('PON','PON_RETAINAGE_RATE'), 'PON_BID_ITEM_PRICES', --1
3728 p_batch_id, s_interface_line_id, 'PON_INVALID_RATE_PRECISION_L', --2
3729 p_userid, sysdate, p_userid, --3
3730 sysdate, p_request_id, 'BID_ITEMS', --4
3731 'RetainageRatePercent', retainage_rate_percent, 'NUM', --5
3732 p_auc_header_id, p_bid_number, s_line_number, --6
3733 NULL, g_exp_date, 'LINENUM', --7
3734 --s_document_disp_line_number,
3735 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number), 'ATTRIBUTENAME', fnd_message.get_string('PON','PON_RETAINAGE_RATE'),
3736 s_worksheet_name, s_worksheet_sequence_number, s_entity_message_code) --8
3737 -- recoupment_rate_percent should not exceed currency precision
3738 WHEN
3739 -- added by Allen Yang for Surrogate Bid 2008/09/03
3740 ---------------------------------------------------
3741 p_two_part_tech_surrogate_flag = 'N' AND
3742 ---------------------------------------------------
3743 recoupment_rate_percent IS NOT NULL AND
3744 validate_currency_precision(recoupment_rate_percent, 2) = 'F' THEN
3745 INTO pon_interface_errors
3746 (INTERFACE_TYPE, COLUMN_NAME, TABLE_NAME, --1
3747 BATCH_ID, INTERFACE_LINE_ID, ERROR_MESSAGE_NAME, --2
3748 CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, --3
3749 LAST_UPDATE_DATE, REQUEST_ID, ENTITY_TYPE, --4
3750 ENTITY_ATTR_NAME, ERROR_VALUE_NUMBER, ERROR_VALUE_DATATYPE, --5
3751 AUCTION_HEADER_ID, BID_NUMBER, LINE_NUMBER, --6
3752 BID_PAYMENT_ID, EXPIRATION_DATE, TOKEN1_NAME, --7
3753 TOKEN1_VALUE, TOKEN2_NAME, TOKEN2_VALUE, WORKSHEET_NAME,WORKSHEET_SEQUENCE_NUMBER, ENTITY_MESSAGE_CODE) --8
3754 VALUES
3755 (p_interface_type, fnd_message.get_string('PON','PON_RECOUPMENT_RATE'), 'PON_BID_ITEM_PRICES', --1
3756 p_batch_id, s_interface_line_id, 'PON_INVALID_RATE_PRECISION_L', --2
3757 p_userid, sysdate, p_userid, --3
3758 sysdate, p_request_id, 'BID_ITEMS', --4
3759 'RecoupmentRatePercent', recoupment_rate_percent, 'NUM', --5
3760 p_auc_header_id, p_bid_number, s_line_number, --6
3761 NULL, g_exp_date, 'LINENUM', --7
3762 --s_document_disp_line_number,
3763 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number), 'ATTRIBUTENAME', fnd_message.get_string('PON','PON_RECOUPMENT_RATE'),
3764 s_worksheet_name, s_worksheet_sequence_number, s_entity_message_code) --8
3765 SELECT
3766 al.group_type s_group_type,
3767 bl.quantity s_bid_quantity,
3768 bl.bid_currency_unit_price s_bid_currency_unit_price,
3769 bl.bid_curr_advance_amount,
3770 bl.bid_curr_max_retainage_amt,
3771 bl.recoupment_rate_percent,
3772 bl.retainage_rate_percent,
3773 bl.progress_pymt_rate_percent,
3774 bl.has_bid_payments_flag,
3775 bl.line_number s_line_number,
3776 decode(p_spreadsheet, g_txt_upload_mode, bl.interface_line_id,
3777 g_xml_upload_mode, bl.interface_line_id,
3778 to_number(null)) s_interface_line_id,
3779 al.document_disp_line_number s_document_disp_line_number,
3780 al.order_type_lookup_code s_order_type_lookup_code,
3781 al.quantity s_auc_quantity,
3782 pah.progress_payment_type,
3783 pah.advance_negotiable_flag,
3784 pah.retainage_negotiable_flag,
3785 pah.max_retainage_negotiable_flag,
3786 pah.recoupment_negotiable_flag,
3790 decode(p_spreadsheet, g_xml_upload_mode, bl.worksheet_sequence_number, to_number(null)) s_worksheet_sequence_number,
3787 pah.progress_pymt_negotiable_flag,
3788 pah.contract_type,
3789 decode(p_spreadsheet, g_xml_upload_mode, bl.worksheet_name, to_char(null)) s_worksheet_name,
3791 decode(p_spreadsheet, g_xml_upload_mode, 'PON_AUC_ITEMS', to_char(null)) s_entity_message_code,
3792 al.line_num_display s_clm_line_num_display,
3793 (SELECT nvl(Sum (round(NVL(pbps.bid_currency_price,0) * NVL(pbps.quantity,nvl(bl.quantity,1)),p_amt_precision)),0)
3794 FROM pon_bid_payments_shipments pbps
3795 WHERE pbps.auction_header_id = p_auc_header_id
3796 AND pbps.bid_number = p_bid_number
3797 AND pbps.bid_line_number = bl.line_number) s_sum_pymt_amt --bug 14657112
3798 FROM pon_auction_item_prices_all al, pon_bid_item_prices bl, pon_auction_headers_all pah
3799 WHERE al.auction_header_id = p_auc_header_id
3800 AND bl.bid_number = p_bid_number
3801 AND pah.auction_header_id = p_auc_header_id
3802 AND al.line_number = bl.line_number
3803 AND bl.is_changed_line_flag = 'Y'
3804 AND (p_spreadsheet = g_online_mode OR bl.batch_id = p_batch_id);
3805
3806 END validate_lines;
3807
3808 PROCEDURE validate_requirements
3809 (
3810 p_auc_header_id IN pon_bid_item_prices.auction_header_id%TYPE,
3811 p_bid_number IN pon_bid_item_prices.bid_number%TYPE,
3812 p_interface_type IN pon_interface_errors.interface_type%TYPE,
3813 p_userid IN pon_interface_errors.created_by%TYPE,
3814 p_spreadsheet IN VARCHAR2,
3815 p_suffix IN VARCHAR2,
3816 p_batch_id IN pon_interface_errors.batch_id%TYPE,
3817 p_request_id IN pon_interface_errors.request_id%TYPE
3818 -- added by Allen Yang for Surrogate Bid 2008/09/03
3819 ---------------------------------------------------
3820 , p_two_part_tech_surrogate_flag IN VARCHAR2
3821 ---------------------------------------------------
3822 ) IS
3823 BEGIN
3824
3825 INSERT FIRST
3826
3827 -- value must be entered if it is a required requirement
3828 -- added the s_evaluation_flag condition for ER: Supplier Management: Supplier Evaluation
3829 WHEN (s_mandatory_flag = 'Y' AND s_value IS null AND s_evaluation_flag = 'N'
3830 --added by Allen Yang for Surrogate Bid 2008/09/03
3831 -------------------------------------------------------------------
3832 AND p_two_part_tech_surrogate_flag = 'N') OR (s_mandatory_flag = 'Y'
3833 AND s_value IS null AND p_two_part_tech_surrogate_flag = 'Y'
3834 AND s_two_part_section_type = 'TECHNICAL')
3835 -------------------------------------------------------------------
3836 THEN
3837 INTO pon_interface_errors
3838 (INTERFACE_TYPE,
3839 COLUMN_NAME,
3840 TABLE_NAME,
3841 BATCH_ID,
3842 INTERFACE_LINE_ID,
3843 ERROR_MESSAGE_NAME,
3844 CREATED_BY,
3845 CREATION_DATE,
3846 LAST_UPDATED_BY,
3847 LAST_UPDATE_DATE,
3848 REQUEST_ID,
3849 ENTITY_TYPE,
3850 ENTITY_ATTR_NAME,
3851 ERROR_VALUE_DATATYPE,
3852 AUCTION_HEADER_ID,
3853 BID_NUMBER,
3854 ATTRIBUTE_NAME,
3855 EXPIRATION_DATE,
3856 TOKEN1_NAME,
3857 TOKEN1_VALUE,
3858 WORKSHEET_NAME,
3859 WORKSHEET_SEQUENCE_NUMBER,
3860 ENTITY_MESSAGE_CODE)
3861 VALUES
3862 (p_interface_type,
3863 fnd_message.get_string('PON', 'PON_AUCTS_BID_VALUE' || p_suffix),
3864 'PON_BID_ATTRIBUTE_VALUES',
3865 p_batch_id,
3866 s_interface_line_id,
3867 'PON_AUC_HDR_ATTR_REQ' || p_suffix,
3868 p_userid,
3869 sysdate,
3870 p_userid,
3871 sysdate,
3872 p_request_id,
3873 'BID_ATTRS',
3874 'Value',
3875 'TXT',
3876 p_auc_header_id,
3877 p_bid_number,
3878 s_attribute_name,
3879 g_exp_date,
3880 'ATTRIBUTENAME',
3881 s_trunc_attr_name,
3882 s_worksheet_name,
3883 s_worksheet_sequence_number,
3884 s_entity_message_code)
3885
3886 -- value must be among buyer specified values if type is LOV
3887 WHEN p_spreadsheet in (g_txt_upload_mode, g_xml_upload_mode) AND s_scoring_type = 'LOV' AND s_value is not NULL AND NOT EXISTS
3888 (SELECT bs.score
3889 FROM pon_attribute_scores bs
3890 WHERE bs.auction_header_id = p_auc_header_id
3891 AND bs.line_number = s_line_number
3892 AND bs.attribute_sequence_number = s_sequence_number
3893 AND bs.value = s_value) THEN
3894 INTO pon_interface_errors
3895 (INTERFACE_TYPE,
3896 COLUMN_NAME,
3897 TABLE_NAME,
3898 BATCH_ID,
3899 INTERFACE_LINE_ID,
3900 ERROR_MESSAGE_NAME,
3901 CREATED_BY,
3902 CREATION_DATE,
3903 LAST_UPDATED_BY,
3904 LAST_UPDATE_DATE,
3905 REQUEST_ID,
3906 ENTITY_TYPE,
3907 ENTITY_ATTR_NAME,
3908 ERROR_VALUE,
3909 ERROR_VALUE_DATATYPE,
3910 AUCTION_HEADER_ID,
3911 BID_NUMBER,
3912 LINE_NUMBER,
3913 ATTRIBUTE_NAME,
3914 EXPIRATION_DATE,
3915 WORKSHEET_NAME,
3916 WORKSHEET_SEQUENCE_NUMBER,
3917 ENTITY_MESSAGE_CODE)
3918 VALUES
3919 (p_interface_type,
3920 fnd_message.get_string('PON', 'PON_AUCTS_BID_VALUE' || p_suffix),
3921 'PON_BID_ATTRIBUTE_VALUES',
3922 p_batch_id,
3923 s_interface_line_id,
3924 'PON_AUC_INVALID_ATTR_VALUE' || p_suffix,
3925 p_userid,
3926 sysdate,
3927 p_userid,
3928 sysdate,
3929 p_request_id,
3930 'BID_ATTRS',
3931 'Value',
3932 s_value,
3933 'TXT',
3934 p_auc_header_id,
3935 p_bid_number,
3936 s_line_number,
3937 s_attribute_name,
3938 g_exp_date,
3939 s_worksheet_name,
3940 s_worksheet_sequence_number,
3941 s_entity_message_code)
3942
3943 SELECT
3944 ba.value s_value,
3945 ba.line_number s_line_number,
3946 ba.sequence_number s_sequence_number,
3947 ba.attribute_name s_attribute_name,
3948 -- bug 8411749 using SUBSTRB instead of SUBSTR
3949 -- to calculate the length of the string in bytes
3950 substrb(ba.attribute_name, 0, 2000) s_trunc_attr_name,
3951 aa.mandatory_flag s_mandatory_flag,
3952 aa.scoring_type s_scoring_type,
3953 decode(p_spreadsheet, g_xml_upload_mode, ba.interface_line_id, null) s_interface_line_id,
3954 decode(p_spreadsheet, g_xml_upload_mode, ba.worksheet_name, null) s_worksheet_name,
3955 decode(p_spreadsheet, g_xml_upload_mode, ba.worksheet_sequence_number, null) s_worksheet_sequence_number,
3956 decode(p_spreadsheet, g_xml_upload_mode, 'PON_AUC_REQUIREMENTS', null) s_entity_message_code
3957 --added by Allen Yang for Surrogate Bid 2008/09/03
3958 ---------------------------------------------------
3959 , pas.two_part_section_type s_two_part_section_type
3960 ---------------------------------------------------
3961 ---- Supplier Management: Supplier Evaluation -----
3962 , nvl(pbh.evaluation_flag, 'N') s_evaluation_flag
3963 ---------------------------------------------------
3964 FROM pon_bid_attribute_values ba, pon_auction_attributes aa
3965 --added by Allen Yang for Surrogate Bid 2008/09/03
3966 ---------------------------------------------------
3967 , pon_auction_sections pas
3968 ---------------------------------------------------
3969 ---- Supplier Management: Supplier Evaluation -----
3970 , pon_bid_headers pbh
3971 ---------------------------------------------------
3972 WHERE ba.bid_number = p_bid_number
3973 AND ba.line_number = -1
3974 AND aa.auction_header_id = ba.auction_header_id
3975 AND aa.line_number = ba.line_number
3976 AND aa.sequence_number = ba.sequence_number
3977 AND (p_spreadsheet = g_online_mode OR ba.batch_id = p_batch_id)
3978 --added by Allen Yang for Surrogate Bid 2008/09/03
3979 ---------------------------------------------------
3980 AND pas.auction_header_id = aa.auction_header_id
3981 AND pas.section_name = aa.section_name
3982 ---------------------------------------------------
3983 ---- Supplier Management: Supplier Evaluation -----
3984 AND pbh.auction_header_id = ba.auction_header_id
3985 AND pbh.bid_number = ba.bid_number
3986 ---------------------------------------------------
3987 ;
3988
3989 END validate_requirements;
3990
3991
3992 PROCEDURE validate_attributes
3993 (
3994 p_auc_header_id IN pon_bid_item_prices.auction_header_id%TYPE,
3995 p_bid_number IN pon_bid_item_prices.bid_number%TYPE,
3996 p_interface_type IN pon_interface_errors.interface_type%TYPE,
3997 p_userid IN pon_interface_errors.created_by%TYPE,
3998 p_spreadsheet IN VARCHAR2,
3999 p_suffix IN VARCHAR2,
4000 p_batch_id IN pon_interface_errors.batch_id%TYPE,
4001 p_request_id IN pon_interface_errors.request_id%TYPE
4002 ) IS
4003 BEGIN
4004
4005 INSERT FIRST
4006
4007 -- value must be entered if it is a required attribute
4008 WHEN s_mandatory_flag = 'Y' AND s_value IS null THEN
4009 INTO pon_interface_errors
4010 (INTERFACE_TYPE,
4011 COLUMN_NAME,
4012 TABLE_NAME,
4013 BATCH_ID,
4014 INTERFACE_LINE_ID,
4015 ERROR_MESSAGE_NAME,
4016 CREATED_BY,
4017 CREATION_DATE,
4018 LAST_UPDATED_BY,
4019 LAST_UPDATE_DATE,
4020 REQUEST_ID,
4021 ENTITY_TYPE,
4022 ENTITY_ATTR_NAME,
4023 ERROR_VALUE_DATATYPE,
4024 AUCTION_HEADER_ID,
4025 BID_NUMBER,
4026 LINE_NUMBER,
4027 ATTRIBUTE_NAME,
4028 EXPIRATION_DATE,
4029 TOKEN1_NAME,
4030 TOKEN1_VALUE,
4031 TOKEN2_NAME,
4032 TOKEN2_VALUE,
4033 WORKSHEET_NAME,
4034 WORKSHEET_SEQUENCE_NUMBER,
4035 ENTITY_MESSAGE_CODE)
4036 VALUES
4037 (p_interface_type,
4038 fnd_message.get_string('PON', 'PON_AUCTS_BID_VALUE' || p_suffix),
4039 'PON_BID_ATTRIBUTE_VALUES',
4040 p_batch_id,
4041 s_interface_line_id,
4042 'PON_AUC_ATTR_VALUE_REQ' || p_suffix,
4043 p_userid,
4044 sysdate,
4045 p_userid,
4046 sysdate,
4047 p_request_id,
4048 'BID_ATTRS',
4049 'Value',
4050 'TXT',
4051 p_auc_header_id,
4052 p_bid_number,
4053 s_line_number,
4054 s_attribute_name,
4055 g_exp_date,
4056 'LINENUMBER',
4057 --s_document_disp_line_number,
4058 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
4059 'ATTRIBUTENAME',
4060 s_trunc_attr_name,
4061 s_worksheet_name,
4062 s_worksheet_sequence_number,
4063 s_entity_message_code)
4064
4065 -- value must be among buyer specified values if type is LOV
4066 WHEN p_spreadsheet in (g_txt_upload_mode, g_xml_upload_mode) AND s_scoring_type = 'LOV' AND s_value is not NULL AND NOT EXISTS
4067 (SELECT bs.score
4068 FROM pon_attribute_scores bs
4069 WHERE bs.auction_header_id = p_auc_header_id
4070 AND bs.line_number = s_line_number
4071 AND bs.attribute_sequence_number = s_sequence_number
4072 AND bs.value = s_value) THEN
4073 INTO pon_interface_errors
4074 (INTERFACE_TYPE,
4075 COLUMN_NAME,
4076 TABLE_NAME,
4077 BATCH_ID,
4078 INTERFACE_LINE_ID,
4079 ERROR_MESSAGE_NAME,
4080 CREATED_BY,
4081 CREATION_DATE,
4082 LAST_UPDATED_BY,
4083 LAST_UPDATE_DATE,
4084 REQUEST_ID,
4085 ENTITY_TYPE,
4086 ENTITY_ATTR_NAME,
4087 ERROR_VALUE,
4088 ERROR_VALUE_DATATYPE,
4089 AUCTION_HEADER_ID,
4090 BID_NUMBER,
4091 LINE_NUMBER,
4092 ATTRIBUTE_NAME,
4093 EXPIRATION_DATE,
4094 WORKSHEET_NAME,
4095 WORKSHEET_SEQUENCE_NUMBER,
4096 ENTITY_MESSAGE_CODE)
4097 VALUES
4098 (p_interface_type,
4099 fnd_message.get_string('PON', 'PON_AUCTS_BID_VALUE' || p_suffix),
4100 'PON_BID_ATTRIBUTE_VALUES',
4101 p_batch_id,
4102 s_interface_line_id,
4103 'PON_AUC_INVALID_ATTR_VALUE' || p_suffix,
4104 p_userid,
4105 sysdate,
4106 p_userid,
4107 sysdate,
4108 p_request_id,
4109 'BID_ATTRS',
4110 'Value',
4111 s_value,
4112 'TXT',
4113 p_auc_header_id,
4114 p_bid_number,
4115 s_line_number,
4116 s_attribute_name,
4117 g_exp_date,
4118 s_worksheet_name,
4119 s_worksheet_sequence_number,
4120 s_entity_message_code)
4121
4122 SELECT
4123 ba.value s_value,
4124 ba.line_number s_line_number,
4125 ba.sequence_number s_sequence_number,
4126 ba.attribute_name s_attribute_name,
4127 substr(ba.attribute_name, 0, 2000) s_trunc_attr_name,
4128 aa.mandatory_flag s_mandatory_flag,
4129 aa.scoring_type s_scoring_type,
4130 al.document_disp_line_number s_document_disp_line_number,
4131 decode(p_spreadsheet, g_xml_upload_mode, ba.interface_line_id, g_txt_upload_mode, bl.interface_line_id, null) s_interface_line_id,
4132 decode(p_spreadsheet, g_xml_upload_mode, bl.worksheet_name, null) s_worksheet_name,
4133 decode(p_spreadsheet, g_xml_upload_mode, bl.worksheet_sequence_number, null) s_worksheet_sequence_number,
4134 decode(p_spreadsheet, g_xml_upload_mode, 'PON_AUC_ATTRIBUTES', null) s_entity_message_code,
4135 al.line_num_display s_clm_line_num_display
4136 FROM pon_bid_attribute_values ba
4137 , pon_auction_attributes aa
4138 , pon_auction_item_prices_all al
4139 , pon_bid_item_prices bl
4140 , pon_bid_headers pbh
4141 WHERE ba.bid_number = p_bid_number
4142 AND ba.line_number <> -1
4143 AND aa.auction_header_id = ba.auction_header_id
4144 AND aa.line_number = ba.line_number
4145 AND aa.sequence_number = ba.sequence_number
4146 AND al.auction_header_id = ba.auction_header_id
4147 AND al.line_number = ba.line_number
4148 AND bl.bid_number = ba.bid_number
4149 AND bl.line_number = ba.line_number
4153 AND (pbh.SURROG_BID_FLAG = 'Y' OR nvl(al.close_bidding_date, sysdate+1) > sysdate);
4150 AND nvl(bl.is_changed_line_flag, 'Y') = 'Y'
4151 AND (p_spreadsheet = g_online_mode OR bl.batch_id = p_batch_id)
4152 AND pbh.bid_number = bl.bid_number
4154
4155 END validate_attributes;
4156
4157 PROCEDURE validate_cost_factors
4158 (
4159 p_auc_header_id IN pon_bid_item_prices.auction_header_id%TYPE,
4160 p_bid_number IN pon_bid_item_prices.bid_number%TYPE,
4161 p_interface_type IN pon_interface_errors.interface_type%TYPE,
4162 p_userid IN pon_interface_errors.created_by%TYPE,
4163 p_spreadsheet IN VARCHAR2,
4164 p_price_precision IN pon_bid_headers.number_price_decimals%TYPE,
4165 p_amt_precision IN fnd_currencies.precision%TYPE,
4166 p_suffix IN VARCHAR2,
4167 p_batch_id IN pon_interface_errors.batch_id%TYPE,
4168 p_request_id IN pon_interface_errors.request_id%TYPE
4169 ) IS
4170 BEGIN
4171
4172 -- The following validations are performed only for SUPPLIER cost factors
4173 INSERT FIRST
4174
4175 -- bid_currency_value must recieve a bid
4176 WHEN s_bid_currency_value IS null THEN
4177 INTO pon_interface_errors
4178 (INTERFACE_TYPE,
4179 COLUMN_NAME,
4180 TABLE_NAME,
4181 BATCH_ID,
4182 INTERFACE_LINE_ID,
4183 ERROR_MESSAGE_NAME,
4184 CREATED_BY,
4185 CREATION_DATE,
4186 LAST_UPDATED_BY,
4187 LAST_UPDATE_DATE,
4188 REQUEST_ID,
4189 ENTITY_TYPE,
4190 ENTITY_ATTR_NAME,
4191 ERROR_VALUE_DATATYPE,
4192 AUCTION_HEADER_ID,
4193 BID_NUMBER,
4194 LINE_NUMBER,
4195 PRICE_ELEMENT_TYPE_ID,
4196 EXPIRATION_DATE,
4197 TOKEN1_NAME,
4198 TOKEN1_VALUE,
4199 TOKEN2_NAME,
4200 TOKEN2_VALUE,
4201 WORKSHEET_NAME,
4202 WORKSHEET_SEQUENCE_NUMBER,
4203 ENTITY_MESSAGE_CODE)
4204 VALUES
4205 (p_interface_type,
4206 s_column_name,
4207 'PON_BID_PRICE_ELEMENTS',
4208 p_batch_id,
4209 s_interface_line_id,
4210 'PON_AUC_PE_VALUE_REQ' || p_suffix,
4211 p_userid,
4212 sysdate,
4213 p_userid,
4214 sysdate,
4215 p_request_id,
4216 'BID_PFS',
4217 'BidCurrencyValue',
4218 'TXT',
4219 p_auc_header_id,
4220 p_bid_number,
4221 s_line_number,
4222 s_price_element_type_id,
4223 g_exp_date,
4224 'LINENUMBER',
4225 --s_document_disp_line_number,
4226 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
4227 'PRICEELEMENTNAME',
4228 s_name,
4229 s_worksheet_name,
4230 s_worksheet_sequence_number,
4231 s_entity_message_code)
4232
4233 -- Line price cost factor must be positive
4234 WHEN s_sequence_number = -10 AND s_bid_currency_value <= 0 THEN
4235 INTO pon_interface_errors
4236 (INTERFACE_TYPE,
4237 COLUMN_NAME,
4238 TABLE_NAME,
4239 BATCH_ID,
4240 INTERFACE_LINE_ID,
4241 ERROR_MESSAGE_NAME,
4242 CREATED_BY,
4243 CREATION_DATE,
4244 LAST_UPDATED_BY,
4245 LAST_UPDATE_DATE,
4246 REQUEST_ID,
4247 ENTITY_TYPE,
4248 ENTITY_ATTR_NAME,
4249 ERROR_VALUE_NUMBER,
4250 ERROR_VALUE_DATATYPE,
4251 AUCTION_HEADER_ID,
4252 BID_NUMBER,
4253 LINE_NUMBER,
4254 PRICE_ELEMENT_TYPE_ID,
4255 EXPIRATION_DATE,
4256 TOKEN1_NAME,
4257 TOKEN1_VALUE,
4258 TOKEN2_NAME,
4259 TOKEN2_VALUE,
4260 WORKSHEET_NAME,
4261 WORKSHEET_SEQUENCE_NUMBER,
4262 entity_message_code)
4263 VALUES
4264 (p_interface_type,
4265 s_column_name,
4266 'PON_BID_PRICE_ELEMENTS',
4267 p_batch_id,
4268 s_interface_line_id,
4269 'PON_AUC_PE_MUST_BE_POS' || p_suffix,
4270 p_userid,
4271 sysdate,
4272 p_userid,
4273 sysdate,
4274 p_request_id,
4275 'BID_PFS',
4276 'BidCurrencyValue',
4277 s_bid_currency_value,
4278 'NUM',
4279 p_auc_header_id,
4280 p_bid_number,
4281 s_line_number,
4282 s_price_element_type_id,
4283 g_exp_date,
4284 'LINENUMBER',
4285 --s_document_disp_line_number,
4286 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
4287 'PRICEELEMENTNAME',
4288 s_name,
4289 s_worksheet_name,
4290 s_worksheet_sequence_number,
4291 s_entity_message_code)
4292
4293 -- Cost factor value must be postive or zero if not line price
4294 WHEN s_sequence_number <> -10 AND s_bid_currency_value < 0 THEN
4295 INTO pon_interface_errors
4296 (INTERFACE_TYPE,
4297 COLUMN_NAME,
4298 TABLE_NAME,
4299 BATCH_ID,
4300 INTERFACE_LINE_ID,
4301 ERROR_MESSAGE_NAME,
4302 CREATED_BY,
4303 CREATION_DATE,
4304 LAST_UPDATED_BY,
4305 LAST_UPDATE_DATE,
4306 REQUEST_ID,
4307 ENTITY_TYPE,
4308 ENTITY_ATTR_NAME,
4309 ERROR_VALUE_NUMBER,
4310 ERROR_VALUE_DATATYPE,
4311 AUCTION_HEADER_ID,
4312 BID_NUMBER,
4313 LINE_NUMBER,
4314 PRICE_ELEMENT_TYPE_ID,
4315 EXPIRATION_DATE,
4316 TOKEN1_NAME,
4317 TOKEN1_VALUE,
4318 TOKEN2_NAME,
4319 TOKEN2_VALUE,
4320 WORKSHEET_NAME,
4321 WORKSHEET_SEQUENCE_NUMBER,
4322 ENTITY_MESSAGE_CODE)
4323 VALUES
4324 (p_interface_type,
4325 s_column_name,
4326 'PON_BID_PRICE_ELEMENTS',
4327 p_batch_id,
4328 s_interface_line_id,
4329 'PON_AUC_PE_MUST_BE_POS_ZERO' || p_suffix,
4330 p_userid,
4331 sysdate,
4332 p_userid,
4333 sysdate,
4334 p_request_id,
4335 'BID_PFS',
4336 'BidCurrencyValue',
4337 s_bid_currency_value,
4338 'NUM',
4339 p_auc_header_id,
4340 p_bid_number,
4341 s_line_number,
4342 s_price_element_type_id,
4343 g_exp_date,
4344 'LINENUMBER',
4345 --s_document_disp_line_number,
4346 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
4347 'PRICEELEMENTNAME',
4348 s_name,
4349 s_worksheet_name,
4350 s_worksheet_sequence_number,
4351 s_entity_message_code)
4352
4353 -- bid_currency_precision must not exceed price precision for PER_UNIT cf
4354 WHEN s_pricing_basis = 'PER_UNIT'
4355 AND validate_price_precision(s_bid_currency_value,
4356 p_price_precision) = 'F' THEN
4357 INTO pon_interface_errors
4358 (INTERFACE_TYPE,
4359 COLUMN_NAME,
4360 TABLE_NAME,
4361 BATCH_ID,
4362 INTERFACE_LINE_ID,
4363 ERROR_MESSAGE_NAME,
4364 CREATED_BY,
4365 CREATION_DATE,
4366 LAST_UPDATED_BY,
4367 LAST_UPDATE_DATE,
4368 REQUEST_ID,
4369 ENTITY_TYPE,
4370 ENTITY_ATTR_NAME,
4371 ERROR_VALUE_NUMBER,
4372 ERROR_VALUE_DATATYPE,
4373 AUCTION_HEADER_ID,
4374 BID_NUMBER,
4375 LINE_NUMBER,
4376 PRICE_ELEMENT_TYPE_ID,
4377 EXPIRATION_DATE,
4378 TOKEN1_NAME,
4379 TOKEN1_VALUE,
4380 TOKEN2_NAME,
4381 TOKEN2_VALUE,
4382 WORKSHEET_NAME,
4383 WORKSHEET_SEQUENCE_NUMBER,
4384 ENTITY_MESSAGE_CODE)
4385 VALUES
4386 (p_interface_type,
4387 s_column_name,
4388 'PON_BID_PRICE_ELEMENTS',
4389 p_batch_id,
4390 s_interface_line_id,
4391 'PON_AUC_PE_INVALID_BID_PREC' || p_suffix,
4392 p_userid,
4393 sysdate,
4394 p_userid,
4395 sysdate,
4396 p_request_id,
4397 'BID_PFS',
4398 'BidCurrencyValue',
4399 s_bid_currency_value,
4400 'NUM',
4401 p_auc_header_id,
4402 p_bid_number,
4403 s_line_number,
4404 s_price_element_type_id,
4405 g_exp_date,
4406 'LINENUMBER',
4407 --s_document_disp_line_number,
4408 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
4409 'PRICEELEMENTNAME',
4410 s_name,
4411 s_worksheet_name,
4412 s_worksheet_sequence_number,
4413 s_entity_message_code)
4414
4415 -- bid_currency_precision must not exceed currency precision for FIXED_AMOUNT cf
4416 WHEN s_pricing_basis = 'FIXED_AMOUNT'
4417 AND validate_currency_precision(s_bid_currency_value,
4418 p_amt_precision) = 'F' THEN
4419 INTO pon_interface_errors
4420 (INTERFACE_TYPE,
4421 COLUMN_NAME,
4422 TABLE_NAME,
4423 BATCH_ID,
4424 INTERFACE_LINE_ID,
4425 ERROR_MESSAGE_NAME,
4426 CREATED_BY,
4427 CREATION_DATE,
4428 LAST_UPDATED_BY,
4429 LAST_UPDATE_DATE,
4430 REQUEST_ID,
4431 ENTITY_TYPE,
4432 ENTITY_ATTR_NAME,
4433 ERROR_VALUE_NUMBER,
4434 ERROR_VALUE_DATATYPE,
4435 AUCTION_HEADER_ID,
4436 BID_NUMBER,
4437 LINE_NUMBER,
4438 PRICE_ELEMENT_TYPE_ID,
4439 EXPIRATION_DATE,
4440 TOKEN1_NAME,
4441 TOKEN1_VALUE,
4442 TOKEN2_NAME,
4443 TOKEN2_VALUE,
4444 WORKSHEET_NAME,
4445 WORKSHEET_SEQUENCE_NUMBER,
4446 entity_message_code)
4447 VALUES
4448 (p_interface_type,
4449 s_column_name,
4450 'PON_BID_PRICE_ELEMENTS',
4451 p_batch_id,
4452 s_interface_line_id,
4453 'PON_AUC_PE_INVALID_CURR_PREC' || p_suffix,
4454 p_userid,
4455 sysdate,
4456 p_userid,
4457 sysdate,
4458 p_request_id,
4459 'BID_PFS',
4460 'BidCurrencyValue',
4461 s_bid_currency_value,
4462 'NUM',
4463 p_auc_header_id,
4464 p_bid_number,
4465 s_line_number,
4466 s_price_element_type_id,
4467 g_exp_date,
4468 'LINENUMBER',
4469 --s_document_disp_line_number,
4470 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
4471 'PRICEELEMENTNAME',
4472 s_name,
4473 s_worksheet_name,
4474 s_worksheet_sequence_number,
4475 s_entity_message_code)
4476 SELECT
4477 bpf.bid_currency_value s_bid_currency_value,
4478 bpf.sequence_number s_sequence_number,
4479 bpf.pricing_basis s_pricing_basis,
4480 bpf.line_number s_line_number,
4481 bpf.price_element_type_id s_price_element_type_id,
4482 al.document_disp_line_number s_document_disp_line_number,
4483 decode(p_spreadsheet, g_txt_upload_mode, bl.interface_line_id,
4484 g_xml_upload_mode, bpf.interface_line_id,
4485 to_number(null)) s_interface_line_id,
4486 pft.name s_name,
4487 decode(p_spreadsheet, g_xml_upload_mode, bl.worksheet_name, to_char(null)) s_worksheet_name,
4488 decode(p_spreadsheet, g_xml_upload_mode, 'PON_AUC_PRICE_ELEMENTS', to_char(null)) s_entity_message_code,
4489 decode(p_spreadsheet, g_xml_upload_mode, bl.worksheet_sequence_number, to_number(null)) s_worksheet_sequence_number,
4490 decode(p_spreadsheet, g_xml_upload_mode,
4491 fnd_message.get_string('PON', 'PON_AUCTS_ATTR_BID_VALUE' || p_suffix),
4492 fnd_message.get_string('PON', 'PON_AUC_PE_BID_VALUE_REQ' || p_suffix)) s_column_name,
4493 al.line_num_display s_clm_line_num_display
4494 FROM pon_bid_price_elements bpf
4495 , pon_auction_item_prices_all al
4496 , pon_bid_item_prices bl
4497 , pon_price_element_types_tl pft
4498 , pon_bid_headers pbh
4499 WHERE bpf.bid_number = p_bid_number
4500 AND bpf.pf_type = 'SUPPLIER' -- only validate SUPPLIER cost factors
4501 AND al.auction_header_id = bpf.auction_header_id
4502 AND al.line_number = bpf.line_number
4503 AND bl.bid_number = bpf.bid_number
4504 AND bl.line_number= bpf.line_number
4505 AND pft.price_element_type_id = bpf.price_element_type_id
4506 AND pft.language = userenv('LANG')
4507 AND bl.is_changed_line_flag = 'Y'
4508 AND (p_spreadsheet = g_online_mode OR bl.batch_id = p_batch_id)
4509 AND pbh.bid_number = bl.bid_number
4510 AND (pbh.SURROG_BID_FLAG = 'Y' OR nvl(al.close_bidding_date, sysdate+1) > sysdate);
4511
4512 END validate_cost_factors;
4513
4514 PROCEDURE validate_price_breaks
4515 (
4516 p_auc_header_id IN pon_bid_item_prices.auction_header_id%TYPE,
4517 p_bid_number IN pon_bid_item_prices.bid_number%TYPE,
4518 p_interface_type IN pon_interface_errors.interface_type%TYPE,
4519 p_userid IN pon_interface_errors.created_by%TYPE,
4520 p_spreadsheet IN VARCHAR2,
4521 p_price_precision IN pon_bid_headers.number_price_decimals%TYPE,
4522 p_trans_view IN VARCHAR2,
4523 p_blanket IN VARCHAR2,
4524 p_header_disp_pf IN VARCHAR2,
4525 p_po_start_date IN pon_auction_headers_all.po_start_date%TYPE,
4526 p_po_end_date IN pon_auction_headers_all.po_end_date%TYPE,
4527 p_auc_close_date IN pon_auction_headers_all.close_bidding_date%TYPE,
4528 p_suffix IN VARCHAR2,
4529 p_batch_id IN pon_interface_errors.batch_id%TYPE,
4530 p_request_id IN pon_interface_errors.request_id%TYPE
4531 ) IS
4532 BEGIN
4533
4534 INSERT ALL
4535
4536 -- quantity must be positive or zero
4537 WHEN s_quantity < 0 THEN
4538 INTO pon_interface_errors
4539 (INTERFACE_TYPE,
4540 TABLE_NAME,
4541 COLUMN_NAME,
4542 BATCH_ID,
4543 INTERFACE_LINE_ID,
4544 ERROR_MESSAGE_NAME,
4545 CREATED_BY,
4546 CREATION_DATE,
4547 LAST_UPDATED_BY,
4548 LAST_UPDATE_DATE,
4549 REQUEST_ID,
4550 ENTITY_TYPE,
4551 ENTITY_ATTR_NAME,
4552 ERROR_VALUE_NUMBER,
4553 ERROR_VALUE_DATATYPE,
4554 AUCTION_HEADER_ID,
4555 BID_NUMBER,
4556 LINE_NUMBER,
4557 SHIPMENT_NUMBER,
4558 EXPIRATION_DATE,
4559 TOKEN1_NAME,
4560 TOKEN1_VALUE,
4561 WORKSHEET_NAME,
4562 WORKSHEET_SEQUENCE_NUMBER,
4563 ENTITY_MESSAGE_CODE)
4564 VALUES
4565 (p_interface_type,
4566 'PON_BID_SHIPMENTS',
4567 decode(p_spreadsheet, g_xml_upload_mode, fnd_message.get_string('PON', 'PON_BIDS_QUANTITY'), null ),
4568 p_batch_id,
4569 s_interface_line_id,
4570 'PON_AUCTS_PB_QUANTITY_POSITIVE',
4571 p_userid,
4572 sysdate,
4573 p_userid,
4574 sysdate,
4575 p_request_id,
4576 'BID_PBS',
4577 'Quantity',
4578 s_quantity,
4579 'NUM',
4580 p_auc_header_id,
4581 p_bid_number,
4582 s_line_number,
4583 s_shipment_number,
4584 g_exp_date,
4585 'LINENUM',
4586 --s_document_disp_line_number,
4587 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
4588 s_worksheet_name,
4589 s_worksheet_seq_num,
4590 s_entity_name)
4591
4592 -- bid_currency_unit_price must be positive
4593 -- Only applier if price_type is PRICE
4594 WHEN s_price_type = 'PRICE' AND s_bid_currency_unit_price < 0 THEN
4595 INTO pon_interface_errors
4596 (INTERFACE_TYPE,
4597 TABLE_NAME,
4598 COLUMN_NAME,
4599 BATCH_ID,
4600 INTERFACE_LINE_ID,
4601 ERROR_MESSAGE_NAME,
4602 CREATED_BY,
4603 CREATION_DATE,
4604 LAST_UPDATED_BY,
4605 LAST_UPDATE_DATE,
4606 REQUEST_ID,
4607 ENTITY_TYPE,
4608 ENTITY_ATTR_NAME,
4609 ERROR_VALUE_NUMBER,
4610 ERROR_VALUE_DATATYPE,
4611 AUCTION_HEADER_ID,
4612 BID_NUMBER,
4613 LINE_NUMBER,
4614 SHIPMENT_NUMBER,
4615 EXPIRATION_DATE,
4616 TOKEN1_NAME,
4617 TOKEN1_VALUE,
4618 WORKSHEET_NAME,
4619 WORKSHEET_SEQUENCE_NUMBER,
4620 ENTITY_MESSAGE_CODE)
4621 VALUES
4622 (p_interface_type,
4623 'PON_BID_SHIPMENTS',
4624 decode(p_spreadsheet, g_xml_upload_mode, fnd_message.get_string('PON', 'PON_BIDS_PRICE'), null ),
4625 p_batch_id,
4626 s_interface_line_id,
4627 'PON_AUC_PB_POS_OR_ZERO',
4628 p_userid,
4629 sysdate,
4630 p_userid,
4631 sysdate,
4632 p_request_id,
4633 'BID_PBS',
4634 'BidCurrencyUnitPrice',
4635 s_bid_currency_unit_price,
4636 'NUM',
4637 p_auc_header_id,
4638 p_bid_number,
4639 s_line_number,
4640 s_shipment_number,
4641 g_exp_date,
4642 'LINENUMBER',
4643 --s_document_disp_line_number,
4644 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
4645 s_worksheet_name,
4646 s_worksheet_seq_num,
4647 s_entity_name)
4648
4649 -- bid_currency_unit_price precision must not exceed price precision
4650 -- Only applier if price_type is PRICE
4651 WHEN s_price_type = 'PRICE' AND validate_price_precision(
4652 s_bid_currency_unit_price, p_price_precision) = 'F' THEN
4653 INTO pon_interface_errors
4654 (INTERFACE_TYPE,
4655 TABLE_NAME,
4656 COLUMN_NAME,
4657 BATCH_ID,
4658 INTERFACE_LINE_ID,
4659 ERROR_MESSAGE_NAME,
4660 CREATED_BY,
4661 CREATION_DATE,
4662 LAST_UPDATED_BY,
4663 LAST_UPDATE_DATE,
4664 REQUEST_ID,
4665 ENTITY_TYPE,
4666 ENTITY_ATTR_NAME,
4667 ERROR_VALUE_NUMBER,
4668 ERROR_VALUE_DATATYPE,
4669 AUCTION_HEADER_ID,
4670 BID_NUMBER,
4671 LINE_NUMBER,
4672 SHIPMENT_NUMBER,
4673 EXPIRATION_DATE,
4674 TOKEN1_NAME,
4675 TOKEN1_VALUE,
4676 WORKSHEET_NAME,
4677 WORKSHEET_SEQUENCE_NUMBER,
4678 ENTITY_MESSAGE_CODE)
4679 VALUES
4680 (p_interface_type,
4681 'PON_BID_SHIPMENTS',
4682 decode(p_spreadsheet, g_xml_upload_mode, fnd_message.get_string('PON', 'PON_BIDS_PRICE'), null ),
4683 p_batch_id,
4684 s_interface_line_id,
4685 'PON_AUC_PB_INVALID_BID_PREC' || p_suffix,
4686 p_userid,
4687 sysdate,
4688 p_userid,
4689 sysdate,
4690 p_request_id,
4691 'BID_PBS',
4692 'BidCurrencyUnitPrice',
4693 s_bid_currency_unit_price,
4694 'NUM',
4695 p_auc_header_id,
4696 p_bid_number,
4697 s_line_number,
4698 s_shipment_number,
4699 g_exp_date,
4700 'LINENUMBER',
4701 --s_document_disp_line_number,
4702 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
4703 s_worksheet_name,
4704 s_worksheet_seq_num,
4705 s_entity_name)
4706
4707 -- The transformed price should be positive
4708 -- Since bid_currency_price is the same as bid_currency_unit_price
4709 -- in untransformed view, we can use s_price (which is the
4710 -- transformed price in auction currency)
4711 -- NOTE: rate conversion is unneccessary since we only check sign
4712 WHEN p_trans_view = 'N' AND s_price < 0 THEN
4713 INTO pon_interface_errors
4714 (INTERFACE_TYPE,
4715 TABLE_NAME,
4716 BATCH_ID,
4717 INTERFACE_LINE_ID,
4718 ERROR_MESSAGE_NAME,
4719 CREATED_BY,
4720 CREATION_DATE,
4721 LAST_UPDATED_BY,
4722 LAST_UPDATE_DATE,
4723 REQUEST_ID,
4724 ENTITY_TYPE,
4725 ENTITY_ATTR_NAME,
4726 ERROR_VALUE_NUMBER,
4727 ERROR_VALUE_DATATYPE,
4728 AUCTION_HEADER_ID,
4729 BID_NUMBER,
4730 LINE_NUMBER,
4731 SHIPMENT_NUMBER,
4732 EXPIRATION_DATE,
4733 TOKEN1_NAME,
4734 TOKEN1_VALUE,
4735 WORKSHEET_NAME,
4736 WORKSHEET_SEQUENCE_NUMBER,
4737 ENTITY_MESSAGE_CODE)
4738 VALUES
4739 (p_interface_type,
4740 'PON_BID_SHIPMENTS',
4741 p_batch_id,
4742 s_interface_line_id,
4743 'PON_PB_BIDPRICE_INVALID_1',
4744 p_userid,
4745 sysdate,
4746 p_userid,
4747 sysdate,
4748 p_request_id,
4749 'BID_PBS',
4750 'BidCurrencyPrice',
4751 s_bid_currency_price,
4752 'NUM',
4753 p_auc_header_id,
4754 p_bid_number,
4755 s_line_number,
4756 s_shipment_number,
4757 g_exp_date,
4758 'LINENUMBER',
4759 --s_document_disp_line_number,
4760 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
4761 s_worksheet_name,
4762 s_worksheet_seq_num,
4763 s_entity_name)
4764
4765 -- bid_currency_price must be positive
4766 WHEN p_trans_view = 'Y' AND s_bid_currency_price < 0 THEN
4767 INTO pon_interface_errors
4768 (INTERFACE_TYPE,
4769 TABLE_NAME,
4770 BATCH_ID,
4771 INTERFACE_LINE_ID,
4772 ERROR_MESSAGE_NAME,
4773 CREATED_BY,
4774 CREATION_DATE,
4775 LAST_UPDATED_BY,
4776 LAST_UPDATE_DATE,
4777 REQUEST_ID,
4778 ENTITY_TYPE,
4779 ENTITY_ATTR_NAME,
4780 ERROR_VALUE_NUMBER,
4781 ERROR_VALUE_DATATYPE,
4782 AUCTION_HEADER_ID,
4783 BID_NUMBER,
4784 LINE_NUMBER,
4785 SHIPMENT_NUMBER,
4786 EXPIRATION_DATE,
4787 TOKEN1_NAME,
4788 TOKEN1_VALUE,
4789 WORKSHEET_NAME,
4790 WORKSHEET_SEQUENCE_NUMBER,
4791 ENTITY_MESSAGE_CODE)
4792 VALUES
4793 (p_interface_type,
4794 'PON_BID_SHIPMENTS',
4795 p_batch_id,
4796 s_interface_line_id,
4797 decode(p_header_disp_pf, 'Y',
4798 'PON_PB_BIDPRICE_INVALID_2' || p_suffix,
4799 'PON_AUC_PB_POS_OR_ZERO'),
4800 p_userid,
4801 sysdate,
4802 p_userid,
4803 sysdate,
4804 p_request_id,
4805 'BID_PBS',
4806 'BidCurrencyPrice',
4807 s_bid_currency_price,
4808 'NUM',
4809 p_auc_header_id,
4810 p_bid_number,
4811 s_line_number,
4812 s_shipment_number,
4813 g_exp_date,
4814 'LINENUMBER',
4815 --s_document_disp_line_number,
4816 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
4817 s_worksheet_name,
4818 s_worksheet_seq_num,
4819 s_entity_name)
4820
4821 -- bid_currency_price precision must not exceed price precision
4822 WHEN validate_price_precision(
4823 s_bid_currency_price, p_price_precision) = 'F' THEN
4824 INTO pon_interface_errors
4825 (INTERFACE_TYPE,
4826 TABLE_NAME,
4827 BATCH_ID,
4828 INTERFACE_LINE_ID,
4829 ERROR_MESSAGE_NAME,
4830 CREATED_BY,
4831 CREATION_DATE,
4832 LAST_UPDATED_BY,
4833 LAST_UPDATE_DATE,
4834 REQUEST_ID,
4835 ENTITY_TYPE,
4836 ENTITY_ATTR_NAME,
4837 ERROR_VALUE_NUMBER,
4838 ERROR_VALUE_DATATYPE,
4839 AUCTION_HEADER_ID,
4840 BID_NUMBER,
4841 LINE_NUMBER,
4842 SHIPMENT_NUMBER,
4843 EXPIRATION_DATE,
4844 TOKEN1_NAME,
4845 TOKEN1_VALUE,
4846 WORKSHEET_NAME,
4847 WORKSHEET_SEQUENCE_NUMBER,
4848 ENTITY_MESSAGE_CODE)
4849 VALUES
4850 (p_interface_type,
4851 'PON_BID_SHIPMENTS',
4852 p_batch_id,
4853 s_interface_line_id,
4854 'PON_AUC_PB_INVALID_BID_PREC' || p_suffix,
4855 p_userid,
4856 sysdate,
4857 p_userid,
4858 sysdate,
4859 p_request_id,
4860 'BID_PBS',
4861 'BidCurrencyPrice',
4862 s_bid_currency_price,
4863 'NUM',
4864 p_auc_header_id,
4865 p_bid_number,
4866 s_line_number,
4867 s_shipment_number,
4868 g_exp_date,
4869 'LINENUMBER',
4870 --s_document_disp_line_number,
4871 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
4872 s_worksheet_name,
4873 s_worksheet_seq_num,
4874 s_entity_name)
4875
4876 -- price_discount must be 0 to 100
4877 -- Only applies if price_type is PRICE DISCOUNT
4878 WHEN s_price_type = 'PRICE DISCOUNT'
4879 AND (s_price_discount < 0 OR s_price_discount > 100) THEN
4880 INTO pon_interface_errors
4881 (INTERFACE_TYPE,
4882 TABLE_NAME,
4883 COLUMN_NAME,
4884 BATCH_ID,
4885 INTERFACE_LINE_ID,
4886 ERROR_MESSAGE_NAME,
4887 CREATED_BY,
4888 CREATION_DATE,
4889 LAST_UPDATED_BY,
4890 LAST_UPDATE_DATE,
4891 REQUEST_ID,
4892 ENTITY_TYPE,
4893 ENTITY_ATTR_NAME,
4894 ERROR_VALUE_NUMBER,
4895 ERROR_VALUE_DATATYPE,
4896 AUCTION_HEADER_ID,
4897 BID_NUMBER,
4898 LINE_NUMBER,
4899 SHIPMENT_NUMBER,
4900 EXPIRATION_DATE,
4901 TOKEN1_NAME,
4902 TOKEN1_VALUE,
4903 WORKSHEET_NAME,
4904 WORKSHEET_SEQUENCE_NUMBER,
4905 ENTITY_MESSAGE_CODE)
4906 VALUES
4907 (p_interface_type,
4908 'PON_BID_SHIPMENTS',
4909 decode(p_spreadsheet, g_xml_upload_mode, fnd_message.get_string('PON', 'PON_BIDS_PRICE'), null ),
4910 p_batch_id,
4911 s_interface_line_id,
4912 'PON_INVALID_PRICE_DISCOUNT',
4913 p_userid,
4914 sysdate,
4915 p_userid,
4916 sysdate,
4917 p_request_id,
4918 'BID_PBS',
4919 'PriceDiscount',
4920 s_price_discount,
4921 'NUM',
4922 p_auc_header_id,
4923 p_bid_number,
4924 s_line_number,
4925 s_shipment_number,
4926 g_exp_date,
4927 'LINENUMBER',
4928 --s_document_disp_line_number,
4929 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
4930 s_worksheet_name,
4931 s_worksheet_seq_num,
4932 s_entity_name)
4933
4934 -- effective_start_date must be past the current date
4935 WHEN s_effective_start_date < s_current_date THEN
4936 INTO pon_interface_errors
4937 (INTERFACE_TYPE,
4938 TABLE_NAME,
4939 COLUMN_NAME,
4940 BATCH_ID,
4941 INTERFACE_LINE_ID,
4942 ERROR_MESSAGE_NAME,
4943 CREATED_BY,
4944 CREATION_DATE,
4945 LAST_UPDATED_BY,
4946 LAST_UPDATE_DATE,
4947 REQUEST_ID,
4948 ENTITY_TYPE,
4949 ENTITY_ATTR_NAME,
4950 ERROR_VALUE_DATE,
4951 ERROR_VALUE_DATATYPE,
4952 AUCTION_HEADER_ID,
4953 BID_NUMBER,
4954 LINE_NUMBER,
4955 SHIPMENT_NUMBER,
4956 EXPIRATION_DATE,
4957 TOKEN1_NAME,
4958 TOKEN1_VALUE,
4959 WORKSHEET_NAME,
4960 WORKSHEET_SEQUENCE_NUMBER,
4961 ENTITY_MESSAGE_CODE)
4962 VALUES
4963 (p_interface_type,
4964 'PON_BID_SHIPMENTS',
4965 decode(p_spreadsheet, g_xml_upload_mode, fnd_message.get_string('PON', 'PON_AUCTS_EFFECTIVE_FROM'), null ),
4966 p_batch_id,
4967 s_interface_line_id,
4968 'PON_AUC_FROMDATE_AFTER_CURDATE',
4969 p_userid,
4970 sysdate,
4971 p_userid,
4972 sysdate,
4973 p_request_id,
4974 'BID_PBS',
4975 'EffectiveStartDate',
4976 s_effective_start_date,
4977 'DAT',
4978 p_auc_header_id,
4979 p_bid_number,
4980 s_line_number,
4981 s_shipment_number,
4982 g_exp_date,
4983 'LINENUMBER',
4984 --s_document_disp_line_number,
4985 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
4986 s_worksheet_name,
4987 s_worksheet_seq_num,
4988 s_entity_name)
4989 -- effective_start_date must be after po start date
4990 WHEN s_effective_start_date < p_po_start_date THEN
4991 INTO pon_interface_errors
4992 (INTERFACE_TYPE,
4993 TABLE_NAME,
4994 COLUMN_NAME,
4995 BATCH_ID,
4996 INTERFACE_LINE_ID,
4997 ERROR_MESSAGE_NAME,
4998 CREATED_BY,
4999 CREATION_DATE,
5000 LAST_UPDATED_BY,
5001 LAST_UPDATE_DATE,
5002 REQUEST_ID,
5003 ENTITY_TYPE,
5004 ENTITY_ATTR_NAME,
5005 ERROR_VALUE_DATE,
5006 ERROR_VALUE_DATATYPE,
5007 AUCTION_HEADER_ID,
5008 BID_NUMBER,
5009 LINE_NUMBER,
5010 SHIPMENT_NUMBER,
5011 EXPIRATION_DATE,
5012 TOKEN1_NAME,
5013 TOKEN1_VALUE,
5014 WORKSHEET_NAME,
5015 WORKSHEET_SEQUENCE_NUMBER,
5016 ENTITY_MESSAGE_CODE)
5017 VALUES
5018 (p_interface_type,
5019 'PON_BID_SHIPMENTS',
5020 decode(p_spreadsheet, g_xml_upload_mode, fnd_message.get_string('PON', 'PON_AUCTS_EFFECTIVE_FROM'), null ),
5021 p_batch_id,
5022 s_interface_line_id,
5023 'PON_AUC_BAD_PB_EFF_FDATE_2',
5024 p_userid,
5025 sysdate,
5026 p_userid,
5027 sysdate,
5028 p_request_id,
5029 'BID_PBS',
5030 'EffectiveStartDate',
5031 s_effective_start_date,
5032 'DAT',
5033 p_auc_header_id,
5034 p_bid_number,
5035 s_line_number,
5036 s_shipment_number,
5037 g_exp_date,
5038 'LINENUMBER',
5039 --s_document_disp_line_number,
5040 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
5041 s_worksheet_name,
5042 s_worksheet_seq_num,
5043 s_entity_name)
5044
5045 -- effective_start_date must be before po end date
5046 WHEN s_effective_start_date > p_po_end_date THEN
5047 INTO pon_interface_errors
5048 (INTERFACE_TYPE,
5049 TABLE_NAME,
5050 COLUMN_NAME,
5051 BATCH_ID,
5052 INTERFACE_LINE_ID,
5053 ERROR_MESSAGE_NAME,
5054 CREATED_BY,
5055 CREATION_DATE,
5056 LAST_UPDATED_BY,
5057 LAST_UPDATE_DATE,
5058 REQUEST_ID,
5059 ENTITY_TYPE,
5060 ENTITY_ATTR_NAME,
5061 ERROR_VALUE_DATE,
5062 ERROR_VALUE_DATATYPE,
5063 AUCTION_HEADER_ID,
5064 BID_NUMBER,
5065 LINE_NUMBER,
5066 SHIPMENT_NUMBER,
5067 EXPIRATION_DATE,
5068 TOKEN1_NAME,
5069 TOKEN1_VALUE,
5070 WORKSHEET_NAME,
5071 WORKSHEET_SEQUENCE_NUMBER,
5072 ENTITY_MESSAGE_CODE)
5073 VALUES
5074 (p_interface_type,
5075 'PON_BID_SHIPMENTS',
5076 decode(p_spreadsheet, g_xml_upload_mode, fnd_message.get_string('PON', 'PON_AUCTS_EFFECTIVE_FROM'), null ),
5077 p_batch_id,
5078 s_interface_line_id,
5079 'PON_AUC_BAD_PB_EFF_FDATE_3',
5080 p_userid,
5081 sysdate,
5082 p_userid,
5083 sysdate,
5084 p_request_id,
5085 'BID_PBS',
5086 'EffectiveStartDate',
5087 s_effective_start_date,
5088 'DAT',
5089 p_auc_header_id,
5090 p_bid_number,
5091 s_line_number,
5092 s_shipment_number,
5093 g_exp_date,
5094 'LINENUMBER',
5095 --s_document_disp_line_number,
5096 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
5097 s_worksheet_name,
5098 s_worksheet_seq_num,
5099 s_entity_name)
5100
5101 -- effective start date must be after auction close date
5102 WHEN s_effective_start_date < p_auc_close_date THEN
5103 INTO pon_interface_errors
5104 (INTERFACE_TYPE,
5105 TABLE_NAME,
5106 COLUMN_NAME,
5107 BATCH_ID,
5108 INTERFACE_LINE_ID,
5109 ERROR_MESSAGE_NAME,
5110 CREATED_BY,
5111 CREATION_DATE,
5112 LAST_UPDATED_BY,
5113 LAST_UPDATE_DATE,
5114 REQUEST_ID,
5115 ENTITY_TYPE,
5116 ENTITY_ATTR_NAME,
5117 ERROR_VALUE_DATE,
5118 ERROR_VALUE_DATATYPE,
5119 AUCTION_HEADER_ID,
5120 BID_NUMBER,
5121 LINE_NUMBER,
5122 SHIPMENT_NUMBER,
5123 EXPIRATION_DATE,
5124 TOKEN1_NAME,
5125 TOKEN1_VALUE,
5126 WORKSHEET_NAME,
5127 WORKSHEET_SEQUENCE_NUMBER,
5128 ENTITY_MESSAGE_CODE)
5129 VALUES
5130 (p_interface_type,
5131 'PON_BID_SHIPMENTS',
5132 decode(p_spreadsheet, g_xml_upload_mode, fnd_message.get_string('PON', 'PON_AUCTS_EFFECTIVE_FROM'), null ),
5133 p_batch_id,
5134 s_interface_line_id,
5135 'PON_AUC_BAD_PB_EFF_FDATE_1',
5136 p_userid,
5137 sysdate,
5138 p_userid,
5139 sysdate,
5140 p_request_id,
5141 'BID_PBS',
5142 'EffectiveStartDate',
5143 s_effective_start_date,
5144 'DAT',
5145 p_auc_header_id,
5146 p_bid_number,
5147 s_line_number,
5148 s_shipment_number,
5149 g_exp_date,
5150 'LINENUMBER',
5151 --s_document_disp_line_number,
5152 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
5153 s_worksheet_name,
5154 s_worksheet_seq_num,
5155 s_entity_name)
5156 -- effective_end_date must be after current date
5157 WHEN s_effective_end_date < s_current_date THEN
5158 INTO pon_interface_errors
5159 (INTERFACE_TYPE,
5160 TABLE_NAME,
5161 COLUMN_NAME,
5162 BATCH_ID,
5163 INTERFACE_LINE_ID,
5164 ERROR_MESSAGE_NAME,
5165 CREATED_BY,
5166 CREATION_DATE,
5167 LAST_UPDATED_BY,
5168 LAST_UPDATE_DATE,
5169 REQUEST_ID,
5170 ENTITY_TYPE,
5171 ENTITY_ATTR_NAME,
5172 ERROR_VALUE_DATE,
5173 ERROR_VALUE_DATATYPE,
5174 AUCTION_HEADER_ID,
5175 BID_NUMBER,
5176 LINE_NUMBER,
5177 SHIPMENT_NUMBER,
5178 EXPIRATION_DATE,
5179 TOKEN1_NAME,
5180 TOKEN1_VALUE,
5181 WORKSHEET_NAME,
5182 WORKSHEET_SEQUENCE_NUMBER,
5183 ENTITY_MESSAGE_CODE)
5184 VALUES
5185 (p_interface_type,
5186 'PON_BID_SHIPMENTS',
5187 decode(p_spreadsheet, g_xml_upload_mode, fnd_message.get_string('PON', 'PON_AUCTS_EFFECTIVE_TO'), null ),
5188 p_batch_id,
5189 s_interface_line_id,
5190 'PON_AUC_TODATE_AFTER_CURDATE',
5191 p_userid,
5192 sysdate,
5193 p_userid,
5194 sysdate,
5195 p_request_id,
5196 'BID_PBS',
5197 'EffectiveEndDate',
5198 s_effective_end_date,
5199 'DAT',
5200 p_auc_header_id,
5201 p_bid_number,
5202 s_line_number,
5203 s_shipment_number,
5204 g_exp_date,
5205 'LINENUMBER',
5206 --s_document_disp_line_number,
5207 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
5208 s_worksheet_name,
5209 s_worksheet_seq_num,
5210 s_entity_name)
5211
5212 -- effective_end_date must be after po start date
5213 WHEN s_effective_end_date < p_po_start_date THEN
5214 INTO pon_interface_errors
5215 (INTERFACE_TYPE,
5216 TABLE_NAME,
5217 COLUMN_NAME,
5218 BATCH_ID,
5219 INTERFACE_LINE_ID,
5220 ERROR_MESSAGE_NAME,
5221 CREATED_BY,
5222 CREATION_DATE,
5223 LAST_UPDATED_BY,
5224 LAST_UPDATE_DATE,
5225 REQUEST_ID,
5226 ENTITY_TYPE,
5227 ENTITY_ATTR_NAME,
5228 ERROR_VALUE_DATE,
5229 ERROR_VALUE_DATATYPE,
5230 AUCTION_HEADER_ID,
5231 BID_NUMBER,
5232 LINE_NUMBER,
5233 SHIPMENT_NUMBER,
5234 EXPIRATION_DATE,
5235 TOKEN1_NAME,
5236 TOKEN1_VALUE,
5237 WORKSHEET_NAME,
5238 WORKSHEET_SEQUENCE_NUMBER,
5239 ENTITY_MESSAGE_CODE)
5240 VALUES
5241 (p_interface_type,
5242 'PON_BID_SHIPMENTS',
5243 decode(p_spreadsheet, g_xml_upload_mode, fnd_message.get_string('PON', 'PON_AUCTS_EFFECTIVE_TO'), null ),
5244 p_batch_id,
5245 s_interface_line_id,
5246 'PON_AUC_BAD_PB_EFF_TDATE_2',
5247 p_userid,
5248 sysdate,
5249 p_userid,
5250 sysdate,
5251 p_request_id,
5252 'BID_PBS',
5253 'EffectiveEndDate',
5254 s_effective_end_date,
5255 'DAT',
5256 p_auc_header_id,
5257 p_bid_number,
5258 s_line_number,
5259 s_shipment_number,
5260 g_exp_date,
5261 'LINENUMBER',
5262 --s_document_disp_line_number,
5263 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
5264 s_worksheet_name,
5265 s_worksheet_seq_num,
5266 s_entity_name)
5267
5268 -- effective_end_date must be before po end date
5269 WHEN s_effective_end_date > p_po_end_date THEN
5270 INTO pon_interface_errors
5271 (INTERFACE_TYPE,
5272 TABLE_NAME,
5273 COLUMN_NAME,
5274 BATCH_ID,
5275 INTERFACE_LINE_ID,
5276 ERROR_MESSAGE_NAME,
5277 CREATED_BY,
5278 CREATION_DATE,
5279 LAST_UPDATED_BY,
5280 LAST_UPDATE_DATE,
5281 REQUEST_ID,
5282 ENTITY_TYPE,
5283 ENTITY_ATTR_NAME,
5284 ERROR_VALUE_DATE,
5285 ERROR_VALUE_DATATYPE,
5286 AUCTION_HEADER_ID,
5287 BID_NUMBER,
5288 LINE_NUMBER,
5289 SHIPMENT_NUMBER,
5290 EXPIRATION_DATE,
5291 TOKEN1_NAME,
5292 TOKEN1_VALUE,
5293 WORKSHEET_NAME,
5294 WORKSHEET_SEQUENCE_NUMBER,
5295 ENTITY_MESSAGE_CODE)
5296 VALUES
5297 (p_interface_type,
5298 'PON_BID_SHIPMENTS',
5299 decode(p_spreadsheet, g_xml_upload_mode, fnd_message.get_string('PON', 'PON_AUCTS_EFFECTIVE_TO'), null ),
5300 p_batch_id,
5301 s_interface_line_id,
5302 'PON_AUC_BAD_PB_EFF_TDATE_3',
5303 p_userid,
5304 sysdate,
5305 p_userid,
5306 sysdate,
5307 p_request_id,
5308 'BID_PBS',
5309 'EffectiveEndDate',
5310 s_effective_end_date,
5311 'DAT',
5312 p_auc_header_id,
5313 p_bid_number,
5314 s_line_number,
5315 s_shipment_number,
5316 g_exp_date,
5317 'LINENUMBER',
5318 --s_document_disp_line_number,
5319 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
5320 s_worksheet_name,
5321 s_worksheet_seq_num,
5322 s_entity_name)
5323
5324 -- effective_end_date must be after auction close date
5325 WHEN s_effective_end_date < p_auc_close_date THEN
5326 INTO pon_interface_errors
5327 (INTERFACE_TYPE,
5328 TABLE_NAME,
5329 COLUMN_NAME,
5330 BATCH_ID,
5331 INTERFACE_LINE_ID,
5332 ERROR_MESSAGE_NAME,
5333 CREATED_BY,
5334 CREATION_DATE,
5335 LAST_UPDATED_BY,
5336 LAST_UPDATE_DATE,
5337 REQUEST_ID,
5338 ENTITY_TYPE,
5339 ENTITY_ATTR_NAME,
5340 ERROR_VALUE_DATE,
5341 ERROR_VALUE_DATATYPE,
5342 AUCTION_HEADER_ID,
5343 BID_NUMBER,
5344 LINE_NUMBER,
5345 SHIPMENT_NUMBER,
5346 EXPIRATION_DATE,
5347 TOKEN1_NAME,
5348 TOKEN1_VALUE,
5349 WORKSHEET_NAME,
5350 WORKSHEET_SEQUENCE_NUMBER,
5351 ENTITY_MESSAGE_CODE)
5352 VALUES
5353 (p_interface_type,
5354 'PON_BID_SHIPMENTS',
5355 decode(p_spreadsheet, g_xml_upload_mode, fnd_message.get_string('PON', 'PON_AUCTS_EFFECTIVE_TO'), null ),
5356 p_batch_id,
5357 s_interface_line_id ,
5358 'PON_AUC_BAD_PB_EFF_TDATE_1',
5359 p_userid,
5360 sysdate,
5361 p_userid,
5362 sysdate,
5363 p_request_id,
5364 'BID_PBS',
5365 'EffectiveEndDate',
5366 s_effective_end_date,
5367 'DAT',
5368 p_auc_header_id,
5369 p_bid_number,
5370 s_line_number,
5371 s_shipment_number,
5372 g_exp_date,
5373 'LINENUMBER',
5374 --s_document_disp_line_number,
5375 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
5376 s_worksheet_name,
5377 s_worksheet_seq_num,
5378 s_entity_name)
5379 -- To be considered valid, the price break must have one of the following:
5380 -- ship_to_organization_id, ship_location_id, quantity,
5381 -- effective_start_date, effective_end_date
5382 WHEN s_ship_to_organization_id IS null
5383 AND s_ship_to_location_id IS null
5384 AND s_quantity IS null
5385 AND s_effective_start_date IS null
5386 AND s_effective_end_date IS null THEN
5387 INTO pon_interface_errors
5388 (INTERFACE_TYPE,
5389 TABLE_NAME,
5390 BATCH_ID,
5391 INTERFACE_LINE_ID,
5392 ERROR_MESSAGE_NAME,
5393 CREATED_BY,
5394 CREATION_DATE,
5395 LAST_UPDATED_BY,
5396 LAST_UPDATE_DATE,
5397 REQUEST_ID,
5398 AUCTION_HEADER_ID,
5399 BID_NUMBER,
5400 LINE_NUMBER,
5401 SHIPMENT_NUMBER,
5402 ERROR_VALUE_DATATYPE,
5403 ERROR_VALUE,
5404 EXPIRATION_DATE,
5405 TOKEN1_NAME,
5406 TOKEN1_VALUE,
5407 WORKSHEET_NAME,
5408 WORKSHEET_SEQUENCE_NUMBER,
5409 ENTITY_MESSAGE_CODE)
5410 VALUES
5411 (p_interface_type,
5412 'PON_BID_SHIPMENTS',
5413 p_batch_id,
5414 s_interface_line_id,
5415 'PON_AUCTS_PB_MUST_BE_ENTERED',
5416 p_userid,
5417 sysdate,
5418 p_userid,
5419 sysdate,
5420 p_request_id,
5421 p_auc_header_id,
5422 p_bid_number,
5423 s_line_number,
5424 s_shipment_number,
5425 'TXT',
5426 '',
5427 g_exp_date,
5428 'LINENUMBER',
5429 --s_document_disp_line_number,
5430 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
5431 s_worksheet_name,
5432 s_worksheet_seq_num,
5433 s_entity_name)
5434 -- effective_start_date must be before effective_end_date
5435 WHEN s_effective_start_date > s_effective_end_date THEN
5436 INTO pon_interface_errors
5437 (INTERFACE_TYPE,
5438 TABLE_NAME,
5439 COLUMN_NAME,
5440 BATCH_ID,
5441 INTERFACE_LINE_ID,
5442 ERROR_MESSAGE_NAME,
5443 CREATED_BY,
5444 CREATION_DATE,
5445 LAST_UPDATED_BY,
5446 LAST_UPDATE_DATE,
5447 REQUEST_ID,
5448 ENTITY_TYPE,
5449 ENTITY_ATTR_NAME,
5450 ERROR_VALUE_DATE,
5451 ERROR_VALUE_DATATYPE,
5452 AUCTION_HEADER_ID,
5453 BID_NUMBER,
5454 LINE_NUMBER,
5455 SHIPMENT_NUMBER,
5456 EXPIRATION_DATE,
5457 TOKEN1_NAME,
5458 TOKEN1_VALUE,
5459 WORKSHEET_NAME,
5460 WORKSHEET_SEQUENCE_NUMBER,
5461 ENTITY_MESSAGE_CODE)
5462 VALUES
5463 (p_interface_type,
5464 'PON_BID_SHIPMENTS',
5465 decode(p_spreadsheet, g_xml_upload_mode, fnd_message.get_string('PON', 'PON_AUCTS_EFFECTIVE_TO'), null ),
5466 p_batch_id,
5467 s_interface_line_id,
5468 'PON_AUC_INVALID_EFF_DATES',
5469 p_userid,
5470 sysdate,
5471 p_userid,
5472 sysdate,
5473 p_request_id,
5474 'BID_PBS',
5475 'EffectiveEndDate',
5476 s_effective_end_date,
5477 'DAT',
5478 p_auc_header_id,
5479 p_bid_number,
5480 s_line_number,
5481 s_shipment_number,
5482 g_exp_date,
5483 'LINENUMBER',
5484 --s_document_disp_line_number,
5485 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
5486 s_worksheet_name,
5487 s_worksheet_seq_num,
5488 s_entity_name)
5489
5490 -- Either bid_currency_unit_price or price_discount must have a value
5491 WHEN s_bid_currency_unit_price IS null AND s_price_discount IS null THEN
5492 INTO pon_interface_errors
5493 (INTERFACE_TYPE,
5494 TABLE_NAME,
5495 COLUMN_NAME,
5496 BATCH_ID,
5497 INTERFACE_LINE_ID,
5498 ERROR_MESSAGE_NAME,
5499 CREATED_BY,
5500 CREATION_DATE,
5501 LAST_UPDATED_BY,
5502 LAST_UPDATE_DATE,
5503 REQUEST_ID,
5504 AUCTION_HEADER_ID,
5505 BID_NUMBER,
5506 LINE_NUMBER,
5507 SHIPMENT_NUMBER,
5508 ERROR_VALUE_DATATYPE,
5509 ERROR_VALUE,
5510 EXPIRATION_DATE,
5511 TOKEN1_NAME,
5512 TOKEN1_VALUE,
5513 WORKSHEET_NAME,
5514 WORKSHEET_SEQUENCE_NUMBER,
5515 ENTITY_MESSAGE_CODE)
5516 VALUES
5517 (p_interface_type,
5518 'PON_BID_SHIPMENTS',
5519 decode(p_spreadsheet, g_xml_upload_mode, fnd_message.get_string('PON', 'PON_BIDS_PRICE'), null ),
5520 p_batch_id,
5521 s_interface_line_id,
5522 'PON_AUC_PB_PRICE_REQ',
5523 p_userid,
5524 sysdate,
5525 p_userid,
5526 sysdate,
5527 p_request_id,
5528 p_auc_header_id,
5529 p_bid_number,
5530 s_line_number,
5531 s_shipment_number,
5532 'TXT',
5533 '',
5534 g_exp_date,
5535 'LINENUMBER',
5536 --s_document_disp_line_number,
5537 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
5538 s_worksheet_name,
5539 s_worksheet_seq_num,
5540 s_entity_name)
5541
5542 -- CUMULATIVE price breaks cannot have start and end dates
5543 WHEN s_price_break_type = 'CUMULATIVE'
5544 AND (s_effective_start_date IS NOT null
5545 OR s_effective_end_date IS NOT null) THEN
5546 INTO pon_interface_errors
5547 (INTERFACE_TYPE,
5548 TABLE_NAME,
5549 BATCH_ID,
5550 INTERFACE_LINE_ID,
5551 ERROR_MESSAGE_NAME,
5552 CREATED_BY,
5553 CREATION_DATE,
5554 LAST_UPDATED_BY,
5555 LAST_UPDATE_DATE,
5556 REQUEST_ID,
5557 ENTITY_TYPE,
5558 ENTITY_ATTR_NAME,
5559 ERROR_VALUE_DATE,
5560 ERROR_VALUE_DATATYPE,
5561 AUCTION_HEADER_ID,
5562 BID_NUMBER,
5563 LINE_NUMBER,
5564 SHIPMENT_NUMBER,
5565 EXPIRATION_DATE,
5566 TOKEN1_NAME,
5567 TOKEN1_VALUE,
5568 WORKSHEET_NAME,
5569 WORKSHEET_SEQUENCE_NUMBER,
5570 ENTITY_MESSAGE_CODE)
5571 VALUES
5572 (p_interface_type,
5573 'PON_BID_SHIPMENTS',
5574 p_batch_id,
5575 s_interface_line_id,
5576 'PON_AUCTS_PB_CUMM_EFF_DATES',
5577 p_userid,
5578 sysdate,
5579 p_userid,
5580 sysdate,
5581 p_request_id,
5582 'BID_PBS',
5583 nvl2(s_effective_start_date, 'EffectiveEndDate',
5584 'EffectiveStartDate'),
5585 nvl(s_effective_end_date, s_effective_end_date),
5586 'DAT',
5587 p_auc_header_id,
5588 p_bid_number,
5589 s_line_number,
5590 s_shipment_number,
5591 g_exp_date,
5592 'LINENUMBER',
5593 --s_document_disp_line_number,
5594 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
5595 s_worksheet_name,
5596 s_worksheet_seq_num,
5597 s_entity_name)
5598
5599 SELECT
5600 sysdate s_current_date,
5601 bpb.ship_to_organization_id s_ship_to_organization_id,
5602 bpb.ship_to_location_id s_ship_to_location_id,
5603 bpb.quantity s_quantity,
5604 bpb.price s_price,
5605 bpb.price_type s_price_type,
5606 bpb.bid_currency_price s_bid_currency_price,
5607 bpb.bid_currency_unit_price s_bid_currency_unit_price,
5608 bpb.price_discount s_price_discount,
5609 bpb.effective_start_date s_effective_start_date,
5610 bpb.effective_end_date s_effective_end_date,
5611 bpb.line_number s_line_number,
5612 bpb.shipment_number s_shipment_number,
5613 decode(p_spreadsheet, g_xml_upload_mode,
5614 bpb.interface_line_id,
5615 bl.interface_line_id
5616 ) s_interface_line_id,
5617 al.document_disp_line_number s_document_disp_line_number,
5618 al.price_break_type s_price_break_type,
5619 decode(p_spreadsheet, g_xml_upload_mode, bl.worksheet_name, null) s_worksheet_name,
5620 decode(p_spreadsheet, g_xml_upload_mode, bl.worksheet_sequence_number, null) s_worksheet_seq_num,
5621 decode(p_spreadsheet, g_xml_upload_mode,
5622 'PON_AUCTS_PRICE_BREAKS',
5623 null
5624 ) s_entity_name,
5625 al.line_num_display s_clm_line_num_display
5626 FROM pon_bid_shipments bpb
5627 , pon_bid_item_prices bl
5628 , pon_auction_item_prices_all al
5629 , pon_bid_headers pbh
5630 WHERE bpb.bid_number = p_bid_number
5631 AND bl.bid_number = bpb.bid_number
5632 AND bl.line_number = bpb.line_number
5633 AND al.auction_header_id = bpb.auction_header_id
5634 AND al.line_number = bpb.line_number
5635 AND bl.is_changed_line_flag = 'Y'
5636 AND (p_spreadsheet = g_online_mode OR bl.batch_id = p_batch_id)
5637 AND pbh.bid_number = bl.bid_number
5638 AND (pbh.SURROG_BID_FLAG = 'Y' OR nvl(al.close_bidding_date, sysdate+1) > sysdate);
5639
5640 END validate_price_breaks;
5641
5642
5643
5644 /*========================================================*
5645 * The following validations are performed
5646 * 1. Min Quantity should not be null or negative
5647 * 2. Max Quantity should not be null or negative
5648 * 3. Max quantity should be greater or equal to the min quantity
5649 * 4. The ranges of min-max quantities should not overlap across tiers for a given line
5650 * 5. The price tier price should not be null and negative
5651 * 6. Precision of the price entered should be less than the auction currency precision
5652 *.7. In case of an SPO the quantity entered at the line level must be equal to the
5653 * maximum quantity of all the price tiers.
5654 *.8. In case of an SPO the price entered at the line level must be equal to the price
5655 * corresponding to the maximum quantity of all the price tiers.
5656 * =======================================================*/
5657
5658 PROCEDURE VALIDATE_QTY_BASED_PRICE_TIERS
5659 (
5660 p_auc_header_id IN pon_bid_item_prices.auction_header_id%TYPE,
5661 p_bid_number IN pon_bid_item_prices.bid_number%TYPE,
5662 p_interface_type IN pon_interface_errors.interface_type%TYPE,
5663 p_userid IN pon_interface_errors.created_by%TYPE,
5664 p_spreadsheet IN VARCHAR2,
5665 p_price_precision IN pon_bid_headers.number_price_decimals%TYPE,
5666 p_batch_id IN pon_interface_errors.batch_id%TYPE,
5667 p_request_id IN pon_interface_errors.request_id%TYPE,
5668 p_contract_type IN pon_bid_headers.contract_type%TYPE
5669 ) IS
5670
5671 BEGIN
5672
5673 IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
5674 FND_LOG.string(log_level => FND_LOG.level_procedure,
5675 module => g_module_prefix || 'VALIDATE_QTY_BASED_PRICE_TIERS',
5676 message => 'Entering Procedure' || ', p_auc_header_id = ' || p_auc_header_id || ' , p_bid_number = ' ||p_bid_number ||' , p_interface_type = '
5677 ||p_interface_type || ' , p_userid = '||p_userid||' ,p_spreadsheet = '||p_spreadsheet||' ,p_price_precision = '||p_price_precision
5678 ||' ,p_batch_id = '||p_batch_id||' ,p_request_id = '||p_request_id || ' , p_contract_type = ' || p_contract_type );
5679 END IF; --}
5680
5681
5682 INSERT ALL
5683
5684 -- The min quantity is a required field. If the min quantity is null,
5685 -- we insert rows into the interface errors table.
5686
5687 WHEN
5688 (
5689 s_min_quantity IS NULL
5690 OR
5691 s_min_quantity = g_null_int
5692 )
5693 THEN
5694 INTO pon_interface_errors
5695 (INTERFACE_TYPE,
5696 TABLE_NAME,
5697 COLUMN_NAME,
5698 BATCH_ID,
5699 INTERFACE_LINE_ID,
5700 ERROR_MESSAGE_NAME,
5701 CREATED_BY,
5702 CREATION_DATE,
5703 LAST_UPDATED_BY,
5704 LAST_UPDATE_DATE,
5705 REQUEST_ID,
5706 ENTITY_TYPE,
5707 ENTITY_ATTR_NAME,
5708 ERROR_VALUE_NUMBER,
5709 ERROR_VALUE_DATATYPE,
5710 AUCTION_HEADER_ID,
5711 BID_NUMBER,
5712 LINE_NUMBER,
5713 SHIPMENT_NUMBER,
5714 EXPIRATION_DATE,
5715 TOKEN1_NAME,
5716 TOKEN1_VALUE,
5717 WORKSHEET_NAME,
5718 WORKSHEET_SEQUENCE_NUMBER,
5719 ENTITY_MESSAGE_CODE)
5720 VALUES
5721 (p_interface_type,
5722 'PON_BID_SHIPMENTS',
5723 decode(p_spreadsheet, g_xml_upload_mode, fnd_message.get_string('PON', 'PON_BIDS_MIN_QUANTITY'), null ),
5724 p_batch_id,
5725 s_interface_line_id,
5726 'PON_AUCTS_PT_MIN_QUANTITY_REQ',
5727 p_userid,
5728 sysdate,
5729 p_userid,
5730 sysdate,
5731 p_request_id,
5732 'BID_PTS',
5733 'Quantity',
5734 s_min_quantity,
5735 'NUM',
5736 p_auc_header_id,
5737 p_bid_number,
5738 s_line_number,
5739 s_shipment_number,
5740 g_exp_date,
5741 'LINENUM',
5742 --s_document_disp_line_number,
5743 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
5744 s_worksheet_name,
5745 s_worksheet_seq_num,
5746 s_entity_name
5747 )
5748
5749 -- The max quantity is a required field. If the min quantity is null,
5750 -- we insert rows into the interface errors table.
5751
5752 WHEN
5753 (
5754 s_max_quantity IS NULL
5755 OR
5756 s_max_quantity = g_null_int
5757 )
5758 THEN
5759 INTO pon_interface_errors
5760 (INTERFACE_TYPE,
5761 TABLE_NAME,
5762 COLUMN_NAME,
5763 BATCH_ID,
5764 INTERFACE_LINE_ID,
5765 ERROR_MESSAGE_NAME,
5766 CREATED_BY,
5767 CREATION_DATE,
5768 LAST_UPDATED_BY,
5769 LAST_UPDATE_DATE,
5770 REQUEST_ID,
5771 ENTITY_TYPE,
5772 ENTITY_ATTR_NAME,
5773 ERROR_VALUE_NUMBER,
5774 ERROR_VALUE_DATATYPE,
5775 AUCTION_HEADER_ID,
5776 BID_NUMBER,
5777 LINE_NUMBER,
5778 SHIPMENT_NUMBER,
5779 EXPIRATION_DATE,
5780 TOKEN1_NAME,
5781 TOKEN1_VALUE,
5782 WORKSHEET_NAME,
5783 WORKSHEET_SEQUENCE_NUMBER,
5784 ENTITY_MESSAGE_CODE
5785 )
5786 VALUES
5787 (p_interface_type,
5788 'PON_BID_SHIPMENTS',
5789 decode(p_spreadsheet, g_xml_upload_mode, fnd_message.get_string('PON', 'PON_BIDS_MAX_QUANTITY'), null ),
5790 p_batch_id,
5791 s_interface_line_id,
5792 'PON_AUCTS_PT_MAX_QUANTITY_REQ',
5793 p_userid,
5794 sysdate,
5795 p_userid,
5796 sysdate,
5797 p_request_id,
5798 'BID_PTS',
5799 'MaxQuantity',
5800 s_max_quantity,
5801 'NUM',
5802 p_auc_header_id,
5803 p_bid_number,
5804 s_line_number,
5805 s_shipment_number,
5806 g_exp_date,
5807 'LINENUM',
5808 --s_document_disp_line_number,
5809 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
5810 s_worksheet_name,
5811 s_worksheet_seq_num,
5812 s_entity_name
5813 )
5814
5815 -- The min quantity should be a positive number. i.e. strictly greater than zero.
5816
5817 WHEN
5818 (
5819 (s_min_quantity IS NOT NULL AND
5820 s_min_quantity <= 0 AND
5821 s_min_quantity <> g_null_int)
5822 )
5823 THEN
5824 INTO pon_interface_errors
5825 (INTERFACE_TYPE,
5826 TABLE_NAME,
5827 COLUMN_NAME,
5828 BATCH_ID,
5829 INTERFACE_LINE_ID,
5830 ERROR_MESSAGE_NAME,
5831 CREATED_BY,
5832 CREATION_DATE,
5833 LAST_UPDATED_BY,
5834 LAST_UPDATE_DATE,
5835 REQUEST_ID,
5836 ENTITY_TYPE,
5837 ENTITY_ATTR_NAME,
5838 ERROR_VALUE_NUMBER,
5839 ERROR_VALUE_DATATYPE,
5840 AUCTION_HEADER_ID,
5841 BID_NUMBER,
5842 LINE_NUMBER,
5843 SHIPMENT_NUMBER,
5844 EXPIRATION_DATE,
5845 TOKEN1_NAME,
5846 TOKEN1_VALUE,
5847 WORKSHEET_NAME,
5848 WORKSHEET_SEQUENCE_NUMBER,
5849 ENTITY_MESSAGE_CODE
5850 )
5851 VALUES
5852 (p_interface_type,
5853 'PON_BID_SHIPMENTS',
5854 decode(p_spreadsheet, g_xml_upload_mode, fnd_message.get_string('PON', 'PON_BIDS_MIN_QUANTITY'), null ),
5855 p_batch_id,
5856 s_interface_line_id,
5857 'PON_AUCTS_PT_QUANTITY_POSITIVE',
5858 p_userid,
5859 sysdate,
5860 p_userid,
5861 sysdate,
5862 p_request_id,
5863 'BID_PTS',
5864 'Quantity',
5865 s_min_quantity,
5866 'NUM',
5867 p_auc_header_id,
5868 p_bid_number,
5869 s_line_number,
5870 s_shipment_number,
5871 g_exp_date,
5872 'LINENUM',
5873 --s_document_disp_line_number,
5874 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
5875 s_worksheet_name,
5876 s_worksheet_seq_num,
5877 s_entity_name
5878 )
5879
5880 -- The max quantity should be a positive number. i.e. strictly greater than zero.
5881
5882 WHEN
5883 (
5884 (s_max_quantity IS NOT NULL AND
5885 s_max_quantity <= 0 AND
5886 s_max_quantity <> g_null_int)
5887 )
5888 THEN
5889 INTO pon_interface_errors
5890 (INTERFACE_TYPE,
5891 TABLE_NAME,
5892 COLUMN_NAME,
5893 BATCH_ID,
5894 INTERFACE_LINE_ID,
5895 ERROR_MESSAGE_NAME,
5896 CREATED_BY,
5897 CREATION_DATE,
5898 LAST_UPDATED_BY,
5899 LAST_UPDATE_DATE,
5900 REQUEST_ID,
5901 ENTITY_TYPE,
5902 ENTITY_ATTR_NAME,
5903 ERROR_VALUE_NUMBER,
5904 ERROR_VALUE_DATATYPE,
5905 AUCTION_HEADER_ID,
5906 BID_NUMBER,
5907 LINE_NUMBER,
5908 SHIPMENT_NUMBER,
5909 EXPIRATION_DATE,
5910 TOKEN1_NAME,
5911 TOKEN1_VALUE,
5912 WORKSHEET_NAME,
5913 WORKSHEET_SEQUENCE_NUMBER,
5914 ENTITY_MESSAGE_CODE
5915 )
5916 VALUES
5917 (p_interface_type,
5918 'PON_BID_SHIPMENTS',
5919 decode(p_spreadsheet, g_xml_upload_mode, fnd_message.get_string('PON', 'PON_BIDS_MAX_QUANTITY'), null ),
5920 p_batch_id,
5921 s_interface_line_id,
5922 'PON_AUCTS_PT_QUANTITY_POSITIVE',
5923 p_userid,
5924 sysdate,
5925 p_userid,
5926 sysdate,
5927 p_request_id,
5928 'BID_PTS',
5929 'MaxQuantity',
5930 s_max_quantity,
5931 'NUM',
5932 p_auc_header_id,
5933 p_bid_number,
5937 'LINENUM',
5934 s_line_number,
5935 s_shipment_number,
5936 g_exp_date,
5938 --s_document_disp_line_number,
5939 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
5940 s_worksheet_name,
5941 s_worksheet_seq_num,
5942 s_entity_name
5943 )
5944
5945 -- max quantity should be greater or equal to the min quantity. i.e if min quantity should not
5946 -- be greater than max quantity
5947
5948 WHEN
5949 (
5950 s_min_quantity > s_max_quantity
5951 )
5952 THEN
5953 INTO pon_interface_errors
5954 (INTERFACE_TYPE,
5955 TABLE_NAME,
5956 COLUMN_NAME,
5957 BATCH_ID,
5958 INTERFACE_LINE_ID,
5959 ERROR_MESSAGE_NAME,
5960 CREATED_BY,
5961 CREATION_DATE,
5962 LAST_UPDATED_BY,
5963 LAST_UPDATE_DATE,
5964 REQUEST_ID,
5965 ENTITY_TYPE,
5966 ENTITY_ATTR_NAME,
5967 ERROR_VALUE_NUMBER,
5968 ERROR_VALUE_DATATYPE,
5969 AUCTION_HEADER_ID,
5970 BID_NUMBER,
5971 LINE_NUMBER,
5972 SHIPMENT_NUMBER,
5973 EXPIRATION_DATE,
5974 TOKEN1_NAME,
5975 TOKEN1_VALUE,
5976 WORKSHEET_NAME,
5977 WORKSHEET_SEQUENCE_NUMBER,
5978 ENTITY_MESSAGE_CODE
5979 )
5980 VALUES
5981 (p_interface_type,
5982 'PON_BID_SHIPMENTS',
5983 decode(p_spreadsheet, g_xml_upload_mode, fnd_message.get_string('PON', 'PON_BIDS_MAX_QUANTITY'), null ),
5984 p_batch_id,
5985 s_interface_line_id,
5986 'PON_QT_MAX_MIN_QTY_ERR',
5987 p_userid,
5988 sysdate,
5989 p_userid,
5990 sysdate,
5991 p_request_id,
5992 'BID_PTS',
5993 'MaxQuantity',
5994 s_max_quantity,
5995 'NUM',
5996 p_auc_header_id,
5997 p_bid_number,
5998 s_line_number,
5999 s_shipment_number,
6000 g_exp_date,
6001 'LINENUM',
6002 --s_document_disp_line_number,
6003 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
6004 s_worksheet_name,
6005 s_worksheet_seq_num,
6006 s_entity_name
6007 )
6008
6009 WHEN (
6010 p_spreadsheet = g_xml_upload_mode AND
6011 EXISTS (
6012 SELECT 'Y' FROM pon_bid_shipments bpb1 WHERE
6013 bpb1.auction_header_id = p_auc_header_id AND
6014 bpb1.bid_number = p_bid_number AND
6015 bpb1.line_number = s_line_number AND
6016 bpb1.SHIPMENT_NUMBER <> s_shipment_number AND
6017 (bpb1.quantity <= s_min_quantity AND
6018 s_min_quantity <= bpb1.max_quantity)
6019 )
6020 )
6021
6022 THEN
6023 INTO pon_interface_errors
6024 (INTERFACE_TYPE,
6025 TABLE_NAME,
6026 COLUMN_NAME,
6027 BATCH_ID,
6028 INTERFACE_LINE_ID,
6029 ERROR_MESSAGE_NAME,
6030 CREATED_BY,
6031 CREATION_DATE,
6032 LAST_UPDATED_BY,
6033 LAST_UPDATE_DATE,
6034 REQUEST_ID,
6035 ENTITY_TYPE,
6036 ENTITY_ATTR_NAME,
6037 ERROR_VALUE_NUMBER,
6038 ERROR_VALUE_DATATYPE,
6039 AUCTION_HEADER_ID,
6040 BID_NUMBER,
6041 LINE_NUMBER,
6042 SHIPMENT_NUMBER,
6043 EXPIRATION_DATE,
6044 TOKEN1_NAME,
6045 TOKEN1_VALUE,
6046 WORKSHEET_NAME,
6047 WORKSHEET_SEQUENCE_NUMBER,
6048 ENTITY_MESSAGE_CODE)
6049 VALUES
6050 (p_interface_type,
6051 'PON_BID_SHIPMENTS',
6052 decode(p_spreadsheet, g_xml_upload_mode, fnd_message.get_string('PON', 'PON_BIDS_MIN_QUANTITY'), null ),
6053 p_batch_id,
6054 s_interface_line_id,
6055 'PON_AUC_OVERLAP_RANGES_QT',
6056 p_userid,
6057 sysdate,
6058 p_userid,
6059 sysdate,
6060 p_request_id,
6061 'BID_PTS',
6062 'Quantity',
6063 s_min_quantity,
6064 'NUM',
6065 p_auc_header_id,
6066 p_bid_number,
6067 s_line_number,
6068 s_shipment_number,
6069 g_exp_date,
6070 'LINENUM',
6071 --s_document_disp_line_number,
6072 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
6073 s_worksheet_name,
6074 s_worksheet_seq_num,
6075 s_entity_name)
6076
6077 --when max quantity is in some other range
6078 --but min quantity is not in some other range
6079 --For case like: row1 is 5-10, row2 is 1-100
6080 --The error message only show up once.
6081 WHEN (
6082 p_spreadsheet = g_xml_upload_mode AND
6083 EXISTS (
6084 SELECT 'Y' FROM pon_bid_shipments bpb1 WHERE
6085 bpb1.auction_header_id = p_auc_header_id AND
6086 bpb1.bid_number = p_bid_number AND
6087 bpb1.line_number = s_line_number AND
6088 bpb1.SHIPMENT_NUMBER <> s_shipment_number AND
6089 ( NOT(bpb1.quantity <= s_min_quantity AND
6090 s_min_quantity <= bpb1.max_quantity)
6091 AND
6092 (bpb1.quantity <= s_max_quantity AND
6093 s_max_quantity <= bpb1.max_quantity))
6094 )
6095 )
6096
6097 THEN
6098 INTO pon_interface_errors
6099 (INTERFACE_TYPE,
6100 TABLE_NAME,
6101 COLUMN_NAME,
6102 BATCH_ID,
6103 INTERFACE_LINE_ID,
6104 ERROR_MESSAGE_NAME,
6105 CREATED_BY,
6106 CREATION_DATE,
6107 LAST_UPDATED_BY,
6108 LAST_UPDATE_DATE,
6109 REQUEST_ID,
6110 ENTITY_TYPE,
6111 ENTITY_ATTR_NAME,
6112 ERROR_VALUE_NUMBER,
6113 ERROR_VALUE_DATATYPE,
6114 AUCTION_HEADER_ID,
6115 BID_NUMBER,
6116 LINE_NUMBER,
6117 SHIPMENT_NUMBER,
6118 EXPIRATION_DATE,
6119 TOKEN1_NAME,
6120 TOKEN1_VALUE,
6121 WORKSHEET_NAME,
6122 WORKSHEET_SEQUENCE_NUMBER,
6123 ENTITY_MESSAGE_CODE)
6124 VALUES
6125 (p_interface_type,
6126 'PON_BID_SHIPMENTS',
6127 decode(p_spreadsheet, g_xml_upload_mode, fnd_message.get_string('PON', 'PON_BIDS_MAX_QUANTITY'), null ),
6128 p_batch_id,
6129 s_interface_line_id,
6130 'PON_AUC_OVERLAP_RANGES_QT',
6131 p_userid,
6132 sysdate,
6133 p_userid,
6134 sysdate,
6135 p_request_id,
6136 'BID_PTS',
6137 'MaxQuantity',
6138 s_max_quantity,
6139 'NUM',
6140 p_auc_header_id,
6141 p_bid_number,
6142 s_line_number,
6143 s_shipment_number,
6144 g_exp_date,
6145 'LINENUM',
6146 --s_document_disp_line_number,
6147 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
6148 s_worksheet_name,
6149 s_worksheet_seq_num,
6150 s_entity_name)
6151
6152 -- bid_currency_unit_price must not be null
6153 WHEN (s_bid_currency_unit_price IS NULL
6154 OR
6155 s_bid_currency_unit_price = g_null_int) THEN
6156
6157 INTO pon_interface_errors
6158 (INTERFACE_TYPE,
6159 TABLE_NAME,
6160 COLUMN_NAME,
6161 BATCH_ID,
6162 INTERFACE_LINE_ID,
6163 ERROR_MESSAGE_NAME,
6164 CREATED_BY,
6165 CREATION_DATE,
6166 LAST_UPDATED_BY,
6167 LAST_UPDATE_DATE,
6168 REQUEST_ID,
6169 ENTITY_TYPE,
6170 ENTITY_ATTR_NAME,
6171 ERROR_VALUE_NUMBER,
6172 ERROR_VALUE_DATATYPE,
6173 AUCTION_HEADER_ID,
6174 BID_NUMBER,
6175 LINE_NUMBER,
6176 SHIPMENT_NUMBER,
6177 EXPIRATION_DATE,
6178 TOKEN1_NAME,
6179 TOKEN1_VALUE,
6180 WORKSHEET_NAME,
6181 WORKSHEET_SEQUENCE_NUMBER,
6182 ENTITY_MESSAGE_CODE
6183 )
6184 VALUES
6185 (p_interface_type,
6186 'PON_BID_SHIPMENTS',
6187 decode(p_spreadsheet, g_xml_upload_mode, fnd_message.get_string('PON', 'PON_BIDS_PRICE'), null ),
6188 p_batch_id,
6189 s_interface_line_id,
6190 'PON_AUC_PT_PRICE_REQ',
6191 p_userid,
6192 sysdate,
6193 p_userid,
6194 sysdate,
6195 p_request_id,
6196 'BID_PTS',
6197 'BidCurrencyUnitPrice',
6198 s_bid_currency_unit_price,
6199 'NUM',
6200 p_auc_header_id,
6201 p_bid_number,
6202 s_line_number,
6203 s_shipment_number,
6204 g_exp_date,
6205 'LINENUM',
6206 --s_document_disp_line_number,
6207 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
6208 s_worksheet_name,
6209 s_worksheet_seq_num,
6210 s_entity_name
6211 )
6212
6213 -- bid_currency_unit_price must be positive
6214
6215 WHEN
6216 (s_bid_currency_unit_price IS NOT NULL AND
6217 s_bid_currency_unit_price <> g_null_int AND
6218 s_bid_currency_unit_price <= 0)
6219 THEN
6220 INTO pon_interface_errors
6221 (INTERFACE_TYPE,
6222 TABLE_NAME,
6223 COLUMN_NAME,
6224 BATCH_ID,
6225 INTERFACE_LINE_ID,
6226 ERROR_MESSAGE_NAME,
6227 CREATED_BY,
6228 CREATION_DATE,
6229 LAST_UPDATED_BY,
6230 LAST_UPDATE_DATE,
6231 REQUEST_ID,
6232 ENTITY_TYPE,
6233 ENTITY_ATTR_NAME,
6234 ERROR_VALUE_NUMBER,
6235 ERROR_VALUE_DATATYPE,
6236 AUCTION_HEADER_ID,
6237 BID_NUMBER,
6238 LINE_NUMBER,
6239 SHIPMENT_NUMBER,
6240 EXPIRATION_DATE,
6241 TOKEN1_NAME,
6242 TOKEN1_VALUE,
6243 WORKSHEET_NAME,
6244 WORKSHEET_SEQUENCE_NUMBER,
6245 ENTITY_MESSAGE_CODE
6246 )
6247 VALUES
6248 (p_interface_type,
6249 'PON_BID_SHIPMENTS',
6250 decode(p_spreadsheet, g_xml_upload_mode, fnd_message.get_string('PON', 'PON_BIDS_PRICE'), null ),
6251 p_batch_id,
6252 s_interface_line_id,
6253 'PON_AUCTS_QT_PRICE_POSITIVE',
6254 p_userid,
6255 sysdate,
6256 p_userid,
6257 sysdate,
6258 p_request_id,
6259 'BID_PTS',
6260 'BidCurrencyUnitPrice',
6261 s_bid_currency_unit_price,
6262 'NUM',
6263 p_auc_header_id,
6264 p_bid_number,
6265 s_line_number,
6266 s_shipment_number,
6267 g_exp_date,
6268 'LINENUM',
6269 --s_document_disp_line_number,
6270 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
6271 s_worksheet_name,
6272 s_worksheet_seq_num,
6273 s_entity_name
6274 )
6275
6276 -- bid_currency_unit_price precision must not exceed price precision
6277
6278 WHEN validate_price_precision(s_bid_currency_unit_price, p_price_precision) = 'F' THEN
6279 INTO pon_interface_errors
6280 (INTERFACE_TYPE,
6281 TABLE_NAME,
6282 COLUMN_NAME,
6283 BATCH_ID,
6284 INTERFACE_LINE_ID,
6285 ERROR_MESSAGE_NAME,
6286 CREATED_BY,
6287 CREATION_DATE,
6288 LAST_UPDATED_BY,
6289 LAST_UPDATE_DATE,
6290 REQUEST_ID,
6291 ENTITY_TYPE,
6292 ENTITY_ATTR_NAME,
6293 ERROR_VALUE_NUMBER,
6294 ERROR_VALUE_DATATYPE,
6295 AUCTION_HEADER_ID,
6296 BID_NUMBER,
6297 LINE_NUMBER,
6298 SHIPMENT_NUMBER,
6299 EXPIRATION_DATE,
6300 TOKEN1_NAME,
6301 TOKEN1_VALUE,
6302 WORKSHEET_NAME,
6303 WORKSHEET_SEQUENCE_NUMBER,
6304 ENTITY_MESSAGE_CODE
6305 )
6306 VALUES
6307 (p_interface_type,
6308 'PON_BID_SHIPMENTS',
6309 decode(p_spreadsheet, g_xml_upload_mode, fnd_message.get_string('PON', 'PON_BIDS_PRICE'), null ),
6310 p_batch_id,
6311 s_interface_line_id,
6312 'PON_AUC_QT_INVALID_BID_PREC',
6313 p_userid,
6314 sysdate,
6315 p_userid,
6316 sysdate,
6317 p_request_id,
6318 'BID_PTS',
6319 'BidCurrencyUnitPrice',
6320 s_bid_currency_unit_price,
6321 'NUM',
6322 p_auc_header_id,
6323 p_bid_number,
6324 s_line_number,
6325 s_shipment_number,
6326 g_exp_date,
6327 'LINENUMBER',
6328 --s_document_disp_line_number,
6329 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
6330 s_worksheet_name,
6331 s_worksheet_seq_num,
6332 s_entity_name
6333 )
6334
6335 -- in case of an SPO the quantity entered at the line level must be equal to the
6336 -- maximum quantity of all the price tiers.
6337
6338 WHEN
6339 (
6340 p_contract_type = 'STANDARD'
6341 and s_max_ship_qty = s_max_quantity
6342 and s_max_ship_qty <> s_bid_quantity
6343 )
6344 THEN
6345 INTO pon_interface_errors
6346 (INTERFACE_TYPE,
6347 TABLE_NAME,
6348 COLUMN_NAME,
6349 BATCH_ID,
6350 INTERFACE_LINE_ID,
6351 ERROR_MESSAGE_NAME,
6352 CREATED_BY,
6353 CREATION_DATE,
6354 LAST_UPDATED_BY,
6355 LAST_UPDATE_DATE,
6356 REQUEST_ID,
6357 ENTITY_TYPE,
6358 ENTITY_ATTR_NAME,
6359 ERROR_VALUE_NUMBER,
6360 ERROR_VALUE_DATATYPE,
6361 AUCTION_HEADER_ID,
6362 BID_NUMBER,
6363 LINE_NUMBER,
6364 SHIPMENT_NUMBER,
6365 EXPIRATION_DATE,
6366 TOKEN1_NAME,
6367 TOKEN1_VALUE,
6368 WORKSHEET_NAME,
6369 WORKSHEET_SEQUENCE_NUMBER,
6370 ENTITY_MESSAGE_CODE
6371 )
6372 VALUES
6373 (p_interface_type,
6374 'PON_BID_ITEM_PRICES',
6375 decode(p_spreadsheet, g_xml_upload_mode, fnd_message.get_string('PON', 'PON_BIDS_MAX_QUANTITY'), null ),
6376 p_batch_id,
6377 s_interface_line_id,
6378 'PON_BID_QTY_NOT_WITHIN_TIERS',
6379 p_userid,
6380 sysdate,
6381 p_userid,
6382 sysdate,
6383 p_request_id,
6384 'BID_PTS',
6385 'MaxQuantity',
6386 s_max_quantity,
6387 'NUM',
6388 p_auc_header_id,
6389 p_bid_number,
6390 s_line_number,
6391 s_shipment_number,
6392 g_exp_date,
6393 'LINENUM',
6394 --s_document_disp_line_number,
6395 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
6396 s_worksheet_name,
6397 s_worksheet_seq_num,
6398 s_entity_name
6399 )
6400
6401
6402 -- in case of an SPO the price entered at the line level must be equal to the price
6403 -- corresponding to the maximum quantity of all the price tiers.
6404 WHEN (p_contract_type = 'STANDARD'
6405 and s_max_ship_qty = s_bid_quantity
6406 and s_max_ship_qty = s_max_quantity
6407 and s_bid_price <> s_shipments_price) THEN
6408 INTO pon_interface_errors
6409 (INTERFACE_TYPE,
6410 TABLE_NAME,
6411 COLUMN_NAME,
6412 BATCH_ID,
6413 INTERFACE_LINE_ID,
6414 ERROR_MESSAGE_NAME,
6415 CREATED_BY,
6416 CREATION_DATE,
6417 LAST_UPDATED_BY,
6418 LAST_UPDATE_DATE,
6419 REQUEST_ID,
6420 ENTITY_TYPE,
6421 ENTITY_ATTR_NAME,
6422 ERROR_VALUE_NUMBER,
6423 ERROR_VALUE_DATATYPE,
6424 AUCTION_HEADER_ID,
6425 BID_NUMBER,
6426 LINE_NUMBER,
6427 SHIPMENT_NUMBER,
6428 EXPIRATION_DATE,
6429 TOKEN1_NAME,
6430 TOKEN1_VALUE,
6431 WORKSHEET_NAME,
6432 WORKSHEET_SEQUENCE_NUMBER,
6433 ENTITY_MESSAGE_CODE
6434 )
6435 VALUES
6436 (p_interface_type,
6437 'PON_BID_ITEM_PRICES',
6438 decode(p_spreadsheet, g_xml_upload_mode, fnd_message.get_string('PON', 'PON_BIDS_PRICE'), null ),
6439 p_batch_id,
6440 s_interface_line_id,
6441 'PON_BID_PRICE_NOT_WITHIN_TIERS',
6442 p_userid,
6443 sysdate,
6444 p_userid,
6445 sysdate,
6446 p_request_id,
6447 'BID_PTS',
6448 'BidCurrencyUnitPrice',
6449 s_bid_currency_unit_price,
6450 'NUM',
6451 p_auc_header_id,
6452 p_bid_number,
6453 s_line_number,
6454 s_shipment_number,
6455 g_exp_date,
6456 'LINENUM',
6457 --s_document_disp_line_number,
6458 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
6459 s_worksheet_name,
6460 s_worksheet_seq_num,
6461 s_entity_name
6462 )
6463
6464 SELECT bpb.quantity s_min_quantity,
6465 bpb.max_quantity s_max_quantity,
6466 bpb.price s_shipments_price,
6467 bl.quantity s_bid_quantity,
6468 bl.price s_bid_price,
6469 bpb.bid_currency_unit_price s_bid_currency_unit_price,
6470 bpb.line_number s_line_number,
6471 bpb.shipment_number s_shipment_number,
6472 decode(p_spreadsheet, g_xml_upload_mode, bpb.interface_line_id, bl.interface_line_id) s_interface_line_id,
6473 al.document_disp_line_number s_document_disp_line_number,
6474 max_bid_shipments.max_quantity s_max_ship_qty,
6475 decode(p_spreadsheet, g_xml_upload_mode, bl.worksheet_name, null) s_worksheet_name,
6476 decode(p_spreadsheet, g_xml_upload_mode, bl.worksheet_sequence_number, null) s_worksheet_seq_num,
6480 ) s_entity_name,
6477 decode(p_spreadsheet, g_xml_upload_mode,
6478 'PON_AUCTS_PRICE_TIERS',
6479 null
6481 al.line_num_display s_clm_line_num_display
6482 FROM pon_bid_shipments bpb,
6483 pon_bid_item_prices bl,
6484 pon_auction_item_prices_all al,
6485 (SELECT MAX(shipments.max_quantity) max_quantity,
6486 shipments.bid_number,
6487 shipments.line_number
6488 FROM pon_bid_shipments shipments
6489 WHERE shipments.bid_number = p_bid_number
6490 GROUP BY shipments.bid_number,
6491 shipments.line_number) max_bid_shipments
6492 , pon_bid_headers pbh
6493 WHERE bpb.bid_number = p_bid_number
6494 AND bpb.bid_number = max_bid_shipments.bid_number
6495 AND bpb.line_number = max_bid_shipments.line_number
6496 AND bl.bid_number = bpb.bid_number
6497 AND bl.line_number = bpb.line_number
6498 AND al.auction_header_id = bpb.auction_header_id
6499 AND al.line_number = bpb.line_number
6500 AND bl.is_changed_line_flag = 'Y'
6501 AND(p_spreadsheet = g_online_mode OR bl.batch_id = p_batch_id)
6502 AND pbh.bid_number = bl.bid_number
6503 AND (pbh.SURROG_BID_FLAG = 'Y' OR nvl(al.close_bidding_date, sysdate+1) > sysdate);
6504
6505
6506 IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
6507 FND_LOG.string(log_level => FND_LOG.level_procedure,
6508 module => g_module_prefix || 'VALIDATE_QTY_BASED_PRICE_TIERS',
6509 message => 'Performing overlapping tiers validation for online bidding flow.');
6510 END IF; --}
6511
6512
6513 Insert INTO pon_interface_errors
6514 (INTERFACE_TYPE,
6515 TABLE_NAME,
6516 BATCH_ID,
6517 INTERFACE_LINE_ID,
6518 ERROR_MESSAGE_NAME,
6519 CREATED_BY,
6520 CREATION_DATE,
6521 LAST_UPDATED_BY,
6522 LAST_UPDATE_DATE,
6523 REQUEST_ID,
6524 ENTITY_TYPE,
6525 ENTITY_ATTR_NAME,
6526 ERROR_VALUE_DATATYPE,
6527 AUCTION_HEADER_ID,
6528 BID_NUMBER,
6529 LINE_NUMBER,
6530 EXPIRATION_DATE,
6531 TOKEN1_NAME,
6532 TOKEN1_VALUE)
6533 SELECT
6534 p_interface_type,
6535 'PON_BID_SHIPMENTS',
6536 p_batch_id,
6537 bl.interface_line_id,
6538 'PON_AUC_OVERLAP_RANGES_QT',
6539 p_userid,
6540 sysdate,
6541 p_userid,
6542 sysdate,
6543 p_request_id,
6544 'BID_PTS',
6545 'Quantity',
6546 'NUM',
6547 p_auc_header_id,
6548 p_bid_number,
6549 bl.line_number,
6550 g_exp_date,
6551 'LINENUM',
6552 al.document_disp_line_number
6553 From pon_bid_item_prices bl
6554 , pon_auction_item_prices_all al
6555 , pon_bid_headers pbh
6556 where bl.bid_number = p_bid_number
6557 AND al.auction_header_id = bl.auction_header_id
6558 AND al.line_number = bl.line_number
6559 AND bl.is_changed_line_flag = 'Y'
6560 AND p_spreadsheet = g_online_mode
6561 and bl.line_number in
6562 ( Select distinct pbs.line_number
6563 FROM pon_bid_shipments pbs,
6564 pon_bid_shipments pbs1
6565 WHERE pbs.bid_number = p_bid_number
6566 and pbs1.bid_number = p_bid_number
6567 AND pbs.line_number = pbs1.line_number
6568 AND pbs.shipment_number <> pbs1.shipment_number
6569 AND pbs1.quantity <= pbs.quantity
6570 AND pbs.quantity <= pbs1.max_quantity)
6571 AND pbh.bid_number = bl.bid_number
6572 AND (pbh.SURROG_BID_FLAG = 'Y' OR nvl(al.close_bidding_date, sysdate+1) > sysdate);
6573
6574 IF (FND_LOG.level_procedure>= FND_LOG.g_current_runtime_level) THEN --{
6575 FND_LOG.string(log_level => FND_LOG.level_procedure,
6576 module => g_module_prefix || 'VALIDATE_QTY_BASED_PRICE_TIERS',
6577 message => 'All the validations are performed. Exiting the method');
6578 END IF; --}
6579
6580 END VALIDATE_QTY_BASED_PRICE_TIERS;
6581
6582 PROCEDURE validate_price_differentials
6583 (
6584 p_auc_header_id IN pon_bid_item_prices.auction_header_id%TYPE,
6585 p_bid_number IN pon_bid_item_prices.bid_number%TYPE,
6586 p_interface_type IN pon_interface_errors.interface_type%TYPE,
6587 p_userid IN pon_interface_errors.created_by%TYPE,
6588 p_spreadsheet IN VARCHAR2,
6589 p_suffix IN VARCHAR2,
6590 p_batch_id IN pon_interface_errors.batch_id%TYPE,
6591 p_request_id IN pon_interface_errors.request_id%TYPE
6592 ) IS
6593 BEGIN
6594
6595 INSERT FIRST
6596
6597 -- Line price differential validation:
6598 -- multiplier should be entered for REQUIRED price differentials
6599 WHEN s_shipment_number = -1 AND s_multiplier IS null
6600 AND s_differential_response_type = 'REQUIRED' THEN
6601 INTO pon_interface_errors
6602 (INTERFACE_TYPE,
6603 COLUMN_NAME,
6604 TABLE_NAME,
6605 BATCH_ID,
6606 INTERFACE_LINE_ID,
6607 ERROR_MESSAGE_NAME,
6608 CREATED_BY,
6609 CREATION_DATE,
6610 LAST_UPDATED_BY,
6611 LAST_UPDATE_DATE,
6612 REQUEST_ID,
6613 ENTITY_TYPE,
6614 ENTITY_ATTR_NAME,
6615 ERROR_VALUE_DATATYPE,
6616 AUCTION_HEADER_ID,
6617 BID_NUMBER,
6618 LINE_NUMBER,
6619 SHIPMENT_NUMBER,
6620 PRICE_DIFFERENTIAL_NUMBER,
6621 EXPIRATION_DATE,
6622 TOKEN1_NAME,
6623 TOKEN1_VALUE,
6624 TOKEN2_NAME,
6625 TOKEN2_VALUE,
6626 WORKSHEET_NAME,
6627 WORKSHEET_SEQUENCE_NUMBER,
6628 ENTITY_MESSAGE_CODE)
6629 VALUES
6630 (p_interface_type,
6631 fnd_message.get_string('PON', 'PON_AUC_RESP_MULTIPLIER' || p_suffix),
6632 'PON_BID_PRICE_DIFFERENTIALS',
6633 p_batch_id,
6634 s_interface_line_id,
6635 'PON_AUC_PD_VALUE_REQ' || p_suffix,
6636 p_userid,
6637 sysdate,
6638 p_userid,
6639 sysdate,
6640 p_request_id,
6641 'BID_PDS',
6642 'Multiplier',
6643 'TXT',
6644 p_auc_header_id,
6645 p_bid_number,
6646 s_line_number,
6647 s_shipment_number,
6648 s_price_differential_number,
6649 g_exp_date,
6650 'LINENUMBER',
6651 --s_document_disp_line_number,
6652 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
6653 'PRICEDIFFERENTIALNAME',
6654 s_price_differential_name,
6655 s_worksheet_name,
6656 s_worksheet_seq_num,
6657 s_entity_name)
6658
6659 -- Line price differential validation:
6660 -- multiplier should not be entered for DISPLAY_ONLY price differentials
6661 WHEN s_shipment_number = -1 AND s_multiplier IS NOT null
6662 AND s_differential_response_type = 'DISPLAY_ONLY' THEN
6663 INTO pon_interface_errors
6664 (INTERFACE_TYPE,
6665 COLUMN_NAME,
6666 TABLE_NAME,
6667 BATCH_ID,
6668 INTERFACE_LINE_ID,
6669 ERROR_MESSAGE_NAME,
6670 CREATED_BY,
6671 CREATION_DATE,
6672 LAST_UPDATED_BY,
6673 LAST_UPDATE_DATE,
6674 REQUEST_ID,
6675 ENTITY_TYPE,
6676 ENTITY_ATTR_NAME,
6677 ERROR_VALUE_NUMBER,
6678 ERROR_VALUE_DATATYPE,
6679 AUCTION_HEADER_ID,
6680 BID_NUMBER,
6681 LINE_NUMBER,
6682 SHIPMENT_NUMBER,
6683 PRICE_DIFFERENTIAL_NUMBER,
6684 EXPIRATION_DATE,
6685 TOKEN1_NAME,
6686 TOKEN1_VALUE,
6687 TOKEN2_NAME,
6688 TOKEN2_VALUE,
6689 WORKSHEET_NAME,
6690 WORKSHEET_SEQUENCE_NUMBER,
6691 ENTITY_MESSAGE_CODE)
6692 VALUES
6693 (p_interface_type,
6694 fnd_message.get_string('PON', 'PON_AUC_RESP_MULTIPLIER' || p_suffix),
6695 'PON_BID_PRICE_DIFFERENTIALS',
6696 p_batch_id,
6697 s_interface_line_id ,
6698 'PON_AUC_PD_VAL_NONENTERABLE',
6699 p_userid,
6700 sysdate,
6701 p_userid,
6702 sysdate,
6703 p_request_id,
6704 'BID_PDS',
6705 'Multiplier',
6706 s_multiplier,
6707 'NUM',
6708 p_auc_header_id,
6709 p_bid_number,
6710 s_line_number,
6711 s_shipment_number,
6712 s_price_differential_number,
6713 g_exp_date,
6714 'LINENUMBER',
6715 --s_document_disp_line_number,
6716 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
6717 'PRICEDIFFERENTIALNAME',
6718 s_price_differential_name,
6719 s_worksheet_name,
6720 s_worksheet_seq_num,
6721 s_entity_name)
6722
6723 -- Line price differential validation:
6724 -- multiplier should be greater than the target multiplier
6725 WHEN s_shipment_number = -1 AND s_multiplier < s_target_multiplier THEN
6726 INTO pon_interface_errors
6727 (INTERFACE_TYPE,
6728 COLUMN_NAME,
6729 TABLE_NAME,
6730 BATCH_ID,
6731 INTERFACE_LINE_ID,
6732 ERROR_MESSAGE_NAME,
6733 CREATED_BY,
6734 CREATION_DATE,
6735 LAST_UPDATED_BY,
6736 LAST_UPDATE_DATE,
6737 REQUEST_ID,
6738 ENTITY_TYPE,
6739 ENTITY_ATTR_NAME,
6740 ERROR_VALUE_NUMBER,
6741 ERROR_VALUE_DATATYPE,
6742 AUCTION_HEADER_ID,
6743 BID_NUMBER,
6744 LINE_NUMBER,
6745 SHIPMENT_NUMBER,
6746 PRICE_DIFFERENTIAL_NUMBER,
6747 EXPIRATION_DATE,
6748 TOKEN1_NAME,
6749 TOKEN1_VALUE,
6750 TOKEN2_NAME,
6751 TOKEN2_VALUE,
6752 WORKSHEET_NAME,
6753 WORKSHEET_SEQUENCE_NUMBER,
6754 ENTITY_MESSAGE_CODE)
6755 VALUES
6756 (p_interface_type,
6757 fnd_message.get_string('PON', 'PON_AUC_RESP_MULTIPLIER' || p_suffix),
6758 'PON_BID_PRICE_DIFFERENTIALS',
6759 p_batch_id,
6760 s_interface_line_id,
6761 'PON_AUC_PD_INVALID_MULT' || p_suffix,
6762 p_userid,
6763 sysdate,
6764 p_userid,
6765 sysdate,
6766 p_request_id,
6767 'BID_PDS',
6768 'Multiplier',
6769 s_multiplier,
6770 'NUM',
6771 p_auc_header_id,
6772 p_bid_number,
6773 s_line_number,
6774 s_shipment_number,
6775 s_price_differential_number,
6776 g_exp_date,
6777 'LINENUMBER',
6778 --s_document_disp_line_number,
6779 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
6780 'PRICEDIFFERENTIALNAME',
6781 s_price_differential_name,
6782 s_worksheet_name,
6783 s_worksheet_seq_num,
6784 s_entity_name
6785 )
6786
6787 -- Shipment price differential validation:
6788 -- multiplier should be entered for REQUIRED price differentials
6789 WHEN ( p_spreadsheet = g_online_mode or p_spreadsheet = g_xml_upload_mode )
6790 and s_shipment_number <> -1 AND s_multiplier IS null
6791 AND s_differential_response_type = 'REQUIRED' THEN
6792 INTO pon_interface_errors
6793 (INTERFACE_TYPE,
6794 COLUMN_NAME,
6795 TABLE_NAME,
6796 BATCH_ID,
6797 INTERFACE_LINE_ID,
6798 ERROR_MESSAGE_NAME,
6799 CREATED_BY,
6800 CREATION_DATE,
6801 LAST_UPDATED_BY,
6802 LAST_UPDATE_DATE,
6803 REQUEST_ID,
6804 ENTITY_TYPE,
6805 ENTITY_ATTR_NAME,
6806 AUCTION_HEADER_ID,
6807 BID_NUMBER,
6808 LINE_NUMBER,
6809 SHIPMENT_NUMBER,
6810 PRICE_DIFFERENTIAL_NUMBER,
6811 ERROR_VALUE_DATATYPE,
6812 ERROR_VALUE,
6813 EXPIRATION_DATE,
6814 TOKEN1_NAME,
6815 TOKEN1_VALUE,
6816 TOKEN2_NAME,
6817 TOKEN2_VALUE,
6818 WORKSHEET_NAME,
6819 WORKSHEET_SEQUENCE_NUMBER,
6820 ENTITY_MESSAGE_CODE)
6821 VALUES
6822 (p_interface_type,
6823 fnd_message.get_string('PON', 'PON_AUC_RESP_MULTIPLIER'||p_suffix),
6824 'PON_BID_PRICE_DIFFERENTIALS',
6825 p_batch_id,
6826 s_interface_line_id,
6827 'PON_AUC_PB_PD_VALUE_REQ' || p_suffix,
6828 p_userid,
6829 sysdate,
6830 p_userid,
6831 sysdate,
6832 p_request_id,
6833 'BID_PDS',
6834 'Multiplier',
6835 p_auc_header_id,
6836 p_bid_number,
6837 s_line_number,
6838 s_shipment_number,
6839 s_price_differential_number,
6840 'TXT',
6841 '',
6842 g_exp_date,
6843 'LINENUMBER',
6844 --s_document_disp_line_number,
6845 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
6846 'PRICEDIFFERENTIALNAME',
6847 s_price_differential_name,
6848 s_worksheet_name,
6849 s_worksheet_seq_num,
6850 s_entity_name
6851 )
6852 -- Shipment price differential validation:
6853 -- multiplier should not be entered for DISPLAY_ONLY price differentials
6857 INTO pon_interface_errors
6854 WHEN ( p_spreadsheet = g_online_mode or p_spreadsheet = g_xml_upload_mode )
6855 and s_shipment_number <> -1 AND s_multiplier IS NOT null
6856 AND s_differential_response_type = 'DISPLAY_ONLY' THEN
6858 (INTERFACE_TYPE,
6859 COLUMN_NAME,
6860 TABLE_NAME,
6861 BATCH_ID,
6862 INTERFACE_LINE_ID,
6863 ERROR_MESSAGE_NAME,
6864 CREATED_BY,
6865 CREATION_DATE,
6866 LAST_UPDATED_BY,
6867 LAST_UPDATE_DATE,
6868 REQUEST_ID,
6869 ENTITY_TYPE,
6870 ENTITY_ATTR_NAME,
6871 ERROR_VALUE_NUMBER,
6872 ERROR_VALUE_DATATYPE,
6873 AUCTION_HEADER_ID,
6874 BID_NUMBER,
6875 LINE_NUMBER,
6876 SHIPMENT_NUMBER,
6877 PRICE_DIFFERENTIAL_NUMBER,
6878 EXPIRATION_DATE,
6879 TOKEN1_NAME,
6880 TOKEN1_VALUE,
6881 TOKEN2_NAME,
6882 TOKEN2_VALUE,
6883 WORKSHEET_NAME,
6884 WORKSHEET_SEQUENCE_NUMBER,
6885 ENTITY_MESSAGE_CODE)
6886 VALUES
6887 (p_interface_type,
6888 fnd_message.get_string('PON', 'PON_AUC_RESP_MULTIPLIER'||p_suffix),
6889 'PON_BID_PRICE_DIFFERENTIALS',
6890 p_batch_id,
6891 s_interface_line_id,
6892 'PON_AUC_PB_PD_VAL_NONENTERABLE',
6893 p_userid,
6894 sysdate,
6895 p_userid,
6896 sysdate,
6897 p_request_id,
6898 'BID_PDS',
6899 'Multiplier',
6900 s_multiplier,
6901 'NUM',
6902 p_auc_header_id,
6903 p_bid_number,
6904 s_line_number,
6905 s_shipment_number,
6906 s_price_differential_number,
6907 g_exp_date,
6908 'LINENUMBER',
6909 --s_document_disp_line_number,
6910 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
6911 'PRICEDIFFERENTIALNAME',
6912 s_price_differential_name,
6913 s_worksheet_name,
6914 s_worksheet_seq_num,
6915 s_entity_name
6916 )
6917
6918 -- Shipment price differential validation:
6919 -- multiplier should be greater than target multiplier
6920 WHEN ( p_spreadsheet = g_online_mode or p_spreadsheet = g_xml_upload_mode )
6921 and s_shipment_number <> -1
6922 AND s_multiplier < s_target_multiplier THEN
6923 INTO pon_interface_errors
6924 (INTERFACE_TYPE,
6925 COLUMN_NAME,
6926 TABLE_NAME,
6927 BATCH_ID,
6928 INTERFACE_LINE_ID,
6929 ERROR_MESSAGE_NAME,
6930 CREATED_BY,
6931 CREATION_DATE,
6932 LAST_UPDATED_BY,
6933 LAST_UPDATE_DATE,
6934 REQUEST_ID,
6935 ENTITY_TYPE,
6936 ENTITY_ATTR_NAME,
6937 ERROR_VALUE_NUMBER,
6938 ERROR_VALUE_DATATYPE,
6939 AUCTION_HEADER_ID,
6940 BID_NUMBER,
6941 LINE_NUMBER,
6942 SHIPMENT_NUMBER,
6943 PRICE_DIFFERENTIAL_NUMBER,
6944 EXPIRATION_DATE,
6945 TOKEN1_NAME,
6946 TOKEN1_VALUE,
6947 TOKEN2_NAME,
6948 TOKEN2_VALUE,
6949 WORKSHEET_NAME,
6950 WORKSHEET_SEQUENCE_NUMBER,
6951 ENTITY_MESSAGE_CODE
6952 )
6953 VALUES
6954 (p_interface_type,
6955 fnd_message.get_string('PON', 'PON_AUC_RESP_MULTIPLIER'||p_suffix),
6956 'PON_BID_PRICE_DIFFERENTIALS',
6957 p_batch_id,
6958 s_interface_line_id,
6959 'PON_AUC_PB_PD_INVALID_MULT' || p_suffix,
6960 p_userid,
6961 sysdate,
6962 p_userid,
6963 sysdate,
6964 p_request_id,
6965 'BID_PDS',
6966 'Multiplier',
6967 s_multiplier,
6968 'NUM',
6969 p_auc_header_id,
6970 p_bid_number,
6971 s_line_number,
6972 s_shipment_number,
6973 s_price_differential_number,
6974 g_exp_date,
6975 'LINENUMBER',
6976 --s_document_disp_line_number,
6977 Decode(g_is_fed,'Y',s_clm_line_num_display,s_document_disp_line_number),
6978 'PRICEDIFFERENTIALNAME',
6979 s_price_differential_name,
6980 s_worksheet_name,
6981 s_worksheet_seq_num,
6982 s_entity_name
6983 )
6984 SELECT
6985 bpd.multiplier s_multiplier,
6986 apd.multiplier s_target_multiplier,
6987 nvl(apb.differential_response_type, al.differential_response_type)
6988 s_differential_response_type,
6989 bpd.line_number s_line_number,
6990 bpd.shipment_number s_shipment_number,
6991 bpd.price_differential_number s_price_differential_number,
6992 al.document_disp_line_number s_document_disp_line_number,
6993 decode(p_spreadsheet, g_xml_upload_mode,
6994 bpd.interface_line_id,
6995 bl.interface_line_id
6996 ) s_interface_line_id,
6997 pdl.price_differential_dsp s_price_differential_name,
6998 decode(p_spreadsheet, g_xml_upload_mode, bl.worksheet_name, null) s_worksheet_name,
6999 decode(p_spreadsheet, g_xml_upload_mode, bl.worksheet_sequence_number, null) s_worksheet_seq_num,
7000 decode(p_spreadsheet, g_xml_upload_mode,
7001 'PON_PRICE_DIFFERENTIALS',
7002 null
7003 ) s_entity_name,
7004 al.line_num_display s_clm_line_num_display
7005 FROM pon_bid_price_differentials bpd
7006 , pon_bid_item_prices bl
7007 , pon_auction_item_prices_all al
7008 , pon_price_differentials apd
7009 , pon_auction_shipments_all apb
7010 , po_price_diff_lookups_v pdl
7011 , pon_bid_headers pbh
7012 WHERE bpd.bid_number = p_bid_number
7013 AND bl.bid_number = bpd.bid_number
7014 AND bl.line_number = bpd.line_number
7018 AND apd.line_number = bpd.line_number
7015 AND al.auction_header_id = bpd.auction_header_id
7016 AND al.line_number = bpd.line_number
7017 AND apd.auction_header_id = bpd.auction_header_id
7019 AND apd.shipment_number = decode(bpd.shipment_number, -1, -1, bpd.shipment_number - 1)
7020 AND apd.price_differential_number = bpd.price_differential_number
7021 AND apb.auction_header_id (+) = bpd.auction_header_id
7022 AND apb.line_number (+) = bpd.line_number
7023 AND apb.shipment_number (+) = decode(bpd.shipment_number, -1, -1, bpd.shipment_number - 1)
7024 AND pdl.price_differential_type = bpd.price_type
7025 AND bl.is_changed_line_flag = 'Y'
7026 AND (p_spreadsheet = g_online_mode OR bl.batch_id = p_batch_id)
7027 AND pbh.bid_number = bl.bid_number
7028 AND (pbh.SURROG_BID_FLAG = 'Y' OR nvl(al.close_bidding_date, sysdate+1) > sysdate);
7029
7030 END validate_price_differentials;
7031
7032
7033
7034 PROCEDURE validate_payments
7035 (
7036 p_auc_header_id IN pon_bid_item_prices.auction_header_id%TYPE,
7037 p_bid_number IN pon_bid_item_prices.bid_number%TYPE,
7038 p_interface_type IN pon_interface_errors.interface_type%TYPE,
7039 p_userid IN pon_interface_errors.created_by%TYPE,
7040 p_price_precision IN pon_bid_headers.number_price_decimals%TYPE,
7041 p_batch_id IN pon_interface_errors.batch_id%TYPE,
7042 p_request_id IN pon_interface_errors.request_id%TYPE
7043 ) IS
7044 l_loginid NUMBER;
7045 l_exp_date DATE;
7046 l_module CONSTANT VARCHAR2(32) := 'VALIDATE_PAYMENTS';
7047 l_progress varchar2(200);
7048 BEGIN
7049
7050 l_loginid := fnd_global.login_id;
7051 l_exp_date := SYSDATE + 7;
7052
7053 /* IF (g_fnd_debug = 'Y' and FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN
7054 print_debug_log(l_module,'VALIDATE_PAYMENTS START p_batch_id = '||p_batch_id);
7055 END IF;
7056 */
7057
7058 BEGIN
7059 --To check for duplicate pay item number
7060 INSERT INTO pon_interface_errors
7061 (INTERFACE_TYPE,
7062 COLUMN_NAME,
7063 TABLE_NAME,
7064 BATCH_ID,
7065 ERROR_MESSAGE_NAME,
7066 CREATED_BY,
7067 CREATION_DATE,
7068 LAST_UPDATED_BY,
7069 LAST_UPDATE_DATE,
7070 REQUEST_ID,
7071 ENTITY_TYPE,
7072 ERROR_VALUE_NUMBER,
7073 ERROR_VALUE_DATATYPE,
7074 AUCTION_HEADER_ID,
7075 BID_NUMBER,
7076 LINE_NUMBER,
7077 EXPIRATION_DATE,
7078 TOKEN1_NAME,
7079 TOKEN1_VALUE,
7080 TOKEN2_NAME,
7081 TOKEN2_VALUE)
7082 SELECT
7083 p_interface_type,
7084 fnd_message.get_string('PON','PON_AUCTS_PAYITEM_NUMBER'),
7085 'PON_BID_ITEM_PRICES',
7086 p_batch_id,
7087 'PON_PYMT_NUM_NOT_UNQ',
7088 p_userid,
7089 sysdate,
7090 p_userid,
7091 sysdate,
7092 p_request_id,
7093 'BID_ITEMS',
7094 NULL,
7095 'TXT',
7096 p_auc_header_id,
7097 p_bid_number,
7098 pbps.bid_line_number,
7099 g_exp_date,
7100 'LINENUM',
7101 pai.document_disp_line_number,
7102 'PAYITEMNUM',
7103 pbps.payment_display_number
7104 FROM PON_BID_PAYMENTS_SHIPMENTS pbps,
7105 PON_AUCTION_ITEM_PRICES_ALL pai
7106 WHERE pbps.auction_header_id= pai.auction_header_id
7107 AND pbps.auction_header_id=p_auc_header_id
7108 AND pbps.bid_line_number = pai.line_number
7109 AND pbps.bid_number = p_bid_number
7110 GROUP BY pbps.bid_number, pbps.bid_line_number,
7111 pbps.payment_display_number, pai.document_disp_line_number
7112 HAVING count(*) > 1;
7113 EXCEPTION
7114 WHEN OTHERS THEN
7115 Raise;
7116
7117 END;
7118
7119
7120 INSERT ALL
7121 WHEN payment_display_number < 1 OR payment_display_number<> ROUND(payment_display_number) THEN
7122 INTO pon_interface_errors
7123 (
7124 request_id, entity_attr_name, error_message_name, -- 1
7125 error_value_datatype, error_value_number, error_value_date, -- 2
7126 token1_name, token1_value, token2_name, -- 3
7127 token2_value, interface_type, table_name, -- 4
7128 batch_id, interface_line_id, entity_type, -- 5
7129 auction_header_id, line_number, bid_payment_id, -- 6
7130 expiration_date, created_by, creation_date, -- 7
7131 last_updated_by, last_update_date, last_update_login -- 8
7132 )
7133 VALUES
7134 (
7135 p_request_id, 'PaymentDisplayNumber', 'PON_PYMT_NUM_WRONG', -- 1
7136 'NUM', payment_display_number, NULL, -- 2
7137 'LINENUM', document_disp_line_number, 'PAYITEMNUM', -- 3
7138 payment_display_number, p_interface_type, 'PON_BID_PAYMENTS_SHIPMENTS', -- 4
7139 p_batch_id, NULL, 'BID_PYMTS', -- 5
7140 auction_header_id, document_disp_line_number, bid_payment_id, -- 6
7141 l_exp_date, p_userid, SYSDATE, -- 7
7142 p_userid, SYSDATE, l_loginid -- 8
7143 )
7144 WHEN payment_type_code = 'RATE' AND quantity < 0 THEN
7145 INTO pon_interface_errors
7146 (
7150 token2_value, interface_type, table_name, -- 4
7147 request_id, entity_attr_name, error_message_name, -- 1
7148 error_value_datatype, error_value_number, error_value_date, -- 2
7149 token1_name, token1_value, token2_name, -- 3
7151 batch_id, interface_line_id, entity_type, -- 5
7152 auction_header_id, line_number, bid_payment_id, -- 6
7153 expiration_date, created_by, creation_date, -- 7
7154 last_updated_by, last_update_date, last_update_login -- 8
7155 )
7156 VALUES
7157 (
7158 p_request_id, 'Quantity', 'PON_PYMT_QTY_WRONG', -- 1
7159 'NUM', quantity, NULL, -- 2
7160 'LINENUM', document_disp_line_number, 'PAYITEMNUM', -- 3
7161 payment_display_number, p_interface_type, 'PON_BID_PAYMENTS_SHIPMENTS', -- 4
7162 p_batch_id, NULL, 'BID_PYMTS', -- 5
7163 auction_header_id, document_disp_line_number, bid_payment_id, -- 6
7164 l_exp_date, p_userid, SYSDATE, -- 7
7165 p_userid, SYSDATE, l_loginid -- 8
7166 )
7167 WHEN bid_currency_price IS NOT NULL AND bid_currency_price < 0 THEN
7168 INTO pon_interface_errors
7169 (
7170 request_id, entity_attr_name, error_message_name, -- 1
7171 error_value_datatype, error_value_number, error_value_date, -- 2
7172 token1_name, token1_value, token2_name, -- 3
7173 token2_value, interface_type, table_name, -- 4
7174 batch_id, interface_line_id, entity_type, -- 5
7175 auction_header_id, line_number, bid_payment_id, -- 6
7176 expiration_date, created_by, creation_date, -- 7
7177 last_updated_by, last_update_date, last_update_login -- 8
7178 )
7179 VALUES
7180 (
7181 p_request_id, 'BidCurrencyPrice', 'PON_PYMT_PRICE_WRONG', -- 1
7182 'NUM', bid_currency_price, NULL, -- 2
7183 'LINENUM', document_disp_line_number, 'PAYITEMNUM', -- 3
7184 payment_display_number, p_interface_type, 'PON_BID_PAYMENTS_SHIPMENTS', -- 4
7185 p_batch_id, NULL, 'BID_PYMTS', -- 5
7186 auction_header_id, document_disp_line_number, bid_payment_id, -- 6
7187 l_exp_date, p_userid, SYSDATE, -- 7
7188 p_userid, SYSDATE, l_loginid -- 8
7189 )
7190 WHEN payment_display_number IS NULL THEN
7191 INTO pon_interface_errors
7192 (
7193 request_id, entity_attr_name, error_message_name, -- 1
7194 error_value_datatype, error_value, error_value_date, -- 2
7195 token1_name, token1_value, token2_name, -- 3
7196 token2_value, interface_type, table_name, -- 4
7197 batch_id, interface_line_id, entity_type, -- 5
7198 auction_header_id, line_number, bid_payment_id, -- 6
7199 expiration_date, created_by, creation_date, -- 7
7200 last_updated_by, last_update_date, last_update_login -- 8
7201 )
7202 VALUES
7203 (
7204 p_request_id, 'PaymentDisplayNumber', 'PON_PYMT_NUM_MISSING', -- 1
7205 'TXT', payment_display_number, NULL, -- 2
7206 'LINENUM', document_disp_line_number, NULL, -- 3
7207 NULL, p_interface_type, 'PON_BID_PAYMENTS_SHIPMENTS', -- 4
7208 p_batch_id, NULL, 'BID_PYMTS', -- 5
7209 auction_header_id, document_disp_line_number, bid_payment_id, -- 6
7210 l_exp_date, p_userid, SYSDATE, -- 7
7211 p_userid, SYSDATE, l_loginid -- 8
7212 )
7213 WHEN payment_type_code IS NULL THEN
7214 INTO pon_interface_errors
7215 (
7216 request_id, entity_attr_name, error_message_name, -- 1
7217 error_value_datatype, error_value_number, error_value, -- 2
7218 token1_name, token1_value, token2_name, -- 3
7219 token2_value, interface_type, table_name, -- 4
7220 batch_id, interface_line_id, entity_type, -- 5
7221 auction_header_id, line_number, bid_payment_id, -- 6
7222 expiration_date, created_by, creation_date, -- 7
7223 last_updated_by, last_update_date, last_update_login -- 8
7224 )
7225 VALUES
7226 (
7227 p_request_id, 'PaymentTypeCode', 'PON_PYMT_TYPE_NULL', -- 1
7231 p_batch_id, NULL, 'BID_PYMTS', -- 5
7228 'TXT', NULL, NULL, -- 2
7229 'LINENUM', document_disp_line_number, 'PAYITEMNUM', -- 3
7230 payment_display_number, p_interface_type, 'PON_BID_PAYMENTS_SHIPMENTS', -- 4
7232 auction_header_id, document_disp_line_number, bid_payment_id, -- 6
7233 l_exp_date, p_userid, SYSDATE, -- 7
7234 p_userid, SYSDATE, l_loginid -- 8
7235 )
7236 WHEN payment_description IS NULL THEN
7237 INTO pon_interface_errors
7238 (
7239 request_id, entity_attr_name, error_message_name, -- 1
7240 error_value_datatype, error_value_number, error_value, -- 2
7241 token1_name, token1_value, token2_name, -- 3
7242 token2_value, interface_type, table_name, -- 4
7243 batch_id, interface_line_id, entity_type, -- 5
7244 auction_header_id, line_number, bid_payment_id, -- 6
7245 expiration_date, created_by, creation_date, -- 7
7246 last_updated_by, last_update_date, last_update_login -- 8
7247 )
7248 VALUES
7249 (
7250 p_request_id, 'PaymentDescription', 'PON_PYMT_DESC_NULL', -- 1
7251 'TXT', NULL, NULL, -- 2
7252 'LINENUM', document_disp_line_number, 'PAYITEMNUM', -- 3
7253 payment_display_number, p_interface_type, 'PON_BID_PAYMENTS_SHIPMENTS', -- 4
7254 p_batch_id, NULL, 'BID_PYMTS', -- 5
7255 auction_header_id, document_disp_line_number, bid_payment_id, -- 6
7256 l_exp_date, p_userid, SYSDATE, -- 7
7257 p_userid, SYSDATE, l_loginid -- 8
7258 )
7259 WHEN payment_type_code = 'RATE' AND quantity IS NULL THEN
7260 INTO pon_interface_errors
7261 (
7262 request_id, entity_attr_name, error_message_name, -- 1
7263 error_value_datatype, error_value, error_value_date, -- 2
7264 token1_name, token1_value, token2_name, -- 3
7265 token2_value, interface_type, table_name, -- 4
7266 batch_id, interface_line_id, entity_type, -- 5
7267 auction_header_id, line_number, bid_payment_id, -- 6
7268 expiration_date, created_by, creation_date, -- 7
7269 last_updated_by, last_update_date, last_update_login -- 8
7270 )
7271 VALUES
7272 (
7273 p_request_id, 'Quantity', 'PON_PYMT_QTY_NULL', -- 1
7274 'TXT', NULL, NULL, -- 2
7275 'LINENUM', document_disp_line_number, 'PAYITEMNUM', -- 3
7276 payment_display_number, p_interface_type, 'PON_BID_PAYMENTS_SHIPMENTS', -- 4
7277 p_batch_id, NULL, 'BID_PYMTS', -- 5
7278 auction_header_id, document_disp_line_number, bid_payment_id, -- 6
7279 l_exp_date, p_userid, SYSDATE, -- 7
7280 p_userid, SYSDATE, l_loginid -- 8
7281 )
7282 WHEN payment_type_code = 'RATE' AND uom_code IS NULL THEN
7283 INTO pon_interface_errors
7284 (
7285 request_id, entity_attr_name, error_message_name, -- 1
7286 error_value_datatype, error_value, error_value_date, -- 2
7287 token1_name, token1_value, token2_name, -- 3
7288 token2_value, interface_type, table_name, -- 4
7289 batch_id, interface_line_id, entity_type, -- 5
7290 auction_header_id, line_number, bid_payment_id, -- 6
7291 expiration_date, created_by, creation_date, -- 7
7292 last_updated_by, last_update_date, last_update_login -- 8
7293 )
7294 VALUES
7295 (
7296 p_request_id, 'UomCode', 'PON_PYMT_UOM_NULL', -- 1
7297 'TXT', NULL, NULL, -- 2
7298 'LINENUM', document_disp_line_number, 'PAYITEMNUM', -- 3
7299 payment_display_number, p_interface_type, 'PON_BID_PAYMENTS_SHIPMENTS', -- 4
7300 p_batch_id, NULL, 'BID_PYMTS', -- 5
7301 auction_header_id, document_disp_line_number, bid_payment_id, -- 6
7302 l_exp_date, p_userid, SYSDATE, -- 7
7303 p_userid, SYSDATE, l_loginid -- 8
7304 )
7305 WHEN bid_currency_price IS NULL THEN
7306 INTO pon_interface_errors
7307 (
7308 request_id, entity_attr_name, error_message_name, -- 1
7309 error_value_datatype, error_value, error_value_date, -- 2
7313 auction_header_id, line_number, bid_payment_id, -- 6
7310 token1_name, token1_value, token2_name, -- 3
7311 token2_value, interface_type, table_name, -- 4
7312 batch_id, interface_line_id, entity_type, -- 5
7314 expiration_date, created_by, creation_date, -- 7
7315 last_updated_by, last_update_date, last_update_login -- 8
7316 )
7317 VALUES
7318 (
7319 p_request_id, 'BidCurrencyPrice', 'PON_PYMT_BID_PRICE_NULL', -- 1
7320 'TXT', bid_currency_price, NULL, -- 2
7321 'LINENUM', document_disp_line_number, 'PAYITEMNUM', -- 3
7322 payment_display_number, p_interface_type, 'PON_BID_PAYMENTS_SHIPMENTS', -- 4
7323 p_batch_id, NULL, 'BID_PYMTS', -- 5
7324 auction_header_id, document_disp_line_number, bid_payment_id, -- 6
7325 l_exp_date, p_userid, SYSDATE, -- 7
7326 p_userid, SYSDATE, l_loginid -- 8
7327 )
7328 WHEN promised_date IS NOT NULL AND promised_date <= close_bidding_date THEN
7329 INTO pon_interface_errors
7330 (
7331 request_id, entity_attr_name, error_message_name, -- 1
7332 error_value_datatype, error_value_number, error_value_date, -- 2
7333 token1_name, token1_value, token2_name, -- 3
7334 token2_value, interface_type, table_name, -- 4
7335 batch_id, interface_line_id, entity_type, -- 5
7336 auction_header_id, line_number, bid_payment_id, -- 6
7337 expiration_date, created_by, creation_date, -- 7
7338 last_updated_by, last_update_date, last_update_login -- 8
7339 )
7340 VALUES
7341 (
7342 p_request_id, 'PromisedDate', 'PON_PYMT_PDATE_LESS_CDATE', -- 1
7343 'DAT', NULL, promised_date, -- 2
7344 'LINENUM', document_disp_line_number, 'PAYITEMNUM', -- 3
7345 payment_display_number, p_interface_type, 'PON_BID_PAYMENTS_SHIPMENTS', -- 4
7346 p_batch_id, NULL, 'BID_PYMTS', -- 5
7347 auction_header_id, document_disp_line_number, bid_payment_id, -- 6
7348 l_exp_date, p_userid, SYSDATE, -- 7
7349 p_userid, SYSDATE, l_loginid -- 8
7350 )
7351 WHEN bid_currency_price IS NOT NULL
7352 AND validate_price_precision(bid_currency_price, p_price_precision) = 'F' THEN
7353 INTO pon_interface_errors
7354 (
7355 request_id, entity_attr_name, error_message_name, -- 1
7356 error_value_datatype, error_value_number, error_value_date, -- 2
7357 token1_name, token1_value, token2_name, -- 3
7358 token2_value, interface_type, table_name, -- 4
7359 batch_id, interface_line_id, entity_type, -- 5
7360 auction_header_id, line_number, bid_payment_id, -- 6
7361 expiration_date, created_by, creation_date, -- 7
7362 last_updated_by, last_update_date, last_update_login -- 8
7363 )
7364 VALUES
7365 (
7366 p_request_id, 'BidCurrencyPrice', 'PON_QUOTEPRICE_INVALID_PREC_P', -- 1
7367 'NUM', bid_currency_price, NULL, -- 2
7368 'LINENUM', document_disp_line_number, 'PAYITEMNUM', -- 3
7369 payment_display_number, p_interface_type, 'PON_BID_PAYMENTS_SHIPMENTS', -- 4
7370 p_batch_id, NULL, 'BID_PYMTS', -- 5
7371 auction_header_id, document_disp_line_number, bid_payment_id, -- 6
7372 l_exp_date, p_userid, SYSDATE, -- 7
7373 p_userid, SYSDATE, l_loginid -- 8
7374 )
7375 SELECT
7376 pbp.payment_display_number,
7377 pbp.payment_type_code,
7378 pbp.uom_code,
7379 pbp.payment_description,
7380 pbp.auction_header_id auction_header_id,
7381 pai.document_disp_line_number,
7382 pbp.bid_currency_price,
7383 pbp.quantity,
7384 pbp.promised_date,
7385 pai.line_number auction_line_number,
7386 pai.close_bidding_date,
7387 pbp.bid_payment_id,
7388 pbi.line_number bid_line_number
7389 FROM PON_BID_PAYMENTS_SHIPMENTS pbp,
7390 PON_AUCTION_ITEM_PRICES_ALL pai,
7391 PON_BID_ITEM_PRICES pbi
7392 WHERE pbp.auction_header_id = pai.auction_header_id
7393 AND pbp.auction_line_number = pai.line_number
7394 AND pbi.auction_header_id = pai.auction_header_id
7395 AND pbi.line_number = pai.line_number
7396 AND pbp.bid_number = p_bid_number
7397 AND pbi.bid_number = pbp.bid_number
7398 AND nvl(pbi.has_bid_flag,'N') = 'Y';
7399
7400 /* IF (g_fnd_debug = 'Y' and FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN
7401 print_debug_log(l_module,'After Insert all for validate_payments p_batch_id = '||p_batch_id);
7405 EXCEPTION
7402 END IF;
7403 */
7404
7406 WHEN OTHERS THEN
7407 /*
7408 IF (g_fnd_debug = 'Y' and FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
7409 print_error_log(l_module, 'EXCEPTION - l_progress='||l_progress||' Error Code=' || SQLCODE || ' SQLERRM=' || SQLERRM);
7410 END if;
7411 */
7412 RAISE;
7413 END validate_payments;
7414 -----------------------------------------------------------------*\
7415 --Yao Zhang add 11/12/2008
7416 --Chaoqun modify 08/01/2009 |
7417 --PROCEDURE NAME:Validate_EMD_STATUS |
7418 --This procedure is used to check EMD Status |
7419 --The bid can be published only when emd_status is 'RECEIVED' |
7420 --or 'EEXEMPTED' |
7421 -----------------------------------------------------------------*/
7422 PROCEDURE validate_emd_status
7423 (
7424 p_auc_header_id IN pon_bid_item_prices.auction_header_id%TYPE,
7425 p_bid_number IN pon_bid_item_prices.bid_number%TYPE,
7426 p_interface_type IN pon_interface_errors.interface_type%TYPE,
7427 p_userid IN pon_interface_errors.created_by%TYPE,
7428 p_price_precision IN pon_bid_headers.number_price_decimals%TYPE,
7429 p_batch_id IN pon_interface_errors.batch_id%TYPE,
7430 p_request_id IN pon_interface_errors.request_id%TYPE
7431 )
7432 IS
7433 l_emd_status varchar2(20) :=null;
7434 l_emd_enable_flag varchar2(2) :='N'; -- Added by Chaoqun on Jan-8-2009
7435 l_nopaid_exception exception;
7436 begin
7437
7438 --Added by Chaoqun on Jan-8-2009 begin
7439 select pah.emd_enable_flag
7440 into l_emd_enable_flag
7441 from pon_auction_headers_all pah
7442 where pah.auction_header_id = p_auc_header_id;
7443
7444 IF l_emd_enable_flag = 'Y' then
7445 --Added by Chaoqun on Jan-8-2009 end
7446
7447 select decode(petr.status_lookup_code,
7448 null,
7449 decode(pbp.exempt_flag,
7450 null, 'NOT_PAID',
7451 'N', 'NOT_PAID',
7452 'Y', 'EXEMPTED'),
7453 'RECEIVING', 'NOT_PAID',
7454 'RECEIVE_ERROR', 'NOT_PAID',
7455 petr.status_lookup_code)
7456 into l_emd_status
7457 from pon_emd_transactions petr,
7458 pon_bid_headers pbh,
7459 pon_bidding_parties pbp
7460 where pbh.bid_number = p_bid_number
7461 and pbh.auction_header_id=p_auc_header_id
7462 and pbp.trading_partner_id = pbh.trading_partner_id
7463 and pbh.vendor_site_id = pbp.vendor_site_id --Modify by Chaoqun on 17-Mar-2009
7464 and pbp.auction_header_id= p_auc_header_id
7465 and petr.auction_header_id(+) = pbp.auction_header_id
7466 and petr.supplier_sequence(+) = pbp.sequence
7467 and decode(petr.current_row_flag,null,'Y',petr.current_row_flag) = 'Y';
7468
7469 IF l_emd_status='NOT_PAID' then
7470 raise l_nopaid_exception;
7471 end if;
7472 END IF;--Added by Chaoqun
7473 exception when no_data_found or l_nopaid_exception then
7474 INSERT INTO pon_interface_errors
7475 (INTERFACE_TYPE,
7476 COLUMN_NAME,
7477 TABLE_NAME,
7478 BATCH_ID,
7479 ERROR_MESSAGE_NAME,
7480 CREATED_BY,
7481 CREATION_DATE,
7482 LAST_UPDATED_BY,
7483 LAST_UPDATE_DATE,
7484 REQUEST_ID,
7485 AUCTION_HEADER_ID,
7486 BID_NUMBER,
7487 LINE_NUMBER,
7488 EXPIRATION_DATE)
7489 values(
7490 p_interface_type,
7491 fnd_message.get_string('PON', 'PON_EMD_STATUS_VALUE'),
7492 'PON_EMD_TRANSACTIONS',
7493 p_batch_id,
7494 'PON_EMD_STATUS_VALUE',
7495 p_userid,
7496 sysdate,
7497 p_userid,
7498 sysdate,
7499 p_request_id,
7500 p_auc_header_id,
7501 p_bid_number,
7502 1,
7503 g_exp_date
7504 );
7505 commit;
7506
7507 END validate_emd_status;
7508 -----------------------------------Yao Zhang add end---------------------------------------
7509
7510 PROCEDURE perform_all_validations
7511 (
7512 p_auc_header_id IN pon_bid_item_prices.auction_header_id%TYPE,
7513 p_bid_number IN pon_bid_item_prices.bid_number%TYPE,
7514 p_interface_type IN pon_interface_errors.interface_type%TYPE,
7515 p_userid IN pon_interface_errors.created_by%TYPE,
7516 p_batch_id IN pon_interface_errors.batch_id%TYPE,
7517 p_request_id IN pon_interface_errors.request_id%TYPE,
7518 p_spreadsheet IN VARCHAR2,
7519 x_return_status OUT NOCOPY NUMBER,
7520 x_return_code OUT NOCOPY VARCHAR2
7521 ) IS
7522 l_rate pon_bid_headers.rate%TYPE;
7523 l_price_precision pon_bid_headers.number_price_decimals%TYPE;
7524 l_amt_precision fnd_currencies.precision%TYPE;
7525
7526 l_source_bid pon_bid_headers.bid_number%TYPE;
7527 l_min_bid_change pon_bid_headers.min_bid_change%TYPE;
7528 l_min_bid_decr pon_auction_headers_all.min_bid_decrement%TYPE;
7529 l_percent_decr VARCHAR2(1);
7530 l_bid_decr_method pon_auction_headers_all.bid_decrement_method%TYPE;
7531
7532 l_po_start_date pon_auction_headers_all.po_start_date%TYPE;
7533 l_po_end_date pon_auction_headers_all.po_end_date%TYPE;
7534 l_auc_close_date pon_auction_headers_all.close_bidding_date%TYPE;
7535 l_progress_payment_type pon_auction_headers_all.progress_payment_type%TYPE;
7536 l_contract_type pon_auction_headers_all.contract_type%TYPE;
7537
7538 l_tpid pon_bid_headers.trading_partner_id%TYPE;
7539 l_vensid pon_bid_headers.vendor_site_id%TYPE;
7543 l_blanket VARCHAR2(1);
7540 l_bid_curr_code pon_bid_headers.bid_currency_code%TYPE;
7541
7542 l_mas VARCHAR2(1);
7544 l_global VARCHAR2(1);
7545 l_trans_view VARCHAR2(1);
7546 l_header_disp_pf VARCHAR2(1);
7547 l_full_qty_reqd VARCHAR2(1);
7548 l_spo_trans_view VARCHAR2(1);
7549 l_price_driven VARCHAR2(1);
7550 l_rebid VARCHAR2(1);
7551 l_bid_all_lines VARCHAR2(1);
7552 l_auc_has_items VARCHAR2(1);
7553 l_suffix VARCHAR2(2);
7554
7555 l_has_errors VARCHAR2(1);
7556 l_price_tiers_indicator pon_auction_headers_all.PRICE_TIERS_INDICATOR%TYPE;
7557 --added by Allen Yang for Surrogate Bid 2008/09/03
7558 --------------------------------------------------------------------------------------
7559 l_two_part_flag pon_auction_headers_all.two_part_flag%TYPE;
7560 l_technical_evaluation_status pon_auction_headers_all.TECHNICAL_EVALUATION_STATUS%TYPE;
7561 l_surrogate_bid_flag pon_bid_headers.SURROG_BID_FLAG%TYPE;
7562 l_two_part_tech_surrogate_flag VARCHAR2(1);
7563 --------------------------------------------------------------------------------------
7564
7565 l_doctype_id PON_AUCTION_HEADERS_ALL.doctype_id%TYPE;
7566
7567 l_evaluation_flag VARCHAR2(1); -- Added for ER: Supplier Management: Supplier Evaluation
7568
7569 BEGIN
7570
7571 BEGIN
7572
7573 SELECT doctype_id INTO l_doctype_id FROM pon_auction_headers_all WHERE auction_Header_id = p_auc_header_id;
7574
7575 SELECT
7576 Nvl(pon_auc_doctype_rules.DEFAULT_VALUE,'N') INTO g_is_fed
7577 FROM PON_AUC_DOCTYPE_RULES pon_auc_doctype_rules
7578 , PON_AUC_BIZRULES pon_auc_bizrules
7579 WHERE pon_auc_doctype_rules.BIZRULE_ID = pon_auc_bizrules.BIZRULE_ID
7580 AND pon_auc_doctype_rules.DOCTYPE_ID = l_doctype_id
7581 AND pon_auc_bizrules.NAME = 'FEDERAL_NEGOTIATION';
7582 EXCEPTION
7583 WHEN No_Data_Found THEN
7584 g_is_fed := 'N';
7585 WHEN OTHERS THEN
7586 g_is_fed := 'N';
7587 END;
7588
7589
7590 -- Select auction data
7591 SELECT sysdate + g_exp_days_offset,
7592 bh.rate,
7593 bh.number_price_decimals,
7594 fc.precision,
7595 decode(ah.bid_ranking, 'MULTI_ATTRIBUTE_SCORING', 'Y', 'N'),
7596 decode(ah.contract_type, 'STANDARD',
7597 decode(ah.supplier_view_type, 'TRANSFORMED', 'Y', 'N'), 'N'),
7598 decode(ah.contract_type, 'BLANKET', 'Y', 'CONTRACT', 'Y', 'N'),
7599 nvl(ah.global_agreement_flag, 'N'),
7600 decode(ah.supplier_view_type, 'TRANSFORMED', 'Y', 'N'),
7601 bh.display_price_factors_flag,
7602 decode(ah.full_quantity_bid_code, 'FULL_QTY_BIDS_REQD', 'Y', 'N'),
7603 nvl(ah.price_driven_auction_flag, 'Y'),
7604 bh.min_bid_change,
7605 ah.min_bid_decrement * bh.rate, -- convert to bid currency
7606 decode(ah.min_bid_change_type, 'PERCENTAGE', 'Y', 'N'),
7607 nvl(ah.bid_decrement_method, 'PREVIOUS_PRICE'),
7608 ah.po_start_date,
7609 ah.po_end_date,
7610 ah.close_bidding_date,
7611 decode(ah.bid_scope_code, 'MUST_BID_ALL_ITEMS', 'Y', 'N'),
7612 ah.has_items_flag,
7613 bh.trading_partner_id,
7614 bh.vendor_site_id,
7615 bh.bid_currency_code,
7616 decode(old_bh.bid_status, 'ACTIVE', 'Y', 'N'),
7617 nvl(old_bh.bid_number, 0),
7618 ah.contract_type,
7619 ah.progress_payment_type,
7620 ah.price_tiers_indicator
7621 --added by Allen Yang for Surrogate Bid 2008/09/03
7622 --------------------------------------------------
7623 , ah.TWO_PART_FLAG,
7624 ah.TECHNICAL_EVALUATION_STATUS,
7625 bh.SURROG_BID_FLAG,
7626 --------------------------------------------------
7627 nvl(bh.evaluation_flag, 'N') -- Added for ER: Supplier Management: Supplier Evaluation
7628 INTO g_exp_date,
7629 l_rate,
7630 l_price_precision,
7631 l_amt_precision,
7632 l_mas,
7633 l_spo_trans_view,
7634 l_blanket,
7635 l_global,
7636 l_trans_view,
7637 l_header_disp_pf,
7638 l_full_qty_reqd,
7639 l_price_driven,
7640 l_min_bid_change,
7641 l_min_bid_decr,
7642 l_percent_decr,
7643 l_bid_decr_method,
7644 l_po_start_date,
7645 l_po_end_date,
7646 l_auc_close_date,
7647 l_bid_all_lines,
7648 l_auc_has_items,
7649 l_tpid,
7650 l_vensid,
7651 l_bid_curr_code,
7652 l_rebid,
7653 l_source_bid,
7654 l_contract_type,
7655 l_progress_payment_type,
7656 l_price_tiers_indicator
7657 --added by Allen Yang for Surrogate Bid 2008/09/03
7658 --------------------------------------------------
7659 , l_two_part_flag,
7660 l_technical_evaluation_status,
7661 l_surrogate_bid_flag,
7662 --------------------------------------------------
7663 l_evaluation_flag -- Added for ER: Supplier Management: Supplier Evaluation
7664 FROM pon_auction_headers_all ah, pon_bid_headers bh,
7665 fnd_currencies fc, pon_bid_headers old_bh
7666 WHERE ah.auction_header_id = p_auc_header_id
7667 AND ah.auction_header_id = bh.auction_header_id
7668 AND bh.bid_number = p_bid_number
7669 AND fc.currency_code = bh.bid_currency_code
7670 AND old_bh.bid_number (+) = bh.old_bid_number;
7671
7672 l_suffix := PON_LARGE_AUCTION_UTIL_PKG.get_doctype_suffix(p_auc_header_id);
7673 --added by Allen Yang for Surrogate Bid 2008/09/03
7674 --------------------------------------------------
7675 l_two_part_tech_surrogate_flag := 'N';
7676 IF (l_two_part_flag = 'Y' AND l_technical_evaluation_status = 'NOT_COMPLETED' AND l_surrogate_bid_flag = 'Y')
7680 --------------------------------------------------
7677 THEN
7678 l_two_part_tech_surrogate_flag := 'Y';
7679 END IF;
7681
7682 IF (p_spreadsheet = g_online_mode) THEN
7683
7684 validate_bids_placed
7685 (p_auc_header_id,
7686 p_bid_number,
7687 p_interface_type,
7688 p_userid,
7689 l_rebid,
7690 l_bid_all_lines,
7691 l_auc_has_items,
7692 l_evaluation_flag, -- Added for ER: Supplier Management: Supplier Evaluation
7693 l_suffix,
7694 p_batch_id,
7695 p_request_id);
7696
7697 -- Check if there were any errors
7698 SELECT decode(count(auction_header_id), 0, 'N', 'Y')
7699 INTO l_has_errors
7700 FROM pon_interface_errors
7701 WHERE (batch_id = p_batch_id OR request_id = p_request_id)
7702 AND rownum = 1;
7703
7704 IF (l_has_errors = 'Y') THEN
7705 x_return_status := 1;
7706 x_return_code := 'ERROR';
7707 RETURN;
7708 END IF;
7709 ELSE
7710 -- For spreadsheet upload, we need to first populate has bid
7711 -- and changed lines flags before performing validations.
7712 populate_has_bid_changed_line
7713 (p_auc_header_id,
7714 p_bid_number,
7715 l_source_bid,
7716 p_batch_id,
7717 l_rebid,
7718 l_blanket,
7719 p_spreadsheet);
7720 END IF;
7721
7722 validate_lots_and_groups
7723 (p_auc_header_id,
7724 p_bid_number,
7725 p_interface_type,
7726 p_userid,
7727 p_spreadsheet,
7728 p_batch_id,
7729 p_request_id);
7730
7731 validate_lines
7732 (p_auc_header_id,
7733 p_bid_number,
7734 p_interface_type,
7735 p_userid,
7736 l_tpid,
7737 l_vensid,
7738 p_spreadsheet,
7739 l_blanket,
7740 l_global,
7741 l_trans_view,
7742 l_rebid,
7743 l_full_qty_reqd,
7744 l_header_disp_pf,
7745 l_price_driven,
7746 l_percent_decr,
7747 l_bid_decr_method,
7748 l_min_bid_decr,
7749 l_min_bid_change,
7750 l_rate,
7751 l_price_precision,
7752 l_amt_precision,
7753 l_bid_curr_code,
7754 l_suffix,
7755 p_batch_id,
7756 p_request_id
7757 --added by Allen Yang for Surrogate Bid 2008/09/03
7758 --------------------------------------------------
7759 ,l_two_part_tech_surrogate_flag
7760 --------------------------------------------------
7761 );
7762
7763 -- Unsolicited Lines Project : Validate unsolicited lines only during online mode.
7764 IF (p_spreadsheet = g_online_mode and l_two_part_tech_surrogate_flag = 'N') THEN
7765 PON_UNSOL_VALIDATIONS_PKG.VALIDATE_UNSOL_LINES(p_auc_header_id,
7766 p_bid_number,
7767 p_interface_type,
7768 p_userid,
7769 l_tpid,
7770 l_vensid,
7771 p_spreadsheet,
7772 l_blanket,
7773 l_global,
7774 l_trans_view,
7775 l_rebid,
7776 l_full_qty_reqd,
7777 l_header_disp_pf,
7778 l_price_driven,
7779 l_percent_decr,
7780 l_bid_decr_method,
7781 l_min_bid_decr,
7782 l_min_bid_change,
7783 l_rate,
7784 l_price_precision,
7785 l_amt_precision,
7786 l_bid_curr_code,
7787 l_suffix,
7788 p_batch_id,
7789 p_request_id,
7790 l_two_part_tech_surrogate_flag);
7791 END IF;
7792 -- End Unsolicited Lines Project
7793
7794
7795 IF (p_spreadsheet in (g_online_mode, g_xml_upload_mode)) THEN
7796 validate_requirements
7797 (p_auc_header_id,
7798 p_bid_number,
7799 p_interface_type,
7800 p_userid,
7801 p_spreadsheet,
7802 l_suffix,
7803 p_batch_id,
7804 p_request_id
7805 --added by Allen Yang for Surrogate Bid 2008/09/03
7806 --------------------------------------------------
7807 , l_two_part_tech_surrogate_flag
7808 --------------------------------------------------
7809 );
7810 END IF;
7811
7812 -- If spreadsheet upload, calculate the total weighted score for MAS negotiations
7813 IF (p_spreadsheet in (g_txt_upload_mode, g_xml_upload_mode) AND l_mas = 'Y') THEN
7814 calc_total_weighted_score(p_bid_number, p_batch_id);
7815 END IF;
7816
7817 validate_attributes
7818 (p_auc_header_id,
7819 p_bid_number,
7820 p_interface_type,
7821 p_userid,
7822 p_spreadsheet,
7823 l_suffix,
7824 p_batch_id,
7825 p_request_id);
7826
7827 IF (l_header_disp_pf = 'Y')
7828 --added by Allen Yang for Surrogate Bid 2008/09/03
7829 --------------------------------------------------
7830 AND l_two_part_tech_surrogate_flag = 'N'
7831 --------------------------------------------------
7832 THEN
7833 validate_cost_factors
7834 (p_auc_header_id,
7835 p_bid_number,
7836 p_interface_type,
7837 p_userid,
7838 p_spreadsheet,
7839 l_price_precision,
7843 p_request_id);
7840 l_amt_precision,
7841 l_suffix,
7842 p_batch_id,
7844 END IF;
7845
7846 IF (p_spreadsheet in ( g_online_mode, g_xml_upload_mode)) THEN
7847 IF( l_price_tiers_indicator = 'PRICE_BREAKS')
7848 --added by Allen Yang for Surrogate Bid 2008/09/03
7849 --------------------------------------------------
7850 AND l_two_part_tech_surrogate_flag = 'N'
7851 --------------------------------------------------
7852 THEN
7853
7854 validate_price_breaks
7855 (p_auc_header_id,
7856 p_bid_number,
7857 p_interface_type,
7858 p_userid,
7859 p_spreadsheet,
7860 l_price_precision,
7861 l_trans_view,
7862 l_blanket,
7863 l_header_disp_pf,
7864 l_po_start_date,
7865 l_po_end_date,
7866 l_auc_close_date,
7867 l_suffix,
7868 p_batch_id,
7869 p_request_id);
7870
7871 ELSIF( l_price_tiers_indicator = 'QUANTITY_BASED')
7872 --added by Allen Yang for Surrogate Bid 2008/09/03
7873 --------------------------------------------------
7874 AND l_two_part_tech_surrogate_flag = 'N'
7875 --------------------------------------------------
7876 THEN
7877
7878 validate_qty_based_price_tiers
7879 (p_auc_header_id,
7880 p_bid_number,
7881 p_interface_type,
7882 p_userid,
7883 p_spreadsheet,
7884 l_price_precision,
7885 p_batch_id,
7886 p_request_id,
7887 l_contract_type);
7888
7889 END IF;
7890 END IF;
7891
7892 --modified by Allen Yang for Surrogate Bid 2008/09/03
7893 -----------------------------------------------------
7894 --validate_price_differentials
7895 -- (p_auc_header_id,
7896 -- p_bid_number,
7897 -- p_interface_type,
7898 -- p_userid,
7899 -- p_spreadsheet,
7900 -- l_suffix,
7901 -- p_batch_id,
7902 -- p_request_id);
7903 IF (l_two_part_tech_surrogate_flag = 'N') THEN
7904 validate_price_differentials
7905 (p_auc_header_id,
7906 p_bid_number,
7907 p_interface_type,
7908 p_userid,
7909 p_spreadsheet,
7910 l_suffix,
7911 p_batch_id,
7912 p_request_id);
7913 END IF;
7914 -----------------------------------------------------
7915
7916 IF
7917 --added by Allen Yang for Surrogate Bid 2009/09/03
7918 --------------------------------------------------
7919 l_two_part_tech_surrogate_flag = 'N' AND
7920 --------------------------------------------------
7921 l_progress_payment_type <> 'NONE' AND l_contract_type = 'STANDARD' AND NVL(p_spreadsheet,g_online_mode) = g_online_mode
7922 THEN
7923 validate_payments
7924 (
7925 p_auc_header_id => p_auc_header_id,
7926 p_bid_number => p_bid_number,
7927 p_interface_type => p_interface_type,
7928 p_userid => p_userid,
7929 p_price_precision => l_price_precision,
7930 p_batch_id => p_batch_id,
7931 p_request_id => p_request_id);
7932 END IF;
7933
7934 ---------------add by Yao Zhang to check emd status------------------------
7935
7936 validate_emd_status( p_auc_header_id => p_auc_header_id,
7937 p_bid_number => p_bid_number,
7938 p_interface_type => p_interface_type,
7939 p_userid => p_userid,
7940 p_price_precision => l_price_precision,
7941 p_batch_id => p_batch_id,
7942 p_request_id => p_request_id
7943 );
7944
7945 ------------------Yao Zhang add end-------------------------------------------------
7946
7947 -- Check if any errors were present
7948 SELECT decode(count(auction_header_id), 0, 'N', 'Y')
7949 INTO l_has_errors
7950 FROM pon_interface_errors
7951 WHERE (batch_id = p_batch_id OR request_id = p_request_id)
7952 AND rownum = 1;
7953
7954 IF (l_has_errors = 'Y') THEN
7955 x_return_status := 1;
7956 x_return_code := 'ERRORS';
7957 ELSE
7958 x_return_status := 0;
7959 x_return_code := 'SUCCESS';
7960 END IF;
7961
7962 END perform_all_validations;
7963
7964 PROCEDURE validate_bid
7965 (
7966 p_auc_header_id IN pon_bid_item_prices.auction_header_id%TYPE,
7967 p_bid_number IN pon_bid_item_prices.bid_number%TYPE,
7968 p_interface_type IN pon_interface_errors.interface_type%TYPE,
7969 p_userid IN pon_interface_errors.created_by%TYPE,
7970 p_batch_id IN pon_interface_errors.batch_id%TYPE,
7971 p_request_id IN pon_interface_errors.request_id%TYPE,
7972 x_return_status OUT NOCOPY NUMBER,
7973 x_return_code OUT NOCOPY VARCHAR2
7974 ) IS
7975 BEGIN
7976
7977 perform_all_validations(p_auc_header_id, p_bid_number, p_interface_type,
7978 p_userid, p_batch_id, p_request_id, g_online_mode, x_return_status, x_return_code);
7979
7980 END validate_bid;
7981
7982 PROCEDURE validate_spreadsheet_upload
7983 (
7984 p_auc_header_id IN pon_bid_item_prices.auction_header_id%TYPE,
7985 p_bid_number IN pon_bid_item_prices.bid_number%TYPE,
7986 p_interface_type IN pon_interface_errors.interface_type%TYPE,
7987 p_spreadsheet_type IN VARCHAR2,
7988 p_userid IN pon_interface_errors.created_by%TYPE,
7989 p_batch_id IN pon_interface_errors.batch_id%TYPE,
7990 p_request_id IN pon_interface_errors.request_id%TYPE,
7991 x_return_status OUT NOCOPY NUMBER,
7992 x_return_code OUT NOCOPY VARCHAR2
7993 ) IS
7994 BEGIN
7995
7996 perform_all_validations(p_auc_header_id, p_bid_number, p_interface_type,
7997 p_userid, p_batch_id, p_request_id, p_spreadsheet_type, x_return_status, x_return_code);
7998
7999 END validate_spreadsheet_upload;
8000
8001 FUNCTION GET_VENDOR_SITE_CODE(p_vendor_site_id IN NUMBER) RETURN VARCHAR2 IS
8002 l_vendor_site_code PO_VENDOR_SITES_ALL.VENDOR_SITE_CODE%TYPE;
8003 BEGIN
8004 IF (p_vendor_site_id = -1) THEN
8005 RETURN '';
8006 ELSE
8007 BEGIN
8008 SELECT vendor_site_code
8009 INTO l_vendor_site_code
8010 FROM PO_VENDOR_SITES_ALL
8011 WHERE vendor_site_id = p_vendor_site_id;
8012 EXCEPTION
8013 WHEN NO_DATA_FOUND THEN
8014 l_vendor_site_code := '';
8015 END;
8016 END IF;
8017
8018 return l_vendor_site_code;
8019
8020 END GET_VENDOR_SITE_CODE;
8021
8022 END PON_BID_VALIDATIONS_PKG;