DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_VALIDATE_PRICE_LIST_LINE

Source


1 PACKAGE BODY QP_Validate_Price_List_Line AS
2 /* $Header: QPXLPLLB.pls 120.5.12010000.2 2009/11/30 04:02:48 jputta ship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'QP_Validate_Price_List_Line';
7 
8 --  Procedure Entity
9 
10 PROCEDURE Entity
11 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
12 ,   p_PRICE_LIST_LINE_rec           IN  QP_Price_List_PUB.Price_List_Line_Rec_Type
13 ,   p_old_PRICE_LIST_LINE_rec       IN  QP_Price_List_PUB.Price_List_Line_Rec_Type :=
14                                         QP_Price_List_PUB.G_MISS_PRICE_LIST_LINE_REC
15 )
16 IS
17 l_return_status               VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
18 l_dummy_1                     VARCHAR2(1);
19 l_valid                       Number;
20 l_uom_code                    VARCHAR2(3);
21 l_hdr_start_date 			  DATE; -- 5040708
22 l_hdr_end_date 			  	  DATE; -- 5040708
23 BEGIN
24 
25     --  Check required attributes.
26 
27     IF  p_PRICE_LIST_LINE_rec.list_line_id IS NULL
28     THEN
29 
30         l_return_status := FND_API.G_RET_STS_ERROR;
31 
32         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR)
33         THEN
34 
35             FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
36             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','list_line_id');
37             oe_msg_pub.Add;
38 
39         END IF;
40 
41     END IF;
42 
43 
44 
45     --  Check rest of required attributes here.
46     --
47 
48 
49     --  Return Error if a required attribute is missing.
50 
51     IF l_return_status = FND_API.G_RET_STS_ERROR THEN
52 
53         RAISE FND_API.G_EXC_ERROR;
54 
55     END IF;
56 
57     --
58     --  Check conditionally required attributes here.
59     --
60 
61 	-- begin bug 5040708
62 	SELECT start_date_active, end_date_active INTO l_hdr_start_date, l_hdr_end_date FROM QP_LIST_HEADERS_ALL_B b
63 	WHERE b.list_header_id = p_PRICE_LIST_LINE_rec.list_header_id;
64 
65 	-- validate PLL start date falls within PLH dates
66 /* bug 5111502
67 	IF (p_PRICE_LIST_LINE_rec.start_date_active IS NULL OR p_PRICE_LIST_LINE_rec.start_date_active=Fnd_Api.G_MISS_DATE)
68 	AND (l_hdr_start_date IS NOT NULL AND l_hdr_start_date <> Fnd_Api.G_MISS_DATE) THEN
69 		l_return_status := Fnd_Api.G_RET_STS_ERROR;
70 		Fnd_Message.SET_NAME('QP', 'QP_PLL_START_DATE_NOT_WITHIN');
71 	  	Oe_Msg_Pub.ADD;
72        	RAISE Fnd_Api.G_EXC_ERROR;
73 	END IF;
74 */
75 	IF (p_PRICE_LIST_LINE_rec.start_date_active IS NOT NULL AND p_PRICE_LIST_LINE_rec.start_date_active <> Fnd_Api.G_MISS_DATE)
76 	AND (l_hdr_start_date IS NOT NULL AND l_hdr_start_date <> Fnd_Api.G_MISS_DATE) THEN
77 
78 		IF (l_hdr_end_date IS NULL OR l_hdr_end_date = Fnd_Api.G_MISS_DATE) THEN -- Hdr end date is null
79 			IF (p_PRICE_LIST_LINE_rec.start_date_active < l_hdr_start_date) THEN
80        	  	 	l_return_status := Fnd_Api.G_RET_STS_ERROR;
81 	  		 	Fnd_Message.SET_NAME('QP', 'QP_PLL_START_DATE_NOT_WITHIN');
82 	  		 	Oe_Msg_Pub.ADD;
83        		 	RAISE Fnd_Api.G_EXC_ERROR;
84 			END IF;
85 		ELSE -- PLH end date not null
86 			IF ((p_PRICE_LIST_LINE_rec.start_date_active < l_hdr_start_date) OR
87 			(p_PRICE_LIST_LINE_rec.start_date_active  > l_hdr_end_date)) THEN
88 				l_return_status := Fnd_Api.G_RET_STS_ERROR;
89 	  		 	Fnd_Message.SET_NAME('QP', 'QP_PLL_START_DATE_NOT_WITHIN');
90 	  		 	Oe_Msg_Pub.ADD;
91        		 	RAISE Fnd_Api.G_EXC_ERROR;
92 
93 			END IF;
94 		END IF; -- IF (l_hdr_end_date IS NULL OR...
95 
96 	END IF; -- end PLL start date not null and PLH start date not null
97 
98 	-- validate PLL end date falls within PLH dates
99 /* bug 5111502
100 	IF (p_PRICE_LIST_LINE_rec.end_date_active IS NULL OR p_PRICE_LIST_LINE_rec.end_date_active = Fnd_Api.G_MISS_DATE)
101 	AND (l_hdr_end_date IS NOT NULL AND l_hdr_end_date <> Fnd_Api.G_MISS_DATE) THEN
102 		l_return_status := Fnd_Api.G_RET_STS_ERROR;
103 		Fnd_Message.SET_NAME('QP', 'QP_PLL_END_DATE_NOT_WITHIN');
104 	  	Oe_Msg_Pub.ADD;
105        	RAISE Fnd_Api.G_EXC_ERROR;
106 	END IF;
107 */
108 	IF (p_PRICE_LIST_LINE_rec.end_date_active IS NOT NULL AND p_PRICE_LIST_LINE_rec.end_date_active <> Fnd_Api.G_MISS_DATE)
109 	AND (l_hdr_end_date IS NOT NULL AND l_hdr_end_date <> Fnd_Api.G_MISS_DATE) THEN
110 		IF ((p_PRICE_LIST_LINE_rec.end_date_active < l_hdr_start_date) OR
111 		(p_PRICE_LIST_LINE_rec.end_date_active  > l_hdr_end_date)) THEN
112 			l_return_status := Fnd_Api.G_RET_STS_ERROR;
113 	  		Fnd_Message.SET_NAME('QP', 'QP_PLL_END_DATE_NOT_WITHIN');
114 	  		Oe_Msg_Pub.ADD;
115        		RAISE Fnd_Api.G_EXC_ERROR;
116 		END IF;
117 	END IF; -- end PLL end date not null and PLH end date not null
118 	-- end bug 5040708
119 /* 4936019
120     -- block pricing
121     -- check when changing BLOCK price break to UNIT price break
122     -- select how many child price break lines already have BLOCK application method
123     IF (p_PRICE_LIST_LINE_rec.arithmetic_operator = 'UNIT_PRICE') THEN
124       SELECT count(*)
125       INTO l_dummy_1
126       FROM qp_price_breaks_v
127       WHERE parent_list_line_id = p_PRICE_LIST_LINE_rec.list_line_id
128         AND arithmetic_operator = 'BLOCK_PRICE';
129 
130       -- if any price breaks are BLOCK, prohibit changing parent line from BLOCK to UNIT!
131       IF (TO_NUMBER(l_dummy_1) > 0) THEN
132         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR) THEN
133           FND_MESSAGE.SET_NAME('QP','QP_CANNOT_CHANGE_APPL_METH');
134           oe_msg_pub.Add;
135         END IF;
136         l_return_status := FND_API.G_RET_STS_ERROR;
137       END IF; -- if (to_number...)
138     END IF; -- if (p_price_list_line...)
139 
140     -- block pricing
141     -- check when changing block RANGE break to block POINT break
142     -- select child price break lines are UNIT or have non-null recurring values
143     IF (p_PRICE_LIST_LINE_rec.arithmetic_operator = 'BLOCK_PRICE' AND
144         p_PRICE_LIST_LINE_rec.price_break_type_code = 'POINT')
145     THEN
146       SELECT count(*)
147       INTO l_dummy_1
148       FROM qp_price_breaks_v
149       WHERE parent_list_line_id = p_PRICE_LIST_LINE_rec.list_line_id
150         AND (arithmetic_operator = 'UNIT_PRICE' OR recurring_value IS NOT NULL);
151 
152       -- if any price breaks found, prohibit changing parent line from RANGE to POINT!
153       IF (TO_NUMBER(l_dummy_1) > 0) THEN
154         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR) THEN
155           FND_MESSAGE.SET_NAME('QP','QP_CANNOT_CHANGE_BREAK_TYPE');
156           oe_msg_pub.Add;
157         END IF;
158         l_return_status := FND_API.G_RET_STS_ERROR;
159       END IF; -- if (to_number...)
160     END IF; -- if (p_price_list_line...)
161 
162     --
163     -- return error for invalid conditionally required attributes
164     --
165     IF l_return_status = FND_API.G_RET_STS_ERROR THEN
166         RAISE FND_API.G_EXC_ERROR;
167     END IF;
168 */
169     --
170     --  Validate attribute dependencies here.
171     --
172         IF NOT QP_Validate.Start_Date_Active(p_PRICE_LIST_LINE_rec.start_date_active, p_PRICE_LIST_LINE_rec.end_date_active) THEN
173 
174             l_return_status := FND_API.G_RET_STS_ERROR;
175 
176             /*
177 
178             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR)
179             THEN
180 
181               FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
182               FND_MESSAGE.SET_TOKEN('ATTRIBUTE','list_line_id');
183               oe_msg_pub.Add;
184 
185             END IF;
186             */
187 
188        END IF;
189 
190      IF l_return_status = FND_API.G_RET_STS_ERROR THEN
191 
192         RAISE FND_API.G_EXC_ERROR;
193 
194      END IF;
195 
196     -- mkarya for bug 1906545, static formula attached should not has a line as 'MV'
197     IF  p_PRICE_LIST_LINE_rec.generate_using_formula_id IS NOT NULL AND
198         (   p_PRICE_LIST_LINE_rec.generate_using_formula_id <>
199             p_old_PRICE_LIST_LINE_rec.generate_using_formula_id OR
200             p_old_PRICE_LIST_LINE_rec.generate_using_formula_id IS NULL )
201     THEN
202         BEGIN
203           select 'X'
204           into   l_dummy_1
205           from   qp_price_formulas_b
206           where  price_formula_id = p_PRICE_LIST_LINE_rec.generate_using_formula_id
207             and    not exists (select price_formula_line_type_code
208                                from   qp_price_formula_lines
209                                where  price_formula_id = p_PRICE_LIST_LINE_rec.generate_using_formula_id
210                                and    price_formula_line_type_code = 'MV' );
211         EXCEPTION
212           WHEN NO_DATA_FOUND THEN
213              l_return_status := FND_API.G_RET_STS_ERROR;
214              FND_MESSAGE.SET_NAME('QP','QP_INVALID_FORMULA_FOR_PL');
215              OE_MSG_PUB.Add;
216         END;
217 
218     END IF;
219 
220     -- mkarya for bug 1906545, dynamic formula attached should not has a line as 'MV'
221     IF  p_PRICE_LIST_LINE_rec.price_by_formula_id IS NOT NULL AND
222         (   p_PRICE_LIST_LINE_rec.price_by_formula_id <>
223             p_old_PRICE_LIST_LINE_rec.price_by_formula_id OR
224             p_old_PRICE_LIST_LINE_rec.price_by_formula_id IS NULL )
225     THEN
226         BEGIN
227           select 'X'
228           into   l_dummy_1
229           from   qp_price_formulas_b
230           where  price_formula_id = p_PRICE_LIST_LINE_rec.price_by_formula_id
231             and    not exists (select price_formula_line_type_code
232                                from   qp_price_formula_lines
233                                where  price_formula_id = p_PRICE_LIST_LINE_rec.price_by_formula_id
234                                and    price_formula_line_type_code = 'MV' );
235         EXCEPTION
236           WHEN NO_DATA_FOUND THEN
237              l_return_status := FND_API.G_RET_STS_ERROR;
238              FND_MESSAGE.SET_NAME('QP','QP_INVALID_FORMULA_FOR_PL');
239              OE_MSG_PUB.Add;
240         END;
241     END IF;
242 
243 
244 
245    /* Added for bug2002487 */
246 
247     IF  p_PRICE_LIST_LINE_rec.list_line_type_code='PLL'
248       and p_PRICE_LIST_LINE_rec.operand IS NULL
249       and p_PRICE_LIST_LINE_rec.price_by_formula_id IS NULL
250       and p_PRICE_LIST_LINE_rec.generate_using_formula_id IS NULL
251     THEN
252 
253         l_return_status := FND_API.G_RET_STS_ERROR;
254 	if  p_PRICE_LIST_LINE_rec.arithmetic_operator = 'UNIT_PRICE' then -- Added by DKC for ER # 6111123
255 		IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR)
256 		THEN
257 
258 		    FND_MESSAGE.SET_NAME('QP','QP_OPERAND_FORMULA');
259 		    oe_msg_pub.Add;
260 		    l_return_status := FND_API.G_RET_STS_ERROR;
261 
262 		END IF;
263 	else --- This validation works only for only PRICE breaks lines as the arithmetic operator couldnt be block price for PLL. changes for ER # 6111123
264 		IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR)
265 		THEN
266 		     FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
267 		      FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Price');
268 		      oe_msg_pub.Add;
269 		      l_return_status := FND_API.G_RET_STS_ERROR;
270 		END IF;
271 	end if;
272 	-- end of changes for ER # 6111123
273     END IF;
274 
275     -- block pricing
276     IF NOT QP_Validate.Recurring_Value(p_PRICE_LIST_LINE_rec.recurring_value)
277     THEN
278       l_return_status := FND_API.G_RET_STS_ERROR;
279 
280       IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR)
281       THEN
282         FND_MESSAGE.SET_NAME('QP','QP_INVALID_RECURRING_VALUE');
283         oe_msg_pub.Add;
284       END IF;
285     END IF;
286 
287     -- OKS proration
288     IF  QP_CODE_CONTROL.CODE_RELEASE_LEVEL < '110510' or
289 	nvl(fnd_profile.value('QP_BREAK_UOM_PRORATION'),'N') = 'N'
290        OR p_PRICE_LIST_LINE_rec.list_line_type_code <> 'PBH'
291 	  OR p_PRICE_LIST_LINE_rec.arithmetic_operator <> 'UNIT_PRICE' THEN
292 
293        IF p_PRICE_LIST_LINE_rec.break_uom_code is not null
294 	  OR p_PRICE_LIST_LINE_rec.break_uom_context is not null
295             OR p_PRICE_LIST_LINE_rec.break_uom_attribute is not null
296        THEN
297 
298 	  l_return_status := FND_API.G_RET_STS_ERROR;
299 
300         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR)
301         THEN
302 
303             FND_MESSAGE.SET_NAME('QP','QP_BREAK_UOM_NOT_ALLOWED');
304             oe_msg_pub.Add;
305             l_return_status := FND_API.G_RET_STS_ERROR;
306         END IF;
307 
308        END IF;
309     END IF;
310 
311     IF p_PRICE_LIST_LINE_rec.break_uom_code is not null
312 	  OR p_PRICE_LIST_LINE_rec.break_uom_context is not null
313 	  OR p_PRICE_LIST_LINE_rec.break_uom_attribute is not null
314     THEN
315 
316        IF p_PRICE_LIST_LINE_rec.break_uom_code is  null
317 	  OR p_PRICE_LIST_LINE_rec.break_uom_context is  null
318           OR p_PRICE_LIST_LINE_rec.break_uom_attribute is null
319        THEN
320 	  l_return_status := FND_API.G_RET_STS_ERROR;
321 
322           IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR)
323           THEN
324             FND_MESSAGE.SET_NAME('QP','QP_BREAK_UOM_FLDS_NOT_ALLOWED');
325             oe_msg_pub.Add;
326             l_return_status := FND_API.G_RET_STS_ERROR;
327           END IF;
328 
329       END IF;
330     END IF;
331 
332     IF p_PRICE_LIST_LINE_rec.break_uom_code IS NOT NULL THEN
333        Begin
334 	   SELECT uom_code
335 	     INTO l_uom_code
336 	     FROM mtl_units_of_measure_vl
337 	     WHERE uom_code = p_PRICE_LIST_LINE_rec.break_uom_code
338 	     AND rownum<2;
339 	Exception
340 	   when no_data_found then
341 	      l_return_status := FND_API.G_RET_STS_ERROR;
342 
343 	      IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR)
344 	      THEN
345 		 FND_MESSAGE.SET_NAME('QP','QP_INVALID_BREAK_UOM_CODE');
346 		 oe_msg_pub.Add;
347 		 l_return_status := FND_API.G_RET_STS_ERROR;
348        	      END IF;
349 	END;
350     END IF;
351 
352     --END OKS changes
353 
354     IF l_return_status = FND_API.G_RET_STS_ERROR THEN
355       RAISE FND_API.G_EXC_ERROR;
356     END IF;
357 
358     --  Done validating entity
359 
360     x_return_status := l_return_status;
361 
362 EXCEPTION
363 
364     WHEN FND_API.G_EXC_ERROR THEN
365 
366         x_return_status := FND_API.G_RET_STS_ERROR;
367 
368     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
369 
370         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
371 
372     WHEN OTHERS THEN
373 
374         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
375 
376         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
377         THEN
378             oe_msg_pub.Add_Exc_Msg
379             (   G_PKG_NAME
380             ,   'Entity'
381             );
382         END IF;
383 
384 END Entity;
385 
386 --  Procedure Attributes
387 
388 PROCEDURE Attributes
389 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
390 ,   p_PRICE_LIST_LINE_rec           IN  QP_Price_List_PUB.Price_List_Line_Rec_Type
391 ,   p_old_PRICE_LIST_LINE_rec       IN  QP_Price_List_PUB.Price_List_Line_Rec_Type :=
392                                         QP_Price_List_PUB.G_MISS_PRICE_LIST_LINE_REC
393 )
394 IS
395   l_dummy_1    varchar2(1);
396 BEGIN
397 
398     x_return_status := FND_API.G_RET_STS_SUCCESS;
399 
400     --  Validate PRICE_LIST_LINE attributes
401 
402 /*
403     IF  p_PRICE_LIST_LINE_rec.accrual_qty IS NOT NULL AND
404         (   p_PRICE_LIST_LINE_rec.accrual_qty <>
405             p_old_PRICE_LIST_LINE_rec.accrual_qty OR
406             p_old_PRICE_LIST_LINE_rec.accrual_qty IS NULL )
407     THEN
408         IF NOT QP_Validate.Accrual_Qty(p_PRICE_LIST_LINE_rec.accrual_qty) THEN
409             x_return_status := FND_API.G_RET_STS_ERROR;
410         END IF;
411     END IF;
412 
413 
414     IF  p_PRICE_LIST_LINE_rec.accrual_uom_code IS NOT NULL AND
415         (   p_PRICE_LIST_LINE_rec.accrual_uom_code <>
416             p_old_PRICE_LIST_LINE_rec.accrual_uom_code OR
417             p_old_PRICE_LIST_LINE_rec.accrual_uom_code IS NULL )
418     THEN
419         IF NOT QP_Validate.Accrual_Uom(p_PRICE_LIST_LINE_rec.accrual_uom_code) THEN
420             x_return_status := FND_API.G_RET_STS_ERROR;
421         END IF;
422     END IF;
423 
424 */
425 
426 
427     /* changes to fix bug # 1688666 */
428 
429        IF FND_PROFILE.VALUE('QP_NEGATIVE_PRICING') = 'N' AND p_PRICE_LIST_LINE_rec.operand < 0 THEN
430             FND_MESSAGE.SET_NAME('QP','SO_PR_NEGATIVE_LIST_PRICE');
431             OE_MSG_PUB.Add;
432             x_return_status := FND_API.G_RET_STS_ERROR;
433        END IF;
434 
435 
436     IF  p_PRICE_LIST_LINE_rec.arithmetic_operator IS NOT NULL AND
437         (   p_PRICE_LIST_LINE_rec.arithmetic_operator <>
438             p_old_PRICE_LIST_LINE_rec.arithmetic_operator OR
439             p_old_PRICE_LIST_LINE_rec.arithmetic_operator IS NULL )
440     THEN
441         IF NOT QP_Validate.Arithmetic_Operator(p_PRICE_LIST_LINE_rec.arithmetic_operator) THEN
442             x_return_status := FND_API.G_RET_STS_ERROR;
443         END IF;
444 
445     END IF;
446 
447     IF  p_PRICE_LIST_LINE_rec.automatic_flag IS NOT NULL AND
448         (   p_PRICE_LIST_LINE_rec.automatic_flag <>
449             p_old_PRICE_LIST_LINE_rec.automatic_flag OR
450             p_old_PRICE_LIST_LINE_rec.automatic_flag IS NULL )
451     THEN
452         IF NOT QP_Validate.Automatic(p_PRICE_LIST_LINE_rec.automatic_flag) THEN
453             x_return_status := FND_API.G_RET_STS_ERROR;
454         END IF;
455     END IF;
456 
457 
458     /*
459 
460     IF  p_PRICE_LIST_LINE_rec.base_qty IS NOT NULL AND
461         (   p_PRICE_LIST_LINE_rec.base_qty <>
462             p_old_PRICE_LIST_LINE_rec.base_qty OR
463             p_old_PRICE_LIST_LINE_rec.base_qty IS NULL )
464     THEN
465         IF NOT QP_Validate.Base_Qty(p_PRICE_LIST_LINE_rec.base_qty) THEN
466             x_return_status := FND_API.G_RET_STS_ERROR;
467         END IF;
468     END IF;
469     */
470 
471     /*
472     IF  p_PRICE_LIST_LINE_rec.base_uom_code IS NOT NULL AND
473         (   p_PRICE_LIST_LINE_rec.base_uom_code <>
474             p_old_PRICE_LIST_LINE_rec.base_uom_code OR
475             p_old_PRICE_LIST_LINE_rec.base_uom_code IS NULL )
476     THEN
477         IF NOT QP_Validate.Base_Uom(p_PRICE_LIST_LINE_rec.base_uom_code) THEN
478             x_return_status := FND_API.G_RET_STS_ERROR;
479         END IF;
480     END IF;
481     */
482 
483     IF  p_PRICE_LIST_LINE_rec.comments IS NOT NULL AND
484         (   p_PRICE_LIST_LINE_rec.comments <>
485             p_old_PRICE_LIST_LINE_rec.comments OR
486             p_old_PRICE_LIST_LINE_rec.comments IS NULL )
487     THEN
488         IF NOT QP_Validate.Comments(p_PRICE_LIST_LINE_rec.comments) THEN
489             x_return_status := FND_API.G_RET_STS_ERROR;
490         END IF;
491     END IF;
492 
493     IF  p_PRICE_LIST_LINE_rec.created_by IS NOT NULL AND
494         (   p_PRICE_LIST_LINE_rec.created_by <>
495             p_old_PRICE_LIST_LINE_rec.created_by OR
496             p_old_PRICE_LIST_LINE_rec.created_by IS NULL )
497     THEN
498         IF NOT QP_Validate.Created_By(p_PRICE_LIST_LINE_rec.created_by) THEN
499             x_return_status := FND_API.G_RET_STS_ERROR;
500         END IF;
501     END IF;
502 
503     IF  p_PRICE_LIST_LINE_rec.creation_date IS NOT NULL AND
504         (   p_PRICE_LIST_LINE_rec.creation_date <>
505             p_old_PRICE_LIST_LINE_rec.creation_date OR
506             p_old_PRICE_LIST_LINE_rec.creation_date IS NULL )
507     THEN
508         IF NOT QP_Validate.Creation_Date(p_PRICE_LIST_LINE_rec.creation_date) THEN
509             x_return_status := FND_API.G_RET_STS_ERROR;
510         END IF;
511     END IF;
512 
513     IF  p_PRICE_LIST_LINE_rec.effective_period_uom IS NOT NULL AND
514         (   p_PRICE_LIST_LINE_rec.effective_period_uom <>
515             p_old_PRICE_LIST_LINE_rec.effective_period_uom OR
516             p_old_PRICE_LIST_LINE_rec.effective_period_uom IS NULL )
517     THEN
518         IF NOT QP_Validate.Effective_Period_Uom(p_PRICE_LIST_LINE_rec.effective_period_uom) THEN
519             x_return_status := FND_API.G_RET_STS_ERROR;
520         END IF;
521     END IF;
522 
523     IF  p_PRICE_LIST_LINE_rec.end_date_active IS NOT NULL AND
524         (   p_PRICE_LIST_LINE_rec.end_date_active <>
525             p_old_PRICE_LIST_LINE_rec.end_date_active OR
526             p_old_PRICE_LIST_LINE_rec.end_date_active IS NULL )
527     THEN
528         IF NOT QP_Validate.End_Date_Active(p_PRICE_LIST_LINE_rec.end_date_active, p_PRICE_LIST_LINE_rec.start_date_active) THEN
529             x_return_status := FND_API.G_RET_STS_ERROR;
530         END IF;
531     END IF;
532 
533     IF  p_PRICE_LIST_LINE_rec.estim_accrual_rate IS NOT NULL AND
534         (   p_PRICE_LIST_LINE_rec.estim_accrual_rate <>
535             p_old_PRICE_LIST_LINE_rec.estim_accrual_rate OR
536             p_old_PRICE_LIST_LINE_rec.estim_accrual_rate IS NULL )
537     THEN
538         IF NOT QP_Validate.Estim_Accrual_Rate(p_PRICE_LIST_LINE_rec.estim_accrual_rate) THEN
539             x_return_status := FND_API.G_RET_STS_ERROR;
540         END IF;
541     END IF;
542 
543     IF  p_PRICE_LIST_LINE_rec.generate_using_formula_id IS NOT NULL AND
544         (   p_PRICE_LIST_LINE_rec.generate_using_formula_id <>
545             p_old_PRICE_LIST_LINE_rec.generate_using_formula_id OR
546             p_old_PRICE_LIST_LINE_rec.generate_using_formula_id IS NULL )
547     THEN
548         IF NOT QP_Validate.Generate_Using_Formula(p_PRICE_LIST_LINE_rec.generate_using_formula_id) THEN
549             x_return_status := FND_API.G_RET_STS_ERROR;
550         END IF;
551     END IF;
552 
553     IF  p_PRICE_LIST_LINE_rec.inventory_item_id IS NOT NULL AND
554         (   p_PRICE_LIST_LINE_rec.inventory_item_id <>
555             p_old_PRICE_LIST_LINE_rec.inventory_item_id OR
556             p_old_PRICE_LIST_LINE_rec.inventory_item_id IS NULL )
557     THEN
558         IF NOT QP_Validate.Inventory_Item(p_PRICE_LIST_LINE_rec.inventory_item_id) THEN
559             x_return_status := FND_API.G_RET_STS_ERROR;
560         END IF;
561     END IF;
562 
563     IF  p_PRICE_LIST_LINE_rec.last_updated_by IS NOT NULL AND
564         (   p_PRICE_LIST_LINE_rec.last_updated_by <>
565             p_old_PRICE_LIST_LINE_rec.last_updated_by OR
566             p_old_PRICE_LIST_LINE_rec.last_updated_by IS NULL )
567     THEN
568         IF NOT QP_Validate.Last_Updated_By(p_PRICE_LIST_LINE_rec.last_updated_by) THEN
569             x_return_status := FND_API.G_RET_STS_ERROR;
570         END IF;
571     END IF;
572 
573     IF  p_PRICE_LIST_LINE_rec.last_update_date IS NOT NULL AND
574         (   p_PRICE_LIST_LINE_rec.last_update_date <>
575             p_old_PRICE_LIST_LINE_rec.last_update_date OR
576             p_old_PRICE_LIST_LINE_rec.last_update_date IS NULL )
577     THEN
578         IF NOT QP_Validate.Last_Update_Date(p_PRICE_LIST_LINE_rec.last_update_date) THEN
579             x_return_status := FND_API.G_RET_STS_ERROR;
580         END IF;
581     END IF;
582 
583     IF  p_PRICE_LIST_LINE_rec.last_update_login IS NOT NULL AND
584         (   p_PRICE_LIST_LINE_rec.last_update_login <>
585             p_old_PRICE_LIST_LINE_rec.last_update_login OR
586             p_old_PRICE_LIST_LINE_rec.last_update_login IS NULL )
587     THEN
588         IF NOT QP_Validate.Last_Update_Login(p_PRICE_LIST_LINE_rec.last_update_login) THEN
589             x_return_status := FND_API.G_RET_STS_ERROR;
590         END IF;
591     END IF;
592 
593     IF  p_PRICE_LIST_LINE_rec.list_header_id IS NOT NULL AND
594         (   p_PRICE_LIST_LINE_rec.list_header_id <>
595             p_old_PRICE_LIST_LINE_rec.list_header_id OR
596             p_old_PRICE_LIST_LINE_rec.list_header_id IS NULL )
597     THEN
598         IF NOT QP_Validate.List_Header(p_PRICE_LIST_LINE_rec.list_header_id) THEN
599             x_return_status := FND_API.G_RET_STS_ERROR;
600         END IF;
601     END IF;
602 
603     IF  p_PRICE_LIST_LINE_rec.list_line_id IS NOT NULL AND
604         (   p_PRICE_LIST_LINE_rec.list_line_id <>
605             p_old_PRICE_LIST_LINE_rec.list_line_id OR
606             p_old_PRICE_LIST_LINE_rec.list_line_id IS NULL )
607     THEN
608         IF NOT QP_Validate.List_Line(p_PRICE_LIST_LINE_rec.list_line_id) THEN
609             x_return_status := FND_API.G_RET_STS_ERROR;
610         END IF;
611     END IF;
612 
613     IF  p_PRICE_LIST_LINE_rec.list_line_type_code IS NOT NULL AND
614         (   p_PRICE_LIST_LINE_rec.list_line_type_code <>
615             p_old_PRICE_LIST_LINE_rec.list_line_type_code OR
616             p_old_PRICE_LIST_LINE_rec.list_line_type_code IS NULL )
617     THEN
618         IF NOT QP_Validate.List_Line_Type(p_PRICE_LIST_LINE_rec.list_line_type_code) THEN
619             x_return_status := FND_API.G_RET_STS_ERROR;
620         END IF;
621     END IF;
622 
623     IF  p_PRICE_LIST_LINE_rec.list_price IS NOT NULL AND
624         (   p_PRICE_LIST_LINE_rec.list_price <>
625             p_old_PRICE_LIST_LINE_rec.list_price OR
626             p_old_PRICE_LIST_LINE_rec.list_price IS NULL )
627     THEN
628         IF NOT QP_Validate.List_Price(p_PRICE_LIST_LINE_rec.list_price) THEN
629             x_return_status := FND_API.G_RET_STS_ERROR;
630         END IF;
631     END IF;
632 
633     IF  p_PRICE_LIST_LINE_rec.from_rltd_modifier_id IS NOT NULL AND
634         (   p_PRICE_LIST_LINE_rec.from_rltd_modifier_id <>
635             p_old_PRICE_LIST_LINE_rec.from_rltd_modifier_id OR
636             p_old_PRICE_LIST_LINE_rec.from_rltd_modifier_id IS NULL )
637     THEN
638         /*
639         IF NOT QP_Validate.From_Rltd_Modifier_Id(p_PRICE_LIST_LINE_rec.from_rltd_modifier_id) THEN
640             x_return_status := FND_API.G_RET_STS_ERROR;
641         END IF;
642         */
643         NULL;
644 
645     END IF;
646 
647     IF  p_PRICE_LIST_LINE_rec.rltd_modifier_group_no IS NOT NULL AND
648         (   p_PRICE_LIST_LINE_rec.rltd_modifier_group_no <>
649             p_old_PRICE_LIST_LINE_rec.rltd_modifier_group_no OR
650             p_old_PRICE_LIST_LINE_rec.rltd_modifier_group_no IS NULL )
651     THEN
652         /*
653         IF NOT QP_Validate.Rltd_Modifier_Group_No(p_PRICE_LIST_LINE_rec.rltd_modifier_group_no) THEN
654             x_return_status := FND_API.G_RET_STS_ERROR;
655         END IF;
656         */
657 
658         NULL;
659 
660     END IF;
661 
662     IF  p_PRICE_LIST_LINE_rec.product_precedence IS NOT NULL AND
663         (   p_PRICE_LIST_LINE_rec.product_precedence <>
664             p_old_PRICE_LIST_LINE_rec.product_precedence OR
665             p_old_PRICE_LIST_LINE_rec.product_precedence IS NULL )
666     THEN
667         /*
668         IF NOT QP_Validate.Product_Precedence(p_PRICE_LIST_LINE_rec.product_precedence) THEN
669             x_return_status := FND_API.G_RET_STS_ERROR;
670         END IF;
671         */
672         NULL;
673     END IF;
674 
675     IF  p_PRICE_LIST_LINE_rec.modifier_level_code IS NOT NULL AND
676         (   p_PRICE_LIST_LINE_rec.modifier_level_code <>
677             p_old_PRICE_LIST_LINE_rec.modifier_level_code OR
678             p_old_PRICE_LIST_LINE_rec.modifier_level_code IS NULL )
679     THEN
680         IF NOT QP_Validate.Modifier_Level(p_PRICE_LIST_LINE_rec.modifier_level_code) THEN
681             x_return_status := FND_API.G_RET_STS_ERROR;
682         END IF;
683     END IF;
684 
685     IF  p_PRICE_LIST_LINE_rec.number_effective_periods IS NOT NULL AND
686         (   p_PRICE_LIST_LINE_rec.number_effective_periods <>
687             p_old_PRICE_LIST_LINE_rec.number_effective_periods OR
688             p_old_PRICE_LIST_LINE_rec.number_effective_periods IS NULL )
689     THEN
690         IF NOT QP_Validate.Number_Effective_Periods(p_PRICE_LIST_LINE_rec.number_effective_periods) THEN
691             x_return_status := FND_API.G_RET_STS_ERROR;
692         END IF;
693     END IF;
694 
695     IF  p_PRICE_LIST_LINE_rec.operand IS NOT NULL AND
696         (   p_PRICE_LIST_LINE_rec.operand <>
697             p_old_PRICE_LIST_LINE_rec.operand OR
698             p_old_PRICE_LIST_LINE_rec.operand IS NULL )
699     THEN
700         IF NOT QP_Validate.Operand(p_PRICE_LIST_LINE_rec.operand) THEN
701             x_return_status := FND_API.G_RET_STS_ERROR;
702         END IF;
703     END IF;
704 
705     IF  p_PRICE_LIST_LINE_rec.organization_id IS NOT NULL AND
706         (   p_PRICE_LIST_LINE_rec.organization_id <>
707             p_old_PRICE_LIST_LINE_rec.organization_id OR
708             p_old_PRICE_LIST_LINE_rec.organization_id IS NULL )
709     THEN
710         IF NOT QP_Validate.Organization(p_PRICE_LIST_LINE_rec.organization_id) THEN
711             x_return_status := FND_API.G_RET_STS_ERROR;
712         END IF;
713     END IF;
714 
715     IF  p_PRICE_LIST_LINE_rec.override_flag IS NOT NULL AND
716         (   p_PRICE_LIST_LINE_rec.override_flag <>
717             p_old_PRICE_LIST_LINE_rec.override_flag OR
718             p_old_PRICE_LIST_LINE_rec.override_flag IS NULL )
719     THEN
720         IF NOT QP_Validate.Override(p_PRICE_LIST_LINE_rec.override_flag) THEN
721             x_return_status := FND_API.G_RET_STS_ERROR;
722         END IF;
723     END IF;
724 
725     IF  p_PRICE_LIST_LINE_rec.percent_price IS NOT NULL AND
726         (   p_PRICE_LIST_LINE_rec.percent_price <>
727             p_old_PRICE_LIST_LINE_rec.percent_price OR
728             p_old_PRICE_LIST_LINE_rec.percent_price IS NULL )
729     THEN
730         IF NOT QP_Validate.Percent_Price(p_PRICE_LIST_LINE_rec.percent_price) THEN
731             x_return_status := FND_API.G_RET_STS_ERROR;
732         END IF;
733     END IF;
734 
735     IF  p_PRICE_LIST_LINE_rec.price_break_type_code IS NOT NULL AND
736         (   p_PRICE_LIST_LINE_rec.price_break_type_code <>
737             p_old_PRICE_LIST_LINE_rec.price_break_type_code OR
738             p_old_PRICE_LIST_LINE_rec.price_break_type_code IS NULL )
739     THEN
740         IF NOT QP_Validate.Price_Break_Type(p_PRICE_LIST_LINE_rec.price_break_type_code) THEN
741             x_return_status := FND_API.G_RET_STS_ERROR;
742         END IF;
743     END IF;
744 
745     IF  p_PRICE_LIST_LINE_rec.price_by_formula_id IS NOT NULL AND
746         (   p_PRICE_LIST_LINE_rec.price_by_formula_id <>
747             p_old_PRICE_LIST_LINE_rec.price_by_formula_id OR
748             p_old_PRICE_LIST_LINE_rec.price_by_formula_id IS NULL )
749     THEN
750         IF NOT QP_Validate.Price_By_Formula(p_PRICE_LIST_LINE_rec.price_by_formula_id) THEN
751             x_return_status := FND_API.G_RET_STS_ERROR;
752         END IF;
753     END IF;
754 
755     IF  p_PRICE_LIST_LINE_rec.primary_uom_flag IS NOT NULL AND
756         (   p_PRICE_LIST_LINE_rec.primary_uom_flag <>
757             p_old_PRICE_LIST_LINE_rec.primary_uom_flag OR
758             p_old_PRICE_LIST_LINE_rec.primary_uom_flag IS NULL )
759     THEN
760         IF NOT QP_Validate.Primary_Uom(p_PRICE_LIST_LINE_rec.primary_uom_flag) THEN
761             x_return_status := FND_API.G_RET_STS_ERROR;
762         END IF;
763     END IF;
764 
765     IF  p_PRICE_LIST_LINE_rec.print_on_invoice_flag IS NOT NULL AND
766         (   p_PRICE_LIST_LINE_rec.print_on_invoice_flag <>
767             p_old_PRICE_LIST_LINE_rec.print_on_invoice_flag OR
768             p_old_PRICE_LIST_LINE_rec.print_on_invoice_flag IS NULL )
769     THEN
770         IF NOT QP_Validate.Print_On_Invoice(p_PRICE_LIST_LINE_rec.print_on_invoice_flag) THEN
771             x_return_status := FND_API.G_RET_STS_ERROR;
772         END IF;
773     END IF;
774 
775     IF  p_PRICE_LIST_LINE_rec.program_application_id IS NOT NULL AND
776         (   p_PRICE_LIST_LINE_rec.program_application_id <>
777             p_old_PRICE_LIST_LINE_rec.program_application_id OR
778             p_old_PRICE_LIST_LINE_rec.program_application_id IS NULL )
779     THEN
780         IF NOT QP_Validate.Program_Application(p_PRICE_LIST_LINE_rec.program_application_id) THEN
781             x_return_status := FND_API.G_RET_STS_ERROR;
782         END IF;
783     END IF;
784 
785     IF  p_PRICE_LIST_LINE_rec.program_id IS NOT NULL AND
786         (   p_PRICE_LIST_LINE_rec.program_id <>
787             p_old_PRICE_LIST_LINE_rec.program_id OR
788             p_old_PRICE_LIST_LINE_rec.program_id IS NULL )
789     THEN
790         IF NOT QP_Validate.Program(p_PRICE_LIST_LINE_rec.program_id) THEN
791             x_return_status := FND_API.G_RET_STS_ERROR;
792         END IF;
793     END IF;
794 
795     IF  p_PRICE_LIST_LINE_rec.program_update_date IS NOT NULL AND
796         (   p_PRICE_LIST_LINE_rec.program_update_date <>
797             p_old_PRICE_LIST_LINE_rec.program_update_date OR
798             p_old_PRICE_LIST_LINE_rec.program_update_date IS NULL )
799     THEN
800         IF NOT QP_Validate.Program_Update_Date(p_PRICE_LIST_LINE_rec.program_update_date) THEN
801             x_return_status := FND_API.G_RET_STS_ERROR;
802         END IF;
803     END IF;
804 
805     IF  p_PRICE_LIST_LINE_rec.rebate_trxn_type_code IS NOT NULL AND
806         (   p_PRICE_LIST_LINE_rec.rebate_trxn_type_code <>
807             p_old_PRICE_LIST_LINE_rec.rebate_trxn_type_code OR
808             p_old_PRICE_LIST_LINE_rec.rebate_trxn_type_code IS NULL )
809     THEN
810         IF NOT QP_Validate.Rebate_Transaction_Type(p_PRICE_LIST_LINE_rec.rebate_trxn_type_code) THEN
811             x_return_status := FND_API.G_RET_STS_ERROR;
812         END IF;
813     END IF;
814 
815     -- block pricing
816     IF p_PRICE_LIST_LINE_rec.recurring_value IS NOT NULL AND
817        (p_PRICE_LIST_LINE_rec.recurring_value <> p_old_PRICE_LIST_LINE_rec.recurring_value OR
818         p_old_PRICE_LIST_LINE_rec.recurring_value IS NULL)
819     THEN
820       IF NOT QP_Validate.recurring_value(p_PRICE_LIST_LINE_rec.recurring_value) THEN
821         x_return_status := FND_API.G_RET_STS_ERROR;
822       END IF;
823     END IF;
824 
825     IF  p_PRICE_LIST_LINE_rec.related_item_id IS NOT NULL AND
826         (   p_PRICE_LIST_LINE_rec.related_item_id <>
827             p_old_PRICE_LIST_LINE_rec.related_item_id OR
828             p_old_PRICE_LIST_LINE_rec.related_item_id IS NULL )
829     THEN
830         IF NOT QP_Validate.Related_Item(p_PRICE_LIST_LINE_rec.related_item_id) THEN
831             x_return_status := FND_API.G_RET_STS_ERROR;
832         END IF;
833     END IF;
834 
835     IF  p_PRICE_LIST_LINE_rec.relationship_type_id IS NOT NULL AND
836         (   p_PRICE_LIST_LINE_rec.relationship_type_id <>
837             p_old_PRICE_LIST_LINE_rec.relationship_type_id OR
838             p_old_PRICE_LIST_LINE_rec.relationship_type_id IS NULL )
839     THEN
840         IF NOT QP_Validate.Relationship_Type(p_PRICE_LIST_LINE_rec.relationship_type_id) THEN
841             x_return_status := FND_API.G_RET_STS_ERROR;
842         END IF;
843     END IF;
844 
845     IF  p_PRICE_LIST_LINE_rec.reprice_flag IS NOT NULL AND
846         (   p_PRICE_LIST_LINE_rec.reprice_flag <>
847             p_old_PRICE_LIST_LINE_rec.reprice_flag OR
848             p_old_PRICE_LIST_LINE_rec.reprice_flag IS NULL )
849     THEN
850         IF NOT QP_Validate.Reprice(p_PRICE_LIST_LINE_rec.reprice_flag) THEN
851             x_return_status := FND_API.G_RET_STS_ERROR;
852         END IF;
853     END IF;
854 
855     IF  p_PRICE_LIST_LINE_rec.request_id IS NOT NULL AND
856         (   p_PRICE_LIST_LINE_rec.request_id <>
857             p_old_PRICE_LIST_LINE_rec.request_id OR
858             p_old_PRICE_LIST_LINE_rec.request_id IS NULL )
859     THEN
860         IF NOT QP_Validate.Request(p_PRICE_LIST_LINE_rec.request_id) THEN
861             x_return_status := FND_API.G_RET_STS_ERROR;
862         END IF;
863     END IF;
864 
865     IF  p_PRICE_LIST_LINE_rec.revision IS NOT NULL AND
866         (   p_PRICE_LIST_LINE_rec.revision <>
867             p_old_PRICE_LIST_LINE_rec.revision OR
868             p_old_PRICE_LIST_LINE_rec.revision IS NULL )
869     THEN
870         IF NOT QP_Validate.Revision(p_PRICE_LIST_LINE_rec.revision) THEN
871             x_return_status := FND_API.G_RET_STS_ERROR;
872         END IF;
873     END IF;
874 
875     IF  p_PRICE_LIST_LINE_rec.revision_date IS NOT NULL AND
876         (   p_PRICE_LIST_LINE_rec.revision_date <>
877             p_old_PRICE_LIST_LINE_rec.revision_date OR
878             p_old_PRICE_LIST_LINE_rec.revision_date IS NULL )
879     THEN
880         IF NOT QP_Validate.Revision_Date(p_PRICE_LIST_LINE_rec.revision_date) THEN
881             x_return_status := FND_API.G_RET_STS_ERROR;
882         END IF;
883     END IF;
884 
885     IF  p_PRICE_LIST_LINE_rec.revision_reason_code IS NOT NULL AND
886         (   p_PRICE_LIST_LINE_rec.revision_reason_code <>
887             p_old_PRICE_LIST_LINE_rec.revision_reason_code OR
888             p_old_PRICE_LIST_LINE_rec.revision_reason_code IS NULL )
889     THEN
890         IF NOT QP_Validate.Revision_Reason(p_PRICE_LIST_LINE_rec.revision_reason_code) THEN
891             x_return_status := FND_API.G_RET_STS_ERROR;
892         END IF;
893     END IF;
894 
895     IF  p_PRICE_LIST_LINE_rec.start_date_active IS NOT NULL AND
896         (   p_PRICE_LIST_LINE_rec.start_date_active <>
897             p_old_PRICE_LIST_LINE_rec.start_date_active OR
898             p_old_PRICE_LIST_LINE_rec.start_date_active IS NULL )
899     THEN
900         IF NOT QP_Validate.Start_Date_Active(p_PRICE_LIST_LINE_rec.start_date_active, p_PRICE_LIST_LINE_rec.end_date_active) THEN
901             x_return_status := FND_API.G_RET_STS_ERROR;
902         END IF;
903     END IF;
904 
905     IF  p_PRICE_LIST_LINE_rec.substitution_attribute IS NOT NULL AND
906         (   p_PRICE_LIST_LINE_rec.substitution_attribute <>
907             p_old_PRICE_LIST_LINE_rec.substitution_attribute OR
908             p_old_PRICE_LIST_LINE_rec.substitution_attribute IS NULL )
909     THEN
910         IF NOT QP_Validate.Substitution_Attribute(p_PRICE_LIST_LINE_rec.substitution_attribute) THEN
911             x_return_status := FND_API.G_RET_STS_ERROR;
912         END IF;
913     END IF;
914 
915     IF  p_PRICE_LIST_LINE_rec.substitution_context IS NOT NULL AND
916         (   p_PRICE_LIST_LINE_rec.substitution_context <>
917             p_old_PRICE_LIST_LINE_rec.substitution_context OR
918             p_old_PRICE_LIST_LINE_rec.substitution_context IS NULL )
919     THEN
920         IF NOT QP_Validate.Substitution_Context(p_PRICE_LIST_LINE_rec.substitution_context) THEN
921             x_return_status := FND_API.G_RET_STS_ERROR;
922         END IF;
923     END IF;
924 
925     IF  p_PRICE_LIST_LINE_rec.substitution_value IS NOT NULL AND
926         (   p_PRICE_LIST_LINE_rec.substitution_value <>
927             p_old_PRICE_LIST_LINE_rec.substitution_value OR
928             p_old_PRICE_LIST_LINE_rec.substitution_value IS NULL )
929     THEN
930         IF NOT QP_Validate.Substitution_Value(p_PRICE_LIST_LINE_rec.substitution_value) THEN
931             x_return_status := FND_API.G_RET_STS_ERROR;
932         END IF;
933     END IF;
934 
935     -- Blanket Pricing
936     IF p_PRICE_LIST_LINE_rec.CUSTOMER_ITEM_ID IS NOT NULL AND
937        (    p_PRICE_LIST_LINE_rec.CUSTOMER_ITEM_ID <>
938             p_old_PRICE_LIST_LINE_rec.CUSTOMER_ITEM_ID OR
939             p_old_PRICE_LIST_LINE_rec.CUSTOMER_ITEM_ID IS NULL)
940     THEN
941         IF NOT QP_Validate.customer_item_id(p_PRICE_LIST_LINE_rec.CUSTOMER_ITEM_ID) THEN
942            x_return_status := FND_API.G_RET_STS_ERROR;
943         END IF;
944     END IF;
945      -- OKS proration
946     IF  p_PRICE_LIST_LINE_rec.break_uom_code IS NOT NULL AND
947         (   p_PRICE_LIST_LINE_rec.break_uom_code <>
948             p_old_PRICE_LIST_LINE_rec.break_uom_code OR
949             p_old_PRICE_LIST_LINE_rec.break_uom_code IS NULL )
950     THEN
951         IF NOT QP_Validate.Break_UOM_Code(p_PRICE_LIST_LINE_rec.break_uom_code) THEN
952             x_return_status := FND_API.G_RET_STS_ERROR;
953         END IF;
954     END IF;
955 
956     IF  p_PRICE_LIST_LINE_rec.break_uom_context IS NOT NULL AND
957         (   p_PRICE_LIST_LINE_rec.break_uom_context <>
958             p_old_PRICE_LIST_LINE_rec.break_uom_context OR
959             p_old_PRICE_LIST_LINE_rec.break_uom_context IS NULL )
960     THEN
961         IF NOT QP_Validate.Break_UOM_Context(p_PRICE_LIST_LINE_rec.break_uom_context) THEN
962             x_return_status := FND_API.G_RET_STS_ERROR;
963         END IF;
964     END IF;
965 
966     IF  p_PRICE_LIST_LINE_rec.break_uom_attribute IS NOT NULL AND
967         (   p_PRICE_LIST_LINE_rec.break_uom_attribute <>
968             p_old_PRICE_LIST_LINE_rec.break_uom_attribute OR
969             p_old_PRICE_LIST_LINE_rec.break_uom_attribute IS NULL )
970     THEN
971         IF NOT QP_Validate.Break_UOM_Attribute(p_PRICE_LIST_LINE_rec.break_uom_attribute) THEN
972             x_return_status := FND_API.G_RET_STS_ERROR;
973         END IF;
974     END IF;
975 
976     IF  (p_PRICE_LIST_LINE_rec.attribute1 IS NOT NULL AND
977         (   p_PRICE_LIST_LINE_rec.attribute1 <>
978             p_old_PRICE_LIST_LINE_rec.attribute1 OR
979             p_old_PRICE_LIST_LINE_rec.attribute1 IS NULL ))
980     OR  (p_PRICE_LIST_LINE_rec.attribute10 IS NOT NULL AND
981         (   p_PRICE_LIST_LINE_rec.attribute10 <>
982             p_old_PRICE_LIST_LINE_rec.attribute10 OR
983             p_old_PRICE_LIST_LINE_rec.attribute10 IS NULL ))
984     OR  (p_PRICE_LIST_LINE_rec.attribute11 IS NOT NULL AND
985         (   p_PRICE_LIST_LINE_rec.attribute11 <>
986             p_old_PRICE_LIST_LINE_rec.attribute11 OR
987             p_old_PRICE_LIST_LINE_rec.attribute11 IS NULL ))
988     OR  (p_PRICE_LIST_LINE_rec.attribute12 IS NOT NULL AND
989         (   p_PRICE_LIST_LINE_rec.attribute12 <>
990             p_old_PRICE_LIST_LINE_rec.attribute12 OR
991             p_old_PRICE_LIST_LINE_rec.attribute12 IS NULL ))
992     OR  (p_PRICE_LIST_LINE_rec.attribute13 IS NOT NULL AND
993         (   p_PRICE_LIST_LINE_rec.attribute13 <>
994             p_old_PRICE_LIST_LINE_rec.attribute13 OR
995             p_old_PRICE_LIST_LINE_rec.attribute13 IS NULL ))
996     OR  (p_PRICE_LIST_LINE_rec.attribute14 IS NOT NULL AND
997         (   p_PRICE_LIST_LINE_rec.attribute14 <>
998             p_old_PRICE_LIST_LINE_rec.attribute14 OR
999             p_old_PRICE_LIST_LINE_rec.attribute14 IS NULL ))
1000     OR  (p_PRICE_LIST_LINE_rec.attribute15 IS NOT NULL AND
1001         (   p_PRICE_LIST_LINE_rec.attribute15 <>
1002             p_old_PRICE_LIST_LINE_rec.attribute15 OR
1003             p_old_PRICE_LIST_LINE_rec.attribute15 IS NULL ))
1004     OR  (p_PRICE_LIST_LINE_rec.attribute2 IS NOT NULL AND
1005         (   p_PRICE_LIST_LINE_rec.attribute2 <>
1006             p_old_PRICE_LIST_LINE_rec.attribute2 OR
1007             p_old_PRICE_LIST_LINE_rec.attribute2 IS NULL ))
1008     OR  (p_PRICE_LIST_LINE_rec.attribute3 IS NOT NULL AND
1009         (   p_PRICE_LIST_LINE_rec.attribute3 <>
1010             p_old_PRICE_LIST_LINE_rec.attribute3 OR
1011             p_old_PRICE_LIST_LINE_rec.attribute3 IS NULL ))
1012     OR  (p_PRICE_LIST_LINE_rec.attribute4 IS NOT NULL AND
1013         (   p_PRICE_LIST_LINE_rec.attribute4 <>
1014             p_old_PRICE_LIST_LINE_rec.attribute4 OR
1015             p_old_PRICE_LIST_LINE_rec.attribute4 IS NULL ))
1016     OR  (p_PRICE_LIST_LINE_rec.attribute5 IS NOT NULL AND
1017         (   p_PRICE_LIST_LINE_rec.attribute5 <>
1018             p_old_PRICE_LIST_LINE_rec.attribute5 OR
1019             p_old_PRICE_LIST_LINE_rec.attribute5 IS NULL ))
1020     OR  (p_PRICE_LIST_LINE_rec.attribute6 IS NOT NULL AND
1021         (   p_PRICE_LIST_LINE_rec.attribute6 <>
1022             p_old_PRICE_LIST_LINE_rec.attribute6 OR
1023             p_old_PRICE_LIST_LINE_rec.attribute6 IS NULL ))
1024     OR  (p_PRICE_LIST_LINE_rec.attribute7 IS NOT NULL AND
1025         (   p_PRICE_LIST_LINE_rec.attribute7 <>
1026             p_old_PRICE_LIST_LINE_rec.attribute7 OR
1027             p_old_PRICE_LIST_LINE_rec.attribute7 IS NULL ))
1028     OR  (p_PRICE_LIST_LINE_rec.attribute8 IS NOT NULL AND
1029         (   p_PRICE_LIST_LINE_rec.attribute8 <>
1030             p_old_PRICE_LIST_LINE_rec.attribute8 OR
1031             p_old_PRICE_LIST_LINE_rec.attribute8 IS NULL ))
1032     OR  (p_PRICE_LIST_LINE_rec.attribute9 IS NOT NULL AND
1033         (   p_PRICE_LIST_LINE_rec.attribute9 <>
1034             p_old_PRICE_LIST_LINE_rec.attribute9 OR
1035             p_old_PRICE_LIST_LINE_rec.attribute9 IS NULL ))
1036     OR  (p_PRICE_LIST_LINE_rec.context IS NOT NULL AND
1037         (   p_PRICE_LIST_LINE_rec.context <>
1038             p_old_PRICE_LIST_LINE_rec.context OR
1039             p_old_PRICE_LIST_LINE_rec.context IS NULL ))
1040     THEN
1041 
1042     --  These calls are temporarily commented out
1043 
1044 /*
1045         FND_FLEX_DESC_VAL.Set_Column_Value
1046         (   column_name                   => 'ATTRIBUTE1'
1047         ,   column_value                  => p_PRICE_LIST_LINE_rec.attribute1
1048         );
1049         FND_FLEX_DESC_VAL.Set_Column_Value
1050         (   column_name                   => 'ATTRIBUTE10'
1051         ,   column_value                  => p_PRICE_LIST_LINE_rec.attribute10
1052         );
1053         FND_FLEX_DESC_VAL.Set_Column_Value
1054         (   column_name                   => 'ATTRIBUTE11'
1055         ,   column_value                  => p_PRICE_LIST_LINE_rec.attribute11
1056         );
1057         FND_FLEX_DESC_VAL.Set_Column_Value
1058         (   column_name                   => 'ATTRIBUTE12'
1059         ,   column_value                  => p_PRICE_LIST_LINE_rec.attribute12
1060         );
1061         FND_FLEX_DESC_VAL.Set_Column_Value
1062         (   column_name                   => 'ATTRIBUTE13'
1063         ,   column_value                  => p_PRICE_LIST_LINE_rec.attribute13
1064         );
1065         FND_FLEX_DESC_VAL.Set_Column_Value
1066         (   column_name                   => 'ATTRIBUTE14'
1067         ,   column_value                  => p_PRICE_LIST_LINE_rec.attribute14
1068         );
1069         FND_FLEX_DESC_VAL.Set_Column_Value
1070         (   column_name                   => 'ATTRIBUTE15'
1071         ,   column_value                  => p_PRICE_LIST_LINE_rec.attribute15
1072         );
1073         FND_FLEX_DESC_VAL.Set_Column_Value
1074         (   column_name                   => 'ATTRIBUTE2'
1075         ,   column_value                  => p_PRICE_LIST_LINE_rec.attribute2
1076         );
1077         FND_FLEX_DESC_VAL.Set_Column_Value
1078         (   column_name                   => 'ATTRIBUTE3'
1079         ,   column_value                  => p_PRICE_LIST_LINE_rec.attribute3
1080         );
1081         FND_FLEX_DESC_VAL.Set_Column_Value
1082         (   column_name                   => 'ATTRIBUTE4'
1083         ,   column_value                  => p_PRICE_LIST_LINE_rec.attribute4
1084         );
1085         FND_FLEX_DESC_VAL.Set_Column_Value
1086         (   column_name                   => 'ATTRIBUTE5'
1087         ,   column_value                  => p_PRICE_LIST_LINE_rec.attribute5
1088         );
1089         FND_FLEX_DESC_VAL.Set_Column_Value
1090         (   column_name                   => 'ATTRIBUTE6'
1091         ,   column_value                  => p_PRICE_LIST_LINE_rec.attribute6
1092         );
1093         FND_FLEX_DESC_VAL.Set_Column_Value
1094         (   column_name                   => 'ATTRIBUTE7'
1095         ,   column_value                  => p_PRICE_LIST_LINE_rec.attribute7
1096         );
1097         FND_FLEX_DESC_VAL.Set_Column_Value
1098         (   column_name                   => 'ATTRIBUTE8'
1099         ,   column_value                  => p_PRICE_LIST_LINE_rec.attribute8
1100         );
1101         FND_FLEX_DESC_VAL.Set_Column_Value
1102         (   column_name                   => 'ATTRIBUTE9'
1103         ,   column_value                  => p_PRICE_LIST_LINE_rec.attribute9
1104         );
1105         FND_FLEX_DESC_VAL.Set_Column_Value
1106         (   column_name                   => 'CONTEXT'
1107         ,   column_value                  => p_PRICE_LIST_LINE_rec.context
1108         );
1109 */
1110 
1111         --  Validate descriptive flexfield.
1112 
1113         IF NOT QP_Validate.Desc_Flex( 'PRICE_LIST_LINE' ) THEN
1114             x_return_status := FND_API.G_RET_STS_ERROR;
1115         END IF;
1116 
1117     END IF;
1118 
1119     --  Done validating attributes
1120 
1121 EXCEPTION
1122 
1123     WHEN FND_API.G_EXC_ERROR THEN
1124 
1125         x_return_status := FND_API.G_RET_STS_ERROR;
1126 
1127     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1128 
1129         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1130 
1131     WHEN OTHERS THEN
1132 
1133         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1134 
1135         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1136         THEN
1137             oe_msg_pub.Add_Exc_Msg
1138             (   G_PKG_NAME
1139             ,   'Attributes'
1140             );
1141         END IF;
1142 
1143 END Attributes;
1144 
1145 --  Procedure Entity_Delete
1146 
1147 PROCEDURE Entity_Delete
1148 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1149 ,   p_PRICE_LIST_LINE_rec           IN  QP_Price_List_PUB.Price_List_Line_Rec_Type
1150 )
1151 IS
1152 l_return_status               VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
1153 BEGIN
1154 
1155     --  Validate entity delete.
1156 
1157     NULL;
1158 
1159     --  Done.
1160 
1161     x_return_status := l_return_status;
1162 
1163 EXCEPTION
1164 
1165     WHEN FND_API.G_EXC_ERROR THEN
1166 
1167         x_return_status := FND_API.G_RET_STS_ERROR;
1168 
1169     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1170 
1171         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1172 
1173     WHEN OTHERS THEN
1174 
1175         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1176 
1177         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1178         THEN
1179             oe_msg_pub.Add_Exc_Msg
1180             (   G_PKG_NAME
1181             ,   'Entity_Delete'
1182             );
1183         END IF;
1184 
1185 END Entity_Delete;
1186 
1187 END QP_Validate_Price_List_Line;