1 PACKAGE BODY OE_Validate_Line_Adj AS
2 /* $Header: OEXLLADB.pls 120.2 2005/12/29 04:29:50 ppnair noship $ */
3
4 -- Global constant holding the package name
5
6 G_PKG_NAME CONSTANT VARCHAR2(30) := 'OE_Validate_Line_Adj';
7
8 -- Procedure Entity
9
10
11 PROCEDURE Entity
12 ( x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
13 , p_Line_Adj_rec IN OE_Order_PUB.Line_Adj_Rec_Type
14 , p_old_Line_Adj_rec IN OE_Order_PUB.Line_Adj_Rec_Type :=
15 OE_Order_PUB.G_MISS_LINE_ADJ_REC
16 )
17 IS
18 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
19 l_price_adj_error VARCHAR2(30):= NULL;
20 l_tmp_string VARCHAR2(30):= NULL;
21 l_agr_type_code VARCHAR2(30):= NULL;
22 l_attribute_name VARCHAR2(50):= NULL;
23 l_agreement_id NUMBER ;
24 -- This change is required since we are dropping the profile SO_ORGANIZATION -- _ID. Change made by Esha.
25 l_organization_id NUMBER := To_number(OE_Sys_Parameters.VALUE
26 ('MASTER_ORGANIZATION_ID'));
27 /* l_organization_id NUMBER := To_number(FND_PROFILE.VALUE
28 ('SO_ORGANIZATION_ID'));*/
29 stmt Number;
30 BEGIN
31
32 stmt:=1;
33 Oe_debug_pub.add('Entering OE_Validate_Line_Adj.Entity');
34 -- Check required attributes.
35
36 IF p_Line_Adj_rec.price_adjustment_id IS NULL
37 THEN
38
39 l_return_status := FND_API.G_RET_STS_ERROR;
40
41 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
42 THEN
43
44 oe_debug_pub.add(' Required price_adjustment');
45 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
46 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','price_adjustment');
47 OE_MSG_PUB.Add;
48
49 END IF;
50
51 END IF;
52
53 stmt:=2;
54 -- Check the header_id on the record.
55
56 IF p_Line_Adj_rec.header_id IS NULL
57 THEN
58
59 l_return_status := FND_API.G_RET_STS_ERROR;
60
61 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
62 THEN
63 oe_debug_pub.add(' Required Header Id');
64 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
65 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
66 OE_Order_UTIL.Get_Attribute_Name('HEADER_ID'));
67 OE_MSG_PUB.Add;
68
69 END IF;
70
71 END IF;
72 stmt:=3;
73 IF p_Line_adj_rec.list_line_type_code not in ('COST','TAX')and
74 p_Line_adj_rec.list_header_id is null
75 THEN
76
77 l_return_status := FND_API.G_RET_STS_ERROR;
78
79 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
80 THEN
81 oe_debug_pub.add(' Required List Header');
82 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
83 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','List_header');
84 OE_MSG_PUB.Add;
85
86 END IF;
87
88 END IF;
89 stmt:=4;
90 IF p_Line_adj_rec.list_header_id is not null and
91 p_Line_adj_rec.list_line_id IS NULL THEN
92
93 l_return_status := FND_API.G_RET_STS_ERROR;
94
95 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
96 THEN
97 oe_debug_pub.add(' Required list line');
98 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
99 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','List_Line');
100 OE_MSG_PUB.Add;
101
102 END IF;
103
104 END IF;
105
106 stmt:=5;
107 IF p_Line_adj_rec.list_header_id is not null and
108 p_Line_adj_rec.list_line_type_code IS NULL THEN
109
110 l_return_status := FND_API.G_RET_STS_ERROR;
111
112 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
113 THEN
114 oe_debug_pub.add(' Required list line type code');
115 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
116 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','List_line_type_code');
117 OE_MSG_PUB.Add;
118
119 END IF;
120
121 END IF;
122 stmt:=6;
123 IF p_Line_adj_rec.list_line_type_code in ('COST','TAX')and
124 p_Line_adj_rec.line_id is null
125 THEN
126
127 l_return_status := FND_API.G_RET_STS_ERROR;
128
129 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
130 THEN
131 oe_debug_pub.add(' Required line id');
132 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
133 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
134 OE_Order_UTIL.Get_Attribute_Name('LINE_ID'));
135 OE_MSG_PUB.Add;
136
137 END IF;
138
139 END IF;
140 stmt:=7;
141 --
142 -- Check rest of required attributes here.
143 --
144
145 -- Return Error if a required attribute is missing.
146
147 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
148
149 RAISE FND_API.G_EXC_ERROR;
150
151 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
152
153 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
154
155 END IF;
156
157
158 stmt:=8;
159 --
160 -- Check conditionally required attributes here.
161 --
162
163 /* Added Validation check for the AETC flexfield */
164
165 IF p_Line_adj_rec.ac_attribute1 IS NOT NULL OR
166 p_Line_adj_rec.ac_attribute2 IS NOT NULL OR
167 p_Line_adj_rec.ac_attribute3 IS NOT NULL OR
168 p_Line_adj_rec.ac_attribute4 IS NOT NULL OR
169 p_Line_adj_rec.ac_attribute5 IS NOT NULL OR
170 p_Line_adj_rec.ac_attribute6 IS NOT NULL
171 THEN
172 l_attribute_name := NULL;
173 IF p_Line_adj_rec.ac_attribute4 IS NULL THEN
174 l_attribute_name := 'AETC Number';
175 END IF;
176 IF p_Line_adj_rec.ac_attribute5 IS NULL THEN
177 l_attribute_name := 'AETC Responsibility Code';
178 END IF;
179 IF p_Line_adj_rec.ac_attribute6 IS NULL THEN
180 l_attribute_name := 'AETC Reason Code';
181 END IF;
182 IF l_attribute_name IS NOT NULL THEN
183 l_return_status := FND_API.G_RET_STS_ERROR;
184
185 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
186 THEN
187 oe_debug_pub.add(' Required:'||l_attribute_name);
188 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
189 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',l_attribute_name);
190 OE_MSG_PUB.Add;
191
192 END IF;
193 END IF;
194
195 END IF;
196
197 stmt:=9;
198 -- bug 1999869, check for reason code only for applied adjs.
199 /* IF upper(p_Line_adj_rec.updated_flag) ='Y' and
200 upper(p_line_adj_rec.applied_flag) = 'Y' and
201 p_Line_adj_rec.change_reason_code is null THEN
202
203 l_return_status := FND_API.G_RET_STS_ERROR;
204
205 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
206 THEN
207 oe_debug_pub.add(' Required: change_reason_code');
208 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
209 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','change_reason_code');
210 OE_MSG_PUB.Add;
211
212 END IF;
213
214 END IF; */
215
216 stmt:=10;
217 IF p_Line_adj_rec.list_line_type_code = 'FREIGHT_CHARGE' and
218 p_Line_adj_rec.charge_type_code IS NULL THEN
219
220 l_return_status := FND_API.G_RET_STS_ERROR;
221
222 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
223 THEN
224 oe_debug_pub.add(' Required: CHARGE_TYPE_CODE');
225 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
226 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
227 OE_Order_UTIL.Get_Attribute_Name('CHARGE_TYPE_CODE'));
228 OE_MSG_PUB.Add;
229
230 END IF;
231
232 END IF;
233 stmt:=11;
234 IF p_Line_adj_rec.list_line_type_code = 'TAX' and
235 -- eBTax changes
236 -- At least one out of tax_code (for historical trx) and tax_Rate_id (for new
237 -- transactions ) should be populated when line is of type tax
238 (
239 p_Line_adj_rec.tax_code IS NULL
240 AND
241 p_Line_adj_rec.tax_rate_id IS NULL
242 )
243 THEN
244
245 l_return_status := FND_API.G_RET_STS_ERROR;
246
247 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
248 THEN
249 oe_debug_pub.add(' Required: tax code or tax_rate_id');
250 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
251 -- eBTax Changes
252 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
253 OE_Order_UTIL.Get_Attribute_Name('TAX_RATE_ID'));
254
255 OE_MSG_PUB.Add;
256
257 END IF;
258
259 END IF;
260 stmt:=12;
261 IF p_Line_adj_rec.list_line_type_code = 'COST' and
262 p_Line_adj_rec.cost_id IS NULL 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)
267 THEN
268 oe_debug_pub.add(' Required: cost id');
269 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
270 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
271 OE_Order_UTIL.Get_Attribute_Name('COST_ID'));
272 OE_MSG_PUB.Add;
273
274 END IF;
275
276 END IF;
277
278 stmt:=13;
279 IF p_Line_adj_rec.list_line_type_code in ('COST','TAX','FREIGHT_CHARGE') AND
280 p_Line_adj_rec.adjusted_amount IS NULL
281 THEN
282
283 l_return_status := FND_API.G_RET_STS_ERROR;
284
285 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
286 THEN
287
288 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
289 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
290 OE_Order_UTIL.Get_Attribute_Name('ADJUSTED_AMOUNT'));
291 OE_MSG_PUB.Add;
292
293 END IF;
294 END IF;
295
296 stmt:=14;
297 IF p_Line_adj_rec.list_line_type_code in ('TAX','FREIGHT_CHARGE') AND
298 p_Line_adj_rec.operand IS NULL
299 THEN
300
301 l_return_status := FND_API.G_RET_STS_ERROR;
302
303 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
304 THEN
305
306 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
307 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
308 OE_Order_UTIL.Get_Attribute_Name('OPERAND'));
309 OE_MSG_PUB.Add;
310
311 END IF;
312 END IF;
313 stmt:=15;
314
315 /*
316
317 --
318 -- Validate the price adjustment
319 --
320
321 -- Selecting the agreement_type_code from so_agreements
322 -- At this point the agreement_id on line should either be
323 -- valid/active or null.
324
325 -- The following code is not joined to the discount select
326 -- because there might be no rows in so_agreements table
327 -- (a cartesian product of NO_ROWS with any table
328 -- results in NO_ROWS)
329
330 BEGIN
331
332 SELECT soagr.agreement_type_code
333 INTO l_agr_type_code
334 FROM oe_agreements soagr,
335 oe_order_lines oeordl
336 WHERE soarg.agreement_id = oeordl.agreement_id
337 AND oeordl.line_id = p_line_adj_rec.line_id;
338
339 EXCEPTION
340 WHEN NO_DATA_FOUND
341 THEN
342 l_agr_type_code := NULL;
343
344 END;
345
346 -- Changed site_use_id to site_org_id
347 -- site_use_id :: site_org_id
348
349 SELECT 'IMP_DISCOUNT'
350 INTO l_price_adj_error
351 FROM DUAL
352 WHERE NOT EXISTS
353 (SELECT NULL
354 FROM oe_discounts sodsc,
355 oe_discount_lines sodls,
356 oe_price_break_lines sopbl,
357 oe_order_lines oeordl,
358 o_order_header oeordh
359 WHERE NVL(decode(sign(p_line_adj_rec.discount_line_id), -1, null,
360 p_line_adj_rec.discount_line_id), -99)=
361 NVL(sodls.discount_line_id(+),-99)
362 AND p_line_adj_rec.discount_id = sodsc.discount_id
363 AND ((p_percent =
364 nvl(sodsc.amount / oeordl.unit_list_price * 100,
365 nvl(sodsc.percent,
366 nvl((oeordl.unit_list_price - sodls.price ) /
367 oeordl.unit_list_price * 100,
368 nvl(sodls.amount / oeordl.unit_list_price * 100,
369 nvl(sodls.percent,
370 nvl((oeordl.unit_list_price - sopbl.price ) /
371 oeordl.unit_list_price * 100,
372 nvl(sopbl.amount / oeordl.unit_list_price
373 * 100,
374 nvl( sopbl.percent, 0 )))))))))
375 OR
376 (sodsc.override_allowed_flag = 'Y'))
377 AND oeordl.line_id = p_line_adj_rec.line_id
378 AND oeordl.header_id = oeordh.header_id
379 AND sodsc.price_list_id = oeordl.price_list_id
380 AND sodsc.discount_type_code = 'LINE_ITEM'
381 AND nvl(trunc(oeordl.pricing_date), sysdate)
382 BETWEEN nvl(sodsc.start_date_active,
383 nvl(trunc(oeordl.pricing_date), sysdate))
384 AND
385 Nvl(sodsc.end_date_active, nvl(trunc(oeordl.pricing_date),
386 sysdate) )
387 AND sodls.discount_id(+) = sodsc.discount_id
388 AND nvl(trunc(oeordl.pricing_date), sysdate) between
389 Nvl(sodls.start_date_active(+), nvl(trunc(oeordl.pricing_date),
390 sysdate) )
391 AND
392 Nvl(sodls.end_date_active(+), nvl(trunc(oeordl.pricing_date),
393 sysdate) )
394 AND NVL(sodls.entity_value, 'X' ) =
395 DECODE(sodls.entity_id,
396 1007, TO_CHAR(oeordh.order_type_id),
397 1001, TO_CHAR(oeordl.inventory_item_id),
398 1005, l_agr_type_code,
399 1006, TO_CHAR(oeordl.agreement_id),
400 1010, oeordl.pricing_attribute1,
401 1011, oeordl.pricing_attribute2,
402 1012, oeordl.pricing_attribute3,
403 1013, oeordl.pricing_attribute4,
404 1014, oeordl.pricing_attribute5,
405 1015, oeordl.pricing_attribute6,
406 1016, oeordl.pricing_attribute7,
407 1017, oeordl.pricing_attribute8,
408 1018, oeordl.pricing_attribute9,
409 1019, oeordl.pricing_attribute10,
410 1020, oeordl.pricing_attribute11,
411 1021, oeordl.pricing_attribute12,
412 1022, oeordl.pricing_attribute13,
413 1023, oeordl.pricing_attribute14,
414 1024, oeordl.pricing_attribute15,
415 1045, sodls.entity_value,
416 'X' )
417 AND decode (sodls.ENTITY_ID,
418 1045, oe_adj_privilege.check_item_category
419 (oeordl.inventory_item_id,
420 SODLS.ENTITY_VALUE,
421 l_organization_id)
422 ,'Y') = 'Y'
423 AND sopbl.discount_line_id(+) = sodls.discount_line_id
424 AND nvl(trunc(oeordl.pricing_date), sysdate)
425 BETWEEN
426 NVL( sopbl.start_date_active(+), nvl(trunc(oeordl.pricing_date),
427 sysdate) )
428 AND
429 NVL( sopbl.end_date_active(+), nvl(trunc(oeordl.pricing_date),
430 sysdate) )
431 AND DECODE( sopbl.method_type_code,
432 'UNITS', oeordl.quantity_ordered,
433 'DOLLARS', oeordl.quantity_ordered *
434 oeordl.unit_list_price, 0 )
435 BETWEEN NVL( sopbl.price_break_lines_low_range,
436 DECODE( sopbl.method_type_code,
437 'UNITS', oeordl.quantity_ordered,
438 'DOLLARS', oeordl.quantity_ordered *
439 oeordl.unit_list_price, 0 ))
440 AND NVL( sopbl.price_break_lines_high_range,
441 DECODE( sopbl.method_type_code,
442 'UNITS', oeordl.quantity_ordered,
443 'DOLLARS', oeordl.quantity_ordered *
444 oeordl.unit_list_price, 0 ))
445 AND (NOT EXISTS
446 (SELECT NULL
447 FROM oe_discount_customers sodcs
448 WHERE sodcs.discount_id = sodsc.discount_id )
449 OR
450 (EXISTS
451 (SELECT NULL
452 FROM oe_discount_customers sodcs
453 WHERE sodcs.discount_id = sodsc.discount_id
454 AND (sodcs.sold_to_org_id = oeordh.sold_to_org_id
455 OR
456 (sodcs.sold_to_org_id IS NULL
457 AND
458 sodcs.customer_class_code IS NULL))
459 AND (Nvl(sodcs.site_use_id, oeordh.ship_to_org_id)=
460 oeordh.ship_to_org_id
461 OR
462 NVL(sodcs.site_use_id, oeordh.invoice_to_org_id)=
463 oeordh.invoice_to_org_id )
464 AND nvl(trunc(oeordl.pricing_date), sysdate)
465 BETWEEN NVL( sodcs.start_date_active,
466 nvl(trunc(oeordl.pricing_date), sysdate) )
467 AND
468 NVL(sodcs.end_date_active,
469 nvl(trunc(oeordl.pricing_date), sysdate))
470 )
471 OR
472 EXISTS (SELECT NULL
473 FROM oe_discount_customers oecst,
474 hz_cust_accounsts hzcst
475 WHERE oecst.discount_id = sodsc.discount_id
476 AND hzcst.cust_account_id = oeordh.sold_to_org_id
477 AND hzcst.customer_class_code =
478 oecst.customer_class_code
479 AND oecst.sold_to_org_id IS NULL
480 AND oecst.site_use_id IS NULL
481 AND nvl(trunc(oeordl.pricing_date), sysdate)
482 BETWEEN NVL(oecst.start_date_active,
483 Nvl(trunc(oeordl.pricing_date),
484 Sysdate) )
485 AND
486 NVL(oecst.end_date_active,
487 nvl(trunc(oeordl.pricing_date), sysdate)))
488 )
489 )
490 );
491
492 stmt:=16;
493
494 -- The price adjustment check above failed
495
496 IF l_price_adj_error = 'IMP_DISCOUNT'
497 THEN
498
499 l_return_status := FND_API.G_RET_STS_ERROR;
500
501 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
502 THEN
503 oe_debug_pub.add(' Required: IMP_DISCOUN');
504 FND_MESSAGE.SET_NAME('OE', 'IMP_DISCOUNT');
505 OE_MSG_PUB.Add;
506
507 END IF;
508
509 RAISE FND_API.G_EXC_ERROR;
510
511 END IF;
512 */
513
514
515 --
516 -- Validate attribute dependencies here.
517 --
518
519 IF p_Line_adj_rec.list_line_type_code = 'FREIGHT_CHARGE' AND
520 p_Line_adj_rec.charge_type_code IS NOT NULL AND
521 p_Line_adj_rec.charge_subtype_code IS NOT NULL AND
522 ((NOT OE_GLOBALS.EQUAL(p_Line_adj_rec.charge_type_code,
523 p_Old_Line_adj_rec.charge_type_code)) OR
524 (NOT OE_GLOBALS.EQUAL(p_Line_adj_rec.charge_subtype_code,
525 p_Old_Line_adj_rec.charge_subtype_code)))
526 THEN
527
528 BEGIN
529 SELECT 'VALID'
530 INTO l_tmp_string
531 FROM QP_LOOKUPS
532 WHERE LOOKUP_TYPE = p_Line_Adj_rec.charge_type_code
533 AND LOOKUP_CODE = p_Line_Adj_rec.charge_subtype_code
534 AND TRUNC(sysdate) BETWEEN TRUNC(NVL(START_DATE_ACTIVE,sysdate))
535 AND TRUNC(NVL(END_DATE_ACTIVE,sysdate))
536 AND ENABLED_FLAG = 'Y';
537 EXCEPTION
538
539 WHEN NO_DATA_FOUND THEN
540 l_return_status := FND_API.G_RET_STS_ERROR;
541 FND_MESSAGE.SET_NAME('ONT','OE_INVALID_ATTRIBUTE');
542 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
543 OE_Order_Util.Get_Attribute_Name('CHARGE_SUBTYPE_CODE'));
544 oe_debug_pub.add(' Required CHARGE_SUBTYPE_CODE');
545 OE_MSG_PUB.Add;
546
547 WHEN OTHERS THEN
548 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
549 THEN
550 OE_MSG_PUB.Add_Exc_Msg
551 ( G_PKG_NAME ,
552 'Record - Charge Type/Subtype validation'
553 );
554 END IF;
555 oe_debug_pub.add(' Failed:Record - Charge Type/Subtype validation');
556 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
557 END;
558 END IF;
559
560 IF (p_Line_adj_rec.list_line_type_code in ('COST','TAX')and
561 p_Line_adj_rec.arithmetic_operator <> 'AMT') OR
562 (p_Line_adj_rec.list_line_type_code = 'FREIGHT_CHARGE' and
563 p_Line_adj_rec.arithmetic_operator NOT IN ('AMT','LUMPSUM','%'))
564 THEN
565
566 l_return_status := FND_API.G_RET_STS_ERROR;
567
568 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
569 THEN
570 oe_debug_pub.add(' Error ARITHMETIC_OPERATOR');
571 FND_MESSAGE.SET_NAME('ONT','OE_INVALID_ATTRIBUTE');
572 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
573 OE_Order_Util.Get_Attribute_Name('ARITHMETIC_OPERATOR'));
574 OE_MSG_PUB.Add;
575
576 END IF;
577
578 END IF;
579
580
581 -- Validate that the total percentage on the header has not exceeded
582 /*
583 -- 100%. LOG A DELAYED REQUEST TO EXECUTE LATER.
584 oe_delayed_requests_pvt.
585 log_request(p_entity_code => OE_GLOBALS.G_ENTITY_LINE_ADJ,
586 p_entity_id => p_line_adj_rec.line_id,
587 p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE_ADJ,
588 p_requesting_entity_id => p_line_adj_rec.price_adjustment_id,
589 p_request_type => OE_GLOBALS.G_CHECK_PERCENTAGE,
590 p_param1 => p_line_adj_rec.header_id,
591 x_return_status => l_return_status);
592
593 */
594
595 -- Return
596
597 x_return_status := l_return_status;
598 oe_debug_pub.add('Leaving oe_validate_line_adj.entity');
599 EXCEPTION
600
601 WHEN FND_API.G_EXC_ERROR THEN
602
603 x_return_status := FND_API.G_RET_STS_ERROR;
604
605 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
606
607 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
608
609 WHEN OTHERS THEN
610
611 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
612
613 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
614 THEN
615 OE_MSG_PUB.Add_Exc_Msg
616 ( G_PKG_NAME
617 , 'Entity'
618 );
619 END IF;
620
621 END Entity;
622
623 -- Procedure Attributes
624
625 PROCEDURE Attributes
626 ( x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
627 , p_Line_Adj_rec IN OE_Order_PUB.Line_Adj_Rec_Type
628 , p_old_Line_Adj_rec IN OE_Order_PUB.Line_Adj_Rec_Type :=
629 OE_Order_PUB.G_MISS_LINE_ADJ_REC
630 )
631 IS
632 BEGIN
633 oe_debug_pub.add('Entering OE_VALIDATE_LINE_ADJ.ATTRIBUTES');
634 x_return_status := FND_API.G_RET_STS_SUCCESS;
635
636 -- Validate Line_Adj attributes
637
638 IF p_Line_Adj_rec.price_adjustment_id IS NOT NULL AND
639 ( p_Line_Adj_rec.price_adjustment_id <>
640 p_old_Line_Adj_rec.price_adjustment_id OR
641 p_old_Line_Adj_rec.price_adjustment_id IS NULL )
642 THEN
643 IF NOT OE_Validate_adj.Price_Adjustment(p_Line_Adj_rec.price_adjustment_id) THEN
644 oe_debug_pub.add(' Error price_adjustment_id');
645 x_return_status := FND_API.G_RET_STS_ERROR;
646 END IF;
647 END IF;
648
649 IF p_Line_Adj_rec.creation_date IS NOT NULL AND
650 ( p_Line_Adj_rec.creation_date <>
651 p_old_Line_Adj_rec.creation_date OR
652 p_old_Line_Adj_rec.creation_date IS NULL )
653 THEN
654 IF NOT OE_Validate_adj.Creation_Date(p_Line_Adj_rec.creation_date) THEN
655 oe_debug_pub.add(' Error creation_date');
656 x_return_status := FND_API.G_RET_STS_ERROR;
657 END IF;
658 END IF;
659
660 IF p_Line_Adj_rec.created_by IS NOT NULL AND
661 ( p_Line_Adj_rec.created_by <>
662 p_old_Line_Adj_rec.created_by OR
663 p_old_Line_Adj_rec.created_by IS NULL )
664 THEN
665 IF NOT OE_Validate_adj.Created_By(p_Line_Adj_rec.created_by) THEN
666 oe_debug_pub.add(' Error created_by');
667 x_return_status := FND_API.G_RET_STS_ERROR;
668 END IF;
669 END IF;
670
671 IF p_Line_Adj_rec.last_update_date IS NOT NULL AND
672 ( p_Line_Adj_rec.last_update_date <>
673 p_old_Line_Adj_rec.last_update_date OR
674 p_old_Line_Adj_rec.last_update_date IS NULL )
675 THEN
676 IF NOT OE_Validate_adj.Last_Update_Date(p_Line_Adj_rec.last_update_date) THEN
677 oe_debug_pub.add(' Error last_update_date');
678 x_return_status := FND_API.G_RET_STS_ERROR;
679 END IF;
680 END IF;
681
682 IF p_Line_Adj_rec.last_updated_by IS NOT NULL AND
683 ( p_Line_Adj_rec.last_updated_by <>
684 p_old_Line_Adj_rec.last_updated_by OR
685 p_old_Line_Adj_rec.last_updated_by IS NULL )
686 THEN
687 IF NOT OE_Validate_adj.Last_Updated_By(p_Line_Adj_rec.last_updated_by) THEN
688 oe_debug_pub.add(' Error last_updated_by');
689 x_return_status := FND_API.G_RET_STS_ERROR;
690 END IF;
691 END IF;
692
693 IF p_Line_Adj_rec.last_update_login IS NOT NULL AND
694 ( p_Line_Adj_rec.last_update_login <>
695 p_old_Line_Adj_rec.last_update_login OR
696 p_old_Line_Adj_rec.last_update_login IS NULL )
697 THEN
698 IF NOT OE_Validate_adj.Last_Update_Login(p_Line_Adj_rec.last_update_login) THEN
699 oe_debug_pub.add(' Error last_update_login');
700 x_return_status := FND_API.G_RET_STS_ERROR;
701 END IF;
702 END IF;
703
704 IF p_Line_Adj_rec.program_application_id IS NOT NULL AND
705 ( p_Line_Adj_rec.program_application_id <>
706 p_old_Line_Adj_rec.program_application_id OR
707 p_old_Line_Adj_rec.program_application_id IS NULL )
708 THEN
709 IF NOT OE_Validate_adj.Program_Application(p_Line_Adj_rec.program_application_id) THEN
710 oe_debug_pub.add(' Error program_application_id');
711 x_return_status := FND_API.G_RET_STS_ERROR;
712 END IF;
713 END IF;
714
715 IF p_Line_Adj_rec.program_id IS NOT NULL AND
716 ( p_Line_Adj_rec.program_id <>
717 p_old_Line_Adj_rec.program_id OR
718 p_old_Line_Adj_rec.program_id IS NULL )
719 THEN
720 IF NOT OE_Validate_adj.Program(p_Line_Adj_rec.program_id) THEN
721 oe_debug_pub.add(' Error program id');
722 x_return_status := FND_API.G_RET_STS_ERROR;
723 END IF;
724 END IF;
725
726 IF p_Line_Adj_rec.program_update_date IS NOT NULL AND
727 ( p_Line_Adj_rec.program_update_date <>
728 p_old_Line_Adj_rec.program_update_date OR
729 p_old_Line_Adj_rec.program_update_date IS NULL )
730 THEN
731 IF NOT OE_Validate_adj.Program_Update_Date(p_Line_Adj_rec.program_update_date) THEN
732 oe_debug_pub.add(' Error program_update_date');
733 x_return_status := FND_API.G_RET_STS_ERROR;
734 END IF;
735 END IF;
736
737 IF p_Line_Adj_rec.request_id IS NOT NULL AND
738 ( p_Line_Adj_rec.request_id <>
739 p_old_Line_Adj_rec.request_id OR
740 p_old_Line_Adj_rec.request_id IS NULL )
741 THEN
742 IF NOT OE_Validate_adj.Request(p_Line_Adj_rec.request_id) THEN
743 oe_debug_pub.add(' Error request id');
744 x_return_status := FND_API.G_RET_STS_ERROR;
745 END IF;
746 END IF;
747
748 IF p_Line_Adj_rec.header_id IS NOT NULL AND
749 ( p_Line_Adj_rec.header_id <>
750 p_old_Line_Adj_rec.header_id OR
751 p_old_Line_Adj_rec.header_id IS NULL )
752 THEN
753 IF NOT OE_Validate_adj.Header(p_Line_Adj_rec.header_id) THEN
754 oe_debug_pub.add(' Error header_id');
755 x_return_status := FND_API.G_RET_STS_ERROR;
756 END IF;
757 END IF;
758
759 IF p_Line_Adj_rec.discount_id IS NOT NULL AND
760 ( p_Line_Adj_rec.discount_id <>
761 p_old_Line_Adj_rec.discount_id OR
762 p_old_Line_Adj_rec.discount_id IS NULL )
763 THEN
764 IF NOT OE_Validate_adj.Discount(p_Line_Adj_rec.discount_id) THEN
765 oe_debug_pub.add(' Error discount_id');
766 x_return_status := FND_API.G_RET_STS_ERROR;
767 END IF;
768 END IF;
769
770 IF p_Line_Adj_rec.discount_line_id IS NOT NULL AND
771 ( p_Line_Adj_rec.discount_line_id <>
772 p_old_Line_Adj_rec.discount_line_id OR
773 p_old_Line_Adj_rec.discount_line_id IS NULL )
774 THEN
775 IF NOT OE_Validate_adj.Discount_Line(p_Line_Adj_rec.discount_line_id) THEN
776 x_return_status := FND_API.G_RET_STS_ERROR;
777 END IF;
778 END IF;
779 oe_debug_pub.add(' LLADB half way');
780 IF p_Line_Adj_rec.automatic_flag IS NOT NULL AND
781 ( p_Line_Adj_rec.automatic_flag <>
782 p_old_Line_Adj_rec.automatic_flag OR
783 p_old_Line_Adj_rec.automatic_flag IS NULL )
784 THEN
785 IF NOT OE_Validate_adj.Automatic(p_Line_Adj_rec.automatic_flag) THEN
786 oe_debug_pub.add(' Error automatic_flag');
787 x_return_status := FND_API.G_RET_STS_ERROR;
788 END IF;
789 END IF;
790
791 IF p_Line_Adj_rec.percent IS NOT NULL AND
792 ( p_Line_Adj_rec.percent <>
793 p_old_Line_Adj_rec.percent OR
794 p_old_Line_Adj_rec.percent IS NULL )
795 THEN
796 IF NOT OE_Validate_adj.Percent(p_Line_Adj_rec.percent) THEN
797 oe_debug_pub.add(' Error percent');
798 x_return_status := FND_API.G_RET_STS_ERROR;
799 END IF;
800 END IF;
801
802 IF p_Line_Adj_rec.line_id IS NOT NULL AND
803 ( p_Line_Adj_rec.line_id <>
804 p_old_Line_Adj_rec.line_id OR
805 p_old_Line_Adj_rec.line_id IS NULL )
806 THEN
807 IF NOT OE_Validate_adj.Line(p_Line_Adj_rec.line_id) THEN
808 oe_debug_pub.add(' Error line_id');
809 x_return_status := FND_API.G_RET_STS_ERROR;
810 END IF;
811 END IF;
812
813 IF p_Line_Adj_rec.list_line_no IS NOT NULL AND
814 ( p_Line_Adj_rec.list_line_no <>
815 p_old_Line_Adj_rec.list_line_no OR
816 p_old_Line_Adj_rec.list_line_no IS NULL )
817 THEN
818 IF NOT oe_validate_adj.List_Line_No(p_Line_Adj_rec.list_line_no) THEN
819 oe_debug_pub.add(' Error list_line_no');
820 x_return_status := FND_API.G_RET_STS_ERROR;
821 END IF;
822 END IF;
823
824 IF p_Line_Adj_rec.source_system_code IS NOT NULL AND
825 ( p_Line_Adj_rec.source_system_code <>
826 p_old_Line_Adj_rec.source_system_code OR
827 p_old_Line_Adj_rec.source_system_code IS NULL )
828 THEN
829 IF NOT oe_validate_adj.source_system_code(p_Line_Adj_rec.source_system_code) THEN
830 oe_debug_pub.add(' Error source_system_code');
831 x_return_status := FND_API.G_RET_STS_ERROR;
832 END IF;
833 END IF;
834
835 IF p_Line_Adj_rec.benefit_qty IS NOT NULL AND
836 ( p_Line_Adj_rec.benefit_qty <>
837 p_old_Line_Adj_rec.benefit_qty OR
838 p_old_Line_Adj_rec.benefit_qty IS NULL )
839 THEN
840 IF NOT oe_validate_adj.benefit_qty(p_Line_Adj_rec.benefit_qty) THEN
841 oe_debug_pub.add(' Error benefit_qty');
842 x_return_status := FND_API.G_RET_STS_ERROR;
843 END IF;
844 END IF;
845
846 IF p_Line_Adj_rec.benefit_uom_code IS NOT NULL AND
847 ( p_Line_Adj_rec.benefit_uom_code <>
848 p_old_Line_Adj_rec.benefit_uom_code OR
849 p_old_Line_Adj_rec.benefit_uom_code IS NULL )
850 THEN
851 IF NOT oe_validate_adj.benefit_uom_code(p_Line_Adj_rec.benefit_uom_code) THEN
852 oe_debug_pub.add(' Error benefit_uom_code');
853 x_return_status := FND_API.G_RET_STS_ERROR;
854 END IF;
855 END IF;
856
857 IF p_Line_Adj_rec.print_on_invoice_flag IS NOT NULL AND
858 ( p_Line_Adj_rec.print_on_invoice_flag <>
859 p_old_Line_Adj_rec.print_on_invoice_flag OR
860 p_old_Line_Adj_rec.print_on_invoice_flag IS NULL )
861 THEN
862 IF NOT oe_validate_adj.print_on_invoice_flag(p_Line_Adj_rec.print_on_invoice_flag) THEN
863 oe_debug_pub.add(' Error print_on_invoice_flag');
864 x_return_status := FND_API.G_RET_STS_ERROR;
865 END IF;
866 END IF;
867
868 IF p_Line_Adj_rec.expiration_date IS NOT NULL AND
869 ( p_Line_Adj_rec.expiration_date <>
870 p_old_Line_Adj_rec.expiration_date OR
871 p_old_Line_Adj_rec.expiration_date IS NULL )
872 THEN
873 IF NOT oe_validate_adj.expiration_date(p_Line_Adj_rec.expiration_date) THEN
874 oe_debug_pub.add(' Error expiration_date');
875 x_return_status := FND_API.G_RET_STS_ERROR;
876 END IF;
877 END IF;
878
879 IF p_Line_Adj_rec.rebate_transaction_type_code IS NOT NULL AND
880 ( p_Line_Adj_rec.rebate_transaction_type_code <>
881 p_old_Line_Adj_rec.rebate_transaction_type_code OR
882 p_old_Line_Adj_rec.rebate_transaction_type_code IS NULL )
883 THEN
884 IF NOT oe_validate_adj.rebate_transaction_type_code(p_Line_Adj_rec.rebate_transaction_type_code) THEN
885 oe_debug_pub.add(' Error rebate_transaction_type_code');
886 x_return_status := FND_API.G_RET_STS_ERROR;
887 END IF;
888 END IF;
889
890
891 IF p_Line_Adj_rec.rebate_transaction_reference IS NOT NULL AND
892 ( p_Line_Adj_rec.rebate_transaction_reference <>
893 p_old_Line_Adj_rec.rebate_transaction_reference OR
894 p_old_Line_Adj_rec.rebate_transaction_reference IS NULL )
895 THEN
896 IF NOT oe_validate_adj.rebate_transaction_reference(p_Line_Adj_rec.rebate_transaction_reference) THEN
897 x_return_status := FND_API.G_RET_STS_ERROR;
898 END IF;
899 END IF;
900
901 IF p_Line_Adj_rec.rebate_payment_system_code IS NOT NULL AND
902 ( p_Line_Adj_rec.rebate_payment_system_code <>
903 p_old_Line_Adj_rec.rebate_payment_system_code OR
904 p_old_Line_Adj_rec.rebate_payment_system_code IS NULL )
905 THEN
906 IF NOT oe_validate_adj.rebate_payment_system_code(p_Line_Adj_rec.rebate_payment_system_code) THEN
907 oe_debug_pub.add(' Error ebate_payment_system_code');
908 x_return_status := FND_API.G_RET_STS_ERROR;
909 END IF;
910 END IF;
911
912 IF p_Line_Adj_rec.Redeemed_Date IS NOT NULL AND
913 ( p_Line_Adj_rec.Redeemed_Date <>
914 p_old_Line_Adj_rec.Redeemed_Date OR
915 p_old_Line_Adj_rec.Redeemed_Date IS NULL )
916 THEN
917 IF NOT oe_validate_adj.Redeemed_Date(p_Line_Adj_rec.Redeemed_Date) THEN
918 x_return_status := FND_API.G_RET_STS_ERROR;
919 END IF;
920 END IF;
921
922 IF p_Line_Adj_rec.redeemed_flag IS NOT NULL AND
923 ( p_Line_Adj_rec.redeemed_flag <>
924 p_old_Line_Adj_rec.redeemed_flag OR
925 p_old_Line_Adj_rec.redeemed_flag IS NULL )
926 THEN
927 IF NOT oe_validate_adj.Redeemed_Flag(p_Line_Adj_rec.redeemed_flag) THEN
928 oe_debug_pub.add(' Error redeemed_flag');
929 x_return_status := FND_API.G_RET_STS_ERROR;
930 END IF;
931 END IF;
932
933 IF p_Line_Adj_rec.accrual_flag IS NOT NULL AND
934 ( p_Line_Adj_rec.accrual_flag <>
935 p_old_Line_Adj_rec.accrual_flag OR
936 p_old_Line_Adj_rec.accrual_flag IS NULL )
937 THEN
938 IF NOT oe_validate_adj.Accrual_Flag(p_Line_Adj_rec.accrual_flag) THEN
939 oe_debug_pub.add(' Error accrual_flag');
940 x_return_status := FND_API.G_RET_STS_ERROR;
941 END IF;
942 END IF;
943
944 IF p_Line_Adj_rec.list_header_id IS NOT NULL AND
945 ( p_Line_Adj_rec.list_header_id <>
946 p_old_Line_Adj_rec.list_header_id OR
947 p_old_Line_Adj_rec.list_header_id IS NULL )
948 THEN
949 IF NOT OE_Validate_adj.list_header_id(p_Line_Adj_rec.list_header_id) THEN
950 oe_debug_pub.add(' Error list_header_id');
951 x_return_status := FND_API.G_RET_STS_ERROR;
952 END IF;
953 END IF;
954
955 IF p_Line_Adj_rec.list_line_id IS NOT NULL AND
956 ( p_Line_Adj_rec.list_line_id <>
957 p_old_Line_Adj_rec.list_line_id OR
958 p_old_Line_Adj_rec.list_line_id IS NULL )
959 THEN
960 IF NOT OE_Validate_adj.list_line_id(p_Line_Adj_rec.list_line_id) THEN
961 oe_debug_pub.add(' Error list_line_id');
962 x_return_status := FND_API.G_RET_STS_ERROR;
963 END IF;
964 END IF;
965
966 IF p_Line_Adj_rec.list_line_type_code IS NOT NULL AND
967 ( p_Line_Adj_rec.list_line_type_code <>
968 p_old_Line_Adj_rec.list_line_type_code OR
969 p_old_Line_Adj_rec.list_line_type_code IS NULL )
970 THEN
971 IF NOT OE_Validate_adj.list_line_type_code(p_Line_Adj_rec.list_line_type_code) THEN
972 oe_debug_pub.add(' Error list_line_type_code');
973 x_return_status := FND_API.G_RET_STS_ERROR;
974 END IF;
975 END IF;
976
977 IF p_Line_Adj_rec.modified_from IS NOT NULL AND
978 ( p_Line_Adj_rec.modified_from <>
979 p_old_Line_Adj_rec.modified_from OR
980 p_old_Line_Adj_rec.modified_from IS NULL )
981 THEN
982 IF NOT OE_Validate_adj.modified_from(p_Line_Adj_rec.modified_from) THEN
983 oe_debug_pub.add(' Error modified_from');
984 x_return_status := FND_API.G_RET_STS_ERROR;
985 END IF;
986 END IF;
987
988 IF p_Line_Adj_rec.modified_to IS NOT NULL AND
989 ( p_Line_Adj_rec.modified_to <>
990 p_old_Line_Adj_rec.modified_to OR
991 p_old_Line_Adj_rec.modified_to IS NULL )
992 THEN
993 IF NOT OE_Validate_adj.modified_to(p_Line_Adj_rec.modified_to) THEN
994 oe_debug_pub.add(' Error Modified to');
995 x_return_status := FND_API.G_RET_STS_ERROR;
996 END IF;
997 END IF;
998
999 IF p_Line_Adj_rec.updated_flag IS NOT NULL AND
1000 ( p_Line_Adj_rec.updated_flag <>
1001 p_old_Line_Adj_rec.updated_flag OR
1002 p_old_Line_Adj_rec.updated_flag IS NULL )
1003 THEN
1004 IF NOT OE_Validate_adj.updated_flag(p_Line_Adj_rec.updated_flag) THEN
1005 oe_debug_pub.add(' Error updated_flag');
1006 x_return_status := FND_API.G_RET_STS_ERROR;
1007 END IF;
1008 END IF;
1009
1010 IF p_Line_Adj_rec.update_allowed IS NOT NULL AND
1011 ( p_Line_Adj_rec.update_allowed <>
1012 p_old_Line_Adj_rec.update_allowed OR
1013 p_old_Line_Adj_rec.update_allowed IS NULL )
1014 THEN
1015 IF NOT OE_Validate_adj.update_allowed(p_Line_Adj_rec.update_allowed) THEN
1016 oe_debug_pub.add(' Erro update_allowed');
1017 x_return_status := FND_API.G_RET_STS_ERROR;
1018 END IF;
1019 END IF;
1020
1021 IF p_Line_Adj_rec.applied_flag IS NOT NULL AND
1022 ( p_Line_Adj_rec.applied_flag <>
1023 p_old_Line_Adj_rec.applied_flag OR
1024 p_old_Line_Adj_rec.applied_flag IS NULL )
1025 THEN
1026 IF NOT OE_Validate_adj.applied_flag(p_Line_Adj_rec.applied_flag) THEN
1027 oe_debug_pub.add(' Error Applied flag');
1028 x_return_status := FND_API.G_RET_STS_ERROR;
1029 END IF;
1030 END IF;
1031
1032 IF p_Line_Adj_rec.applied_flag IS NOT NULL AND
1033 ( p_Line_Adj_rec.applied_flag <>
1034 p_old_Line_Adj_rec.applied_flag OR
1035 p_old_Line_Adj_rec.applied_flag IS NULL )
1036 THEN
1037 IF NOT OE_Validate_adj.applied_flag(p_Line_Adj_rec.applied_flag) THEN
1038 x_return_status := FND_API.G_RET_STS_ERROR;
1039 END IF;
1040 END IF;
1041
1042 IF p_Line_Adj_rec.change_reason_code IS NOT NULL AND
1043 ( p_Line_Adj_rec.change_reason_code <>
1044 p_old_Line_Adj_rec.change_reason_code OR
1045 p_old_Line_Adj_rec.change_reason_code IS NULL )
1046 THEN
1047 IF NOT OE_Validate_adj.change_reason_code(p_Line_Adj_rec.change_reason_code) THEN
1048 oe_debug_pub.add(' Error change_reason_code');
1049 x_return_status := FND_API.G_RET_STS_ERROR;
1050 END IF;
1051 END IF;
1052
1053 IF p_Line_Adj_rec.change_reason_text IS NOT NULL AND
1054 ( p_Line_Adj_rec.change_reason_text <>
1055 p_old_Line_Adj_rec.change_reason_text OR
1056 p_old_Line_Adj_rec.change_reason_text IS NULL )
1057 THEN
1058 IF NOT OE_Validate_adj.change_reason_text(p_Line_Adj_rec.change_reason_text) THEN
1059 oe_debug_pub.add(' Error change reason code');
1060 x_return_status := FND_API.G_RET_STS_ERROR;
1061 END IF;
1062 END IF;
1063
1064 IF p_Line_Adj_rec.adjusted_amount IS NOT NULL AND
1065 ( p_Line_Adj_rec.adjusted_amount <>
1066 p_old_Line_Adj_rec.adjusted_amount OR
1067 p_old_Line_Adj_rec.adjusted_amount IS NULL )
1068 THEN
1069 IF NOT OE_Validate_adj.Adjusted_Amount(p_Line_Adj_rec.adjusted_amount)
1070 THEN
1071 oe_debug_pub.add(' Error adjusted_amount');
1072 x_return_status := FND_API.G_RET_STS_ERROR;
1073 END IF;
1074 END IF;
1075
1076 IF p_Line_Adj_rec.pricing_phase_id IS NOT NULL AND
1077 ( p_Line_Adj_rec.pricing_phase_id <>
1078 p_old_Line_Adj_rec.pricing_phase_id OR
1079 p_old_Line_Adj_rec.pricing_phase_id IS NULL )
1080 THEN
1081 IF NOT OE_Validate_adj.Pricing_Phase_id(p_Line_Adj_rec.pricing_phase_id) THEN
1082 oe_debug_pub.add(' Error Pricing phase id');
1083 x_return_status := FND_API.G_RET_STS_ERROR;
1084 END IF;
1085 END IF;
1086
1087 IF p_Line_Adj_rec.operand IS NOT NULL AND
1088 ( p_Line_Adj_rec.operand <>
1089 p_old_Line_Adj_rec.operand OR
1090 p_old_Line_Adj_rec.operand IS NULL )
1091 THEN
1092 IF NOT OE_Validate_adj.operand(p_Line_Adj_rec.operand) THEN
1093 oe_debug_pub.add(' Error Operand');
1094 x_return_status := FND_API.G_RET_STS_ERROR;
1095 END IF;
1096 END IF;
1097
1098 IF p_Line_Adj_rec.arithmetic_operator IS NOT NULL AND
1099 ( p_Line_Adj_rec.arithmetic_operator <>
1100 p_old_Line_Adj_rec.arithmetic_operator OR
1101 p_old_Line_Adj_rec.arithmetic_operator IS NULL )
1102 THEN
1103 IF NOT OE_Validate_adj.arithmetic_operator(p_Line_Adj_rec.arithmetic_operator) THEN
1104 oe_debug_pub.add(' Err arithmetic ope');
1105 x_return_status := FND_API.G_RET_STS_ERROR;
1106 END IF;
1107 END IF;
1108
1109 IF p_Line_Adj_rec.range_break_quantity IS NOT NULL AND
1110 ( p_Line_Adj_rec.range_break_quantity <>
1111 p_old_Line_Adj_rec.range_break_quantity OR
1112 p_old_Line_Adj_rec.range_break_quantity IS NULL )
1113 THEN
1114 IF NOT OE_Validate_adj.range_break_quantity(p_Line_Adj_rec.range_break_quantity) THEN
1115 oe_debug_pub.add(' Err range_break_quanti');
1116 x_return_status := FND_API.G_RET_STS_ERROR;
1117 END IF;
1118 END IF;
1119
1120 IF p_Line_Adj_rec.accrual_conversion_rate IS NOT NULL AND
1121 ( p_Line_Adj_rec.accrual_conversion_rate <>
1122 p_old_Line_Adj_rec.accrual_conversion_rate OR
1123 p_old_Line_Adj_rec.accrual_conversion_rate IS NULL )
1124 THEN
1125 IF NOT OE_Validate_adj.accrual_conversion_rate(p_Line_Adj_rec.accrual_conversion_rate) THEN
1126 oe_debug_pub.add(' Erro accrual_conversion');
1127 x_return_status := FND_API.G_RET_STS_ERROR;
1128 END IF;
1129 END IF;
1130
1131 IF p_Line_Adj_rec.pricing_group_sequence IS NOT NULL AND
1132 ( p_Line_Adj_rec.pricing_group_sequence <>
1133 p_old_Line_Adj_rec.pricing_group_sequence OR
1134 p_old_Line_Adj_rec.pricing_group_sequence IS NULL )
1135 THEN
1136 IF NOT OE_Validate_adj.pricing_group_sequence(p_Line_Adj_rec.pricing_group_sequence) THEN
1137 oe_debug_pub.add(' Error pricing_group_sequence');
1138 x_return_status := FND_API.G_RET_STS_ERROR;
1139 END IF;
1140 END IF;
1141
1142 IF p_Line_Adj_rec.modifier_level_code IS NOT NULL AND
1143 ( p_Line_Adj_rec.modifier_level_code <>
1144 p_old_Line_Adj_rec.modifier_level_code OR
1145 p_old_Line_Adj_rec.modifier_level_code IS NULL )
1146 THEN
1147 IF NOT OE_Validate_adj.modifier_level_code(p_Line_Adj_rec.modifier_level_code) THEN
1148 oe_debug_pub.add(' Error modifier_level_code');
1149 x_return_status := FND_API.G_RET_STS_ERROR;
1150 END IF;
1151 END IF;
1152
1153 IF p_Line_Adj_rec.price_break_type_code IS NOT NULL AND
1154 ( p_Line_Adj_rec.price_break_type_code <>
1155 p_old_Line_Adj_rec.price_break_type_code OR
1156 p_old_Line_Adj_rec.price_break_type_code IS NULL )
1157 THEN
1158 IF NOT OE_Validate_adj.price_break_type_code(p_Line_Adj_rec.price_break_type_code) THEN
1159 oe_debug_pub.add(' Erro price break type code');
1160 x_return_status := FND_API.G_RET_STS_ERROR;
1161 END IF;
1162 END IF;
1163
1164 IF p_Line_Adj_rec.substitution_attribute IS NOT NULL AND
1165 ( p_Line_Adj_rec.substitution_attribute <>
1166 p_old_Line_Adj_rec.substitution_attribute OR
1167 p_old_Line_Adj_rec.substitution_attribute IS NULL )
1168 THEN
1169 IF NOT OE_Validate_adj.substitution_attribute(p_Line_Adj_rec.substitution_attribute) THEN
1170 x_return_status := FND_API.G_RET_STS_ERROR;
1171 END IF;
1172 END IF;
1173
1174 IF p_Line_Adj_rec.proration_type_code IS NOT NULL AND
1175 ( p_Line_Adj_rec.proration_type_code <>
1176 p_old_Line_Adj_rec.proration_type_code OR
1177 p_old_Line_Adj_rec.proration_type_code IS NULL )
1178 THEN
1179 IF NOT OE_Validate_adj.proration_type_code(p_Line_Adj_rec.proration_type_code) THEN
1180 x_return_status := FND_API.G_RET_STS_ERROR;
1181 END IF;
1182 END IF;
1183
1184 IF p_Line_Adj_rec.credit_or_charge_flag IS NOT NULL AND
1185 ( p_Line_Adj_rec.credit_or_charge_flag <>
1186 p_old_Line_Adj_rec.credit_or_charge_flag OR
1187 p_old_Line_Adj_rec.credit_or_charge_flag IS NULL )
1188 THEN
1189 IF NOT OE_Validate.credit_or_charge_flag(p_Line_Adj_rec.credit_or_charge_flag) THEN
1190 x_return_status := FND_API.G_RET_STS_ERROR;
1191 END IF;
1192 END IF;
1193
1194 IF p_Line_Adj_rec.cost_id IS NOT NULL AND
1195 ( p_Line_Adj_rec.cost_id <>
1196 p_old_Line_Adj_rec.cost_id OR
1197 p_old_Line_Adj_rec.cost_id IS NULL )
1198 THEN
1199 IF NOT OE_Validate.cost_id(p_Line_Adj_rec.cost_id) THEN
1200 x_return_status := FND_API.G_RET_STS_ERROR;
1201 END IF;
1202 END IF;
1203
1204 IF p_Line_Adj_rec.charge_type_code IS NOT NULL AND
1205 ( p_Line_Adj_rec.charge_type_code <>
1206 p_old_Line_Adj_rec.charge_type_code OR
1207 p_old_Line_Adj_rec.charge_type_code IS NULL )
1208 THEN
1209 IF NOT OE_Validate.charge_type_code(p_Line_Adj_rec.charge_type_code) THEN
1210 oe_debug_pub.add(' Error charge_type_Code');
1211 x_return_status := FND_API.G_RET_STS_ERROR;
1212 END IF;
1213 END IF;
1214
1215 IF p_Line_Adj_rec.charge_subtype_code IS NOT NULL AND
1216 ( p_Line_Adj_rec.charge_subtype_code <>
1217 p_old_Line_Adj_rec.charge_subtype_code OR
1218 p_old_Line_Adj_rec.charge_subtype_code IS NULL )
1219 THEN
1220 IF NOT OE_Validate.charge_subtype_code(p_Line_Adj_rec.charge_subtype_code) THEN
1221 x_return_status := FND_API.G_RET_STS_ERROR;
1222 END IF;
1223 END IF;
1224
1225 IF p_Line_Adj_rec.estimated_flag IS NOT NULL AND
1226 ( p_Line_Adj_rec.estimated_flag <>
1227 p_old_Line_Adj_rec.estimated_flag OR
1228 p_old_Line_Adj_rec.estimated_flag IS NULL )
1229 THEN
1230 IF NOT OE_Validate.estimated(p_Line_Adj_rec.estimated_flag) THEN
1231 x_return_status := FND_API.G_RET_STS_ERROR;
1232 END IF;
1233 END IF;
1234
1235 -- eBTax Changes
1236 IF p_line_adj_rec.tax_rate_id IS NOT NULL AND
1237 ( p_line_adj_rec.tax_rate_id <>
1238 p_old_line_adj_rec.tax_rate_id OR
1239 p_old_line_adj_rec.tax_rate_id IS NULL )
1240 THEN
1241 IF NOT OE_Validate.tax_rate_id(p_line_adj_rec.tax_rate_id) THEN
1242 x_return_status := FND_API.G_RET_STS_ERROR;
1243 END IF;
1244 END IF;
1245 -- end eBTax changes
1246
1247
1248 IF p_Line_Adj_rec.invoiced_flag IS NOT NULL AND
1249 ( p_Line_Adj_rec.invoiced_flag <>
1250 p_old_Line_Adj_rec.invoiced_flag OR
1251 p_old_Line_Adj_rec.invoiced_flag IS NULL )
1252 THEN
1253 IF NOT OE_Validate.invoiced(p_Line_Adj_rec.invoiced_flag) THEN
1254 oe_debug_pub.add(' Error invoiced flag');
1255 x_return_status := FND_API.G_RET_STS_ERROR;
1256 END IF;
1257 END IF;
1258 if OE_GLOBALS.g_validate_desc_flex ='Y' then --bug4343612
1259 oe_debug_pub.add('Validation of desc flex is set to Y in OE_Validate_Line_Adj.attributes ',1);
1260 IF (p_Line_Adj_rec.context IS NOT NULL AND
1261 ( p_Line_Adj_rec.context <>
1262 p_old_Line_Adj_rec.context OR
1263 p_old_Line_Adj_rec.context IS NULL ))
1264 OR (p_Line_Adj_rec.attribute1 IS NOT NULL AND
1265 ( p_Line_Adj_rec.attribute1 <>
1266 p_old_Line_Adj_rec.attribute1 OR
1267 p_old_Line_Adj_rec.attribute1 IS NULL ))
1268 OR (p_Line_Adj_rec.attribute2 IS NOT NULL AND
1269 ( p_Line_Adj_rec.attribute2 <>
1270 p_old_Line_Adj_rec.attribute2 OR
1271 p_old_Line_Adj_rec.attribute2 IS NULL ))
1272 OR (p_Line_Adj_rec.attribute3 IS NOT NULL AND
1273 ( p_Line_Adj_rec.attribute3 <>
1274 p_old_Line_Adj_rec.attribute3 OR
1275 p_old_Line_Adj_rec.attribute3 IS NULL ))
1276 OR (p_Line_Adj_rec.attribute4 IS NOT NULL AND
1277 ( p_Line_Adj_rec.attribute4 <>
1278 p_old_Line_Adj_rec.attribute4 OR
1279 p_old_Line_Adj_rec.attribute4 IS NULL ))
1280 OR (p_Line_Adj_rec.attribute5 IS NOT NULL AND
1281 ( p_Line_Adj_rec.attribute5 <>
1282 p_old_Line_Adj_rec.attribute5 OR
1283 p_old_Line_Adj_rec.attribute5 IS NULL ))
1284 OR (p_Line_Adj_rec.attribute6 IS NOT NULL AND
1285 ( p_Line_Adj_rec.attribute6 <>
1286 p_old_Line_Adj_rec.attribute6 OR
1287 p_old_Line_Adj_rec.attribute6 IS NULL ))
1288 OR (p_Line_Adj_rec.attribute7 IS NOT NULL AND
1289 ( p_Line_Adj_rec.attribute7 <>
1290 p_old_Line_Adj_rec.attribute7 OR
1291 p_old_Line_Adj_rec.attribute7 IS NULL ))
1292 OR (p_Line_Adj_rec.attribute8 IS NOT NULL AND
1293 ( p_Line_Adj_rec.attribute8 <>
1294 p_old_Line_Adj_rec.attribute8 OR
1295 p_old_Line_Adj_rec.attribute8 IS NULL ))
1296 OR (p_Line_Adj_rec.attribute9 IS NOT NULL AND
1297 ( p_Line_Adj_rec.attribute9 <>
1298 p_old_Line_Adj_rec.attribute9 OR
1299 p_old_Line_Adj_rec.attribute9 IS NULL ))
1300 OR (p_Line_Adj_rec.attribute10 IS NOT NULL AND
1301 ( p_Line_Adj_rec.attribute10 <>
1302 p_old_Line_Adj_rec.attribute10 OR
1303 p_old_Line_Adj_rec.attribute10 IS NULL ))
1304 OR (p_Line_Adj_rec.attribute11 IS NOT NULL AND
1305 ( p_Line_Adj_rec.attribute11 <>
1306 p_old_Line_Adj_rec.attribute11 OR
1307 p_old_Line_Adj_rec.attribute11 IS NULL ))
1308 OR (p_Line_Adj_rec.attribute12 IS NOT NULL AND
1309 ( p_Line_Adj_rec.attribute12 <>
1310 p_old_Line_Adj_rec.attribute12 OR
1311 p_old_Line_Adj_rec.attribute12 IS NULL ))
1312 OR (p_Line_Adj_rec.attribute13 IS NOT NULL AND
1313 ( p_Line_Adj_rec.attribute13 <>
1314 p_old_Line_Adj_rec.attribute13 OR
1315 p_old_Line_Adj_rec.attribute13 IS NULL ))
1316 OR (p_Line_Adj_rec.attribute14 IS NOT NULL AND
1317 ( p_Line_Adj_rec.attribute14 <>
1318 p_old_Line_Adj_rec.attribute14 OR
1319 p_old_Line_Adj_rec.attribute14 IS NULL ))
1320 OR (p_Line_Adj_rec.attribute15 IS NOT NULL AND
1321 ( p_Line_Adj_rec.attribute15 <>
1322 p_old_Line_Adj_rec.attribute15 OR
1323 p_old_Line_Adj_rec.attribute15 IS NULL ))
1324 THEN
1325
1326 oe_debug_pub.add('Before calling Line Adjustment Price_Adj_Desc_Flex');
1327 IF NOT OE_VALIDATE_adj.Price_Adj_Desc_Flex
1328 (p_context => p_Line_Adj_rec.context
1329 ,p_attribute1 => p_Line_Adj_rec.attribute1
1330 ,p_attribute2 => p_Line_Adj_rec.attribute2
1331 ,p_attribute3 => p_Line_Adj_rec.attribute3
1332 ,p_attribute4 => p_Line_Adj_rec.attribute4
1333 ,p_attribute5 => p_Line_Adj_rec.attribute5
1334 ,p_attribute6 => p_Line_Adj_rec.attribute6
1335 ,p_attribute7 => p_Line_Adj_rec.attribute7
1336 ,p_attribute8 => p_Line_Adj_rec.attribute8
1337 ,p_attribute9 => p_Line_Adj_rec.attribute9
1338 ,p_attribute10 => p_Line_Adj_rec.attribute10
1339 ,p_attribute11 => p_Line_Adj_rec.attribute11
1340 ,p_attribute12 => p_Line_Adj_rec.attribute12
1341 ,p_attribute13 => p_Line_Adj_rec.attribute13
1342 ,p_attribute14 => p_Line_Adj_rec.attribute14
1343 ,p_attribute15 => p_Line_Adj_rec.attribute15) THEN
1344
1345
1346 x_return_status := FND_API.G_RET_STS_ERROR;
1347
1348 END IF;
1349
1350 oe_debug_pub.add('After Line Adjustment desc_flex ' || x_return_status);
1351
1352
1353
1354 END IF;
1355 oe_debug_pub.add('Leaving OE_VALIDATE_LINE_ADJ.ATTRIBUTES without errors');
1356 -- Done validating attributes
1357 end if ; /* if OE_GLOBALS.g_validate_desc_flex ='Y' then bug4343612 */
1358 EXCEPTION
1359
1360 WHEN FND_API.G_EXC_ERROR THEN
1361
1362 x_return_status := FND_API.G_RET_STS_ERROR;
1363
1364 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1365
1366 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1367
1368 WHEN OTHERS THEN
1369
1370 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1371
1372 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1373 THEN
1374 OE_MSG_PUB.Add_Exc_Msg
1375 ( G_PKG_NAME
1376 , 'Attributes'
1377 );
1378 END IF;
1379
1380 END Attributes;
1381
1382 -- Procedure Entity_Delete
1383
1384 PROCEDURE Entity_Delete
1385 ( x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1386 , p_Line_Adj_rec IN OE_Order_PUB.Line_Adj_Rec_Type
1387 )
1388 IS
1389 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
1390 BEGIN
1391
1392 -- Validate entity delete.
1393
1394 NULL;
1395
1396 -- Done.
1397
1398 x_return_status := l_return_status;
1399
1400 EXCEPTION
1401
1402 WHEN FND_API.G_EXC_ERROR THEN
1403
1404 x_return_status := FND_API.G_RET_STS_ERROR;
1405
1406 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1407
1408 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1409
1410 WHEN OTHERS THEN
1411
1412 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1413
1414 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1415 THEN
1416 OE_MSG_PUB.Add_Exc_Msg
1417 ( G_PKG_NAME
1418 , 'Entity_Delete'
1419 );
1420 END IF;
1421
1422 END Entity_Delete;
1423
1424 END OE_Validate_Line_Adj;