13: , p_old_PRICE_LIST_rec IN QP_Price_List_PUB.Price_List_Rec_Type :=
14: QP_Price_List_PUB.G_MISS_PRICE_LIST_REC
15: )
16: IS
17: l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
18: l_dummy_c VARCHAR2(1);
19: l_security_profile VARCHAR2(1);
20: l_unit_precision_type VARCHAR2(255):= '';
21: l_price_rounding VARCHAR2(50):= '';
24: SELECT 'x' FROM dual WHERE EXISTS (
25: select 'x'
26: from qp_list_lines
27: where list_header_id = p_list_header_id
28: and NOT(end_date_active is null or end_date_active = FND_API.G_MISS_DATE)
29: AND p_lh_end_date
31: cursor c_lines_sdates_cur(p_list_header_id NUMBER, p_lh_start_date date) is
32: SELECT 'x' FROM dual WHERE EXISTS (
32: SELECT 'x' FROM dual WHERE EXISTS (
33: select 'x'
34: from qp_list_lines
35: where list_header_id = p_list_header_id
36: and NOT(start_date_active is null or start_date_active = FND_API.G_MISS_DATE)
37: AND p_lh_start_date>start_date_active);
38:
39: l_dummy varchar2(1);
40: BEGIN
44:
45: IF p_PRICE_LIST_rec.list_header_id IS NULL
46: THEN
47:
48: l_return_status := FND_API.G_RET_STS_ERROR;
49:
50: IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR)
51: THEN
52:
63: THEN
64: IF nvl(p_old_PRICE_LIST_rec.shareable_flag,'X') <>
65: nvl(p_PRICE_LIST_rec.shareable_flag,'X')
66: THEN
67: l_return_status := FND_API.G_RET_STS_ERROR;
68:
69: FND_MESSAGE.SET_NAME('QP','QP_CANNOT_UPDATE_ATTRIBUTE');
70: FND_MESSAGE.SET_TOKEN('ATTRIBUTE','shareable_flag');
71: OE_MSG_PUB.Add;
74:
75: IF nvl(p_old_PRICE_LIST_rec.list_source_code,'X') <>
76: nvl(p_PRICE_LIST_rec.list_source_code,'X')
77: THEN
78: l_return_status := FND_API.G_RET_STS_ERROR;
79:
80: FND_MESSAGE.SET_NAME('QP','QP_CANNOT_UPDATE_ATTRIBUTE');
81: FND_MESSAGE.SET_TOKEN('ATTRIBUTE','list_source_code');
82: OE_MSG_PUB.Add;
91: l_price_rounding := fnd_profile.value('QP_PRICE_ROUNDING');
92:
93: IF l_unit_precision_type = 'STANDARD' THEN
94: IF l_price_rounding = 'PRECISION' THEN
95: l_return_status := FND_API.G_RET_STS_ERROR;
96: FND_MESSAGE.SET_NAME('QP', 'QP_ROUNDING_FACTOR_NO_UPDATE');
97: OE_MSG_PUB.Add;
98: END IF;
99: END IF;
101:
102: IF nvl(p_old_PRICE_LIST_rec.pte_code,'X') <>
103: nvl(p_PRICE_LIST_rec.pte_code,'X')
104: THEN
105: l_return_status := FND_API.G_RET_STS_ERROR;
106:
107: FND_MESSAGE.SET_NAME('QP','QP_CANNOT_UPDATE_ATTRIBUTE');
108: FND_MESSAGE.SET_TOKEN('ATTRIBUTE','pte_code');
109: OE_MSG_PUB.Add;
112:
113: IF nvl(p_old_PRICE_LIST_rec.source_system_code,'X') <>
114: nvl(p_PRICE_LIST_rec.source_system_code,'X')
115: THEN
116: l_return_status := FND_API.G_RET_STS_ERROR;
117:
118: FND_MESSAGE.SET_NAME('QP','QP_CANNOT_UPDATE_ATTRIBUTE');
119: FND_MESSAGE.SET_TOKEN('ATTRIBUTE','source_system_code');
120: OE_MSG_PUB.Add;
123:
124: IF nvl(p_old_PRICE_LIST_rec.sold_to_org_id,9999999) <>
125: nvl(p_PRICE_LIST_rec.sold_to_org_id,9999999)
126: THEN
127: l_return_status := FND_API.G_RET_STS_ERROR;
128:
129: FND_MESSAGE.SET_NAME('QP','QP_CANNOT_UPDATE_ATTRIBUTE');
130: FND_MESSAGE.SET_TOKEN('ATTRIBUTE','sold_to_org_id');
131: OE_MSG_PUB.Add;
138:
139: IF p_PRICE_LIST_rec.list_type_code IS NULL
140: THEN
141:
142: l_return_status := FND_API.G_RET_STS_ERROR;
143:
144: IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR)
145: THEN
146:
155:
156: IF p_PRICE_LIST_rec.currency_code IS NULL
157: THEN
158:
159: l_return_status := FND_API.G_RET_STS_ERROR;
160:
161: IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR)
162: THEN
163:
183:
184: IF p_PRICE_LIST_rec.name IS NULL
185: THEN
186:
187: l_return_status := FND_API.G_RET_STS_ERROR;
188:
189: IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR)
190: THEN
191:
198: END IF;
199:
200: -- Return Error if a required attribute is missing.
201:
202: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
203:
204: RAISE FND_API.G_EXC_ERROR;
205:
206: END IF;
200: -- Return Error if a required attribute is missing.
201:
202: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
203:
204: RAISE FND_API.G_EXC_ERROR;
205:
206: END IF;
207:
208: --
209: -- Check conditionally required attributes here.
210: --
211:
212: IF NOT QP_Validate.Currency(p_PRICE_LIST_rec.currency_code) THEN
213: l_return_status := FND_API.G_RET_STS_ERROR;
214: END IF;
215:
216:
217: IF NOT QP_Validate.Rounding_Factor(p_PRICE_LIST_rec.rounding_factor,p_PRICE_LIST_rec.currency_code) THEN
214: END IF;
215:
216:
217: IF NOT QP_Validate.Rounding_Factor(p_PRICE_LIST_rec.rounding_factor,p_PRICE_LIST_rec.currency_code) THEN
218: l_return_status := FND_API.G_RET_STS_ERROR;
219: END IF;
220:
221: IF ( p_PRICE_LIST_rec.automatic_flag IS NOT NULL
222: and p_PRICE_LIST_rec.automatic_flag <> FND_API.G_MISS_CHAR ) THEN
218: l_return_status := FND_API.G_RET_STS_ERROR;
219: END IF;
220:
221: IF ( p_PRICE_LIST_rec.automatic_flag IS NOT NULL
222: and p_PRICE_LIST_rec.automatic_flag <> FND_API.G_MISS_CHAR ) THEN
223:
224: IF p_PRICE_LIST_rec.automatic_flag not in ('Y', 'N', 'y', 'n') THEN
225:
226: l_return_status := FND_API.G_RET_STS_ERROR;
222: and p_PRICE_LIST_rec.automatic_flag <> FND_API.G_MISS_CHAR ) THEN
223:
224: IF p_PRICE_LIST_rec.automatic_flag not in ('Y', 'N', 'y', 'n') THEN
225:
226: l_return_status := FND_API.G_RET_STS_ERROR;
227:
228: IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR)
229: THEN
230:
238:
239: END IF;
240: --add validation for active_flag
241: IF ( p_PRICE_LIST_rec.active_flag IS NOT NULL
242: and p_PRICE_LIST_rec.active_flag <> FND_API.G_MISS_CHAR ) THEN
243:
244: IF p_PRICE_LIST_rec.active_flag not in ('Y', 'N', 'y', 'n') THEN
245:
246: l_return_status := FND_API.G_RET_STS_ERROR;
242: and p_PRICE_LIST_rec.active_flag <> FND_API.G_MISS_CHAR ) THEN
243:
244: IF p_PRICE_LIST_rec.active_flag not in ('Y', 'N', 'y', 'n') THEN
245:
246: l_return_status := FND_API.G_RET_STS_ERROR;
247:
248: IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR)
249: THEN
250:
256: END IF;
257:
258: -- mkarya for bug 1944882
259: IF ( p_PRICE_LIST_rec.mobile_download IS NOT NULL
260: and p_PRICE_LIST_rec.mobile_download <> FND_API.G_MISS_CHAR ) THEN
261:
262: IF p_PRICE_LIST_rec.mobile_download not in ('Y', 'N', 'n') THEN
263:
264: l_return_status := FND_API.G_RET_STS_ERROR;
260: and p_PRICE_LIST_rec.mobile_download <> FND_API.G_MISS_CHAR ) THEN
261:
262: IF p_PRICE_LIST_rec.mobile_download not in ('Y', 'N', 'n') THEN
263:
264: l_return_status := FND_API.G_RET_STS_ERROR;
265:
266: IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR) THEN
267:
268: FND_MESSAGE.SET_NAME('QP','QP_INVALID_ATTRIBUTE');
273: END IF;
274:
275: -- Pricing Security gtippire
276: IF ( p_PRICE_LIST_rec.global_flag IS NOT NULL
277: and p_PRICE_LIST_rec.global_flag <> FND_API.G_MISS_CHAR ) THEN
278:
279: IF p_PRICE_LIST_rec.global_flag not in ('Y', 'N', 'n') THEN
280:
281: l_return_status := FND_API.G_RET_STS_ERROR;
277: and p_PRICE_LIST_rec.global_flag <> FND_API.G_MISS_CHAR ) THEN
278:
279: IF p_PRICE_LIST_rec.global_flag not in ('Y', 'N', 'n') THEN
280:
281: l_return_status := FND_API.G_RET_STS_ERROR;
282: IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR) THEN
283:
284: FND_MESSAGE.SET_NAME('QP','QP_INVALID_ATTRIBUTE');
285: FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Global_flag');
296:
297: --if security is OFF, global_flag cannot be 'N'
298: IF (l_security_profile = 'N'
299: and p_PRICE_LIST_rec.global_flag in ('N', 'n')) THEN
300: l_return_status := FND_API.G_RET_STS_ERROR;
301: IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR) THEN
302: FND_MESSAGE.SET_NAME('QP','QP_INVALID_ATTRIBUTE');
303: FND_MESSAGE.SET_TOKEN('ATTRIBUTE','global_flag');
304: oe_msg_pub.add;
308: IF l_security_profile = 'Y' THEN
309: --if security is ON and global_flag is 'N', org_id cannot be null
310: IF (p_PRICE_LIST_rec.global_flag in ('N', 'n')
311: and p_PRICE_LIST_rec.org_id is null) THEN
312: l_return_status := FND_API.G_RET_STS_ERROR;
313: IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR) THEN
314: FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
315: FND_MESSAGE.SET_TOKEN('ATTRIBUTE','ORG_ID');
316: oe_msg_pub.add;
319:
320: --if org_id is not null and it is not a valid org
321: IF (p_PRICE_LIST_rec.org_id is not null
322: and QP_UTIL.validate_org_id(p_PRICE_LIST_rec.org_id) = 'N') THEN
323: l_return_status := FND_API.G_RET_STS_ERROR;
324: IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR) THEN
325: FND_MESSAGE.SET_NAME('FND','FND_MO_ORG_INVALID');
326: -- FND_MESSAGE.SET_TOKEN('ATTRIBUTE','ORG_ID');
327: oe_msg_pub.add;
331:
332: -- global_flag 'Y', and org_id not null combination is invalid
333: IF ((p_PRICE_LIST_rec.global_flag = 'Y'
334: and p_PRICE_LIST_rec.org_id is not null) OR (p_PRICE_LIST_rec.global_flag ='N' and p_PRICE_LIST_rec.org_id is null)) THEN
335: -- and p_MODIFIER_LIST_rec.org_id <> FND_API.G_MISS_NUM THEN
336: l_return_status := FND_API.G_RET_STS_ERROR;
337: IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR) THEN
338: FND_MESSAGE.SET_NAME('QP', 'QP_GLOBAL_OR_ORG');
339: oe_msg_pub.add;
332: -- global_flag 'Y', and org_id not null combination is invalid
333: IF ((p_PRICE_LIST_rec.global_flag = 'Y'
334: and p_PRICE_LIST_rec.org_id is not null) OR (p_PRICE_LIST_rec.global_flag ='N' and p_PRICE_LIST_rec.org_id is null)) THEN
335: -- and p_MODIFIER_LIST_rec.org_id <> FND_API.G_MISS_NUM THEN
336: l_return_status := FND_API.G_RET_STS_ERROR;
337: IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR) THEN
338: FND_MESSAGE.SET_NAME('QP', 'QP_GLOBAL_OR_ORG');
339: oe_msg_pub.add;
340: END IF;
352: then
353:
354: -- Multi-Currency is installed
355: If (p_PRICE_LIST_rec.currency_header_id is NULL or
356: p_PRICE_LIST_rec.currency_header_id = FND_API.G_MISS_NUM )
357: then
358: l_return_status := FND_API.G_RET_STS_ERROR;
359:
360: FND_MESSAGE.SET_NAME('QP','QP_MUL_CURR_REQD');
354: -- Multi-Currency is installed
355: If (p_PRICE_LIST_rec.currency_header_id is NULL or
356: p_PRICE_LIST_rec.currency_header_id = FND_API.G_MISS_NUM )
357: then
358: l_return_status := FND_API.G_RET_STS_ERROR;
359:
360: FND_MESSAGE.SET_NAME('QP','QP_MUL_CURR_REQD');
361: oe_msg_pub.add;
362:
363: end if;
364:
365: /*
366: If (p_PRICE_LIST_rec.rounding_factor is NOT NULL and
367: p_PRICE_LIST_rec.rounding_factor <> FND_API.G_MISS_NUM )
368: then
369: l_return_status := FND_API.G_RET_STS_ERROR;
370:
371: FND_MESSAGE.SET_NAME('QP','QP_INVALID_ATTRIBUTE'); -- CHANGE
365: /*
366: If (p_PRICE_LIST_rec.rounding_factor is NOT NULL and
367: p_PRICE_LIST_rec.rounding_factor <> FND_API.G_MISS_NUM )
368: then
369: l_return_status := FND_API.G_RET_STS_ERROR;
370:
371: FND_MESSAGE.SET_NAME('QP','QP_INVALID_ATTRIBUTE'); -- CHANGE
372: FND_MESSAGE.SET_TOKEN('ATTRIBUTE','rounding_factor');
373: oe_msg_pub.add;
376: */
377: else
378: -- Multi-Currency not installed
379: If (p_PRICE_LIST_rec.currency_header_id is NOT NULL and
380: p_PRICE_LIST_rec.currency_header_id <> FND_API.G_MISS_NUM and
381: p_old_PRICE_LIST_rec.currency_header_id <> p_PRICE_LIST_rec.currency_header_id)
382: then
383: l_return_status := FND_API.G_RET_STS_ERROR;
384:
379: If (p_PRICE_LIST_rec.currency_header_id is NOT NULL and
380: p_PRICE_LIST_rec.currency_header_id <> FND_API.G_MISS_NUM and
381: p_old_PRICE_LIST_rec.currency_header_id <> p_PRICE_LIST_rec.currency_header_id)
382: then
383: l_return_status := FND_API.G_RET_STS_ERROR;
384:
385: FND_MESSAGE.SET_NAME('QP','QP_MUL_CURR_NULL');
386: oe_msg_pub.add;
387:
390: end if;
391:
392: -- Bug 2293974 - rounding factor is mandatory irrespective of multi-currency is installed or not
393: If (p_PRICE_LIST_rec.rounding_factor is NULL or
394: p_PRICE_LIST_rec.rounding_factor = FND_API.G_MISS_NUM )
395: then
396: l_return_status := FND_API.G_RET_STS_ERROR;
397:
398: FND_MESSAGE.SET_NAME('QP','QP_RNDG_FACTOR_REQD');
392: -- Bug 2293974 - rounding factor is mandatory irrespective of multi-currency is installed or not
393: If (p_PRICE_LIST_rec.rounding_factor is NULL or
394: p_PRICE_LIST_rec.rounding_factor = FND_API.G_MISS_NUM )
395: then
396: l_return_status := FND_API.G_RET_STS_ERROR;
397:
398: FND_MESSAGE.SET_NAME('QP','QP_RNDG_FACTOR_REQD');
399: oe_msg_pub.add;
400:
400:
401: end if;
402:
403: IF ( p_PRICE_LIST_rec.currency_header_id IS NOT NULL and
404: p_PRICE_LIST_rec.currency_header_id <> FND_API.G_MISS_NUM ) THEN
405: BEGIN
406:
407: SELECT 'X'
408: INTO l_dummy_c
411: base_currency_code = p_PRICE_LIST_rec.currency_code;
412:
413: EXCEPTION
414: WHEN NO_DATA_FOUND THEN
415: l_return_status := FND_API.G_RET_STS_ERROR;
416: FND_MESSAGE.SET_NAME('QP','QP_INVALID_ATTRIBUTE');
417: FND_MESSAGE.SET_TOKEN('ATTRIBUTE','currency_header_id');
418: oe_msg_pub.add;
419: END;
419: END;
420: END IF;
421:
422: IF NOT QP_Validate.List_Type(p_PRICE_LIST_rec.list_type_code) THEN
423: l_return_status := FND_API.G_RET_STS_ERROR;
424: END IF;
425:
426: /*
427:
425:
426: /*
427:
428: IF NOT QP_Validate.Source_System(p_PRICE_LIST_rec.source_system_code) THEN
429: l_return_status := FND_API.G_RET_STS_ERROR;
430: END IF;
431:
432: */
433:
431:
432: */
433:
434: IF NOT QP_Validate.Ship_Method(p_PRICE_LIST_rec.ship_method_code) THEN
435: l_return_status := FND_API.G_RET_STS_ERROR;
436: END IF;
437:
438: IF NOT QP_Validate.Freight_Terms(p_PRICE_LIST_rec.freight_terms_code) THEN
439: l_return_status := FND_API.G_RET_STS_ERROR;
435: l_return_status := FND_API.G_RET_STS_ERROR;
436: END IF;
437:
438: IF NOT QP_Validate.Freight_Terms(p_PRICE_LIST_rec.freight_terms_code) THEN
439: l_return_status := FND_API.G_RET_STS_ERROR;
440: END IF;
441:
442: IF NOT QP_Validate.Terms(p_PRICE_LIST_rec.terms_id) THEN
443: l_return_status := FND_API.G_RET_STS_ERROR;
439: l_return_status := FND_API.G_RET_STS_ERROR;
440: END IF;
441:
442: IF NOT QP_Validate.Terms(p_PRICE_LIST_rec.terms_id) THEN
443: l_return_status := FND_API.G_RET_STS_ERROR;
444: END IF;
445:
446: --
447: -- Validate attribute dependencies here.
448: --
449:
450: IF NOT QP_Validate.Start_Date_Active(p_PRICE_LIST_rec.start_date_active, p_PRICE_LIST_rec.end_date_active) THEN
451:
452: l_return_status := FND_API.G_RET_STS_ERROR;
453:
454: /*
455:
456: IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR)
465: */
466:
467: END IF;
468:
469: IF NOT((p_PRICE_LIST_rec.end_date_active is null or p_PRICE_LIST_rec.end_date_active = FND_API.G_MISS_DATE)
470: and (p_PRICE_LIST_rec.start_date_active is null or p_PRICE_LIST_rec.start_date_active = FND_API.G_MISS_DATE)) THEN
471: open c_lines_edates_cur(p_PRICE_LIST_rec.list_header_id,p_PRICE_LIST_rec.end_date_active);
472: fetch c_lines_edates_cur into l_dummy;
473: IF c_lines_edates_cur%found THEN -- line date not within hdr date
466:
467: END IF;
468:
469: IF NOT((p_PRICE_LIST_rec.end_date_active is null or p_PRICE_LIST_rec.end_date_active = FND_API.G_MISS_DATE)
470: and (p_PRICE_LIST_rec.start_date_active is null or p_PRICE_LIST_rec.start_date_active = FND_API.G_MISS_DATE)) THEN
471: open c_lines_edates_cur(p_PRICE_LIST_rec.list_header_id,p_PRICE_LIST_rec.end_date_active);
472: fetch c_lines_edates_cur into l_dummy;
473: IF c_lines_edates_cur%found THEN -- line date not within hdr date
474: l_return_status := FND_API.G_RET_STS_ERROR;
470: and (p_PRICE_LIST_rec.start_date_active is null or p_PRICE_LIST_rec.start_date_active = FND_API.G_MISS_DATE)) THEN
471: open c_lines_edates_cur(p_PRICE_LIST_rec.list_header_id,p_PRICE_LIST_rec.end_date_active);
472: fetch c_lines_edates_cur into l_dummy;
473: IF c_lines_edates_cur%found THEN -- line date not within hdr date
474: l_return_status := FND_API.G_RET_STS_ERROR;
475: FND_MESSAGE.SET_NAME('QP','QP_PLL_END_DATE_NOT_WITHIN');
476: oe_msg_pub.add;
477: END IF;
478:
479: open c_lines_sdates_cur(p_PRICE_LIST_rec.list_header_id,p_PRICE_LIST_rec.start_date_active);
480: fetch c_lines_sdates_cur into l_dummy;
481:
482: IF c_lines_sdates_cur%found THEN -- line date not within hdr date
483: l_return_status := FND_API.G_RET_STS_ERROR;
484: FND_MESSAGE.SET_NAME('QP','QP_PLL_START_DATE_NOT_WITHIN');
485: oe_msg_pub.add;
486: END IF;
487: END IF;
489: IF NOT QP_Validate.Price_List_Name(p_PRICE_LIST_rec.name,
490: p_PRICE_LIST_rec.list_header_id,
491: p_PRICE_LIST_rec.version_no) THEN
492:
493: l_return_status := FND_API.G_RET_STS_ERROR;
494:
495: END IF;
496:
497:
494:
495: END IF;
496:
497:
498: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
499:
500: RAISE FND_API.G_EXC_ERROR;
501:
502: END IF;
496:
497:
498: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
499:
500: RAISE FND_API.G_EXC_ERROR;
501:
502: END IF;
503:
504: -- Done validating entity
506: x_return_status := l_return_status;
507:
508: EXCEPTION
509:
510: WHEN FND_API.G_EXC_ERROR THEN
511:
512: x_return_status := FND_API.G_RET_STS_ERROR;
513:
514: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
508: EXCEPTION
509:
510: WHEN FND_API.G_EXC_ERROR THEN
511:
512: x_return_status := FND_API.G_RET_STS_ERROR;
513:
514: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
515:
516: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
510: WHEN FND_API.G_EXC_ERROR THEN
511:
512: x_return_status := FND_API.G_RET_STS_ERROR;
513:
514: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
515:
516: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
517:
518: WHEN OTHERS THEN
512: x_return_status := FND_API.G_RET_STS_ERROR;
513:
514: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
515:
516: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
517:
518: WHEN OTHERS THEN
519:
520: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
516: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
517:
518: WHEN OTHERS THEN
519:
520: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
521:
522: IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
523: THEN
524: oe_msg_pub.Add_Exc_Msg
540: IS
541:
542: BEGIN
543:
544: x_return_status := FND_API.G_RET_STS_SUCCESS;
545:
546: -- Validate PRICE_LIST attributes
547:
548: IF p_PRICE_LIST_rec.automatic_flag IS NOT NULL AND
550: p_old_PRICE_LIST_rec.automatic_flag OR
551: p_old_PRICE_LIST_rec.automatic_flag IS NULL )
552: THEN
553: IF NOT QP_Validate.Automatic(p_PRICE_LIST_rec.automatic_flag) THEN
554: x_return_status := FND_API.G_RET_STS_ERROR;
555: END IF;
556: END IF;
557:
558: IF p_PRICE_LIST_rec.active_flag IS NOT NULL AND
560: p_old_PRICE_LIST_rec.active_flag OR
561: p_old_PRICE_LIST_rec.active_flag IS NULL)
562: THEN
563: IF NOT QP_Validate.active(p_PRICE_LIST_rec.active_flag) THEN
564: x_return_status := FND_API.G_RET_STS_ERROR;
565: END IF;
566: END IF;
567:
568: --mkarya for bug 1944882
571: p_old_PRICE_LIST_rec.mobile_download OR
572: p_old_PRICE_LIST_rec.mobile_download IS NULL)
573: THEN
574: IF NOT QP_Validate.mobile_download(p_PRICE_LIST_rec.mobile_download) THEN
575: x_return_status := FND_API.G_RET_STS_ERROR;
576: END IF;
577: END IF;
578:
579: --Pricing Security gtippire
582: p_old_PRICE_LIST_rec.global_flag OR
583: p_old_PRICE_LIST_rec.global_flag IS NULL)
584: THEN
585: IF NOT QP_Validate.global_flag(p_PRICE_LIST_rec.global_flag) THEN
586: x_return_status := FND_API.G_RET_STS_ERROR;
587: END IF;
588: END IF;
589:
590:
593: p_old_PRICE_LIST_rec.description OR
594: p_old_PRICE_LIST_rec.description IS NULL )
595: THEN
596: IF NOT QP_Validate.Description(p_PRICE_LIST_rec.description) THEN
597: x_return_status := FND_API.G_RET_STS_ERROR;
598: END IF;
599: END IF;
600:
601: IF p_PRICE_LIST_rec.name IS NOT NULL AND
603: p_old_PRICE_LIST_rec.name OR
604: p_old_PRICE_LIST_rec.name IS NULL )
605: THEN
606: IF NOT QP_Validate.Name(p_PRICE_LIST_rec.name) THEN
607: x_return_status := FND_API.G_RET_STS_ERROR;
608: END IF;
609: END IF;
610:
611: IF p_PRICE_LIST_rec.comments IS NOT NULL AND
613: p_old_PRICE_LIST_rec.comments OR
614: p_old_PRICE_LIST_rec.comments IS NULL )
615: THEN
616: IF NOT QP_Validate.Comments(p_PRICE_LIST_rec.comments) THEN
617: x_return_status := FND_API.G_RET_STS_ERROR;
618: END IF;
619: END IF;
620:
621: IF p_PRICE_LIST_rec.created_by IS NOT NULL AND
623: p_old_PRICE_LIST_rec.created_by OR
624: p_old_PRICE_LIST_rec.created_by IS NULL )
625: THEN
626: IF NOT QP_Validate.Created_By(p_PRICE_LIST_rec.created_by) THEN
627: x_return_status := FND_API.G_RET_STS_ERROR;
628: END IF;
629: END IF;
630:
631: IF p_PRICE_LIST_rec.creation_date IS NOT NULL AND
633: p_old_PRICE_LIST_rec.creation_date OR
634: p_old_PRICE_LIST_rec.creation_date IS NULL )
635: THEN
636: IF NOT QP_Validate.Creation_Date(p_PRICE_LIST_rec.creation_date) THEN
637: x_return_status := FND_API.G_RET_STS_ERROR;
638: END IF;
639: END IF;
640:
641: IF p_PRICE_LIST_rec.currency_code IS NOT NULL AND
643: p_old_PRICE_LIST_rec.currency_code OR
644: p_old_PRICE_LIST_rec.currency_code IS NULL )
645: THEN
646: IF NOT QP_Validate.Currency(p_PRICE_LIST_rec.currency_code) THEN
647: x_return_status := FND_API.G_RET_STS_ERROR;
648: END IF;
649: END IF;
650:
651: IF p_PRICE_LIST_rec.discount_lines_flag IS NOT NULL AND
653: p_old_PRICE_LIST_rec.discount_lines_flag OR
654: p_old_PRICE_LIST_rec.discount_lines_flag IS NULL )
655: THEN
656: IF NOT QP_Validate.Discount_Lines(p_PRICE_LIST_rec.discount_lines_flag) THEN
657: x_return_status := FND_API.G_RET_STS_ERROR;
658: END IF;
659: END IF;
660:
661: IF p_PRICE_LIST_rec.end_date_active IS NOT NULL AND
663: p_old_PRICE_LIST_rec.end_date_active OR
664: p_old_PRICE_LIST_rec.end_date_active IS NULL )
665: THEN
666: IF NOT QP_Validate.End_Date_Active(p_PRICE_LIST_rec.end_date_active, p_PRICE_LIST_rec.start_date_active) THEN
667: x_return_status := FND_API.G_RET_STS_ERROR;
668: END IF;
669:
670: END IF;
671:
674: p_old_PRICE_LIST_rec.freight_terms_code OR
675: p_old_PRICE_LIST_rec.freight_terms_code IS NULL )
676: THEN
677: IF NOT QP_Validate.Freight_Terms(p_PRICE_LIST_rec.freight_terms_code) THEN
678: x_return_status := FND_API.G_RET_STS_ERROR;
679: END IF;
680: END IF;
681:
682: IF p_PRICE_LIST_rec.gsa_indicator IS NOT NULL AND
684: p_old_PRICE_LIST_rec.gsa_indicator OR
685: p_old_PRICE_LIST_rec.gsa_indicator IS NULL )
686: THEN
687: IF NOT QP_Validate.Gsa_Indicator(p_PRICE_LIST_rec.gsa_indicator) THEN
688: x_return_status := FND_API.G_RET_STS_ERROR;
689: END IF;
690: END IF;
691:
692: IF p_PRICE_LIST_rec.last_updated_by IS NOT NULL AND
694: p_old_PRICE_LIST_rec.last_updated_by OR
695: p_old_PRICE_LIST_rec.last_updated_by IS NULL )
696: THEN
697: IF NOT QP_Validate.Last_Updated_By(p_PRICE_LIST_rec.last_updated_by) THEN
698: x_return_status := FND_API.G_RET_STS_ERROR;
699: END IF;
700: END IF;
701:
702: IF p_PRICE_LIST_rec.last_update_date IS NOT NULL AND
704: p_old_PRICE_LIST_rec.last_update_date OR
705: p_old_PRICE_LIST_rec.last_update_date IS NULL )
706: THEN
707: IF NOT QP_Validate.Last_Update_Date(p_PRICE_LIST_rec.last_update_date) THEN
708: x_return_status := FND_API.G_RET_STS_ERROR;
709: END IF;
710: END IF;
711:
712: IF p_PRICE_LIST_rec.last_update_login IS NOT NULL AND
714: p_old_PRICE_LIST_rec.last_update_login OR
715: p_old_PRICE_LIST_rec.last_update_login IS NULL )
716: THEN
717: IF NOT QP_Validate.Last_Update_Login(p_PRICE_LIST_rec.last_update_login) THEN
718: x_return_status := FND_API.G_RET_STS_ERROR;
719: END IF;
720: END IF;
721:
722: IF p_PRICE_LIST_rec.list_header_id IS NOT NULL AND
724: p_old_PRICE_LIST_rec.list_header_id OR
725: p_old_PRICE_LIST_rec.list_header_id IS NULL )
726: THEN
727: IF NOT QP_Validate.List_Header(p_PRICE_LIST_rec.list_header_id) THEN
728: x_return_status := FND_API.G_RET_STS_ERROR;
729: END IF;
730: END IF;
731:
732: IF p_PRICE_LIST_rec.list_type_code IS NOT NULL AND
734: p_old_PRICE_LIST_rec.list_type_code OR
735: p_old_PRICE_LIST_rec.list_type_code IS NULL )
736: THEN
737: IF NOT QP_Validate.List_Type(p_PRICE_LIST_rec.list_type_code) THEN
738: x_return_status := FND_API.G_RET_STS_ERROR;
739: END IF;
740: END IF;
741:
742: IF p_PRICE_LIST_rec.version_no IS NOT NULL AND
744: p_old_PRICE_LIST_rec.version_no OR
745: p_old_PRICE_LIST_rec.version_no IS NULL )
746: THEN
747: IF NOT QP_Validate.Version(p_PRICE_LIST_rec.version_no) THEN
748: x_return_status := FND_API.G_RET_STS_ERROR;
749: END IF;
750: END IF;
751:
752: IF p_PRICE_LIST_rec.program_application_id IS NOT NULL AND
754: p_old_PRICE_LIST_rec.program_application_id OR
755: p_old_PRICE_LIST_rec.program_application_id IS NULL )
756: THEN
757: IF NOT QP_Validate.Program_Application(p_PRICE_LIST_rec.program_application_id) THEN
758: x_return_status := FND_API.G_RET_STS_ERROR;
759: END IF;
760: END IF;
761:
762: IF p_PRICE_LIST_rec.program_id IS NOT NULL AND
764: p_old_PRICE_LIST_rec.program_id OR
765: p_old_PRICE_LIST_rec.program_id IS NULL )
766: THEN
767: IF NOT QP_Validate.Program(p_PRICE_LIST_rec.program_id) THEN
768: x_return_status := FND_API.G_RET_STS_ERROR;
769: END IF;
770: END IF;
771:
772: IF p_PRICE_LIST_rec.program_update_date IS NOT NULL AND
774: p_old_PRICE_LIST_rec.program_update_date OR
775: p_old_PRICE_LIST_rec.program_update_date IS NULL )
776: THEN
777: IF NOT QP_Validate.Program_Update_Date(p_PRICE_LIST_rec.program_update_date) THEN
778: x_return_status := FND_API.G_RET_STS_ERROR;
779: END IF;
780: END IF;
781:
782: IF p_PRICE_LIST_rec.prorate_flag IS NOT NULL AND
784: p_old_PRICE_LIST_rec.prorate_flag OR
785: p_old_PRICE_LIST_rec.prorate_flag IS NULL )
786: THEN
787: IF NOT QP_Validate.Prorate(p_PRICE_LIST_rec.prorate_flag) THEN
788: x_return_status := FND_API.G_RET_STS_ERROR;
789: END IF;
790: END IF;
791:
792: IF p_PRICE_LIST_rec.request_id IS NOT NULL AND
794: p_old_PRICE_LIST_rec.request_id OR
795: p_old_PRICE_LIST_rec.request_id IS NULL )
796: THEN
797: IF NOT QP_Validate.Request(p_PRICE_LIST_rec.request_id) THEN
798: x_return_status := FND_API.G_RET_STS_ERROR;
799: END IF;
800: END IF;
801:
802: IF p_PRICE_LIST_rec.rounding_factor IS NOT NULL AND
804: p_old_PRICE_LIST_rec.rounding_factor OR
805: p_old_PRICE_LIST_rec.rounding_factor IS NULL )
806: THEN
807: IF NOT QP_Validate.Rounding_Factor(p_PRICE_LIST_rec.rounding_factor) THEN
808: x_return_status := FND_API.G_RET_STS_ERROR;
809: END IF;
810: END IF;
811:
812: IF p_PRICE_LIST_rec.ship_method_code IS NOT NULL AND
814: p_old_PRICE_LIST_rec.ship_method_code OR
815: p_old_PRICE_LIST_rec.ship_method_code IS NULL )
816: THEN
817: IF NOT QP_Validate.Ship_Method(p_PRICE_LIST_rec.ship_method_code) THEN
818: x_return_status := FND_API.G_RET_STS_ERROR;
819: END IF;
820: END IF;
821:
822: IF p_PRICE_LIST_rec.start_date_active IS NOT NULL AND
824: p_old_PRICE_LIST_rec.start_date_active OR
825: p_old_PRICE_LIST_rec.start_date_active IS NULL )
826: THEN
827: IF NOT QP_Validate.Start_Date_Active(p_PRICE_LIST_rec.start_date_active, p_PRICE_LIST_rec.end_date_active) THEN
828: x_return_status := FND_API.G_RET_STS_ERROR;
829: END IF;
830:
831:
832: END IF;
836: p_old_PRICE_LIST_rec.terms_id OR
837: p_old_PRICE_LIST_rec.terms_id IS NULL )
838: THEN
839: IF NOT QP_Validate.Terms(p_PRICE_LIST_rec.terms_id) THEN
840: x_return_status := FND_API.G_RET_STS_ERROR;
841: END IF;
842: END IF;
843:
844: --Multi-Currency SunilPandey
847: p_old_PRICE_LIST_rec.currency_header_id OR
848: p_old_PRICE_LIST_rec.currency_header_id IS NULL)
849: THEN
850: IF NOT QP_Validate.currency_header(p_PRICE_LIST_rec.currency_header_id) THEN
851: x_return_status := FND_API.G_RET_STS_ERROR;
852: END IF;
853: END IF;
854:
855: --Attribute Manager Giri
858: p_old_PRICE_LIST_rec.pte_code OR
859: p_old_PRICE_LIST_rec.pte_code IS NULL)
860: THEN
861: IF NOT QP_Validate.pte(p_PRICE_LIST_rec.pte_code) THEN
862: x_return_status := FND_API.G_RET_STS_ERROR;
863: END IF;
864: END IF;
865:
866: --Blanket Sales Order
869: p_old_PRICE_LIST_rec.LIST_SOURCE_CODE OR
870: p_old_PRICE_LIST_rec.LIST_SOURCE_CODE IS NULL)
871: THEN
872: IF NOT QP_Validate.list_source_code(p_PRICE_LIST_rec.LIST_SOURCE_CODE) THEN
873: x_return_status := FND_API.G_RET_STS_ERROR;
874: END IF;
875:
876: END IF;
877:
881: p_old_PRICE_LIST_rec.ORIG_SYSTEM_HEADER_REF OR
882: p_old_PRICE_LIST_rec.ORIG_SYSTEM_HEADER_REF IS NULL)
883: THEN
884: IF NOT QP_Validate.orig_system_header_ref(p_PRICE_LIST_rec.ORIG_SYSTEM_HEADER_REF) THEN
885: x_return_status := FND_API.G_RET_STS_ERROR;
886: END IF;
887:
888: END IF;
889:
892: p_old_PRICE_LIST_rec.SOURCE_SYSTEM_CODE OR
893: p_old_PRICE_LIST_rec.SOURCE_SYSTEM_CODE IS NULL)
894: THEN
895: IF NOT QP_Validate.Source_System(p_PRICE_LIST_rec.SOURCE_SYSTEM_CODE) THEN
896: x_return_status := FND_API.G_RET_STS_ERROR;
897: END IF;
898: END IF;
899:
900: IF p_PRICE_LIST_rec.SHAREABLE_FLAG IS NOT NULL AND
902: p_old_PRICE_LIST_rec.SHAREABLE_FLAG OR
903: p_old_PRICE_LIST_rec.SHAREABLE_FLAG IS NULL)
904: THEN
905: IF NOT QP_Validate.shareable_flag(p_PRICE_LIST_rec.SHAREABLE_FLAG) THEN
906: x_return_status := FND_API.G_RET_STS_ERROR;
907: END IF;
908: END IF;
909:
910: IF p_PRICE_LIST_rec.SOLD_TO_ORG_ID IS NOT NULL AND
912: p_old_PRICE_LIST_rec.SOLD_TO_ORG_ID OR
913: p_old_PRICE_LIST_rec.SOLD_TO_ORG_ID IS NULL)
914: THEN
915: IF NOT QP_Validate.sold_to_org_id(p_PRICE_LIST_rec.SOLD_TO_ORG_ID) THEN
916: x_return_status := FND_API.G_RET_STS_ERROR;
917: END IF;
918: END IF;
919:
920: IF p_PRICE_LIST_rec.locked_from_list_header_id IS NOT NULL AND
922: p_old_PRICE_LIST_rec.locked_from_list_header_id OR
923: p_old_PRICE_LIST_rec.locked_from_list_header_id IS NULL)
924: THEN
925: IF NOT QP_Validate.locked_from_list_header_id(p_PRICE_LIST_rec.locked_from_list_header_id) THEN
926: x_return_status := FND_API.G_RET_STS_ERROR;
927: END IF;
928: END IF;
929:
930: --added for MOAC
933: p_old_PRICE_LIST_rec.org_id OR
934: p_old_PRICE_LIST_rec.org_id IS NULL)
935: THEN
936: IF NOT QP_Validate.org_id(p_PRICE_LIST_rec.org_id) THEN
937: x_return_status := FND_API.G_RET_STS_ERROR;
938: END IF;
939: END IF;
940:
941: IF (p_PRICE_LIST_rec.attribute1 IS NOT NULL AND
1075:
1076: -- Validate descriptive flexfield.
1077:
1078: IF NOT QP_Validate.Desc_Flex( 'PRICE_LIST' ) THEN
1079: x_return_status := FND_API.G_RET_STS_ERROR;
1080: END IF;
1081:
1082: END IF;
1083:
1084: -- Done validating attributes
1085:
1086: EXCEPTION
1087:
1088: WHEN FND_API.G_EXC_ERROR THEN
1089:
1090: x_return_status := FND_API.G_RET_STS_ERROR;
1091:
1092: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1086: EXCEPTION
1087:
1088: WHEN FND_API.G_EXC_ERROR THEN
1089:
1090: x_return_status := FND_API.G_RET_STS_ERROR;
1091:
1092: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1093:
1094: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1088: WHEN FND_API.G_EXC_ERROR THEN
1089:
1090: x_return_status := FND_API.G_RET_STS_ERROR;
1091:
1092: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1093:
1094: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1095:
1096: WHEN OTHERS THEN
1090: x_return_status := FND_API.G_RET_STS_ERROR;
1091:
1092: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1093:
1094: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1095:
1096: WHEN OTHERS THEN
1097:
1098: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1094: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1095:
1096: WHEN OTHERS THEN
1097:
1098: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1099:
1100: IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1101: THEN
1102: oe_msg_pub.Add_Exc_Msg
1113: ( x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1114: , p_PRICE_LIST_rec IN QP_Price_List_PUB.Price_List_Rec_Type
1115: )
1116: IS
1117: l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
1118: BEGIN
1119:
1120: -- Validate entity delete.
1121:
1126: x_return_status := l_return_status;
1127:
1128: EXCEPTION
1129:
1130: WHEN FND_API.G_EXC_ERROR THEN
1131:
1132: x_return_status := FND_API.G_RET_STS_ERROR;
1133:
1134: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1128: EXCEPTION
1129:
1130: WHEN FND_API.G_EXC_ERROR THEN
1131:
1132: x_return_status := FND_API.G_RET_STS_ERROR;
1133:
1134: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1135:
1136: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1130: WHEN FND_API.G_EXC_ERROR THEN
1131:
1132: x_return_status := FND_API.G_RET_STS_ERROR;
1133:
1134: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1135:
1136: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1137:
1138: WHEN OTHERS THEN
1132: x_return_status := FND_API.G_RET_STS_ERROR;
1133:
1134: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1135:
1136: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1137:
1138: WHEN OTHERS THEN
1139:
1140: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1136: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1137:
1138: WHEN OTHERS THEN
1139:
1140: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1141:
1142: IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1143: THEN
1144: oe_msg_pub.Add_Exc_Msg