DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_PLL_PRICING_ATTR_UTIL

Source


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