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;