DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_VALIDATE_FORMULA

Source


1 PACKAGE BODY QP_Validate_Formula AS
2 /* $Header: QPXLPRFB.pls 120.1.12020000.2 2012/07/04 12:03:30 smbalara ship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'QP_Validate_Formula';
7 
8 --  Procedure Entity
9 
10 PROCEDURE Entity
11 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
12 ,   p_FORMULA_rec                   IN  QP_Price_Formula_PUB.Formula_Rec_Type
13 ,   p_old_FORMULA_rec               IN  QP_Price_Formula_PUB.Formula_Rec_Type :=
14                                         QP_Price_Formula_PUB.G_MISS_FORMULA_REC
15 )
16 IS
17 l_return_status               VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
18 l_count                       NUMBER := 0;
19 l_cursor                      INTEGER;
20 l_check_formula               VARCHAR2(1);                             --sfiresto
21 l_dummy_operand_tbl           QP_FORMULA_RULES_PVT.t_Operand_Tbl_Type; --sfiresto
22 l_dummy_number                NUMBER;                                  --sfiresto
23 L_MAINT_DYN_SRC_VER VARCHAR2(1) := NVL(Fnd_Profile.value('QP_MAINTAIN_DYNAMIC_SOURCE_VERSIONS'),'N'); -- 13638721
24 l_pkg_ver VARCHAR2(10);
25 BEGIN
26 
27 oe_debug_pub.add('Entering proc Entity in Formula Validation Pkg');
28     --  Check required attributes.
29 
30     IF  p_FORMULA_rec.price_formula_id IS NULL
31     THEN
32 
33         l_return_status := FND_API.G_RET_STS_ERROR;
34 
35         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
36         THEN
37 
38             FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
39             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','price_formula');
40             OE_MSG_PUB.Add;
41 
42         END IF;
43 
44     END IF;
45 
46     --
47     --  Check rest of required attributes here.
48     --
49 
50     IF  p_FORMULA_rec.name IS NULL
51     THEN
52 
53         l_return_status := FND_API.G_RET_STS_ERROR;
54 
55         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
56         THEN
57 
58             FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
59             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','name');
60             OE_MSG_PUB.Add;
61 
62         END IF;
63 
64     END IF;
65 
66     IF  p_FORMULA_rec.formula IS NULL
67     THEN
68 
69         l_return_status := FND_API.G_RET_STS_ERROR;
70 
71         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
72         THEN
73 
74             FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
75             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','formula');
76             OE_MSG_PUB.Add;
77 
78         END IF;
79 
80     END IF;
81 
82 
83     --  Return Error if a required attribute is missing.
84 
85     IF l_return_status = FND_API.G_RET_STS_ERROR THEN
86 
87         RAISE FND_API.G_EXC_ERROR;
88 
89     END IF;
90 
91     --  Give warning message that dynamic formula package generater must be run if it is a new Formula
92 
93     IF  (p_FORMULA_rec.operation = QP_GLOBALS.G_OPR_CREATE) or
94         (p_FORMULA_rec.operation = QP_GLOBALS.G_OPR_UPDATE)
95     THEN
96 
97       --sfiresto (Check dynamic formula package for formulas, not database)
98 
99   -- 13638721
100   oe_debug_pub.add('Maintain Dynamic pkgs profile is 1:'||L_MAINT_DYN_SRC_VER);
101   IF (L_MAINT_DYN_SRC_VER='N') THEN
102   QP_BUILD_FORMULA_RULES.Get_Formula_Values(p_FORMULA_rec.formula,
103                                             l_dummy_operand_tbl,
104                                             'S',               --sfiresto
105                                             l_dummy_number,
106                                             l_check_formula);
107   ELSE
108       BEGIN
109       SELECT SEEDED_VALUE INTO l_pkg_ver FROM qp_parameters_b WHERE PARAMETER_CODE='BLD_FORMULA_ACTV_VER' AND ROWNUM=1;
110        oe_debug_pub.add('2. found row in qp_params for code BLD_FORMULA_ACTV_VER pkg ver : ' || l_pkg_ver);
111       EXCEPTION
112       WHEN OTHERS THEN
113         l_pkg_ver:='0';
114        oe_debug_pub.add('2. when others row in qp_params for code BLD_FORMULA_ACTV_VER pkg ver: ' || l_pkg_ver);
115       END;
116         IF (l_pkg_ver='5') THEN
117 		  QP_BUILD_FORMULA_RULES5.Get_Formula_Values(p_FORMULA_rec.formula,
118 							    l_dummy_operand_tbl,
119 							    'S',
120 							    l_dummy_number,
121 							    l_check_formula);
122         ELSIF (l_pkg_ver='4') THEN
123 		  QP_BUILD_FORMULA_RULES4.Get_Formula_Values(p_FORMULA_rec.formula,
124 							    l_dummy_operand_tbl,
125 							    'S',
126 							    l_dummy_number,
127 							    l_check_formula);
128         ELSIF (l_pkg_ver='3') THEN
129 		  QP_BUILD_FORMULA_RULES3.Get_Formula_Values(p_FORMULA_rec.formula,
130 							    l_dummy_operand_tbl,
131 							    'S',
132 							    l_dummy_number,
133 							    l_check_formula);
134         ELSIF (l_pkg_ver='2') THEN
135 		  QP_BUILD_FORMULA_RULES2.Get_Formula_Values(p_FORMULA_rec.formula,
136 							    l_dummy_operand_tbl,
137 							    'S',
138 							    l_dummy_number,
139 							    l_check_formula);
140         ELSIF (l_pkg_ver='1') THEN
141 		  QP_BUILD_FORMULA_RULES1.Get_Formula_Values(p_FORMULA_rec.formula,
142 							    l_dummy_operand_tbl,
143 							    'S',
144 							    l_dummy_number,
145 							    l_check_formula);
146         ELSE
147 		  QP_BUILD_FORMULA_RULES.Get_Formula_Values(p_FORMULA_rec.formula,
148 							    l_dummy_operand_tbl,
149 							    'S',
150 							    l_dummy_number,
151 							    l_check_formula);
152         END IF;
153   END IF;
154   -- 13638721
155 
156       IF l_check_formula <> 'T' THEN
157         FND_MESSAGE.SET_NAME('QP', 'QP_BUILD_FORMULA_PACKAGE');
158         FND_MESSAGE.SET_TOKEN('PROGRAM_NAME', 'Build Formula Package');
159         OE_MSG_PUB.Add;
160       END IF;
161 
162     END IF;
163 
164     --
165     --  Check if Formula is a valid arithmetic expression
166     --
167 
168     BEGIN
169 
170     EXECUTE IMMEDIATE 'SELECT ' || p_FORMULA_rec.formula || ' FROM DUAL ';
171 				 --Raises an exception if expression not valid
172     EXCEPTION
173 
174        WHEN OTHERS THEN
175          l_return_status := FND_API.G_RET_STS_ERROR;
176 
177          IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
178          THEN
179 
180              FND_MESSAGE.SET_NAME('QP','QP_INVALID_FORMULA');
181              OE_MSG_PUB.Add;
182 
183          END IF;
184     END;
185 
186     --
187     --  Check conditionally required attributes here.
188     --
189 
190     --
191     --  Check for duplicates here.
192     --
193 
194     IF  p_FORMULA_rec.name IS NOT NULL AND
195         (   p_FORMULA_rec.name <>
196             p_old_FORMULA_rec.name OR
197             p_old_FORMULA_rec.name IS NULL ) THEN
198 
199         SELECT count(*)
200         INTO   l_count
201         FROM   qp_price_formulas_vl
202         WHERE  name = p_FORMULA_rec.name;
203 
204         IF l_count > 0
205         THEN
206 
207             l_return_status := FND_API.G_RET_STS_ERROR;
208 
209             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
210             THEN
211 
212                 FND_MESSAGE.SET_NAME('QP','QP_DUPLICATE_ATTRIBUTE');
213                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','name');
214                 OE_MSG_PUB.Add;
215 
216             END IF;
217 
218         END IF;
219 
220     END IF; -- if 'name' column is modified or entered
221 
222     --
223     --  Validate attribute dependencies here.
224     --
225 
226     IF  nvl(p_FORMULA_rec.start_date_active,
227 		  TO_DATE('01-01-1951', 'MM-DD-YYYY')) >
228         nvl(p_FORMULA_rec.end_date_active,
229 		  TO_DATE('12-31-9999', 'MM-DD-YYYY'))
230     THEN
231 
232         l_return_status := FND_API.G_RET_STS_ERROR;
233 
234         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
235         THEN
236 
237             FND_MESSAGE.SET_NAME('QP','QP_STRT_DATE_BFR_END_DATE');
238             OE_MSG_PUB.Add;
239 
240         END IF;
241 
242     END IF;
243 
244     --  Return Error if dependent attribute is invalid.
245 
246     IF l_return_status = FND_API.G_RET_STS_ERROR THEN
247 
248         RAISE FND_API.G_EXC_ERROR;
249 
250     END IF;
251 
252 
253     --  Done validating entity
254 
255     x_return_status := l_return_status;
256 
257 oe_debug_pub.add('Leaving proc Entity in Formula Validation Pkg');
258 EXCEPTION
259 
260     WHEN FND_API.G_EXC_ERROR THEN
261 
262         x_return_status := FND_API.G_RET_STS_ERROR;
263 
264     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
265 
266         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
267 
268     WHEN OTHERS THEN
269 
270         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
271 
272         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
273         THEN
274             OE_MSG_PUB.Add_Exc_Msg
275             (   G_PKG_NAME
276             ,   'Entity'
277             );
278         END IF;
279 
280 END Entity;
281 
282 --  Procedure Attributes
283 
284 PROCEDURE Attributes
285 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
286 ,   p_FORMULA_rec                   IN  QP_Price_Formula_PUB.Formula_Rec_Type
287 ,   p_old_FORMULA_rec               IN  QP_Price_Formula_PUB.Formula_Rec_Type :=
288                                         QP_Price_Formula_PUB.G_MISS_FORMULA_REC
289 )
290 IS
291 BEGIN
292 
293 oe_debug_pub.add('Entering proc Attributes in Formula Validation Pkg');
294     x_return_status := FND_API.G_RET_STS_SUCCESS;
295 
296     --  Validate FORMULA attributes
297 
298     IF  p_FORMULA_rec.created_by IS NOT NULL AND
299         (   p_FORMULA_rec.created_by <>
300             p_old_FORMULA_rec.created_by OR
301             p_old_FORMULA_rec.created_by IS NULL )
302     THEN
303         IF NOT QP_Validate.Created_By(p_FORMULA_rec.created_by) THEN
304             x_return_status := FND_API.G_RET_STS_ERROR;
305         END IF;
306     END IF;
307 
308     IF  p_FORMULA_rec.creation_date IS NOT NULL AND
309         (   p_FORMULA_rec.creation_date <>
310             p_old_FORMULA_rec.creation_date OR
311             p_old_FORMULA_rec.creation_date IS NULL )
312     THEN
313         IF NOT QP_Validate.Creation_Date(p_FORMULA_rec.creation_date) THEN
314             x_return_status := FND_API.G_RET_STS_ERROR;
315         END IF;
316     END IF;
317 
318     IF  p_FORMULA_rec.description IS NOT NULL AND
319         (   p_FORMULA_rec.description <>
320             p_old_FORMULA_rec.description OR
321             p_old_FORMULA_rec.description IS NULL )
322     THEN
323         IF NOT QP_Validate.Description(p_FORMULA_rec.description) THEN
324             x_return_status := FND_API.G_RET_STS_ERROR;
325         END IF;
326     END IF;
327 
328     IF  p_FORMULA_rec.end_date_active IS NOT NULL AND
329         (   p_FORMULA_rec.end_date_active <>
330             p_old_FORMULA_rec.end_date_active OR
331             p_old_FORMULA_rec.end_date_active IS NULL )
332     THEN
333         IF NOT QP_Validate.End_Date_Active(p_FORMULA_rec.end_date_active) THEN
334             x_return_status := FND_API.G_RET_STS_ERROR;
335         END IF;
336     END IF;
337 
338     IF  p_FORMULA_rec.formula IS NOT NULL AND
339         (   p_FORMULA_rec.formula <>
340             p_old_FORMULA_rec.formula OR
341             p_old_FORMULA_rec.formula IS NULL )
342     THEN
343         IF NOT QP_Validate.Formula(p_FORMULA_rec.formula) THEN
344             x_return_status := FND_API.G_RET_STS_ERROR;
345         END IF;
346     END IF;
347 
348     IF  p_FORMULA_rec.last_updated_by IS NOT NULL AND
349         (   p_FORMULA_rec.last_updated_by <>
350             p_old_FORMULA_rec.last_updated_by OR
351             p_old_FORMULA_rec.last_updated_by IS NULL )
352     THEN
353         IF NOT QP_Validate.Last_Updated_By(p_FORMULA_rec.last_updated_by) THEN
354             x_return_status := FND_API.G_RET_STS_ERROR;
355         END IF;
356     END IF;
357 
358     IF  p_FORMULA_rec.last_update_date IS NOT NULL AND
359         (   p_FORMULA_rec.last_update_date <>
360             p_old_FORMULA_rec.last_update_date OR
361             p_old_FORMULA_rec.last_update_date IS NULL )
362     THEN
363         IF NOT QP_Validate.Last_Update_Date(p_FORMULA_rec.last_update_date) THEN
364             x_return_status := FND_API.G_RET_STS_ERROR;
365         END IF;
366     END IF;
367 
368     IF  p_FORMULA_rec.last_update_login IS NOT NULL AND
369         (   p_FORMULA_rec.last_update_login <>
370             p_old_FORMULA_rec.last_update_login OR
371             p_old_FORMULA_rec.last_update_login IS NULL )
372     THEN
373         IF NOT QP_Validate.Last_Update_Login(p_FORMULA_rec.last_update_login) THEN
374             x_return_status := FND_API.G_RET_STS_ERROR;
375         END IF;
376     END IF;
377 
378     IF  p_FORMULA_rec.name IS NOT NULL AND
379         (   p_FORMULA_rec.name <>
380             p_old_FORMULA_rec.name OR
381             p_old_FORMULA_rec.name IS NULL )
382     THEN
383         IF NOT QP_Validate.Name(p_FORMULA_rec.name) THEN
384             x_return_status := FND_API.G_RET_STS_ERROR;
385         END IF;
386     END IF;
387 
388     IF  p_FORMULA_rec.price_formula_id IS NOT NULL AND
389         (   p_FORMULA_rec.price_formula_id <>
390             p_old_FORMULA_rec.price_formula_id OR
391             p_old_FORMULA_rec.price_formula_id IS NULL )
392     THEN
393         IF NOT QP_Validate.Price_Formula(p_FORMULA_rec.price_formula_id) THEN
394             x_return_status := FND_API.G_RET_STS_ERROR;
395         END IF;
396     END IF;
397 
398     IF  p_FORMULA_rec.start_date_active IS NOT NULL AND
399         (   p_FORMULA_rec.start_date_active <>
400             p_old_FORMULA_rec.start_date_active OR
401             p_old_FORMULA_rec.start_date_active IS NULL )
402     THEN
403         IF NOT QP_Validate.Start_Date_Active(p_FORMULA_rec.start_date_active) THEN
404             x_return_status := FND_API.G_RET_STS_ERROR;
405         END IF;
406     END IF;
407 
408     IF  (p_FORMULA_rec.attribute1 IS NOT NULL AND
409         (   p_FORMULA_rec.attribute1 <>
410             p_old_FORMULA_rec.attribute1 OR
411             p_old_FORMULA_rec.attribute1 IS NULL ))
412     OR  (p_FORMULA_rec.attribute10 IS NOT NULL AND
413         (   p_FORMULA_rec.attribute10 <>
414             p_old_FORMULA_rec.attribute10 OR
415             p_old_FORMULA_rec.attribute10 IS NULL ))
416     OR  (p_FORMULA_rec.attribute11 IS NOT NULL AND
417         (   p_FORMULA_rec.attribute11 <>
418             p_old_FORMULA_rec.attribute11 OR
419             p_old_FORMULA_rec.attribute11 IS NULL ))
420     OR  (p_FORMULA_rec.attribute12 IS NOT NULL AND
421         (   p_FORMULA_rec.attribute12 <>
422             p_old_FORMULA_rec.attribute12 OR
423             p_old_FORMULA_rec.attribute12 IS NULL ))
424     OR  (p_FORMULA_rec.attribute13 IS NOT NULL AND
425         (   p_FORMULA_rec.attribute13 <>
426             p_old_FORMULA_rec.attribute13 OR
427             p_old_FORMULA_rec.attribute13 IS NULL ))
428     OR  (p_FORMULA_rec.attribute14 IS NOT NULL AND
429         (   p_FORMULA_rec.attribute14 <>
430             p_old_FORMULA_rec.attribute14 OR
431             p_old_FORMULA_rec.attribute14 IS NULL ))
432     OR  (p_FORMULA_rec.attribute15 IS NOT NULL AND
433         (   p_FORMULA_rec.attribute15 <>
434             p_old_FORMULA_rec.attribute15 OR
435             p_old_FORMULA_rec.attribute15 IS NULL ))
436     OR  (p_FORMULA_rec.attribute2 IS NOT NULL AND
437         (   p_FORMULA_rec.attribute2 <>
438             p_old_FORMULA_rec.attribute2 OR
439             p_old_FORMULA_rec.attribute2 IS NULL ))
440     OR  (p_FORMULA_rec.attribute3 IS NOT NULL AND
441         (   p_FORMULA_rec.attribute3 <>
442             p_old_FORMULA_rec.attribute3 OR
443             p_old_FORMULA_rec.attribute3 IS NULL ))
444     OR  (p_FORMULA_rec.attribute4 IS NOT NULL AND
445         (   p_FORMULA_rec.attribute4 <>
446             p_old_FORMULA_rec.attribute4 OR
447             p_old_FORMULA_rec.attribute4 IS NULL ))
448     OR  (p_FORMULA_rec.attribute5 IS NOT NULL AND
449         (   p_FORMULA_rec.attribute5 <>
450             p_old_FORMULA_rec.attribute5 OR
451             p_old_FORMULA_rec.attribute5 IS NULL ))
452     OR  (p_FORMULA_rec.attribute6 IS NOT NULL AND
453         (   p_FORMULA_rec.attribute6 <>
454             p_old_FORMULA_rec.attribute6 OR
455             p_old_FORMULA_rec.attribute6 IS NULL ))
456     OR  (p_FORMULA_rec.attribute7 IS NOT NULL AND
457         (   p_FORMULA_rec.attribute7 <>
458             p_old_FORMULA_rec.attribute7 OR
459             p_old_FORMULA_rec.attribute7 IS NULL ))
460     OR  (p_FORMULA_rec.attribute8 IS NOT NULL AND
461         (   p_FORMULA_rec.attribute8 <>
462             p_old_FORMULA_rec.attribute8 OR
463             p_old_FORMULA_rec.attribute8 IS NULL ))
464     OR  (p_FORMULA_rec.attribute9 IS NOT NULL AND
465         (   p_FORMULA_rec.attribute9 <>
466             p_old_FORMULA_rec.attribute9 OR
467             p_old_FORMULA_rec.attribute9 IS NULL ))
468     OR  (p_FORMULA_rec.context IS NOT NULL AND
469         (   p_FORMULA_rec.context <>
470             p_old_FORMULA_rec.context OR
471             p_old_FORMULA_rec.context IS NULL ))
472     THEN
473 
474     --  These calls are temporarily commented out
475 
476 /*
477         FND_FLEX_DESC_VAL.Set_Column_Value
478         (   column_name                   => 'ATTRIBUTE1'
479         ,   column_value                  => p_FORMULA_rec.attribute1
480         );
481         FND_FLEX_DESC_VAL.Set_Column_Value
482         (   column_name                   => 'ATTRIBUTE10'
483         ,   column_value                  => p_FORMULA_rec.attribute10
484         );
485         FND_FLEX_DESC_VAL.Set_Column_Value
486         (   column_name                   => 'ATTRIBUTE11'
487         ,   column_value                  => p_FORMULA_rec.attribute11
488         );
489         FND_FLEX_DESC_VAL.Set_Column_Value
490         (   column_name                   => 'ATTRIBUTE12'
491         ,   column_value                  => p_FORMULA_rec.attribute12
492         );
493         FND_FLEX_DESC_VAL.Set_Column_Value
494         (   column_name                   => 'ATTRIBUTE13'
495         ,   column_value                  => p_FORMULA_rec.attribute13
496         );
497         FND_FLEX_DESC_VAL.Set_Column_Value
498         (   column_name                   => 'ATTRIBUTE14'
499         ,   column_value                  => p_FORMULA_rec.attribute14
500         );
501         FND_FLEX_DESC_VAL.Set_Column_Value
502         (   column_name                   => 'ATTRIBUTE15'
503         ,   column_value                  => p_FORMULA_rec.attribute15
504         );
505         FND_FLEX_DESC_VAL.Set_Column_Value
506         (   column_name                   => 'ATTRIBUTE2'
507         ,   column_value                  => p_FORMULA_rec.attribute2
508         );
509         FND_FLEX_DESC_VAL.Set_Column_Value
510         (   column_name                   => 'ATTRIBUTE3'
511         ,   column_value                  => p_FORMULA_rec.attribute3
512         );
513         FND_FLEX_DESC_VAL.Set_Column_Value
514         (   column_name                   => 'ATTRIBUTE4'
515         ,   column_value                  => p_FORMULA_rec.attribute4
516         );
517         FND_FLEX_DESC_VAL.Set_Column_Value
518         (   column_name                   => 'ATTRIBUTE5'
519         ,   column_value                  => p_FORMULA_rec.attribute5
520         );
521         FND_FLEX_DESC_VAL.Set_Column_Value
522         (   column_name                   => 'ATTRIBUTE6'
523         ,   column_value                  => p_FORMULA_rec.attribute6
524         );
525         FND_FLEX_DESC_VAL.Set_Column_Value
526         (   column_name                   => 'ATTRIBUTE7'
527         ,   column_value                  => p_FORMULA_rec.attribute7
528         );
529         FND_FLEX_DESC_VAL.Set_Column_Value
530         (   column_name                   => 'ATTRIBUTE8'
531         ,   column_value                  => p_FORMULA_rec.attribute8
532         );
533         FND_FLEX_DESC_VAL.Set_Column_Value
534         (   column_name                   => 'ATTRIBUTE9'
535         ,   column_value                  => p_FORMULA_rec.attribute9
536         );
537         FND_FLEX_DESC_VAL.Set_Column_Value
538         (   column_name                   => 'CONTEXT'
539         ,   column_value                  => p_FORMULA_rec.context
540         );
541 */
542 
543         --  Validate descriptive flexfield.
544 
545         IF NOT QP_Validate.Desc_Flex( 'FORMULA' ) THEN
546             x_return_status := FND_API.G_RET_STS_ERROR;
547         END IF;
548 
549     END IF;
550 
551     --  Done validating attributes
552 
553 oe_debug_pub.add('Leaving proc Attributes in Formula Validation Pkg');
554 EXCEPTION
555 
556     WHEN FND_API.G_EXC_ERROR THEN
557 
558         x_return_status := FND_API.G_RET_STS_ERROR;
559 
560     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
561 
562         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
563 
564     WHEN OTHERS THEN
565 
566         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
567 
568         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
569         THEN
570             OE_MSG_PUB.Add_Exc_Msg
571             (   G_PKG_NAME
572             ,   'Attributes'
573             );
574         END IF;
575 
576 END Attributes;
577 
578 --  Procedure Entity_Delete
579 
580 PROCEDURE Entity_Delete
581 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
582 ,   p_FORMULA_rec                   IN  QP_Price_Formula_PUB.Formula_Rec_Type
583 )
584 IS
585 l_return_status               VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
586 BEGIN
587 
588 oe_debug_pub.add('Entering proc Entity_Delete in Formula Validation Pkg');
589     --  Validate entity delete.
590 
591     NULL;
592 
593     --  Done.
594 
595     x_return_status := l_return_status;
596 
597 oe_debug_pub.add('Leaving proc Entity_Delete in Formula Validation Pkg');
598 EXCEPTION
599 
600     WHEN FND_API.G_EXC_ERROR THEN
601 
602         x_return_status := FND_API.G_RET_STS_ERROR;
603 
604     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
605 
606         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
607 
608     WHEN OTHERS THEN
609 
610         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
611 
612         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
613         THEN
614             OE_MSG_PUB.Add_Exc_Msg
615             (   G_PKG_NAME
616             ,   'Entity_Delete'
617             );
618         END IF;
619 
620 END Entity_Delete;
621 
622 END QP_Validate_Formula;