DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_VALIDATE_HEADER_SCREDIT

Source


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