DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_QP_FORM_FORMULA_LINES

Source


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