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.5.12000000.2 2007/04/09 08:20:01 rassharm 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 
699     END IF;
700 
701     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.program_application_id,p_old_PRICING_ATTR_rec.program_application_id)
702     THEN
703         NULL;
704     END IF;
705 
706     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.program_id,p_old_PRICING_ATTR_rec.program_id)
707     THEN
708         NULL;
709     END IF;
710 
711     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.program_update_date,p_old_PRICING_ATTR_rec.program_update_date)
712     THEN
713         NULL;
714     END IF;
715 
716     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.request_id,p_old_PRICING_ATTR_rec.request_id)
717     THEN
718         NULL;
719     END IF;
720 
721     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.comparison_operator_code, p_old_PRICING_ATTR_rec.comparison_operator_code)
722     THEN
723 	   NULL;
724     END IF;
725 
726     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attribute_datatype, p_old_PRICING_ATTR_rec.pricing_attribute_datatype)
727     THEN
728 	   NULL;
729     END IF;
730 
731     IF NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.product_attribute_datatype, p_old_PRICING_ATTR_rec.product_attribute_datatype)
732     THEN
733 	   NULL;
734     END IF;
735 
736 END Apply_Attribute_Changes;
737 
738 --  Function Complete_Record
739 
740 FUNCTION Complete_Record
741 (   p_PRICING_ATTR_rec              IN  QP_Price_List_PUB.Pricing_Attr_Rec_Type
742 ,   p_old_PRICING_ATTR_rec          IN  QP_Price_List_PUB.Pricing_Attr_Rec_Type
743 ) RETURN QP_Price_List_PUB.Pricing_Attr_Rec_Type
744 IS
745 l_PRICING_ATTR_rec            QP_Price_List_PUB.Pricing_Attr_Rec_Type := p_PRICING_ATTR_rec;
746 BEGIN
747 
748     IF l_PRICING_ATTR_rec.accumulate_flag = FND_API.G_MISS_CHAR THEN
749         l_PRICING_ATTR_rec.accumulate_flag := p_old_PRICING_ATTR_rec.accumulate_flag;
750     END IF;
751 
752     IF l_PRICING_ATTR_rec.attribute1 = FND_API.G_MISS_CHAR THEN
753         l_PRICING_ATTR_rec.attribute1 := p_old_PRICING_ATTR_rec.attribute1;
754     END IF;
755 
756     IF l_PRICING_ATTR_rec.attribute10 = FND_API.G_MISS_CHAR THEN
757         l_PRICING_ATTR_rec.attribute10 := p_old_PRICING_ATTR_rec.attribute10;
758     END IF;
759 
760     IF l_PRICING_ATTR_rec.attribute11 = FND_API.G_MISS_CHAR THEN
761         l_PRICING_ATTR_rec.attribute11 := p_old_PRICING_ATTR_rec.attribute11;
762     END IF;
763 
764     IF l_PRICING_ATTR_rec.attribute12 = FND_API.G_MISS_CHAR THEN
765         l_PRICING_ATTR_rec.attribute12 := p_old_PRICING_ATTR_rec.attribute12;
766     END IF;
767 
768     IF l_PRICING_ATTR_rec.attribute13 = FND_API.G_MISS_CHAR THEN
769         l_PRICING_ATTR_rec.attribute13 := p_old_PRICING_ATTR_rec.attribute13;
770     END IF;
771 
772     IF l_PRICING_ATTR_rec.attribute14 = FND_API.G_MISS_CHAR THEN
773         l_PRICING_ATTR_rec.attribute14 := p_old_PRICING_ATTR_rec.attribute14;
774     END IF;
775 
776     IF l_PRICING_ATTR_rec.attribute15 = FND_API.G_MISS_CHAR THEN
777         l_PRICING_ATTR_rec.attribute15 := p_old_PRICING_ATTR_rec.attribute15;
778     END IF;
779 
780     IF l_PRICING_ATTR_rec.attribute2 = FND_API.G_MISS_CHAR THEN
781         l_PRICING_ATTR_rec.attribute2 := p_old_PRICING_ATTR_rec.attribute2;
782     END IF;
783 
784     IF l_PRICING_ATTR_rec.attribute3 = FND_API.G_MISS_CHAR THEN
785         l_PRICING_ATTR_rec.attribute3 := p_old_PRICING_ATTR_rec.attribute3;
786     END IF;
787 
788     IF l_PRICING_ATTR_rec.attribute4 = FND_API.G_MISS_CHAR THEN
789         l_PRICING_ATTR_rec.attribute4 := p_old_PRICING_ATTR_rec.attribute4;
790     END IF;
791 
792     IF l_PRICING_ATTR_rec.attribute5 = FND_API.G_MISS_CHAR THEN
793         l_PRICING_ATTR_rec.attribute5 := p_old_PRICING_ATTR_rec.attribute5;
794     END IF;
795 
796     IF l_PRICING_ATTR_rec.attribute6 = FND_API.G_MISS_CHAR THEN
797         l_PRICING_ATTR_rec.attribute6 := p_old_PRICING_ATTR_rec.attribute6;
798     END IF;
799 
800     IF l_PRICING_ATTR_rec.attribute7 = FND_API.G_MISS_CHAR THEN
801         l_PRICING_ATTR_rec.attribute7 := p_old_PRICING_ATTR_rec.attribute7;
802     END IF;
803 
804     IF l_PRICING_ATTR_rec.attribute8 = FND_API.G_MISS_CHAR THEN
805         l_PRICING_ATTR_rec.attribute8 := p_old_PRICING_ATTR_rec.attribute8;
806     END IF;
807 
808     IF l_PRICING_ATTR_rec.attribute9 = FND_API.G_MISS_CHAR THEN
809         l_PRICING_ATTR_rec.attribute9 := p_old_PRICING_ATTR_rec.attribute9;
810     END IF;
811 
812     IF l_PRICING_ATTR_rec.attribute_grouping_no = FND_API.G_MISS_NUM THEN
813         l_PRICING_ATTR_rec.attribute_grouping_no := p_old_PRICING_ATTR_rec.attribute_grouping_no;
814     END IF;
815 
816     IF l_PRICING_ATTR_rec.context = FND_API.G_MISS_CHAR THEN
817         l_PRICING_ATTR_rec.context := p_old_PRICING_ATTR_rec.context;
818     END IF;
819 
820     IF l_PRICING_ATTR_rec.created_by = FND_API.G_MISS_NUM THEN
821         l_PRICING_ATTR_rec.created_by := p_old_PRICING_ATTR_rec.created_by;
822     END IF;
823 
824     IF l_PRICING_ATTR_rec.creation_date = FND_API.G_MISS_DATE THEN
825         l_PRICING_ATTR_rec.creation_date := p_old_PRICING_ATTR_rec.creation_date;
826     END IF;
827 
828     IF l_PRICING_ATTR_rec.excluder_flag = FND_API.G_MISS_CHAR THEN
829         l_PRICING_ATTR_rec.excluder_flag := p_old_PRICING_ATTR_rec.excluder_flag;
830     END IF;
831 
832     IF l_PRICING_ATTR_rec.last_updated_by = FND_API.G_MISS_NUM THEN
833         l_PRICING_ATTR_rec.last_updated_by := p_old_PRICING_ATTR_rec.last_updated_by;
834     END IF;
835 
836     IF l_PRICING_ATTR_rec.last_update_date = FND_API.G_MISS_DATE THEN
837         l_PRICING_ATTR_rec.last_update_date := p_old_PRICING_ATTR_rec.last_update_date;
838     END IF;
839 
840     IF l_PRICING_ATTR_rec.last_update_login = FND_API.G_MISS_NUM THEN
841         l_PRICING_ATTR_rec.last_update_login := p_old_PRICING_ATTR_rec.last_update_login;
842     END IF;
843 
844     IF l_PRICING_ATTR_rec.list_line_id = FND_API.G_MISS_NUM THEN
845         l_PRICING_ATTR_rec.list_line_id := p_old_PRICING_ATTR_rec.list_line_id;
846     END IF;
847 
848     IF l_PRICING_ATTR_rec.list_header_id = FND_API.G_MISS_NUM THEN
849         l_PRICING_ATTR_rec.list_header_id := p_old_PRICING_ATTR_rec.list_header_id;
850     END IF;
851 
852     IF l_PRICING_ATTR_rec.pricing_phase_id = FND_API.G_MISS_NUM THEN
853         l_PRICING_ATTR_rec.pricing_phase_id := p_old_PRICING_ATTR_rec.pricing_phase_id;
854     END IF;
855 
856     IF l_PRICING_ATTR_rec.pricing_attribute = FND_API.G_MISS_CHAR THEN
857         l_PRICING_ATTR_rec.pricing_attribute := p_old_PRICING_ATTR_rec.pricing_attribute;
858     END IF;
859 
860     IF l_PRICING_ATTR_rec.pricing_attribute_context = FND_API.G_MISS_CHAR THEN
861         l_PRICING_ATTR_rec.pricing_attribute_context := p_old_PRICING_ATTR_rec.pricing_attribute_context;
862     END IF;
863 
864     IF l_PRICING_ATTR_rec.pricing_attribute_id = FND_API.G_MISS_NUM THEN
865         l_PRICING_ATTR_rec.pricing_attribute_id := p_old_PRICING_ATTR_rec.pricing_attribute_id;
866     END IF;
867 
868     IF l_PRICING_ATTR_rec.pricing_attr_value_from = FND_API.G_MISS_CHAR THEN
869         l_PRICING_ATTR_rec.pricing_attr_value_from := p_old_PRICING_ATTR_rec.pricing_attr_value_from;
870     END IF;
871 
872     IF l_PRICING_ATTR_rec.pricing_attr_value_to = FND_API.G_MISS_CHAR THEN
873         l_PRICING_ATTR_rec.pricing_attr_value_to := p_old_PRICING_ATTR_rec.pricing_attr_value_to;
874     END IF;
875 
876     IF l_PRICING_ATTR_rec.from_rltd_modifier_id = FND_API.G_MISS_NUM THEN
877         l_PRICING_ATTR_rec.from_rltd_modifier_id := p_old_PRICING_ATTR_rec.from_rltd_modifier_id;
878     END IF;
879 
880     IF l_PRICING_ATTR_rec.product_attribute = FND_API.G_MISS_CHAR THEN
881         l_PRICING_ATTR_rec.product_attribute := p_old_PRICING_ATTR_rec.product_attribute;
882     END IF;
883 
884     IF l_PRICING_ATTR_rec.product_attribute_context = FND_API.G_MISS_CHAR THEN
885         l_PRICING_ATTR_rec.product_attribute_context := p_old_PRICING_ATTR_rec.product_attribute_context;
886     END IF;
887 
888     IF l_PRICING_ATTR_rec.product_attr_value = FND_API.G_MISS_CHAR THEN
889         l_PRICING_ATTR_rec.product_attr_value := p_old_PRICING_ATTR_rec.product_attr_value;
890     END IF;
891 
892     IF l_PRICING_ATTR_rec.product_uom_code = FND_API.G_MISS_CHAR THEN
893         l_PRICING_ATTR_rec.product_uom_code := p_old_PRICING_ATTR_rec.product_uom_code;
894     END IF;
895 
896     IF l_PRICING_ATTR_rec.program_application_id = FND_API.G_MISS_NUM THEN
897         l_PRICING_ATTR_rec.program_application_id := p_old_PRICING_ATTR_rec.program_application_id;
898     END IF;
899 
900     IF l_PRICING_ATTR_rec.program_id = FND_API.G_MISS_NUM THEN
901         l_PRICING_ATTR_rec.program_id := p_old_PRICING_ATTR_rec.program_id;
902     END IF;
903 
904     IF l_PRICING_ATTR_rec.program_update_date = FND_API.G_MISS_DATE THEN
905         l_PRICING_ATTR_rec.program_update_date := p_old_PRICING_ATTR_rec.program_update_date;
906     END IF;
907 
908     IF l_PRICING_ATTR_rec.request_id = FND_API.G_MISS_NUM THEN
909         l_PRICING_ATTR_rec.request_id := p_old_PRICING_ATTR_rec.request_id;
910     END IF;
911 
912     IF l_PRICING_ATTR_rec.comparison_operator_code = FND_API.G_MISS_CHAR THEN
913 	   l_PRICING_ATTR_rec.comparison_operator_code := p_old_PRICING_ATTR_rec.comparison_operator_code;
914     END IF;
915 
916     IF l_PRICING_ATTR_rec.pricing_attribute_datatype = FND_API.G_MISS_CHAR THEN
917 	   l_PRICING_ATTR_rec.pricing_attribute_datatype := p_old_PRICING_ATTR_rec.pricing_attribute_datatype;
918     END IF;
919 
920     IF l_PRICING_ATTR_rec.product_attribute_datatype = FND_API.G_MISS_CHAR THEN
921 	   l_PRICING_ATTR_rec.product_attribute_datatype := p_old_PRICING_ATTR_rec.product_attribute_datatype;
922     END IF;
923 
924     IF l_PRICING_ATTR_rec.qualification_ind = FND_API.G_MISS_NUM THEN
925         l_PRICING_ATTR_rec.qualification_ind := p_old_PRICING_ATTR_rec.qualification_ind;
926     END IF;
927 
928     RETURN l_PRICING_ATTR_rec;
929 
930 END Complete_Record;
931 
932 --  Function Convert_Miss_To_Null
933 
934 FUNCTION Convert_Miss_To_Null
935 (   p_PRICING_ATTR_rec              IN  QP_Price_List_PUB.Pricing_Attr_Rec_Type
936 ) RETURN QP_Price_List_PUB.Pricing_Attr_Rec_Type
937 IS
938 l_PRICING_ATTR_rec            QP_Price_List_PUB.Pricing_Attr_Rec_Type := p_PRICING_ATTR_rec;
939 BEGIN
940 
941     IF l_PRICING_ATTR_rec.from_rltd_modifier_id = FND_API.G_MISS_NUM THEN
942         l_PRICING_ATTR_rec.from_rltd_modifier_id := NULL;
943     END IF;
944 
945     IF l_PRICING_ATTR_rec.accumulate_flag = FND_API.G_MISS_CHAR THEN
946         l_PRICING_ATTR_rec.accumulate_flag := NULL;
947     END IF;
948 
949     IF l_PRICING_ATTR_rec.attribute1 = FND_API.G_MISS_CHAR THEN
950         l_PRICING_ATTR_rec.attribute1 := NULL;
951     END IF;
952 
953     IF l_PRICING_ATTR_rec.attribute10 = FND_API.G_MISS_CHAR THEN
954         l_PRICING_ATTR_rec.attribute10 := NULL;
955     END IF;
956 
957     IF l_PRICING_ATTR_rec.attribute11 = FND_API.G_MISS_CHAR THEN
958         l_PRICING_ATTR_rec.attribute11 := NULL;
959     END IF;
960 
961     IF l_PRICING_ATTR_rec.attribute12 = FND_API.G_MISS_CHAR THEN
962         l_PRICING_ATTR_rec.attribute12 := NULL;
963     END IF;
964 
965     IF l_PRICING_ATTR_rec.attribute13 = FND_API.G_MISS_CHAR THEN
966         l_PRICING_ATTR_rec.attribute13 := NULL;
967     END IF;
968 
969     IF l_PRICING_ATTR_rec.attribute14 = FND_API.G_MISS_CHAR THEN
970         l_PRICING_ATTR_rec.attribute14 := NULL;
971     END IF;
972 
973     IF l_PRICING_ATTR_rec.attribute15 = FND_API.G_MISS_CHAR THEN
974         l_PRICING_ATTR_rec.attribute15 := NULL;
975     END IF;
976 
977     IF l_PRICING_ATTR_rec.attribute2 = FND_API.G_MISS_CHAR THEN
978         l_PRICING_ATTR_rec.attribute2 := NULL;
979     END IF;
980 
981     IF l_PRICING_ATTR_rec.attribute3 = FND_API.G_MISS_CHAR THEN
982         l_PRICING_ATTR_rec.attribute3 := NULL;
983     END IF;
984 
985     IF l_PRICING_ATTR_rec.attribute4 = FND_API.G_MISS_CHAR THEN
986         l_PRICING_ATTR_rec.attribute4 := NULL;
987     END IF;
988 
989     IF l_PRICING_ATTR_rec.attribute5 = FND_API.G_MISS_CHAR THEN
990         l_PRICING_ATTR_rec.attribute5 := NULL;
991     END IF;
992 
993     IF l_PRICING_ATTR_rec.attribute6 = FND_API.G_MISS_CHAR THEN
994         l_PRICING_ATTR_rec.attribute6 := NULL;
995     END IF;
996 
997     IF l_PRICING_ATTR_rec.attribute7 = FND_API.G_MISS_CHAR THEN
998         l_PRICING_ATTR_rec.attribute7 := NULL;
999     END IF;
1000 
1001     IF l_PRICING_ATTR_rec.attribute8 = FND_API.G_MISS_CHAR THEN
1002         l_PRICING_ATTR_rec.attribute8 := NULL;
1003     END IF;
1004 
1005     IF l_PRICING_ATTR_rec.attribute9 = FND_API.G_MISS_CHAR THEN
1006         l_PRICING_ATTR_rec.attribute9 := NULL;
1007     END IF;
1008 
1009     IF l_PRICING_ATTR_rec.attribute_grouping_no = FND_API.G_MISS_NUM THEN
1010         l_PRICING_ATTR_rec.attribute_grouping_no := NULL;
1011     END IF;
1012 
1013     IF l_PRICING_ATTR_rec.context = FND_API.G_MISS_CHAR THEN
1014         l_PRICING_ATTR_rec.context := NULL;
1015     END IF;
1016 
1017     IF l_PRICING_ATTR_rec.created_by = FND_API.G_MISS_NUM THEN
1018         l_PRICING_ATTR_rec.created_by := NULL;
1019     END IF;
1020 
1021     IF l_PRICING_ATTR_rec.creation_date = FND_API.G_MISS_DATE THEN
1022         l_PRICING_ATTR_rec.creation_date := NULL;
1023     END IF;
1024 
1025     IF l_PRICING_ATTR_rec.excluder_flag = FND_API.G_MISS_CHAR THEN
1026         l_PRICING_ATTR_rec.excluder_flag := NULL;
1027     END IF;
1028 
1029     IF l_PRICING_ATTR_rec.last_updated_by = FND_API.G_MISS_NUM THEN
1030         l_PRICING_ATTR_rec.last_updated_by := NULL;
1031     END IF;
1032 
1033     IF l_PRICING_ATTR_rec.last_update_date = FND_API.G_MISS_DATE THEN
1034         l_PRICING_ATTR_rec.last_update_date := NULL;
1035     END IF;
1036 
1037     IF l_PRICING_ATTR_rec.last_update_login = FND_API.G_MISS_NUM THEN
1038         l_PRICING_ATTR_rec.last_update_login := NULL;
1039     END IF;
1040 
1041     IF l_PRICING_ATTR_rec.list_line_id = FND_API.G_MISS_NUM THEN
1042         l_PRICING_ATTR_rec.list_line_id := NULL;
1043     END IF;
1044 
1045     IF l_PRICING_ATTR_rec.list_header_id = FND_API.G_MISS_NUM THEN
1046         l_PRICING_ATTR_rec.list_header_id := NULL;
1047     END IF;
1048 
1049     IF l_PRICING_ATTR_rec.pricing_phase_id = FND_API.G_MISS_NUM THEN
1050         l_PRICING_ATTR_rec.pricing_phase_id := NULL;
1051     END IF;
1052 
1053     IF l_PRICING_ATTR_rec.pricing_attribute = FND_API.G_MISS_CHAR THEN
1054         l_PRICING_ATTR_rec.pricing_attribute := NULL;
1055     END IF;
1056 
1057     IF l_PRICING_ATTR_rec.pricing_attribute_context = FND_API.G_MISS_CHAR THEN
1058         l_PRICING_ATTR_rec.pricing_attribute_context := NULL;
1059     END IF;
1060 
1061     IF l_PRICING_ATTR_rec.pricing_attribute_id = FND_API.G_MISS_NUM THEN
1062         l_PRICING_ATTR_rec.pricing_attribute_id := NULL;
1063     END IF;
1064 
1065     IF l_PRICING_ATTR_rec.pricing_attr_value_from = FND_API.G_MISS_CHAR THEN
1066         l_PRICING_ATTR_rec.pricing_attr_value_from := NULL;
1067     END IF;
1068 
1069     IF l_PRICING_ATTR_rec.pricing_attr_value_to = FND_API.G_MISS_CHAR THEN
1070         l_PRICING_ATTR_rec.pricing_attr_value_to := NULL;
1071     END IF;
1072 
1073     IF l_PRICING_ATTR_rec.product_attribute = FND_API.G_MISS_CHAR THEN
1074         l_PRICING_ATTR_rec.product_attribute := NULL;
1075     END IF;
1076 
1077     IF l_PRICING_ATTR_rec.product_attribute_context = FND_API.G_MISS_CHAR THEN
1078         l_PRICING_ATTR_rec.product_attribute_context := NULL;
1079     END IF;
1080 
1081     IF l_PRICING_ATTR_rec.product_attr_value = FND_API.G_MISS_CHAR THEN
1082         l_PRICING_ATTR_rec.product_attr_value := NULL;
1083     END IF;
1084 
1085     IF l_PRICING_ATTR_rec.product_uom_code = FND_API.G_MISS_CHAR THEN
1086         l_PRICING_ATTR_rec.product_uom_code := NULL;
1087     END IF;
1088 
1089     IF l_PRICING_ATTR_rec.program_application_id = FND_API.G_MISS_NUM THEN
1090         l_PRICING_ATTR_rec.program_application_id := NULL;
1091     END IF;
1092 
1093     IF l_PRICING_ATTR_rec.program_id = FND_API.G_MISS_NUM THEN
1094         l_PRICING_ATTR_rec.program_id := NULL;
1095     END IF;
1096 
1097     IF l_PRICING_ATTR_rec.program_update_date = FND_API.G_MISS_DATE THEN
1098         l_PRICING_ATTR_rec.program_update_date := NULL;
1099     END IF;
1100 
1101     IF l_PRICING_ATTR_rec.request_id = FND_API.G_MISS_NUM THEN
1102         l_PRICING_ATTR_rec.request_id := NULL;
1103     END IF;
1104 
1105     IF l_PRICING_ATTR_rec.comparison_operator_code = FND_API.G_MISS_CHAR THEN
1106 	   l_PRICING_ATTR_rec.comparison_operator_code := NULL;
1107     END IF;
1108 
1109     IF l_PRICING_ATTR_rec.pricing_attribute_datatype = FND_API.G_MISS_CHAR THEN
1110 	   l_PRICING_ATTR_rec.pricing_attribute_datatype := NULL;
1111     END IF;
1112 
1113     IF l_PRICING_ATTR_rec.product_attribute_datatype = FND_API.G_MISS_CHAR THEN
1114 	   l_PRICING_ATTR_rec.product_attribute_datatype := NULL;
1115     END IF;
1116 
1117     IF l_PRICING_ATTR_rec.qualification_ind = FND_API.G_MISS_NUM THEN
1118         l_PRICING_ATTR_rec.qualification_ind := NULL;
1119     END IF;
1120 
1121     RETURN l_PRICING_ATTR_rec;
1122 
1123 END Convert_Miss_To_Null;
1124 
1125 --  Procedure Update_Row
1126 
1127 PROCEDURE Update_Row
1128 (   p_PRICING_ATTR_rec              IN  QP_Price_List_PUB.Pricing_Attr_Rec_Type
1129 )
1130 IS
1131 l_pric_attr_value_from_number NUMBER := NULL;
1132 l_pric_attr_value_to_number NUMBER := NULL;
1133 l_check_active_flag VARCHAR2(1);
1134 l_active_flag VARCHAR2(1);
1135 l_pric_attr_value_from VARCHAR2(240);
1136 
1137 BEGIN
1138 
1139 SELECT ACTIVE_FLAG
1140        INTO   l_active_flag
1141        FROM   QP_LIST_HEADERS_B
1142        WHERE  LIST_HEADER_ID = p_PRICING_ATTR_rec.list_header_id;
1143 
1144 oe_debug_pub.add('BEGIN Update_Row in QPXUPRAB');
1145 
1146     BEGIN
1147       IF p_PRICING_ATTR_rec.pricing_attribute_datatype = 'N' THEN
1148             l_pric_attr_value_from_number :=
1149             qp_number.canonical_to_number(p_PRICING_ATTR_rec.pricing_attr_value_from);
1150 
1151             l_pric_attr_value_to_number :=
1152             qp_number.canonical_to_number(p_PRICING_ATTR_rec.pricing_attr_value_to);
1153 
1154             l_pric_attr_value_from :=
1155             qp_number.number_to_canonical(l_pric_attr_value_from_number);   --4418053
1156     ELSE
1157 
1158             l_pric_attr_value_from := p_PRICING_ATTR_rec.pricing_attr_value_from;  --4418053
1159 
1160     end if;
1161 
1162     EXCEPTION
1163             WHEN VALUE_ERROR THEN
1164                   NULL;
1165             WHEN OTHERS THEN
1166                   NULL;
1167     END;
1168 
1169    IF G_PRODUCT_UOM_CODE IS NULL
1170    THEN G_PRODUCT_UOM_CODE :=p_PRICING_ATTR_rec.product_uom_code;
1171     END IF;
1172 
1173     UPDATE  QP_PRICING_ATTRIBUTES
1174     SET     ACCUMULATE_FLAG                = p_PRICING_ATTR_rec.accumulate_flag
1175     ,       ATTRIBUTE1                     = p_PRICING_ATTR_rec.attribute1
1176     ,       ATTRIBUTE10                    = p_PRICING_ATTR_rec.attribute10
1177     ,       ATTRIBUTE11                    = p_PRICING_ATTR_rec.attribute11
1178     ,       ATTRIBUTE12                    = p_PRICING_ATTR_rec.attribute12
1179     ,       ATTRIBUTE13                    = p_PRICING_ATTR_rec.attribute13
1180     ,       ATTRIBUTE14                    = p_PRICING_ATTR_rec.attribute14
1181     ,       ATTRIBUTE15                    = p_PRICING_ATTR_rec.attribute15
1182     ,       ATTRIBUTE2                     = p_PRICING_ATTR_rec.attribute2
1183     ,       ATTRIBUTE3                     = p_PRICING_ATTR_rec.attribute3
1184     ,       ATTRIBUTE4                     = p_PRICING_ATTR_rec.attribute4
1185     ,       ATTRIBUTE5                     = p_PRICING_ATTR_rec.attribute5
1186     ,       ATTRIBUTE6                     = p_PRICING_ATTR_rec.attribute6
1187     ,       ATTRIBUTE7                     = p_PRICING_ATTR_rec.attribute7
1188     ,       ATTRIBUTE8                     = p_PRICING_ATTR_rec.attribute8
1189     ,       ATTRIBUTE9                     = p_PRICING_ATTR_rec.attribute9
1190     ,       ATTRIBUTE_GROUPING_NO          = p_PRICING_ATTR_rec.attribute_grouping_no
1191     ,       CONTEXT                        = p_PRICING_ATTR_rec.context
1192     ,       CREATED_BY                     = p_PRICING_ATTR_rec.created_by
1193     ,       CREATION_DATE                  = p_PRICING_ATTR_rec.creation_date
1194     ,       EXCLUDER_FLAG                  = p_PRICING_ATTR_rec.excluder_flag
1195     ,       LAST_UPDATED_BY                = p_PRICING_ATTR_rec.last_updated_by
1196     ,       LAST_UPDATE_DATE               = p_PRICING_ATTR_rec.last_update_date
1197     ,       LAST_UPDATE_LOGIN              = p_PRICING_ATTR_rec.last_update_login
1198     ,       LIST_LINE_ID                   = p_PRICING_ATTR_rec.list_line_id
1199     ,       LIST_HEADER_ID                 = p_PRICING_ATTR_rec.list_header_id
1200     ,       PRICING_PHASE_ID               = p_PRICING_ATTR_rec.pricing_phase_id
1201     ,       PRICING_ATTRIBUTE              = p_PRICING_ATTR_rec.pricing_attribute
1202     ,       PRICING_ATTRIBUTE_CONTEXT      = p_PRICING_ATTR_rec.pricing_attribute_context
1203     ,       PRICING_ATTRIBUTE_ID           = p_PRICING_ATTR_rec.pricing_attribute_id
1204     ,       PRICING_ATTR_VALUE_FROM        = l_pric_attr_value_from
1205     ,       PRICING_ATTR_VALUE_TO          = p_PRICING_ATTR_rec.pricing_attr_value_to
1206     ,       PRODUCT_ATTRIBUTE              = p_PRICING_ATTR_rec.product_attribute
1207     ,       PRODUCT_ATTRIBUTE_CONTEXT      = p_PRICING_ATTR_rec.product_attribute_context
1208     ,       PRODUCT_ATTR_VALUE             = p_PRICING_ATTR_rec.product_attr_value
1209     --,       PRODUCT_UOM_CODE               = p_PRICING_ATTR_rec.product_uom_code
1210     ,       PRODUCT_UOM_CODE               = G_PRODUCT_UOM_CODE
1211     ,       PROGRAM_APPLICATION_ID         = p_PRICING_ATTR_rec.program_application_id
1212     ,       PROGRAM_ID                     = p_PRICING_ATTR_rec.program_id
1213     ,       PROGRAM_UPDATE_DATE            = p_PRICING_ATTR_rec.program_update_date
1214     ,       REQUEST_ID                     = p_PRICING_ATTR_rec.request_id
1215     ,       COMPARISON_OPERATOR_CODE       = p_PRICING_ATTR_rec.comparison_operator_code
1216     ,       PRICING_ATTRIBUTE_DATATYPE     = p_PRICING_ATTR_rec.pricing_attribute_datatype
1217     ,       PRODUCT_ATTRIBUTE_DATATYPE     = p_PRICING_ATTR_rec.product_attribute_datatype
1218     ,       PRICING_ATTR_VALUE_FROM_NUMBER = l_pric_attr_value_from_number
1219     ,       PRICING_ATTR_VALUE_TO_NUMBER   = l_pric_attr_value_to_number
1220     ,       QUALIFICATION_IND             = p_PRICING_ATTR_rec.qualification_ind
1221     WHERE   PRICING_ATTRIBUTE_ID = p_PRICING_ATTR_rec.pricing_attribute_id
1222     ;
1223 
1224 l_check_active_flag:=nvl(fnd_profile.value('QP_BUILD_ATTRIBUTES_MAPPING_OPTIONS'),'N');
1225 IF (l_check_active_flag='N') OR (l_check_active_flag='Y' AND l_active_flag='Y') THEN
1226 
1227 IF(p_PRICING_ATTR_rec.pricing_attribute_context IS NOT NULL) AND
1228   (p_PRICING_ATTR_rec.pricing_attribute IS NOT NULL) THEN
1229 
1230      UPDATE qp_pte_segments set used_in_setup='Y'
1231      WHERE  nvl(used_in_setup,'N')='N'
1232      AND    segment_id IN
1233       (SELECT a.segment_id FROM qp_segments_b a,qp_prc_contexts_b b
1234        WHERE  a.segment_mapping_column=p_PRICING_ATTR_rec.pricing_attribute
1235        AND    a.prc_context_id=b.prc_context_id
1236        AND    b.prc_context_type='PRICING_ATTRIBUTE'
1237        AND    b.prc_context_code=p_PRICING_ATTR_rec.pricing_attribute_context);
1238 
1239 END IF;
1240 
1241 IF(p_PRICING_ATTR_rec.product_attribute_context IS NOT NULL) AND
1242   (p_PRICING_ATTR_rec.product_attribute IS NOT NULL) THEN
1243 
1244      UPDATE qp_pte_segments set used_in_setup='Y'
1245      WHERE  nvl(used_in_setup,'N')='N'
1246      AND    segment_id IN
1247       (SELECT a.segment_id FROM qp_segments_b a,qp_prc_contexts_b b
1248        WHERE  a.segment_mapping_column=p_PRICING_ATTR_rec.product_attribute
1249        AND    a.prc_context_id=b.prc_context_id
1250        AND    b.prc_context_type='PRODUCT'
1251        AND    b.prc_context_code=p_PRICING_ATTR_rec.product_attribute_context);
1252 
1253 END IF;
1254 END IF;
1255 
1256 EXCEPTION
1257 
1258     WHEN OTHERS THEN
1259 
1260         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1261         THEN
1262             oe_msg_pub.Add_Exc_Msg
1263             (   G_PKG_NAME
1264             ,   'Update_Row'
1265             );
1266         END IF;
1267 
1268         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1269 
1270 END Update_Row;
1271 
1272 --  Procedure Insert_Row
1273 
1274 PROCEDURE Insert_Row
1275 (   p_PRICING_ATTR_rec              IN  QP_Price_List_PUB.Pricing_Attr_Rec_Type
1276 )
1277 IS
1278 l_check_active_flag VARCHAR2(1);
1279 l_active_flag VARCHAR2(1);
1280 l_return_status         VARCHAR2(1);
1281 l_pric_attr_value_from_number NUMBER := NULL;
1282 l_pric_attr_value_to_number NUMBER := NULL;
1283 l_pric_attr_value_from VARCHAR2(240);
1284 
1285 BEGIN
1286 
1287 oe_debug_pub.add('BEGIN Update_Row in QPXUPRAB');
1288 SELECT ACTIVE_FLAG
1289        INTO   l_active_flag
1290        FROM   QP_LIST_HEADERS_B
1291        WHERE  LIST_HEADER_ID = p_PRICING_ATTR_rec.list_header_id;
1292 
1293 
1294     BEGIN
1295      IF p_PRICING_ATTR_rec.pricing_attribute_datatype = 'N' THEN
1296             l_pric_attr_value_from_number :=
1297             qp_number.canonical_to_number(p_PRICING_ATTR_rec.pricing_attr_value_from);
1298 
1299             l_pric_attr_value_to_number :=
1300             qp_number.canonical_to_number(p_PRICING_ATTR_rec.pricing_attr_value_to);
1301 
1302             l_pric_attr_value_from :=
1303             qp_number.number_to_canonical(l_pric_attr_value_from_number);   --4418053
1304     ELSE
1305 
1306             l_pric_attr_value_from := p_PRICING_ATTR_rec.pricing_attr_value_from;  --4418053
1307     END IF;
1308 
1309     EXCEPTION
1310             WHEN VALUE_ERROR THEN
1311                   NULL;
1312             WHEN OTHERS THEN
1313                   NULL;
1314     END;
1315 
1316 
1317     INSERT  INTO QP_PRICING_ATTRIBUTES
1318     (       ACCUMULATE_FLAG
1319     ,       ATTRIBUTE1
1320     ,       ATTRIBUTE10
1321     ,       ATTRIBUTE11
1322     ,       ATTRIBUTE12
1323     ,       ATTRIBUTE13
1324     ,       ATTRIBUTE14
1325     ,       ATTRIBUTE15
1326     ,       ATTRIBUTE2
1327     ,       ATTRIBUTE3
1328     ,       ATTRIBUTE4
1329     ,       ATTRIBUTE5
1330     ,       ATTRIBUTE6
1331     ,       ATTRIBUTE7
1332     ,       ATTRIBUTE8
1333     ,       ATTRIBUTE9
1334     ,       ATTRIBUTE_GROUPING_NO
1335     ,       CONTEXT
1336     ,       CREATED_BY
1337     ,       CREATION_DATE
1338     ,       EXCLUDER_FLAG
1339     ,       LAST_UPDATED_BY
1340     ,       LAST_UPDATE_DATE
1341     ,       LAST_UPDATE_LOGIN
1342     ,       LIST_LINE_ID
1343     ,       LIST_HEADER_ID
1344     ,       PRICING_PHASE_ID
1345     ,       PRICING_ATTRIBUTE
1346     ,       PRICING_ATTRIBUTE_CONTEXT
1347     ,       PRICING_ATTRIBUTE_ID
1348     ,       PRICING_ATTR_VALUE_FROM
1349     ,       PRICING_ATTR_VALUE_TO
1350     ,       PRODUCT_ATTRIBUTE
1351     ,       PRODUCT_ATTRIBUTE_CONTEXT
1352     ,       PRODUCT_ATTR_VALUE
1353     ,       PRODUCT_UOM_CODE
1354     ,       PROGRAM_APPLICATION_ID
1355     ,       PROGRAM_ID
1356     ,       PROGRAM_UPDATE_DATE
1357     ,       REQUEST_ID
1358     ,       COMPARISON_OPERATOR_CODE
1359     ,       PRICING_ATTRIBUTE_DATATYPE
1360     ,       PRODUCT_ATTRIBUTE_DATATYPE
1361     ,       PRICING_ATTR_VALUE_FROM_NUMBER
1362     ,       PRICING_ATTR_VALUE_TO_NUMBER
1363     ,       QUALIFICATION_IND
1364      --ENH Upgrade BOAPI for orig_sys...ref RAVI
1365      ,ORIG_SYS_PRICING_ATTR_REF
1366      ,ORIG_SYS_LINE_REF
1367      ,ORIG_SYS_HEADER_REF
1368     )
1369     VALUES
1370     (       p_PRICING_ATTR_rec.accumulate_flag
1371     ,       p_PRICING_ATTR_rec.attribute1
1372     ,       p_PRICING_ATTR_rec.attribute10
1373     ,       p_PRICING_ATTR_rec.attribute11
1374     ,       p_PRICING_ATTR_rec.attribute12
1375     ,       p_PRICING_ATTR_rec.attribute13
1376     ,       p_PRICING_ATTR_rec.attribute14
1377     ,       p_PRICING_ATTR_rec.attribute15
1378     ,       p_PRICING_ATTR_rec.attribute2
1379     ,       p_PRICING_ATTR_rec.attribute3
1380     ,       p_PRICING_ATTR_rec.attribute4
1381     ,       p_PRICING_ATTR_rec.attribute5
1382     ,       p_PRICING_ATTR_rec.attribute6
1383     ,       p_PRICING_ATTR_rec.attribute7
1384     ,       p_PRICING_ATTR_rec.attribute8
1385     ,       p_PRICING_ATTR_rec.attribute9
1386     ,       p_PRICING_ATTR_rec.attribute_grouping_no
1387     ,       p_PRICING_ATTR_rec.context
1388     ,       p_PRICING_ATTR_rec.created_by
1389     ,       p_PRICING_ATTR_rec.creation_date
1390     ,       p_PRICING_ATTR_rec.excluder_flag
1391     ,       p_PRICING_ATTR_rec.last_updated_by
1392     ,       p_PRICING_ATTR_rec.last_update_date
1393     ,       p_PRICING_ATTR_rec.last_update_login
1394     ,       p_PRICING_ATTR_rec.list_line_id
1395     ,       p_PRICING_ATTR_rec.list_header_id
1396     ,       p_PRICING_ATTR_rec.pricing_phase_id
1397     ,       p_PRICING_ATTR_rec.pricing_attribute
1398     ,       p_PRICING_ATTR_rec.pricing_attribute_context
1399     ,       p_PRICING_ATTR_rec.pricing_attribute_id
1400     ,       l_pric_attr_value_from
1401     ,       p_PRICING_ATTR_rec.pricing_attr_value_to
1402     ,       p_PRICING_ATTR_rec.product_attribute
1403     ,       p_PRICING_ATTR_rec.product_attribute_context
1404     ,       p_PRICING_ATTR_rec.product_attr_value
1405     ,       p_PRICING_ATTR_rec.product_uom_code
1406     ,       p_PRICING_ATTR_rec.program_application_id
1407     ,       p_PRICING_ATTR_rec.program_id
1408     ,       p_PRICING_ATTR_rec.program_update_date
1409     ,       p_PRICING_ATTR_rec.request_id
1410     ,       p_PRICING_ATTR_rec.comparison_operator_code
1411     ,       p_PRICING_ATTR_rec.pricing_attribute_datatype
1412     ,       p_PRICING_ATTR_rec.product_attribute_datatype
1413     ,       l_pric_attr_value_from_number
1414     ,       l_pric_attr_value_to_number
1415     ,       p_PRICING_ATTR_rec.qualification_ind --euro bug 2138996
1416      --ENH Upgrade BOAPI for orig_sys...ref RAVI
1417      ,to_char(p_PRICING_ATTR_rec.pricing_attribute_id)
1418      ,(select l.ORIG_SYS_LINE_REF from qp_list_lines l where l.list_line_id=p_PRICING_ATTR_rec.list_line_id)
1419      ,(select h.ORIG_SYSTEM_HEADER_REF from qp_list_headers_b h where h.list_header_id=p_PRICING_ATTR_rec.list_header_id)
1420     );
1421 
1422 l_check_active_flag:=nvl(fnd_profile.value('QP_BUILD_ATTRIBUTES_MAPPING_OPTIONS'),'N');
1423 IF (l_check_active_flag='N') OR (l_check_active_flag='Y' AND l_active_flag='Y') THEN
1424 IF(p_PRICING_ATTR_rec.pricing_attribute_context IS NOT NULL) AND
1425   (p_PRICING_ATTR_rec.pricing_attribute IS NOT NULL) THEN
1426 
1427      UPDATE qp_pte_segments set used_in_setup='Y'
1428      WHERE  nvl(used_in_setup,'N')='N'
1429      AND    segment_id IN
1430       (SELECT a.segment_id FROM qp_segments_b a,qp_prc_contexts_b b
1431        WHERE  a.segment_mapping_column=p_PRICING_ATTR_rec.pricing_attribute
1432        AND    a.prc_context_id=b.prc_context_id
1433        AND    b.prc_context_type='PRICING_ATTRIBUTE'
1434        AND    b.prc_context_code=p_PRICING_ATTR_rec.pricing_attribute_context);
1435 
1436 END IF;
1437 
1438 
1439 IF(p_PRICING_ATTR_rec.product_attribute_context IS NOT NULL) AND
1440   (p_PRICING_ATTR_rec.product_attribute IS NOT NULL) THEN
1441 
1442      UPDATE qp_pte_segments set used_in_setup='Y'
1443      WHERE  nvl(used_in_setup,'N')='N'
1444      AND    segment_id IN
1445       (SELECT a.segment_id FROM qp_segments_b a,qp_prc_contexts_b b
1446        WHERE  a.segment_mapping_column=p_PRICING_ATTR_rec.product_attribute
1447        AND    a.prc_context_id=b.prc_context_id
1448        AND    b.prc_context_type='PRODUCT'
1449        AND    b.prc_context_code=p_PRICING_ATTR_rec.product_attribute_context);
1450 
1451 END IF;
1452 END IF;
1453 
1454 qp_delayed_requests_PVT.log_request(
1455 			p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
1456 			p_entity_id => p_PRICING_ATTR_rec.list_line_id,
1457 			p_requesting_entity_code => QP_GLOBALS.G_ENTITY_PRICE_LIST_LINE,
1458 			p_requesting_entity_id => p_PRICING_ATTR_rec.list_line_id,
1459                p_request_type => QP_GLOBALS.G_UPDATE_PRICING_ATTR_PHASE,
1460 			x_return_status => l_return_status);
1461 
1462 EXCEPTION
1463 
1464     WHEN OTHERS THEN
1465 
1466         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1467         THEN
1468             oe_msg_pub.Add_Exc_Msg
1469             (   G_PKG_NAME
1470             ,   'Insert_Row'
1471             );
1472         END IF;
1473 
1474         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1475 
1476 END Insert_Row;
1477 
1478 --  Procedure Delete_Row
1479 
1480 PROCEDURE Delete_Row
1481 (   p_pricing_attribute_id          IN  NUMBER
1482 )
1483 IS
1484 BEGIN
1485 
1486 
1487 
1488     DELETE  FROM QP_PRICING_ATTRIBUTES
1489     WHERE   PRICING_ATTRIBUTE_ID = p_pricing_attribute_id
1490     ;
1491 
1492 
1493 EXCEPTION
1494 
1495     WHEN OTHERS THEN
1496 
1497         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1498         THEN
1499             oe_msg_pub.Add_Exc_Msg
1500             (   G_PKG_NAME
1501             ,   'Delete_Row'
1502             );
1503         END IF;
1504 
1505         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1506 
1507 END Delete_Row;
1508 
1509 --  Function Query_Row
1510 
1511 FUNCTION Query_Row
1512 (   p_pricing_attribute_id          IN  NUMBER
1513 ) RETURN QP_Price_List_PUB.Pricing_Attr_Rec_Type
1514 IS
1515 BEGIN
1516 
1517     RETURN Query_Rows
1518         (   p_pricing_attribute_id        => p_pricing_attribute_id
1519         )(1);
1520 
1521 END Query_Row;
1522 
1523 --  Function Query_Rows
1524 
1525 --
1526 
1527 FUNCTION Query_Rows
1528 (   p_pricing_attribute_id          IN  NUMBER :=
1529                                         FND_API.G_MISS_NUM
1530 ,   p_list_line_id                  IN  NUMBER :=
1531                                         FND_API.G_MISS_NUM
1532 ) RETURN QP_Price_List_PUB.Pricing_Attr_Tbl_Type
1533 IS
1534 l_PRICING_ATTR_rec            QP_Price_List_PUB.Pricing_Attr_Rec_Type;
1535 l_PRICING_ATTR_tbl            QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1536 
1537 CURSOR l_PRICING_ATTR_csr IS
1538     SELECT  ACCUMULATE_FLAG
1539     ,       ATTRIBUTE1
1540     ,       ATTRIBUTE10
1541     ,       ATTRIBUTE11
1542     ,       ATTRIBUTE12
1543     ,       ATTRIBUTE13
1544     ,       ATTRIBUTE14
1545     ,       ATTRIBUTE15
1546     ,       ATTRIBUTE2
1547     ,       ATTRIBUTE3
1548     ,       ATTRIBUTE4
1549     ,       ATTRIBUTE5
1550     ,       ATTRIBUTE6
1551     ,       ATTRIBUTE7
1552     ,       ATTRIBUTE8
1553     ,       ATTRIBUTE9
1554     ,       ATTRIBUTE_GROUPING_NO
1555     ,       CONTEXT
1556     ,       CREATED_BY
1557     ,       CREATION_DATE
1558     ,       EXCLUDER_FLAG
1559     ,       LAST_UPDATED_BY
1560     ,       LAST_UPDATE_DATE
1561     ,       LAST_UPDATE_LOGIN
1562     ,       LIST_LINE_ID
1563     ,       LIST_HEADER_ID
1564     ,       PRICING_PHASE_ID
1565     ,       PRICING_ATTRIBUTE
1566     ,       PRICING_ATTRIBUTE_CONTEXT
1567     ,       PRICING_ATTRIBUTE_ID
1568     ,       PRICING_ATTR_VALUE_FROM
1569     ,       PRICING_ATTR_VALUE_TO
1570     ,       PRODUCT_ATTRIBUTE
1571     ,       PRODUCT_ATTRIBUTE_CONTEXT
1572     ,       PRODUCT_ATTR_VALUE
1573     ,       PRODUCT_UOM_CODE
1574     ,       PROGRAM_APPLICATION_ID
1575     ,       PROGRAM_ID
1576     ,       PROGRAM_UPDATE_DATE
1577     ,       REQUEST_ID
1578     ,       COMPARISON_OPERATOR_CODE
1579     ,       PRICING_ATTRIBUTE_DATATYPE
1580     ,       PRODUCT_ATTRIBUTE_DATATYPE
1581     ,       PRICING_ATTR_VALUE_FROM_NUMBER
1582     ,       PRICING_ATTR_VALUE_TO_NUMBER
1583     ,       QUALIFICATION_IND
1584     FROM    QP_PRICING_ATTRIBUTES
1585     WHERE ( PRICING_ATTRIBUTE_ID = p_pricing_attribute_id
1586     )
1587     OR (    LIST_LINE_ID = p_list_line_id
1588     );
1589 
1590 BEGIN
1591 
1592     IF
1593     (p_pricing_attribute_id IS NOT NULL
1594      AND
1595      p_pricing_attribute_id <> FND_API.G_MISS_NUM)
1596     AND
1597     (p_list_line_id IS NOT NULL
1598      AND
1599      p_list_line_id <> FND_API.G_MISS_NUM)
1600     THEN
1601             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1602             THEN
1603                 oe_msg_pub.Add_Exc_Msg
1604                 (   G_PKG_NAME
1605                 ,   'Query Rows'
1606                 ,   'Keys are mutually exclusive: pricing_attribute_id = '|| p_pricing_attribute_id || ', list_line_id = '|| p_list_line_id
1607                 );
1608             END IF;
1609 
1610         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1611 
1612     END IF;
1613 
1614 
1615     --  Loop over fetched records
1616 
1617     FOR l_implicit_rec IN l_PRICING_ATTR_csr LOOP
1618 
1619         l_PRICING_ATTR_rec.accumulate_flag := l_implicit_rec.ACCUMULATE_FLAG;
1620         l_PRICING_ATTR_rec.attribute1  := l_implicit_rec.ATTRIBUTE1;
1621         l_PRICING_ATTR_rec.attribute10 := l_implicit_rec.ATTRIBUTE10;
1622         l_PRICING_ATTR_rec.attribute11 := l_implicit_rec.ATTRIBUTE11;
1623         l_PRICING_ATTR_rec.attribute12 := l_implicit_rec.ATTRIBUTE12;
1624         l_PRICING_ATTR_rec.attribute13 := l_implicit_rec.ATTRIBUTE13;
1625         l_PRICING_ATTR_rec.attribute14 := l_implicit_rec.ATTRIBUTE14;
1626         l_PRICING_ATTR_rec.attribute15 := l_implicit_rec.ATTRIBUTE15;
1627         l_PRICING_ATTR_rec.attribute2  := l_implicit_rec.ATTRIBUTE2;
1628         l_PRICING_ATTR_rec.attribute3  := l_implicit_rec.ATTRIBUTE3;
1629         l_PRICING_ATTR_rec.attribute4  := l_implicit_rec.ATTRIBUTE4;
1630         l_PRICING_ATTR_rec.attribute5  := l_implicit_rec.ATTRIBUTE5;
1631         l_PRICING_ATTR_rec.attribute6  := l_implicit_rec.ATTRIBUTE6;
1632         l_PRICING_ATTR_rec.attribute7  := l_implicit_rec.ATTRIBUTE7;
1633         l_PRICING_ATTR_rec.attribute8  := l_implicit_rec.ATTRIBUTE8;
1634         l_PRICING_ATTR_rec.attribute9  := l_implicit_rec.ATTRIBUTE9;
1635         l_PRICING_ATTR_rec.attribute_grouping_no := l_implicit_rec.ATTRIBUTE_GROUPING_NO;
1636         l_PRICING_ATTR_rec.context     := l_implicit_rec.CONTEXT;
1637         l_PRICING_ATTR_rec.created_by  := l_implicit_rec.CREATED_BY;
1638         l_PRICING_ATTR_rec.creation_date := l_implicit_rec.CREATION_DATE;
1639         l_PRICING_ATTR_rec.excluder_flag := l_implicit_rec.EXCLUDER_FLAG;
1640         l_PRICING_ATTR_rec.last_updated_by := l_implicit_rec.LAST_UPDATED_BY;
1641         l_PRICING_ATTR_rec.last_update_date := l_implicit_rec.LAST_UPDATE_DATE;
1642         l_PRICING_ATTR_rec.last_update_login := l_implicit_rec.LAST_UPDATE_LOGIN;
1643         l_PRICING_ATTR_rec.list_line_id := l_implicit_rec.LIST_LINE_ID;
1644         l_PRICING_ATTR_rec.list_header_id := l_implicit_rec.LIST_HEADER_ID;
1645         l_PRICING_ATTR_rec.pricing_phase_id := l_implicit_rec.PRICING_PHASE_ID;
1646         l_PRICING_ATTR_rec.pricing_attribute := l_implicit_rec.PRICING_ATTRIBUTE;
1647         l_PRICING_ATTR_rec.pricing_attribute_context := l_implicit_rec.PRICING_ATTRIBUTE_CONTEXT;
1648         l_PRICING_ATTR_rec.pricing_attribute_id := l_implicit_rec.PRICING_ATTRIBUTE_ID;
1649         l_PRICING_ATTR_rec.pricing_attr_value_from := l_implicit_rec.PRICING_ATTR_VALUE_FROM;
1650         l_PRICING_ATTR_rec.pricing_attr_value_to := l_implicit_rec.PRICING_ATTR_VALUE_TO;
1651         l_PRICING_ATTR_rec.product_attribute := l_implicit_rec.PRODUCT_ATTRIBUTE;
1652         l_PRICING_ATTR_rec.product_attribute_context := l_implicit_rec.PRODUCT_ATTRIBUTE_CONTEXT;
1653         l_PRICING_ATTR_rec.product_attr_value := l_implicit_rec.PRODUCT_ATTR_VALUE;
1654         l_PRICING_ATTR_rec.product_uom_code := l_implicit_rec.PRODUCT_UOM_CODE;
1655         l_PRICING_ATTR_rec.program_application_id := l_implicit_rec.PROGRAM_APPLICATION_ID;
1656         l_PRICING_ATTR_rec.program_id  := l_implicit_rec.PROGRAM_ID;
1657         l_PRICING_ATTR_rec.program_update_date := l_implicit_rec.PROGRAM_UPDATE_DATE;
1658         l_PRICING_ATTR_rec.request_id  := l_implicit_rec.REQUEST_ID;
1659 	l_PRICING_ATTR_rec.comparison_operator_code := l_implicit_rec.comparison_operator_code;
1660 	l_PRICING_ATTR_rec.pricing_attribute_datatype := l_implicit_rec.pricing_attribute_datatype;
1661 	l_PRICING_ATTR_rec.product_attribute_datatype := l_implicit_rec.product_attribute_datatype;
1662 	l_PRICING_ATTR_rec.pricing_attr_value_from_number := l_implicit_rec.PRICING_ATTR_VALUE_FROM_NUMBER;
1663 	l_PRICING_ATTR_rec.pricing_attr_value_to_number := l_implicit_rec.PRICING_ATTR_VALUE_TO_NUMBER;
1664 	l_PRICING_ATTR_rec.qualification_ind := l_implicit_rec.QUALIFICATION_IND;
1665 
1666 
1667         l_PRICING_ATTR_tbl(l_PRICING_ATTR_tbl.COUNT + 1) := l_PRICING_ATTR_rec;
1668 
1669     END LOOP;
1670 
1671 
1672     --  PK sent and no rows found
1673 
1674     IF
1675     (p_pricing_attribute_id IS NOT NULL
1676      AND
1677      p_pricing_attribute_id <> FND_API.G_MISS_NUM)
1678     AND
1679     (l_PRICING_ATTR_tbl.COUNT = 0)
1680     THEN
1681         RAISE NO_DATA_FOUND;
1682     END IF;
1683 
1684 
1685     --  Return fetched table
1686 
1687     RETURN l_PRICING_ATTR_tbl;
1688 
1689 EXCEPTION
1690 
1691     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1692 
1693         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1694 
1695     WHEN OTHERS THEN
1696 
1697         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1698         THEN
1699             oe_msg_pub.Add_Exc_Msg
1700             (   G_PKG_NAME
1701             ,   'Query_Rows'
1702             );
1703         END IF;
1704 
1705         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1706 
1707 END Query_Rows;
1708 
1709 --  Procedure       lock_Row
1710 --
1711 
1712 PROCEDURE Lock_Row
1713 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1714 ,   p_PRICING_ATTR_rec              IN  QP_Price_List_PUB.Pricing_Attr_Rec_Type
1715 ,   x_PRICING_ATTR_rec              OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Pricing_Attr_Rec_Type
1716 )
1717 IS
1718 l_PRICING_ATTR_rec            QP_Price_List_PUB.Pricing_Attr_Rec_Type;
1719 BEGIN
1720 
1721     SELECT  ACCUMULATE_FLAG
1722     ,       ATTRIBUTE1
1723     ,       ATTRIBUTE10
1724     ,       ATTRIBUTE11
1725     ,       ATTRIBUTE12
1726     ,       ATTRIBUTE13
1727     ,       ATTRIBUTE14
1728     ,       ATTRIBUTE15
1729     ,       ATTRIBUTE2
1730     ,       ATTRIBUTE3
1731     ,       ATTRIBUTE4
1732     ,       ATTRIBUTE5
1733     ,       ATTRIBUTE6
1734     ,       ATTRIBUTE7
1735     ,       ATTRIBUTE8
1736     ,       ATTRIBUTE9
1737     ,       ATTRIBUTE_GROUPING_NO
1738     ,       CONTEXT
1739     ,       CREATED_BY
1740     ,       CREATION_DATE
1741     ,       EXCLUDER_FLAG
1742     ,       LAST_UPDATED_BY
1743     ,       LAST_UPDATE_DATE
1744     ,       LAST_UPDATE_LOGIN
1745     ,       LIST_LINE_ID
1746     ,       LIST_HEADER_ID
1747     ,       PRICING_PHASE_ID
1748     ,       PRICING_ATTRIBUTE
1749     ,       PRICING_ATTRIBUTE_CONTEXT
1750     ,       PRICING_ATTRIBUTE_ID
1751     ,       PRICING_ATTR_VALUE_FROM
1752     ,       PRICING_ATTR_VALUE_TO
1753     ,       PRODUCT_ATTRIBUTE
1754     ,       PRODUCT_ATTRIBUTE_CONTEXT
1755     ,       PRODUCT_ATTR_VALUE
1756     ,       PRODUCT_UOM_CODE
1757     ,       PROGRAM_APPLICATION_ID
1758     ,       PROGRAM_ID
1759     ,       PROGRAM_UPDATE_DATE
1760     ,       REQUEST_ID
1761     ,       COMPARISON_OPERATOR_CODE
1762     ,       PRICING_ATTRIBUTE_DATATYPE
1763     ,       PRODUCT_ATTRIBUTE_DATATYPE
1764     INTO    l_PRICING_ATTR_rec.accumulate_flag
1765     ,       l_PRICING_ATTR_rec.attribute1
1766     ,       l_PRICING_ATTR_rec.attribute10
1767     ,       l_PRICING_ATTR_rec.attribute11
1768     ,       l_PRICING_ATTR_rec.attribute12
1769     ,       l_PRICING_ATTR_rec.attribute13
1770     ,       l_PRICING_ATTR_rec.attribute14
1771     ,       l_PRICING_ATTR_rec.attribute15
1772     ,       l_PRICING_ATTR_rec.attribute2
1773     ,       l_PRICING_ATTR_rec.attribute3
1774     ,       l_PRICING_ATTR_rec.attribute4
1775     ,       l_PRICING_ATTR_rec.attribute5
1776     ,       l_PRICING_ATTR_rec.attribute6
1777     ,       l_PRICING_ATTR_rec.attribute7
1778     ,       l_PRICING_ATTR_rec.attribute8
1779     ,       l_PRICING_ATTR_rec.attribute9
1780     ,       l_PRICING_ATTR_rec.attribute_grouping_no
1781     ,       l_PRICING_ATTR_rec.context
1782     ,       l_PRICING_ATTR_rec.created_by
1783     ,       l_PRICING_ATTR_rec.creation_date
1784     ,       l_PRICING_ATTR_rec.excluder_flag
1785     ,       l_PRICING_ATTR_rec.last_updated_by
1786     ,       l_PRICING_ATTR_rec.last_update_date
1787     ,       l_PRICING_ATTR_rec.last_update_login
1788     ,       l_PRICING_ATTR_rec.list_line_id
1789     ,       l_PRICING_ATTR_rec.list_header_id
1790     ,       l_PRICING_ATTR_rec.pricing_phase_id
1791     ,       l_PRICING_ATTR_rec.pricing_attribute
1792     ,       l_PRICING_ATTR_rec.pricing_attribute_context
1793     ,       l_PRICING_ATTR_rec.pricing_attribute_id
1794     ,       l_PRICING_ATTR_rec.pricing_attr_value_from
1795     ,       l_PRICING_ATTR_rec.pricing_attr_value_to
1796     ,       l_PRICING_ATTR_rec.product_attribute
1797     ,       l_PRICING_ATTR_rec.product_attribute_context
1798     ,       l_PRICING_ATTR_rec.product_attr_value
1799     ,       l_PRICING_ATTR_rec.product_uom_code
1800     ,       l_PRICING_ATTR_rec.program_application_id
1801     ,       l_PRICING_ATTR_rec.program_id
1802     ,       l_PRICING_ATTR_rec.program_update_date
1803     ,       l_PRICING_ATTR_rec.request_id
1804     ,       l_PRICING_ATTR_rec.comparison_operator_code
1805     ,       l_PRICING_ATTR_rec.pricing_attribute_datatype
1806     ,       l_PRICING_ATTR_rec.product_attribute_datatype
1807     FROM    QP_PRICING_ATTRIBUTES
1808     WHERE   PRICING_ATTRIBUTE_ID = p_PRICING_ATTR_rec.pricing_attribute_id
1809         FOR UPDATE NOWAIT;
1810 
1811     --  Row locked. Compare IN attributes to DB attributes.
1812 
1813     IF  QP_GLOBALS.Equal(p_PRICING_ATTR_rec.accumulate_flag,
1814                          l_PRICING_ATTR_rec.accumulate_flag)
1815     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute1,
1816                          l_PRICING_ATTR_rec.attribute1)
1817     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute10,
1818                          l_PRICING_ATTR_rec.attribute10)
1819     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute11,
1820                          l_PRICING_ATTR_rec.attribute11)
1821     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute12,
1822                          l_PRICING_ATTR_rec.attribute12)
1823     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute13,
1824                          l_PRICING_ATTR_rec.attribute13)
1825     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute14,
1826                          l_PRICING_ATTR_rec.attribute14)
1827     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute15,
1828                          l_PRICING_ATTR_rec.attribute15)
1829     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute2,
1830                          l_PRICING_ATTR_rec.attribute2)
1831     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute3,
1832                          l_PRICING_ATTR_rec.attribute3)
1833     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute4,
1834                          l_PRICING_ATTR_rec.attribute4)
1835     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute5,
1836                          l_PRICING_ATTR_rec.attribute5)
1837     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute6,
1838                          l_PRICING_ATTR_rec.attribute6)
1839     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute7,
1840                          l_PRICING_ATTR_rec.attribute7)
1841     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute8,
1842                          l_PRICING_ATTR_rec.attribute8)
1843     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute9,
1844                          l_PRICING_ATTR_rec.attribute9)
1845     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.attribute_grouping_no,
1846                          l_PRICING_ATTR_rec.attribute_grouping_no)
1847     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.context,
1848                          l_PRICING_ATTR_rec.context)
1849 --    AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.created_by,
1850 --                         l_PRICING_ATTR_rec.created_by)
1851 --    AND QP_GLOBALS.Equal(trunc(p_PRICING_ATTR_rec.creation_date),
1852 --                         trunc(l_PRICING_ATTR_rec.creation_date))
1853     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.excluder_flag,
1854                          l_PRICING_ATTR_rec.excluder_flag)
1855 --    AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.last_updated_by,
1856 --                         l_PRICING_ATTR_rec.last_updated_by)
1857 --    AND QP_GLOBALS.Equal(trunc(p_PRICING_ATTR_rec.last_update_date),
1858 --                         trunc(l_PRICING_ATTR_rec.last_update_date))
1859 --    AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.last_update_login,
1860 --                         l_PRICING_ATTR_rec.last_update_login)
1861     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.list_line_id,
1862                          l_PRICING_ATTR_rec.list_line_id)
1863 /*    AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.list_header_id,
1864                          l_PRICING_ATTR_rec.list_header_id)
1865     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_phase_id,
1866                          l_PRICING_ATTR_rec.pricing_phase_id)*/
1867     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attribute,
1868                          l_PRICING_ATTR_rec.pricing_attribute)
1869     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attribute_context,
1870                          l_PRICING_ATTR_rec.pricing_attribute_context)
1871     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attribute_id,
1872                          l_PRICING_ATTR_rec.pricing_attribute_id)
1873     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attr_value_from,
1874                          l_PRICING_ATTR_rec.pricing_attr_value_from)
1875     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attr_value_to,
1876                          l_PRICING_ATTR_rec.pricing_attr_value_to)
1877     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.product_attribute,
1878                          l_PRICING_ATTR_rec.product_attribute)
1879     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.product_attribute_context,
1880                          l_PRICING_ATTR_rec.product_attribute_context)
1881     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.product_attr_value,
1882                          l_PRICING_ATTR_rec.product_attr_value)
1883     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.product_uom_code,
1884                          l_PRICING_ATTR_rec.product_uom_code)
1885 --    AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.program_application_id,
1886 --                         l_PRICING_ATTR_rec.program_application_id)
1887 --    AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.program_id,
1888 --                         l_PRICING_ATTR_rec.program_id)
1889 --    AND QP_GLOBALS.Equal(trunc(p_PRICING_ATTR_rec.program_update_date),
1890 --                         trunc(l_PRICING_ATTR_rec.program_update_date))
1891     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.request_id,
1892                          l_PRICING_ATTR_rec.request_id)
1893     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.comparison_operator_code,
1894 					l_PRICING_ATTR_rec.comparison_operator_code)
1895     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attribute_datatype,
1896 					l_PRICING_ATTR_rec.pricing_attribute_datatype)
1897     AND QP_GLOBALS.Equal(p_PRICING_ATTR_rec.product_attribute_datatype,
1898 					l_PRICING_ATTR_rec.product_attribute_datatype)
1899     THEN
1900 
1901         --  Row has not changed. Set out parameter.
1902 
1903         x_PRICING_ATTR_rec             := l_PRICING_ATTR_rec;
1904 
1905         --  Set return status
1906 
1907         x_return_status                := FND_API.G_RET_STS_SUCCESS;
1908         x_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_SUCCESS;
1909 
1910     ELSE
1911 
1912         --  Row has changed by another user.
1913 
1914         x_return_status                := FND_API.G_RET_STS_ERROR;
1915         x_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_ERROR;
1916 
1917         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR)
1918         THEN
1919 
1920             FND_MESSAGE.SET_NAME('QP','OE_LOCK_ROW_CHANGED');
1921             oe_msg_pub.Add;
1922 
1923         END IF;
1924 
1925     END IF;
1926 
1927 EXCEPTION
1928 
1929     WHEN NO_DATA_FOUND THEN
1930 
1931         x_return_status                := FND_API.G_RET_STS_ERROR;
1932         x_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_ERROR;
1933 
1934         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR)
1935         THEN
1936 
1937             FND_MESSAGE.SET_NAME('QP','OE_LOCK_ROW_DELETED');
1938             oe_msg_pub.Add;
1939 
1940         END IF;
1941     WHEN APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION THEN
1942 
1943         x_return_status                := FND_API.G_RET_STS_ERROR;
1944         x_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_ERROR;
1945 
1946         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR)
1947         THEN
1948 
1949             FND_MESSAGE.SET_NAME('QP','OE_LOCK_ROW_ALREADY_LOCKED');
1950             oe_msg_pub.Add;
1951 
1952         END IF;
1953     WHEN OTHERS THEN
1954 
1955         x_return_status                := FND_API.G_RET_STS_UNEXP_ERROR;
1956         x_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1957 
1958         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1959         THEN
1960             oe_msg_pub.Add_Exc_Msg
1961             (   G_PKG_NAME
1962             ,   'Lock_Row'
1963             );
1964         END IF;
1965 
1966 END Lock_Row;
1967 
1968 --  Function Get_Values
1969 
1970 FUNCTION Get_Values
1971 (   p_PRICING_ATTR_rec              IN  QP_Price_List_PUB.Pricing_Attr_Rec_Type
1972 ,   p_old_PRICING_ATTR_rec          IN  QP_Price_List_PUB.Pricing_Attr_Rec_Type :=
1973                                         QP_Price_List_PUB.G_MISS_PRICING_ATTR_REC
1974 ) RETURN QP_Price_List_PUB.Pricing_Attr_Val_Rec_Type
1975 IS
1976 l_PRICING_ATTR_val_rec        QP_Price_List_PUB.Pricing_Attr_Val_Rec_Type;
1977 BEGIN
1978 
1979     IF p_PRICING_ATTR_rec.accumulate_flag IS NOT NULL AND
1980         p_PRICING_ATTR_rec.accumulate_flag <> FND_API.G_MISS_CHAR AND
1981         NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.accumulate_flag,
1982         p_old_PRICING_ATTR_rec.accumulate_flag)
1983     THEN
1984         l_PRICING_ATTR_val_rec.accumulate := QP_Id_To_Value.Accumulate
1985         (   p_accumulate_flag             => p_PRICING_ATTR_rec.accumulate_flag
1986         );
1987     END IF;
1988 
1989     IF p_PRICING_ATTR_rec.excluder_flag IS NOT NULL AND
1990         p_PRICING_ATTR_rec.excluder_flag <> FND_API.G_MISS_CHAR AND
1991         NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.excluder_flag,
1992         p_old_PRICING_ATTR_rec.excluder_flag)
1993     THEN
1994         l_PRICING_ATTR_val_rec.excluder := QP_Id_To_Value.Excluder
1995         (   p_excluder_flag               => p_PRICING_ATTR_rec.excluder_flag
1996         );
1997     END IF;
1998 
1999     IF p_PRICING_ATTR_rec.list_line_id IS NOT NULL AND
2000         p_PRICING_ATTR_rec.list_line_id <> FND_API.G_MISS_NUM AND
2001         NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.list_line_id,
2002         p_old_PRICING_ATTR_rec.list_line_id)
2003     THEN
2004         l_PRICING_ATTR_val_rec.list_line := QP_Id_To_Value.List_Line
2005         (   p_list_line_id                => p_PRICING_ATTR_rec.list_line_id
2006         );
2007     END IF;
2008 
2009 /*    IF p_PRICING_ATTR_rec.pricing_attribute_id IS NOT NULL AND
2010         p_PRICING_ATTR_rec.pricing_attribute_id <> FND_API.G_MISS_NUM AND
2011         NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.pricing_attribute_id,
2012         p_old_PRICING_ATTR_rec.pricing_attribute_id)
2013     THEN
2014         l_PRICING_ATTR_val_rec.pricing_attribute := QP_Id_To_Value.Pricing_Attribute
2015         (   p_pricing_attribute_id        => p_PRICING_ATTR_rec.pricing_attribute_id
2016         );
2017     END IF;
2018 */
2019     IF p_PRICING_ATTR_rec.product_uom_code IS NOT NULL AND
2020         p_PRICING_ATTR_rec.product_uom_code <> FND_API.G_MISS_CHAR AND
2021         NOT QP_GLOBALS.Equal(p_PRICING_ATTR_rec.product_uom_code,
2022         p_old_PRICING_ATTR_rec.product_uom_code)
2023     THEN
2024         l_PRICING_ATTR_val_rec.product_uom := QP_Id_To_Value.Product_Uom
2025         (   p_product_uom_code            => p_PRICING_ATTR_rec.product_uom_code
2026         );
2027     END IF;
2028 
2029     RETURN l_PRICING_ATTR_val_rec;
2030 
2031 END Get_Values;
2032 
2033 --  Function Get_Ids
2034 
2035 FUNCTION Get_Ids
2036 (   p_PRICING_ATTR_rec              IN  QP_Price_List_PUB.Pricing_Attr_Rec_Type
2037 ,   p_PRICING_ATTR_val_rec          IN  QP_Price_List_PUB.Pricing_Attr_Val_Rec_Type
2038 ) RETURN QP_Price_List_PUB.Pricing_Attr_Rec_Type
2039 IS
2040 l_PRICING_ATTR_rec            QP_Price_List_PUB.Pricing_Attr_Rec_Type;
2041 BEGIN
2042 
2043     --  initialize  return_status.
2044 
2045     l_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_SUCCESS;
2046 
2047     --  initialize l_PRICING_ATTR_rec.
2048 
2049     l_PRICING_ATTR_rec := p_PRICING_ATTR_rec;
2050 
2051     IF  p_PRICING_ATTR_val_rec.accumulate <> FND_API.G_MISS_CHAR
2052     THEN
2053 
2054         IF p_PRICING_ATTR_rec.accumulate_flag <> FND_API.G_MISS_CHAR THEN
2055 
2056             l_PRICING_ATTR_rec.accumulate_flag := p_PRICING_ATTR_rec.accumulate_flag;
2057 
2058             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
2059             THEN
2060 
2061                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
2062                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','accumulate');
2063                 oe_msg_pub.Add;
2064 
2065             END IF;
2066 
2067         ELSE
2068 
2069             l_PRICING_ATTR_rec.accumulate_flag := QP_Value_To_Id.accumulate
2070             (   p_accumulate                  => p_PRICING_ATTR_val_rec.accumulate
2071             );
2072 
2073             IF l_PRICING_ATTR_rec.accumulate_flag = FND_API.G_MISS_CHAR THEN
2074                 l_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_ERROR;
2075             END IF;
2076 
2077         END IF;
2078 
2079     END IF;
2080 
2081     IF  p_PRICING_ATTR_val_rec.excluder <> FND_API.G_MISS_CHAR
2082     THEN
2083 
2084         IF p_PRICING_ATTR_rec.excluder_flag <> FND_API.G_MISS_CHAR THEN
2085 
2086             l_PRICING_ATTR_rec.excluder_flag := p_PRICING_ATTR_rec.excluder_flag;
2087 
2088             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
2089             THEN
2090 
2091                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
2092                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','excluder');
2093                 oe_msg_pub.Add;
2094 
2095             END IF;
2096 
2097         ELSE
2098 
2099             l_PRICING_ATTR_rec.excluder_flag := QP_Value_To_Id.excluder
2100             (   p_excluder                    => p_PRICING_ATTR_val_rec.excluder
2101             );
2102 
2103             IF l_PRICING_ATTR_rec.excluder_flag = FND_API.G_MISS_CHAR THEN
2104                 l_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_ERROR;
2105             END IF;
2106 
2107         END IF;
2108 
2109     END IF;
2110 
2111     IF  p_PRICING_ATTR_val_rec.list_line <> FND_API.G_MISS_CHAR
2112     THEN
2113 
2114         IF p_PRICING_ATTR_rec.list_line_id <> FND_API.G_MISS_NUM THEN
2115 
2116             l_PRICING_ATTR_rec.list_line_id := p_PRICING_ATTR_rec.list_line_id;
2117 
2118             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
2119             THEN
2120 
2121                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
2122                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','list_line');
2123                 oe_msg_pub.Add;
2124 
2125             END IF;
2126 
2127         ELSE
2128 
2129             l_PRICING_ATTR_rec.list_line_id := QP_Value_To_Id.list_line
2130             (   p_list_line                   => p_PRICING_ATTR_val_rec.list_line
2131             );
2132 
2133             IF l_PRICING_ATTR_rec.list_line_id = FND_API.G_MISS_NUM THEN
2134                 l_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_ERROR;
2135             END IF;
2136 
2137         END IF;
2138 
2139     END IF;
2140 
2141 /****************************************************************************
2142  Added code to perform value_to_id conversion for pricing_Attribute,
2143  pricing_Attr_value_from and pricing_attr_value_to columns.
2144 ****************************************************************************/
2145 
2146     IF  p_PRICING_ATTR_val_rec.pricing_attribute_desc <> FND_API.G_MISS_CHAR
2147     THEN
2148 
2149         IF p_PRICING_ATTR_rec.pricing_attribute <> FND_API.G_MISS_CHAR THEN
2150 
2151             l_PRICING_ATTR_rec.pricing_attribute := p_PRICING_ATTR_rec.pricing_attribute;
2152 
2153             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
2154             THEN
2155 
2156                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
2157                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','pricing_attribute');
2158                 oe_msg_pub.Add;
2159 
2160             END IF;
2161 
2162         ELSE
2163 
2164             l_PRICING_ATTR_rec.pricing_attribute := QP_Value_To_Id.pricing_attribute
2165             (   p_pricing_attribute_desc           => p_PRICING_ATTR_val_rec.pricing_attribute_desc,
2166 			 p_context => l_PRICING_ATTR_rec.pricing_attribute_context
2167             );
2168 
2169             IF l_PRICING_ATTR_rec.pricing_attribute = 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.pricing_attr_value_from_desc <> FND_API.G_MISS_CHAR
2178     THEN
2179 
2180         IF p_PRICING_ATTR_rec.pricing_attr_value_from <> FND_API.G_MISS_CHAR THEN
2181 
2182             l_PRICING_ATTR_rec.pricing_attr_value_from := p_PRICING_ATTR_rec.pricing_attr_value_from;
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','pricing_attr_value_from');
2189                 oe_msg_pub.Add;
2190 
2191             END IF;
2192 
2193         ELSE
2194 
2195             l_PRICING_ATTR_rec.pricing_attr_value_from := QP_Value_To_Id.pricing_attr_value_from
2196             ( p_pricing_attr_value_from_desc => p_PRICING_ATTR_val_rec.pricing_attr_value_from_desc,
2197               p_context => l_PRICING_ATTR_rec.pricing_attribute_context,
2198               p_attribute => l_PRICING_ATTR_rec.pricing_attribute
2199             );
2200 
2201             IF l_PRICING_ATTR_rec.pricing_attr_value_from = FND_API.G_MISS_CHAR THEN
2202                 l_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_ERROR;
2203             END IF;
2204 
2205         END IF;
2206 
2207     END IF;
2208 
2209     IF  p_PRICING_ATTR_val_rec.pricing_attr_value_to_desc <> FND_API.G_MISS_CHAR
2210     THEN
2211 
2212         IF p_PRICING_ATTR_rec.pricing_attr_value_to <> FND_API.G_MISS_CHAR THEN
2213 
2214             l_PRICING_ATTR_rec.pricing_attr_value_to := p_PRICING_ATTR_rec.pricing_attr_value_to;
2215 
2216             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
2217             THEN
2218 
2219                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
2220                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','pricing_attr_value_to');
2221                 oe_msg_pub.Add;
2222 
2223             END IF;
2224 
2225         ELSE
2226 
2227             l_PRICING_ATTR_rec.pricing_attr_value_to := QP_Value_To_Id.pricing_attr_value_to
2228             ( p_pricing_attr_value_to_desc => p_PRICING_ATTR_val_rec.pricing_attr_value_to_desc,
2229               p_context => l_PRICING_ATTR_rec.pricing_attribute_context,
2230               p_attribute => l_PRICING_ATTR_rec.pricing_attribute
2231             );
2232 
2233             IF l_PRICING_ATTR_rec.pricing_attr_value_to = FND_API.G_MISS_CHAR THEN
2234                 l_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_ERROR;
2235             END IF;
2236 
2237         END IF;
2238 
2239     END IF;
2240 
2241     IF  p_PRICING_ATTR_val_rec.product_uom <> FND_API.G_MISS_CHAR
2242     THEN
2243 
2244         IF p_PRICING_ATTR_rec.product_uom_code <> FND_API.G_MISS_CHAR THEN
2245 
2246             l_PRICING_ATTR_rec.product_uom_code := p_PRICING_ATTR_rec.product_uom_code;
2247 
2248             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
2249             THEN
2250 
2251                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
2252                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','product_uom');
2253                 oe_msg_pub.Add;
2254 
2255             END IF;
2256 
2257         ELSE
2258 
2259             l_PRICING_ATTR_rec.product_uom_code := QP_Value_To_Id.product_uom
2260             (   p_product_uom                 => p_PRICING_ATTR_val_rec.product_uom
2261             );
2262 
2263             IF l_PRICING_ATTR_rec.product_uom_code = FND_API.G_MISS_CHAR THEN
2264                 l_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_ERROR;
2265             END IF;
2266 
2267         END IF;
2268 
2269     END IF;
2270 
2271     RETURN l_PRICING_ATTR_rec;
2272 
2273 END Get_Ids;
2274 
2275 Procedure Pre_Write_Process
2276 (   p_PRICING_ATTR_rec                      IN  QP_Price_List_PUB.Pricing_Attr_Rec_Type
2277 ,   p_old_PRICING_ATTR_rec                  IN  QP_Price_List_PUB.Pricing_Attr_Rec_Type :=
2278 						QP_Price_List_PUB.G_MISS_Pricing_Attr_REC
2279 ,   x_PRICING_ATTR_rec                      OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Pricing_Attr_Rec_Type
2280 ) IS
2281 l_PRICING_ATTR_rec              QP_Price_List_PUB.Pricing_Attr_Rec_Type := p_PRICING_ATTR_rec;
2282 l_return_status         varchar2(30);
2283 BEGIN
2284 
2285   oe_debug_pub.Add('Entering QP_pll_PRICING_ATTR_Util.pre_write_process', 1);
2286 
2287 --Bug 2807015. Added following code to update pricing attributes when the PA is changed in PLL.
2288   IF ( p_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_UPDATE)
2289   THEN
2290      IF ((p_old_PRICING_ATTR_rec.product_attribute  <> p_PRICING_ATTR_rec.product_attribute) OR
2291          (p_old_PRICING_ATTR_rec.product_attr_value <> p_PRICING_ATTR_rec.product_attr_value))
2292      THEN
2293        begin
2294           update qp_pricing_attributes
2295           set product_attribute = p_PRICING_ATTR_rec.product_attribute
2296           ,   product_attr_value = p_PRICING_ATTR_rec.product_attr_value
2297           where list_line_id = p_PRICING_ATTR_rec.list_line_id;
2298        exception
2299           when NO_DATA_FOUND then
2300                 null;
2301        end;
2302      END IF;
2303 
2304   ELSIF ( p_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_CREATE ) THEN
2305       begin
2306           update qp_pricing_attributes
2307           set product_attribute = p_PRICING_ATTR_rec.product_attribute
2308           ,   product_attr_value = p_PRICING_ATTR_rec.product_attr_value
2309           where list_line_id = p_PRICING_ATTR_rec.list_line_id;
2310        exception
2311           when NO_DATA_FOUND then
2312                 null;
2313        end;
2314   END IF;
2315 
2316   x_PRICING_ATTR_rec := l_PRICING_ATTR_rec;
2317   IF   ( p_PRICING_ATTR_rec.operation = OE_GLOBALS.G_OPR_DELETE) THEN
2318 
2319     oe_debug_pub.add('Logging a request to update qualification_ind  ', 1);
2320          qp_delayed_requests_PVT.log_request(
2321                  p_entity_code => QP_GLOBALS.G_ENTITY_Price_List_Line,
2322    	         p_entity_id  => p_PRICING_ATTR_rec.list_line_id,
2323                  p_requesting_entity_code=> QP_GLOBALS.G_ENTITY_Price_List_Line,
2324                  p_requesting_entity_id => p_PRICING_ATTR_rec.list_line_id,
2325                  p_request_type =>QP_GLOBALS.G_UPDATE_LINE_QUAL_IND,
2326                  x_return_status => l_return_status);
2327   END IF;
2328 -- pattern
2329   IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Installed = 'Y' THEN
2330      IF (p_PRICING_ATTR_rec.operation = OE_GLOBALS.G_OPR_CREATE) THEN
2331 	    qp_delayed_requests_pvt.log_request(
2332 		p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
2333 		p_entity_id => p_PRICING_ATTR_rec.list_header_id,
2334 		p_request_unique_key1 => p_PRICING_ATTR_rec.list_line_id,
2335 		p_request_unique_key2 => 'I',
2336 		p_requesting_entity_code => QP_GLOBALS.G_ENTITY_ALL,
2337 		p_requesting_entity_id => p_PRICING_ATTR_rec.list_header_id,
2338 		p_request_type => QP_GLOBALS.G_MAINTAIN_PRODUCT_PATTERN,
2339 		x_return_status => l_return_status);
2340 
2341      END IF;
2342      IF (p_PRICING_ATTR_rec.operation = OE_GLOBALS.G_OPR_UPDATE) THEN
2343 	    qp_delayed_requests_pvt.log_request(
2344 		p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
2345 		p_entity_id => p_PRICING_ATTR_rec.list_header_id,
2346 		p_request_unique_key1 => p_PRICING_ATTR_rec.list_line_id,
2347 		p_request_unique_key2 => 'U',
2348 		p_requesting_entity_code => QP_GLOBALS.G_ENTITY_ALL,
2349 		p_requesting_entity_id => p_PRICING_ATTR_rec.list_header_id,
2350 		p_request_type => QP_GLOBALS.G_MAINTAIN_PRODUCT_PATTERN,
2351 		x_return_status => l_return_status);
2352      END IF;
2353      IF (p_PRICING_ATTR_rec.operation = OE_GLOBALS.G_OPR_DELETE) THEN
2354 	    qp_delayed_requests_pvt.log_request(
2355 		p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
2356 		p_entity_id => p_PRICING_ATTR_rec.list_header_id,
2357 		p_request_unique_key1 => p_PRICING_ATTR_rec.list_line_id,
2358 		p_request_unique_key2 => 'D',
2359 		p_requesting_entity_code => QP_GLOBALS.G_ENTITY_ALL,
2360 		p_requesting_entity_id => p_PRICING_ATTR_rec.list_header_id,
2361 		p_request_type => QP_GLOBALS.G_MAINTAIN_PRODUCT_PATTERN,
2362 		x_return_status => l_return_status);
2363      END IF;
2364    END IF; --Java Engine Installed
2365 -- pattern
2366 
2367 
2368 EXCEPTION
2369     WHEN FND_API.G_EXC_ERROR THEN
2370         RAISE;
2371     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2372         RAISE;
2373     WHEN OTHERS THEN
2374         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
2375         THEN
2376             oe_msg_pub.Add_Exc_Msg
2377             (   G_PKG_NAME
2378             ,   'Pre_Write_Process'
2379             );
2380         END IF;
2381         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2382 END Pre_Write_Process;
2383 
2384 END QP_pll_pricing_attr_Util;