DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_QP_FORM_FORMULA

Source


1 PACKAGE BODY QP_QP_Form_Formula AS
2 /* $Header: QPXFPRFB.pls 120.1 2005/06/13 23:36:20 appldev  $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'QP_QP_Form_Formula';
7 
8 --  Global variables holding cached record.
9 
10 g_FORMULA_rec                 QP_Price_Formula_PUB.Formula_Rec_Type;
11 g_db_FORMULA_rec              QP_Price_Formula_PUB.Formula_Rec_Type;
12 
13 --  Forward declaration of procedures maintaining entity record cache.
14 
15 PROCEDURE Write_FORMULA
16 (   p_FORMULA_rec                   IN  QP_Price_Formula_PUB.Formula_Rec_Type
17 ,   p_db_record                     IN  BOOLEAN := FALSE
18 );
19 
20 FUNCTION Get_FORMULA
21 (   p_db_record                     IN  BOOLEAN := FALSE
22 ,   p_price_formula_id              IN  NUMBER
23 )
24 RETURN QP_Price_Formula_PUB.Formula_Rec_Type;
25 
26 PROCEDURE Clear_FORMULA;
27 
28 --  Global variable holding performed operations.
29 
30 g_opr__tbl                    QP_Price_Formula_PUB.Formula_Tbl_Type;
31 
32 --  Procedure : Default_Attributes
33 --
34 
35 PROCEDURE Default_Attributes
36 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
37 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
38 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
39 ,   x_attribute1                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
40 ,   x_attribute10                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
41 ,   x_attribute11                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
42 ,   x_attribute12                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
43 ,   x_attribute13                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
44 ,   x_attribute14                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
45 ,   x_attribute15                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
46 ,   x_attribute2                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
47 ,   x_attribute3                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
48 ,   x_attribute4                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
49 ,   x_attribute5                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
50 ,   x_attribute6                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
51 ,   x_attribute7                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
52 ,   x_attribute8                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
53 ,   x_attribute9                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
54 ,   x_context                       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
55 ,   x_description                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
56 ,   x_end_date_active               OUT NOCOPY /* file.sql.39 change */ DATE
57 ,   x_formula                       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
58 ,   x_name                          OUT NOCOPY /* file.sql.39 change */ VARCHAR2
59 ,   x_price_formula_id              OUT NOCOPY /* file.sql.39 change */ NUMBER
60 ,   x_start_date_active             OUT NOCOPY /* file.sql.39 change */ DATE
61 ,   x_price_formula                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
62 )
63 IS
64 l_FORMULA_rec                 QP_Price_Formula_PUB.Formula_Rec_Type;
65 l_FORMULA_val_rec             QP_Price_Formula_PUB.Formula_Val_Rec_Type;
66 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
67 l_return_status               VARCHAR2(1);
68 l_x_FORMULA_rec               QP_Price_Formula_PUB.Formula_Rec_Type;
69 l_x_FORMULA_LINES_rec         QP_Price_Formula_PUB.Formula_Lines_Rec_Type;
70 l_x_FORMULA_LINES_tbl         QP_Price_Formula_PUB.Formula_Lines_Tbl_Type;
71 BEGIN
72 
73     --  Set control flags.
74 
75     l_control_rec.controlled_operation := TRUE;
76     l_control_rec.default_attributes   := TRUE;
77 
78     l_control_rec.change_attributes    := FALSE;
79     l_control_rec.validate_entity      := FALSE;
80     l_control_rec.write_to_DB          := FALSE;
81     l_control_rec.process              := FALSE;
82 
83     --  Instruct API to retain its caches
84 
85     l_control_rec.clear_api_cache      := FALSE;
86     l_control_rec.clear_api_requests   := FALSE;
87 
88     --  Load IN parameters if any exist
89 
90 
91     --  Defaulting of flex values is currently done by the form.
92     --  Set flex attributes to NULL in order to avoid defaulting them.
93 
94     l_FORMULA_rec.attribute1                      := NULL;
95     l_FORMULA_rec.attribute10                     := NULL;
96     l_FORMULA_rec.attribute11                     := NULL;
97     l_FORMULA_rec.attribute12                     := NULL;
98     l_FORMULA_rec.attribute13                     := NULL;
99     l_FORMULA_rec.attribute14                     := NULL;
100     l_FORMULA_rec.attribute15                     := NULL;
101     l_FORMULA_rec.attribute2                      := NULL;
102     l_FORMULA_rec.attribute3                      := NULL;
103     l_FORMULA_rec.attribute4                      := NULL;
104     l_FORMULA_rec.attribute5                      := NULL;
105     l_FORMULA_rec.attribute6                      := NULL;
106     l_FORMULA_rec.attribute7                      := NULL;
107     l_FORMULA_rec.attribute8                      := NULL;
108     l_FORMULA_rec.attribute9                      := NULL;
109     l_FORMULA_rec.context                         := NULL;
110 
111     --  Set Operation to Create
112 
113     l_FORMULA_rec.operation := QP_GLOBALS.G_OPR_CREATE;
114 
115     --  Call QP_Price_Formula_PVT.Process_Price_Formula
116 
117     QP_Price_Formula_PVT.Process_Price_Formula
118     (   p_api_version_number          => 1.0
119     ,   p_init_msg_list               => FND_API.G_TRUE
120     ,   x_return_status               => l_return_status
121     ,   x_msg_count                   => x_msg_count
122     ,   x_msg_data                    => x_msg_data
123     ,   p_control_rec                 => l_control_rec
124     ,   p_FORMULA_rec                 => l_FORMULA_rec
125     ,   x_FORMULA_rec                 => l_x_FORMULA_rec
126     ,   x_FORMULA_LINES_tbl           => l_x_FORMULA_LINES_tbl
127     );
128 
129     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
130         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
131     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
132         RAISE FND_API.G_EXC_ERROR;
133     END IF;
134 
135 
136     --  Load OUT parameters.
137 
138     x_attribute1                   := l_x_FORMULA_rec.attribute1;
139     x_attribute10                  := l_x_FORMULA_rec.attribute10;
140     x_attribute11                  := l_x_FORMULA_rec.attribute11;
141     x_attribute12                  := l_x_FORMULA_rec.attribute12;
142     x_attribute13                  := l_x_FORMULA_rec.attribute13;
143     x_attribute14                  := l_x_FORMULA_rec.attribute14;
144     x_attribute15                  := l_x_FORMULA_rec.attribute15;
145     x_attribute2                   := l_x_FORMULA_rec.attribute2;
146     x_attribute3                   := l_x_FORMULA_rec.attribute3;
147     x_attribute4                   := l_x_FORMULA_rec.attribute4;
148     x_attribute5                   := l_x_FORMULA_rec.attribute5;
149     x_attribute6                   := l_x_FORMULA_rec.attribute6;
150     x_attribute7                   := l_x_FORMULA_rec.attribute7;
151     x_attribute8                   := l_x_FORMULA_rec.attribute8;
152     x_attribute9                   := l_x_FORMULA_rec.attribute9;
153     x_context                      := l_x_FORMULA_rec.context;
154     x_description                  := l_x_FORMULA_rec.description;
155     x_end_date_active              := l_x_FORMULA_rec.end_date_active;
156     x_formula                      := l_x_FORMULA_rec.formula;
157     x_name                         := l_x_FORMULA_rec.name;
158     x_price_formula_id             := l_x_FORMULA_rec.price_formula_id;
159     x_start_date_active            := l_x_FORMULA_rec.start_date_active;
160 
161     --  Load display out parameters if any
162 
163     l_FORMULA_val_rec := QP_Formula_Util.Get_Values
164     (   p_FORMULA_rec                 => l_x_FORMULA_rec
165     );
166     x_price_formula                := l_FORMULA_val_rec.price_formula;
167 
168     --  Write to cache.
169     --  Set db_flag to False before writing to cache
170 
171     l_x_FORMULA_rec.db_flag := FND_API.G_FALSE;
172 
173     Write_FORMULA
174     (   p_FORMULA_rec                 => l_x_FORMULA_rec
175     );
176 
177     --  Set return status.
178 
179     x_return_status := FND_API.G_RET_STS_SUCCESS;
180 
181     --  Get message count and data
182 
183     OE_MSG_PUB.Count_And_Get
184     (   p_count                       => x_msg_count
185     ,   p_data                        => x_msg_data
186     );
187 
188 
189 EXCEPTION
190 
191     WHEN FND_API.G_EXC_ERROR THEN
192 
193         x_return_status := FND_API.G_RET_STS_ERROR;
194 
195         --  Get message count and data
196 
197         OE_MSG_PUB.Count_And_Get
198         (   p_count                       => x_msg_count
199         ,   p_data                        => x_msg_data
200         );
201 
202     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
203 
204         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
205 
206         --  Get message count and data
207 
208         OE_MSG_PUB.Count_And_Get
209         (   p_count                       => x_msg_count
210         ,   p_data                        => x_msg_data
211         );
212 
213     WHEN OTHERS THEN
214 
215         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
216 
217         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
218         THEN
219             OE_MSG_PUB.Add_Exc_Msg
220             (   G_PKG_NAME
221             ,   'Default_Attributes'
222             );
223         END IF;
224 
225         --  Get message count and data
226 
227         OE_MSG_PUB.Count_And_Get
228         (   p_count                       => x_msg_count
229         ,   p_data                        => x_msg_data
230         );
231 
232 END Default_Attributes;
233 
234 --  Procedure   :   Change_Attribute
235 --
236 
237 PROCEDURE Change_Attribute
238 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
239 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
240 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
241 ,   p_price_formula_id              IN  NUMBER
242 ,   p_attr_id                       IN  NUMBER
243 ,   p_attr_value                    IN  VARCHAR2
244 ,   p_attribute1                    IN  VARCHAR2
245 ,   p_attribute10                   IN  VARCHAR2
246 ,   p_attribute11                   IN  VARCHAR2
247 ,   p_attribute12                   IN  VARCHAR2
248 ,   p_attribute13                   IN  VARCHAR2
249 ,   p_attribute14                   IN  VARCHAR2
250 ,   p_attribute15                   IN  VARCHAR2
251 ,   p_attribute2                    IN  VARCHAR2
252 ,   p_attribute3                    IN  VARCHAR2
253 ,   p_attribute4                    IN  VARCHAR2
254 ,   p_attribute5                    IN  VARCHAR2
255 ,   p_attribute6                    IN  VARCHAR2
256 ,   p_attribute7                    IN  VARCHAR2
257 ,   p_attribute8                    IN  VARCHAR2
258 ,   p_attribute9                    IN  VARCHAR2
259 ,   p_context                       IN  VARCHAR2
260 ,   x_attribute1                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
261 ,   x_attribute10                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
262 ,   x_attribute11                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
263 ,   x_attribute12                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
264 ,   x_attribute13                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
265 ,   x_attribute14                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
266 ,   x_attribute15                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
267 ,   x_attribute2                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
268 ,   x_attribute3                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
269 ,   x_attribute4                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
270 ,   x_attribute5                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
271 ,   x_attribute6                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
272 ,   x_attribute7                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
273 ,   x_attribute8                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
274 ,   x_attribute9                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
275 ,   x_context                       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
276 ,   x_description                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
277 ,   x_end_date_active               OUT NOCOPY /* file.sql.39 change */ DATE
278 ,   x_formula                       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
279 ,   x_name                          OUT NOCOPY /* file.sql.39 change */ VARCHAR2
280 ,   x_price_formula_id              OUT NOCOPY /* file.sql.39 change */ NUMBER
281 ,   x_start_date_active             OUT NOCOPY /* file.sql.39 change */ DATE
282 ,   x_price_formula                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
283 )
284 IS
285 l_FORMULA_rec                 QP_Price_Formula_PUB.Formula_Rec_Type;
286 l_old_FORMULA_rec             QP_Price_Formula_PUB.Formula_Rec_Type;
287 l_FORMULA_val_rec             QP_Price_Formula_PUB.Formula_Val_Rec_Type;
288 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
289 l_return_status               VARCHAR2(1);
290 l_x_FORMULA_rec               QP_Price_Formula_PUB.Formula_Rec_Type;
291 l_x_FORMULA_LINES_rec         QP_Price_Formula_PUB.Formula_Lines_Rec_Type;
292 l_x_FORMULA_LINES_tbl         QP_Price_Formula_PUB.Formula_Lines_Tbl_Type;
293 BEGIN
294 
295     --  Set control flags.
296 
297     l_control_rec.controlled_operation := TRUE;
298     l_control_rec.change_attributes    := TRUE;
299 
300     l_control_rec.default_attributes   := FALSE;
301     l_control_rec.validate_entity      := FALSE;
302     l_control_rec.write_to_DB          := FALSE;
303     l_control_rec.process              := FALSE;
304 
305     --  Instruct API to retain its caches
306 
307     l_control_rec.clear_api_cache      := FALSE;
308     l_control_rec.clear_api_requests   := FALSE;
309 
310     --  Read FORMULA from cache
311 
312     l_FORMULA_rec := Get_FORMULA
313     (   p_db_record                   => FALSE
314     ,   p_price_formula_id            => p_price_formula_id
315     );
316 
317     l_old_FORMULA_rec              := l_FORMULA_rec;
318 
319     IF p_attr_id = QP_Formula_Util.G_DESCRIPTION THEN
320         l_FORMULA_rec.description := p_attr_value;
321     ELSIF p_attr_id = QP_Formula_Util.G_END_DATE_ACTIVE THEN
322         l_FORMULA_rec.end_date_active := TO_DATE(p_attr_value,'DD/MM/YYYY');
323     ELSIF p_attr_id = QP_Formula_Util.G_FORMULA THEN
324         l_FORMULA_rec.formula := p_attr_value;
325     ELSIF p_attr_id = QP_Formula_Util.G_NAME THEN
326         l_FORMULA_rec.name := p_attr_value;
327     ELSIF p_attr_id = QP_Formula_Util.G_PRICE_FORMULA THEN
328         l_FORMULA_rec.price_formula_id := TO_NUMBER(p_attr_value);
329     ELSIF p_attr_id = QP_Formula_Util.G_START_DATE_ACTIVE THEN
330         l_FORMULA_rec.start_date_active := TO_DATE(p_attr_value,'DD/MM/YYYY');
331     ELSIF p_attr_id = QP_Formula_Util.G_ATTRIBUTE1
332     OR     p_attr_id = QP_Formula_Util.G_ATTRIBUTE10
333     OR     p_attr_id = QP_Formula_Util.G_ATTRIBUTE11
334     OR     p_attr_id = QP_Formula_Util.G_ATTRIBUTE12
335     OR     p_attr_id = QP_Formula_Util.G_ATTRIBUTE13
336     OR     p_attr_id = QP_Formula_Util.G_ATTRIBUTE14
337     OR     p_attr_id = QP_Formula_Util.G_ATTRIBUTE15
338     OR     p_attr_id = QP_Formula_Util.G_ATTRIBUTE2
339     OR     p_attr_id = QP_Formula_Util.G_ATTRIBUTE3
340     OR     p_attr_id = QP_Formula_Util.G_ATTRIBUTE4
341     OR     p_attr_id = QP_Formula_Util.G_ATTRIBUTE5
342     OR     p_attr_id = QP_Formula_Util.G_ATTRIBUTE6
343     OR     p_attr_id = QP_Formula_Util.G_ATTRIBUTE7
344     OR     p_attr_id = QP_Formula_Util.G_ATTRIBUTE8
345     OR     p_attr_id = QP_Formula_Util.G_ATTRIBUTE9
346     OR     p_attr_id = QP_Formula_Util.G_CONTEXT
347     THEN
348 
349         l_FORMULA_rec.attribute1       := p_attribute1;
350         l_FORMULA_rec.attribute10      := p_attribute10;
351         l_FORMULA_rec.attribute11      := p_attribute11;
352         l_FORMULA_rec.attribute12      := p_attribute12;
353         l_FORMULA_rec.attribute13      := p_attribute13;
354         l_FORMULA_rec.attribute14      := p_attribute14;
355         l_FORMULA_rec.attribute15      := p_attribute15;
356         l_FORMULA_rec.attribute2       := p_attribute2;
357         l_FORMULA_rec.attribute3       := p_attribute3;
358         l_FORMULA_rec.attribute4       := p_attribute4;
359         l_FORMULA_rec.attribute5       := p_attribute5;
360         l_FORMULA_rec.attribute6       := p_attribute6;
361         l_FORMULA_rec.attribute7       := p_attribute7;
362         l_FORMULA_rec.attribute8       := p_attribute8;
363         l_FORMULA_rec.attribute9       := p_attribute9;
364         l_FORMULA_rec.context          := p_context;
365 
366     ELSE
367 
368         --  Unexpected error, unrecognized attribute
369 
370         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
371         THEN
372             OE_MSG_PUB.Add_Exc_Msg
373             (   G_PKG_NAME
374             ,   'Change_Attribute'
375             ,   'Unrecognized attribute'
376             );
377         END IF;
378 
379         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
380 
381     END IF;
382 
383     --  Set Operation.
384 
385     IF FND_API.To_Boolean(l_FORMULA_rec.db_flag) THEN
386         l_FORMULA_rec.operation := QP_GLOBALS.G_OPR_UPDATE;
387     ELSE
388         l_FORMULA_rec.operation := QP_GLOBALS.G_OPR_CREATE;
389     END IF;
390 
391     --  Call QP_Price_Formula_PVT.Process_Price_Formula
392 
393     QP_Price_Formula_PVT.Process_Price_Formula
394     (   p_api_version_number          => 1.0
395     ,   p_init_msg_list               => FND_API.G_TRUE
396     ,   p_validation_level            => FND_API.G_VALID_LEVEL_NONE
397     ,   x_return_status               => l_return_status
398     ,   x_msg_count                   => x_msg_count
399     ,   x_msg_data                    => x_msg_data
400     ,   p_control_rec                 => l_control_rec
401     ,   p_FORMULA_rec                 => l_FORMULA_rec
402     ,   p_old_FORMULA_rec             => l_old_FORMULA_rec
403     ,   x_FORMULA_rec                 => l_x_FORMULA_rec
404     ,   x_FORMULA_LINES_tbl           => l_x_FORMULA_LINES_tbl
405     );
406 
407     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
408         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
409     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
410         RAISE FND_API.G_EXC_ERROR;
411     END IF;
412 
413 
414     --  Init OUT parameters to missing.
415 
416     x_attribute1                   := FND_API.G_MISS_CHAR;
417     x_attribute10                  := FND_API.G_MISS_CHAR;
418     x_attribute11                  := FND_API.G_MISS_CHAR;
419     x_attribute12                  := FND_API.G_MISS_CHAR;
420     x_attribute13                  := FND_API.G_MISS_CHAR;
421     x_attribute14                  := FND_API.G_MISS_CHAR;
422     x_attribute15                  := FND_API.G_MISS_CHAR;
423     x_attribute2                   := FND_API.G_MISS_CHAR;
424     x_attribute3                   := FND_API.G_MISS_CHAR;
425     x_attribute4                   := FND_API.G_MISS_CHAR;
426     x_attribute5                   := FND_API.G_MISS_CHAR;
427     x_attribute6                   := FND_API.G_MISS_CHAR;
428     x_attribute7                   := FND_API.G_MISS_CHAR;
429     x_attribute8                   := FND_API.G_MISS_CHAR;
430     x_attribute9                   := FND_API.G_MISS_CHAR;
431     x_context                      := FND_API.G_MISS_CHAR;
432     x_description                  := FND_API.G_MISS_CHAR;
433     x_end_date_active              := FND_API.G_MISS_DATE;
434     x_formula                      := FND_API.G_MISS_CHAR;
435     x_name                         := FND_API.G_MISS_CHAR;
436     x_price_formula_id             := FND_API.G_MISS_NUM;
437     x_start_date_active            := FND_API.G_MISS_DATE;
438     x_price_formula                := FND_API.G_MISS_CHAR;
439 
440     --  Load display out parameters if any
441 
442     l_FORMULA_val_rec := QP_Formula_Util.Get_Values
443     (   p_FORMULA_rec                 => l_x_FORMULA_rec
444     ,   p_old_FORMULA_rec             => l_FORMULA_rec
445     );
446 
447     --  Return changed attributes.
448 
449     IF NOT QP_GLOBALS.Equal(l_x_FORMULA_rec.attribute1,
450                             l_FORMULA_rec.attribute1)
451     THEN
452         x_attribute1 := l_x_FORMULA_rec.attribute1;
453     END IF;
454 
455     IF NOT QP_GLOBALS.Equal(l_x_FORMULA_rec.attribute10,
456                             l_FORMULA_rec.attribute10)
457     THEN
458         x_attribute10 := l_x_FORMULA_rec.attribute10;
459     END IF;
460 
461     IF NOT QP_GLOBALS.Equal(l_x_FORMULA_rec.attribute11,
462                             l_FORMULA_rec.attribute11)
463     THEN
464         x_attribute11 := l_x_FORMULA_rec.attribute11;
465     END IF;
466 
467     IF NOT QP_GLOBALS.Equal(l_x_FORMULA_rec.attribute12,
468                             l_FORMULA_rec.attribute12)
469     THEN
470         x_attribute12 := l_x_FORMULA_rec.attribute12;
471     END IF;
472 
473     IF NOT QP_GLOBALS.Equal(l_x_FORMULA_rec.attribute13,
474                             l_FORMULA_rec.attribute13)
475     THEN
476         x_attribute13 := l_x_FORMULA_rec.attribute13;
477     END IF;
478 
479     IF NOT QP_GLOBALS.Equal(l_x_FORMULA_rec.attribute14,
480                             l_FORMULA_rec.attribute14)
481     THEN
482         x_attribute14 := l_x_FORMULA_rec.attribute14;
483     END IF;
484 
485     IF NOT QP_GLOBALS.Equal(l_x_FORMULA_rec.attribute15,
486                             l_FORMULA_rec.attribute15)
487     THEN
488         x_attribute15 := l_x_FORMULA_rec.attribute15;
489     END IF;
490 
491     IF NOT QP_GLOBALS.Equal(l_x_FORMULA_rec.attribute2,
492                             l_FORMULA_rec.attribute2)
493     THEN
494         x_attribute2 := l_x_FORMULA_rec.attribute2;
495     END IF;
496 
497     IF NOT QP_GLOBALS.Equal(l_x_FORMULA_rec.attribute3,
498                             l_FORMULA_rec.attribute3)
499     THEN
500         x_attribute3 := l_x_FORMULA_rec.attribute3;
501     END IF;
502 
503     IF NOT QP_GLOBALS.Equal(l_x_FORMULA_rec.attribute4,
504                             l_FORMULA_rec.attribute4)
505     THEN
506         x_attribute4 := l_x_FORMULA_rec.attribute4;
507     END IF;
508 
509     IF NOT QP_GLOBALS.Equal(l_x_FORMULA_rec.attribute5,
510                             l_FORMULA_rec.attribute5)
511     THEN
512         x_attribute5 := l_x_FORMULA_rec.attribute5;
513     END IF;
514 
515     IF NOT QP_GLOBALS.Equal(l_x_FORMULA_rec.attribute6,
516                             l_FORMULA_rec.attribute6)
517     THEN
518         x_attribute6 := l_x_FORMULA_rec.attribute6;
519     END IF;
520 
521     IF NOT QP_GLOBALS.Equal(l_x_FORMULA_rec.attribute7,
522                             l_FORMULA_rec.attribute7)
523     THEN
524         x_attribute7 := l_x_FORMULA_rec.attribute7;
525     END IF;
526 
527     IF NOT QP_GLOBALS.Equal(l_x_FORMULA_rec.attribute8,
528                             l_FORMULA_rec.attribute8)
529     THEN
530         x_attribute8 := l_x_FORMULA_rec.attribute8;
531     END IF;
532 
533     IF NOT QP_GLOBALS.Equal(l_x_FORMULA_rec.attribute9,
534                             l_FORMULA_rec.attribute9)
535     THEN
536         x_attribute9 := l_x_FORMULA_rec.attribute9;
537     END IF;
538 
539     IF NOT QP_GLOBALS.Equal(l_x_FORMULA_rec.context,
540                             l_FORMULA_rec.context)
541     THEN
542         x_context := l_x_FORMULA_rec.context;
543     END IF;
544 
545     IF NOT QP_GLOBALS.Equal(l_x_FORMULA_rec.description,
546                             l_FORMULA_rec.description)
547     THEN
548         x_description := l_x_FORMULA_rec.description;
549     END IF;
550 
551     IF NOT QP_GLOBALS.Equal(l_x_FORMULA_rec.end_date_active,
552                             l_FORMULA_rec.end_date_active)
553     THEN
554         x_end_date_active := l_x_FORMULA_rec.end_date_active;
555     END IF;
556 
557     IF NOT QP_GLOBALS.Equal(l_x_FORMULA_rec.formula,
558                             l_FORMULA_rec.formula)
559     THEN
560         x_formula := l_x_FORMULA_rec.formula;
561     END IF;
562 
563     IF NOT QP_GLOBALS.Equal(l_x_FORMULA_rec.name,
564                             l_FORMULA_rec.name)
565     THEN
566         x_name := l_x_FORMULA_rec.name;
567     END IF;
568 
569     IF NOT QP_GLOBALS.Equal(l_x_FORMULA_rec.price_formula_id,
570                             l_FORMULA_rec.price_formula_id)
571     THEN
572         x_price_formula_id := l_x_FORMULA_rec.price_formula_id;
573         x_price_formula := l_FORMULA_val_rec.price_formula;
574     END IF;
575 
576     IF NOT QP_GLOBALS.Equal(l_x_FORMULA_rec.start_date_active,
577                             l_FORMULA_rec.start_date_active)
578     THEN
579         x_start_date_active := l_x_FORMULA_rec.start_date_active;
580     END IF;
581 
582 
583     --  Write to cache.
584 
585     Write_FORMULA
586     (   p_FORMULA_rec                 => l_x_FORMULA_rec
587     );
588 
589     --  Set return status.
590 
591     x_return_status := FND_API.G_RET_STS_SUCCESS;
592 
593     --  Get message count and data
594 
595     OE_MSG_PUB.Count_And_Get
596     (   p_count                       => x_msg_count
597     ,   p_data                        => x_msg_data
598     );
599 
600 
601 EXCEPTION
602 
603     WHEN FND_API.G_EXC_ERROR THEN
604 
605         x_return_status := FND_API.G_RET_STS_ERROR;
606 
607         --  Get message count and data
608 
609         OE_MSG_PUB.Count_And_Get
610         (   p_count                       => x_msg_count
611         ,   p_data                        => x_msg_data
612         );
613 
614     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
615 
616         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
617 
618         --  Get message count and data
619 
620         OE_MSG_PUB.Count_And_Get
621         (   p_count                       => x_msg_count
622         ,   p_data                        => x_msg_data
623         );
624 
625     WHEN OTHERS THEN
626 
627         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
628 
629         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
630         THEN
631             OE_MSG_PUB.Add_Exc_Msg
632             (   G_PKG_NAME
633             ,   'Change_Attribute'
634             );
635         END IF;
636 
637         --  Get message count and data
638 
639         OE_MSG_PUB.Count_And_Get
640         (   p_count                       => x_msg_count
641         ,   p_data                        => x_msg_data
642         );
643 
644 END Change_Attribute;
645 
646 --  Procedure       Validate_And_Write
647 --
648 
649 PROCEDURE Validate_And_Write
650 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
651 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
652 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
653 ,   p_price_formula_id              IN  NUMBER
654 ,   x_creation_date                 OUT NOCOPY /* file.sql.39 change */ DATE
655 ,   x_created_by                    OUT NOCOPY /* file.sql.39 change */ NUMBER
656 ,   x_last_update_date              OUT NOCOPY /* file.sql.39 change */ DATE
657 ,   x_last_updated_by               OUT NOCOPY /* file.sql.39 change */ NUMBER
658 ,   x_last_update_login             OUT NOCOPY /* file.sql.39 change */ NUMBER
659 )
660 IS
661 l_FORMULA_rec                 QP_Price_Formula_PUB.Formula_Rec_Type;
662 l_old_FORMULA_rec             QP_Price_Formula_PUB.Formula_Rec_Type;
663 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
664 l_return_status               VARCHAR2(1);
665 l_x_FORMULA_rec               QP_Price_Formula_PUB.Formula_Rec_Type;
666 l_x_FORMULA_LINES_rec         QP_Price_Formula_PUB.Formula_Lines_Rec_Type;
667 l_x_FORMULA_LINES_tbl         QP_Price_Formula_PUB.Formula_Lines_Tbl_Type;
668 BEGIN
669 
670     --  Set control flags.
671 
672     l_control_rec.controlled_operation := TRUE;
673     l_control_rec.validate_entity      := TRUE;
674     l_control_rec.write_to_DB          := TRUE;
675 
676     l_control_rec.default_attributes   := FALSE;
677     l_control_rec.change_attributes    := FALSE;
678     l_control_rec.process              := FALSE;
679 
680     --  Instruct API to retain its caches
681 
682     l_control_rec.clear_api_cache      := FALSE;
683     l_control_rec.clear_api_requests   := FALSE;
684 
685     --  Read FORMULA from cache
686 
687     l_old_FORMULA_rec := Get_FORMULA
688     (   p_db_record                   => TRUE
689     ,   p_price_formula_id            => p_price_formula_id
690     );
691 
692     l_FORMULA_rec := Get_FORMULA
693     (   p_db_record                   => FALSE
694     ,   p_price_formula_id            => p_price_formula_id
695     );
696 
697     --  Set Operation.
698 
699     IF FND_API.To_Boolean(l_FORMULA_rec.db_flag) THEN
700         l_FORMULA_rec.operation := QP_GLOBALS.G_OPR_UPDATE;
701     ELSE
702         l_FORMULA_rec.operation := QP_GLOBALS.G_OPR_CREATE;
703     END IF;
704 
705     --  Call QP_Price_Formula_PVT.Process_Price_Formula
706 
707     QP_Price_Formula_PVT.Process_Price_Formula
708     (   p_api_version_number          => 1.0
709     ,   p_init_msg_list               => FND_API.G_TRUE
710     ,   x_return_status               => l_return_status
711     ,   x_msg_count                   => x_msg_count
712     ,   x_msg_data                    => x_msg_data
713     ,   p_control_rec                 => l_control_rec
714     ,   p_FORMULA_rec                 => l_FORMULA_rec
715     ,   p_old_FORMULA_rec             => l_old_FORMULA_rec
716     ,   x_FORMULA_rec                 => l_x_FORMULA_rec
717     ,   x_FORMULA_LINES_tbl           => l_x_FORMULA_LINES_tbl
718     );
719 
720     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
721         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
722     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
723         RAISE FND_API.G_EXC_ERROR;
724     END IF;
725 
726 
727     --  Load OUT parameters.
728 
729 
730     x_creation_date                := l_x_FORMULA_rec.creation_date;
731     x_created_by                   := l_x_FORMULA_rec.created_by;
732     x_last_update_date             := l_x_FORMULA_rec.last_update_date;
733     x_last_updated_by              := l_x_FORMULA_rec.last_updated_by;
734     x_last_update_login            := l_x_FORMULA_rec.last_update_login;
735 
736     --  Clear FORMULA record cache
737 
738     Clear_FORMULA;
739 
740     --  Keep track of performed operations.
741 
742     l_old_FORMULA_rec.operation := l_FORMULA_rec.operation;
743 
744 
745     --  Set return status.
746 
747     x_return_status := FND_API.G_RET_STS_SUCCESS;
748 
749     --  Get message count and data
750 
751     OE_MSG_PUB.Count_And_Get
752     (   p_count                       => x_msg_count
753     ,   p_data                        => x_msg_data
754     );
755 
756 
757 EXCEPTION
758 
759     WHEN FND_API.G_EXC_ERROR THEN
760 
761         x_return_status := FND_API.G_RET_STS_ERROR;
762 
763         --  Get message count and data
764 
765         OE_MSG_PUB.Count_And_Get
766         (   p_count                       => x_msg_count
767         ,   p_data                        => x_msg_data
768         );
769 
770     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
771 
772         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
773 
774         --  Get message count and data
775 
776         OE_MSG_PUB.Count_And_Get
777         (   p_count                       => x_msg_count
778         ,   p_data                        => x_msg_data
779         );
780 
781     WHEN OTHERS THEN
782 
783         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
784 
785         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
786         THEN
787             OE_MSG_PUB.Add_Exc_Msg
788             (   G_PKG_NAME
789             ,   'Validate_And_Write'
790             );
791         END IF;
792 
793         --  Get message count and data
794 
795         OE_MSG_PUB.Count_And_Get
796         (   p_count                       => x_msg_count
797         ,   p_data                        => x_msg_data
798         );
799 
800 END Validate_And_Write;
801 
802 --  Procedure       Delete_Row
803 --
804 
805 PROCEDURE Delete_Row
806 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
807 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
808 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
809 ,   p_price_formula_id              IN  NUMBER
810 )
811 IS
812 l_FORMULA_rec                 QP_Price_Formula_PUB.Formula_Rec_Type;
813 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
814 l_return_status               VARCHAR2(1);
815 l_x_FORMULA_rec               QP_Price_Formula_PUB.Formula_Rec_Type;
816 l_x_FORMULA_LINES_rec         QP_Price_Formula_PUB.Formula_Lines_Rec_Type;
817 l_x_FORMULA_LINES_tbl         QP_Price_Formula_PUB.Formula_Lines_Tbl_Type;
818 BEGIN
819 
820     --  Set control flags.
821 
822     l_control_rec.controlled_operation := TRUE;
823     l_control_rec.validate_entity      := TRUE;
824     l_control_rec.write_to_DB          := TRUE;
825 
826     l_control_rec.default_attributes   := FALSE;
827     l_control_rec.change_attributes    := FALSE;
828     l_control_rec.process              := FALSE;
829 
830     --  Instruct API to retain its caches
831 
832     l_control_rec.clear_api_cache      := FALSE;
833     l_control_rec.clear_api_requests   := FALSE;
834 
835     --  Read DB record from cache
836 
837     l_FORMULA_rec := Get_FORMULA
838     (   p_db_record                   => TRUE
839     ,   p_price_formula_id            => p_price_formula_id
840     );
841 
842     --  Set Operation.
843 
844     l_FORMULA_rec.operation := QP_GLOBALS.G_OPR_DELETE;
845 
846     --  Call QP_Price_Formula_PVT.Process_Price_Formula
847 
848     QP_Price_Formula_PVT.Process_Price_Formula
849     (   p_api_version_number          => 1.0
850     ,   p_init_msg_list               => FND_API.G_TRUE
851     ,   x_return_status               => l_return_status
852     ,   x_msg_count                   => x_msg_count
853     ,   x_msg_data                    => x_msg_data
854     ,   p_control_rec                 => l_control_rec
855     ,   p_FORMULA_rec                 => l_FORMULA_rec
856     ,   x_FORMULA_rec                 => l_x_FORMULA_rec
857     ,   x_FORMULA_LINES_tbl           => l_x_FORMULA_LINES_tbl
858     );
859 
860     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
861         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
862     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
863         RAISE FND_API.G_EXC_ERROR;
864     END IF;
865 
866 
867     --  Clear FORMULA record cache
868 
869     Clear_FORMULA;
870 
871     --  Set return status.
872 
873     x_return_status := FND_API.G_RET_STS_SUCCESS;
874 
875     --  Get message count and data
876 
877     OE_MSG_PUB.Count_And_Get
878     (   p_count                       => x_msg_count
879     ,   p_data                        => x_msg_data
880     );
881 
882 
883 EXCEPTION
884 
885     WHEN FND_API.G_EXC_ERROR THEN
886 
887         x_return_status := FND_API.G_RET_STS_ERROR;
888 
889         --  Get message count and data
890 
891         OE_MSG_PUB.Count_And_Get
892         (   p_count                       => x_msg_count
893         ,   p_data                        => x_msg_data
894         );
895 
896     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
897 
898         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
899 
900         --  Get message count and data
901 
902         OE_MSG_PUB.Count_And_Get
903         (   p_count                       => x_msg_count
904         ,   p_data                        => x_msg_data
905         );
906 
907     WHEN OTHERS THEN
908 
909         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
910 
911         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
912         THEN
913             OE_MSG_PUB.Add_Exc_Msg
914             (   G_PKG_NAME
915             ,   'Delete_Row'
916             );
917         END IF;
918 
919         --  Get message count and data
920 
921         OE_MSG_PUB.Count_And_Get
922         (   p_count                       => x_msg_count
923         ,   p_data                        => x_msg_data
924         );
925 
926 END Delete_Row;
927 
928 --  Procedure       Process_Entity
929 --
930 
931 PROCEDURE Process_Entity
932 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
933 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
934 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
935 )
936 IS
937 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
938 l_return_status               VARCHAR2(1);
939 l_x_FORMULA_rec               QP_Price_Formula_PUB.Formula_Rec_Type;
940 l_x_FORMULA_LINES_rec         QP_Price_Formula_PUB.Formula_Lines_Rec_Type;
941 l_x_FORMULA_LINES_tbl         QP_Price_Formula_PUB.Formula_Lines_Tbl_Type;
942 BEGIN
943 
944     --  Set control flags.
945 
946     l_control_rec.controlled_operation := TRUE;
947     l_control_rec.process              := TRUE;
948     l_control_rec.process_entity       := QP_GLOBALS.G_ENTITY_FORMULA;
949 
950     l_control_rec.default_attributes   := FALSE;
951     l_control_rec.change_attributes    := FALSE;
952     l_control_rec.validate_entity      := FALSE;
953     l_control_rec.write_to_DB          := FALSE;
954 
955     --  Instruct API to clear its request table
956 
957     l_control_rec.clear_api_cache      := FALSE;
958     l_control_rec.clear_api_requests   := FALSE;
959 
960     --  Call QP_Price_Formula_PVT.Process_Price_Formula
961 
962     QP_Price_Formula_PVT.Process_Price_Formula
963     (   p_api_version_number          => 1.0
964     ,   p_init_msg_list               => FND_API.G_TRUE
965     ,   x_return_status               => l_return_status
966     ,   x_msg_count                   => x_msg_count
967     ,   x_msg_data                    => x_msg_data
968     ,   p_control_rec                 => l_control_rec
969     ,   x_FORMULA_rec                 => l_x_FORMULA_rec
970     ,   x_FORMULA_LINES_tbl           => l_x_FORMULA_LINES_tbl
971     );
972 
973     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
974         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
975     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
976         RAISE FND_API.G_EXC_ERROR;
977     END IF;
978 
979 
980     --  Set return status.
981 
982     x_return_status := FND_API.G_RET_STS_SUCCESS;
983 
984     --  Get message count and data
985 
986     OE_MSG_PUB.Count_And_Get
987     (   p_count                       => x_msg_count
988     ,   p_data                        => x_msg_data
989     );
990 
991 
992 EXCEPTION
993 
994     WHEN FND_API.G_EXC_ERROR THEN
995 
996         x_return_status := FND_API.G_RET_STS_ERROR;
997 
998         --  Get message count and data
999 
1000         OE_MSG_PUB.Count_And_Get
1001         (   p_count                       => x_msg_count
1002         ,   p_data                        => x_msg_data
1003         );
1004 
1005     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1006 
1007         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1008 
1009         --  Get message count and data
1010 
1011         OE_MSG_PUB.Count_And_Get
1012         (   p_count                       => x_msg_count
1013         ,   p_data                        => x_msg_data
1014         );
1015 
1016     WHEN OTHERS THEN
1017 
1018         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1019 
1020         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1021         THEN
1022             OE_MSG_PUB.Add_Exc_Msg
1023             (   G_PKG_NAME
1024             ,   'Process_Entity'
1025             );
1026         END IF;
1027 
1028         --  Get message count and data
1029 
1030         OE_MSG_PUB.Count_And_Get
1031         (   p_count                       => x_msg_count
1032         ,   p_data                        => x_msg_data
1033         );
1034 
1035 END Process_Entity;
1036 
1037 --  Procedure       Process_Object
1038 --
1039 
1040 PROCEDURE Process_Object
1041 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1042 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1043 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1044 )
1045 IS
1046 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
1047 l_return_status               VARCHAR2(1);
1048 l_x_FORMULA_rec               QP_Price_Formula_PUB.Formula_Rec_Type;
1049 l_x_FORMULA_LINES_rec         QP_Price_Formula_PUB.Formula_Lines_Rec_Type;
1050 l_x_FORMULA_LINES_tbl         QP_Price_Formula_PUB.Formula_Lines_Tbl_Type;
1051 BEGIN
1052 
1053     --  Set control flags.
1054 
1055     l_control_rec.controlled_operation := TRUE;
1056     l_control_rec.process              := TRUE;
1057     l_control_rec.process_entity       := QP_GLOBALS.G_ENTITY_ALL;
1058 
1059     l_control_rec.default_attributes   := FALSE;
1060     l_control_rec.change_attributes    := FALSE;
1061     l_control_rec.validate_entity      := FALSE;
1062     l_control_rec.write_to_DB          := FALSE;
1063 
1064     --  Instruct API to clear its request table
1065 
1066     l_control_rec.clear_api_cache      := FALSE;
1067     l_control_rec.clear_api_requests   := TRUE;
1068 
1069     --  Call QP_Price_Formula_PVT.Process_Price_Formula
1070 
1071     QP_Price_Formula_PVT.Process_Price_Formula
1072     (   p_api_version_number          => 1.0
1073     ,   p_init_msg_list               => FND_API.G_TRUE
1074     ,   x_return_status               => l_return_status
1075     ,   x_msg_count                   => x_msg_count
1076     ,   x_msg_data                    => x_msg_data
1077     ,   p_control_rec                 => l_control_rec
1078     ,   x_FORMULA_rec                 => l_x_FORMULA_rec
1079     ,   x_FORMULA_LINES_tbl           => l_x_FORMULA_LINES_tbl
1080     );
1081 
1082     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1083         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1084     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1085         RAISE FND_API.G_EXC_ERROR;
1086     END IF;
1087 
1088 
1089     --  Set return status.
1090 
1091     x_return_status := FND_API.G_RET_STS_SUCCESS;
1092 
1093     --  Get message count and data
1094 
1095     OE_MSG_PUB.Count_And_Get
1096     (   p_count                       => x_msg_count
1097     ,   p_data                        => x_msg_data
1098     );
1099 
1100 
1101 EXCEPTION
1102 
1103     WHEN FND_API.G_EXC_ERROR THEN
1104 
1105         x_return_status := FND_API.G_RET_STS_ERROR;
1106 
1107         --  Get message count and data
1108 
1109         OE_MSG_PUB.Count_And_Get
1110         (   p_count                       => x_msg_count
1111         ,   p_data                        => x_msg_data
1112         );
1113 
1114     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1115 
1116         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1117 
1118         --  Get message count and data
1119 
1120         OE_MSG_PUB.Count_And_Get
1121         (   p_count                       => x_msg_count
1122         ,   p_data                        => x_msg_data
1123         );
1124 
1125     WHEN OTHERS THEN
1126 
1127         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1128 
1129         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1130         THEN
1131             OE_MSG_PUB.Add_Exc_Msg
1132             (   G_PKG_NAME
1133             ,   'Process_Object'
1134             );
1135         END IF;
1136 
1137         --  Get message count and data
1138 
1139         OE_MSG_PUB.Count_And_Get
1140         (   p_count                       => x_msg_count
1141         ,   p_data                        => x_msg_data
1142         );
1143 
1144 END Process_Object;
1145 
1146 --  Procedure       lock_Row
1147 --
1148 
1149 PROCEDURE Lock_Row
1150 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1151 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1152 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1153 ,   p_attribute1                    IN  VARCHAR2
1154 ,   p_attribute10                   IN  VARCHAR2
1155 ,   p_attribute11                   IN  VARCHAR2
1156 ,   p_attribute12                   IN  VARCHAR2
1157 ,   p_attribute13                   IN  VARCHAR2
1158 ,   p_attribute14                   IN  VARCHAR2
1159 ,   p_attribute15                   IN  VARCHAR2
1160 ,   p_attribute2                    IN  VARCHAR2
1161 ,   p_attribute3                    IN  VARCHAR2
1162 ,   p_attribute4                    IN  VARCHAR2
1163 ,   p_attribute5                    IN  VARCHAR2
1164 ,   p_attribute6                    IN  VARCHAR2
1165 ,   p_attribute7                    IN  VARCHAR2
1166 ,   p_attribute8                    IN  VARCHAR2
1167 ,   p_attribute9                    IN  VARCHAR2
1168 ,   p_context                       IN  VARCHAR2
1169 ,   p_created_by                    IN  NUMBER
1170 ,   p_creation_date                 IN  DATE
1171 ,   p_description                   IN  VARCHAR2
1172 ,   p_end_date_active               IN  DATE
1173 ,   p_formula                       IN  VARCHAR2
1174 ,   p_last_updated_by               IN  NUMBER
1175 ,   p_last_update_date              IN  DATE
1176 ,   p_last_update_login             IN  NUMBER
1177 ,   p_name                          IN  VARCHAR2
1178 ,   p_price_formula_id              IN  NUMBER
1179 ,   p_start_date_active             IN  DATE
1180 )
1181 IS
1182 l_return_status               VARCHAR2(1);
1183 l_FORMULA_rec                 QP_Price_Formula_PUB.Formula_Rec_Type;
1184 l_x_FORMULA_rec               QP_Price_Formula_PUB.Formula_Rec_Type;
1185 l_x_FORMULA_LINES_rec         QP_Price_Formula_PUB.Formula_Lines_Rec_Type;
1186 l_x_FORMULA_LINES_tbl         QP_Price_Formula_PUB.Formula_Lines_Tbl_Type;
1187 BEGIN
1188 
1189     --  Load FORMULA record
1190 
1191     l_FORMULA_rec.attribute1       := p_attribute1;
1192     l_FORMULA_rec.attribute10      := p_attribute10;
1193     l_FORMULA_rec.attribute11      := p_attribute11;
1194     l_FORMULA_rec.attribute12      := p_attribute12;
1195     l_FORMULA_rec.attribute13      := p_attribute13;
1196     l_FORMULA_rec.attribute14      := p_attribute14;
1197     l_FORMULA_rec.attribute15      := p_attribute15;
1198     l_FORMULA_rec.attribute2       := p_attribute2;
1199     l_FORMULA_rec.attribute3       := p_attribute3;
1200     l_FORMULA_rec.attribute4       := p_attribute4;
1201     l_FORMULA_rec.attribute5       := p_attribute5;
1202     l_FORMULA_rec.attribute6       := p_attribute6;
1203     l_FORMULA_rec.attribute7       := p_attribute7;
1204     l_FORMULA_rec.attribute8       := p_attribute8;
1205     l_FORMULA_rec.attribute9       := p_attribute9;
1206     l_FORMULA_rec.context          := p_context;
1207     l_FORMULA_rec.created_by       := p_created_by;
1208     l_FORMULA_rec.creation_date    := p_creation_date;
1209     l_FORMULA_rec.description      := p_description;
1210     l_FORMULA_rec.end_date_active  := p_end_date_active;
1211     l_FORMULA_rec.formula          := p_formula;
1212     l_FORMULA_rec.last_updated_by  := p_last_updated_by;
1213     l_FORMULA_rec.last_update_date := p_last_update_date;
1214     l_FORMULA_rec.last_update_login := p_last_update_login;
1215     l_FORMULA_rec.name              := p_name;
1216     l_FORMULA_rec.price_formula_id := p_price_formula_id;
1217     l_FORMULA_rec.start_date_active := p_start_date_active;
1218 
1219     --  Call QP_Price_Formula_PVT.Lock_Price_Formula
1220 
1221 --    l_FORMULA_rec.operation := QP_GLOBALS.G_OPR_LOCK;
1222 
1223     QP_Price_Formula_PVT.Lock_Price_Formula
1224     (   p_api_version_number          => 1.0
1225     ,   p_init_msg_list               => FND_API.G_TRUE
1226     ,   x_return_status               => l_return_status
1227     ,   x_msg_count                   => x_msg_count
1228     ,   x_msg_data                    => x_msg_data
1229     ,   p_FORMULA_rec                 => l_FORMULA_rec
1230     ,   x_FORMULA_rec                 => l_x_FORMULA_rec
1231     ,   x_FORMULA_LINES_tbl           => l_x_FORMULA_LINES_tbl
1232     );
1233 
1234     IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
1235 
1236         --  Set DB flag and write record to cache.
1237 
1238         l_x_FORMULA_rec.db_flag := FND_API.G_TRUE;
1239 
1240         Write_FORMULA
1241         (   p_FORMULA_rec                 => l_x_FORMULA_rec
1242         ,   p_db_record                   => TRUE
1243         );
1244 
1245     END IF;
1246 
1247     --  Set return status.
1248 
1249     x_return_status := l_return_status;
1250 
1251     --  Get message count and data
1252 
1253     OE_MSG_PUB.Count_And_Get
1254     (   p_count                       => x_msg_count
1255     ,   p_data                        => x_msg_data
1256     );
1257 
1258 
1259 EXCEPTION
1260 
1261     WHEN OTHERS THEN
1262 
1263         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1264         THEN
1265             OE_MSG_PUB.Add_Exc_Msg
1266             (   G_PKG_NAME
1267             ,   'Lock_Row'
1268             );
1269         END IF;
1270 
1271         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1272 
1273         --  Get message count and data
1274 
1275         OE_MSG_PUB.Count_And_Get
1276         (   p_count                       => x_msg_count
1277         ,   p_data                        => x_msg_data
1278         );
1279 
1280 
1281 
1282 END Lock_Row;
1283 
1284 --  Procedures maintaining FORMULA record cache.
1285 
1286 PROCEDURE Write_FORMULA
1287 (   p_FORMULA_rec                   IN  QP_Price_Formula_PUB.Formula_Rec_Type
1288 ,   p_db_record                     IN  BOOLEAN := FALSE
1289 )
1290 IS
1291 BEGIN
1292 
1293     g_FORMULA_rec := p_FORMULA_rec;
1294 
1295     IF p_db_record THEN
1296 
1297         g_db_FORMULA_rec := p_FORMULA_rec;
1298 
1299     END IF;
1300 
1301 END Write_Formula;
1302 
1303 FUNCTION Get_FORMULA
1304 (   p_db_record                     IN  BOOLEAN := FALSE
1305 ,   p_price_formula_id              IN  NUMBER
1306 )
1307 RETURN QP_Price_Formula_PUB.Formula_Rec_Type
1308 IS
1309 BEGIN
1310 
1311     IF  p_price_formula_id <> g_FORMULA_rec.price_formula_id
1312     THEN
1313 
1314         --  Query row from DB
1315 
1316         g_FORMULA_rec := QP_Formula_Util.Query_Row
1317         (   p_price_formula_id            => p_price_formula_id
1318         );
1319 
1320         g_FORMULA_rec.db_flag          := FND_API.G_TRUE;
1321 
1322         --  Load DB record
1323 
1324         g_db_FORMULA_rec               := g_FORMULA_rec;
1325 
1326     END IF;
1327 
1328     IF p_db_record THEN
1329 
1330         RETURN g_db_FORMULA_rec;
1331 
1332     ELSE
1333 
1334         RETURN g_FORMULA_rec;
1335 
1336     END IF;
1337 
1338 END Get_Formula;
1339 
1340 PROCEDURE Clear_Formula
1341 IS
1342 BEGIN
1343 
1344     g_FORMULA_rec                  := QP_Price_Formula_PUB.G_MISS_FORMULA_REC;
1345     g_db_FORMULA_rec               := QP_Price_Formula_PUB.G_MISS_FORMULA_REC;
1346 
1347 END Clear_Formula;
1348 
1349 END QP_QP_Form_Formula;