DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_VALIDATE_LINE_SCREDIT

Source


1 PACKAGE BODY OE_Validate_Line_Scredit AS
2 /* $Header: OEXLLSCB.pls 120.1 2005/12/29 04:32:41 ppnair noship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'OE_Validate_Line_Scredit';
7 
8 Function Duplicate_Salescredit
9 (p_salesrep_id          IN Number
10 ,p_sales_credit_type_id IN NUMBER
11 ,p_line_id              IN NUMBER
12 ,p_sales_credit_id      IN NUMBER
13 ) RETURN BOOLEAN IS
14 Cursor C_Dup_Salescredit(p_salesrep_id          NUMBER
15                         ,p_sales_credit_type_id NUMBER
16                         ,p_line_id              NUMBER
17                         ,p_sales_credit_id      NUMBER) IS
18     SELECT 'DUPLICATE'
19     FROM  oe_sales_credits
20     WHERE line_id = p_line_id
21     AND   salesrep_id = p_salesrep_id
22     AND   sales_credit_type_id  = p_sales_credit_type_id
23     AND   sales_credit_id <> nvl(p_sales_credit_id,-5);
24 l_dummy varchar2(30);
25 BEGIN
26   OE_DEBUG_PUB.Add('Entering OE_VALIDATE_LINE_SCREDIT.Duplicate_Salescredit',1);
27   OPEN C_Dup_Salescredit(p_salesrep_id
28                         ,p_sales_credit_type_id
29                         ,p_line_id
30                         ,p_sales_credit_id);
31   FETCH C_Dup_Salescredit INTO l_dummy;
32   CLOSE C_Dup_Salescredit;
33   IF l_dummy =  'DUPLICATE' THEN
34         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
35         THEN
36 
37             FND_MESSAGE.SET_NAME('ONT','OE_VAL_DUP_LINE_CREDIT');
38             oe_msg_pub.add;
39 
40         END IF;
41       OE_DEBUG_PUB.Add('Exiting OE_VALIDATE_LINE_SCREDIT.Duplicate_Salescredit',1);
42       Return TRUE;
43   ELSE
44       OE_DEBUG_PUB.Add('Exiting OE_VALIDATE_LINE_SCREDIT.Duplicate_Salescredit',1);
45      Return FALSE;
46   END IF;
47 END Duplicate_Salescredit;
48 
49 -- Procedure to validate quota percent total
50 
51 Procedure Validate_LSC_QUOTA_TOTAL
52   ( x_return_status OUT NOCOPY /* file.sql.39 change */ Varchar2
53   , p_line_id       IN NUMBER
54   ) IS
55 l_percent_total Number;
56 -- FP bug 3872166
57 l_line_no varchar2(30);
58 Cursor C_LSC_Quota_Total(p_line_id number) IS
59    SELECT sum(Percent) Per_total
60    FROM   oe_sales_credits sc,
61 	     oe_sales_credit_types sct
62    WHERE  line_id = p_line_id
63    AND    sc.sales_credit_type_id = sct.sales_credit_type_id
64    AND    sct.quota_flag = 'Y';
65 
66 BEGIN
67    OE_DEBUG_PUB.Add('Entering OE_VALIDATE_LINE_SCREDIT.Validate_LSC_QUOTA_TOTAL',1);
68    x_return_status := FND_API.G_RET_STS_SUCCESS;
69    OPEN C_LSC_Quota_Total(p_line_id);
70    FETCH C_LSC_Quota_Total
71    INTO  l_percent_total;
72    CLOSE C_LSC_Quota_Total;
73 
74    --FP bug 3872166 start
75    IF l_percent_total = 0 THEN
76        l_line_no := OE_ORDER_MISC_PUB.Get_Concat_Line_Number(p_line_id);
77        FND_MESSAGE.SET_NAME('ONT','ONT_ZERO_PERCENT_LINE_CREDITS');
78        FND_MESSAGE.SET_TOKEN('LINE_NO',l_line_no);
79        oe_msg_pub.add;
80    --FP bug 3872166 end
81    ELSIF l_percent_total <> 100 THEN
82        FND_MESSAGE.SET_NAME('ONT','OE_VAL_TTL_LINE_CREDIT');
83        FND_MESSAGE.SET_TOKEN('TOTAL',to_char(l_percent_total));
84        oe_msg_pub.add;
85        x_return_status := FND_API.G_RET_STS_ERROR;
86    END IF;
87    OE_DEBUG_PUB.Add('Exiting OE_VALIDATE_LINE_SCREDIT.Validate_LSC_QUOTA_TOTAL',1);
88 EXCEPTION
89 
90     WHEN FND_API.G_EXC_ERROR THEN
91 
92         x_return_status := FND_API.G_RET_STS_ERROR;
93 
94     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
95 
96         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
97 
98     WHEN OTHERS THEN
99 
100         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
101 
102         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
103         THEN
104             oe_msg_pub.add_Exc_Msg
105             (   G_PKG_NAME
106             ,   'Validate_LSC_QUOTA_TOTAL'
107 );
108         END IF;
109 END Validate_LSC_QUOTA_TOTAL;
110 
111 --  Procedure Entity
112 
113 PROCEDURE Entity
114 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
115 ,   p_Line_Scredit_rec              IN  OE_Order_PUB.Line_Scredit_Rec_Type
116 ,   p_old_Line_Scredit_rec          IN  OE_Order_PUB.Line_Scredit_Rec_Type :=
117                                         OE_Order_PUB.G_MISS_LINE_SCREDIT_REC
118 )
119 IS
120 l_return_status               VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
121 
122 --bug 3275243
123 l_ar_decimal_limit CONSTANT NUMBER:=4;
124 BEGIN
125    OE_DEBUG_PUB.Add('Entering OE_VALIDATE_LINE_SCREDIT.Entity',1);
126 
127     --  Check required attributes.
128 
129     IF  p_Line_Scredit_rec.sales_credit_id IS NULL
130     THEN
131 		oe_debug_pub.add('Validate Entity - 1',1);
132 
133         l_return_status := FND_API.G_RET_STS_ERROR;
134 
135         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
136         THEN
137 
138             FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
139 	    FND_MESSAGE.SET_TOKEN('ATTRIBUTE',OE_Order_Util.Get_Attribute_Name('SALES_CREDIT_ID'));
140 
141             oe_msg_pub.add;
142 
143         END IF;
144 
145     END IF;
146 
147     IF  p_Line_Scredit_rec.sales_credit_type_id IS NULL
148     THEN
149 		oe_debug_pub.add('Validate Entity - 1',1);
150 
151         l_return_status := FND_API.G_RET_STS_ERROR;
152 
153         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
154         THEN
155 	   IF  p_line_Scredit_rec.salesrep_id IS NULL THEN
156                 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
157                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',OE_Order_Util.Get_Attribute_Name('SALESREP_ID'));
158                 oe_msg_pub.Add;
159 	    END IF;
160 
161             FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
162 	    FND_MESSAGE.SET_TOKEN('ATTRIBUTE',OE_Order_Util.Get_Attribute_Name('SALES_CREDIT_TYPE_ID'));
163 
164             oe_msg_pub.add;
165 
166         END IF;
167 
168     END IF;
169     --
170     --  Check rest of required attributes here.
171     --
172     IF  p_line_Scredit_rec.HEADER_ID IS NULL
173     THEN
174 		oe_debug_pub.add('Validate Entity - 2',1);
175 
176         l_return_status := FND_API.G_RET_STS_ERROR;
177 
178         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
179         THEN
180 
181             FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
182             FND_MESSAGE.SET_TOKEN('ATTRIBUTE',OE_Order_Util.Get_Attribute_Name('HEADER'));
183             oe_msg_pub.add;
184 
185         END IF;
186 
187     END IF;
188 
189     IF  p_line_Scredit_rec.line_id IS NULL
190     THEN
191 		oe_debug_pub.add('Validate Entity - 3',1);
192 
193         l_return_status := FND_API.G_RET_STS_ERROR;
194 
195         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
196         THEN
197 
198             FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
199             FND_MESSAGE.SET_TOKEN('ATTRIBUTE',OE_Order_Util.Get_Attribute_Name('LINE'));
200             oe_msg_pub.add;
201 
202         END IF;
203 
204     END IF;
205 
206 
207     IF  p_line_Scredit_rec.PERCENT IS NULL
208     THEN
209 		oe_debug_pub.add('Validate Entity - 5',1);
210 
211         l_return_status := FND_API.G_RET_STS_ERROR;
212 
213           IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
214            THEN
215 
216             FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
217             FND_MESSAGE.SET_TOKEN('ATTRIBUTE',OE_Order_Util.Get_Attribute_Name('PERCENT'));
218             oe_msg_pub.add;
219 
220           END IF;
221     ElsIf  p_line_Scredit_rec.PERCENT <> FND_API.G_MISS_NUM THEN
222          IF length(p_line_scredit_rec.percent- trunc(p_line_Scredit_rec.PERCENT))- 1 > l_ar_decimal_limit THEN
223 	    oe_debug_pub.add('In OE_Validate_Header_Scredit.entity:Error:percentage more than 4, AR allowes max 4');
224 	    oe_debug_pub.add('  Header id:'||p_line_scredit_rec.header_id);
225 
226 	    IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
227               FND_MESSAGE.SET_NAME('ONT','ONT_PERCENTAGE_FORMAT');
228               FND_MESSAGE.SET_TOKEN('ATTRIBUTE','PERCENT');
229               oe_msg_pub.Add;
230             END IF;
231 
232 	    l_return_status := FND_API.G_RET_STS_ERROR;
233 	 END IF;
234     END IF;
235 
236 
237 
238     --  Return Error if a required attribute is missing.
239 
240     IF l_return_status = FND_API.G_RET_STS_ERROR THEN
241 
242         RAISE FND_API.G_EXC_ERROR;
243 
244     END IF;
245 
246     --
247     --  Check conditionally required attributes here.
248     --
249 
250 
251     --
252     --  Validate attribute dependencies here.
253     --
254      IF Duplicate_Salescredit
255            (p_salesrep_id=>p_Line_Scredit_rec.salesrep_id
256            ,p_sales_credit_type_id=>p_Line_Scredit_rec.sales_credit_type_id
257            ,p_line_id=>p_Line_Scredit_rec.line_id
258            ,p_sales_credit_id=>p_Line_Scredit_rec.sales_credit_id)
259       THEN
260 		oe_debug_pub.add('Validate Entity - 6',1);
261         l_return_status := FND_API.G_RET_STS_ERROR;
262       END IF;
263 
264        IF l_return_status = FND_API.G_RET_STS_ERROR THEN
265         RAISE FND_API.G_EXC_ERROR;
266       end if;
267 
268 
269     --  Done validating entity
270 
271     x_return_status := l_return_status;
272    OE_DEBUG_PUB.Add('Exiting OE_VALIDATE_LINE_SCREDIT.Entity',1);
273 
274 EXCEPTION
275 
276     WHEN FND_API.G_EXC_ERROR THEN
277 
278         x_return_status := FND_API.G_RET_STS_ERROR;
279 
280     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
281 
282         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
283 
284     WHEN OTHERS THEN
285 
286         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
287 
288         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
289         THEN
290             oe_msg_pub.add_Exc_Msg
291             (   G_PKG_NAME
292             ,   'Entity'
293             );
294         END IF;
295 
296 END Entity;
297 
298 --  Procedure Attributes
299 
300 /* changed p_Line_Scredit_rec in the following procedure to IN OUT NOCPY to fix the bug 3006018 */
301 
302 PROCEDURE Attributes
303 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
304 ,   p_Line_Scredit_rec              IN OUT NOCOPY OE_Order_PUB.Line_Scredit_Rec_Type
305 ,   p_old_Line_Scredit_rec          IN  OE_Order_PUB.Line_Scredit_Rec_Type :=
306                                         OE_Order_PUB.G_MISS_LINE_SCREDIT_REC
307 )
308 IS
309 BEGIN
310    OE_DEBUG_PUB.Add('Entering OE_VALIDATE_LINE_SCREDIT.Attributes',1);
311 
312     x_return_status := FND_API.G_RET_STS_SUCCESS;
313 
314     --  Validate Line_Scredit attributes
315 
316     IF  p_Line_Scredit_rec.created_by IS NOT NULL AND
317         (   p_Line_Scredit_rec.created_by <>
318             p_old_Line_Scredit_rec.created_by OR
319             p_old_Line_Scredit_rec.created_by IS NULL )
320     THEN
321         IF NOT OE_Validate.Created_By(p_Line_Scredit_rec.created_by) THEN
322             x_return_status := FND_API.G_RET_STS_ERROR;
323         END IF;
324     END IF;
325 
326     IF  p_Line_Scredit_rec.creation_date IS NOT NULL AND
327         (   p_Line_Scredit_rec.creation_date <>
328             p_old_Line_Scredit_rec.creation_date OR
329             p_old_Line_Scredit_rec.creation_date IS NULL )
330     THEN
331         IF NOT OE_Validate.Creation_Date(p_Line_Scredit_rec.creation_date) THEN
332             x_return_status := FND_API.G_RET_STS_ERROR;
333         END IF;
334     END IF;
335 
336     IF  p_Line_Scredit_rec.dw_update_advice_flag IS NOT NULL AND
337         (   p_Line_Scredit_rec.dw_update_advice_flag <>
338             p_old_Line_Scredit_rec.dw_update_advice_flag OR
339             p_old_Line_Scredit_rec.dw_update_advice_flag IS NULL )
340     THEN
341         IF NOT OE_Validate.Dw_Update_Advice(p_Line_Scredit_rec.dw_update_advice_flag) THEN
342             x_return_status := FND_API.G_RET_STS_ERROR;
343         END IF;
344     END IF;
345 
346     IF  p_Line_Scredit_rec.header_id IS NOT NULL AND
347         (   p_Line_Scredit_rec.header_id <>
348             p_old_Line_Scredit_rec.header_id OR
349             p_old_Line_Scredit_rec.header_id IS NULL )
350     THEN
351         IF NOT OE_Validate.Header(p_Line_Scredit_rec.header_id) THEN
352             x_return_status := FND_API.G_RET_STS_ERROR;
353         END IF;
354     END IF;
355 
356     IF  p_Line_Scredit_rec.last_updated_by IS NOT NULL AND
357         (   p_Line_Scredit_rec.last_updated_by <>
358             p_old_Line_Scredit_rec.last_updated_by OR
359             p_old_Line_Scredit_rec.last_updated_by IS NULL )
360     THEN
361         IF NOT OE_Validate.Last_Updated_By(p_Line_Scredit_rec.last_updated_by) THEN
362             x_return_status := FND_API.G_RET_STS_ERROR;
363         END IF;
364     END IF;
365 
366     IF  p_Line_Scredit_rec.last_update_date IS NOT NULL AND
367         (   p_Line_Scredit_rec.last_update_date <>
368             p_old_Line_Scredit_rec.last_update_date OR
369             p_old_Line_Scredit_rec.last_update_date IS NULL )
370     THEN
371         IF NOT OE_Validate.Last_Update_Date(p_Line_Scredit_rec.last_update_date) THEN
372             x_return_status := FND_API.G_RET_STS_ERROR;
373         END IF;
374     END IF;
375 
376     IF  p_Line_Scredit_rec.last_update_login IS NOT NULL AND
377         (   p_Line_Scredit_rec.last_update_login <>
378             p_old_Line_Scredit_rec.last_update_login OR
379             p_old_Line_Scredit_rec.last_update_login IS NULL )
380     THEN
381         IF NOT OE_Validate.Last_Update_Login(p_Line_Scredit_rec.last_update_login) THEN
382             x_return_status := FND_API.G_RET_STS_ERROR;
383         END IF;
384     END IF;
385 
386     IF  p_Line_Scredit_rec.line_id IS NOT NULL AND
387         (   p_Line_Scredit_rec.line_id <>
388             p_old_Line_Scredit_rec.line_id OR
389             p_old_Line_Scredit_rec.line_id IS NULL )
390     THEN
391         IF NOT OE_Validate.Line(p_Line_Scredit_rec.line_id) THEN
392             x_return_status := FND_API.G_RET_STS_ERROR;
393         END IF;
394     END IF;
395 
396     IF  p_Line_Scredit_rec.percent IS NOT NULL AND
397         (   p_Line_Scredit_rec.percent <>
398             p_old_Line_Scredit_rec.percent OR
399             p_old_Line_Scredit_rec.percent IS NULL )
400     THEN
401         IF NOT OE_Validate.Percent(p_Line_Scredit_rec.percent) THEN
402             x_return_status := FND_API.G_RET_STS_ERROR;
403         END IF;
404     END IF;
405 
406 
407     IF  p_Line_Scredit_rec.salesrep_id IS NOT NULL AND
408         (   p_Line_Scredit_rec.salesrep_id <>
409             p_old_Line_Scredit_rec.salesrep_id OR
410             p_old_Line_Scredit_rec.salesrep_id IS NULL )
411     THEN
412         IF NOT OE_Validate.Salesrep(p_Line_Scredit_rec.salesrep_id) THEN
413             x_return_status := FND_API.G_RET_STS_ERROR;
414         END IF;
415     END IF;
416 
417     IF  p_Line_Scredit_rec.sales_credit_id IS NOT NULL AND
418         (   p_Line_Scredit_rec.sales_credit_id <>
419             p_old_Line_Scredit_rec.sales_credit_id OR
420             p_old_Line_Scredit_rec.sales_credit_id IS NULL )
421     THEN
422         IF NOT OE_Validate.Sales_Credit(p_Line_Scredit_rec.sales_credit_id) THEN
423             x_return_status := FND_API.G_RET_STS_ERROR;
424         END IF;
425     END IF;
426 
427     IF  p_Line_Scredit_rec.wh_update_date IS NOT NULL AND
428         (   p_Line_Scredit_rec.wh_update_date <>
429             p_old_Line_Scredit_rec.wh_update_date OR
430             p_old_Line_Scredit_rec.wh_update_date IS NULL )
431     THEN
432         IF NOT OE_Validate.Wh_Update_Date(p_Line_Scredit_rec.wh_update_date) THEN
433             x_return_status := FND_API.G_RET_STS_ERROR;
434         END IF;
435     END IF;
436     if OE_GLOBALS.g_validate_desc_flex ='Y' then --bug 4343612
437      oe_debug_pub.add('Validation of desc flex is set to Y in OE_Validate_Line_Scredit.attributes ',1);
438     IF  (p_Line_Scredit_rec.attribute1 IS NOT NULL AND
439         (   p_Line_Scredit_rec.attribute1 <>
440             p_old_Line_Scredit_rec.attribute1 OR
441             p_old_Line_Scredit_rec.attribute1 IS NULL ))
442     OR  (p_Line_Scredit_rec.attribute10 IS NOT NULL AND
443         (   p_Line_Scredit_rec.attribute10 <>
444             p_old_Line_Scredit_rec.attribute10 OR
445             p_old_Line_Scredit_rec.attribute10 IS NULL ))
446     OR  (p_Line_Scredit_rec.attribute11 IS NOT NULL AND
447         (   p_Line_Scredit_rec.attribute11 <>
448             p_old_Line_Scredit_rec.attribute11 OR
449             p_old_Line_Scredit_rec.attribute11 IS NULL ))
450     OR  (p_Line_Scredit_rec.attribute12 IS NOT NULL AND
451         (   p_Line_Scredit_rec.attribute12 <>
452             p_old_Line_Scredit_rec.attribute12 OR
453             p_old_Line_Scredit_rec.attribute12 IS NULL ))
454     OR  (p_Line_Scredit_rec.attribute13 IS NOT NULL AND
455         (   p_Line_Scredit_rec.attribute13 <>
456             p_old_Line_Scredit_rec.attribute13 OR
457             p_old_Line_Scredit_rec.attribute13 IS NULL ))
458     OR  (p_Line_Scredit_rec.attribute14 IS NOT NULL AND
459         (   p_Line_Scredit_rec.attribute14 <>
460             p_old_Line_Scredit_rec.attribute14 OR
461             p_old_Line_Scredit_rec.attribute14 IS NULL ))
462     OR  (p_Line_Scredit_rec.attribute15 IS NOT NULL AND
463         (   p_Line_Scredit_rec.attribute15 <>
464             p_old_Line_Scredit_rec.attribute15 OR
465             p_old_Line_Scredit_rec.attribute15 IS NULL ))
466     OR  (p_Line_Scredit_rec.attribute2 IS NOT NULL AND
467         (   p_Line_Scredit_rec.attribute2 <>
468             p_old_Line_Scredit_rec.attribute2 OR
469             p_old_Line_Scredit_rec.attribute2 IS NULL ))
470     OR  (p_Line_Scredit_rec.attribute3 IS NOT NULL AND
471         (   p_Line_Scredit_rec.attribute3 <>
472             p_old_Line_Scredit_rec.attribute3 OR
473             p_old_Line_Scredit_rec.attribute3 IS NULL ))
474     OR  (p_Line_Scredit_rec.attribute4 IS NOT NULL AND
475         (   p_Line_Scredit_rec.attribute4 <>
476             p_old_Line_Scredit_rec.attribute4 OR
477             p_old_Line_Scredit_rec.attribute4 IS NULL ))
478     OR  (p_Line_Scredit_rec.attribute5 IS NOT NULL AND
479         (   p_Line_Scredit_rec.attribute5 <>
480             p_old_Line_Scredit_rec.attribute5 OR
481             p_old_Line_Scredit_rec.attribute5 IS NULL ))
482     OR  (p_Line_Scredit_rec.attribute6 IS NOT NULL AND
483         (   p_Line_Scredit_rec.attribute6 <>
484             p_old_Line_Scredit_rec.attribute6 OR
485             p_old_Line_Scredit_rec.attribute6 IS NULL ))
486     OR  (p_Line_Scredit_rec.attribute7 IS NOT NULL AND
487         (   p_Line_Scredit_rec.attribute7 <>
488             p_old_Line_Scredit_rec.attribute7 OR
489             p_old_Line_Scredit_rec.attribute7 IS NULL ))
490     OR  (p_Line_Scredit_rec.attribute8 IS NOT NULL AND
491         (   p_Line_Scredit_rec.attribute8 <>
492             p_old_Line_Scredit_rec.attribute8 OR
493             p_old_Line_Scredit_rec.attribute8 IS NULL ))
494     OR  (p_Line_Scredit_rec.attribute9 IS NOT NULL AND
495         (   p_Line_Scredit_rec.attribute9 <>
496             p_old_Line_Scredit_rec.attribute9 OR
497             p_old_Line_Scredit_rec.attribute9 IS NULL ))
498     OR  (p_Line_Scredit_rec.context IS NOT NULL AND
499         (   p_Line_Scredit_rec.context <>
500             p_old_Line_Scredit_rec.context OR
501             p_old_Line_Scredit_rec.context IS NULL ))
502     THEN
503 
504 
505          oe_debug_pub.add('Before calling Line Sales_Credits_Desc_Flex',2);
506          IF NOT OE_VALIDATE.Sales_Credits_Desc_Flex
507           (p_context            => p_Line_Scredit_rec.context
508           ,p_attribute1         => p_Line_Scredit_rec.attribute1
509           ,p_attribute2         => p_Line_Scredit_rec.attribute2
510           ,p_attribute3         => p_Line_Scredit_rec.attribute3
511           ,p_attribute4         => p_Line_Scredit_rec.attribute4
512           ,p_attribute5         => p_Line_Scredit_rec.attribute5
513           ,p_attribute6         => p_Line_Scredit_rec.attribute6
514           ,p_attribute7         => p_Line_Scredit_rec.attribute7
515           ,p_attribute8         => p_Line_Scredit_rec.attribute8
516           ,p_attribute9         => p_Line_Scredit_rec.attribute9
517           ,p_attribute10        => p_Line_Scredit_rec.attribute10
518           ,p_attribute11        => p_Line_Scredit_rec.attribute11
519           ,p_attribute12        => p_Line_Scredit_rec.attribute12
520           ,p_attribute13        => p_Line_Scredit_rec.attribute13
521           ,p_attribute14        => p_Line_Scredit_rec.attribute14
522           ,p_attribute15        => p_Line_Scredit_rec.attribute15) THEN
523 
524            x_return_status := FND_API.G_RET_STS_ERROR;
525 
526 /* Added the following code to fix the bug 3006018 */
527 
528           ELSE
529               IF p_line_scredit_rec.context IS NULL
530               OR p_line_scredit_rec.context = FND_API.G_MISS_CHAR THEN
531                p_line_scredit_rec.context    := oe_validate.g_context;
532             END IF;
533 
534             IF p_line_scredit_rec.attribute1 IS NULL
535               OR p_line_scredit_rec.attribute1 = FND_API.G_MISS_CHAR THEN
536                p_line_scredit_rec.attribute1 := oe_validate.g_attribute1;
537             END IF;
538 
539             IF p_line_scredit_rec.attribute2 IS NULL
540               OR p_line_scredit_rec.attribute2 = FND_API.G_MISS_CHAR THEN
541                p_line_scredit_rec.attribute2 := oe_validate.g_attribute2;
542             END IF;
543 
544             IF p_line_scredit_rec.attribute3 IS NULL
545               OR p_line_scredit_rec.attribute3 = FND_API.G_MISS_CHAR THEN
546                p_line_scredit_rec.attribute3 := oe_validate.g_attribute3;
547             END IF;
548 
549             IF p_line_scredit_rec.attribute4 IS NULL
550               OR p_line_scredit_rec.attribute4 = FND_API.G_MISS_CHAR THEN
551                p_line_scredit_rec.attribute4 := oe_validate.g_attribute4;
552             END IF;
553 
554             IF p_line_scredit_rec.attribute5 IS NULL
555               OR p_line_scredit_rec.attribute5 = FND_API.G_MISS_CHAR THEN
556                p_line_scredit_rec.attribute5 := oe_validate.g_attribute5;
557             END IF;
558 
559             IF p_line_scredit_rec.attribute6 IS NULL
560               OR p_line_scredit_rec.attribute6 = FND_API.G_MISS_CHAR THEN
561                p_line_scredit_rec.attribute6 := oe_validate.g_attribute6;
562             END IF;
563 
564             IF p_line_scredit_rec.attribute7 IS NULL
565               OR p_line_scredit_rec.attribute7 = FND_API.G_MISS_CHAR THEN
566                p_line_scredit_rec.attribute7 := oe_validate.g_attribute7;
567             END IF;
568 
569             IF p_line_scredit_rec.attribute8 IS NULL
570               OR p_line_scredit_rec.attribute8 = FND_API.G_MISS_CHAR THEN
571                p_line_scredit_rec.attribute8 := oe_validate.g_attribute8;
572             END IF;
573 
574             IF p_line_scredit_rec.attribute9 IS NULL
575               OR p_line_scredit_rec.attribute9 = FND_API.G_MISS_CHAR THEN
576                p_line_scredit_rec.attribute9 := oe_validate.g_attribute9;
577             END IF;
578 
579             IF p_line_scredit_rec.attribute10 IS NULL
580               OR p_line_scredit_rec.attribute10 = FND_API.G_MISS_CHAR THEN
581                p_line_scredit_rec.attribute10 := oe_validate.g_attribute10;
582             END IF;
583 
584             IF p_line_scredit_rec.attribute11 IS NULL
585               OR p_line_scredit_rec.attribute11 = FND_API.G_MISS_CHAR THEN
586                p_line_scredit_rec.attribute11 := oe_validate.g_attribute11;
587             END IF;
588 
589             IF p_line_scredit_rec.attribute12 IS NULL
590               OR p_line_scredit_rec.attribute12 = FND_API.G_MISS_CHAR THEN
591                p_line_scredit_rec.attribute12 := oe_validate.g_attribute12;
592             END IF;
593 
594             IF p_line_scredit_rec.attribute13 IS NULL
595               OR p_line_scredit_rec.attribute13 = FND_API.G_MISS_CHAR THEN
596                p_line_scredit_rec.attribute13 := oe_validate.g_attribute13;
597             END IF;
598 
599             IF p_line_scredit_rec.attribute14 IS NULL
600               OR p_line_scredit_rec.attribute14 = FND_API.G_MISS_CHAR THEN
601                p_line_scredit_rec.attribute14 := oe_validate.g_attribute14;
602             END IF;
603 
604             IF p_line_scredit_rec.attribute15 IS NULL
605               OR p_line_scredit_rec.attribute15 = FND_API.G_MISS_CHAR THEN
606                p_line_scredit_rec.attribute15 := oe_validate.g_attribute15;
607             END IF;
608 
609 /* End of the code added to fix the bug 3006018 */
610 
611          END IF;
612          oe_debug_pub.add('After Line Sales_Credits_Desc_Flex  ' || x_return_status,2);
613 
614     END IF;
615 
616    OE_DEBUG_PUB.Add('Exiting OE_VALIDATE_LINE_SCREDIT.Attributes',1);
617     --  Done validating attributes
618     end if ; /*if OE_GLOBALS.g_validate_desc_flex ='Y' then bug 4343612*/
619 EXCEPTION
620 
621     WHEN FND_API.G_EXC_ERROR THEN
622 
623         x_return_status := FND_API.G_RET_STS_ERROR;
624 
625     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
626 
627         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
628 
629     WHEN OTHERS THEN
630 
631         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
632 
633         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
634         THEN
635             oe_msg_pub.add_Exc_Msg
636             (   G_PKG_NAME
637             ,   'Attributes'
638             );
639         END IF;
640 
641 END Attributes;
642 
643 --  Procedure Entity_Delete
644 
645 PROCEDURE Entity_Delete
646 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
647 ,   p_Line_Scredit_rec              IN  OE_Order_PUB.Line_Scredit_Rec_Type
648 )
649 IS
650 l_return_status               VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
651 l_request_rec                 OE_Order_PUB.request_rec_type;
652 BEGIN
653 
654     --  Validate entity delete.
655 
656    OE_DEBUG_PUB.Add('Entering OE_VALIDATE_LINE_SCREDIT.Entity_Delete',1);
657     NULL;
658         OE_Delayed_Requests_Pvt.Log_Request
659                (p_entity_code            =>OE_GLOBALS.G_ENTITY_Line_Scredit
660                ,p_entity_id              =>p_Line_Scredit_rec.sales_credit_id
661                ,p_requesting_entity_code =>OE_GLOBALS.G_ENTITY_Line_Scredit
662                ,p_requesting_entity_id   =>p_Line_Scredit_rec.sales_credit_id
663                ,p_request_type           =>OE_GLOBALS.G_CHECK_LSC_QUOTA_TOTAL
664                ,p_param1                 => to_char(p_Line_Scredit_rec.Line_id)
665                ,x_return_status          =>l_return_status);
666 
667         IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
668             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
669         ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
670             RAISE FND_API.G_EXC_ERROR;
671         END IF;
672 
673 
674 	-- Adding service sales credit delayed request
675 	-- Here we are executing the delayed request procedure which will
676 	-- cascade the sc delete.
677 
678        IF OE_GLOBALS.G_RECURSION_MODE <> 'Y' THEN
679         -- Preparing request_rec.
680          l_request_rec.entity_code  := OE_GLOBALS.G_ENTITY_line_Scredit;
681          l_request_rec.entity_id    := p_Line_Scredit_rec.sales_credit_id;
682          l_request_rec.request_type := OE_GLOBALS.G_CASCADE_SERVICE_SCREDIT;
683          l_request_rec.param8 := to_char(p_Line_Scredit_rec.Line_id);
684          l_request_rec.param1 := to_char(p_Line_Scredit_rec.salesrep_id);
685          l_request_rec.param2 := to_char(p_Line_Scredit_rec.salesrep_id);
686          l_request_rec.param3 := to_char(p_Line_Scredit_rec.Sales_credit_type_id);
687          l_request_rec.param4 := to_char(p_Line_Scredit_rec.Sales_credit_type_id);
688          l_request_rec.param5 := to_char(p_Line_Scredit_rec.percent);
689          l_request_rec.param6 := to_char(p_Line_Scredit_rec.percent);
690          l_request_rec.param7 := p_Line_Scredit_rec.operation;
691 
692 
693             OE_DELAYED_REQUESTS_UTIL.Cascade_Service_Scredit
694               ( x_return_status =>l_return_status
695                ,p_request_rec   =>l_request_rec);
696 
697         END IF;
698 
699         IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
700             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
701         ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
702             RAISE FND_API.G_EXC_ERROR;
703         END IF;
704 
705     --  Done.
706 
707    OE_DEBUG_PUB.Add('Exiting OE_VALIDATE_LINE_SCREDIT.Entity_Delete',1);
708     x_return_status := l_return_status;
709 
710 EXCEPTION
711 
712     WHEN FND_API.G_EXC_ERROR THEN
713 
714         x_return_status := FND_API.G_RET_STS_ERROR;
715 
716     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
717 
718         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
719 
720     WHEN OTHERS THEN
721 
722         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
723 
724         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
725         THEN
726             oe_msg_pub.add_Exc_Msg
727             (   G_PKG_NAME
728             ,   'Entity_Delete'
729             );
730         END IF;
731 
732 END Entity_Delete;
733 
734 END OE_Validate_Line_Scredit;