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