DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_QP_FORM_PLL_PRICING_ATTR

Source


1 PACKAGE BODY QP_QP_Form_pll_pricing_attr AS
2 /* $Header: QPXFPLAB.pls 120.5 2008/06/12 07:42:04 kdurgasi ship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'Qp_Qp_Form_pll_pricing_attr';
7 
8 --  Global variables holding cached record.
9 
10 g_PRICING_ATTR_rec            QP_Price_List_PUB.Pricing_Attr_Rec_Type;
11 g_db_PRICING_ATTR_rec         QP_Price_List_PUB.Pricing_Attr_Rec_Type;
12 
13 --  Forward declaration of procedures maintaining entity record cache.
14 
15 PROCEDURE Write_PRICING_ATTR
16 (   p_PRICING_ATTR_rec              IN  QP_Price_List_PUB.Pricing_Attr_Rec_Type
17 ,   p_db_record                     IN  BOOLEAN := FALSE
18 );
19 
20 FUNCTION Get_PRICING_ATTR
21 (   p_db_record                     IN  BOOLEAN := FALSE
22 ,   p_pricing_attribute_id          IN  NUMBER
23 )
24 RETURN QP_Price_List_PUB.Pricing_Attr_Rec_Type;
25 
26 PROCEDURE Clear_PRICING_ATTR;
27 
28 --  Global variable holding performed operations.
29 
30 g_opr__tbl                    QP_Price_List_PUB.Pricing_Attr_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 ,   p_list_header_id                IN NUMBER DEFAULT NULL
40 ,   p_list_line_id                  IN NUMBER
41 ,   x_accumulate_flag               OUT NOCOPY /* file.sql.39 change */ VARCHAR2
42 ,   x_attribute1                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
43 ,   x_attribute10                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
44 ,   x_attribute11                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
45 ,   x_attribute12                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
46 ,   x_attribute13                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
47 ,   x_attribute14                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
48 ,   x_attribute15                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
49 ,   x_attribute2                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
50 ,   x_attribute3                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
51 ,   x_attribute4                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
52 ,   x_attribute5                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
53 ,   x_attribute6                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
54 ,   x_attribute7                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
55 ,   x_attribute8                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
56 ,   x_attribute9                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
57 ,   x_attribute_grouping_no         OUT NOCOPY /* file.sql.39 change */ NUMBER
58 ,   x_context                       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
59 ,   x_excluder_flag                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
60 ,   x_list_line_id                  OUT NOCOPY /* file.sql.39 change */ NUMBER
61 ,   x_pricing_attribute             OUT NOCOPY /* file.sql.39 change */ VARCHAR2
62 ,   x_pricing_attribute_context     OUT NOCOPY /* file.sql.39 change */ VARCHAR2
63 ,   x_pricing_attribute_id          OUT NOCOPY /* file.sql.39 change */ NUMBER
64 ,   x_pricing_attr_value_from       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
65 ,   x_pricing_attr_value_to         OUT NOCOPY /* file.sql.39 change */ VARCHAR2
66 ,   x_product_attribute             OUT NOCOPY /* file.sql.39 change */ VARCHAR2
67 ,   x_product_attribute_context     OUT NOCOPY /* file.sql.39 change */ VARCHAR2
68 ,   x_product_attr_value            OUT NOCOPY /* file.sql.39 change */ VARCHAR2
69 ,   x_product_uom_code              OUT NOCOPY /* file.sql.39 change */ VARCHAR2
70 ,   x_accumulate                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
71 ,   x_excluder                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
72 ,   x_list_line                     OUT NOCOPY /* file.sql.39 change */ VARCHAR2
73 ,   x_product_uom                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
74 ,   x_from_rltd_modifier_id         OUT NOCOPY /* file.sql.39 change */ NUMBER
75 ,   x_comparison_operator_code      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
76 ,   x_pricing_attribute_datatype    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
77 ,   x_product_attribute_datatype    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
78 ,   p_from_rltd_modifier_id         IN  NUMBER := NULL
79 ,   p_pricing_attribute_context     IN  VARCHAR2 := NULL
80 ,   p_pricing_attribute             IN  VARCHAR2 := NULL
81 )
82 IS
83 l_PRICING_ATTR_rec            QP_Price_List_PUB.Pricing_Attr_Rec_Type;
84 l_PRICING_ATTR_val_rec        QP_Price_List_PUB.Pricing_Attr_Val_Rec_Type;
85 l_PRICING_ATTR_tbl            QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
86 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
87 l_return_status               VARCHAR2(1);
88 l_x_PRICE_LIST_rec            QP_Price_List_PUB.Price_List_Rec_Type;
89 l_x_PRICE_LIST_LINE_rec       QP_Price_List_PUB.Price_List_Line_Rec_Type;
90 l_x_PRICE_LIST_LINE_tbl       QP_Price_List_PUB.Price_List_Line_Tbl_Type;
91 l_x_QUALIFIERS_rec            Qp_Qualifier_Rules_Pub.Qualifiers_Rec_Type;
92 l_x_QUALIFIERS_tbl            Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
93 l_x_PRICING_ATTR_rec          QP_Price_List_PUB.Pricing_Attr_Rec_Type;
94 l_x_PRICING_ATTR_tbl          QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
95 BEGIN
96 
97     oe_debug_pub.add('Ren: inside default attr of prc attr 1');
98     --  Set control flags.
99 
100     l_control_rec.controlled_operation := TRUE;
101     l_control_rec.default_attributes   := TRUE;
102 
103     l_control_rec.change_attributes    := FALSE;
104     l_control_rec.validate_entity      := FALSE;
105     l_control_rec.write_to_DB          := FALSE;
106     l_control_rec.process              := FALSE;
107 
108     --  Instruct API to retain its caches
109 
110     l_control_rec.clear_api_cache      := FALSE;
111     l_control_rec.clear_api_requests   := FALSE;
112 
113     --  Load IN parameters if any exist
114 
115 
116     l_PRICING_ATTR_rec.list_header_id := p_list_header_id;
117     l_PRICING_ATTR_rec.list_line_id := p_list_line_id;
118     l_PRICING_ATTR_rec.from_rltd_modifier_id := p_from_rltd_modifier_id;
119  l_PRICING_ATTR_rec.pricing_attribute_context := p_pricing_attribute_context;
120  l_PRICING_ATTR_rec.pricing_attribute := p_pricing_attribute;
121 
122 
123 
124     --  Defaulting of flex values is currently done by the form.
125     --  Set flex attributes to NULL in order to avoid defaulting them.
126 
127     l_PRICING_ATTR_rec.attribute1                 := NULL;
128     l_PRICING_ATTR_rec.attribute10                := NULL;
129     l_PRICING_ATTR_rec.attribute11                := NULL;
130     l_PRICING_ATTR_rec.attribute12                := NULL;
131     l_PRICING_ATTR_rec.attribute13                := NULL;
132     l_PRICING_ATTR_rec.attribute14                := NULL;
133     l_PRICING_ATTR_rec.attribute15                := NULL;
134     l_PRICING_ATTR_rec.attribute2                 := NULL;
135     l_PRICING_ATTR_rec.attribute3                 := NULL;
136     l_PRICING_ATTR_rec.attribute4                 := NULL;
137     l_PRICING_ATTR_rec.attribute5                 := NULL;
138     l_PRICING_ATTR_rec.attribute6                 := NULL;
139     l_PRICING_ATTR_rec.attribute7                 := NULL;
140     l_PRICING_ATTR_rec.attribute8                 := NULL;
141     l_PRICING_ATTR_rec.attribute9                 := NULL;
142     l_PRICING_ATTR_rec.context                    := NULL;
143 
144     --  Set Operation to Create
145 
146     l_PRICING_ATTR_rec.operation := QP_GLOBALS.G_OPR_CREATE;
147 
148     --  Populate PRICING_ATTR table
149 
150     l_PRICING_ATTR_tbl(1) := l_PRICING_ATTR_rec;
151 
152     --  Call QP_LIST_HEADERS_PVT.Process_PRICE_LIST
153 
154     QP_LIST_HEADERS_PVT.Process_PRICE_LIST
155     (   p_api_version_number          => 1.0
156     ,   p_init_msg_list               => FND_API.G_TRUE
157     ,   x_return_status               => l_return_status
158     ,   x_msg_count                   => x_msg_count
159     ,   x_msg_data                    => x_msg_data
160     ,   p_control_rec                 => l_control_rec
161     ,   p_PRICING_ATTR_tbl            => l_PRICING_ATTR_tbl
162     ,   x_PRICE_LIST_rec              => l_x_PRICE_LIST_rec
163     ,   x_PRICE_LIST_LINE_tbl         => l_x_PRICE_LIST_LINE_tbl
164     ,   x_QUALIFIERS_tbl              => l_x_QUALIFIERS_tbl
165     ,   x_PRICING_ATTR_tbl            => l_x_PRICING_ATTR_tbl
166     );
167 
168     oe_debug_pub.add('Ren: after process price list 1');
169 
170     oe_debug_pub.add('return status is : ' || l_return_status);
171 
172     oe_debug_pub.add('ren: msg data 1 is : ' || x_msg_data);
173 
174     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
175         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
176     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
177         RAISE FND_API.G_EXC_ERROR;
178     END IF;
179 
180 
181     --  Unload out tbl
182 
183     l_x_PRICING_ATTR_rec := l_x_PRICING_ATTR_tbl(1);
184 
185     --  Load OUT parameters.
186 
187     x_accumulate_flag              := l_x_PRICING_ATTR_rec.accumulate_flag;
188     x_attribute1                   := l_x_PRICING_ATTR_rec.attribute1;
189     x_attribute10                  := l_x_PRICING_ATTR_rec.attribute10;
190     x_attribute11                  := l_x_PRICING_ATTR_rec.attribute11;
191     x_attribute12                  := l_x_PRICING_ATTR_rec.attribute12;
192     x_attribute13                  := l_x_PRICING_ATTR_rec.attribute13;
193     x_attribute14                  := l_x_PRICING_ATTR_rec.attribute14;
194     x_attribute15                  := l_x_PRICING_ATTR_rec.attribute15;
195     x_attribute2                   := l_x_PRICING_ATTR_rec.attribute2;
196     x_attribute3                   := l_x_PRICING_ATTR_rec.attribute3;
197     x_attribute4                   := l_x_PRICING_ATTR_rec.attribute4;
198     x_attribute5                   := l_x_PRICING_ATTR_rec.attribute5;
199     x_attribute6                   := l_x_PRICING_ATTR_rec.attribute6;
200     x_attribute7                   := l_x_PRICING_ATTR_rec.attribute7;
201     x_attribute8                   := l_x_PRICING_ATTR_rec.attribute8;
202     x_attribute9                   := l_x_PRICING_ATTR_rec.attribute9;
203     x_attribute_grouping_no        := l_x_PRICING_ATTR_rec.attribute_grouping_no;
204     x_context                      := l_x_PRICING_ATTR_rec.context;
205     x_excluder_flag                := l_x_PRICING_ATTR_rec.excluder_flag;
206     x_list_line_id                 := l_x_PRICING_ATTR_rec.list_line_id;
207     x_pricing_attribute            := l_x_PRICING_ATTR_rec.pricing_attribute;
208     x_pricing_attribute_context    := l_x_PRICING_ATTR_rec.pricing_attribute_context;
209     x_pricing_attribute_id         := l_x_PRICING_ATTR_rec.pricing_attribute_id;
210     x_pricing_attr_value_from      := l_x_PRICING_ATTR_rec.pricing_attr_value_from;
211     x_pricing_attr_value_to        := l_x_PRICING_ATTR_rec.pricing_attr_value_to;
212     x_product_attribute            := l_x_PRICING_ATTR_rec.product_attribute;
213     x_product_attribute_context    := l_x_PRICING_ATTR_rec.product_attribute_context;
214     x_product_attr_value           := l_x_PRICING_ATTR_rec.product_attr_value;
215     x_product_uom_code             := l_x_PRICING_ATTR_rec.product_uom_code;
216     x_from_rltd_modifier_id        := l_x_PRICING_ATTR_rec.from_rltd_modifier_id;
217     x_comparison_operator_code     := l_x_PRICING_ATTR_rec.comparison_operator_code;
218     x_pricing_attribute_datatype := l_x_PRICING_ATTR_rec.pricing_attribute_datatype;
219     x_product_attribute_datatype := l_x_PRICING_ATTR_rec.product_attribute_datatype;
220 
221     --  Load display out parameters if any
222 
223     oe_debug_pub.add('Ren: before get_values 1');
224     oe_debug_pub.add('ren : msg data 0.5 is : ' || x_msg_data);
225 
226     l_PRICING_ATTR_val_rec := Qp_pll_pricing_attr_Util.Get_Values
227     (   p_PRICING_ATTR_rec            => l_x_PRICING_ATTR_rec
228     );
229     x_accumulate                   := l_PRICING_ATTR_val_rec.accumulate;
230     x_excluder                     := l_PRICING_ATTR_val_rec.excluder;
231     x_list_line                    := l_PRICING_ATTR_val_rec.list_line;
232     x_product_uom                  := l_PRICING_ATTR_val_rec.product_uom;
233 
234 
235     oe_debug_pub.add('Ren: after get_values 1 ');
236 
237     --  Write to cache.
238     --  Set db_flag to False before writing to cache
239 
240     l_x_PRICING_ATTR_rec.db_flag := FND_API.G_FALSE;
241 
242     oe_debug_pub.add('Ren: before write prc attr 1');
243     oe_debug_pub.add('Ren: msg data 1 is :' || x_msg_data);
244 
245     Write_PRICING_ATTR
246     (   p_PRICING_ATTR_rec            => l_x_PRICING_ATTR_rec
247     );
248 
249     oe_debug_pub.add('Ren: msg data 2 is :' || x_msg_data);
250 
251     --  Set return status.
252 
253     x_return_status := FND_API.G_RET_STS_SUCCESS;
254 
255     --  Get message count and data
256 
257     oe_msg_pub.Count_And_Get
258     (   p_count                       => x_msg_count
259     ,   p_data                        => x_msg_data
260     );
261 
262    oe_debug_pub.add('Ren: msg data 2.5 is :' || x_msg_data);
263 
264    oe_debug_pub.add('exiting default attributes');
265 
266 
267 EXCEPTION
268 
269     WHEN FND_API.G_EXC_ERROR THEN
270 
271         x_return_status := FND_API.G_RET_STS_ERROR;
272 
273         --  Get message count and data
274 
275         oe_msg_pub.Count_And_Get
276         (   p_count                       => x_msg_count
277         ,   p_data                        => x_msg_data
278         );
279 
280     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
281 
282         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
283 
284         --  Get message count and data
285 
286         oe_msg_pub.Count_And_Get
287         (   p_count                       => x_msg_count
288         ,   p_data                        => x_msg_data
289         );
290 
291     WHEN OTHERS THEN
292 
293         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
294 
295         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
296         THEN
297             oe_msg_pub.Add_Exc_Msg
298             (   G_PKG_NAME
299             ,   'Default_Attributes'
300             );
301         END IF;
302 
303         --  Get message count and data
304 
305         oe_msg_pub.Count_And_Get
306         (   p_count                       => x_msg_count
307         ,   p_data                        => x_msg_data
308         );
309 
310 END Default_Attributes;
311 
312 --  Procedure   :   Change_Attribute
313 --
314 
315 PROCEDURE Change_Attribute
316 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
317 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
318 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
319 ,   p_pricing_attribute_id          IN  NUMBER
320 ,   p_attr_id                       IN  NUMBER
321 ,   p_attr_value                    IN  VARCHAR2
322 ,   p_attribute1                    IN  VARCHAR2
323 ,   p_attribute10                   IN  VARCHAR2
324 ,   p_attribute11                   IN  VARCHAR2
325 ,   p_attribute12                   IN  VARCHAR2
326 ,   p_attribute13                   IN  VARCHAR2
327 ,   p_attribute14                   IN  VARCHAR2
328 ,   p_attribute15                   IN  VARCHAR2
329 ,   p_attribute2                    IN  VARCHAR2
330 ,   p_attribute3                    IN  VARCHAR2
331 ,   p_attribute4                    IN  VARCHAR2
332 ,   p_attribute5                    IN  VARCHAR2
333 ,   p_attribute6                    IN  VARCHAR2
334 ,   p_attribute7                    IN  VARCHAR2
335 ,   p_attribute8                    IN  VARCHAR2
336 ,   p_attribute9                    IN  VARCHAR2
337 ,   p_context                       IN  VARCHAR2
338 ,   x_accumulate_flag               OUT NOCOPY /* file.sql.39 change */ VARCHAR2
339 ,   x_attribute1                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
340 ,   x_attribute10                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
341 ,   x_attribute11                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
342 ,   x_attribute12                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
343 ,   x_attribute13                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
344 ,   x_attribute14                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
345 ,   x_attribute15                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
346 ,   x_attribute2                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
347 ,   x_attribute3                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
348 ,   x_attribute4                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
349 ,   x_attribute5                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
350 ,   x_attribute6                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
351 ,   x_attribute7                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
352 ,   x_attribute8                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
353 ,   x_attribute9                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
354 ,   x_attribute_grouping_no         OUT NOCOPY /* file.sql.39 change */ NUMBER
355 ,   x_context                       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
356 ,   x_excluder_flag                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
357 ,   x_list_line_id                  OUT NOCOPY /* file.sql.39 change */ NUMBER
358 ,   x_pricing_attribute             OUT NOCOPY /* file.sql.39 change */ VARCHAR2
359 ,   x_pricing_attribute_context     OUT NOCOPY /* file.sql.39 change */ VARCHAR2
360 ,   x_pricing_attribute_id          OUT NOCOPY /* file.sql.39 change */ NUMBER
361 ,   x_pricing_attr_value_from       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
362 ,   x_pricing_attr_value_to         OUT NOCOPY /* file.sql.39 change */ VARCHAR2
363 ,   x_product_attribute             OUT NOCOPY /* file.sql.39 change */ VARCHAR2
364 ,   x_product_attribute_context     OUT NOCOPY /* file.sql.39 change */ VARCHAR2
365 ,   x_product_attr_value            OUT NOCOPY /* file.sql.39 change */ VARCHAR2
366 ,   x_product_uom_code              OUT NOCOPY /* file.sql.39 change */ VARCHAR2
367 ,   x_accumulate                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
368 ,   x_excluder                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
369 ,   x_list_line                     OUT NOCOPY /* file.sql.39 change */ VARCHAR2
370 ,   x_product_uom                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
371 ,   x_from_rltd_modifier_id         OUT NOCOPY /* file.sql.39 change */ NUMBER
372 ,   x_comparison_operator_code      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
373 ,   x_pricing_attribute_datatype    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
374 ,   x_product_attribute_datatype    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
375 )
376 IS
377 l_PRICING_ATTR_rec            QP_Price_List_PUB.Pricing_Attr_Rec_Type;
378 l_old_PRICING_ATTR_rec        QP_Price_List_PUB.Pricing_Attr_Rec_Type;
379 l_PRICING_ATTR_val_rec        QP_Price_List_PUB.Pricing_Attr_Val_Rec_Type;
380 l_PRICING_ATTR_tbl            QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
381 l_old_PRICING_ATTR_tbl        QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
382 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
383 l_return_status               VARCHAR2(1);
384 l_x_PRICE_LIST_rec            QP_Price_List_PUB.Price_List_Rec_Type;
385 l_x_PRICE_LIST_LINE_rec       QP_Price_List_PUB.Price_List_Line_Rec_Type;
386 l_x_PRICE_LIST_LINE_tbl       QP_Price_List_PUB.Price_List_Line_Tbl_Type;
387 l_x_QUALIFIERS_rec            Qp_Qualifier_Rules_Pub.Qualifiers_Rec_Type;
388 l_x_QUALIFIERS_tbl            Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
389 l_x_PRICING_ATTR_rec          QP_Price_List_PUB.Pricing_Attr_Rec_Type;
390 l_x_PRICING_ATTR_tbl          QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
391 BEGIN
392 
393     --  Set control flags.
394 
395     l_control_rec.controlled_operation := TRUE;
396     l_control_rec.change_attributes    := TRUE;
397 
398     l_control_rec.default_attributes   := FALSE;
399     l_control_rec.validate_entity      := FALSE;
400     l_control_rec.write_to_DB          := FALSE;
401     l_control_rec.process              := FALSE;
402 
403     --  Instruct API to retain its caches
404 
405     l_control_rec.clear_api_cache      := FALSE;
406     l_control_rec.clear_api_requests   := FALSE;
407 
408     --  Read PRICING_ATTR from cache
409 
410     l_PRICING_ATTR_rec := Get_PRICING_ATTR
411     (   p_db_record                   => FALSE
412     ,   p_pricing_attribute_id        => p_pricing_attribute_id
413     );
414 
415     l_old_PRICING_ATTR_rec         := l_PRICING_ATTR_rec;
416 
417     IF p_attr_id = Qp_pll_pricing_attr_Util.G_ACCUMULATE THEN
418         l_PRICING_ATTR_rec.accumulate_flag := p_attr_value;
419     ELSIF p_attr_id = Qp_pll_pricing_attr_Util.G_ATTRIBUTE_GROUPING_NO THEN
420         l_PRICING_ATTR_rec.attribute_grouping_no := TO_NUMBER(p_attr_value);
421     ELSIF p_attr_id = Qp_pll_pricing_attr_Util.G_EXCLUDER THEN
422         l_PRICING_ATTR_rec.excluder_flag := p_attr_value;
423     ELSIF p_attr_id = Qp_pll_pricing_attr_Util.G_LIST_LINE THEN
424         l_PRICING_ATTR_rec.list_line_id := TO_NUMBER(p_attr_value);
425     ELSIF p_attr_id = Qp_pll_pricing_attr_Util.G_PRICING_ATTRIBUTE THEN
426         l_PRICING_ATTR_rec.pricing_attribute := p_attr_value;
427     ELSIF p_attr_id = Qp_pll_pricing_attr_Util.G_PRICING_ATTRIBUTE_CONTEXT THEN
428         l_PRICING_ATTR_rec.pricing_attribute_context := p_attr_value;
429 /*
430     ELSIF p_attr_id = Qp_pll_pricing_attr_Util.G_PRICING_ATTRIBUTE THEN
431         l_PRICING_ATTR_rec.pricing_attribute_id := TO_NUMBER(p_attr_value);
432 */
433     ELSIF p_attr_id = Qp_pll_pricing_attr_Util.G_PRICING_ATTR_VALUE_FROM THEN
434         l_PRICING_ATTR_rec.pricing_attr_value_from := p_attr_value;
435     ELSIF p_attr_id = Qp_pll_pricing_attr_Util.G_PRICING_ATTR_VALUE_TO THEN
436         l_PRICING_ATTR_rec.pricing_attr_value_to := p_attr_value;
437     ELSIF p_attr_id = Qp_pll_pricing_attr_Util.G_PRODUCT_ATTRIBUTE THEN
438         l_PRICING_ATTR_rec.product_attribute := p_attr_value;
439     ELSIF p_attr_id = Qp_pll_pricing_attr_Util.G_PRODUCT_ATTRIBUTE_CONTEXT THEN
440         l_PRICING_ATTR_rec.product_attribute_context := p_attr_value;
441     ELSIF p_attr_id = Qp_pll_pricing_attr_Util.G_PRODUCT_ATTR_VALUE THEN
442         l_PRICING_ATTR_rec.product_attr_value := p_attr_value;
443     ELSIF p_attr_id = Qp_pll_pricing_attr_Util.G_PRODUCT_UOM THEN
444         l_PRICING_ATTR_rec.product_uom_code := p_attr_value;
445     ELSIF p_attr_id = Qp_pll_pricing_attr_Util.G_FROM_RLTD_MODIFIER THEN
446         l_PRICING_ATTR_rec.from_rltd_modifier_id := to_number(p_attr_value);
447     ELSIF p_attr_id = Qp_pll_pricing_attr_Util.G_COMPARISON_OPERATOR_CODE THEN
448 	   l_PRICING_ATTR_rec.comparison_operator_code := p_attr_value;
449   ELSIF p_attr_id = Qp_pll_pricing_attr_Util.G_PRICING_ATTRIBUTE_DATATYPE THEN
450 	   l_PRICING_ATTR_rec.pricing_attribute_datatype := p_attr_value;
451   ELSIF p_attr_id = Qp_pll_pricing_attr_Util.G_PRODUCT_ATTRIBUTE_DATATYPE THEN
452 	   l_PRICING_ATTR_rec.product_attribute_datatype := p_attr_value;
453     ELSIF p_attr_id = Qp_pll_pricing_attr_Util.G_ATTRIBUTE1
454     OR     p_attr_id = Qp_pll_pricing_attr_Util.G_ATTRIBUTE10
455     OR     p_attr_id = Qp_pll_pricing_attr_Util.G_ATTRIBUTE11
456     OR     p_attr_id = Qp_pll_pricing_attr_Util.G_ATTRIBUTE12
457     OR     p_attr_id = Qp_pll_pricing_attr_Util.G_ATTRIBUTE13
458     OR     p_attr_id = Qp_pll_pricing_attr_Util.G_ATTRIBUTE14
459     OR     p_attr_id = Qp_pll_pricing_attr_Util.G_ATTRIBUTE15
460     OR     p_attr_id = Qp_pll_pricing_attr_Util.G_ATTRIBUTE2
461     OR     p_attr_id = Qp_pll_pricing_attr_Util.G_ATTRIBUTE3
462     OR     p_attr_id = Qp_pll_pricing_attr_Util.G_ATTRIBUTE4
463     OR     p_attr_id = Qp_pll_pricing_attr_Util.G_ATTRIBUTE5
464     OR     p_attr_id = Qp_pll_pricing_attr_Util.G_ATTRIBUTE6
465     OR     p_attr_id = Qp_pll_pricing_attr_Util.G_ATTRIBUTE7
466     OR     p_attr_id = Qp_pll_pricing_attr_Util.G_ATTRIBUTE8
467     OR     p_attr_id = Qp_pll_pricing_attr_Util.G_ATTRIBUTE9
468     OR     p_attr_id = Qp_pll_pricing_attr_Util.G_CONTEXT
469     THEN
470 
471         l_PRICING_ATTR_rec.attribute1  := p_attribute1;
472         l_PRICING_ATTR_rec.attribute10 := p_attribute10;
473         l_PRICING_ATTR_rec.attribute11 := p_attribute11;
474         l_PRICING_ATTR_rec.attribute12 := p_attribute12;
475         l_PRICING_ATTR_rec.attribute14 := p_attribute14;
476         l_PRICING_ATTR_rec.attribute15 := p_attribute15;
477         l_PRICING_ATTR_rec.attribute2  := p_attribute2;
478         l_PRICING_ATTR_rec.attribute3  := p_attribute3;
479         l_PRICING_ATTR_rec.attribute4  := p_attribute4;
480         l_PRICING_ATTR_rec.attribute5  := p_attribute5;
481         l_PRICING_ATTR_rec.attribute6  := p_attribute6;
482         l_PRICING_ATTR_rec.attribute7  := p_attribute7;
483         l_PRICING_ATTR_rec.attribute8  := p_attribute8;
484         l_PRICING_ATTR_rec.attribute9  := p_attribute9;
485         l_PRICING_ATTR_rec.context     := p_context;
486 
487     ELSE
488 
489         --  Unexpected error, unrecognized attribute
490 
491         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
492         THEN
493             oe_msg_pub.Add_Exc_Msg
494             (   G_PKG_NAME
495             ,   'Change_Attribute'
496             ,   'Unrecognized attribute'
497             );
498         END IF;
499 
500         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
501 
502     END IF;
503 
504     --  Set Operation.
505 
506     IF FND_API.To_Boolean(l_PRICING_ATTR_rec.db_flag) THEN
507         l_PRICING_ATTR_rec.operation := QP_GLOBALS.G_OPR_UPDATE;
508     ELSE
509         l_PRICING_ATTR_rec.operation := QP_GLOBALS.G_OPR_CREATE;
510     END IF;
511 
512     --  Populate PRICING_ATTR table
513 
514     l_PRICING_ATTR_tbl(1) := l_PRICING_ATTR_rec;
515     l_old_PRICING_ATTR_tbl(1) := l_old_PRICING_ATTR_rec;
516 
517     --  Call QP_LIST_HEADERS_PVT.Process_PRICE_LIST
518 
519     QP_LIST_HEADERS_PVT.Process_PRICE_LIST
520     (   p_api_version_number          => 1.0
521     ,   p_init_msg_list               => FND_API.G_TRUE
522     ,   p_validation_level            => FND_API.G_VALID_LEVEL_NONE
523     ,   x_return_status               => l_return_status
524     ,   x_msg_count                   => x_msg_count
525     ,   x_msg_data                    => x_msg_data
526     ,   p_control_rec                 => l_control_rec
527     ,   p_PRICING_ATTR_tbl            => l_PRICING_ATTR_tbl
528     ,   p_old_PRICING_ATTR_tbl        => l_old_PRICING_ATTR_tbl
529     ,   x_PRICE_LIST_rec              => l_x_PRICE_LIST_rec
530     ,   x_PRICE_LIST_LINE_tbl         => l_x_PRICE_LIST_LINE_tbl
531     ,   x_QUALIFIERS_tbl              => l_x_QUALIFIERS_tbl
532     ,   x_PRICING_ATTR_tbl            => l_x_PRICING_ATTR_tbl
533     );
534 
535     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
536         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
537     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
538         RAISE FND_API.G_EXC_ERROR;
539     END IF;
540 
541 
542     --  Unload out tbl
543 
544     l_x_PRICING_ATTR_rec := l_x_PRICING_ATTR_tbl(1);
545 
546     --  Init OUT parameters to missing.
547 
548     x_accumulate_flag              := FND_API.G_MISS_CHAR;
549     x_attribute1                   := FND_API.G_MISS_CHAR;
550     x_attribute10                  := FND_API.G_MISS_CHAR;
551     x_attribute11                  := FND_API.G_MISS_CHAR;
552     x_attribute12                  := FND_API.G_MISS_CHAR;
553     x_attribute13                  := FND_API.G_MISS_CHAR;
554     x_attribute14                  := FND_API.G_MISS_CHAR;
555     x_attribute15                  := FND_API.G_MISS_CHAR;
556     x_attribute2                   := FND_API.G_MISS_CHAR;
557     x_attribute3                   := FND_API.G_MISS_CHAR;
558     x_attribute4                   := FND_API.G_MISS_CHAR;
559     x_attribute5                   := FND_API.G_MISS_CHAR;
560     x_attribute6                   := FND_API.G_MISS_CHAR;
561     x_attribute7                   := FND_API.G_MISS_CHAR;
562     x_attribute8                   := FND_API.G_MISS_CHAR;
563     x_attribute9                   := FND_API.G_MISS_CHAR;
564     x_attribute_grouping_no        := FND_API.G_MISS_NUM;
565     x_context                      := FND_API.G_MISS_CHAR;
566     x_excluder_flag                := FND_API.G_MISS_CHAR;
567     x_list_line_id                 := FND_API.G_MISS_NUM;
568     x_pricing_attribute            := FND_API.G_MISS_CHAR;
569     x_pricing_attribute_context    := FND_API.G_MISS_CHAR;
570     x_pricing_attribute_id         := FND_API.G_MISS_NUM;
571     x_pricing_attr_value_from      := FND_API.G_MISS_CHAR;
572     x_pricing_attr_value_to        := FND_API.G_MISS_CHAR;
573     x_product_attribute            := FND_API.G_MISS_CHAR;
574     x_product_attribute_context    := FND_API.G_MISS_CHAR;
575     x_product_attr_value           := FND_API.G_MISS_CHAR;
576     x_product_uom_code             := FND_API.G_MISS_CHAR;
577     x_accumulate                   := FND_API.G_MISS_CHAR;
578     x_excluder                     := FND_API.G_MISS_CHAR;
579     x_list_line                    := FND_API.G_MISS_CHAR;
580     x_product_uom                  := FND_API.G_MISS_CHAR;
581     x_from_rltd_modifier_id        := FND_API.G_MISS_NUM;
582     x_comparison_operator_code     := FND_API.G_MISS_CHAR;
583     x_pricing_attribute_datatype   := FND_API.G_MISS_CHAR;
584     x_product_attribute_datatype   := FND_API.G_MISS_CHAR;
585 
586     --  Load display out parameters if any
587 
588     l_PRICING_ATTR_val_rec := Qp_pll_pricing_attr_Util.Get_Values
589     (   p_PRICING_ATTR_rec            => l_x_PRICING_ATTR_rec
590     ,   p_old_PRICING_ATTR_rec        => l_PRICING_ATTR_rec
591     );
592 
593     --  Return changed attributes.
594 
595     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.accumulate_flag,
596                             l_PRICING_ATTR_rec.accumulate_flag)
597     THEN
598         x_accumulate_flag := l_x_PRICING_ATTR_rec.accumulate_flag;
599         x_accumulate := l_PRICING_ATTR_val_rec.accumulate;
600     END IF;
601 
602     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.from_rltd_modifier_id,
603                             l_PRICING_ATTR_rec.from_rltd_modifier_id)
604     THEN
605         x_from_rltd_modifier_id := l_x_PRICING_ATTR_rec.from_rltd_modifier_id;
606     END IF;
607 
608     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.attribute1,
609                             l_PRICING_ATTR_rec.attribute1)
610     THEN
611         x_attribute1 := l_x_PRICING_ATTR_rec.attribute1;
612     END IF;
613 
614     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.attribute10,
615                             l_PRICING_ATTR_rec.attribute10)
616     THEN
617         x_attribute10 := l_x_PRICING_ATTR_rec.attribute10;
618     END IF;
619 
620     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.attribute11,
621                             l_PRICING_ATTR_rec.attribute11)
622     THEN
623         x_attribute11 := l_x_PRICING_ATTR_rec.attribute11;
624     END IF;
625 
626     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.attribute12,
627                             l_PRICING_ATTR_rec.attribute12)
628     THEN
629         x_attribute12 := l_x_PRICING_ATTR_rec.attribute12;
630     END IF;
631 
632     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.attribute13,
633                             l_PRICING_ATTR_rec.attribute13)
634     THEN
635         x_attribute13 := l_x_PRICING_ATTR_rec.attribute13;
636     END IF;
637 
638     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.attribute14,
639                             l_PRICING_ATTR_rec.attribute14)
640     THEN
641         x_attribute14 := l_x_PRICING_ATTR_rec.attribute14;
642     END IF;
643 
644     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.attribute15,
645                             l_PRICING_ATTR_rec.attribute15)
646     THEN
647         x_attribute15 := l_x_PRICING_ATTR_rec.attribute15;
648     END IF;
649 
650     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.attribute2,
651                             l_PRICING_ATTR_rec.attribute2)
652     THEN
653         x_attribute2 := l_x_PRICING_ATTR_rec.attribute2;
654     END IF;
655 
656     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.attribute3,
657                             l_PRICING_ATTR_rec.attribute3)
658     THEN
659         x_attribute3 := l_x_PRICING_ATTR_rec.attribute3;
660     END IF;
661 
662     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.attribute4,
663                             l_PRICING_ATTR_rec.attribute4)
664     THEN
665         x_attribute4 := l_x_PRICING_ATTR_rec.attribute4;
666     END IF;
667 
668     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.attribute5,
669                             l_PRICING_ATTR_rec.attribute5)
670     THEN
671         x_attribute5 := l_x_PRICING_ATTR_rec.attribute5;
672     END IF;
673 
674     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.attribute6,
675                             l_PRICING_ATTR_rec.attribute6)
676     THEN
677         x_attribute6 := l_x_PRICING_ATTR_rec.attribute6;
678     END IF;
679 
680     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.attribute7,
681                             l_PRICING_ATTR_rec.attribute7)
682     THEN
683         x_attribute7 := l_x_PRICING_ATTR_rec.attribute7;
684     END IF;
685 
686     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.attribute8,
687                             l_PRICING_ATTR_rec.attribute8)
688     THEN
689         x_attribute8 := l_x_PRICING_ATTR_rec.attribute8;
690     END IF;
691 
692     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.attribute9,
693                             l_PRICING_ATTR_rec.attribute9)
694     THEN
695         x_attribute9 := l_x_PRICING_ATTR_rec.attribute9;
696     END IF;
697 
698     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.attribute_grouping_no,
699                             l_PRICING_ATTR_rec.attribute_grouping_no)
700     THEN
701         x_attribute_grouping_no := l_x_PRICING_ATTR_rec.attribute_grouping_no;
702     END IF;
703 
704     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.context,
705                             l_PRICING_ATTR_rec.context)
706     THEN
707         x_context := l_x_PRICING_ATTR_rec.context;
708     END IF;
709 
710     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.excluder_flag,
711                             l_PRICING_ATTR_rec.excluder_flag)
712     THEN
713         x_excluder_flag := l_x_PRICING_ATTR_rec.excluder_flag;
714         x_excluder := l_PRICING_ATTR_val_rec.excluder;
715     END IF;
716 
717     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.list_line_id,
718                             l_PRICING_ATTR_rec.list_line_id)
719     THEN
720         x_list_line_id := l_x_PRICING_ATTR_rec.list_line_id;
721         x_list_line := l_PRICING_ATTR_val_rec.list_line;
722     END IF;
723 
724     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.pricing_attribute,
725                             l_PRICING_ATTR_rec.pricing_attribute)
726     THEN
727         x_pricing_attribute := l_x_PRICING_ATTR_rec.pricing_attribute;
728     END IF;
729 
730     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.pricing_attribute_context,
731                             l_PRICING_ATTR_rec.pricing_attribute_context)
732     THEN
733         x_pricing_attribute_context := l_x_PRICING_ATTR_rec.pricing_attribute_context;
734     END IF;
735 
736 /*  IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.pricing_attribute_id,
737                             l_PRICING_ATTR_rec.pricing_attribute_id)
738     THEN
739         x_pricing_attribute_id := l_x_PRICING_ATTR_rec.pricing_attribute_id;
740         x_pricing_attribute := l_PRICING_ATTR_val_rec.pricing_attribute;
741     END IF;
742 */
743     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.pricing_attr_value_from,
744                             l_PRICING_ATTR_rec.pricing_attr_value_from)
745     THEN
746         x_pricing_attr_value_from := l_x_PRICING_ATTR_rec.pricing_attr_value_from;
747     END IF;
748 
749     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.pricing_attr_value_to,
750                             l_PRICING_ATTR_rec.pricing_attr_value_to)
751     THEN
752         x_pricing_attr_value_to := l_x_PRICING_ATTR_rec.pricing_attr_value_to;
753     END IF;
754 
755     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.product_attribute,
756                             l_PRICING_ATTR_rec.product_attribute)
757     THEN
758         x_product_attribute := l_x_PRICING_ATTR_rec.product_attribute;
759     END IF;
760 
761     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.product_attribute_context,
762                             l_PRICING_ATTR_rec.product_attribute_context)
763     THEN
764         x_product_attribute_context := l_x_PRICING_ATTR_rec.product_attribute_context;
765     END IF;
766 
767     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.product_attr_value,
768                             l_PRICING_ATTR_rec.product_attr_value)
769     THEN
770         x_product_attr_value := l_x_PRICING_ATTR_rec.product_attr_value;
771     END IF;
772 
773     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.product_uom_code,
774                             l_PRICING_ATTR_rec.product_uom_code)
775     THEN
776         x_product_uom_code := l_x_PRICING_ATTR_rec.product_uom_code;
777         x_product_uom := l_PRICING_ATTR_val_rec.product_uom;
778     END IF;
779 
780     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.comparison_operator_code,
781 					   l_PRICING_ATTR_rec.comparison_operator_code)
782     THEN
783 	   x_comparison_operator_code := l_PRICING_ATTR_rec.comparison_operator_code;
784     END IF;
785 
786     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.pricing_attribute_datatype,
787 					   l_PRICING_ATTR_rec.pricing_attribute_datatype)
788     THEN
789 	   x_pricing_attribute_datatype := l_PRICING_ATTR_rec.pricing_attribute_datatype;
790     END IF;
791 
792     IF NOT QP_GLOBALS.Equal(l_x_PRICING_ATTR_rec.product_attribute_datatype,
793 					   l_PRICING_ATTR_rec.product_attribute_datatype)
794     THEN
795 	   x_product_attribute_datatype := l_PRICING_ATTR_rec.product_attribute_datatype;
796     END IF;
797 
798 
799 
800     --  Write to cache.
801 
802     Write_PRICING_ATTR
803     (   p_PRICING_ATTR_rec            => l_x_PRICING_ATTR_rec
804     );
805 
806     --  Set return status.
807 
808     x_return_status := FND_API.G_RET_STS_SUCCESS;
809 
810     --  Get message count and data
811 
812     oe_msg_pub.Count_And_Get
813     (   p_count                       => x_msg_count
814     ,   p_data                        => x_msg_data
815     );
816 
817 
818 EXCEPTION
819 
820     WHEN FND_API.G_EXC_ERROR THEN
821 
822         x_return_status := FND_API.G_RET_STS_ERROR;
823 
824         --  Get message count and data
825 
826         oe_msg_pub.Count_And_Get
827         (   p_count                       => x_msg_count
828         ,   p_data                        => x_msg_data
829         );
830 
831     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
832 
833         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
834 
835         --  Get message count and data
836 
837         oe_msg_pub.Count_And_Get
838         (   p_count                       => x_msg_count
839         ,   p_data                        => x_msg_data
840         );
841 
842     WHEN OTHERS THEN
843 
844         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
845 
846         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
847         THEN
848             oe_msg_pub.Add_Exc_Msg
849             (   G_PKG_NAME
850             ,   'Change_Attribute'
851             );
852         END IF;
853 
854         --  Get message count and data
855 
856         oe_msg_pub.Count_And_Get
857         (   p_count                       => x_msg_count
858         ,   p_data                        => x_msg_data
859         );
860 
861 END Change_Attribute;
862 
863 --  Procedure       Validate_And_Write
864 --
865 
866 PROCEDURE Validate_And_Write
867 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
868 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
869 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
870 ,   p_pricing_attribute_id          IN  NUMBER
871 ,   x_creation_date                 OUT NOCOPY /* file.sql.39 change */ DATE
872 ,   x_created_by                    OUT NOCOPY /* file.sql.39 change */ NUMBER
873 ,   x_last_update_date              OUT NOCOPY /* file.sql.39 change */ DATE
874 ,   x_last_updated_by               OUT NOCOPY /* file.sql.39 change */ NUMBER
875 ,   x_last_update_login             OUT NOCOPY /* file.sql.39 change */ NUMBER
876 ,   x_program_application_id        OUT NOCOPY /* file.sql.39 change */ NUMBER
877 ,   x_program_id                    OUT NOCOPY /* file.sql.39 change */ NUMBER
878 ,   x_program_update_date           OUT NOCOPY /* file.sql.39 change */ DATE
879 ,   x_request_id                    OUT NOCOPY /* file.sql.39 change */ NUMBER
880 )
881 IS
882 l_PRICING_ATTR_rec            QP_Price_List_PUB.Pricing_Attr_Rec_Type;
883 l_old_PRICING_ATTR_rec        QP_Price_List_PUB.Pricing_Attr_Rec_Type;
884 l_PRICING_ATTR_tbl            QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
885 l_old_PRICING_ATTR_tbl        QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
886 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
887 l_return_status               VARCHAR2(1);
888 l_x_PRICE_LIST_rec            QP_Price_List_PUB.Price_List_Rec_Type;
889 l_x_PRICE_LIST_LINE_rec       QP_Price_List_PUB.Price_List_Line_Rec_Type;
890 l_x_PRICE_LIST_LINE_tbl       QP_Price_List_PUB.Price_List_Line_Tbl_Type;
891 l_x_QUALIFIERS_rec            Qp_Qualifier_Rules_Pub.Qualifiers_Rec_Type;
892 l_x_QUALIFIERS_tbl            Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
893 l_x_PRICING_ATTR_rec          QP_Price_List_PUB.Pricing_Attr_Rec_Type;
894 l_x_PRICING_ATTR_tbl          QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
895 BEGIN
896 
897    oe_debug_pub.add('entering validate_and_write');
898     --  Set control flags.
899 
900     l_control_rec.controlled_operation := TRUE;
901     l_control_rec.validate_entity      := TRUE;
902     l_control_rec.write_to_DB          := TRUE;
903 
904     l_control_rec.default_attributes   := FALSE;
905     l_control_rec.change_attributes    := FALSE;
906     l_control_rec.process              := FALSE;
907 
908     --  Instruct API to retain its caches
909 
910     l_control_rec.clear_api_cache      := FALSE;
911     l_control_rec.clear_api_requests   := FALSE;
912 
913     --  Read PRICING_ATTR from cache
914 
915     l_old_PRICING_ATTR_rec := Get_PRICING_ATTR
916     (   p_db_record                   => TRUE
917     ,   p_pricing_attribute_id        => p_pricing_attribute_id
918     );
919 
920     l_PRICING_ATTR_rec := Get_PRICING_ATTR
921     (   p_db_record                   => FALSE
922     ,   p_pricing_attribute_id        => p_pricing_attribute_id
923     );
924 
925     --  Set Operation.
926 
927     IF FND_API.To_Boolean(l_PRICING_ATTR_rec.db_flag) THEN
928         l_PRICING_ATTR_rec.operation := QP_GLOBALS.G_OPR_UPDATE;
929     ELSE
930         l_PRICING_ATTR_rec.operation := QP_GLOBALS.G_OPR_CREATE;
931     END IF;
932 
933     --  Populate PRICING_ATTR table
934 
935     l_PRICING_ATTR_tbl(1) := l_PRICING_ATTR_rec;
936     l_old_PRICING_ATTR_tbl(1) := l_old_PRICING_ATTR_rec;
937 
938     --  Call QP_LIST_HEADERS_PVT.Process_PRICE_LIST
939 
940     QP_LIST_HEADERS_PVT.Process_PRICE_LIST
941     (   p_api_version_number          => 1.0
942     ,   p_init_msg_list               => FND_API.G_TRUE
943     ,   x_return_status               => l_return_status
944     ,   x_msg_count                   => x_msg_count
945     ,   x_msg_data                    => x_msg_data
946     ,   p_control_rec                 => l_control_rec
947     ,   p_PRICING_ATTR_tbl            => l_PRICING_ATTR_tbl
948     ,   p_old_PRICING_ATTR_tbl        => l_old_PRICING_ATTR_tbl
949     ,   x_PRICE_LIST_rec              => l_x_PRICE_LIST_rec
950     ,   x_PRICE_LIST_LINE_tbl         => l_x_PRICE_LIST_LINE_tbl
951     ,   x_QUALIFIERS_tbl              => l_x_QUALIFIERS_tbl
952     ,   x_PRICING_ATTR_tbl            => l_x_PRICING_ATTR_tbl
953     );
954 
955     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
956         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
957     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
958         RAISE FND_API.G_EXC_ERROR;
959     END IF;
960 
961 
962     --  Load OUT parameters.
963 
964     l_x_PRICING_ATTR_rec := l_x_PRICING_ATTR_tbl(1);
965 
966     x_creation_date                := l_x_PRICING_ATTR_rec.creation_date;
967     x_created_by                   := l_x_PRICING_ATTR_rec.created_by;
968     x_last_update_date             := l_x_PRICING_ATTR_rec.last_update_date;
969     x_last_updated_by              := l_x_PRICING_ATTR_rec.last_updated_by;
970     x_last_update_login            := l_x_PRICING_ATTR_rec.last_update_login;
971     x_program_application_id       := l_x_PRICING_ATTR_rec.program_application_id;
972     x_program_id                   := l_x_PRICING_ATTR_rec.program_id;
973     x_program_update_date          := l_x_PRICING_ATTR_rec.program_update_date;
974     x_request_id                   := l_x_PRICING_ATTR_rec.request_id;
975 
976     --  Clear PRICING_ATTR record cache
977 
978     Clear_PRICING_ATTR;
979 
980     --  Keep track of performed operations.
981 
982     l_old_PRICING_ATTR_rec.operation := l_PRICING_ATTR_rec.operation;
983 
984 
985     --  Set return status.
986 
987     x_return_status := FND_API.G_RET_STS_SUCCESS;
988 
989     --  Get message count and data
990 
991    oe_debug_pub.add('Ren: msg data in val_and_write of attr 1 is :' || x_msg_data);
992 
993     oe_msg_pub.Count_And_Get
994     (   p_count                       => x_msg_count
995     ,   p_data                        => x_msg_data
996     );
997    oe_debug_pub.add('Ren: msg data in val_and_write of attr 2 is :' || x_msg_data);
998 
999   oe_debug_pub.add('exiting validate_and_write');
1000 
1001 EXCEPTION
1002 
1003     WHEN FND_API.G_EXC_ERROR THEN
1004 
1005         x_return_status := FND_API.G_RET_STS_ERROR;
1006 
1007         --  Get message count and data
1008 
1009         oe_msg_pub.Count_And_Get
1010         (   p_count                       => x_msg_count
1011         ,   p_data                        => x_msg_data
1012         );
1013    oe_debug_pub.add('Ren: msg data in val_and_write of attr 10 is :' || x_msg_data);
1014 
1015     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1016 
1017         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1018 
1019         --  Get message count and data
1020 
1021         oe_msg_pub.Count_And_Get
1022         (   p_count                       => x_msg_count
1023         ,   p_data                        => x_msg_data
1024         );
1025    oe_debug_pub.add('Ren: msg data in val_and_write of attr 11 is :' || x_msg_data);
1026 
1027     WHEN OTHERS THEN
1028 
1029         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1030 
1031         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1032         THEN
1033             oe_msg_pub.Add_Exc_Msg
1034             (   G_PKG_NAME
1035             ,   'Validate_And_Write'
1036             );
1037         END IF;
1038 
1039         --  Get message count and data
1040 
1041         oe_msg_pub.Count_And_Get
1042         (   p_count                       => x_msg_count
1043         ,   p_data                        => x_msg_data
1044         );
1045    oe_debug_pub.add('Ren: msg data in val_and_write of attr 12 is :' || x_msg_data);
1046 
1047 END Validate_And_Write;
1048 
1049 --  Procedure       Delete_Row
1050 --
1051 
1052 PROCEDURE Delete_Row
1053 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1054 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1055 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1056 ,   p_pricing_attribute_id          IN  NUMBER
1057 )
1058 IS
1059 l_PRICING_ATTR_rec            QP_Price_List_PUB.Pricing_Attr_Rec_Type;
1060 l_PRICING_ATTR_tbl            QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1061 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
1062 l_return_status               VARCHAR2(1);
1063 l_x_PRICE_LIST_rec            QP_Price_List_PUB.Price_List_Rec_Type;
1064 l_x_PRICE_LIST_LINE_rec       QP_Price_List_PUB.Price_List_Line_Rec_Type;
1065 l_x_PRICE_LIST_LINE_tbl       QP_Price_List_PUB.Price_List_Line_Tbl_Type;
1066 l_x_QUALIFIERS_rec            Qp_Qualifier_Rules_Pub.Qualifiers_Rec_Type;
1067 l_x_QUALIFIERS_tbl            Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
1068 l_x_PRICING_ATTR_rec          QP_Price_List_PUB.Pricing_Attr_Rec_Type;
1069 l_x_PRICING_ATTR_tbl          QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1070 -- start bug2301959
1071 l_revision VARCHAR2(30);
1072 l_start_date_active DATE;
1073 l_end_date_active DATE;
1074 l_list_header_id NUMBER;
1075 -- end bug2301959
1076 BEGIN
1077 
1078     --  Set control flags.
1079 
1080     l_control_rec.controlled_operation := TRUE;
1081     l_control_rec.validate_entity      := TRUE;
1082     l_control_rec.write_to_DB          := TRUE;
1083 
1084     l_control_rec.default_attributes   := FALSE;
1085     l_control_rec.change_attributes    := FALSE;
1086     l_control_rec.process              := FALSE; -- Changed back to false. bug 7165334
1087 
1088     --  Instruct API to retain its caches
1089 
1090     l_control_rec.clear_api_cache      := FALSE;
1091     l_control_rec.clear_api_requests   := FALSE;
1092 
1093     --  Read DB record from cache
1094 
1095     l_PRICING_ATTR_rec := Get_PRICING_ATTR
1096     (   p_db_record                   => TRUE
1097     ,   p_pricing_attribute_id        => p_pricing_attribute_id
1098     );
1099 
1100     --  Set Operation.
1101 
1102     l_PRICING_ATTR_rec.operation := QP_GLOBALS.G_OPR_DELETE;
1103 
1104     --  Populate PRICING_ATTR table
1105 
1106     l_PRICING_ATTR_tbl(1) := l_PRICING_ATTR_rec;
1107 
1108     --  Call QP_LIST_HEADERS_PVT.Process_PRICE_LIST
1109 
1110 --start bug 2301959
1111 
1112 select start_date_active, end_date_active , revision, list_header_id
1113     into l_start_date_active, l_end_date_active, l_revision, l_list_header_id
1114     from qp_list_lines
1115     where list_line_id = l_pricing_attr_rec.list_line_id;
1116 
1117 IF (QP_GLOBALS.G_CHECK_DUP_PRICELIST_LINES <> 'N' or QP_GLOBALS.G_CHECK_DUP_PRICELIST_LINES IS NULL)
1118 THEN -- 5018856, 5024919 do not log request if N
1119 
1120    oe_debug_pub.add('about to log a request to check duplicate list lines ');
1121 
1122    QP_DELAYED_REQUESTS_PVT.Log_Request
1123     ( p_entity_code		=> QP_GLOBALS.G_ENTITY_ALL
1124 ,     p_entity_id		=> l_pricing_attr_rec.list_line_id
1125 ,   p_requesting_entity_code	=> QP_GLOBALS.G_ENTITY_ALL
1126 ,   p_requesting_entity_id	=> l_pricing_attr_rec.list_line_id
1127 ,   p_request_type		=> QP_GLOBALS.G_DUPLICATE_LIST_LINES
1128 ,   p_param1			=> l_list_header_id
1129 ,   p_param2			=> fnd_date.date_to_canonical(l_start_date_active)		--2739511
1130 ,   p_param3			=> fnd_date.date_to_canonical(l_end_date_active)		--2739511
1131 ,   p_param4			=> l_revision
1132 ,   x_return_status		=> l_return_status
1133 );
1134 
1135     IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1136 
1137 	  oe_debug_pub.add('failed in logging a delayed request in delete_row ');
1138 
1139         RAISE FND_API.G_EXC_ERROR;
1140 
1141     END IF;
1142 
1143   oe_debug_pub.add('after logging delayed request ');
1144 
1145 -- end bug2301959
1146 END IF; -- END IF QP_GLOBALS.G_CHECK_DUP_PRICELIST_LINES <> 'N' -- 5018856,, 5024919
1147 
1148     oe_debug_pub.add('Logging a request to update qualification_ind  ', 1);
1149          qp_delayed_requests_PVT.log_request(
1150                  p_entity_code => QP_GLOBALS.G_ENTITY_Price_List_Line,
1151                  p_entity_id  => l_PRICING_ATTR_rec.list_line_id,
1152                  p_requesting_entity_code=> QP_GLOBALS.G_ENTITY_Price_List_Line,
1153                  p_requesting_entity_id => l_PRICING_ATTR_rec.list_line_id,
1154                  p_request_type =>QP_GLOBALS.G_UPDATE_LINE_QUAL_IND,
1155                  x_return_status => l_return_status);
1156 
1157     IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1158 
1159           oe_debug_pub.add('failed in logging a delayed request in delete_row ');
1160 
1161         RAISE FND_API.G_EXC_ERROR;
1162 
1163     END IF;
1164 
1165     QP_LIST_HEADERS_PVT.Process_PRICE_LIST
1166     (   p_api_version_number          => 1.0
1167     ,   p_init_msg_list               => FND_API.G_TRUE
1168     ,   x_return_status               => l_return_status
1169     ,   x_msg_count                   => x_msg_count
1170     ,   x_msg_data                    => x_msg_data
1171     ,   p_control_rec                 => l_control_rec
1172     ,   p_PRICING_ATTR_tbl            => l_PRICING_ATTR_tbl
1173     ,   x_PRICE_LIST_rec              => l_x_PRICE_LIST_rec
1174     ,   x_PRICE_LIST_LINE_tbl         => l_x_PRICE_LIST_LINE_tbl
1175     ,   x_QUALIFIERS_tbl              => l_x_QUALIFIERS_tbl
1176     ,   x_PRICING_ATTR_tbl            => l_x_PRICING_ATTR_tbl
1177     );
1178 
1179     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1180         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1181     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1182         RAISE FND_API.G_EXC_ERROR;
1183     END IF;
1184 
1185 
1186     --  Clear PRICING_ATTR record cache
1187 
1188     Clear_PRICING_ATTR;
1189 
1190     --  Set return status.
1191 
1192     x_return_status := FND_API.G_RET_STS_SUCCESS;
1193 
1194     --  Get message count and data
1195 
1196     oe_msg_pub.Count_And_Get
1197     (   p_count                       => x_msg_count
1198     ,   p_data                        => x_msg_data
1199     );
1200 
1201 
1202 EXCEPTION
1203 
1204     WHEN FND_API.G_EXC_ERROR THEN
1205 
1206         x_return_status := FND_API.G_RET_STS_ERROR;
1207 
1208         --  Get message count and data
1209 
1210         oe_msg_pub.Count_And_Get
1211         (   p_count                       => x_msg_count
1212         ,   p_data                        => x_msg_data
1213         );
1214 
1215     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1216 
1217         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1218 
1219         --  Get message count and data
1220 
1221         oe_msg_pub.Count_And_Get
1222         (   p_count                       => x_msg_count
1223         ,   p_data                        => x_msg_data
1224         );
1225 
1226     WHEN OTHERS THEN
1227 
1228         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1229 
1230         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1231         THEN
1232             oe_msg_pub.Add_Exc_Msg
1233             (   G_PKG_NAME
1234             ,   'Delete_Row'
1235             );
1236         END IF;
1237 
1238         --  Get message count and data
1239 
1240         oe_msg_pub.Count_And_Get
1241         (   p_count                       => x_msg_count
1242         ,   p_data                        => x_msg_data
1243         );
1244 
1245 END Delete_Row;
1246 
1247 --  Procedure       Process_Entity
1248 --
1249 
1250 PROCEDURE Process_Entity
1251 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1252 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1253 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1254 )
1255 IS
1256 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
1257 l_return_status               VARCHAR2(1);
1258 l_x_PRICE_LIST_rec            QP_Price_List_PUB.Price_List_Rec_Type;
1259 l_x_PRICE_LIST_LINE_rec       QP_Price_List_PUB.Price_List_Line_Rec_Type;
1260 l_x_PRICE_LIST_LINE_tbl       QP_Price_List_PUB.Price_List_Line_Tbl_Type;
1261 l_x_QUALIFIERS_rec            Qp_Qualifier_Rules_Pub.Qualifiers_Rec_Type;
1262 l_x_QUALIFIERS_tbl            Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
1263 l_x_PRICING_ATTR_rec          QP_Price_List_PUB.Pricing_Attr_Rec_Type;
1264 l_x_PRICING_ATTR_tbl          QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1265 BEGIN
1266 
1267     --  Set control flags.
1268 
1269     l_control_rec.controlled_operation := TRUE;
1270     l_control_rec.process              := TRUE;
1271     l_control_rec.process_entity       := QP_GLOBALS.G_ENTITY_PRICING_ATTR;
1272 
1273     l_control_rec.default_attributes   := FALSE;
1274     l_control_rec.change_attributes    := FALSE;
1275     l_control_rec.validate_entity      := FALSE;
1276     l_control_rec.write_to_DB          := FALSE;
1277 
1278     --  Instruct API to clear its request table
1279 
1280     l_control_rec.clear_api_cache      := FALSE;
1281     l_control_rec.clear_api_requests   := FALSE;
1282 
1283     --  Call QP_LIST_HEADERS_PVT.Process_PRICE_LIST
1284 
1285     QP_LIST_HEADERS_PVT.Process_PRICE_LIST
1286     (   p_api_version_number          => 1.0
1287     ,   p_init_msg_list               => FND_API.G_TRUE
1288     ,   x_return_status               => l_return_status
1289     ,   x_msg_count                   => x_msg_count
1290     ,   x_msg_data                    => x_msg_data
1291     ,   p_control_rec                 => l_control_rec
1292     ,   x_PRICE_LIST_rec              => l_x_PRICE_LIST_rec
1293     ,   x_PRICE_LIST_LINE_tbl         => l_x_PRICE_LIST_LINE_tbl
1294     ,   x_QUALIFIERS_tbl              => l_x_QUALIFIERS_tbl
1295     ,   x_PRICING_ATTR_tbl            => l_x_PRICING_ATTR_tbl
1296     );
1297 
1298     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1299         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1300     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1301         RAISE FND_API.G_EXC_ERROR;
1302     END IF;
1303 
1304 
1305     --  Set return status.
1306 
1307     x_return_status := FND_API.G_RET_STS_SUCCESS;
1308 
1309     --  Get message count and data
1310 
1311     oe_msg_pub.Count_And_Get
1312     (   p_count                       => x_msg_count
1313     ,   p_data                        => x_msg_data
1314     );
1315 
1316 
1317 EXCEPTION
1318 
1319     WHEN FND_API.G_EXC_ERROR THEN
1320 
1321         x_return_status := FND_API.G_RET_STS_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 FND_API.G_EXC_UNEXPECTED_ERROR THEN
1331 
1332         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1333 
1334         --  Get message count and data
1335 
1336         oe_msg_pub.Count_And_Get
1337         (   p_count                       => x_msg_count
1338         ,   p_data                        => x_msg_data
1339         );
1340 
1341     WHEN OTHERS THEN
1342 
1343         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1344 
1345         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1346         THEN
1347             oe_msg_pub.Add_Exc_Msg
1348             (   G_PKG_NAME
1349             ,   'Process_Entity'
1350             );
1351         END IF;
1352 
1353         --  Get message count and data
1354 
1355         oe_msg_pub.Count_And_Get
1356         (   p_count                       => x_msg_count
1357         ,   p_data                        => x_msg_data
1358         );
1359 
1360 END Process_Entity;
1361 
1362 --  Procedure       lock_Row
1363 --
1364 
1365 PROCEDURE Lock_Row
1366 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1367 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1368 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1369 ,   p_accumulate_flag               IN  VARCHAR2
1370 ,   p_attribute1                    IN  VARCHAR2
1371 ,   p_attribute10                   IN  VARCHAR2
1372 ,   p_attribute11                   IN  VARCHAR2
1373 ,   p_attribute12                   IN  VARCHAR2
1374 ,   p_attribute13                   IN  VARCHAR2
1375 ,   p_attribute14                   IN  VARCHAR2
1376 ,   p_attribute15                   IN  VARCHAR2
1377 ,   p_attribute2                    IN  VARCHAR2
1378 ,   p_attribute3                    IN  VARCHAR2
1379 ,   p_attribute4                    IN  VARCHAR2
1380 ,   p_attribute5                    IN  VARCHAR2
1381 ,   p_attribute6                    IN  VARCHAR2
1382 ,   p_attribute7                    IN  VARCHAR2
1383 ,   p_attribute8                    IN  VARCHAR2
1384 ,   p_attribute9                    IN  VARCHAR2
1385 ,   p_attribute_grouping_no         IN  NUMBER
1386 ,   p_context                       IN  VARCHAR2
1387 ,   p_created_by                    IN  NUMBER
1388 ,   p_creation_date                 IN  DATE
1389 ,   p_excluder_flag                 IN  VARCHAR2
1390 ,   p_last_updated_by               IN  NUMBER
1391 ,   p_last_update_date              IN  DATE
1392 ,   p_last_update_login             IN  NUMBER
1393 ,   p_list_line_id                  IN  NUMBER
1394 ,   p_pricing_attribute             IN  VARCHAR2
1395 ,   p_pricing_attribute_context     IN  VARCHAR2
1396 ,   p_pricing_attribute_id          IN  NUMBER
1397 ,   p_pricing_attr_value_from       IN  VARCHAR2
1398 ,   p_pricing_attr_value_to         IN  VARCHAR2
1399 ,   p_product_attribute             IN  VARCHAR2
1400 ,   p_product_attribute_context     IN  VARCHAR2
1401 ,   p_product_attr_value            IN  VARCHAR2
1402 ,   p_product_uom_code              IN  VARCHAR2
1403 ,   p_program_application_id        IN  NUMBER
1404 ,   p_program_id                    IN  NUMBER
1405 ,   p_program_update_date           IN  DATE
1406 ,   p_request_id                    IN  NUMBER
1407 ,   p_comparison_operator_code      IN VARCHAR2
1408 ,   p_pricing_attribute_datatype    IN VARCHAR2
1409 ,   p_product_attribute_datatype    IN VARCHAR2
1410 )
1411 IS
1412 l_return_status               VARCHAR2(1);
1413 l_PRICING_ATTR_rec            QP_Price_List_PUB.Pricing_Attr_Rec_Type;
1414 l_PRICING_ATTR_tbl            QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1415 l_x_PRICE_LIST_rec            QP_Price_List_PUB.Price_List_Rec_Type;
1416 l_x_PRICE_LIST_LINE_rec       QP_Price_List_PUB.Price_List_Line_Rec_Type;
1417 l_x_PRICE_LIST_LINE_tbl       QP_Price_List_PUB.Price_List_Line_Tbl_Type;
1418 l_x_QUALIFIERS_rec            Qp_Qualifier_Rules_Pub.Qualifiers_Rec_Type;
1419 l_x_QUALIFIERS_tbl            Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
1420 l_x_PRICING_ATTR_rec          QP_Price_List_PUB.Pricing_Attr_Rec_Type;
1421 l_x_PRICING_ATTR_tbl          QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1422 BEGIN
1423 
1424     --  Load PRICING_ATTR record
1425 
1426     l_PRICING_ATTR_rec.accumulate_flag := p_accumulate_flag;
1427     l_PRICING_ATTR_rec.attribute1  := p_attribute1;
1428     l_PRICING_ATTR_rec.attribute10 := p_attribute10;
1429     l_PRICING_ATTR_rec.attribute11 := p_attribute11;
1430     l_PRICING_ATTR_rec.attribute12 := p_attribute12;
1431     l_PRICING_ATTR_rec.attribute13 := p_attribute13;
1432     l_PRICING_ATTR_rec.attribute14 := p_attribute14;
1433     l_PRICING_ATTR_rec.attribute15 := p_attribute15;
1434     l_PRICING_ATTR_rec.attribute2  := p_attribute2;
1435     l_PRICING_ATTR_rec.attribute3  := p_attribute3;
1436     l_PRICING_ATTR_rec.attribute4  := p_attribute4;
1437     l_PRICING_ATTR_rec.attribute5  := p_attribute5;
1438     l_PRICING_ATTR_rec.attribute6  := p_attribute6;
1439     l_PRICING_ATTR_rec.attribute7  := p_attribute7;
1440     l_PRICING_ATTR_rec.attribute8  := p_attribute8;
1441     l_PRICING_ATTR_rec.attribute9  := p_attribute9;
1442     l_PRICING_ATTR_rec.attribute_grouping_no := p_attribute_grouping_no;
1443     l_PRICING_ATTR_rec.context     := p_context;
1444     l_PRICING_ATTR_rec.created_by  := p_created_by;
1445     l_PRICING_ATTR_rec.creation_date := p_creation_date;
1446     l_PRICING_ATTR_rec.excluder_flag := p_excluder_flag;
1447     l_PRICING_ATTR_rec.last_updated_by := p_last_updated_by;
1448     l_PRICING_ATTR_rec.last_update_date := p_last_update_date;
1449     l_PRICING_ATTR_rec.last_update_login := p_last_update_login;
1450     l_PRICING_ATTR_rec.list_line_id := p_list_line_id;
1451     l_PRICING_ATTR_rec.pricing_attribute := p_pricing_attribute;
1452     l_PRICING_ATTR_rec.pricing_attribute_context := p_pricing_attribute_context;
1453     l_PRICING_ATTR_rec.pricing_attribute_id := p_pricing_attribute_id;
1454     l_PRICING_ATTR_rec.pricing_attr_value_from := p_pricing_attr_value_from;
1455     l_PRICING_ATTR_rec.pricing_attr_value_to := p_pricing_attr_value_to;
1456     l_PRICING_ATTR_rec.product_attribute := p_product_attribute;
1457     l_PRICING_ATTR_rec.product_attribute_context := p_product_attribute_context;
1458     l_PRICING_ATTR_rec.product_attr_value := p_product_attr_value;
1459     l_PRICING_ATTR_rec.product_uom_code := p_product_uom_code;
1460     l_PRICING_ATTR_rec.program_application_id := p_program_application_id;
1461     l_PRICING_ATTR_rec.program_id  := p_program_id;
1462     l_PRICING_ATTR_rec.program_update_date := p_program_update_date;
1463     l_PRICING_ATTR_rec.request_id  := p_request_id;
1464     l_PRICING_ATTR_rec.operation  := QP_GLOBALS.G_OPR_LOCK;
1465     l_PRICING_ATTR_rec.comparison_operator_code := p_comparison_operator_code;
1466  l_PRICING_ATTR_rec.pricing_attribute_datatype := p_pricing_attribute_datatype;
1467  l_PRICING_ATTR_rec.product_attribute_datatype := p_product_attribute_datatype;
1468 
1469     --  Populate PRICING_ATTR table
1470 
1471     l_PRICING_ATTR_tbl(1) := l_PRICING_ATTR_rec;
1472 
1473     --  Call QP_LIST_HEADERS_PVT.Lock_PRICE_LIST
1474 
1475     QP_LIST_HEADERS_PVT.Lock_PRICE_LIST
1476     (   p_api_version_number          => 1.0
1477     ,   p_init_msg_list               => FND_API.G_TRUE
1478     ,   x_return_status               => l_return_status
1479     ,   x_msg_count                   => x_msg_count
1480     ,   x_msg_data                    => x_msg_data
1481     ,   p_PRICING_ATTR_tbl            => l_PRICING_ATTR_tbl
1482     ,   x_PRICE_LIST_rec              => l_x_PRICE_LIST_rec
1483     ,   x_PRICE_LIST_LINE_tbl         => l_x_PRICE_LIST_LINE_tbl
1484     ,   x_QUALIFIERS_tbl              => l_x_QUALIFIERS_tbl
1485     ,   x_PRICING_ATTR_tbl            => l_x_PRICING_ATTR_tbl
1486     );
1487 
1488     IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
1489 
1490         --  Set DB flag and write record to cache.
1491 
1492         l_x_PRICING_ATTR_rec.db_flag := FND_API.G_TRUE;
1493 
1494         Write_PRICING_ATTR
1495         (   p_PRICING_ATTR_rec            => l_x_PRICING_ATTR_rec
1496         ,   p_db_record                   => TRUE
1497         );
1498 
1499     END IF;
1500 
1501     --  Set return status.
1502 
1503     x_return_status := l_return_status;
1504 
1505     --  Get message count and data
1506 
1507     oe_msg_pub.Count_And_Get
1508     (   p_count                       => x_msg_count
1509     ,   p_data                        => x_msg_data
1510     );
1511 
1512 
1513 EXCEPTION
1514 
1515     WHEN OTHERS THEN
1516 
1517         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1518         THEN
1519             oe_msg_pub.Add_Exc_Msg
1520             (   G_PKG_NAME
1521             ,   'Lock_Row'
1522             );
1523         END IF;
1524 
1525         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1526 
1527         --  Get message count and data
1528 
1529         oe_msg_pub.Count_And_Get
1530         (   p_count                       => x_msg_count
1531         ,   p_data                        => x_msg_data
1532         );
1533 
1534 
1535 
1536 END Lock_Row;
1537 
1538 --  Procedures maintaining PRICING_ATTR record cache.
1539 
1540 PROCEDURE Write_PRICING_ATTR
1541 (   p_PRICING_ATTR_rec              IN  QP_Price_List_PUB.Pricing_Attr_Rec_Type
1542 ,   p_db_record                     IN  BOOLEAN := FALSE
1543 )
1544 IS
1545 BEGIN
1546 
1547     g_PRICING_ATTR_rec := p_PRICING_ATTR_rec;
1548 
1549     IF p_db_record THEN
1550 
1551         g_db_PRICING_ATTR_rec := p_PRICING_ATTR_rec;
1552 
1553     END IF;
1554 
1555 END Write_Pricing_Attr;
1556 
1557 FUNCTION Get_PRICING_ATTR
1558 (   p_db_record                     IN  BOOLEAN := FALSE
1559 ,   p_pricing_attribute_id          IN  NUMBER
1560 )
1561 RETURN QP_Price_List_PUB.Pricing_Attr_Rec_Type
1562 IS
1563 BEGIN
1564 
1565     IF  p_pricing_attribute_id <> g_PRICING_ATTR_rec.pricing_attribute_id
1566     THEN
1567 
1568         --  Query row from DB
1569 
1570         g_PRICING_ATTR_rec := Qp_pll_pricing_attr_Util.Query_Row
1571         (   p_pricing_attribute_id        => p_pricing_attribute_id
1572         );
1573 
1574         g_PRICING_ATTR_rec.db_flag     := FND_API.G_TRUE;
1575 
1576         --  Load DB record
1577 
1578         g_db_PRICING_ATTR_rec          := g_PRICING_ATTR_rec;
1579 
1580     END IF;
1581 
1582     IF p_db_record THEN
1583 
1584         RETURN g_db_PRICING_ATTR_rec;
1585 
1586     ELSE
1587 
1588         RETURN g_PRICING_ATTR_rec;
1589 
1590     END IF;
1591 
1592 END Get_Pricing_Attr;
1593 
1594 PROCEDURE Clear_Pricing_Attr
1595 IS
1596 BEGIN
1597 
1598     g_PRICING_ATTR_rec             := QP_Price_List_PUB.G_MISS_PRICING_ATTR_REC;
1599     g_db_PRICING_ATTR_rec          := QP_Price_List_PUB.G_MISS_PRICING_ATTR_REC;
1600 
1601 END Clear_Pricing_Attr;
1602 
1603 -- This procedure will be called from the client when the user
1604 -- clears a record
1605 
1606 Procedure Clear_Record
1607 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1608 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1609 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1610 ,   p_pricing_attribute_id                  IN  NUMBER
1611 )
1612 IS
1613 l_return_status                     Varchar2(30);
1614 BEGIN
1615      OE_MSG_PUB.initialize;
1616  	x_return_status := FND_API.G_RET_STS_SUCCESS;
1617        QP_DELAYED_REQUESTS_PVT.Delete_Reqs_for_Deleted_Entity(
1618 					p_entity_code  => QP_GLOBALS.G_ENTITY_PRICING_ATTR
1619 					,p_entity_id    => p_pricing_attribute_id
1620 				     ,x_return_status => l_return_status);
1621 
1622         OE_MSG_PUB.Count_And_Get
1623         (   p_count                       => x_msg_count
1624         ,   p_data                        => x_msg_data
1625         );
1626 
1627 -- Clear the controller cache
1628 	Clear_Pricing_Attr;
1629 
1630 EXCEPTION
1631     WHEN OTHERS THEN
1632         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1633         THEN
1634             OE_MSG_PUB.Add_Exc_Msg
1635             (   G_PKG_NAME
1636             ,   'Clear_Record'
1637             );
1638         END IF;
1639         --  Get message count and data
1640         OE_MSG_PUB.Count_And_Get
1641         (   p_count                       => x_msg_count
1642         ,   p_data                        => x_msg_data
1643         );
1644         x_return_status := FND_API.G_RET_STS_ERROR;
1645 
1646 END Clear_Record;
1647 
1648 
1649 -- This procedure will be called from the client when the user
1650 -- clears a block or Form
1651 Procedure Delete_All_Requests
1652 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1653 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1654 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1655 )
1656 IS
1657 l_return_status                     Varchar2(30);
1658 BEGIN
1659      OE_MSG_PUB.initialize;
1660  	x_return_status := FND_API.G_RET_STS_SUCCESS;
1661        QP_DELAYED_REQUESTS_PVT.Clear_Request(
1662 				     x_return_status => l_return_status);
1663 
1664 EXCEPTION
1665     WHEN OTHERS THEN
1666         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1667         THEN
1668             OE_MSG_PUB.Add_Exc_Msg
1669             (   G_PKG_NAME
1670             ,   'Delete_All_Requests'
1671             );
1672         END IF;
1673         --  Get message count and data
1674         OE_MSG_PUB.Count_And_Get
1675         (   p_count                       => x_msg_count
1676         ,   p_data                        => x_msg_data
1677         );
1678         x_return_status := FND_API.G_RET_STS_ERROR;
1679 
1680 END Delete_All_Requests;
1681 
1682 Procedure Dup_record
1683 (  p_x_old_list_line_id                   IN NUMBER,
1684    p_x_new_list_line_id                   IN NUMBER,
1685    x_msg_count                            OUT NOCOPY /* file.sql.39 change */ NUMBER,
1686    x_msg_data                             OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1687 )
1688 IS
1689 l_new_pricing_attribute_id    Number;
1690 --added for related lines duplication
1691 l_new_list_line_id            Number;
1692 l_list_line_type_code         Varchar2(30);
1693 l_PRICE_LIST_LINE_rec         QP_Price_List_PUB.Price_List_Line_Rec_Type;
1694 l_PRICE_LIST_LINE_tbl         QP_Price_List_PUB.Price_List_Line_Tbl_Type;
1695 --added for related lines duplication
1696 l_PRICING_ATTR_rec            QP_Price_List_PUB.Pricing_Attr_Rec_Type;
1697 l_PRICING_ATTR_tbl            QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1698 l_x_PRICE_LIST_rec            QP_Price_List_PUB.Price_List_Rec_Type;
1699 l_x_PRICE_LIST_LINE_rec       QP_Price_List_PUB.Price_List_Line_Rec_Type;
1700 l_x_PRICE_LIST_LINE_tbl       QP_Price_List_PUB.Price_List_Line_Tbl_Type;
1701 l_x_QUALIFIERS_rec            Qp_Qualifier_Rules_Pub.Qualifiers_Rec_Type;
1702 l_x_QUALIFIERS_tbl            Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
1703 l_x_PRICING_ATTR_rec          QP_Price_List_PUB.Pricing_Attr_Rec_Type;
1704 l_x_PRICING_ATTR_tbl          QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1705 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
1706 l_return_status               varchar2(1);
1707 l_continuous_price_break_flag varchar2(1);
1708 
1709 
1710 --added for related lines duplication
1711 
1712 CURSOR l_LIST_LINE_csr(p_list_line_id Number) IS
1713  SELECT
1714    L.ACCRUAL_QTY
1715 ,L.ACCRUAL_UOM_CODE
1716 ,L.ARITHMETIC_OPERATOR
1717 ,L.ATTRIBUTE1
1718 ,L.ATTRIBUTE10
1719 ,L.ATTRIBUTE11
1720 ,L.ATTRIBUTE12
1721 ,L.ATTRIBUTE13
1722 ,L.ATTRIBUTE14
1723 ,L.ATTRIBUTE15
1724 ,L.ATTRIBUTE2
1725 ,L.ATTRIBUTE3
1726 ,L.ATTRIBUTE4
1727 ,L.ATTRIBUTE5
1728 ,L.ATTRIBUTE6
1729 ,L.ATTRIBUTE7
1730 ,L.ATTRIBUTE8
1731 ,L.ATTRIBUTE9
1732 ,L.AUTOMATIC_FLAG
1733 ,L.BASE_QTY
1734 ,L.BASE_UOM_CODE
1735 ,L.COMMENTS
1736 ,L.CONTEXT
1737 ,L.CREATED_BY
1738 ,L.CREATION_DATE
1739 ,L.EFFECTIVE_PERIOD_UOM
1740 ,L.END_DATE_ACTIVE
1741 ,L.ESTIM_ACCRUAL_RATE
1742 ,L.GENERATE_USING_FORMULA_ID
1743 ,L.INVENTORY_ITEM_ID
1744 ,L.LAST_UPDATED_BY
1745 ,L.LAST_UPDATE_DATE
1746 ,L.LAST_UPDATE_LOGIN
1747 ,L.LIST_HEADER_ID
1748 ,L.LIST_LINE_ID
1749 ,L.LIST_LINE_TYPE_CODE
1750 ,L.LIST_PRICE
1751 ,L.MODIFIER_LEVEL_CODE
1752 ,L.NUMBER_EFFECTIVE_PERIODS
1753 ,L.OPERAND
1754 ,L.ORGANIZATION_ID
1755 ,L.OVERRIDE_FLAG
1756 ,L.PERCENT_PRICE
1757 ,L.PRICE_BREAK_TYPE_CODE
1758 ,L.PRICE_BY_FORMULA_ID
1759 ,L.PRIMARY_UOM_FLAG
1760 ,L.PRINT_ON_INVOICE_FLAG
1761 ,L.PROGRAM_APPLICATION_ID
1762 ,L.PROGRAM_ID
1763 ,L.PROGRAM_UPDATE_DATE
1764 ,L.REBATE_TRANSACTION_TYPE_CODE
1765 ,L.RELATED_ITEM_ID
1766 ,L.RELATIONSHIP_TYPE_ID
1767 ,L.REPRICE_FLAG
1768 ,L.REQUEST_ID
1769 ,L.REVISION
1770 ,L.REVISION_DATE
1771 ,L.REVISION_REASON_CODE
1772 ,L.START_DATE_ACTIVE
1773 ,L.SUBSTITUTION_ATTRIBUTE
1774 ,L.SUBSTITUTION_CONTEXT
1775 ,L.SUBSTITUTION_VALUE
1776 ,RM.RLTD_MODIFIER_ID
1777 ,RM.FROM_RLTD_MODIFIER_ID
1778 ,RM.TO_RLTD_MODIFIER_ID
1779 ,RM.RLTD_MODIFIER_GRP_NO
1780 ,RM.RLTD_MODIFIER_GRP_TYPE
1781 ,L.PRODUCT_PRECEDENCE
1782 ,L.LIST_LINE_NO
1783 ,L.QUALIFICATION_IND
1784 ,L.RECURRING_VALUE
1785 ,L.CUSTOMER_ITEM_ID
1786 ,L.BREAK_UOM_CODE
1787 ,L.BREAK_UOM_CONTEXT
1788 ,L.BREAK_UOM_ATTRIBUTE
1789  FROM    QP_LIST_LINES L, QP_RLTD_MODIFIERS RM
1790  WHERE   L.LIST_LINE_ID  = RM.TO_RLTD_MODIFIER_ID
1791  AND     RM.FROM_RLTD_MODIFIER_ID = p_list_line_id;
1792 
1793 --added for related lines duplication
1794 
1795 CURSOR l_PRICING_ATTR_csr(p_list_line_id Number) IS
1796     SELECT  ACCUMULATE_FLAG
1797     ,       ATTRIBUTE1
1798     ,       ATTRIBUTE10
1799     ,       ATTRIBUTE11
1800     ,       ATTRIBUTE12
1801     ,       ATTRIBUTE13
1802     ,       ATTRIBUTE14
1803     ,       ATTRIBUTE15
1804     ,       ATTRIBUTE2
1805     ,       ATTRIBUTE3
1806     ,       ATTRIBUTE4
1807     ,       ATTRIBUTE5
1808     ,       ATTRIBUTE6
1809     ,       ATTRIBUTE7
1810     ,       ATTRIBUTE8
1811     ,       ATTRIBUTE9
1812     ,       ATTRIBUTE_GROUPING_NO
1813     ,       CONTEXT
1814     ,       CREATED_BY
1815     ,       CREATION_DATE
1816     ,       EXCLUDER_FLAG
1817     ,       LAST_UPDATED_BY
1818     ,       LAST_UPDATE_DATE
1819     ,       LAST_UPDATE_LOGIN
1820     ,       LIST_LINE_ID
1821     ,       LIST_HEADER_ID
1822     ,       PRICING_PHASE_ID
1823     ,       PRICING_ATTRIBUTE
1824     ,       PRICING_ATTRIBUTE_CONTEXT
1825     ,       PRICING_ATTRIBUTE_ID
1826     ,       PRICING_ATTR_VALUE_FROM
1827     ,       PRICING_ATTR_VALUE_TO
1828     ,       PRODUCT_ATTRIBUTE
1829     ,       PRODUCT_ATTRIBUTE_CONTEXT
1830     ,       PRODUCT_ATTR_VALUE
1831     ,       PRODUCT_UOM_CODE
1832     ,       PROGRAM_APPLICATION_ID
1833     ,       PROGRAM_ID
1834     ,       PROGRAM_UPDATE_DATE
1835     ,       REQUEST_ID
1836     ,       COMPARISON_OPERATOR_CODE
1837     ,       PRICING_ATTRIBUTE_DATATYPE
1838     ,       PRODUCT_ATTRIBUTE_DATATYPE
1839     ,       PRICING_ATTR_VALUE_FROM_NUMBER
1840     ,       PRICING_ATTR_VALUE_TO_NUMBER
1841     ,       QUALIFICATION_IND
1842     FROM    QP_PRICING_ATTRIBUTES
1843     WHERE     LIST_LINE_ID = p_list_line_id
1844               AND PRICING_ATTRIBUTE_CONTEXT IS NOT NULL;
1845 
1846 
1847 
1848 --added for related lines duplication
1849 
1850 CURSOR l_PRICING_ATTR_RLTD_csr(p_list_line_id Number) IS
1851 SELECT  ACCUMULATE_FLAG
1852     ,       ATTRIBUTE1
1853     ,       ATTRIBUTE10
1854     ,       ATTRIBUTE11
1855     ,       ATTRIBUTE12
1856     ,       ATTRIBUTE13
1857     ,       ATTRIBUTE14
1858     ,       ATTRIBUTE15
1859     ,       ATTRIBUTE2
1860     ,       ATTRIBUTE3
1861     ,       ATTRIBUTE4
1862     ,       ATTRIBUTE5
1863     ,       ATTRIBUTE6
1864     ,       ATTRIBUTE7
1865     ,       ATTRIBUTE8
1866     ,       ATTRIBUTE9
1867     ,       ATTRIBUTE_GROUPING_NO
1868     ,       CONTEXT
1869     ,       CREATED_BY
1870     ,       CREATION_DATE
1871     ,       EXCLUDER_FLAG
1872     ,       LAST_UPDATED_BY
1873     ,       LAST_UPDATE_DATE
1874     ,       LAST_UPDATE_LOGIN
1875     ,       LIST_LINE_ID
1876     ,       LIST_HEADER_ID
1877     ,       PRICING_PHASE_ID
1878     ,       PRICING_ATTRIBUTE
1879     ,       PRICING_ATTRIBUTE_CONTEXT
1880     ,       PRICING_ATTRIBUTE_ID
1881     ,       PRICING_ATTR_VALUE_FROM
1882     ,       PRICING_ATTR_VALUE_TO
1883     ,       PRODUCT_ATTRIBUTE
1884     ,       PRODUCT_ATTRIBUTE_CONTEXT
1885     ,       PRODUCT_ATTR_VALUE
1886     ,       PRODUCT_UOM_CODE
1887     ,       PROGRAM_APPLICATION_ID
1888     ,       PROGRAM_ID
1889     ,       PROGRAM_UPDATE_DATE
1890     ,       REQUEST_ID
1891     ,       COMPARISON_OPERATOR_CODE
1892     ,       PRICING_ATTRIBUTE_DATATYPE
1893     ,       PRODUCT_ATTRIBUTE_DATATYPE
1894     ,       PRICING_ATTR_VALUE_FROM_NUMBER
1895     ,       PRICING_ATTR_VALUE_TO_NUMBER
1896     ,       QUALIFICATION_IND
1897     FROM    QP_PRICING_ATTRIBUTES
1898     WHERE   LIST_LINE_ID = p_list_line_id;
1899 
1900 
1901 --added for related lines duplication
1902 
1903 BEGIN
1904     FOR l_implicit_rec IN l_PRICING_ATTR_csr(p_x_old_list_line_id) LOOP
1905 
1906     SELECT qp_pricing_attributes_s.nextval INTO l_new_pricing_attribute_id
1907     FROM dual;
1908 
1909         l_PRICING_ATTR_rec.accumulate_flag := l_implicit_rec.ACCUMULATE_FLAG;
1910         l_PRICING_ATTR_rec.attribute1  := l_implicit_rec.ATTRIBUTE1;
1911         l_PRICING_ATTR_rec.attribute10 := l_implicit_rec.ATTRIBUTE10;
1912         l_PRICING_ATTR_rec.attribute11 := l_implicit_rec.ATTRIBUTE11;
1913         l_PRICING_ATTR_rec.attribute12 := l_implicit_rec.ATTRIBUTE12;
1914         l_PRICING_ATTR_rec.attribute13 := l_implicit_rec.ATTRIBUTE13;
1915         l_PRICING_ATTR_rec.attribute14 := l_implicit_rec.ATTRIBUTE14;
1916         l_PRICING_ATTR_rec.attribute15 := l_implicit_rec.ATTRIBUTE15;
1917         l_PRICING_ATTR_rec.attribute2  := l_implicit_rec.ATTRIBUTE2;
1918         l_PRICING_ATTR_rec.attribute3  := l_implicit_rec.ATTRIBUTE3;
1919         l_PRICING_ATTR_rec.attribute4  := l_implicit_rec.ATTRIBUTE4;
1920         l_PRICING_ATTR_rec.attribute5  := l_implicit_rec.ATTRIBUTE5;
1921         l_PRICING_ATTR_rec.attribute6  := l_implicit_rec.ATTRIBUTE6;
1922         l_PRICING_ATTR_rec.attribute7  := l_implicit_rec.ATTRIBUTE7;
1923         l_PRICING_ATTR_rec.attribute8  := l_implicit_rec.ATTRIBUTE8;
1924         l_PRICING_ATTR_rec.attribute9  := l_implicit_rec.ATTRIBUTE9;
1925         l_PRICING_ATTR_rec.attribute_grouping_no := l_implicit_rec.ATTRIBUTE_GROUPING_NO;
1926         l_PRICING_ATTR_rec.context     := l_implicit_rec.CONTEXT;
1927         l_PRICING_ATTR_rec.created_by  := l_implicit_rec.CREATED_BY;
1928         l_PRICING_ATTR_rec.creation_date := l_implicit_rec.CREATION_DATE;
1929         l_PRICING_ATTR_rec.excluder_flag := l_implicit_rec.EXCLUDER_FLAG;
1930         l_PRICING_ATTR_rec.last_updated_by := l_implicit_rec.LAST_UPDATED_BY;
1931         l_PRICING_ATTR_rec.last_update_date := l_implicit_rec.LAST_UPDATE_DATE;
1932         l_PRICING_ATTR_rec.last_update_login := l_implicit_rec.LAST_UPDATE_LOGIN;
1933         l_PRICING_ATTR_rec.list_line_id := p_x_new_list_line_id;
1934         l_PRICING_ATTR_rec.list_header_id := l_implicit_rec.LIST_HEADER_ID;
1935         l_PRICING_ATTR_rec.pricing_phase_id := l_implicit_rec.PRICING_PHASE_ID;
1936         l_PRICING_ATTR_rec.pricing_attribute := l_implicit_rec.PRICING_ATTRIBUTE;
1937         l_PRICING_ATTR_rec.pricing_attribute_context := l_implicit_rec.PRICING_ATTRIBUTE_CONTEXT;
1938         l_PRICING_ATTR_rec.pricing_attribute_id := l_new_pricing_attribute_id;
1939         l_PRICING_ATTR_rec.pricing_attr_value_from := l_implicit_rec.PRICING_ATTR_VALUE_FROM;
1940         l_PRICING_ATTR_rec.pricing_attr_value_to := l_implicit_rec.PRICING_ATTR_VALUE_TO;
1941         l_PRICING_ATTR_rec.product_attribute := l_implicit_rec.PRODUCT_ATTRIBUTE;
1942         l_PRICING_ATTR_rec.product_attribute_context := l_implicit_rec.PRODUCT_ATTRIBUTE_CONTEXT;
1943         l_PRICING_ATTR_rec.product_attr_value := l_implicit_rec.PRODUCT_ATTR_VALUE;
1944         l_PRICING_ATTR_rec.product_uom_code := l_implicit_rec.PRODUCT_UOM_CODE;
1945         l_PRICING_ATTR_rec.program_application_id := l_implicit_rec.PROGRAM_APPLICATION_ID;
1946         l_PRICING_ATTR_rec.program_id  := l_implicit_rec.PROGRAM_ID;
1947         l_PRICING_ATTR_rec.program_update_date := l_implicit_rec.PROGRAM_UPDATE_DATE;
1948         l_PRICING_ATTR_rec.request_id  := l_implicit_rec.REQUEST_ID;
1949 	l_PRICING_ATTR_rec.comparison_operator_code := l_implicit_rec.comparison_operator_code;
1950 	l_PRICING_ATTR_rec.pricing_attribute_datatype := l_implicit_rec.pricing_attribute_datatype;
1951 	l_PRICING_ATTR_rec.product_attribute_datatype := l_implicit_rec.product_attribute_datatype;
1952 	l_PRICING_ATTR_rec.pricing_attr_value_from_number := l_implicit_rec.PRICING_ATTR_VALUE_FROM_NUMBER;
1953 	l_PRICING_ATTR_rec.pricing_attr_value_to_number := l_implicit_rec.PRICING_ATTR_VALUE_TO_NUMBER;
1954 	l_PRICING_ATTR_rec.qualification_ind := l_implicit_rec.QUALIFICATION_IND;
1955         l_PRICING_ATTR_rec.operation := QP_GLOBALS.G_OPR_CREATE;
1956 
1957         l_PRICING_ATTR_tbl(l_PRICING_ATTR_tbl.COUNT + 1) := l_PRICING_ATTR_rec;
1958 
1959     END LOOP;
1960 
1961 --added for related lines duplication
1962 
1963 SELECT list_line_type_code into l_list_line_type_code from QP_LIST_LINES where list_line_id=p_x_old_list_line_id;
1964   If l_list_line_type_code IN ('PBH') Then
1965 
1966 --Storing continuous_price_break_flag value for later use,to convert non continuous price break lines into continuous line.
1967 
1968         SELECT continuous_price_break_flag INTO l_continuous_price_break_flag
1969         FROM QP_LIST_LINES
1970         WHERE list_line_id=p_x_old_list_line_id;
1971       FOR l_implicit_rec IN l_LIST_LINE_csr(p_x_old_list_line_id) LOOP
1972 
1973 
1974         SELECT qp_List_lines_s.nextval INTO l_new_list_line_id
1975         FROM dual;
1976 
1977 
1978 
1979 l_PRICE_LIST_LINE_rec.accrual_qty                      := l_implicit_rec.ACCRUAL_QTY;
1980 l_PRICE_LIST_LINE_rec.accrual_uom_code                 := l_implicit_rec.ACCRUAL_UOM_CODE;
1981 l_PRICE_LIST_LINE_rec.arithmetic_operator              := l_implicit_rec.ARITHMETIC_OPERATOR;
1982 l_PRICE_LIST_LINE_rec.attribute1                       := l_implicit_rec.ATTRIBUTE1;
1983 l_PRICE_LIST_LINE_rec.attribute10                      := l_implicit_rec.ATTRIBUTE10;
1984 l_PRICE_LIST_LINE_rec.attribute11                      := l_implicit_rec.ATTRIBUTE11;
1985 l_PRICE_LIST_LINE_rec.attribute12                      := l_implicit_rec.ATTRIBUTE12;
1986 l_PRICE_LIST_LINE_rec.attribute13                      := l_implicit_rec.ATTRIBUTE13;
1987 l_PRICE_LIST_LINE_rec.attribute14                      := l_implicit_rec.ATTRIBUTE14;
1988 l_PRICE_LIST_LINE_rec.attribute15                      := l_implicit_rec.ATTRIBUTE15;
1989 l_PRICE_LIST_LINE_rec.attribute2                       := l_implicit_rec.ATTRIBUTE2;
1990 l_PRICE_LIST_LINE_rec.attribute3                       := l_implicit_rec.ATTRIBUTE3;
1991 l_PRICE_LIST_LINE_rec.attribute4                       := l_implicit_rec.ATTRIBUTE4;
1992 l_PRICE_LIST_LINE_rec.attribute5                       := l_implicit_rec.ATTRIBUTE5;
1993 l_PRICE_LIST_LINE_rec.attribute6                       := l_implicit_rec.ATTRIBUTE6;
1994 l_PRICE_LIST_LINE_rec.attribute7                       := l_implicit_rec.ATTRIBUTE7;
1995 l_PRICE_LIST_LINE_rec.attribute8                       := l_implicit_rec.ATTRIBUTE8;
1996 l_PRICE_LIST_LINE_rec.attribute9                       := l_implicit_rec.ATTRIBUTE9;
1997 l_PRICE_LIST_LINE_rec.automatic_flag                   := l_implicit_rec.AUTOMATIC_FLAG;
1998 l_PRICE_LIST_LINE_rec.base_qty                         := l_implicit_rec.BASE_QTY;
1999 l_PRICE_LIST_LINE_rec.base_uom_code                    := l_implicit_rec.BASE_UOM_CODE;
2000 l_PRICE_LIST_LINE_rec.comments                         := l_implicit_rec.COMMENTS;
2001 l_PRICE_LIST_LINE_rec.context                          := l_implicit_rec.CONTEXT;
2002 l_PRICE_LIST_LINE_rec.created_by                       := l_implicit_rec.CREATED_BY;
2003 l_PRICE_LIST_LINE_rec.creation_date                    := l_implicit_rec.CREATION_DATE;
2004 l_PRICE_LIST_LINE_rec.effective_period_uom             := l_implicit_rec.EFFECTIVE_PERIOD_UOM;
2005 l_PRICE_LIST_LINE_rec.end_date_active                  := l_implicit_rec.END_DATE_ACTIVE;
2006 l_PRICE_LIST_LINE_rec.estim_accrual_rate               := l_implicit_rec.ESTIM_ACCRUAL_RATE;
2007 l_PRICE_LIST_LINE_rec.generate_using_formula_id        := l_implicit_rec.GENERATE_USING_FORMULA_ID;
2008 l_PRICE_LIST_LINE_rec.inventory_item_id                := l_implicit_rec.INVENTORY_ITEM_ID;
2009 l_PRICE_LIST_LINE_rec.last_updated_by                  := l_implicit_rec.LAST_UPDATED_BY;
2010 l_PRICE_LIST_LINE_rec.last_update_date                 := l_implicit_rec.LAST_UPDATE_DATE;
2011 l_PRICE_LIST_LINE_rec.last_update_login                := l_implicit_rec.LAST_UPDATE_LOGIN;
2012 l_PRICE_LIST_LINE_rec.list_header_id                   := l_implicit_rec.LIST_HEADER_ID;
2013 l_PRICE_LIST_LINE_rec.list_line_id                     := l_new_list_line_id;
2014 l_PRICE_LIST_LINE_rec.list_line_type_code              := l_implicit_rec.LIST_LINE_TYPE_CODE;
2015 l_PRICE_LIST_LINE_rec.list_price                       := l_implicit_rec.LIST_PRICE;
2016 l_PRICE_LIST_LINE_rec.modifier_level_code              := l_implicit_rec.MODIFIER_LEVEL_CODE;
2017 l_PRICE_LIST_LINE_rec.number_effective_periods         := l_implicit_rec.NUMBER_EFFECTIVE_PERIODS;
2018 l_PRICE_LIST_LINE_rec.operand                          := l_implicit_rec.OPERAND;
2019 l_PRICE_LIST_LINE_rec.organization_id                  := l_implicit_rec.ORGANIZATION_ID;
2020 l_PRICE_LIST_LINE_rec.override_flag                    := l_implicit_rec.OVERRIDE_FLAG;
2021 l_PRICE_LIST_LINE_rec.percent_price                    := l_implicit_rec.PERCENT_PRICE;
2022 l_PRICE_LIST_LINE_rec.price_break_type_code            := l_implicit_rec.PRICE_BREAK_TYPE_CODE;
2023 l_PRICE_LIST_LINE_rec.price_by_formula_id              := l_implicit_rec.PRICE_BY_FORMULA_ID;
2024 l_PRICE_LIST_LINE_rec.primary_uom_flag                 := l_implicit_rec.PRIMARY_UOM_FLAG;
2025 l_PRICE_LIST_LINE_rec.print_on_invoice_flag            := l_implicit_rec.PRINT_ON_INVOICE_FLAG;
2026 l_PRICE_LIST_LINE_rec.program_application_id           := l_implicit_rec.PROGRAM_APPLICATION_ID;
2027 l_PRICE_LIST_LINE_rec.program_id                       := l_implicit_rec.PROGRAM_ID;
2028 l_PRICE_LIST_LINE_rec.program_update_date              := l_implicit_rec.PROGRAM_UPDATE_DATE;
2029 l_PRICE_LIST_LINE_rec.rebate_trxn_type_code            := l_implicit_rec.REBATE_TRANSACTION_TYPE_CODE;
2030 l_PRICE_LIST_LINE_rec.related_item_id                  := l_implicit_rec.RELATED_ITEM_ID;
2031 l_PRICE_LIST_LINE_rec.relationship_type_id             := l_implicit_rec.RELATIONSHIP_TYPE_ID;
2032 l_PRICE_LIST_LINE_rec.reprice_flag                     := l_implicit_rec.REPRICE_FLAG;
2033 l_PRICE_LIST_LINE_rec.request_id                       := l_implicit_rec.REQUEST_ID;
2034 l_PRICE_LIST_LINE_rec.revision                         := l_implicit_rec.REVISION;
2035 l_PRICE_LIST_LINE_rec.revision_date                    := l_implicit_rec.REVISION_DATE;
2036 l_PRICE_LIST_LINE_rec.revision_reason_code             := l_implicit_rec.REVISION_REASON_CODE;
2037 l_PRICE_LIST_LINE_rec.start_date_active                := l_implicit_rec.START_DATE_ACTIVE;
2038 l_PRICE_LIST_LINE_rec.substitution_attribute           := l_implicit_rec.SUBSTITUTION_ATTRIBUTE;
2039 l_PRICE_LIST_LINE_rec.substitution_context             := l_implicit_rec.SUBSTITUTION_CONTEXT;
2040 l_PRICE_LIST_LINE_rec.substitution_value               := l_implicit_rec.SUBSTITUTION_VALUE;
2041 l_PRICE_LIST_LINE_rec.from_rltd_modifier_id            := p_x_new_list_line_id;
2042 l_PRICE_LIST_LINE_rec.to_rltd_modifier_id              := l_new_list_line_id;
2043 l_PRICE_LIST_LINE_rec.rltd_modifier_group_no           := l_implicit_rec.RLTD_MODIFIER_GRP_NO;
2044 l_PRICE_LIST_LINE_rec.rltd_modifier_grp_type           := l_implicit_rec.RLTD_MODIFIER_GRP_TYPE;
2045 l_PRICE_LIST_LINE_rec.product_precedence               := l_implicit_rec.PRODUCT_PRECEDENCE;
2046 l_PRICE_LIST_LINE_rec.list_line_no                     := l_new_list_line_id;
2047 l_PRICE_LIST_LINE_rec.qualification_ind                := l_implicit_rec.QUALIFICATION_IND;
2048 l_PRICE_LIST_LINE_rec.recurring_value                  := l_implicit_rec.RECURRING_VALUE;
2049 l_PRICE_LIST_LINE_rec.customer_item_id                 := l_implicit_rec.CUSTOMER_ITEM_ID;
2050 l_PRICE_LIST_LINE_rec.break_uom_code                   := l_implicit_rec.BREAK_UOM_CODE;
2051 l_PRICE_LIST_LINE_rec.break_uom_context                := l_implicit_rec.BREAK_UOM_CONTEXT;
2052 l_PRICE_LIST_LINE_rec.break_uom_attribute              := l_implicit_rec.BREAK_UOM_ATTRIBUTE;
2053 l_PRICE_LIST_LINE_rec.db_flag 		               := FND_API.G_TRUE;
2054 l_PRICE_LIST_LINE_rec.operation 	               := QP_GLOBALS.G_OPR_CREATE;
2055 
2056 
2057     l_PRICE_LIST_LINE_tbl(l_PRICE_LIST_LINE_tbl.COUNT + 1) := l_PRICE_LIST_LINE_rec;
2058 
2059 
2060 --	Related Lines Pricing Attributes Duplication
2061 
2062  FOR l_implicit_attr_rec IN l_PRICING_ATTR_rltd_csr(l_implicit_rec.list_line_id) LOOP
2063 
2064    SELECT qp_pricing_attributes_s.nextval INTO l_new_pricing_attribute_id FROM dual;
2065 
2066 	        l_PRICING_ATTR_rec.accumulate_flag 		:= l_implicit_attr_rec.ACCUMULATE_FLAG;
2067         	l_PRICING_ATTR_rec.attribute1      		:= l_implicit_attr_rec.ATTRIBUTE1;
2068 	        l_PRICING_ATTR_rec.attribute10 			:= l_implicit_attr_rec.ATTRIBUTE10;
2069 	        l_PRICING_ATTR_rec.attribute11 			:= l_implicit_attr_rec.ATTRIBUTE11;
2070         	l_PRICING_ATTR_rec.attribute12 			:= l_implicit_attr_rec.ATTRIBUTE12;
2071 	        l_PRICING_ATTR_rec.attribute13 			:= l_implicit_attr_rec.ATTRIBUTE13;
2072         	l_PRICING_ATTR_rec.attribute14 			:= l_implicit_attr_rec.ATTRIBUTE14;
2073         	l_PRICING_ATTR_rec.attribute15 			:= l_implicit_attr_rec.ATTRIBUTE15;
2074 	        l_PRICING_ATTR_rec.attribute2  			:= l_implicit_attr_rec.ATTRIBUTE2;
2075 	        l_PRICING_ATTR_rec.attribute3  			:= l_implicit_attr_rec.ATTRIBUTE3;
2076         	l_PRICING_ATTR_rec.attribute4  			:= l_implicit_attr_rec.ATTRIBUTE4;
2077 	        l_PRICING_ATTR_rec.attribute5  			:= l_implicit_attr_rec.ATTRIBUTE5;
2078 	        l_PRICING_ATTR_rec.attribute6  			:= l_implicit_attr_rec.ATTRIBUTE6;
2079 	        l_PRICING_ATTR_rec.attribute7  			:= l_implicit_attr_rec.ATTRIBUTE7;
2080 	        l_PRICING_ATTR_rec.attribute8  			:= l_implicit_attr_rec.ATTRIBUTE8;
2081         	l_PRICING_ATTR_rec.attribute9  			:= l_implicit_attr_rec.ATTRIBUTE9;
2082         	l_PRICING_ATTR_rec.attribute_grouping_no 	:= l_implicit_attr_rec.ATTRIBUTE_GROUPING_NO;
2083 	        l_PRICING_ATTR_rec.context     			:= l_implicit_attr_rec.CONTEXT;
2084         	l_PRICING_ATTR_rec.created_by  			:= l_implicit_attr_rec.CREATED_BY;
2085 	        l_PRICING_ATTR_rec.creation_date 		:= l_implicit_attr_rec.CREATION_DATE;
2086         	l_PRICING_ATTR_rec.excluder_flag 		:= l_implicit_attr_rec.EXCLUDER_FLAG;
2087 	        l_PRICING_ATTR_rec.last_updated_by 		:= l_implicit_attr_rec.LAST_UPDATED_BY;
2088 	        l_PRICING_ATTR_rec.last_update_date 		:= l_implicit_attr_rec.LAST_UPDATE_DATE;
2089 	        l_PRICING_ATTR_rec.last_update_login 		:= l_implicit_attr_rec.LAST_UPDATE_LOGIN;
2090 	        l_PRICING_ATTR_rec.list_line_id 		:= l_new_list_line_id;
2091 	        l_PRICING_ATTR_rec.list_header_id 		:= l_implicit_attr_rec.LIST_HEADER_ID;
2092         	l_PRICING_ATTR_rec.pricing_phase_id 		:= l_implicit_attr_rec.PRICING_PHASE_ID;
2093 	        l_PRICING_ATTR_rec.pricing_attribute 		:= l_implicit_attr_rec.PRICING_ATTRIBUTE;
2094         	l_PRICING_ATTR_rec.pricing_attribute_context 	:= l_implicit_attr_rec.PRICING_ATTRIBUTE_CONTEXT;
2095 	        l_PRICING_ATTR_rec.pricing_attribute_id 	:= l_new_pricing_attribute_id;
2096         	l_PRICING_ATTR_rec.pricing_attr_value_from 	:= l_implicit_attr_rec.PRICING_ATTR_VALUE_FROM;
2097 	        l_PRICING_ATTR_rec.pricing_attr_value_to 	:= l_implicit_attr_rec.PRICING_ATTR_VALUE_TO;
2098 	        l_PRICING_ATTR_rec.product_attribute 		:= l_implicit_attr_rec.PRODUCT_ATTRIBUTE;
2099 	        l_PRICING_ATTR_rec.product_attribute_context 	:= l_implicit_attr_rec.PRODUCT_ATTRIBUTE_CONTEXT;
2100 	        l_PRICING_ATTR_rec.product_attr_value 		:= l_implicit_attr_rec.PRODUCT_ATTR_VALUE;
2101 	        l_PRICING_ATTR_rec.product_uom_code 		:= l_implicit_attr_rec.PRODUCT_UOM_CODE;
2102         	l_PRICING_ATTR_rec.program_application_id 	:= l_implicit_attr_rec.PROGRAM_APPLICATION_ID;
2103 	        l_PRICING_ATTR_rec.program_id  			:= l_implicit_attr_rec.PROGRAM_ID;
2104 	        l_PRICING_ATTR_rec.program_update_date 		:= l_implicit_attr_rec.PROGRAM_UPDATE_DATE;
2105 	        l_PRICING_ATTR_rec.request_id  			:= l_implicit_attr_rec.REQUEST_ID;
2106 	        l_PRICING_ATTR_rec.comparison_operator_code 	:= l_implicit_attr_rec.comparison_operator_code;
2107         	l_PRICING_ATTR_rec.pricing_attribute_datatype 	:= l_implicit_attr_rec.pricing_attribute_datatype;
2108 	        l_PRICING_ATTR_rec.product_attribute_datatype 	:= l_implicit_attr_rec.product_attribute_datatype;
2109         	l_PRICING_ATTR_rec.pricing_attr_value_from_number := l_implicit_attr_rec.PRICING_ATTR_VALUE_FROM_NUMBER;
2110 	        l_PRICING_ATTR_rec.pricing_attr_value_to_number := l_implicit_attr_rec.PRICING_ATTR_VALUE_TO_NUMBER;
2111 	        l_PRICING_ATTR_rec.qualification_ind 		:= l_implicit_attr_rec.QUALIFICATION_IND;
2112         	l_PRICING_ATTR_rec.operation 			:= QP_GLOBALS.G_OPR_CREATE;
2113 
2114         	l_PRICING_ATTR_tbl(l_PRICING_ATTR_tbl.COUNT + 1) := l_PRICING_ATTR_rec;
2115 
2116          END LOOP;
2117       END LOOP;
2118     END IF;
2119 
2120  IF ((l_PRICE_LIST_LINE_tbl.COUNT    <> 0) OR
2121         (l_PRICING_ATTR_tbl.COUNT <> 0))
2122 
2123  -- added for related lines duplication
2124 
2125     THEN
2126     l_control_rec.controlled_operation := TRUE;
2127     l_control_rec.write_to_DB          := TRUE;
2128 
2129     l_control_rec.validate_entity      := FALSE;
2130     l_control_rec.default_attributes   := FALSE;
2131     l_control_rec.change_attributes    := FALSE;
2132     l_control_rec.process              := FALSE;
2133 
2134     --  Instruct API to retain its caches
2135 
2136     l_control_rec.clear_api_cache      := FALSE;
2137     l_control_rec.clear_api_requests   := FALSE;
2138 
2139 
2140     QP_LIST_HEADERS_PVT.Process_PRICE_LIST
2141     (   p_api_version_number          => 1.0
2142     ,   p_init_msg_list               => FND_API.G_TRUE
2143     ,   x_return_status               => l_return_status
2144     ,   x_msg_count                   => x_msg_count
2145     ,   x_msg_data                    => x_msg_data
2146     ,   p_control_rec                 => l_control_rec
2147     ,   p_PRICE_LIST_LINE_tbl         => l_PRICE_LIST_LINE_tbl   /* added for related lines duplication*/
2148     ,   p_PRICING_ATTR_tbl            => l_PRICING_ATTR_tbl
2149     ,   x_PRICE_LIST_rec              => l_x_PRICE_LIST_rec
2150     ,   x_PRICE_LIST_LINE_tbl         => l_x_PRICE_LIST_LINE_tbl
2151     ,   x_QUALIFIERS_tbl              => l_x_QUALIFIERS_tbl
2152     ,   x_PRICING_ATTR_tbl            => l_x_PRICING_ATTR_tbl
2153     );
2154 
2155 -- Upgrade Non Continuous Price Break Lines into Continuous Price Break Lines.
2156 IF (l_continuous_price_break_flag<>'Y' OR  l_continuous_price_break_flag IS NULL )and l_list_line_type_code='PBH' THEN
2157 qp_delayed_requests_PVT.log_request
2158       (  p_entity_code            => QP_GLOBALS.G_ENTITY_PRICING_ATTR
2159        , p_entity_id              =>p_x_new_list_line_id
2160        , p_requesting_entity_code => QP_GLOBALS.G_ENTITY_PRICING_ATTR
2161        , p_requesting_entity_id   => p_x_new_list_line_id
2162        , p_request_type           => QP_Globals.G_UPGRADE_PRICE_BREAKS
2163        , p_param1                 => null
2164        , p_param2                 => null
2165        , p_param3                 => null
2166        , x_return_status          => l_return_status);
2167 
2168 
2169      QP_DELAYED_REQUESTS_PVT.Process_Request_for_Entity
2170       (  p_entity_code            => QP_GLOBALS.G_ENTITY_PRICING_ATTR
2171        , x_return_status          => l_return_status);
2172 END IF;
2173      oe_debug_pub.add('QPXFPLAB - l_return_status = ' || l_return_status);
2174       	 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2175        		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2176 	 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2177         	 RAISE FND_API.G_EXC_ERROR;
2178 	 END IF;
2179     END IF;
2180 
2181     -- Added following 3 lines to avoid NullPointerException when called from Mass Maintenance
2182     if x_msg_count is null then
2183        x_msg_count := 0;
2184     end if;
2185 
2186 EXCEPTION
2187 
2188     WHEN FND_API.G_EXC_ERROR THEN
2189 
2190    --        x_return_status := FND_API.G_RET_STS_ERROR;
2191 
2192         --  Get message count and data
2193 
2194         oe_msg_pub.Count_And_Get
2195         (   p_count                       => x_msg_count
2196         ,   p_data                        => x_msg_data
2197         );
2198 
2199     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2200 
2201     --    x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2202 
2203         --  Get message count and data
2204 
2205         oe_msg_pub.Count_And_Get
2206         (   p_count                       => x_msg_count
2207         ,   p_data                        => x_msg_data
2208         );
2209 
2210     WHEN OTHERS THEN
2211 
2212      --   x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2213 
2214         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
2215         THEN
2216             oe_msg_pub.Add_Exc_Msg
2217             (   G_PKG_NAME
2218             ,   'Write to DB'
2219             );
2220         END IF;
2221 
2222         --  Get message count and data
2223 
2224         oe_msg_pub.Count_And_Get
2225         (   p_count                       => x_msg_count
2226         ,   p_data                        => x_msg_data
2227         );
2228 
2229 END Dup_record;
2230 
2231 END QP_QP_Form_pll_pricing_attr;