DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_PRICING_ATTR_UTIL

Source


1 PACKAGE BODY QP_Pricing_Attr_Util AS
2 /* $Header: QPXUPRAB.pls 120.7.12010000.2 2008/08/19 08:29:36 kdurgasi ship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'QP_Pricing_Attr_Util';
7 
8 --  Procedure Clear_Dependent_Attr
9 
10 PROCEDURE Clear_Dependent_Attr
11 (   p_attr_id                       IN  NUMBER := FND_API.G_MISS_NUM
12 ,   p_PRICING_ATTR_rec              IN  QP_Modifiers_PUB.Pricing_Attr_Rec_Type
13 ,   p_old_PRICING_ATTR_rec          IN  QP_Modifiers_PUB.Pricing_Attr_Rec_Type :=
14                                         QP_Modifiers_PUB.G_MISS_PRICING_ATTR_REC
15 ,   x_PRICING_ATTR_rec              OUT NOCOPY /* file.sql.39 change */ QP_Modifiers_PUB.Pricing_Attr_Rec_Type
16 )
17 IS
18 l_index                       NUMBER := 0;
19 l_src_attr_tbl                QP_GLOBALS.NUMBER_Tbl_Type;
20 l_dep_attr_tbl                QP_GLOBALS.NUMBER_Tbl_Type;
21 BEGIN
22 
23 oe_debug_pub.add('BEGIN Clear_Dependent_Attr in QPXUPRAB');
24 
25     --  Load out record
26 
27     x_PRICING_ATTR_rec := p_PRICING_ATTR_rec;
28 
29     --  If attr_id is missing compare old and new records and for
30     --  every changed attribute clear its dependent fields.
31 
32     IF p_attr_id = FND_API.G_MISS_NUM THEN
33 
34         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.accumulate_flag,p_old_PRICING_ATTR_rec.accumulate_flag)
35         THEN
36             l_index := l_index + 1;
37             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ACCUMULATE;
38         END IF;
39 
40         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute1,p_old_PRICING_ATTR_rec.attribute1)
41         THEN
42             l_index := l_index + 1;
43             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE1;
44         END IF;
45 
46         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute10,p_old_PRICING_ATTR_rec.attribute10)
47         THEN
48             l_index := l_index + 1;
49             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE10;
50         END IF;
51 
52         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute11,p_old_PRICING_ATTR_rec.attribute11)
53         THEN
54             l_index := l_index + 1;
55             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE11;
56         END IF;
57 
58         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute12,p_old_PRICING_ATTR_rec.attribute12)
59         THEN
60             l_index := l_index + 1;
61             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE12;
62         END IF;
63 
64         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute13,p_old_PRICING_ATTR_rec.attribute13)
65         THEN
66             l_index := l_index + 1;
67             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE13;
68         END IF;
69 
70         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute14,p_old_PRICING_ATTR_rec.attribute14)
71         THEN
72             l_index := l_index + 1;
73             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE14;
74         END IF;
75 
76         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute15,p_old_PRICING_ATTR_rec.attribute15)
77         THEN
78             l_index := l_index + 1;
79             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE15;
80         END IF;
81 
82         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute2,p_old_PRICING_ATTR_rec.attribute2)
83         THEN
84             l_index := l_index + 1;
85             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE2;
86         END IF;
87 
88         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute3,p_old_PRICING_ATTR_rec.attribute3)
89         THEN
90             l_index := l_index + 1;
91             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE3;
92         END IF;
93 
94         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute4,p_old_PRICING_ATTR_rec.attribute4)
95         THEN
96             l_index := l_index + 1;
97             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE4;
98         END IF;
99 
100         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute5,p_old_PRICING_ATTR_rec.attribute5)
101         THEN
102             l_index := l_index + 1;
103             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE5;
104         END IF;
105 
106         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute6,p_old_PRICING_ATTR_rec.attribute6)
107         THEN
108             l_index := l_index + 1;
109             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE6;
110         END IF;
111 
112         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute7,p_old_PRICING_ATTR_rec.attribute7)
113         THEN
114             l_index := l_index + 1;
115             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE7;
116         END IF;
117 
118         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute8,p_old_PRICING_ATTR_rec.attribute8)
119         THEN
120             l_index := l_index + 1;
121             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE8;
122         END IF;
123 
124         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute9,p_old_PRICING_ATTR_rec.attribute9)
125         THEN
126             l_index := l_index + 1;
127             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE9;
128         END IF;
129 
130         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute_grouping_no,p_old_PRICING_ATTR_rec.attribute_grouping_no)
131         THEN
132             l_index := l_index + 1;
133             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE_GROUPING_NO;
134         END IF;
135 
136         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.context,p_old_PRICING_ATTR_rec.context)
137         THEN
138             l_index := l_index + 1;
139             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_CONTEXT;
140         END IF;
141 
142         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.created_by,p_old_PRICING_ATTR_rec.created_by)
143         THEN
144             l_index := l_index + 1;
145             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_CREATED_BY;
146         END IF;
147 
148         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.creation_date,p_old_PRICING_ATTR_rec.creation_date)
149         THEN
150             l_index := l_index + 1;
151             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_CREATION_DATE;
152         END IF;
153 
154         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.excluder_flag,p_old_PRICING_ATTR_rec.excluder_flag)
155         THEN
156             l_index := l_index + 1;
157             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_EXCLUDER;
158         END IF;
159 
160         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.last_updated_by,p_old_PRICING_ATTR_rec.last_updated_by)
161         THEN
162             l_index := l_index + 1;
163             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_LAST_UPDATED_BY;
164         END IF;
165 
166         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.last_update_date,p_old_PRICING_ATTR_rec.last_update_date)
167         THEN
168             l_index := l_index + 1;
169             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_LAST_UPDATE_DATE;
170         END IF;
171 
172         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.last_update_login,p_old_PRICING_ATTR_rec.last_update_login)
173         THEN
174             l_index := l_index + 1;
175             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_LAST_UPDATE_LOGIN;
176         END IF;
177 
178 /*included by spgopal to include list_header_id in pricing attr for performance problems*/
179         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.list_header_id,p_old_PRICING_ATTR_rec.list_header_id)
180         THEN
181             l_index := l_index + 1;
182             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_LIST_HEADER;
183         END IF;
184 
185 /*included by spgopal to include pricing_phase_id in pricing attr for performance problems*/
186         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_phase_id,p_old_PRICING_ATTR_rec.pricing_phase_id)
187         THEN
188             l_index := l_index + 1;
189             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PRICING_PHASE;
190         END IF;
191 
192         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.list_line_id,p_old_PRICING_ATTR_rec.list_line_id)
193         THEN
194             l_index := l_index + 1;
195             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_LIST_LINE;
196         END IF;
197 
198         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attribute,p_old_PRICING_ATTR_rec.pricing_attribute)
199         THEN
200             l_index := l_index + 1;
201             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PRICING_ATTRIBUTE;
202         END IF;
203 
204         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attribute_context,p_old_PRICING_ATTR_rec.pricing_attribute_context)
205         THEN
206             l_index := l_index + 1;
207             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PRICING_ATTRIBUTE_CONTEXT;
208         END IF;
209 
210 /*
211         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attribute_id,p_old_PRICING_ATTR_rec.pricing_attribute_id)
212         THEN
213             l_index := l_index + 1;
214             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PRICING_ATTRIBUTE;
215         END IF;
216 */
217 
218         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attr_value_from,p_old_PRICING_ATTR_rec.pricing_attr_value_from)
219         THEN
220             l_index := l_index + 1;
221             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PRICING_ATTR_VALUE_FROM;
222         END IF;
223 
224         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attr_value_to,p_old_PRICING_ATTR_rec.pricing_attr_value_to)
225         THEN
226             l_index := l_index + 1;
227             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PRICING_ATTR_VALUE_TO;
228         END IF;
229 
230         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.product_attribute,p_old_PRICING_ATTR_rec.product_attribute)
231         THEN
232             l_index := l_index + 1;
233             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PRODUCT_ATTRIBUTE;
234         END IF;
235 
236         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.product_attribute_context,p_old_PRICING_ATTR_rec.product_attribute_context)
237         THEN
238             l_index := l_index + 1;
239             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PRODUCT_ATTRIBUTE_CONTEXT;
240         END IF;
241 
242         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.product_attr_value,p_old_PRICING_ATTR_rec.product_attr_value)
243         THEN
244             l_index := l_index + 1;
245             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PRODUCT_ATTR_VALUE;
246         END IF;
247 
248         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.product_uom_code,p_old_PRICING_ATTR_rec.product_uom_code)
249         THEN
250             l_index := l_index + 1;
251             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PRODUCT_UOM;
252         END IF;
253 
254         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.program_application_id,p_old_PRICING_ATTR_rec.program_application_id)
255         THEN
256             l_index := l_index + 1;
257             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PROGRAM_APPLICATION;
258         END IF;
259 
260         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.program_id,p_old_PRICING_ATTR_rec.program_id)
261         THEN
262             l_index := l_index + 1;
263             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PROGRAM;
264         END IF;
265 
266         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.program_update_date,p_old_PRICING_ATTR_rec.program_update_date)
267         THEN
268             l_index := l_index + 1;
269             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PROGRAM_UPDATE_DATE;
270         END IF;
271 
272         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.request_id,p_old_PRICING_ATTR_rec.request_id)
273         THEN
274             l_index := l_index + 1;
275             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_REQUEST;
276         END IF;
277 
278         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.product_attribute_datatype,p_old_PRICING_ATTR_rec.product_attribute_datatype)
279         THEN
280             l_index := l_index + 1;
281             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PRODUCT_ATTRIBUTE_DATATYPE;
282         END IF;
283 
284         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attribute_datatype,p_old_PRICING_ATTR_rec.pricing_attribute_datatype)
285         THEN
286             l_index := l_index + 1;
287             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PRICING_ATTRIBUTE_DATATYPE;
288         END IF;
289 
290         IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.comparison_operator_code,p_old_PRICING_ATTR_rec.comparison_operator_code)
291         THEN
292             l_index := l_index + 1;
293             l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_COMPARISON_OPERATOR;
294         END IF;
295 
296     ELSIF p_attr_id = G_ACCUMULATE THEN
297         l_index := l_index + 1;
298         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ACCUMULATE;
299     ELSIF p_attr_id = G_ATTRIBUTE1 THEN
300         l_index := l_index + 1;
301         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE1;
302     ELSIF p_attr_id = G_ATTRIBUTE10 THEN
303         l_index := l_index + 1;
304         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE10;
305     ELSIF p_attr_id = G_ATTRIBUTE11 THEN
306         l_index := l_index + 1;
307         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE11;
308     ELSIF p_attr_id = G_ATTRIBUTE12 THEN
309         l_index := l_index + 1;
310         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE12;
311     ELSIF p_attr_id = G_ATTRIBUTE13 THEN
312         l_index := l_index + 1;
313         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE13;
314     ELSIF p_attr_id = G_ATTRIBUTE14 THEN
315         l_index := l_index + 1;
316         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE14;
317     ELSIF p_attr_id = G_ATTRIBUTE15 THEN
318         l_index := l_index + 1;
319         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE15;
320     ELSIF p_attr_id = G_ATTRIBUTE2 THEN
321         l_index := l_index + 1;
322         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE2;
323     ELSIF p_attr_id = G_ATTRIBUTE3 THEN
324         l_index := l_index + 1;
325         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE3;
326     ELSIF p_attr_id = G_ATTRIBUTE4 THEN
327         l_index := l_index + 1;
328         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE4;
329     ELSIF p_attr_id = G_ATTRIBUTE5 THEN
330         l_index := l_index + 1;
331         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE5;
332     ELSIF p_attr_id = G_ATTRIBUTE6 THEN
333         l_index := l_index + 1;
334         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE6;
335     ELSIF p_attr_id = G_ATTRIBUTE7 THEN
336         l_index := l_index + 1;
337         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE7;
338     ELSIF p_attr_id = G_ATTRIBUTE8 THEN
339         l_index := l_index + 1;
340         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE8;
341     ELSIF p_attr_id = G_ATTRIBUTE9 THEN
342         l_index := l_index + 1;
343         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE9;
344     ELSIF p_attr_id = G_ATTRIBUTE_GROUPING_NO THEN
345         l_index := l_index + 1;
346         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_ATTRIBUTE_GROUPING_NO;
347     ELSIF p_attr_id = G_CONTEXT THEN
348         l_index := l_index + 1;
349         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_CONTEXT;
350     ELSIF p_attr_id = G_CREATED_BY THEN
351         l_index := l_index + 1;
352         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_CREATED_BY;
353     ELSIF p_attr_id = G_CREATION_DATE THEN
354         l_index := l_index + 1;
355         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_CREATION_DATE;
356     ELSIF p_attr_id = G_EXCLUDER THEN
357         l_index := l_index + 1;
358         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_EXCLUDER;
359     ELSIF p_attr_id = G_LAST_UPDATED_BY THEN
360         l_index := l_index + 1;
361         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_LAST_UPDATED_BY;
362     ELSIF p_attr_id = G_LAST_UPDATE_DATE THEN
363         l_index := l_index + 1;
364         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_LAST_UPDATE_DATE;
365     ELSIF p_attr_id = G_LAST_UPDATE_LOGIN THEN
366         l_index := l_index + 1;
367         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_LAST_UPDATE_LOGIN;
368     ELSIF p_attr_id = G_LIST_LINE THEN
369         l_index := l_index + 1;
370         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_LIST_LINE;
371     ELSIF p_attr_id = G_PRICING_ATTRIBUTE THEN
372         l_index := l_index + 1;
373         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PRICING_ATTRIBUTE;
374     ELSIF p_attr_id = G_PRICING_ATTRIBUTE_CONTEXT THEN
375         l_index := l_index + 1;
376         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PRICING_ATTRIBUTE_CONTEXT;
377     ELSIF p_attr_id = G_PRICING_ATTRIBUTE THEN
378         l_index := l_index + 1;
379         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PRICING_ATTRIBUTE;
380     ELSIF p_attr_id = G_PRICING_ATTR_VALUE_FROM THEN
381         l_index := l_index + 1;
382         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PRICING_ATTR_VALUE_FROM;
383     ELSIF p_attr_id = G_PRICING_ATTR_VALUE_TO THEN
384         l_index := l_index + 1;
385         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PRICING_ATTR_VALUE_TO;
386     ELSIF p_attr_id = G_PRODUCT_ATTRIBUTE THEN
387         l_index := l_index + 1;
388         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PRODUCT_ATTRIBUTE;
389     ELSIF p_attr_id = G_PRODUCT_ATTRIBUTE_CONTEXT THEN
390         l_index := l_index + 1;
391         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PRODUCT_ATTRIBUTE_CONTEXT;
392     ELSIF p_attr_id = G_PRODUCT_ATTR_VALUE THEN
393         l_index := l_index + 1;
394         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PRODUCT_ATTR_VALUE;
395     ELSIF p_attr_id = G_PRODUCT_UOM THEN
396         l_index := l_index + 1;
397         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PRODUCT_UOM;
398     ELSIF p_attr_id = G_PROGRAM_APPLICATION THEN
399         l_index := l_index + 1;
400         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PROGRAM_APPLICATION;
401     ELSIF p_attr_id = G_PROGRAM THEN
402         l_index := l_index + 1;
403         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PROGRAM;
404     ELSIF p_attr_id = G_PROGRAM_UPDATE_DATE THEN
405         l_index := l_index + 1;
406         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PROGRAM_UPDATE_DATE;
407     ELSIF p_attr_id = G_REQUEST THEN
408         l_index := l_index + 1;
409         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_REQUEST;
410     ELSIF p_attr_id = G_PRODUCT_ATTRIBUTE_DATATYPE THEN
411         l_index := l_index + 1;
412         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PRODUCT_ATTRIBUTE_DATATYPE;
413     ELSIF p_attr_id = G_PRICING_ATTRIBUTE_DATATYPE THEN
414         l_index := l_index + 1;
415         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_PRICING_ATTRIBUTE_DATATYPE;
416     ELSIF p_attr_id = G_COMPARISON_OPERATOR THEN
417         l_index := l_index + 1;
418         l_src_attr_tbl(l_index) := QP_PRICING_ATTR_UTIL.G_COMPARISON_OPERATOR;
419     END IF;
420 
421 oe_debug_pub.add('END Clear_Dependent_Attr in QPXUPRAB');
422 
423 END Clear_Dependent_Attr;
424 
425 --  Procedure Apply_Attribute_Changes
426 
427 PROCEDURE Apply_Attribute_Changes
428 (   p_PRICING_ATTR_rec              IN  QP_Modifiers_PUB.Pricing_Attr_Rec_Type
429 ,   p_old_PRICING_ATTR_rec          IN  QP_Modifiers_PUB.Pricing_Attr_Rec_Type :=
430                                         QP_Modifiers_PUB.G_MISS_PRICING_ATTR_REC
431 ,   x_PRICING_ATTR_rec              OUT NOCOPY /* file.sql.39 change */ QP_Modifiers_PUB.Pricing_Attr_Rec_Type
432 )
433 IS
434 x_datatype         VARCHAR2(1);
435 x_context_flag     VARCHAR2(1);
436 x_attribute_flag   VARCHAR2(1);
437 x_value_flag       VARCHAR2(1);
438 x_precedence       NUMBER;
439 x_error_code       NUMBER := 0;
440 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
441 --Bug 4706180
442 l_rltd_modifier_grp_type  VARCHAR2(30);
443 
444 BEGIN
445 
446 oe_debug_pub.add('BEGIN Apply_Attribute_Changes in QPXUPRAB');
447 
448     --  Load out record
449 
450     x_PRICING_ATTR_rec := p_PRICING_ATTR_rec;
451 
452     -- Get Product Attribute Datatype
453 
454     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.product_attribute_context,
455 					   p_old_PRICING_ATTR_rec.product_attribute_context)
456     OR NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.product_attribute,
457 					   p_old_PRICING_ATTR_rec.product_attribute)
458     OR NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.product_attr_value,
459 					   p_old_PRICING_ATTR_rec.product_attr_value)
460     THEN
461 
462        QP_UTIL.validate_qp_flexfield(flexfield_name     =>'QP_ATTR_DEFNS_PRICING'
463 						 ,context    =>p_PRICING_ATTR_rec.product_attribute_context
464 						 ,attribute  =>p_PRICING_ATTR_rec.product_attribute
465 						 ,value      =>p_PRICING_ATTR_rec.product_attr_value
466                                ,application_short_name         => 'QP'
467 						 ,context_flag                   =>x_context_flag
468 						 ,attribute_flag                 =>x_attribute_flag
469 						 ,value_flag                     =>x_value_flag
470 						 ,datatype                       =>x_datatype
471 						 ,precedence                      =>x_precedence
472 						 ,error_code                     =>x_error_code
473 						 );
474 
475       x_PRICING_ATTR_rec.product_attribute_datatype := x_datatype;
476 
477     END IF;
478 
479     -- Get Pricing Attribute Datatype
480 
481     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attribute_context,
482 					   p_old_PRICING_ATTR_rec.pricing_attribute_context)
483     OR NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attribute,
484 					   p_old_PRICING_ATTR_rec.pricing_attribute)
485     OR NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attr_value_from,
486 					   p_old_PRICING_ATTR_rec.pricing_attr_value_from)
487     THEN
488 
489      	IF  p_PRICING_ATTR_rec.pricing_attribute_context = 'VOLUME'
490      	THEN
491 
492            x_PRICING_ATTR_rec.pricing_attribute_datatype := 'N';
493 
494           ELSE
495 
496        QP_UTIL.validate_qp_flexfield(flexfield_name     =>'QP_ATTR_DEFNS_PRICING'
497 						 ,context    =>p_PRICING_ATTR_rec.pricing_attribute_context
498 						 ,attribute  =>p_PRICING_ATTR_rec.pricing_attribute
499 						 ,value      =>p_PRICING_ATTR_rec.pricing_attr_value_from
500                                ,application_short_name         => 'QP'
501 						 ,context_flag                   =>x_context_flag
502 						 ,attribute_flag                 =>x_attribute_flag
503 						 ,value_flag                     =>x_value_flag
504 						 ,datatype                       =>x_datatype
505 						 ,precedence                      =>x_precedence
506 						 ,error_code                     =>x_error_code
507 						 );
508 
509                 x_PRICING_ATTR_rec.pricing_attribute_datatype := x_datatype;
510 
511           END IF;
512     END IF;
513 
514     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.accumulate_flag,p_old_PRICING_ATTR_rec.accumulate_flag)
515     THEN
516         NULL;
517     END IF;
518 
519     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute1,p_old_PRICING_ATTR_rec.attribute1)
520     THEN
521         NULL;
522     END IF;
523 
524 oe_debug_pub.add('11');
525     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute10,p_old_PRICING_ATTR_rec.attribute10)
526     THEN
527         NULL;
528     END IF;
529 
530     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute11,p_old_PRICING_ATTR_rec.attribute11)
531     THEN
532         NULL;
533     END IF;
534 
535     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute12,p_old_PRICING_ATTR_rec.attribute12)
536     THEN
537         NULL;
538     END IF;
539 
540 oe_debug_pub.add('22');
541     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute13,p_old_PRICING_ATTR_rec.attribute13)
542     THEN
543         NULL;
544     END IF;
545 
546     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute14,p_old_PRICING_ATTR_rec.attribute14)
547     THEN
548         NULL;
549     END IF;
550 
551     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute15,p_old_PRICING_ATTR_rec.attribute15)
552     THEN
553         NULL;
554     END IF;
555 
556 oe_debug_pub.add('33');
557     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute2,p_old_PRICING_ATTR_rec.attribute2)
558     THEN
559         NULL;
560     END IF;
561 
562     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute3,p_old_PRICING_ATTR_rec.attribute3)
563     THEN
564         NULL;
565     END IF;
566 
567     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute4,p_old_PRICING_ATTR_rec.attribute4)
568     THEN
569         NULL;
570     END IF;
571 
572     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute5,p_old_PRICING_ATTR_rec.attribute5)
573     THEN
574         NULL;
575     END IF;
576 
577 oe_debug_pub.add('44');
578     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute6,p_old_PRICING_ATTR_rec.attribute6)
579     THEN
580         NULL;
581     END IF;
582 
583     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute7,p_old_PRICING_ATTR_rec.attribute7)
584     THEN
585         NULL;
586     END IF;
587 
588     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute8,p_old_PRICING_ATTR_rec.attribute8)
589     THEN
590         NULL;
591     END IF;
592 
593     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute9,p_old_PRICING_ATTR_rec.attribute9)
594     THEN
595         NULL;
596     END IF;
597 
598     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute_grouping_no,p_old_PRICING_ATTR_rec.attribute_grouping_no)
599     THEN
600         NULL;
601     END IF;
602 
603 oe_debug_pub.add('55');
604     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.context,p_old_PRICING_ATTR_rec.context)
605     THEN
606         NULL;
607     END IF;
608 
609     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.created_by,p_old_PRICING_ATTR_rec.created_by)
610     THEN
611         NULL;
612     END IF;
613 
614     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.creation_date,p_old_PRICING_ATTR_rec.creation_date)
615     THEN
616         NULL;
617     END IF;
618 
619     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.excluder_flag,p_old_PRICING_ATTR_rec.excluder_flag)
620     THEN
621         NULL;
622     END IF;
623 
624     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.last_updated_by,p_old_PRICING_ATTR_rec.last_updated_by)
625     THEN
626         NULL;
627     END IF;
628 
629     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.last_update_date,p_old_PRICING_ATTR_rec.last_update_date)
630     THEN
631         NULL;
632     END IF;
633 
634     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.last_update_login,p_old_PRICING_ATTR_rec.last_update_login)
635     THEN
636         NULL;
637     END IF;
638 
639 /*included by spgopal to include list_header_id in pricing attr for performance problems*/
640     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.list_header_id,p_old_PRICING_ATTR_rec.list_header_id)
641     THEN
642     /* commented this part as it is not reqd- spgopal
643 		IF p_PRICING_ATTR_rec.list_header_id IS NULL OR
644 			p_PRICING_ATTR_rec.list_header_id = FND_API.G_MISS_NUM THEN
645 
646 			BEGIN
647 
648 			oe_debug_pub.add('list_line_id in apply gsp'||to_char(p_PRICING_ATTR_rec.list_line_id));
649 			select list_header_id into x_PRICING_ATTR_rec.list_header_id
650 				from qp_list_lines
651 				where list_line_id = p_PRICING_ATTR_rec.list_line_id;
652 			EXCEPTION
653 			When NO_DATA_FOUND Then
654 			Null;
655 			END;
656 		ELSE
657 			null;
658 		END IF;
659 		*/
660 
661         NULL;
662     END IF;
663 
664 /*included by spgopal to include pricing_phase_id in pricing attr for performance problems*/
665     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_phase_id,p_old_PRICING_ATTR_rec.pricing_phase_id)
666     THEN
667     /* commented this part as it is not reqd - spgopal
668 		IF p_PRICING_ATTR_rec.pricing_phase_id IS NULL OR
669 			p_PRICING_ATTR_rec.pricing_phase_id = FND_API.G_MISS_NUM THEN
670 
671 			BEGIN
672 			oe_debug_pub.add('list_line_id in apply gsp'||to_char(p_PRICING_ATTR_rec.list_line_id));
673 			select pricing_phase_id into x_PRICING_ATTR_rec.pricing_phase_id
674 				from qp_list_lines
675 				where list_line_id = p_PRICING_ATTR_rec.list_line_id;
676 			EXCEPTION
677 			When NO_DATA_FOUND Then
678 			Null;
679 			END;
680 		ELSE
681 			null;
682 		END IF;
683 		*/
684 
685         NULL;
686     END IF;
687 
688     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.list_line_id,p_old_PRICING_ATTR_rec.list_line_id)
689     THEN
690                qp_delayed_requests_PVT.log_request(
691                  p_entity_code => QP_GLOBALS.G_ENTITY_MODIFIERS,
692    	         p_entity_id  => p_PRICING_ATTR_rec.list_line_id,
693                  p_requesting_entity_code=> QP_GLOBALS.G_ENTITY_MODIFIERS,
694                  p_requesting_entity_id => p_PRICING_ATTR_rec.list_line_id,
695                  p_request_type =>QP_GLOBALS.G_UPDATE_LINE_QUAL_IND,
696                  x_return_status => l_return_status);
697     END IF;
698 
699     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attribute,p_old_PRICING_ATTR_rec.pricing_attribute)
700     THEN
701         NULL;
702     END IF;
703 
704     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attribute_context,p_old_PRICING_ATTR_rec.pricing_attribute_context)
705     THEN
706        -- mkarya for bug 1789276, log the request for a change in pricing_attribute_context
707                qp_delayed_requests_PVT.log_request(
708                  p_entity_code => QP_GLOBALS.G_ENTITY_MODIFIERS,
709    	         p_entity_id  => p_PRICING_ATTR_rec.list_line_id,
710                  p_requesting_entity_code=> QP_GLOBALS.G_ENTITY_MODIFIERS,
711                  p_requesting_entity_id => p_PRICING_ATTR_rec.list_line_id,
712                  p_request_type =>QP_GLOBALS.G_UPDATE_LINE_QUAL_IND,
713                  x_return_status => l_return_status);
714         NULL;
715     END IF;
716 
717     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attribute_id,p_old_PRICING_ATTR_rec.pricing_attribute_id)
718     THEN
719         NULL;
720     END IF;
721 
722     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attr_value_from,p_old_PRICING_ATTR_rec.pricing_attr_value_from)
723     THEN
724 
725        --Fetch modfier group type (Bug 4706180) Start
726        BEGIN
727          SELECT RLTD_MODIFIER_GRP_TYPE
728          INTO   l_rltd_modifier_grp_type
729          FROM   qp_rltd_modifiers rm
730          WHERE  rm.TO_RLTD_MODIFIER_ID = p_PRICING_ATTR_rec.list_line_id;
731        EXCEPTION
732          WHEN OTHERS THEN
733           l_rltd_modifier_grp_type := '';
734        END;
735        --End
736 		--changes made for bug 1566429
737 		--for recurring breaks defaulting the value_to to a large number
738 		IF p_PRICING_ATTR_rec.pricing_attribute_context = 'VOLUME'
739 		   AND p_PRICING_ATTR_rec.pricing_attribute IS NOT NULL
740 		   AND p_PRICING_ATTR_rec.comparison_operator_code = 'BETWEEN'
741 		   AND p_PRICING_ATTR_rec.pricing_attr_value_to IS NULL
742             	   -- Bug 4706180
743            	   AND l_rltd_modifier_grp_type = 'PRICE BREAK'
744 		THEN
745 		   -- Bug 4706180
746 		   x_PRICING_ATTR_rec.pricing_attr_value_to := '999999999999999';
747 		END IF;
748         NULL;
749     END IF;
750 
751     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attr_value_to,p_old_PRICING_ATTR_rec.pricing_attr_value_to)
752     THEN
753         NULL;
754     END IF;
755 
756     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.product_attribute,p_old_PRICING_ATTR_rec.product_attribute)
757     THEN
758         NULL;
759     END IF;
760 
761     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.product_attribute_context,p_old_PRICING_ATTR_rec.product_attribute_context)
762     THEN
763        -- mkarya for bug 1789276, log the request for a change in product_attribute_context
764                qp_delayed_requests_PVT.log_request(
765                  p_entity_code => QP_GLOBALS.G_ENTITY_MODIFIERS,
766    	         p_entity_id  => p_PRICING_ATTR_rec.list_line_id,
767                  p_requesting_entity_code=> QP_GLOBALS.G_ENTITY_MODIFIERS,
768                  p_requesting_entity_id => p_PRICING_ATTR_rec.list_line_id,
769                  p_request_type =>QP_GLOBALS.G_UPDATE_LINE_QUAL_IND,
770                  x_return_status => l_return_status);
771         NULL;
772     END IF;
773 
774     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.product_attr_value,p_old_PRICING_ATTR_rec.product_attr_value)
775     THEN
776         NULL;
777     END IF;
778 
779     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.product_uom_code,p_old_PRICING_ATTR_rec.product_uom_code)
780     THEN
781 
782     -- for updating price breaks rassharm bug no 7315129
783  	         IF p_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_UPDATE
784  	         THEN
785  	           UPDATE qp_pricing_attributes
786  	           SET product_uom_code = p_PRICING_ATTR_rec.product_uom_code
787  	           WHERE list_line_id = p_PRICING_ATTR_rec.list_line_id;
788 
789  	           -- for updating price breaks rassharm bug no 7315129
790 
791  	          update qp_pricing_attributes
792  	          SET product_uom_code = p_PRICING_ATTR_rec.product_uom_code
793  	          where list_line_id in
794  	         (
795  	         select to_rltd_modifier_id
796  	         from qp_list_lines ql, qp_rltd_modifiers qrm
797  	         where from_rltd_modifier_id= p_PRICING_ATTR_rec.list_line_id
798  	         AND qrm.to_rltd_modifier_id = ql.list_line_id
799  	         AND qrm.rltd_modifier_grp_type = 'PRICE BREAK'
800  	         ) ;
801 
802 
803 
804     END IF;
805        -- NULL;
806 --pattern
807 	IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Installed = 'Y' THEN
808 	  IF (p_PRICING_ATTR_rec.operation = OE_GLOBALS.G_OPR_UPDATE) THEN
809               qp_delayed_requests_pvt.log_request(
810 		p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
811 		p_entity_id => p_PRICING_ATTR_rec.list_header_id,
812 		p_request_unique_key1 => p_PRICING_ATTR_rec.list_line_id,
813 		p_request_unique_key2 => 'UD',
814 		p_requesting_entity_code => QP_GLOBALS.G_ENTITY_ALL,
815 		p_requesting_entity_id => p_PRICING_ATTR_rec.list_header_id,
816 		p_request_type => QP_GLOBALS.G_MAINTAIN_PRODUCT_PATTERN,
817 		x_return_status => l_return_status);
818            END IF;
819 	END IF; --Java Engine Installed
820 --pattern
821     END IF;
822 
823     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.program_application_id,p_old_PRICING_ATTR_rec.program_application_id)
824     THEN
825         NULL;
826     END IF;
827 
828     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.program_id,p_old_PRICING_ATTR_rec.program_id)
829     THEN
830         NULL;
831     END IF;
832 
833     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.program_update_date,p_old_PRICING_ATTR_rec.program_update_date)
834     THEN
835         NULL;
836     END IF;
837 
838     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.request_id,p_old_PRICING_ATTR_rec.request_id)
839     THEN
840         NULL;
841     END IF;
842 
843     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.product_attribute_datatype,p_old_PRICING_ATTR_rec.product_attribute_datatype)
844     THEN
845         NULL;
846     END IF;
847 
848     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attribute_datatype,p_old_PRICING_ATTR_rec.pricing_attribute_datatype)
849     THEN
850         NULL;
851     END IF;
852 
853     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.comparison_operator_code,p_old_PRICING_ATTR_rec.comparison_operator_code)
854     THEN
855         NULL;
856     END IF;
857 
858 oe_debug_pub.add('END Apply_Attribute_Changes in QPXUPRAB');
859 
860 END Apply_Attribute_Changes;
861 
862 --  Function Complete_Record
863 
864 FUNCTION Complete_Record
865 (   p_PRICING_ATTR_rec              IN  QP_Modifiers_PUB.Pricing_Attr_Rec_Type
866 ,   p_old_PRICING_ATTR_rec          IN  QP_Modifiers_PUB.Pricing_Attr_Rec_Type
867 ) RETURN QP_Modifiers_PUB.Pricing_Attr_Rec_Type
868 IS
869 l_PRICING_ATTR_rec            QP_Modifiers_PUB.Pricing_Attr_Rec_Type := p_PRICING_ATTR_rec;
870 BEGIN
871 
872 oe_debug_pub.add('BEGIN Complete_Record in QPXUPRAB');
873 
874     IF l_PRICING_ATTR_rec.accumulate_flag = FND_API.G_MISS_CHAR THEN
875         l_PRICING_ATTR_rec.accumulate_flag := p_old_PRICING_ATTR_rec.accumulate_flag;
876     END IF;
877 
878     IF l_PRICING_ATTR_rec.attribute1 = FND_API.G_MISS_CHAR THEN
879         l_PRICING_ATTR_rec.attribute1 := p_old_PRICING_ATTR_rec.attribute1;
880     END IF;
881 
882     IF l_PRICING_ATTR_rec.attribute10 = FND_API.G_MISS_CHAR THEN
883         l_PRICING_ATTR_rec.attribute10 := p_old_PRICING_ATTR_rec.attribute10;
884     END IF;
885 
886     IF l_PRICING_ATTR_rec.attribute11 = FND_API.G_MISS_CHAR THEN
887         l_PRICING_ATTR_rec.attribute11 := p_old_PRICING_ATTR_rec.attribute11;
888     END IF;
889 
890     IF l_PRICING_ATTR_rec.attribute12 = FND_API.G_MISS_CHAR THEN
891         l_PRICING_ATTR_rec.attribute12 := p_old_PRICING_ATTR_rec.attribute12;
892     END IF;
893 
894     IF l_PRICING_ATTR_rec.attribute13 = FND_API.G_MISS_CHAR THEN
895         l_PRICING_ATTR_rec.attribute13 := p_old_PRICING_ATTR_rec.attribute13;
896     END IF;
897 
898     IF l_PRICING_ATTR_rec.attribute14 = FND_API.G_MISS_CHAR THEN
899         l_PRICING_ATTR_rec.attribute14 := p_old_PRICING_ATTR_rec.attribute14;
900     END IF;
901 
902     IF l_PRICING_ATTR_rec.attribute15 = FND_API.G_MISS_CHAR THEN
903         l_PRICING_ATTR_rec.attribute15 := p_old_PRICING_ATTR_rec.attribute15;
904     END IF;
905 
906     IF l_PRICING_ATTR_rec.attribute2 = FND_API.G_MISS_CHAR THEN
907         l_PRICING_ATTR_rec.attribute2 := p_old_PRICING_ATTR_rec.attribute2;
908     END IF;
909 
910     IF l_PRICING_ATTR_rec.attribute3 = FND_API.G_MISS_CHAR THEN
911         l_PRICING_ATTR_rec.attribute3 := p_old_PRICING_ATTR_rec.attribute3;
912     END IF;
913 
914     IF l_PRICING_ATTR_rec.attribute4 = FND_API.G_MISS_CHAR THEN
915         l_PRICING_ATTR_rec.attribute4 := p_old_PRICING_ATTR_rec.attribute4;
916     END IF;
917 
918     IF l_PRICING_ATTR_rec.attribute5 = FND_API.G_MISS_CHAR THEN
919         l_PRICING_ATTR_rec.attribute5 := p_old_PRICING_ATTR_rec.attribute5;
920     END IF;
921 
922     IF l_PRICING_ATTR_rec.attribute6 = FND_API.G_MISS_CHAR THEN
923         l_PRICING_ATTR_rec.attribute6 := p_old_PRICING_ATTR_rec.attribute6;
924     END IF;
925 
926     IF l_PRICING_ATTR_rec.attribute7 = FND_API.G_MISS_CHAR THEN
927         l_PRICING_ATTR_rec.attribute7 := p_old_PRICING_ATTR_rec.attribute7;
928     END IF;
929 
930     IF l_PRICING_ATTR_rec.attribute8 = FND_API.G_MISS_CHAR THEN
931         l_PRICING_ATTR_rec.attribute8 := p_old_PRICING_ATTR_rec.attribute8;
932     END IF;
933 
934     IF l_PRICING_ATTR_rec.attribute9 = FND_API.G_MISS_CHAR THEN
935         l_PRICING_ATTR_rec.attribute9 := p_old_PRICING_ATTR_rec.attribute9;
936     END IF;
937 
938     IF l_PRICING_ATTR_rec.attribute_grouping_no = FND_API.G_MISS_NUM THEN
939         l_PRICING_ATTR_rec.attribute_grouping_no := p_old_PRICING_ATTR_rec.attribute_grouping_no;
940     END IF;
941 
942     IF l_PRICING_ATTR_rec.context = FND_API.G_MISS_CHAR THEN
943         l_PRICING_ATTR_rec.context := p_old_PRICING_ATTR_rec.context;
944     END IF;
945 
946     IF l_PRICING_ATTR_rec.created_by = FND_API.G_MISS_NUM THEN
947         l_PRICING_ATTR_rec.created_by := p_old_PRICING_ATTR_rec.created_by;
948     END IF;
949 
950     IF l_PRICING_ATTR_rec.creation_date = FND_API.G_MISS_DATE THEN
951         l_PRICING_ATTR_rec.creation_date := p_old_PRICING_ATTR_rec.creation_date;
952     END IF;
953 
954     IF l_PRICING_ATTR_rec.excluder_flag = FND_API.G_MISS_CHAR THEN
955         l_PRICING_ATTR_rec.excluder_flag := p_old_PRICING_ATTR_rec.excluder_flag;
956     END IF;
957 
958     IF l_PRICING_ATTR_rec.last_updated_by = FND_API.G_MISS_NUM THEN
959         l_PRICING_ATTR_rec.last_updated_by := p_old_PRICING_ATTR_rec.last_updated_by;
960     END IF;
961 
962     IF l_PRICING_ATTR_rec.last_update_date = FND_API.G_MISS_DATE THEN
963         l_PRICING_ATTR_rec.last_update_date := p_old_PRICING_ATTR_rec.last_update_date;
964     END IF;
965 
966     IF l_PRICING_ATTR_rec.last_update_login = FND_API.G_MISS_NUM THEN
967         l_PRICING_ATTR_rec.last_update_login := p_old_PRICING_ATTR_rec.last_update_login;
968     END IF;
969 
970 /*included by spgopal to include list_header_id in pricing attr for performance problems*/
971     IF l_PRICING_ATTR_rec.list_header_id = FND_API.G_MISS_NUM THEN
972         l_PRICING_ATTR_rec.list_header_id := p_old_PRICING_ATTR_rec.list_header_id;
973     END IF;
974 
975 /*included by spgopal to include pricing_phase_id in pricing attr for performance problems*/
976     IF l_PRICING_ATTR_rec.pricing_phase_id = FND_API.G_MISS_NUM THEN
977         l_PRICING_ATTR_rec.pricing_phase_id := p_old_PRICING_ATTR_rec.pricing_phase_id;
978     END IF;
979 
980     IF l_PRICING_ATTR_rec.list_line_id = FND_API.G_MISS_NUM THEN
981         l_PRICING_ATTR_rec.list_line_id := p_old_PRICING_ATTR_rec.list_line_id;
982     END IF;
983 
984     IF l_PRICING_ATTR_rec.pricing_attribute = FND_API.G_MISS_CHAR THEN
985         l_PRICING_ATTR_rec.pricing_attribute := p_old_PRICING_ATTR_rec.pricing_attribute;
986     END IF;
987 
988     IF l_PRICING_ATTR_rec.pricing_attribute_context = FND_API.G_MISS_CHAR THEN
989         l_PRICING_ATTR_rec.pricing_attribute_context := p_old_PRICING_ATTR_rec.pricing_attribute_context;
990     END IF;
991 
992     IF l_PRICING_ATTR_rec.pricing_attribute_id = FND_API.G_MISS_NUM THEN
993         l_PRICING_ATTR_rec.pricing_attribute_id := p_old_PRICING_ATTR_rec.pricing_attribute_id;
994     END IF;
995 
996     IF l_PRICING_ATTR_rec.pricing_attr_value_from = FND_API.G_MISS_CHAR THEN
997         l_PRICING_ATTR_rec.pricing_attr_value_from := p_old_PRICING_ATTR_rec.pricing_attr_value_from;
998     END IF;
999 
1000     IF l_PRICING_ATTR_rec.pricing_attr_value_to = FND_API.G_MISS_CHAR THEN
1001         l_PRICING_ATTR_rec.pricing_attr_value_to := p_old_PRICING_ATTR_rec.pricing_attr_value_to;
1002     END IF;
1003 
1004     IF l_PRICING_ATTR_rec.product_attribute = FND_API.G_MISS_CHAR THEN
1005         l_PRICING_ATTR_rec.product_attribute := p_old_PRICING_ATTR_rec.product_attribute;
1006     END IF;
1007 
1008     IF l_PRICING_ATTR_rec.product_attribute_context = FND_API.G_MISS_CHAR THEN
1009         l_PRICING_ATTR_rec.product_attribute_context := p_old_PRICING_ATTR_rec.product_attribute_context;
1010     END IF;
1011 
1012     IF l_PRICING_ATTR_rec.product_attr_value = FND_API.G_MISS_CHAR THEN
1013         l_PRICING_ATTR_rec.product_attr_value := p_old_PRICING_ATTR_rec.product_attr_value;
1014     END IF;
1015 
1016     IF l_PRICING_ATTR_rec.product_uom_code = FND_API.G_MISS_CHAR THEN
1017         l_PRICING_ATTR_rec.product_uom_code := p_old_PRICING_ATTR_rec.product_uom_code;
1018     END IF;
1019 
1020     IF l_PRICING_ATTR_rec.program_application_id = FND_API.G_MISS_NUM THEN
1021         l_PRICING_ATTR_rec.program_application_id := p_old_PRICING_ATTR_rec.program_application_id;
1022     END IF;
1023 
1024     IF l_PRICING_ATTR_rec.program_id = FND_API.G_MISS_NUM THEN
1025         l_PRICING_ATTR_rec.program_id := p_old_PRICING_ATTR_rec.program_id;
1026     END IF;
1027 
1028     IF l_PRICING_ATTR_rec.program_update_date = FND_API.G_MISS_DATE THEN
1029         l_PRICING_ATTR_rec.program_update_date := p_old_PRICING_ATTR_rec.program_update_date;
1030     END IF;
1031 
1032     IF l_PRICING_ATTR_rec.request_id = FND_API.G_MISS_NUM THEN
1033         l_PRICING_ATTR_rec.request_id := p_old_PRICING_ATTR_rec.request_id;
1034     END IF;
1035 
1036     IF l_PRICING_ATTR_rec.product_attribute_datatype = FND_API.G_MISS_CHAR THEN
1037         l_PRICING_ATTR_rec.product_attribute_datatype := p_old_PRICING_ATTR_rec.product_attribute_datatype;
1038     END IF;
1039 
1040     IF l_PRICING_ATTR_rec.pricing_attribute_datatype = FND_API.G_MISS_CHAR THEN
1041         l_PRICING_ATTR_rec.pricing_attribute_datatype := p_old_PRICING_ATTR_rec.pricing_attribute_datatype;
1042     END IF;
1043 
1044     IF l_PRICING_ATTR_rec.comparison_operator_code = FND_API.G_MISS_CHAR THEN
1045         l_PRICING_ATTR_rec.comparison_operator_code := p_old_PRICING_ATTR_rec.comparison_operator_code;
1046     END IF;
1047 
1048 oe_debug_pub.add('END Complete_Record in QPXUPRAB');
1049 
1050     RETURN l_PRICING_ATTR_rec;
1051 
1052 END Complete_Record;
1053 
1054 --  Function Convert_Miss_To_Null
1055 
1056 FUNCTION Convert_Miss_To_Null
1057 (   p_PRICING_ATTR_rec              IN  QP_Modifiers_PUB.Pricing_Attr_Rec_Type
1058 ) RETURN QP_Modifiers_PUB.Pricing_Attr_Rec_Type
1059 IS
1060 l_PRICING_ATTR_rec            QP_Modifiers_PUB.Pricing_Attr_Rec_Type := p_PRICING_ATTR_rec;
1061 BEGIN
1062 
1063 oe_debug_pub.add('BEGIN Convert_Miss_To_Null in QPXUPRAB');
1064 
1065     IF l_PRICING_ATTR_rec.accumulate_flag = FND_API.G_MISS_CHAR THEN
1066         l_PRICING_ATTR_rec.accumulate_flag := NULL;
1067     END IF;
1068 
1069     IF l_PRICING_ATTR_rec.attribute1 = FND_API.G_MISS_CHAR THEN
1070         l_PRICING_ATTR_rec.attribute1 := NULL;
1071     END IF;
1072 
1073     IF l_PRICING_ATTR_rec.attribute10 = FND_API.G_MISS_CHAR THEN
1074         l_PRICING_ATTR_rec.attribute10 := NULL;
1075     END IF;
1076 
1077     IF l_PRICING_ATTR_rec.attribute11 = FND_API.G_MISS_CHAR THEN
1078         l_PRICING_ATTR_rec.attribute11 := NULL;
1079     END IF;
1080 
1081     IF l_PRICING_ATTR_rec.attribute12 = FND_API.G_MISS_CHAR THEN
1082         l_PRICING_ATTR_rec.attribute12 := NULL;
1083     END IF;
1084 
1085     IF l_PRICING_ATTR_rec.attribute13 = FND_API.G_MISS_CHAR THEN
1086         l_PRICING_ATTR_rec.attribute13 := NULL;
1087     END IF;
1088 
1089     IF l_PRICING_ATTR_rec.attribute14 = FND_API.G_MISS_CHAR THEN
1090         l_PRICING_ATTR_rec.attribute14 := NULL;
1091     END IF;
1092 
1093     IF l_PRICING_ATTR_rec.attribute15 = FND_API.G_MISS_CHAR THEN
1094         l_PRICING_ATTR_rec.attribute15 := NULL;
1095     END IF;
1096 
1097     IF l_PRICING_ATTR_rec.attribute2 = FND_API.G_MISS_CHAR THEN
1098         l_PRICING_ATTR_rec.attribute2 := NULL;
1099     END IF;
1100 
1101     IF l_PRICING_ATTR_rec.attribute3 = FND_API.G_MISS_CHAR THEN
1102         l_PRICING_ATTR_rec.attribute3 := NULL;
1103     END IF;
1104 
1105     IF l_PRICING_ATTR_rec.attribute4 = FND_API.G_MISS_CHAR THEN
1106         l_PRICING_ATTR_rec.attribute4 := NULL;
1107     END IF;
1108 
1109     IF l_PRICING_ATTR_rec.attribute5 = FND_API.G_MISS_CHAR THEN
1110         l_PRICING_ATTR_rec.attribute5 := NULL;
1111     END IF;
1112 
1113     IF l_PRICING_ATTR_rec.attribute6 = FND_API.G_MISS_CHAR THEN
1114         l_PRICING_ATTR_rec.attribute6 := NULL;
1115     END IF;
1116 
1117     IF l_PRICING_ATTR_rec.attribute7 = FND_API.G_MISS_CHAR THEN
1118         l_PRICING_ATTR_rec.attribute7 := NULL;
1119     END IF;
1120 
1121     IF l_PRICING_ATTR_rec.attribute8 = FND_API.G_MISS_CHAR THEN
1122         l_PRICING_ATTR_rec.attribute8 := NULL;
1123     END IF;
1124 
1125     IF l_PRICING_ATTR_rec.attribute9 = FND_API.G_MISS_CHAR THEN
1126         l_PRICING_ATTR_rec.attribute9 := NULL;
1127     END IF;
1128 
1129     IF l_PRICING_ATTR_rec.attribute_grouping_no = FND_API.G_MISS_NUM THEN
1130         l_PRICING_ATTR_rec.attribute_grouping_no := NULL;
1131     END IF;
1132 
1133     IF l_PRICING_ATTR_rec.context = FND_API.G_MISS_CHAR THEN
1134         l_PRICING_ATTR_rec.context := NULL;
1135     END IF;
1136 
1137     IF l_PRICING_ATTR_rec.created_by = FND_API.G_MISS_NUM THEN
1138         l_PRICING_ATTR_rec.created_by := NULL;
1139     END IF;
1140 
1141     IF l_PRICING_ATTR_rec.creation_date = FND_API.G_MISS_DATE THEN
1142         l_PRICING_ATTR_rec.creation_date := NULL;
1143     END IF;
1144 
1145     IF l_PRICING_ATTR_rec.excluder_flag = FND_API.G_MISS_CHAR THEN
1146         l_PRICING_ATTR_rec.excluder_flag := NULL;
1147     END IF;
1148 
1149     IF l_PRICING_ATTR_rec.last_updated_by = FND_API.G_MISS_NUM THEN
1150         l_PRICING_ATTR_rec.last_updated_by := NULL;
1151     END IF;
1152 
1153     IF l_PRICING_ATTR_rec.last_update_date = FND_API.G_MISS_DATE THEN
1154         l_PRICING_ATTR_rec.last_update_date := NULL;
1155     END IF;
1156 
1157     IF l_PRICING_ATTR_rec.last_update_login = FND_API.G_MISS_NUM THEN
1158         l_PRICING_ATTR_rec.last_update_login := NULL;
1159     END IF;
1160 
1161 /*included by spgopal to include list_header_id in pricing attr for performance problems*/
1162     IF l_PRICING_ATTR_rec.list_header_id = FND_API.G_MISS_NUM THEN
1163         l_PRICING_ATTR_rec.list_header_id := NULL;
1164     END IF;
1165 
1166 /*included by spgopal to include pricing_phase_id in pricing attr for performance problems*/
1167     IF l_PRICING_ATTR_rec.pricing_phase_id = FND_API.G_MISS_NUM THEN
1168         l_PRICING_ATTR_rec.pricing_phase_id := NULL;
1169     END IF;
1170 
1171     IF l_PRICING_ATTR_rec.list_line_id = FND_API.G_MISS_NUM THEN
1172         l_PRICING_ATTR_rec.list_line_id := NULL;
1173     END IF;
1174 
1175     IF l_PRICING_ATTR_rec.pricing_attribute = FND_API.G_MISS_CHAR THEN
1176         l_PRICING_ATTR_rec.pricing_attribute := NULL;
1177     END IF;
1178 
1179     IF l_PRICING_ATTR_rec.pricing_attribute_context = FND_API.G_MISS_CHAR THEN
1180         l_PRICING_ATTR_rec.pricing_attribute_context := NULL;
1181     END IF;
1182 
1183     IF l_PRICING_ATTR_rec.pricing_attribute_id = FND_API.G_MISS_NUM THEN
1184         l_PRICING_ATTR_rec.pricing_attribute_id := NULL;
1185     END IF;
1186 
1187     IF l_PRICING_ATTR_rec.pricing_attr_value_from = FND_API.G_MISS_CHAR THEN
1188         l_PRICING_ATTR_rec.pricing_attr_value_from := NULL;
1189     END IF;
1190 
1191     IF l_PRICING_ATTR_rec.pricing_attr_value_to = FND_API.G_MISS_CHAR THEN
1192         l_PRICING_ATTR_rec.pricing_attr_value_to := NULL;
1193     END IF;
1194 
1195     IF l_PRICING_ATTR_rec.product_attribute = FND_API.G_MISS_CHAR THEN
1196         l_PRICING_ATTR_rec.product_attribute := NULL;
1197     END IF;
1198 
1199     IF l_PRICING_ATTR_rec.product_attribute_context = FND_API.G_MISS_CHAR THEN
1200         l_PRICING_ATTR_rec.product_attribute_context := NULL;
1201     END IF;
1202 
1203     IF l_PRICING_ATTR_rec.product_attr_value = FND_API.G_MISS_CHAR THEN
1204         l_PRICING_ATTR_rec.product_attr_value := NULL;
1205     END IF;
1206 
1207     IF l_PRICING_ATTR_rec.product_uom_code = FND_API.G_MISS_CHAR THEN
1208         l_PRICING_ATTR_rec.product_uom_code := NULL;
1209     END IF;
1210 
1211     IF l_PRICING_ATTR_rec.program_application_id = FND_API.G_MISS_NUM THEN
1212         l_PRICING_ATTR_rec.program_application_id := NULL;
1213     END IF;
1214 
1215     IF l_PRICING_ATTR_rec.program_id = FND_API.G_MISS_NUM THEN
1216         l_PRICING_ATTR_rec.program_id := NULL;
1217     END IF;
1218 
1219     IF l_PRICING_ATTR_rec.program_update_date = FND_API.G_MISS_DATE THEN
1220         l_PRICING_ATTR_rec.program_update_date := NULL;
1221     END IF;
1222 
1223     IF l_PRICING_ATTR_rec.request_id = FND_API.G_MISS_NUM THEN
1224         l_PRICING_ATTR_rec.request_id := NULL;
1225     END IF;
1226 
1227     IF l_PRICING_ATTR_rec.product_attribute_datatype = FND_API.G_MISS_CHAR THEN
1228         l_PRICING_ATTR_rec.product_attribute_datatype := NULL;
1229     END IF;
1230 
1231     IF l_PRICING_ATTR_rec.pricing_attribute_datatype = FND_API.G_MISS_CHAR THEN
1232         l_PRICING_ATTR_rec.pricing_attribute_datatype := NULL;
1233     END IF;
1234 
1235     IF l_PRICING_ATTR_rec.comparison_operator_code = FND_API.G_MISS_CHAR THEN
1236         l_PRICING_ATTR_rec.comparison_operator_code := NULL;
1237     END IF;
1238 
1239 oe_debug_pub.add('END Convert_Miss_To_Null in QPXUPRAB');
1240 
1241     RETURN l_PRICING_ATTR_rec;
1242 
1243 END Convert_Miss_To_Null;
1244 
1245 
1246 ----------------------------------------------------------------------------
1247 --PRIVATE PROCEDURE UPDATE CHILD PRICING ATTR TO UPDATE
1248 --CHILD BREAK LINES' PRICING ATTRIBUTE RECORDS
1249 ----------------------------------------------------------------------------
1250 
1251 
1252 PROCEDURE UPDATE_CHILD_PRICING_ATTR(p_PRICING_ATTR_rec IN QP_MODIFIERS_PUB.Pricing_Attr_rec_type) IS
1253 
1254 l_status  NUMBER;
1255 l_list_line_id NUMBER;
1256 l_list_line_type_code VARCHAR2(30);
1257 l_Pricing_Attr_rec QP_PRICING_ATTRIBUTES%rowtype;
1258 
1259 Cursor C_child_records(l_list_line_id  number) IS
1260 			 SELECT *
1261 			 FROM   QP_PRICING_ATTRIBUTES qll
1262 			 WHERE qll.list_line_id IN (select
1263 			 to_rltd_modifier_id from
1264 			 qp_rltd_modifiers qrm where from_rltd_modifier_id
1265 				 = l_list_line_id);
1266 
1267 BEGIN
1268 
1269 	l_list_line_id := p_Pricing_Attr_rec.list_line_id;
1270 
1271 
1272 	select list_line_type_code into l_list_line_type_code
1273 	from qp_list_lines where
1274 			list_line_id = l_list_line_id;
1275 
1276 	IF l_list_line_type_code = 'PBH' THEN
1277 
1278 	--l_modifier_grp_type := 'PRICE BREAK';
1279 
1280 	--updating all child break pricing_attributes
1281 
1282    		open C_child_records(l_list_line_id); LOOP
1283    		fetch C_child_records into l_Pricing_Attr_rec;
1284 
1285    		EXIT WHEN C_child_records%NOTFOUND;
1286 
1287 
1288 
1289 	  	update qp_Pricing_Attributes set
1290 		 Product_attribute_context =
1291 				p_Pricing_Attr_rec.Product_attribute_context
1292     		,Product_attribute 	   =
1293 				p_Pricing_Attr_rec.Product_attribute
1294     		,Product_attr_value 	   =
1295 				p_Pricing_Attr_rec.Product_attr_value
1296     		,Pricing_Attribute_context =
1297 				p_Pricing_Attr_rec.Pricing_Attribute_context
1298     		,Pricing_Attribute	   =
1299 				p_Pricing_Attr_rec.Pricing_Attribute
1300 		where list_line_id = l_Pricing_Attr_rec.list_line_id;
1301 
1302     		END LOOP;
1303 
1304    		close C_child_records;
1305 /*
1306 	--No need to update pricing attr for OID and PRG as nothing is defaulted
1307 	ELSIF l_list_line_type_code  IN ( 'OID','PRG') THEN
1308 
1309 --		l_modifier_grp_type := '('BENEFIT', 'QUALIFIER')';
1310 
1311 
1312 
1313 	--update OID child records
1314 
1315    		open C_child_records(l_list_line_id); LOOP
1316    		fetch C_child_records into l_Pricing_Attr_rec;
1317 
1318    		EXIT WHEN C_child_records%NOTFOUND;
1319 
1320 			--get or related records
1321 
1322 
1323 	  		update qp_list_lines set
1324 		 		list_line_no 			= p_Pricing_Attr_rec.list_line_no
1325     				,modifier_level_code 	= p_Pricing_Attr_rec.modifier_level_code
1326     				,automatic_flag 		= p_Pricing_Attr_rec.automatic_flag
1327     				,override_flag 		= p_Pricing_Attr_rec.override_flag
1328     				,Print_on_invoice_flag 	= p_Pricing_Attr_rec.Print_on_invoice_flag
1329     				,price_break_type_code 	= p_Pricing_Attr_rec.price_break_type_code
1330     				,Proration_type_code 	= p_Pricing_Attr_rec.Proration_type_code
1331     				,Incompatibility_Grp_code= p_Pricing_Attr_rec.Incompatibility_Grp_code
1332     				,Pricing_group_sequence 	= p_Pricing_Attr_rec.Pricing_group_sequence
1333     				,accrual_flag 			= p_Pricing_Attr_rec.accrual_flag
1334     				,estim_accrual_rate 	= p_Pricing_Attr_rec.estim_accrual_rate
1335     				,rebate_transaction_type_code	= p_Pricing_Attr_rec.rebate_trxn_type_code
1336     				,expiration_date			= p_Pricing_Attr_rec.expiration_date
1337     				,expiration_period_start_date	= p_Pricing_Attr_rec.expiration_period_start_date
1338     				,expiration_period_uom		= p_Pricing_Attr_rec.expiration_period_uom
1339     				,number_expiration_periods	= p_Pricing_Attr_rec.number_expiration_periods
1340 
1341     				where list_line_id = l_Pricing_Attr_rec.list_line_id;
1342 
1343 
1344 
1345 
1346 
1347     		END LOOP;
1348 
1349    		close C_child_records;
1350 */
1351 
1352 	ELSE
1353 
1354 	null;
1355 
1356 	END IF;
1357 
1358 EXCEPTION
1359 
1360     WHEN OTHERS THEN
1361 
1362         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1363         THEN
1364             OE_MSG_PUB.Add_Exc_Msg
1365             (   G_PKG_NAME
1366             ,   'Update_Child_Pricing_Attr'
1367             );
1368         END IF;
1369 
1370         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1371 
1372 
1373 
1374 
1375 
1376 END UPDATE_CHILD_PRICING_ATTR;
1377 
1378 
1379 
1380 
1381 
1382 
1383 
1384 
1385 
1386 
1387 
1388 
1389 
1390 
1391 ----------------------------------------------------------------------------
1392 
1393 
1394 --  Procedure Update_Row
1395 
1396 PROCEDURE Update_Row
1397 (   p_PRICING_ATTR_rec              IN  QP_Modifiers_PUB.Pricing_Attr_Rec_Type
1398 )
1399 IS
1400 
1401 l_list_line_type_code VARCHAR2(30);
1402 l_pric_attr_value_from_number NUMBER := NULL;
1403 l_pric_attr_value_to_number NUMBER := NULL;
1404 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
1405 l_check_active_flag VARCHAR2(1);
1406 l_active_flag VARCHAR2(1);
1407 l_rltd_modifier_grp_type  VARCHAR2(30);
1408 l_pricing_attr_value_to p_Pricing_Attr_rec.pricing_attr_value_to%TYPE;
1409 
1410 BEGIN
1411 
1412 --Fetch modfier group type (Bug 5465263) Start
1413        BEGIN
1414          SELECT RLTD_MODIFIER_GRP_TYPE
1415          INTO   l_rltd_modifier_grp_type
1416          FROM   qp_rltd_modifiers rm
1417          WHERE  rm.TO_RLTD_MODIFIER_ID = p_PRICING_ATTR_rec.list_line_id;
1418        EXCEPTION
1419          WHEN OTHERS THEN
1420           l_rltd_modifier_grp_type := '';
1421        END;
1422 
1423 --If Price Break value to is null and value from is not (the last price break) set
1424         --value to 999..99 (15 digit) to incorporate infinite values
1425         IF(p_Pricing_Attr_rec.pricing_attr_value_to IS NULL
1426         AND p_Pricing_Attr_rec.pricing_attr_value_from IS NOT NULL
1427         AND l_rltd_modifier_grp_type = 'PRICE BREAK'
1428 	AND p_PRICING_ATTR_rec.pricing_attribute_context = 'VOLUME')
1429         THEN
1430            l_pricing_attr_value_to := '999999999999999';
1431         ELSE
1432             l_pricing_attr_value_to := p_Pricing_Attr_rec.pricing_attr_value_to;
1433         END IF;
1434 
1435 --End Bug 5465263
1436 
1437 SELECT lh.ACTIVE_FLAG
1438        INTO   l_active_flag
1439        FROM   QP_LIST_HEADERS_B lh, QP_LIST_LINES ll
1440        WHERE  lh.LIST_HEADER_ID = ll.LIST_HEADER_ID and ll.LIST_LINE_ID = p_PRICING_ATTR_rec.list_line_id and rownum = 1;
1441 
1442 oe_debug_pub.add('BEGIN Update_Row in QPXUPRAB');
1443 
1444     IF p_PRICING_ATTR_rec.pricing_attribute_datatype = 'N'
1445     then
1446 
1447     BEGIN
1448 
1449 	    l_pric_attr_value_from_number :=
1450 	    qp_number.canonical_to_number(p_PRICING_ATTR_rec.pricing_attr_value_from);
1451 
1452 	    l_pric_attr_value_to_number :=
1453 	    qp_number.canonical_to_number(p_PRICING_ATTR_rec.pricing_attr_value_to);
1454 
1455      EXCEPTION
1456 	    WHEN VALUE_ERROR THEN
1457 		  NULL;
1458 	    WHEN OTHERS THEN
1459 		  NULL;
1460      END;
1461 
1462      end if;
1463 
1464 /*changes by spgopal to include list_header_id ,pricing_phase_id in pricing attr for performance problems*/
1465 
1466     UPDATE  QP_PRICING_ATTRIBUTES
1467     SET     ACCUMULATE_FLAG                = p_PRICING_ATTR_rec.accumulate_flag
1468     ,       ATTRIBUTE1                     = p_PRICING_ATTR_rec.attribute1
1469     ,       ATTRIBUTE10                    = p_PRICING_ATTR_rec.attribute10
1470     ,       ATTRIBUTE11                    = p_PRICING_ATTR_rec.attribute11
1471     ,       ATTRIBUTE12                    = p_PRICING_ATTR_rec.attribute12
1472     ,       ATTRIBUTE13                    = p_PRICING_ATTR_rec.attribute13
1473     ,       ATTRIBUTE14                    = p_PRICING_ATTR_rec.attribute14
1474     ,       ATTRIBUTE15                    = p_PRICING_ATTR_rec.attribute15
1475     ,       ATTRIBUTE2                     = p_PRICING_ATTR_rec.attribute2
1476     ,       ATTRIBUTE3                     = p_PRICING_ATTR_rec.attribute3
1477     ,       ATTRIBUTE4                     = p_PRICING_ATTR_rec.attribute4
1478     ,       ATTRIBUTE5                     = p_PRICING_ATTR_rec.attribute5
1479     ,       ATTRIBUTE6                     = p_PRICING_ATTR_rec.attribute6
1480     ,       ATTRIBUTE7                     = p_PRICING_ATTR_rec.attribute7
1481     ,       ATTRIBUTE8                     = p_PRICING_ATTR_rec.attribute8
1482     ,       ATTRIBUTE9                     = p_PRICING_ATTR_rec.attribute9
1483     ,       ATTRIBUTE_GROUPING_NO          = p_PRICING_ATTR_rec.attribute_grouping_no
1484     ,       CONTEXT                        = p_PRICING_ATTR_rec.context
1485     ,       CREATED_BY                     = p_PRICING_ATTR_rec.created_by
1486     ,       CREATION_DATE                  = p_PRICING_ATTR_rec.creation_date
1487     ,       EXCLUDER_FLAG                  = p_PRICING_ATTR_rec.excluder_flag
1488     ,       LAST_UPDATED_BY                = p_PRICING_ATTR_rec.last_updated_by
1489     ,       LAST_UPDATE_DATE               = p_PRICING_ATTR_rec.last_update_date
1490     ,       LAST_UPDATE_LOGIN              = p_PRICING_ATTR_rec.last_update_login
1491     ,       LIST_LINE_ID                   = p_PRICING_ATTR_rec.list_line_id
1492     ,       PRICING_ATTRIBUTE              = p_PRICING_ATTR_rec.pricing_attribute
1493     ,       PRICING_ATTRIBUTE_CONTEXT      = p_PRICING_ATTR_rec.pricing_attribute_context
1494     ,       PRICING_ATTRIBUTE_ID           = p_PRICING_ATTR_rec.pricing_attribute_id
1495     ,       PRICING_ATTR_VALUE_FROM        = p_PRICING_ATTR_rec.pricing_attr_value_from
1496     ,       PRICING_ATTR_VALUE_TO          = l_pricing_attr_value_to
1497     ,       PRODUCT_ATTRIBUTE              = p_PRICING_ATTR_rec.product_attribute
1498     ,       PRODUCT_ATTRIBUTE_CONTEXT      = p_PRICING_ATTR_rec.product_attribute_context
1499     ,       PRODUCT_ATTR_VALUE             = p_PRICING_ATTR_rec.product_attr_value
1500     ,       PRODUCT_UOM_CODE               = p_PRICING_ATTR_rec.product_uom_code
1501     ,       PROGRAM_APPLICATION_ID         = p_PRICING_ATTR_rec.program_application_id
1502     ,       PROGRAM_ID                     = p_PRICING_ATTR_rec.program_id
1503     ,       PROGRAM_UPDATE_DATE            = p_PRICING_ATTR_rec.program_update_date
1504     ,       REQUEST_ID                     = p_PRICING_ATTR_rec.request_id
1505     ,       PRODUCT_ATTRIBUTE_DATATYPE     = p_PRICING_ATTR_rec.product_attribute_datatype
1506     ,       PRICING_ATTRIBUTE_DATATYPE     = p_PRICING_ATTR_rec.pricing_attribute_datatype
1507     ,       COMPARISON_OPERATOR_CODE       = p_PRICING_ATTR_rec.comparison_operator_code
1508     ,       LIST_HEADER_ID       		   = p_PRICING_ATTR_rec.list_header_id
1509     ,       PRICING_PHASE_ID       	   = p_PRICING_ATTR_rec.pricing_phase_id
1510     ,       PRICING_ATTR_VALUE_FROM_NUMBER = l_pric_attr_value_from_number
1511     ,       PRICING_ATTR_VALUE_TO_NUMBER   = l_pric_attr_value_to_number
1512     WHERE   PRICING_ATTRIBUTE_ID = p_PRICING_ATTR_rec.pricing_attribute_id
1513     ;
1514 
1515 l_check_active_flag:=nvl(fnd_profile.value('QP_BUILD_ATTRIBUTES_MAPPING_OPTIONS'),'N');
1516 IF (l_check_active_flag='N') OR (l_check_active_flag='Y' AND l_active_flag='Y') THEN
1517 
1518 IF(p_PRICING_ATTR_rec.pricing_attribute_context IS NOT NULL) AND
1519   (p_PRICING_ATTR_rec.pricing_attribute IS NOT NULL) THEN
1520 
1521      UPDATE qp_pte_segments set used_in_setup='Y'
1522      WHERE  nvl(used_in_setup,'N')='N'
1523      AND    segment_id IN
1524       (SELECT a.segment_id FROM qp_segments_b a,qp_prc_contexts_b b
1525        WHERE  a.segment_mapping_column=p_PRICING_ATTR_rec.pricing_attribute
1526        AND    a.prc_context_id=b.prc_context_id
1527        AND b.prc_context_type = 'PRICING_ATTRIBUTE'
1528        AND    b.prc_context_code=p_PRICING_ATTR_rec.pricing_attribute_context);
1529 
1530 END IF;
1531 
1532 IF(p_PRICING_ATTR_rec.product_attribute_context IS NOT NULL) AND
1533   (p_PRICING_ATTR_rec.product_attribute IS NOT NULL) THEN
1534 
1535      UPDATE qp_pte_segments set used_in_setup='Y'
1536      WHERE  nvl(used_in_setup,'N')='N'
1537      AND    segment_id IN
1538       (SELECT a.segment_id FROM qp_segments_b a,qp_prc_contexts_b b
1539        WHERE  a.segment_mapping_column=p_PRICING_ATTR_rec.product_attribute
1540        AND    a.prc_context_id=b.prc_context_id
1541        AND b.prc_context_type = 'PRODUCT'
1542        AND    b.prc_context_code=p_PRICING_ATTR_rec.product_attribute_context);
1543 
1544 END IF;
1545 END IF;
1546 --to update child break lines' priceing attribute records
1547     update_child_pricing_attr(p_PRICING_ATTR_rec);
1548 
1549     --Fetch list line type code
1550     BEGIN
1551       SELECT list_line_type_code
1552       INTO   l_list_line_type_code
1553       FROM   qp_list_lines
1554       WHERE  list_line_id = p_PRICING_ATTR_rec.list_line_id;
1555     EXCEPTION
1556       WHEN OTHERS THEN
1557        l_list_line_type_code := '';
1558     END;
1559 
1560     --Log delayed request to maintain denormalized pricing attrs columns only
1561     --for formula factor attrs
1562     IF l_list_line_type_code = 'PMR' THEN
1563       qp_delayed_requests_PVT.log_request(
1564 	    p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
1565 	    p_entity_id  => p_PRICING_ATTR_rec.list_line_id,
1566 	    p_requesting_entity_code=> QP_GLOBALS.G_ENTITY_Modifiers,
1567 	    p_requesting_entity_id => p_PRICING_ATTR_rec.list_line_id,
1568 	    p_request_type =>QP_GLOBALS.G_MAINTAIN_FACTOR_LIST_ATTRS,
1569 	    x_return_status => l_return_status);
1570     END IF;
1571 
1572 oe_debug_pub.add('END Update_Row in QPXUPRAB');
1573 
1574 EXCEPTION
1575 
1576     WHEN OTHERS THEN
1577 
1578         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1579         THEN
1580             OE_MSG_PUB.Add_Exc_Msg
1581             (   G_PKG_NAME
1582             ,   'Update_Row'
1583             );
1584         END IF;
1585 
1586         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1587 
1588 END Update_Row;
1589 
1590 --  Procedure Insert_Row
1591 
1592 PROCEDURE Insert_Row
1593 (   p_PRICING_ATTR_rec              IN  QP_Modifiers_PUB.Pricing_Attr_Rec_Type
1594 )
1595 IS
1596 l_context_flag                VARCHAR2(1);
1597 l_attribute_flag              VARCHAR2(1);
1598 l_value_flag                  VARCHAR2(1);
1599 l_datatype                    VARCHAR2(1);
1600 l_precedence                  NUMBER;
1601 l_error_code                  NUMBER := 0;
1602 l_return_status 			VARCHAR2(1);
1603 l_pric_attr_value_from_number NUMBER := NULL;
1604 l_pric_attr_value_to_number NUMBER := NULL;
1605 l_list_line_type_code         VARCHAR2(30);
1606 l_check_active_flag VARCHAR2(1);
1607 l_active_flag VARCHAR2(1);
1608 l_pricing_attr_value_to p_Pricing_Attr_rec.pricing_attr_value_to%TYPE;
1609 --Bug 4706180
1610 l_rltd_modifier_grp_type  VARCHAR2(30);
1611 BEGIN
1612 
1613 
1614 oe_debug_pub.add('SMITHA LIST_HEADER_ID'||p_PRICING_ATTR_rec.list_header_id);
1615 
1616        --Fetch modfier group type (Bug 4706180) Start
1617        BEGIN
1618          SELECT RLTD_MODIFIER_GRP_TYPE
1619          INTO   l_rltd_modifier_grp_type
1620          FROM   qp_rltd_modifiers rm
1621          WHERE  rm.TO_RLTD_MODIFIER_ID = p_PRICING_ATTR_rec.list_line_id;
1622        EXCEPTION
1623          WHEN OTHERS THEN
1624           l_rltd_modifier_grp_type := '';
1625        END;
1626        --End
1627 
1628  IF  p_PRICING_ATTR_rec.list_header_id IS NOT NULL THEN
1629     SELECT ACTIVE_FLAG
1630           INTO   l_active_flag
1631           FROM   QP_LIST_HEADERS_B
1632           WHERE  LIST_HEADER_ID = p_PRICING_ATTR_rec.list_header_id;
1633 
1634   ELSE
1635 
1636     SELECT ACTIVE_FLAG
1637            INTO   l_active_flag
1638            FROM   QP_LIST_HEADERS_B a,QP_LIST_LINES b
1639            WHERE  b.list_line_id=p_PRICING_ATTR_rec.list_line_id
1640            AND    b.LIST_HEADER_ID = a.list_header_id;
1641 END IF;
1642 oe_debug_pub.add('BEGIN Insert_Row in QPXUPRAB');
1643 oe_debug_pub.add(p_PRICING_ATTR_rec.attribute_grouping_no);
1644 oe_debug_pub.add(p_PRICING_ATTR_rec.product_attribute_context);
1645 oe_debug_pub.add(p_PRICING_ATTR_rec.product_attribute);
1646 oe_debug_pub.add(p_PRICING_ATTR_rec.pricing_attribute);
1647 oe_debug_pub.add(p_PRICING_ATTR_rec.excluder_flag);
1648 
1649 	--If Price Break value to is null and value from is not (the last price break) set
1650 	--value to 999..99 (15 digit) to incorporate infinite values
1651         IF(p_Pricing_Attr_rec.pricing_attr_value_to IS NULL
1652         AND p_Pricing_Attr_rec.pricing_attr_value_from IS NOT NULL
1653         -- Bug 4706180
1654         AND l_rltd_modifier_grp_type = 'PRICE BREAK')
1655         THEN
1656             l_pricing_attr_value_to := '999999999999999';
1657         ELSE
1658             l_pricing_attr_value_to := p_Pricing_Attr_rec.pricing_attr_value_to;
1659         END IF;
1660 
1661     IF p_PRICING_ATTR_rec.pricing_attribute_datatype = 'N'
1662     then
1663 
1664     BEGIN
1665 
1666 	    l_pric_attr_value_from_number :=
1667 	    qp_number.canonical_to_number(p_PRICING_ATTR_rec.pricing_attr_value_from);
1668 
1669 	    l_pric_attr_value_to_number :=
1670 	    qp_number.canonical_to_number(p_PRICING_ATTR_rec.pricing_attr_value_to);
1671 
1672      EXCEPTION
1673 	    WHEN VALUE_ERROR THEN
1674 		  NULL;
1675 	    WHEN OTHERS THEN
1676 		  NULL;
1677      END;
1678 
1679      end if;
1680 
1681 /*changs by spgopal to include list_header_id ,pricing_phase_id in pricing attr for performance problems*/
1682 
1683     INSERT  INTO QP_PRICING_ATTRIBUTES
1684     (
1685     --ACCUMULATE_FLAG
1686            ATTRIBUTE1
1687     ,       ATTRIBUTE10
1688     ,       ATTRIBUTE11
1689     ,       ATTRIBUTE12
1690     ,       ATTRIBUTE13
1691     ,       ATTRIBUTE14
1692     ,       ATTRIBUTE15
1693     ,       ATTRIBUTE2
1694     ,       ATTRIBUTE3
1695     ,       ATTRIBUTE4
1696     ,       ATTRIBUTE5
1697     ,       ATTRIBUTE6
1698     ,       ATTRIBUTE7
1699     ,       ATTRIBUTE8
1700     ,       ATTRIBUTE9
1701     ,       ATTRIBUTE_GROUPING_NO
1702     ,       CONTEXT
1703     ,       CREATED_BY
1704     ,       CREATION_DATE
1705     ,       EXCLUDER_FLAG
1706     ,       LAST_UPDATED_BY
1707     ,       LAST_UPDATE_DATE
1708     ,       LAST_UPDATE_LOGIN
1709     ,       LIST_LINE_ID
1710     ,       PRICING_ATTRIBUTE
1711     ,       PRICING_ATTRIBUTE_CONTEXT
1712     ,       PRICING_ATTRIBUTE_ID
1713     ,       PRICING_ATTR_VALUE_FROM
1714     ,       PRICING_ATTR_VALUE_TO
1715     ,       PRODUCT_ATTRIBUTE
1716     ,       PRODUCT_ATTRIBUTE_CONTEXT
1717     ,       PRODUCT_ATTR_VALUE
1718     ,       PRODUCT_UOM_CODE
1719     ,       PROGRAM_APPLICATION_ID
1720     ,       PROGRAM_ID
1721     ,       PROGRAM_UPDATE_DATE
1722     ,       REQUEST_ID
1723     ,       PRODUCT_ATTRIBUTE_DATATYPE
1724     ,       PRICING_ATTRIBUTE_DATATYPE
1725     ,       COMPARISON_OPERATOR_CODE
1726     ,       LIST_HEADER_ID
1727     ,       PRICING_PHASE_ID
1728     ,       PRICING_ATTR_VALUE_FROM_NUMBER
1729     ,       PRICING_ATTR_VALUE_TO_NUMBER
1730     )
1731     VALUES
1732     (
1733     --p_PRICING_ATTR_rec.accumulate_flag
1734            p_PRICING_ATTR_rec.attribute1
1735     ,       p_PRICING_ATTR_rec.attribute10
1736     ,       p_PRICING_ATTR_rec.attribute11
1737     ,       p_PRICING_ATTR_rec.attribute12
1738     ,       p_PRICING_ATTR_rec.attribute13
1739     ,       p_PRICING_ATTR_rec.attribute14
1740     ,       p_PRICING_ATTR_rec.attribute15
1741     ,       p_PRICING_ATTR_rec.attribute2
1742     ,       p_PRICING_ATTR_rec.attribute3
1743     ,       p_PRICING_ATTR_rec.attribute4
1744     ,       p_PRICING_ATTR_rec.attribute5
1745     ,       p_PRICING_ATTR_rec.attribute6
1746     ,       p_PRICING_ATTR_rec.attribute7
1747     ,       p_PRICING_ATTR_rec.attribute8
1748     ,       p_PRICING_ATTR_rec.attribute9
1749     ,       p_PRICING_ATTR_rec.attribute_grouping_no
1750     ,       p_PRICING_ATTR_rec.context
1751     ,       p_PRICING_ATTR_rec.created_by
1752     ,       p_PRICING_ATTR_rec.creation_date
1753     ,       p_PRICING_ATTR_rec.excluder_flag
1754     ,       p_PRICING_ATTR_rec.last_updated_by
1755     ,       p_PRICING_ATTR_rec.last_update_date
1756     ,       p_PRICING_ATTR_rec.last_update_login
1757     ,       p_PRICING_ATTR_rec.list_line_id
1758     ,       p_PRICING_ATTR_rec.pricing_attribute
1759     ,       p_PRICING_ATTR_rec.pricing_attribute_context
1760     ,       p_PRICING_ATTR_rec.pricing_attribute_id
1761     ,       p_PRICING_ATTR_rec.pricing_attr_value_from
1762     ,       l_pricing_attr_value_to
1763     ,       p_PRICING_ATTR_rec.product_attribute
1764     ,       p_PRICING_ATTR_rec.product_attribute_context
1765     ,       p_PRICING_ATTR_rec.product_attr_value
1766     ,       p_PRICING_ATTR_rec.product_uom_code
1767     ,       p_PRICING_ATTR_rec.program_application_id
1768     ,       p_PRICING_ATTR_rec.program_id
1769     ,       p_PRICING_ATTR_rec.program_update_date
1770     ,       p_PRICING_ATTR_rec.request_id
1771     ,       p_PRICING_ATTR_rec.product_attribute_datatype
1772     ,       p_PRICING_ATTR_rec.pricing_attribute_datatype
1773     ,       p_PRICING_ATTR_rec.comparison_operator_code
1774     ,       p_PRICING_ATTR_rec.list_header_id
1775     ,       p_PRICING_ATTR_rec.pricing_phase_id
1776     ,       l_pric_attr_value_from_number
1777     ,       l_pric_attr_value_to_number
1778     );
1779 
1780 l_check_active_flag:=nvl(fnd_profile.value('QP_BUILD_ATTRIBUTES_MAPPING_OPTIONS'),'N');
1781 IF (l_check_active_flag='N') OR (l_check_active_flag='Y' AND l_active_flag='Y') THEN
1782 IF(p_PRICING_ATTR_rec.pricing_attribute_context IS NOT NULL) AND
1783   (p_PRICING_ATTR_rec.pricing_attribute IS NOT NULL) THEN
1784 
1785      UPDATE qp_pte_segments set used_in_setup='Y'
1786      WHERE  nvl(used_in_setup,'N')='N'
1787      AND    segment_id IN
1788       (SELECT a.segment_id FROM qp_segments_b a,qp_prc_contexts_b b
1789        WHERE  a.segment_mapping_column=p_PRICING_ATTR_rec.pricing_attribute
1790        AND    a.prc_context_id=b.prc_context_id
1791        AND b.prc_context_type = 'PRICING_ATTRIBUTE'
1792        AND    b.prc_context_code=p_PRICING_ATTR_rec.pricing_attribute_context);
1793 
1794 END IF;
1795 
1796 
1797 IF(p_PRICING_ATTR_rec.product_attribute_context IS NOT NULL) AND
1798   (p_PRICING_ATTR_rec.product_attribute IS NOT NULL) THEN
1799 
1800      UPDATE qp_pte_segments set used_in_setup='Y'
1801      WHERE  nvl(used_in_setup,'N')='N'
1802      AND    segment_id IN
1803       (SELECT a.segment_id FROM qp_segments_b a,qp_prc_contexts_b b
1804        WHERE  a.segment_mapping_column=p_PRICING_ATTR_rec.product_attribute
1805        AND    a.prc_context_id=b.prc_context_id
1806        AND b.prc_context_type = 'PRODUCT'
1807        AND    b.prc_context_code=p_PRICING_ATTR_rec.product_attribute_context);
1808 
1809 END IF;
1810 END IF;
1811 	qp_delayed_requests_PVT.log_request(
1812 			 p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
1813 			 p_entity_id  => p_PRICING_ATTR_rec.list_line_id,
1814 			 p_requesting_entity_code=> QP_GLOBALS.G_ENTITY_Modifiers,
1815 			 p_requesting_entity_id => p_PRICING_ATTR_rec.list_line_id,
1816 			 p_request_type =>QP_GLOBALS.G_UPDATE_PRICING_ATTR_PHASE,
1817 			 x_return_status => l_return_status);
1818 
1819        --Fetch list line type code (Bug 4706180)
1820        BEGIN
1821          SELECT list_line_type_code
1822          INTO   l_list_line_type_code
1823          FROM   qp_list_lines
1824          WHERE  list_line_id = p_PRICING_ATTR_rec.list_line_id;
1825        EXCEPTION
1826          WHEN OTHERS THEN
1827           l_list_line_type_code := '';
1828        END;
1829 
1830 
1831        --Log delayed request to maintain denormalized pricing attrs columns
1832        --only for formula factor attrs
1833        IF l_list_line_type_code = 'PMR' THEN
1834          qp_delayed_requests_PVT.log_request(
1835 	    p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
1836 	    p_entity_id  => p_PRICING_ATTR_rec.list_line_id,
1837 	    p_requesting_entity_code=> QP_GLOBALS.G_ENTITY_Modifiers,
1838 	    p_requesting_entity_id => p_PRICING_ATTR_rec.list_line_id,
1839 	    p_request_type =>QP_GLOBALS.G_MAINTAIN_FACTOR_LIST_ATTRS,
1840 	    x_return_status => l_return_status);
1841        END IF;
1842 
1843 oe_debug_pub.add('END Insert_Row in QPXUPRAB');
1844 
1845 EXCEPTION
1846 
1847     WHEN OTHERS THEN
1848 
1849         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1850         THEN
1851             OE_MSG_PUB.Add_Exc_Msg
1852             (   G_PKG_NAME
1853             ,   'Insert_Row'
1854             );
1855         END IF;
1856 
1857         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1858 
1859 END Insert_Row;
1860 
1861 --  Procedure Delete_Row
1862 
1863 PROCEDURE Delete_Row
1864 (   p_pricing_attribute_id          IN  NUMBER
1865 )
1866 IS
1867 l_list_line_id  NUMBER;
1868 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
1869 BEGIN
1870 oe_debug_pub.add('BEGIN Delete_Row in QPXUPRAB');
1871 
1872 
1873     DELETE  FROM QP_PRICING_ATTRIBUTES
1874     WHERE   PRICING_ATTRIBUTE_ID = p_pricing_attribute_id
1875     RETURNING  LIST_LINE_ID INTO l_list_line_id
1876     ;
1877 
1878     qp_delayed_requests_PVT.log_request(
1879 	    p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
1880 	    p_entity_id  => l_list_line_id,
1881 	    p_requesting_entity_code=> QP_GLOBALS.G_ENTITY_Modifiers,
1882 	    p_requesting_entity_id => l_list_line_id,
1883 	    p_request_type =>QP_GLOBALS.G_MAINTAIN_FACTOR_LIST_ATTRS,
1884 	    x_return_status => l_return_status);
1885 
1886 oe_debug_pub.add('END Delete_Row in QPXUPRAB');
1887 EXCEPTION
1888 
1889     WHEN OTHERS THEN
1890 
1891         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1892         THEN
1893             OE_MSG_PUB.Add_Exc_Msg
1894             (   G_PKG_NAME
1895             ,   'Delete_Row'
1896             );
1897         END IF;
1898 
1899         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1900 
1901 END Delete_Row;
1902 
1903 --  Function Query_Row
1904 
1905 FUNCTION Query_Row
1906 (   p_pricing_attribute_id          IN  NUMBER
1907 ) RETURN QP_Modifiers_PUB.Pricing_Attr_Rec_Type
1908 IS
1909 BEGIN
1910 
1911     RETURN Query_Rows
1912         (   p_pricing_attribute_id        => p_pricing_attribute_id
1913         )(1);
1914 
1915 END Query_Row;
1916 
1917 --  Function Query_Rows
1918 
1919 --
1920 
1921 FUNCTION Query_Rows
1922 (   p_pricing_attribute_id          IN  NUMBER :=
1923                                         FND_API.G_MISS_NUM
1924 ,   p_list_line_id                  IN  NUMBER :=
1925                                         FND_API.G_MISS_NUM
1926 ) RETURN QP_Modifiers_PUB.Pricing_Attr_Tbl_Type
1927 IS
1928 l_PRICING_ATTR_rec            QP_Modifiers_PUB.Pricing_Attr_Rec_Type;
1929 l_PRICING_ATTR_tbl            QP_Modifiers_PUB.Pricing_Attr_Tbl_Type;
1930 
1931 CURSOR l_PRICING_ATTR_csr IS
1932     SELECT  ACCUMULATE_FLAG
1933     ,       ATTRIBUTE1
1934     ,       ATTRIBUTE10
1935     ,       ATTRIBUTE11
1936     ,       ATTRIBUTE12
1937     ,       ATTRIBUTE13
1938     ,       ATTRIBUTE14
1939     ,       ATTRIBUTE15
1940     ,       ATTRIBUTE2
1941     ,       ATTRIBUTE3
1942     ,       ATTRIBUTE4
1943     ,       ATTRIBUTE5
1944     ,       ATTRIBUTE6
1945     ,       ATTRIBUTE7
1946     ,       ATTRIBUTE8
1947     ,       ATTRIBUTE9
1948     ,       ATTRIBUTE_GROUPING_NO
1949     ,       CONTEXT
1950     ,       CREATED_BY
1951     ,       CREATION_DATE
1952     ,       EXCLUDER_FLAG
1953     ,       LAST_UPDATED_BY
1954     ,       LAST_UPDATE_DATE
1955     ,       LAST_UPDATE_LOGIN
1956     ,       LIST_LINE_ID
1957     ,       PRICING_ATTRIBUTE
1958     ,       PRICING_ATTRIBUTE_CONTEXT
1959     ,       PRICING_ATTRIBUTE_ID
1960     ,       PRICING_ATTR_VALUE_FROM
1961     ,       PRICING_ATTR_VALUE_TO
1962     ,       PRODUCT_ATTRIBUTE
1963     ,       PRODUCT_ATTRIBUTE_CONTEXT
1964     ,       PRODUCT_ATTR_VALUE
1965     ,       PRODUCT_UOM_CODE
1966     ,       PROGRAM_APPLICATION_ID
1967     ,       PROGRAM_ID
1968     ,       PROGRAM_UPDATE_DATE
1969     ,       REQUEST_ID
1970     ,       PRODUCT_ATTRIBUTE_DATATYPE
1971     ,       PRICING_ATTRIBUTE_DATATYPE
1972     ,       COMPARISON_OPERATOR_CODE
1973     ,       LIST_HEADER_ID
1974     ,       PRICING_PHASE_ID
1975     ,       PRICING_ATTR_VALUE_FROM_NUMBER
1976     ,       PRICING_ATTR_VALUE_TO_NUMBER
1977     ,	  QUALIFICATION_IND
1978     FROM    QP_PRICING_ATTRIBUTES
1979     WHERE ( PRICING_ATTRIBUTE_ID = p_pricing_attribute_id
1980     )
1981     OR (    LIST_LINE_ID = p_list_line_id
1982     );
1983 
1984 BEGIN
1985 
1986 oe_debug_pub.add('BEGIN Query_rows in QPXUPRAB');
1987 
1988     IF
1989     (p_pricing_attribute_id IS NOT NULL
1990      AND
1991      p_pricing_attribute_id <> FND_API.G_MISS_NUM)
1992     AND
1993     (p_list_line_id IS NOT NULL
1994      AND
1995      p_list_line_id <> FND_API.G_MISS_NUM)
1996     THEN
1997             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1998             THEN
1999                 OE_MSG_PUB.Add_Exc_Msg
2000                 (   G_PKG_NAME
2001                 ,   'Query Rows'
2002                 ,   'Keys are mutually exclusive: pricing_attribute_id = '|| p_pricing_attribute_id || ', list_line_id = '|| p_list_line_id
2003                 );
2004             END IF;
2005 
2006         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2007 
2008     END IF;
2009 
2010 
2011     --  Loop over fetched records
2012 
2013     FOR l_implicit_rec IN l_PRICING_ATTR_csr LOOP
2014 
2015         l_PRICING_ATTR_rec.accumulate_flag := l_implicit_rec.ACCUMULATE_FLAG;
2016         l_PRICING_ATTR_rec.attribute1  := l_implicit_rec.ATTRIBUTE1;
2017         l_PRICING_ATTR_rec.attribute10 := l_implicit_rec.ATTRIBUTE10;
2018         l_PRICING_ATTR_rec.attribute11 := l_implicit_rec.ATTRIBUTE11;
2019         l_PRICING_ATTR_rec.attribute12 := l_implicit_rec.ATTRIBUTE12;
2020         l_PRICING_ATTR_rec.attribute13 := l_implicit_rec.ATTRIBUTE13;
2021         l_PRICING_ATTR_rec.attribute14 := l_implicit_rec.ATTRIBUTE14;
2022         l_PRICING_ATTR_rec.attribute15 := l_implicit_rec.ATTRIBUTE15;
2023         l_PRICING_ATTR_rec.attribute2  := l_implicit_rec.ATTRIBUTE2;
2024         l_PRICING_ATTR_rec.attribute3  := l_implicit_rec.ATTRIBUTE3;
2025         l_PRICING_ATTR_rec.attribute4  := l_implicit_rec.ATTRIBUTE4;
2026         l_PRICING_ATTR_rec.attribute5  := l_implicit_rec.ATTRIBUTE5;
2027         l_PRICING_ATTR_rec.attribute6  := l_implicit_rec.ATTRIBUTE6;
2028         l_PRICING_ATTR_rec.attribute7  := l_implicit_rec.ATTRIBUTE7;
2029         l_PRICING_ATTR_rec.attribute8  := l_implicit_rec.ATTRIBUTE8;
2030         l_PRICING_ATTR_rec.attribute9  := l_implicit_rec.ATTRIBUTE9;
2031         l_PRICING_ATTR_rec.attribute_grouping_no := l_implicit_rec.ATTRIBUTE_GROUPING_NO;
2032         l_PRICING_ATTR_rec.context     := l_implicit_rec.CONTEXT;
2033         l_PRICING_ATTR_rec.created_by  := l_implicit_rec.CREATED_BY;
2034         l_PRICING_ATTR_rec.creation_date := l_implicit_rec.CREATION_DATE;
2035         l_PRICING_ATTR_rec.excluder_flag := l_implicit_rec.EXCLUDER_FLAG;
2036         l_PRICING_ATTR_rec.last_updated_by := l_implicit_rec.LAST_UPDATED_BY;
2037         l_PRICING_ATTR_rec.last_update_date := l_implicit_rec.LAST_UPDATE_DATE;
2038         l_PRICING_ATTR_rec.last_update_login := l_implicit_rec.LAST_UPDATE_LOGIN;
2039         l_PRICING_ATTR_rec.list_line_id := l_implicit_rec.LIST_LINE_ID;
2040         l_PRICING_ATTR_rec.pricing_attribute := l_implicit_rec.PRICING_ATTRIBUTE;
2041         l_PRICING_ATTR_rec.pricing_attribute_context := l_implicit_rec.PRICING_ATTRIBUTE_CONTEXT;
2042         l_PRICING_ATTR_rec.pricing_attribute_id := l_implicit_rec.PRICING_ATTRIBUTE_ID;
2043         l_PRICING_ATTR_rec.pricing_attr_value_from := l_implicit_rec.PRICING_ATTR_VALUE_FROM;
2044         l_PRICING_ATTR_rec.pricing_attr_value_to := l_implicit_rec.PRICING_ATTR_VALUE_TO;
2045         l_PRICING_ATTR_rec.product_attribute := l_implicit_rec.PRODUCT_ATTRIBUTE;
2046         l_PRICING_ATTR_rec.product_attribute_context := l_implicit_rec.PRODUCT_ATTRIBUTE_CONTEXT;
2047         l_PRICING_ATTR_rec.product_attr_value := l_implicit_rec.PRODUCT_ATTR_VALUE;
2048         l_PRICING_ATTR_rec.product_uom_code := l_implicit_rec.PRODUCT_UOM_CODE;
2049         l_PRICING_ATTR_rec.program_application_id := l_implicit_rec.PROGRAM_APPLICATION_ID;
2050         l_PRICING_ATTR_rec.program_id  := l_implicit_rec.PROGRAM_ID;
2051         l_PRICING_ATTR_rec.program_update_date := l_implicit_rec.PROGRAM_UPDATE_DATE;
2052         l_PRICING_ATTR_rec.request_id  := l_implicit_rec.REQUEST_ID;
2053         l_PRICING_ATTR_rec.product_attribute_datatype := l_implicit_rec.PRODUCT_ATTRIBUTE_DATATYPE;
2054         l_PRICING_ATTR_rec.pricing_attribute_datatype := l_implicit_rec.PRICING_ATTRIBUTE_DATATYPE;
2055         l_PRICING_ATTR_rec.comparison_operator_code := l_implicit_rec.COMPARISON_OPERATOR_CODE;
2056         l_PRICING_ATTR_rec.list_header_id := l_implicit_rec.LIST_HEADER_ID;
2057         l_PRICING_ATTR_rec.pricing_phase_id := l_implicit_rec.PRICING_PHASE_ID;
2058         l_PRICING_ATTR_rec.pricing_attr_value_from_number := l_implicit_rec.PRICING_ATTR_VALUE_FROM_NUMBER;
2059         l_PRICING_ATTR_rec.pricing_attr_value_to_number := l_implicit_rec.PRICING_ATTR_VALUE_TO_NUMBER;
2060         l_PRICING_ATTR_rec.qualification_ind := l_implicit_rec.QUALIFICATION_IND;
2061 
2062         l_PRICING_ATTR_tbl(l_PRICING_ATTR_tbl.COUNT + 1) := l_PRICING_ATTR_rec;
2063 
2064     END LOOP;
2065 
2066 
2067     --  PK sent and no rows found
2068 
2069     IF
2070     (p_pricing_attribute_id IS NOT NULL
2071      AND
2072      p_pricing_attribute_id <> FND_API.G_MISS_NUM)
2073     AND
2074     (l_PRICING_ATTR_tbl.COUNT = 0)
2075     THEN
2076         RAISE NO_DATA_FOUND;
2077     END IF;
2078 
2079 
2080 oe_debug_pub.add('END Query_rows in QPXUPRAB');
2081 
2082     --  Return fetched table
2083 
2084     RETURN l_PRICING_ATTR_tbl;
2085 
2086 EXCEPTION
2087 
2088     WHEN NO_DATA_FOUND THEN
2089     NULL;
2090 
2091     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2092 
2093         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2094 
2095     WHEN OTHERS THEN
2096 
2097         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2098         THEN
2099             OE_MSG_PUB.Add_Exc_Msg
2100             (   G_PKG_NAME
2101             ,   'Query_Rows'
2102             );
2103         END IF;
2104 
2105         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2106 
2107 END Query_Rows;
2108 
2109 --  Procedure       lock_Row
2110 --
2111 
2112 PROCEDURE Lock_Row
2113 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2114 ,   p_PRICING_ATTR_rec              IN  QP_Modifiers_PUB.Pricing_Attr_Rec_Type
2115 ,   x_PRICING_ATTR_rec              OUT NOCOPY /* file.sql.39 change */ QP_Modifiers_PUB.Pricing_Attr_Rec_Type
2116 )
2117 IS
2118 l_PRICING_ATTR_rec            QP_Modifiers_PUB.Pricing_Attr_Rec_Type;
2119 BEGIN
2120 
2121 oe_debug_pub.add('BEGIN Lock_row in QPXUPRAB');
2122 
2123     SELECT
2124     --ACCUMULATE_FLAG
2125            ATTRIBUTE1
2126     ,       ATTRIBUTE10
2127     ,       ATTRIBUTE11
2128     ,       ATTRIBUTE12
2129     ,       ATTRIBUTE13
2130     ,       ATTRIBUTE14
2131     ,       ATTRIBUTE15
2132     ,       ATTRIBUTE2
2133     ,       ATTRIBUTE3
2134     ,       ATTRIBUTE4
2135     ,       ATTRIBUTE5
2136     ,       ATTRIBUTE6
2137     ,       ATTRIBUTE7
2138     ,       ATTRIBUTE8
2139     ,       ATTRIBUTE9
2140     ,       ATTRIBUTE_GROUPING_NO
2141     ,       CONTEXT
2142     ,       CREATED_BY
2143     ,       CREATION_DATE
2144     ,       EXCLUDER_FLAG
2145     ,       LAST_UPDATED_BY
2146     ,       LAST_UPDATE_DATE
2147     ,       LAST_UPDATE_LOGIN
2148     ,       LIST_LINE_ID
2149     ,       PRICING_ATTRIBUTE
2150     ,       PRICING_ATTRIBUTE_CONTEXT
2151     ,       PRICING_ATTRIBUTE_ID
2152     ,       PRICING_ATTR_VALUE_FROM
2153     ,       PRICING_ATTR_VALUE_TO
2154     ,       PRODUCT_ATTRIBUTE
2155     ,       PRODUCT_ATTRIBUTE_CONTEXT
2156     ,       PRODUCT_ATTR_VALUE
2157     ,       PRODUCT_UOM_CODE
2158     ,       PROGRAM_APPLICATION_ID
2159     ,       PROGRAM_ID
2160     ,       PROGRAM_UPDATE_DATE
2161     ,       REQUEST_ID
2162     ,       PRODUCT_ATTRIBUTE_DATATYPE
2163     ,       PRICING_ATTRIBUTE_DATATYPE
2164     ,       COMPARISON_OPERATOR_CODE
2165 --    ,       LIST_HEADER_ID
2166 --    ,       PRICING_PHASE_ID
2167     INTO
2168     --l_PRICING_ATTR_rec.accumulate_flag
2169            l_PRICING_ATTR_rec.attribute1
2170     ,       l_PRICING_ATTR_rec.attribute10
2171     ,       l_PRICING_ATTR_rec.attribute11
2172     ,       l_PRICING_ATTR_rec.attribute12
2173     ,       l_PRICING_ATTR_rec.attribute13
2174     ,       l_PRICING_ATTR_rec.attribute14
2175     ,       l_PRICING_ATTR_rec.attribute15
2176     ,       l_PRICING_ATTR_rec.attribute2
2177     ,       l_PRICING_ATTR_rec.attribute3
2178     ,       l_PRICING_ATTR_rec.attribute4
2179     ,       l_PRICING_ATTR_rec.attribute5
2180     ,       l_PRICING_ATTR_rec.attribute6
2181     ,       l_PRICING_ATTR_rec.attribute7
2182     ,       l_PRICING_ATTR_rec.attribute8
2183     ,       l_PRICING_ATTR_rec.attribute9
2184     ,       l_PRICING_ATTR_rec.attribute_grouping_no
2185     ,       l_PRICING_ATTR_rec.context
2186     ,       l_PRICING_ATTR_rec.created_by
2187     ,       l_PRICING_ATTR_rec.creation_date
2188     ,       l_PRICING_ATTR_rec.excluder_flag
2189     ,       l_PRICING_ATTR_rec.last_updated_by
2190     ,       l_PRICING_ATTR_rec.last_update_date
2191     ,       l_PRICING_ATTR_rec.last_update_login
2192     ,       l_PRICING_ATTR_rec.list_line_id
2193     ,       l_PRICING_ATTR_rec.pricing_attribute
2194     ,       l_PRICING_ATTR_rec.pricing_attribute_context
2195     ,       l_PRICING_ATTR_rec.pricing_attribute_id
2196     ,       l_PRICING_ATTR_rec.pricing_attr_value_from
2197     ,       l_PRICING_ATTR_rec.pricing_attr_value_to
2198     ,       l_PRICING_ATTR_rec.product_attribute
2199     ,       l_PRICING_ATTR_rec.product_attribute_context
2200     ,       l_PRICING_ATTR_rec.product_attr_value
2201     ,       l_PRICING_ATTR_rec.product_uom_code
2202     ,       l_PRICING_ATTR_rec.program_application_id
2203     ,       l_PRICING_ATTR_rec.program_id
2204     ,       l_PRICING_ATTR_rec.program_update_date
2205     ,       l_PRICING_ATTR_rec.request_id
2206     ,       l_PRICING_ATTR_rec.product_attribute_datatype
2207     ,       l_PRICING_ATTR_rec.pricing_attribute_datatype
2208     ,       l_PRICING_ATTR_rec.comparison_operator_code
2209 --    ,       l_PRICING_ATTR_rec.list_header_id
2210 --    ,       l_PRICING_ATTR_rec.pricing_phase_id
2211     FROM    QP_PRICING_ATTRIBUTES
2212     WHERE   PRICING_ATTRIBUTE_ID = p_PRICING_ATTR_rec.pricing_attribute_id
2213         FOR UPDATE NOWAIT;
2214 
2215     --  Row locked. Compare IN attributes to DB attributes.
2216 
2217     IF
2218     --QP_GLOBALS.Equal(p_PRICING_ATTR_rec.accumulate_flag,
2219     --                     l_PRICING_ATTR_rec.accumulate_flag)
2220     --AND
2221     /*
2222     QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute1,
2223                          l_PRICING_ATTR_rec.attribute1)
2224     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute10,
2225                          l_PRICING_ATTR_rec.attribute10)
2226     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute11,
2227                          l_PRICING_ATTR_rec.attribute11)
2228     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute12,
2229                          l_PRICING_ATTR_rec.attribute12)
2230     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute13,
2231                          l_PRICING_ATTR_rec.attribute13)
2232     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute14,
2233                          l_PRICING_ATTR_rec.attribute14)
2234     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute15,
2235                          l_PRICING_ATTR_rec.attribute15)
2236     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute2,
2237                          l_PRICING_ATTR_rec.attribute2)
2238     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute3,
2239                          l_PRICING_ATTR_rec.attribute3)
2240     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute4,
2241                          l_PRICING_ATTR_rec.attribute4)
2242     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute5,
2243                          l_PRICING_ATTR_rec.attribute5)
2244     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute6,
2245                          l_PRICING_ATTR_rec.attribute6)
2246     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute7,
2247                          l_PRICING_ATTR_rec.attribute7)
2248     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute8,
2249                          l_PRICING_ATTR_rec.attribute8)
2250     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute9,
2251                          l_PRICING_ATTR_rec.attribute9)
2252     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute_grouping_no,
2253                          l_PRICING_ATTR_rec.attribute_grouping_no)
2254     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.context,
2255                          l_PRICING_ATTR_rec.context)
2256     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.created_by,
2257                          l_PRICING_ATTR_rec.created_by)
2258 --    AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.creation_date,
2259 --                         l_PRICING_ATTR_rec.creation_date)
2260     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.excluder_flag,
2261                          l_PRICING_ATTR_rec.excluder_flag)
2262     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.last_updated_by,
2263                          l_PRICING_ATTR_rec.last_updated_by)
2264 --    AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.last_update_date,
2265 --                         l_PRICING_ATTR_rec.last_update_date)
2266     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.last_update_login,
2267                          l_PRICING_ATTR_rec.last_update_login)
2268 					*/
2269     --AND
2270     QP_GLOBALS.Equal(p_PRICING_ATTR_rec.list_line_id,
2271                          l_PRICING_ATTR_rec.list_line_id)
2272 					/*
2273     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attribute,
2274                          l_PRICING_ATTR_rec.pricing_attribute)
2275     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attribute_context,
2276                          l_PRICING_ATTR_rec.pricing_attribute_context)
2277 					*/
2278     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attribute_id,
2279                          l_PRICING_ATTR_rec.pricing_attribute_id)
2280 					/*
2281     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attr_value_from,
2282                          l_PRICING_ATTR_rec.pricing_attr_value_from)
2283     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attr_value_to,
2284                          l_PRICING_ATTR_rec.pricing_attr_value_to)
2285     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.product_attribute,
2286                          l_PRICING_ATTR_rec.product_attribute)
2287     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.product_attribute_context,
2288                          l_PRICING_ATTR_rec.product_attribute_context)
2289     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.product_attr_value,
2290                          l_PRICING_ATTR_rec.product_attr_value)
2291     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.product_uom_code,
2292                          l_PRICING_ATTR_rec.product_uom_code)
2293     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.program_application_id,
2294                          l_PRICING_ATTR_rec.program_application_id)
2295     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.program_id,
2296                          l_PRICING_ATTR_rec.program_id)
2297 --    AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.program_update_date,
2298 --                         l_PRICING_ATTR_rec.program_update_date)
2299     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.request_id,
2300                          l_PRICING_ATTR_rec.request_id)
2301 --    AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.product_attribute_datatype,
2302 --                         l_PRICING_ATTR_rec.product_attribute_datatype)
2303 --    AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attribute_datatype,
2304 --                         l_PRICING_ATTR_rec.pricing_attribute_datatype)
2305     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.comparison_operator_code,
2306                          l_PRICING_ATTR_rec.comparison_operator_code)
2307 					*/
2308     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.list_header_id,
2309                          l_PRICING_ATTR_rec.list_header_id)
2310     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_phase_id,
2311                          l_PRICING_ATTR_rec.pricing_phase_id)
2312     THEN
2313 
2314         --  Row has not changed. Set out parameter.
2315 
2316         x_PRICING_ATTR_rec             := l_PRICING_ATTR_rec;
2317 
2318         --  Set return status
2319 
2320         x_return_status                := FND_API.G_RET_STS_SUCCESS;
2321         x_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_SUCCESS;
2322 
2323     ELSE
2324 
2325         --  Row has changed by another user.
2326 
2327         x_return_status                := FND_API.G_RET_STS_ERROR;
2328         x_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_ERROR;
2329 
2330         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
2331         THEN
2332 
2333             FND_MESSAGE.SET_NAME('QP','OE_LOCK_ROW_CHANGED');
2334             OE_MSG_PUB.Add;
2335 
2336         END IF;
2337 
2338     END IF;
2339 
2340 oe_debug_pub.add('END Lock_row in QPXUPRAB');
2341 
2342 EXCEPTION
2343 
2344     WHEN NO_DATA_FOUND THEN
2345 
2346         x_return_status                := FND_API.G_RET_STS_ERROR;
2347         x_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_ERROR;
2348 
2349         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
2350         THEN
2351 
2352             FND_MESSAGE.SET_NAME('QP','OE_LOCK_ROW_DELETED');
2353             OE_MSG_PUB.Add;
2354 
2355         END IF;
2356     WHEN APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION THEN
2357 
2358         x_return_status                := FND_API.G_RET_STS_ERROR;
2359         x_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_ERROR;
2360 
2361         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
2362         THEN
2363 
2364             FND_MESSAGE.SET_NAME('QP','OE_LOCK_ROW_ALREADY_LOCKED');
2365             OE_MSG_PUB.Add;
2366 
2367         END IF;
2368     WHEN OTHERS THEN
2369 
2370         x_return_status                := FND_API.G_RET_STS_UNEXP_ERROR;
2371         x_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2372 
2373         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2374         THEN
2375             OE_MSG_PUB.Add_Exc_Msg
2376             (   G_PKG_NAME
2377             ,   'Lock_Row'
2378             );
2379         END IF;
2380 
2381 END Lock_Row;
2382 
2383 --  Function Get_Values
2384 
2385 FUNCTION Get_Values
2386 (   p_PRICING_ATTR_rec              IN  QP_Modifiers_PUB.Pricing_Attr_Rec_Type
2387 ,   p_old_PRICING_ATTR_rec          IN  QP_Modifiers_PUB.Pricing_Attr_Rec_Type :=
2388                                         QP_Modifiers_PUB.G_MISS_PRICING_ATTR_REC
2389 ) RETURN QP_Modifiers_PUB.Pricing_Attr_Val_Rec_Type
2390 IS
2391 l_PRICING_ATTR_val_rec        QP_Modifiers_PUB.Pricing_Attr_Val_Rec_Type;
2392 BEGIN
2393 
2394 oe_debug_pub.add('BEGIN Get_Values in QPXUPRAB');
2395 
2396     IF p_PRICING_ATTR_rec.accumulate_flag IS NOT NULL AND
2397         p_PRICING_ATTR_rec.accumulate_flag <> FND_API.G_MISS_CHAR AND
2398         NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.accumulate_flag,
2399         p_old_PRICING_ATTR_rec.accumulate_flag)
2400     THEN
2401         l_PRICING_ATTR_val_rec.accumulate := QP_Id_To_Value.Accumulate
2402         (   p_accumulate_flag             => p_PRICING_ATTR_rec.accumulate_flag
2403         );
2404     END IF;
2405 
2406     IF p_PRICING_ATTR_rec.excluder_flag IS NOT NULL AND
2407         p_PRICING_ATTR_rec.excluder_flag <> FND_API.G_MISS_CHAR AND
2408         NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.excluder_flag,
2409         p_old_PRICING_ATTR_rec.excluder_flag)
2410     THEN
2411         l_PRICING_ATTR_val_rec.excluder := QP_Id_To_Value.Excluder
2412         (   p_excluder_flag               => p_PRICING_ATTR_rec.excluder_flag
2413         );
2414     END IF;
2415 
2416 /*changes made by spgopal to include list_header_id and pricing_phase_id in pricing attr for performance problem*/
2417     IF p_PRICING_ATTR_rec.list_header_id IS NOT NULL AND
2418         p_PRICING_ATTR_rec.list_header_id <> FND_API.G_MISS_NUM AND
2419         NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.list_header_id,
2420         p_old_PRICING_ATTR_rec.list_header_id)
2421     THEN
2422     --    l_PRICING_ATTR_val_rec.list_Header := QP_Id_To_Value.List_Header(   p_list_header_id                => p_PRICING_ATTR_rec.list_header_id);
2423 	   null;
2424     END IF;
2425 
2426     IF p_PRICING_ATTR_rec.pricing_phase_id IS NOT NULL AND
2427         p_PRICING_ATTR_rec.pricing_phase_id <> FND_API.G_MISS_NUM AND
2428         NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_phase_id,
2429         p_old_PRICING_ATTR_rec.pricing_phase_id)
2430     THEN
2431 --        l_PRICING_ATTR_val_rec.pricing_phase := QP_Id_To_Value.pricing_phase(   p_pricing_phase_id                => p_PRICING_ATTR_rec.pricing_phase_id);
2432 	   null;
2433     END IF;
2434 
2435     IF p_PRICING_ATTR_rec.list_line_id IS NOT NULL AND
2436         p_PRICING_ATTR_rec.list_line_id <> FND_API.G_MISS_NUM AND
2437         NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.list_line_id,
2438         p_old_PRICING_ATTR_rec.list_line_id)
2439     THEN
2440         l_PRICING_ATTR_val_rec.list_line := QP_Id_To_Value.List_Line
2441         (   p_list_line_id                => p_PRICING_ATTR_rec.list_line_id
2442         );
2443     END IF;
2444 
2445 /*    IF p_PRICING_ATTR_rec.pricing_attribute_id IS NOT NULL AND
2446         p_PRICING_ATTR_rec.pricing_attribute_id <> FND_API.G_MISS_NUM AND
2447         NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attribute_id,
2448         p_old_PRICING_ATTR_rec.pricing_attribute_id)
2449     THEN
2450         l_PRICING_ATTR_val_rec.pricing_attribute := QP_Id_To_Value.Pricing_Attribute
2451         (   p_pricing_attribute_id        => p_PRICING_ATTR_rec.pricing_attribute_id
2452         );
2453     END IF;
2454 */
2455     IF p_PRICING_ATTR_rec.product_uom_code IS NOT NULL AND
2456         p_PRICING_ATTR_rec.product_uom_code <> FND_API.G_MISS_CHAR AND
2457         NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.product_uom_code,
2458         p_old_PRICING_ATTR_rec.product_uom_code)
2459     THEN
2460         l_PRICING_ATTR_val_rec.product_uom := QP_Id_To_Value.Product_Uom
2461         (   p_product_uom_code            => p_PRICING_ATTR_rec.product_uom_code
2462         );
2463     END IF;
2464 
2465 oe_debug_pub.add('END Get_Values in QPXUPRAB');
2466 
2467     RETURN l_PRICING_ATTR_val_rec;
2468 
2469 END Get_Values;
2470 
2471 --  Function Get_Ids
2472 
2473 FUNCTION Get_Ids
2474 (   p_PRICING_ATTR_rec              IN  QP_Modifiers_PUB.Pricing_Attr_Rec_Type
2475 ,   p_PRICING_ATTR_val_rec          IN  QP_Modifiers_PUB.Pricing_Attr_Val_Rec_Type
2476 ) RETURN QP_Modifiers_PUB.Pricing_Attr_Rec_Type
2477 IS
2478 l_PRICING_ATTR_rec            QP_Modifiers_PUB.Pricing_Attr_Rec_Type;
2479 BEGIN
2480 
2481 oe_debug_pub.add('BEGIN Get_Ids in QPXUPRAB');
2482 
2483     --  initialize  return_status.
2484 
2485     l_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_SUCCESS;
2486 
2487     --  initialize l_PRICING_ATTR_rec.
2488 
2489     l_PRICING_ATTR_rec := p_PRICING_ATTR_rec;
2490 
2491     IF  p_PRICING_ATTR_val_rec.accumulate <> FND_API.G_MISS_CHAR
2492     THEN
2493 
2494         IF p_PRICING_ATTR_rec.accumulate_flag <> FND_API.G_MISS_CHAR THEN
2495 
2496             l_PRICING_ATTR_rec.accumulate_flag := p_PRICING_ATTR_rec.accumulate_flag;
2497 
2498             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_SUCCESS)
2499             THEN
2500 
2501                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
2502                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','accumulate');
2503                 OE_MSG_PUB.Add;
2504 
2505             END IF;
2506 
2507         ELSE
2508 
2509             l_PRICING_ATTR_rec.accumulate_flag := QP_Value_To_Id.accumulate
2510             (   p_accumulate                  => p_PRICING_ATTR_val_rec.accumulate
2511             );
2512 
2513             IF l_PRICING_ATTR_rec.accumulate_flag = FND_API.G_MISS_CHAR THEN
2514                 l_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_ERROR;
2515             END IF;
2516 
2517         END IF;
2518 
2519     END IF;
2520 
2521     IF  p_PRICING_ATTR_val_rec.excluder <> FND_API.G_MISS_CHAR
2522     THEN
2523 
2524         IF p_PRICING_ATTR_rec.excluder_flag <> FND_API.G_MISS_CHAR THEN
2525 
2526             l_PRICING_ATTR_rec.excluder_flag := p_PRICING_ATTR_rec.excluder_flag;
2527 
2528             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_SUCCESS)
2529             THEN
2530 
2531                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
2532                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','excluder');
2533                 OE_MSG_PUB.Add;
2534 
2535             END IF;
2536 
2537         ELSE
2538 
2539             l_PRICING_ATTR_rec.excluder_flag := QP_Value_To_Id.excluder
2540             (   p_excluder                    => p_PRICING_ATTR_val_rec.excluder
2541             );
2542 
2543             IF l_PRICING_ATTR_rec.excluder_flag = FND_API.G_MISS_CHAR THEN
2544                 l_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_ERROR;
2545             END IF;
2546 
2547         END IF;
2548 
2549     END IF;
2550 
2551 /*changes made by spgopal included pricing_phase_id and list_header_id to fix performance problem*/
2552     IF  p_PRICING_ATTR_val_rec.list_header <> FND_API.G_MISS_CHAR
2553     THEN
2554 
2555         IF p_PRICING_ATTR_rec.list_header_id <> FND_API.G_MISS_NUM THEN
2556 
2557             l_PRICING_ATTR_rec.list_header_id := p_PRICING_ATTR_rec.list_header_id;
2558 
2559             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_SUCCESS)
2560             THEN
2561 
2562                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
2563                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','list_header');
2564                 OE_MSG_PUB.Add;
2565 
2566             END IF;
2567 
2568         ELSE
2569 
2570             l_PRICING_ATTR_rec.list_header_id := QP_Value_To_Id.list_header(   p_list_header                   => p_PRICING_ATTR_val_rec.list_header);
2571 
2572             IF l_PRICING_ATTR_rec.list_header_id = FND_API.G_MISS_NUM THEN
2573                 l_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_ERROR;
2574             END IF;
2575 
2576         END IF;
2577 
2578     END IF;
2579 
2580     IF  p_PRICING_ATTR_val_rec.pricing_phase <> FND_API.G_MISS_CHAR
2581     THEN
2582 
2583         IF p_PRICING_ATTR_rec.pricing_phase_id <> FND_API.G_MISS_NUM THEN
2584 
2585             l_PRICING_ATTR_rec.pricing_phase_id := p_PRICING_ATTR_rec.pricing_phase_id;
2586 
2587             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_SUCCESS)
2588             THEN
2589 
2590                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
2591                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','pricing_phase');
2592                 OE_MSG_PUB.Add;
2593 
2594             END IF;
2595 
2596         ELSE
2597 
2598 --            l_PRICING_ATTR_rec.pricing_phase_id := QP_Value_To_Id.pricing_phase(   p_list_line                   => p_PRICING_ATTR_val_rec.pricing_phase);
2599 null;
2600 
2601             IF l_PRICING_ATTR_rec.pricing_phase_id = FND_API.G_MISS_NUM THEN
2602                 l_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_ERROR;
2603             END IF;
2604 
2605         END IF;
2606 
2607     END IF;
2608 
2609 -----
2610     IF  p_PRICING_ATTR_val_rec.list_line <> FND_API.G_MISS_CHAR
2611     THEN
2612 
2613         IF p_PRICING_ATTR_rec.list_line_id <> FND_API.G_MISS_NUM THEN
2614 
2615             l_PRICING_ATTR_rec.list_line_id := p_PRICING_ATTR_rec.list_line_id;
2616 
2617             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_SUCCESS)
2618             THEN
2619 
2620                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
2621                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','list_line');
2622                 OE_MSG_PUB.Add;
2623 
2624             END IF;
2625 
2626         ELSE
2627 
2628             l_PRICING_ATTR_rec.list_line_id := QP_Value_To_Id.list_line
2629             (   p_list_line                   => p_PRICING_ATTR_val_rec.list_line
2630             );
2631 
2632             IF l_PRICING_ATTR_rec.list_line_id = FND_API.G_MISS_NUM THEN
2633                 l_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_ERROR;
2634             END IF;
2635 
2636         END IF;
2637 
2638     END IF;
2639 
2640 /****************************************************************************
2641  Added code to perform value_to_id conversion for pricing_Attribute,
2642  pricing_Attr_value_from and pricing_attr_value_to columns.
2643 ****************************************************************************/
2644 
2645     IF  p_PRICING_ATTR_val_rec.pricing_attribute_desc <> FND_API.G_MISS_CHAR
2646     THEN
2647 
2648         IF p_PRICING_ATTR_rec.pricing_attribute <> FND_API.G_MISS_CHAR THEN
2649 
2650             l_PRICING_ATTR_rec.pricing_attribute := p_PRICING_ATTR_rec.pricing_attribute;
2651 
2652             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
2653             THEN
2654 
2655                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
2656                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','pricing_attribute');
2657                 oe_msg_pub.Add;
2658 
2659             END IF;
2660 
2661         ELSE
2662 
2663             l_PRICING_ATTR_rec.pricing_attribute := QP_Value_To_Id.pricing_attribute
2664             (   p_pricing_attribute_desc           => p_PRICING_ATTR_val_rec.pricing_attribute_desc,
2665 			 p_context => l_PRICING_ATTR_rec.pricing_attribute_context
2666             );
2667 
2668             IF l_PRICING_ATTR_rec.pricing_attribute = FND_API.G_MISS_CHAR THEN
2669                 l_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_ERROR;
2670             END IF;
2671 
2672         END IF;
2673 
2674     END IF;
2675 
2676     IF  p_PRICING_ATTR_val_rec.pricing_attr_value_from_desc <> FND_API.G_MISS_CHAR
2677     THEN
2678 
2679         IF p_PRICING_ATTR_rec.pricing_attr_value_from <> FND_API.G_MISS_CHAR THEN
2680 
2681             l_PRICING_ATTR_rec.pricing_attr_value_from := p_PRICING_ATTR_rec.pricing_attr_value_from;
2682 
2683             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
2684             THEN
2685 
2686                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
2687                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','pricing_attr_value_from');
2688                 oe_msg_pub.Add;
2689 
2690             END IF;
2691 
2692         ELSE
2693 
2694             l_PRICING_ATTR_rec.pricing_attr_value_from := QP_Value_To_Id.pricing_attr_value_from
2695             ( p_pricing_attr_value_from_desc => p_PRICING_ATTR_val_rec.pricing_attr_value_from_desc,
2696               p_context => l_PRICING_ATTR_rec.pricing_attribute_context,
2697               p_attribute => l_PRICING_ATTR_rec.pricing_attribute
2698             );
2699 
2700             IF l_PRICING_ATTR_rec.pricing_attr_value_from = FND_API.G_MISS_CHAR THEN
2701                 l_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_ERROR;
2702             END IF;
2703 
2704         END IF;
2705 
2706     END IF;
2707 
2708     IF  p_PRICING_ATTR_val_rec.pricing_attr_value_to_desc <> FND_API.G_MISS_CHAR
2709     THEN
2710 
2711         IF p_PRICING_ATTR_rec.pricing_attr_value_to <> FND_API.G_MISS_CHAR THEN
2712 
2713             l_PRICING_ATTR_rec.pricing_attr_value_to := p_PRICING_ATTR_rec.pricing_attr_value_to;
2714 
2715             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
2716             THEN
2717 
2718                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
2719                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','pricing_attr_value_to');
2720                 oe_msg_pub.Add;
2721 
2722             END IF;
2723 
2724         ELSE
2725 
2726             l_PRICING_ATTR_rec.pricing_attr_value_to := QP_Value_To_Id.pricing_attr_value_to
2727             ( p_pricing_attr_value_to_desc => p_PRICING_ATTR_val_rec.pricing_attr_value_to_desc,
2728               p_context => l_PRICING_ATTR_rec.pricing_attribute_context,
2729               p_attribute => l_PRICING_ATTR_rec.pricing_attribute
2730             );
2731 
2732             IF l_PRICING_ATTR_rec.pricing_attr_value_to = FND_API.G_MISS_CHAR THEN
2733                 l_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_ERROR;
2734             END IF;
2735 
2736         END IF;
2737 
2738     END IF;
2739 
2740     IF  p_PRICING_ATTR_val_rec.product_uom <> FND_API.G_MISS_CHAR
2741     THEN
2742 
2743         IF p_PRICING_ATTR_rec.product_uom_code <> FND_API.G_MISS_CHAR THEN
2744 
2745             l_PRICING_ATTR_rec.product_uom_code := p_PRICING_ATTR_rec.product_uom_code;
2746 
2747             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_SUCCESS)
2748             THEN
2749 
2750                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
2751                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','product_uom');
2752                 OE_MSG_PUB.Add;
2753 
2754             END IF;
2755 
2756         ELSE
2757 
2758             l_PRICING_ATTR_rec.product_uom_code := QP_Value_To_Id.product_uom
2759             (   p_product_uom                 => p_PRICING_ATTR_val_rec.product_uom
2760             );
2761 
2762             IF l_PRICING_ATTR_rec.product_uom_code = FND_API.G_MISS_CHAR THEN
2763                 l_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_ERROR;
2764             END IF;
2765 
2766         END IF;
2767 
2768     END IF;
2769 
2770 oe_debug_pub.add('END Get_Ids in QPXUPRAB');
2771 
2772     RETURN l_PRICING_ATTR_rec;
2773 
2774 END Get_Ids;
2775 
2776 Procedure Pre_Write_Process
2777 (   p_PRICING_ATTR_rec                      IN  QP_Modifiers_PUB.Pricing_Attr_Rec_Type
2778 ,   p_old_PRICING_ATTR_rec                  IN  QP_Modifiers_PUB.Pricing_Attr_Rec_Type :=
2779 						QP_Modifiers_PUB.G_MISS_Pricing_Attr_REC
2780 ,   x_PRICING_ATTR_rec                      OUT NOCOPY /* file.sql.39 change */ QP_Modifiers_PUB.Pricing_Attr_Rec_Type
2781 ) IS
2782 l_PRICING_ATTR_rec              QP_MODIFIERS_PUB.Pricing_Attr_Rec_Type := p_PRICING_ATTR_rec;
2783 l_return_status         varchar2(30);
2784 l_changed_lines			varchar2(1) := null;
2785 l_list_header_id                number;
2786 
2787 BEGIN
2788 
2789   oe_debug_pub.Add('Entering QP_PRICING_ATTR_Util.pre_write_process', 1);
2790   -- mkarya for pattern - get the list_header_id as it is not populated yet in the record
2791   -- added for bug No 3384576 in discussion with mkarya
2792 
2793   IF l_PRICING_ATTR_rec.list_header_id IS NOT NULL THEN
2794   l_list_header_id := l_PRICING_ATTR_rec.list_header_id;
2795    ELSE
2796 
2797   select list_header_id
2798     into l_list_header_id
2799     from qp_list_lines
2800    where list_line_id = l_PRICING_ATTR_rec.list_line_id;
2801 
2802    END IF;
2803 
2804   x_PRICING_ATTR_rec := l_PRICING_ATTR_rec;
2805   x_PRICING_ATTR_rec.list_header_id := l_list_header_id;
2806 
2807   IF   ( p_PRICING_ATTR_rec.operation = OE_GLOBALS.G_OPR_DELETE) THEN
2808 
2809     oe_debug_pub.add('Logging a request to update qualification_ind  ', 1);
2810 
2811 	--hw
2812 	-- delayed request for changed lines
2813 	if QP_PERF_PVT.enabled = 'Y' then
2814 	begin
2815 	select 'Y' into l_changed_lines
2816 		from qp_rltd_modifiers
2817 		where to_rltd_modifier_id = p_PRICING_ATTR_rec.list_line_id
2818 		and rltd_modifier_grp_type in ('BENEFIT', 'QUALIFIER');
2819 	exception
2820 		when no_data_found then
2821 			l_changed_lines := 'N';
2822 		when others then
2823 			l_changed_lines := 'N';
2824 	end;
2825 
2826 	if l_changed_lines = 'Y' then
2827 	 		qp_delayed_requests_pvt.log_request(
2828 	          	p_entity_code => QP_GLOBALS.G_ENTITY_MODIFIER_LIST,
2829 	       	  	p_entity_id => p_PRICING_ATTR_rec.list_line_id,
2830 	          	p_requesting_entity_code => QP_GLOBALS.G_ENTITY_MODIFIERS,
2831                	p_requesting_entity_id => p_PRICING_ATTR_rec.list_line_id,
2832 	          	p_request_type => QP_GLOBALS.G_UPDATE_CHANGED_LINES_DEL,
2833 	       	  	p_param1 => p_PRICING_ATTR_rec.pricing_phase_id,
2834 	       	  	p_param2 => p_PRICING_ATTR_rec.list_header_id,
2835 	       	  	p_param3 => p_PRICING_ATTR_rec.product_attribute,
2836 	       	  	p_param4 => p_PRICING_ATTR_rec.product_attr_value,
2837 	          	x_return_status => l_return_status);
2838 	end if;
2839 	end if;
2840 
2841 
2842          qp_delayed_requests_PVT.log_request(
2843                  p_entity_code => QP_GLOBALS.G_ENTITY_MODIFIERS,
2844    	         	 p_entity_id  => p_PRICING_ATTR_rec.list_line_id,
2845                  p_requesting_entity_code=> QP_GLOBALS.G_ENTITY_MODIFIERS,
2846                  p_requesting_entity_id => p_PRICING_ATTR_rec.list_line_id,
2847                  p_request_type =>QP_GLOBALS.G_UPDATE_LINE_QUAL_IND,
2848                  x_return_status => l_return_status);
2849   END IF;
2850 -- pattern
2851   IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Installed = 'Y' THEN
2852      IF (p_PRICING_ATTR_rec.operation = OE_GLOBALS.G_OPR_CREATE) THEN
2853 	    qp_delayed_requests_pvt.log_request(
2854 		p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
2855 		p_entity_id => l_list_header_id,
2856 		p_request_unique_key1 => p_PRICING_ATTR_rec.list_line_id,
2857 		p_request_unique_key2 => 'I',
2858 		p_requesting_entity_code => QP_GLOBALS.G_ENTITY_ALL,
2859 		p_requesting_entity_id => l_list_header_id,
2860 		p_request_type => QP_GLOBALS.G_MAINTAIN_PRODUCT_PATTERN,
2861 		x_return_status => l_return_status);
2862 
2863      END IF;
2864      IF   ( p_PRICING_ATTR_rec.operation = OE_GLOBALS.G_OPR_UPDATE) THEN
2865 	    qp_delayed_requests_pvt.log_request(
2866 		p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
2867 		p_entity_id => p_PRICING_ATTR_rec.list_header_id,
2868 		p_request_unique_key1 => p_PRICING_ATTR_rec.list_line_id,
2869 		p_request_unique_key2 => 'U',
2870 		p_requesting_entity_code => QP_GLOBALS.G_ENTITY_ALL,
2871 		p_requesting_entity_id => p_PRICING_ATTR_rec.list_header_id,
2872 		p_request_type => QP_GLOBALS.G_MAINTAIN_PRODUCT_PATTERN,
2873 		x_return_status => l_return_status);
2874      END IF;
2875      IF   ( p_PRICING_ATTR_rec.operation = OE_GLOBALS.G_OPR_DELETE) THEN
2876 	    qp_delayed_requests_pvt.log_request(
2877 		p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
2878 		p_entity_id => p_PRICING_ATTR_rec.list_header_id,
2879 		p_request_unique_key1 => p_PRICING_ATTR_rec.list_line_id,
2880 		p_request_unique_key2 => 'D',
2881 		p_requesting_entity_code => QP_GLOBALS.G_ENTITY_ALL,
2882 		p_requesting_entity_id => p_PRICING_ATTR_rec.list_header_id,
2883 		p_request_type => QP_GLOBALS.G_MAINTAIN_PRODUCT_PATTERN,
2884 		x_return_status => l_return_status);
2885      END IF;
2886   END IF; --Java Engine Installed
2887 -- pattern
2888 
2889 EXCEPTION
2890     WHEN FND_API.G_EXC_ERROR THEN
2891         RAISE;
2892     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2893         RAISE;
2894     WHEN OTHERS THEN
2895         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
2896         THEN
2897             oe_msg_pub.Add_Exc_Msg
2898             (   G_PKG_NAME
2899             ,   'Pre_Write_Process'
2900             );
2901         END IF;
2902         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2903 END Pre_Write_Process;
2904 
2905 END QP_Pricing_Attr_Util;