DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_VALIDATE_LINE_ADJ

Source


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;