DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_PRICE_LIST_LINE_UTIL

Source


1 PACKAGE BODY QP_Price_List_Line_Util AS
2 /* $Header: QPXUPLLB.pls 120.10.12010000.1 2008/07/28 11:57:12 appldev ship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'QP_Price_List_Line_Util';
7 --introduced the constant for performance problem
8 G_ORGANIZATION_ID             CONSTANT VARCHAR2(30) := TO_CHAR(QP_UTIL.Get_Item_Validation_Org);
9 
10 --  Procedure Clear_Dependent_Attr
11 
12 PROCEDURE Clear_Dependent_Attr
13 (   p_attr_id                       IN  NUMBER := FND_API.G_MISS_NUM
14 ,   p_PRICE_LIST_LINE_rec           IN  QP_Price_List_PUB.Price_List_Line_Rec_Type
15 ,   p_old_PRICE_LIST_LINE_rec       IN  QP_Price_List_PUB.Price_List_Line_Rec_Type :=
16                                         QP_Price_List_PUB.G_MISS_PRICE_LIST_LINE_REC
17 ,   x_PRICE_LIST_LINE_rec           OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Line_Rec_Type
18 )
19 IS
20 l_index                       NUMBER := 0;
21 l_src_attr_tbl                QP_GLOBALS.NUMBER_Tbl_Type;
22 l_dep_attr_tbl                QP_GLOBALS.NUMBER_Tbl_Type;
23 BEGIN
24 
25     --  Load out record
26 
27     x_PRICE_LIST_LINE_rec := p_PRICE_LIST_LINE_rec;
28 
29     --  If attr_id is missing compare old and new records and for
30     --  every changed attribute clear its dependent fields.
31 
32     IF p_attr_id = FND_API.G_MISS_NUM THEN
33 
34         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.accrual_qty,p_old_PRICE_LIST_LINE_rec.accrual_qty)
35         THEN
36             l_index := l_index + 1;
37             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ACCRUAL_QTY;
38         END IF;
39 
40         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.accrual_uom_code,p_old_PRICE_LIST_LINE_rec.accrual_uom_code)
41         THEN
42             l_index := l_index + 1;
43             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ACCRUAL_UOM;
44         END IF;
45 
46         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.arithmetic_operator,p_old_PRICE_LIST_LINE_rec.arithmetic_operator)
47         THEN
48             l_index := l_index + 1;
49             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ARITHMETIC_OPERATOR;
50         END IF;
51 
52         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute1,p_old_PRICE_LIST_LINE_rec.attribute1)
53         THEN
54             l_index := l_index + 1;
55             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE1;
56         END IF;
57 
58         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute10,p_old_PRICE_LIST_LINE_rec.attribute10)
59         THEN
60             l_index := l_index + 1;
61             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE10;
62         END IF;
63 
64         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute11,p_old_PRICE_LIST_LINE_rec.attribute11)
65         THEN
66             l_index := l_index + 1;
67             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE11;
68         END IF;
69 
70         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute12,p_old_PRICE_LIST_LINE_rec.attribute12)
71         THEN
72             l_index := l_index + 1;
73             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE12;
74         END IF;
75 
76         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute13,p_old_PRICE_LIST_LINE_rec.attribute13)
77         THEN
78             l_index := l_index + 1;
79             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE13;
80         END IF;
81 
82         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute14,p_old_PRICE_LIST_LINE_rec.attribute14)
83         THEN
84             l_index := l_index + 1;
85             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE14;
86         END IF;
87 
88         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute15,p_old_PRICE_LIST_LINE_rec.attribute15)
89         THEN
90             l_index := l_index + 1;
91             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE15;
92         END IF;
93 
94         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute2,p_old_PRICE_LIST_LINE_rec.attribute2)
95         THEN
96             l_index := l_index + 1;
97             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE2;
98         END IF;
99 
100         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute3,p_old_PRICE_LIST_LINE_rec.attribute3)
101         THEN
102             l_index := l_index + 1;
103             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE3;
104         END IF;
105 
106         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute4,p_old_PRICE_LIST_LINE_rec.attribute4)
107         THEN
108             l_index := l_index + 1;
109             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE4;
110         END IF;
111 
112         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute5,p_old_PRICE_LIST_LINE_rec.attribute5)
113         THEN
114             l_index := l_index + 1;
115             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE5;
116         END IF;
117 
118         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute6,p_old_PRICE_LIST_LINE_rec.attribute6)
119         THEN
120             l_index := l_index + 1;
121             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE6;
122         END IF;
123 
124         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute7,p_old_PRICE_LIST_LINE_rec.attribute7)
125         THEN
126             l_index := l_index + 1;
127             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE7;
128         END IF;
129 
130         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute8,p_old_PRICE_LIST_LINE_rec.attribute8)
131         THEN
132             l_index := l_index + 1;
133             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE8;
134         END IF;
135 
136         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute9,p_old_PRICE_LIST_LINE_rec.attribute9)
137         THEN
138             l_index := l_index + 1;
139             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE9;
140         END IF;
141 
142         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.automatic_flag,p_old_PRICE_LIST_LINE_rec.automatic_flag)
143         THEN
144             l_index := l_index + 1;
145             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_AUTOMATIC;
146         END IF;
147 
148         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.base_qty,p_old_PRICE_LIST_LINE_rec.base_qty)
149         THEN
150             l_index := l_index + 1;
151             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_BASE_QTY;
152         END IF;
153 
154         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.base_uom_code,p_old_PRICE_LIST_LINE_rec.base_uom_code)
155         THEN
156             l_index := l_index + 1;
157             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_BASE_UOM;
158         END IF;
159 
160         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.comments,p_old_PRICE_LIST_LINE_rec.comments)
161         THEN
162             l_index := l_index + 1;
163             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_COMMENTS;
164         END IF;
165 
166         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.context,p_old_PRICE_LIST_LINE_rec.context)
167         THEN
168             l_index := l_index + 1;
169             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_CONTEXT;
170         END IF;
171 
172         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.created_by,p_old_PRICE_LIST_LINE_rec.created_by)
173         THEN
174             l_index := l_index + 1;
175             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_CREATED_BY;
176         END IF;
177 
178         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.creation_date,p_old_PRICE_LIST_LINE_rec.creation_date)
179         THEN
180             l_index := l_index + 1;
181             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_CREATION_DATE;
182         END IF;
183 
184         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.effective_period_uom,p_old_PRICE_LIST_LINE_rec.effective_period_uom)
185         THEN
186             l_index := l_index + 1;
187             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_EFFECTIVE_PERIOD_UOM;
188         END IF;
189 
190         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.end_date_active,p_old_PRICE_LIST_LINE_rec.end_date_active)
191         THEN
192             l_index := l_index + 1;
193             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_END_DATE_ACTIVE;
194         END IF;
195 
196         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.estim_accrual_rate,p_old_PRICE_LIST_LINE_rec.estim_accrual_rate)
197         THEN
198             l_index := l_index + 1;
199             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ESTIM_ACCRUAL_RATE;
200         END IF;
201 
202         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.generate_using_formula_id,p_old_PRICE_LIST_LINE_rec.generate_using_formula_id)
203         THEN
204             l_index := l_index + 1;
205             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_GENERATE_USING_FORMULA;
206         END IF;
207 
208         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.inventory_item_id,p_old_PRICE_LIST_LINE_rec.inventory_item_id)
209         THEN
210             l_index := l_index + 1;
211             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_INVENTORY_ITEM;
212         END IF;
213 
214         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.last_updated_by,p_old_PRICE_LIST_LINE_rec.last_updated_by)
215         THEN
216             l_index := l_index + 1;
217             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_LAST_UPDATED_BY;
218         END IF;
219 
220         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.last_update_date,p_old_PRICE_LIST_LINE_rec.last_update_date)
221         THEN
222             l_index := l_index + 1;
223             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_LAST_UPDATE_DATE;
224         END IF;
225 
226         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.last_update_login,p_old_PRICE_LIST_LINE_rec.last_update_login)
227         THEN
228             l_index := l_index + 1;
229             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_LAST_UPDATE_LOGIN;
230         END IF;
231 
232         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.list_header_id,p_old_PRICE_LIST_LINE_rec.list_header_id)
233         THEN
234             l_index := l_index + 1;
235             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_LIST_HEADER;
236         END IF;
237 
238         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.list_line_id,p_old_PRICE_LIST_LINE_rec.list_line_id)
239         THEN
240             l_index := l_index + 1;
241             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_LIST_LINE;
242         END IF;
243 
244         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.list_line_type_code,p_old_PRICE_LIST_LINE_rec.list_line_type_code)
245         THEN
246             l_index := l_index + 1;
247             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_LIST_LINE_TYPE;
248         END IF;
249 
250         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.list_price,p_old_PRICE_LIST_LINE_rec.list_price)
251         THEN
252             l_index := l_index + 1;
253             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_LIST_PRICE;
254         END IF;
255 
256         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.from_rltd_modifier_id,p_old_PRICE_LIST_LINE_rec.from_rltd_modifier_id)
257         THEN
258             l_index := l_index + 1;
259             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_FROM_RLTD_MODIFIER;
260         END IF;
261 
262         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.rltd_modifier_group_no,p_old_PRICE_LIST_LINE_rec.rltd_modifier_group_no)
263         THEN
264             l_index := l_index + 1;
265             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_RLTD_MODIFIER_GROUP_NO;
266         END IF;
267 
268         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.product_precedence,p_old_PRICE_LIST_LINE_rec.product_precedence)
269         THEN
270             l_index := l_index + 1;
271             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_PRODUCT_PRECEDENCE;
272         END IF;
273 
274 
275         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.modifier_level_code,p_old_PRICE_LIST_LINE_rec.modifier_level_code)
276         THEN
277             l_index := l_index + 1;
278             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_MODIFIER_LEVEL;
279         END IF;
280 
281         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.number_effective_periods,p_old_PRICE_LIST_LINE_rec.number_effective_periods)
282         THEN
283             l_index := l_index + 1;
284             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_NUMBER_EFFECTIVE_PERIODS;
285         END IF;
286 
287         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.operand,p_old_PRICE_LIST_LINE_rec.operand)
288         THEN
289             l_index := l_index + 1;
290             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_OPERAND;
291         END IF;
292 
293         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.organization_id,p_old_PRICE_LIST_LINE_rec.organization_id)
294         THEN
295             l_index := l_index + 1;
296             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ORGANIZATION;
297         END IF;
298 
299         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.override_flag,p_old_PRICE_LIST_LINE_rec.override_flag)
300         THEN
301             l_index := l_index + 1;
302             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_OVERRIDE;
303         END IF;
304 
305         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.percent_price,p_old_PRICE_LIST_LINE_rec.percent_price)
306         THEN
307             l_index := l_index + 1;
308             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_PERCENT_PRICE;
309         END IF;
310 
311         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.price_break_type_code,p_old_PRICE_LIST_LINE_rec.price_break_type_code)
312         THEN
313             l_index := l_index + 1;
314             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_PRICE_BREAK_TYPE;
315         END IF;
316 
317         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.price_by_formula_id,p_old_PRICE_LIST_LINE_rec.price_by_formula_id)
318         THEN
319             l_index := l_index + 1;
320             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_PRICE_BY_FORMULA;
321         END IF;
322 
323         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.primary_uom_flag,p_old_PRICE_LIST_LINE_rec.primary_uom_flag)
324         THEN
325             l_index := l_index + 1;
326             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_PRIMARY_UOM;
327         END IF;
328 
329         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.print_on_invoice_flag,p_old_PRICE_LIST_LINE_rec.print_on_invoice_flag)
330         THEN
331             l_index := l_index + 1;
332             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_PRINT_ON_INVOICE;
333         END IF;
334 
335         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.program_application_id,p_old_PRICE_LIST_LINE_rec.program_application_id)
336         THEN
337             l_index := l_index + 1;
338             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_PROGRAM_APPLICATION;
339         END IF;
340 
341         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.program_id,p_old_PRICE_LIST_LINE_rec.program_id)
342         THEN
343             l_index := l_index + 1;
344             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_PROGRAM;
345         END IF;
346 
347         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.program_update_date,p_old_PRICE_LIST_LINE_rec.program_update_date)
348         THEN
349             l_index := l_index + 1;
350             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_PROGRAM_UPDATE_DATE;
351         END IF;
352 
353         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.rebate_trxn_type_code,p_old_PRICE_LIST_LINE_rec.rebate_trxn_type_code)
354         THEN
355             l_index := l_index + 1;
356             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_REBATE_TRANSACTION_TYPE;
357         END IF;
358 
359         -- block pricing
360         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.recurring_value, p_old_PRICE_LIST_LINE_rec.recurring_value)
361         THEN
362           l_index := l_index+1;
363           l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_RECURRING_VALUE;
364         END IF;
365 
366         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.related_item_id,p_old_PRICE_LIST_LINE_rec.related_item_id)
367         THEN
368             l_index := l_index + 1;
369             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_RELATED_ITEM;
370         END IF;
371 
372         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.relationship_type_id,p_old_PRICE_LIST_LINE_rec.relationship_type_id)
373         THEN
374             l_index := l_index + 1;
375             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_RELATIONSHIP_TYPE;
376         END IF;
377 
378         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.reprice_flag,p_old_PRICE_LIST_LINE_rec.reprice_flag)
379         THEN
380             l_index := l_index + 1;
381             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_REPRICE;
382         END IF;
383 
384         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.request_id,p_old_PRICE_LIST_LINE_rec.request_id)
385         THEN
386             l_index := l_index + 1;
387             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_REQUEST;
388         END IF;
389 
390         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.revision,p_old_PRICE_LIST_LINE_rec.revision)
391         THEN
392             l_index := l_index + 1;
393             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_REVISION;
394         END IF;
395 
396         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.revision_date,p_old_PRICE_LIST_LINE_rec.revision_date)
397         THEN
398             l_index := l_index + 1;
399             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_REVISION_DATE;
400         END IF;
401 
402         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.revision_reason_code,p_old_PRICE_LIST_LINE_rec.revision_reason_code)
403         THEN
404             l_index := l_index + 1;
405             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_REVISION_REASON;
406         END IF;
407 
408         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.start_date_active,p_old_PRICE_LIST_LINE_rec.start_date_active)
409         THEN
410             l_index := l_index + 1;
411             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_START_DATE_ACTIVE;
412         END IF;
413 
414         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.substitution_attribute,p_old_PRICE_LIST_LINE_rec.substitution_attribute)
415         THEN
416             l_index := l_index + 1;
417             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_SUBSTITUTION_ATTRIBUTE;
418         END IF;
419 
420         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.substitution_context,p_old_PRICE_LIST_LINE_rec.substitution_context)
421         THEN
422             l_index := l_index + 1;
423             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_SUBSTITUTION_CONTEXT;
424         END IF;
425 
426         IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.substitution_value,p_old_PRICE_LIST_LINE_rec.substitution_value)
427         THEN
428             l_index := l_index + 1;
429             l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_SUBSTITUTION_VALUE;
430         END IF;
431 
432 	IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.customer_item_id, p_old_PRICE_LIST_LINE_rec.customer_item_id)
433 	THEN
434 	    l_index := l_index + 1;
435 	    l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_CUSTOMER_ITEM_ID;
436 	END IF;
437 
438     ELSIF p_attr_id = G_ACCRUAL_QTY THEN
439         l_index := l_index + 1;
440         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ACCRUAL_QTY;
441     ELSIF p_attr_id = G_ACCRUAL_UOM THEN
442         l_index := l_index + 1;
443         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ACCRUAL_UOM;
444     ELSIF p_attr_id = G_ARITHMETIC_OPERATOR THEN
445         l_index := l_index + 1;
446         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ARITHMETIC_OPERATOR;
447     ELSIF p_attr_id = G_ATTRIBUTE1 THEN
448         l_index := l_index + 1;
449         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE1;
450     ELSIF p_attr_id = G_ATTRIBUTE10 THEN
451         l_index := l_index + 1;
452         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE10;
453     ELSIF p_attr_id = G_ATTRIBUTE11 THEN
454         l_index := l_index + 1;
455         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE11;
456     ELSIF p_attr_id = G_ATTRIBUTE12 THEN
457         l_index := l_index + 1;
458         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE12;
459     ELSIF p_attr_id = G_ATTRIBUTE13 THEN
460         l_index := l_index + 1;
461         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE13;
462     ELSIF p_attr_id = G_ATTRIBUTE14 THEN
463         l_index := l_index + 1;
464         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE14;
465     ELSIF p_attr_id = G_ATTRIBUTE15 THEN
466         l_index := l_index + 1;
467         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE15;
468     ELSIF p_attr_id = G_ATTRIBUTE2 THEN
469         l_index := l_index + 1;
470         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE2;
471     ELSIF p_attr_id = G_ATTRIBUTE3 THEN
472         l_index := l_index + 1;
473         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE3;
474     ELSIF p_attr_id = G_ATTRIBUTE4 THEN
475         l_index := l_index + 1;
476         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE4;
477     ELSIF p_attr_id = G_ATTRIBUTE5 THEN
478         l_index := l_index + 1;
479         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE5;
480     ELSIF p_attr_id = G_ATTRIBUTE6 THEN
481         l_index := l_index + 1;
482         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE6;
483     ELSIF p_attr_id = G_ATTRIBUTE7 THEN
484         l_index := l_index + 1;
485         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE7;
486     ELSIF p_attr_id = G_ATTRIBUTE8 THEN
487         l_index := l_index + 1;
488         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE8;
489     ELSIF p_attr_id = G_ATTRIBUTE9 THEN
490         l_index := l_index + 1;
491         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ATTRIBUTE9;
492     ELSIF p_attr_id = G_AUTOMATIC THEN
493         l_index := l_index + 1;
494         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_AUTOMATIC;
495     ELSIF p_attr_id = G_BASE_QTY THEN
496         l_index := l_index + 1;
497         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_BASE_QTY;
498     ELSIF p_attr_id = G_BASE_UOM THEN
499         l_index := l_index + 1;
500         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_BASE_UOM;
501     ELSIF p_attr_id = G_COMMENTS THEN
502         l_index := l_index + 1;
503         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_COMMENTS;
504     ELSIF p_attr_id = G_CONTEXT THEN
505         l_index := l_index + 1;
506         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_CONTEXT;
507     ELSIF p_attr_id = G_CREATED_BY THEN
508         l_index := l_index + 1;
509         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_CREATED_BY;
510     ELSIF p_attr_id = G_CREATION_DATE THEN
511         l_index := l_index + 1;
512         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_CREATION_DATE;
513     ELSIF p_attr_id = G_EFFECTIVE_PERIOD_UOM THEN
514         l_index := l_index + 1;
515         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_EFFECTIVE_PERIOD_UOM;
516     ELSIF p_attr_id = G_END_DATE_ACTIVE THEN
517         l_index := l_index + 1;
518         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_END_DATE_ACTIVE;
519     ELSIF p_attr_id = G_ESTIM_ACCRUAL_RATE THEN
520         l_index := l_index + 1;
521         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ESTIM_ACCRUAL_RATE;
522     ELSIF p_attr_id = G_GENERATE_USING_FORMULA THEN
523         l_index := l_index + 1;
524         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_GENERATE_USING_FORMULA;
525     ELSIF p_attr_id = G_INVENTORY_ITEM THEN
526         l_index := l_index + 1;
527         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_INVENTORY_ITEM;
528     ELSIF p_attr_id = G_LAST_UPDATED_BY THEN
529         l_index := l_index + 1;
530         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_LAST_UPDATED_BY;
531     ELSIF p_attr_id = G_LAST_UPDATE_DATE THEN
532         l_index := l_index + 1;
533         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_LAST_UPDATE_DATE;
534     ELSIF p_attr_id = G_LAST_UPDATE_LOGIN THEN
535         l_index := l_index + 1;
536         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_LAST_UPDATE_LOGIN;
537     ELSIF p_attr_id = G_LIST_HEADER THEN
538         l_index := l_index + 1;
539         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_LIST_HEADER;
540     ELSIF p_attr_id = G_LIST_LINE THEN
541         l_index := l_index + 1;
542         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_LIST_LINE;
543     ELSIF p_attr_id = G_LIST_LINE_TYPE THEN
544         l_index := l_index + 1;
545         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_LIST_LINE_TYPE;
546     ELSIF p_attr_id = G_LIST_PRICE THEN
547         l_index := l_index + 1;
548         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_LIST_PRICE;
549     ELSIF p_attr_id = G_FROM_RLTD_MODIFIER THEN
550         l_index := l_index + 1;
551         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_FROM_RLTD_MODIFIER;
552     ELSIF p_attr_id = G_RLTD_MODIFIER_GROUP_NO THEN
553         l_index := l_index + 1;
554         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_RLTD_MODIFIER_GROUP_NO;
555     ELSIF p_attr_id = G_PRODUCT_PRECEDENCE THEN
556         l_index := l_index + 1;
557         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_PRODUCT_PRECEDENCE;
558     ELSIF p_attr_id = G_MODIFIER_LEVEL THEN
559         l_index := l_index + 1;
560         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_MODIFIER_LEVEL;
561     ELSIF p_attr_id = G_NUMBER_EFFECTIVE_PERIODS THEN
562         l_index := l_index + 1;
563         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_NUMBER_EFFECTIVE_PERIODS;
564     ELSIF p_attr_id = G_OPERAND THEN
565         l_index := l_index + 1;
566         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_OPERAND;
567     ELSIF p_attr_id = G_ORGANIZATION THEN
568         l_index := l_index + 1;
569         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_ORGANIZATION;
570     ELSIF p_attr_id = G_OVERRIDE THEN
571         l_index := l_index + 1;
572         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_OVERRIDE;
573     ELSIF p_attr_id = G_PERCENT_PRICE THEN
574         l_index := l_index + 1;
575         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_PERCENT_PRICE;
576     ELSIF p_attr_id = G_PRICE_BREAK_TYPE THEN
577         l_index := l_index + 1;
578         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_PRICE_BREAK_TYPE;
579     ELSIF p_attr_id = G_PRICE_BY_FORMULA THEN
580         l_index := l_index + 1;
581         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_PRICE_BY_FORMULA;
582     ELSIF p_attr_id = G_PRIMARY_UOM THEN
583         l_index := l_index + 1;
584         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_PRIMARY_UOM;
585     ELSIF p_attr_id = G_PRINT_ON_INVOICE THEN
586         l_index := l_index + 1;
587         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_PRINT_ON_INVOICE;
588     ELSIF p_attr_id = G_PROGRAM_APPLICATION THEN
589         l_index := l_index + 1;
590         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_PROGRAM_APPLICATION;
591     ELSIF p_attr_id = G_PROGRAM THEN
592         l_index := l_index + 1;
593         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_PROGRAM;
594     ELSIF p_attr_id = G_PROGRAM_UPDATE_DATE THEN
595         l_index := l_index + 1;
596         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_PROGRAM_UPDATE_DATE;
597     ELSIF p_attr_id = G_REBATE_TRANSACTION_TYPE THEN
598         l_index := l_index + 1;
599         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_REBATE_TRANSACTION_TYPE;
600     -- block pricing
601     ELSIF p_attr_id = G_RECURRING_VALUE THEN
602         l_index := l_index + 1;
603         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_RECURRING_VALUE;
604     ELSIF p_attr_id = G_RELATED_ITEM THEN
605         l_index := l_index + 1;
606         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_RELATED_ITEM;
607     ELSIF p_attr_id = G_RELATIONSHIP_TYPE THEN
608         l_index := l_index + 1;
609         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_RELATIONSHIP_TYPE;
610     ELSIF p_attr_id = G_REPRICE THEN
611         l_index := l_index + 1;
612         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_REPRICE;
613     ELSIF p_attr_id = G_REQUEST THEN
614         l_index := l_index + 1;
615         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_REQUEST;
616     ELSIF p_attr_id = G_REVISION THEN
617         l_index := l_index + 1;
618         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_REVISION;
619     ELSIF p_attr_id = G_REVISION_DATE THEN
620         l_index := l_index + 1;
621         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_REVISION_DATE;
622     ELSIF p_attr_id = G_REVISION_REASON THEN
623         l_index := l_index + 1;
624         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_REVISION_REASON;
625     ELSIF p_attr_id = G_START_DATE_ACTIVE THEN
626         l_index := l_index + 1;
627         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_START_DATE_ACTIVE;
628     ELSIF p_attr_id = G_SUBSTITUTION_ATTRIBUTE THEN
629         l_index := l_index + 1;
630         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_SUBSTITUTION_ATTRIBUTE;
631     ELSIF p_attr_id = G_SUBSTITUTION_CONTEXT THEN
632         l_index := l_index + 1;
633         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_SUBSTITUTION_CONTEXT;
634     ELSIF p_attr_id = G_SUBSTITUTION_VALUE THEN
635         l_index := l_index + 1;
636         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_SUBSTITUTION_VALUE;
637     ELSIF p_attr_id = G_CUSTOMER_ITEM_ID THEN
638         l_index := l_index + 1;
639         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_CUSTOMER_ITEM_ID;
640     ELSIF p_attr_id = G_BREAK_UOM_CODE THEN
641         l_index := l_index + 1;
642         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_BREAK_UOM_CODE;
643     ELSIF p_attr_id = G_BREAK_UOM_CONTEXT THEN
644         l_index := l_index + 1;
645         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_BREAK_UOM_CONTEXT;
646     ELSIF p_attr_id = G_BREAK_UOM_ATTRIBUTE THEN
647         l_index := l_index + 1;
648         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_BREAK_UOM_ATTRIBUTE;
649     ELSIF p_attr_id = G_CONTINUOUS_PRICE_BREAK_FLAG THEN
650         l_index := l_index + 1;
651         l_src_attr_tbl(l_index) := QP_PRICE_LIST_LINE_UTIL.G_CONTINUOUS_PRICE_BREAK_FLAG;
652     END IF;
653 
654 END Clear_Dependent_Attr;
655 
656 --  Procedure Apply_Attribute_Changes
657 
658 PROCEDURE Apply_Attribute_Changes
659 (   p_PRICE_LIST_LINE_rec           IN  QP_Price_List_PUB.Price_List_Line_Rec_Type
660 ,   p_old_PRICE_LIST_LINE_rec       IN  QP_Price_List_PUB.Price_List_Line_Rec_Type :=
661                                         QP_Price_List_PUB.G_MISS_PRICE_LIST_LINE_REC
662 ,   x_PRICE_LIST_LINE_rec           OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Line_Rec_Type
663 )
664 IS
665 l_return_status 	varchar2(30);
666 BEGIN
667 
668     --  Load out record
669 
670     x_PRICE_LIST_LINE_rec := p_PRICE_LIST_LINE_rec;
671 
672     -- Set reprice_flag to 'Y' every time a price list line is added/modified
673     x_PRICE_LIST_LINE_rec.reprice_flag  := 'Y';
674 
675     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.accrual_qty,p_old_PRICE_LIST_LINE_rec.accrual_qty)
676     THEN
677         NULL;
678     END IF;
679 
680     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.accrual_uom_code,p_old_PRICE_LIST_LINE_rec.accrual_uom_code)
681     THEN
682         NULL;
683     END IF;
684 
685     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.arithmetic_operator,p_old_PRICE_LIST_LINE_rec.arithmetic_operator)
686     THEN
687         NULL;
688     END IF;
689 
690 
691     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute1,p_old_PRICE_LIST_LINE_rec.attribute1)
692     THEN
693         NULL;
694     END IF;
695 
696     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute10,p_old_PRICE_LIST_LINE_rec.attribute10)
697     THEN
698         NULL;
699     END IF;
700 
701     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute11,p_old_PRICE_LIST_LINE_rec.attribute11)
702     THEN
703         NULL;
704     END IF;
705 
706     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute12,p_old_PRICE_LIST_LINE_rec.attribute12)
707     THEN
708         NULL;
709     END IF;
710 
711     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute13,p_old_PRICE_LIST_LINE_rec.attribute13)
712     THEN
713         NULL;
714     END IF;
715 
716     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute14,p_old_PRICE_LIST_LINE_rec.attribute14)
717     THEN
718         NULL;
719     END IF;
720 
721     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute15,p_old_PRICE_LIST_LINE_rec.attribute15)
722     THEN
723         NULL;
724     END IF;
725 
726     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute2,p_old_PRICE_LIST_LINE_rec.attribute2)
727     THEN
728         NULL;
729     END IF;
730 
731     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute3,p_old_PRICE_LIST_LINE_rec.attribute3)
732     THEN
733         NULL;
734     END IF;
735 
736     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute4,p_old_PRICE_LIST_LINE_rec.attribute4)
737     THEN
738         NULL;
739     END IF;
740 
741     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute5,p_old_PRICE_LIST_LINE_rec.attribute5)
742     THEN
743         NULL;
744     END IF;
745 
746     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute6,p_old_PRICE_LIST_LINE_rec.attribute6)
747     THEN
748         NULL;
749     END IF;
750 
751     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute7,p_old_PRICE_LIST_LINE_rec.attribute7)
752     THEN
753         NULL;
754     END IF;
755 
756     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute8,p_old_PRICE_LIST_LINE_rec.attribute8)
757     THEN
758         NULL;
759     END IF;
760 
761     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute9,p_old_PRICE_LIST_LINE_rec.attribute9)
762     THEN
763         NULL;
764     END IF;
765 
766     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.automatic_flag,p_old_PRICE_LIST_LINE_rec.automatic_flag)
767     THEN
768         NULL;
769     END IF;
770 
771     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.base_qty,p_old_PRICE_LIST_LINE_rec.base_qty)
772     THEN
773         NULL;
774     END IF;
775 
776     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.base_uom_code,p_old_PRICE_LIST_LINE_rec.base_uom_code)
777     THEN
778         NULL;
779     END IF;
780 
781     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.comments,p_old_PRICE_LIST_LINE_rec.comments)
782     THEN
783         NULL;
784     END IF;
785 
786     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.context,p_old_PRICE_LIST_LINE_rec.context)
787     THEN
788         NULL;
789     END IF;
790 
791     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.created_by,p_old_PRICE_LIST_LINE_rec.created_by)
792     THEN
793         NULL;
794     END IF;
795 
796     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.creation_date,p_old_PRICE_LIST_LINE_rec.creation_date)
797     THEN
798         NULL;
799     END IF;
800 
801     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.effective_period_uom,p_old_PRICE_LIST_LINE_rec.effective_period_uom)
802     THEN
803         NULL;
804     END IF;
805 
806     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.end_date_active,p_old_PRICE_LIST_LINE_rec.end_date_active)
807     THEN
808         NULL;
809     END IF;
810 
811     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.estim_accrual_rate,p_old_PRICE_LIST_LINE_rec.estim_accrual_rate)
812     THEN
813         NULL;
814     END IF;
815 
816     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.generate_using_formula_id,p_old_PRICE_LIST_LINE_rec.generate_using_formula_id)
817     THEN
818         NULL;
819     END IF;
820 
821     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.inventory_item_id,p_old_PRICE_LIST_LINE_rec.inventory_item_id)
822     THEN
823         NULL;
824     END IF;
825 
826     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.last_updated_by,p_old_PRICE_LIST_LINE_rec.last_updated_by)
827     THEN
828         NULL;
829     END IF;
830 
831     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.last_update_date,p_old_PRICE_LIST_LINE_rec.last_update_date)
832     THEN
833         NULL;
834     END IF;
835 
836     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.last_update_login,p_old_PRICE_LIST_LINE_rec.last_update_login)
837     THEN
838         NULL;
839     END IF;
840 
841     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.list_header_id,p_old_PRICE_LIST_LINE_rec.list_header_id)
842     THEN
843         NULL;
844     END IF;
845 
846     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.list_line_id,p_old_PRICE_LIST_LINE_rec.list_line_id)
847     THEN
848 
849       /* Commented out delayed request by dhgupta for bug 2018275. This delayed request is now being called from
850          procedure insert_row  */
851 null;
852 /*
853 	 qp_delayed_requests_PVT.log_request(
854 		 p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
855    		 p_entity_id  => p_PRICE_LIST_LINE_rec.list_line_id,
856 		 p_requesting_entity_code=> QP_GLOBALS.G_ENTITY_ALL,
857 		 p_requesting_entity_id => p_PRICE_LIST_LINE_rec.list_line_id,
858 		 p_request_type =>QP_GLOBALS.G_UPDATE_LINE_QUAL_IND,
859 		 x_return_status => l_return_status);
860 */
861     END IF;
862 
863     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.list_line_type_code,p_old_PRICE_LIST_LINE_rec.list_line_type_code)
864     THEN
865         NULL;
866     END IF;
867 
868     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.list_price,p_old_PRICE_LIST_LINE_rec.list_price)
869     THEN
870         NULL;
871     END IF;
872 
873     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.from_rltd_modifier_id,p_old_PRICE_LIST_LINE_rec.from_rltd_modifier_id)
874     THEN
875         NULL;
876     END IF;
877 
878     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.rltd_modifier_group_no,p_old_PRICE_LIST_LINE_rec.rltd_modifier_group_no)
879     THEN
880         NULL;
881     END IF;
882 
883     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.product_precedence,p_old_PRICE_LIST_LINE_rec.product_precedence)
884     THEN
885         NULL;
886     END IF;
887 
888 
889     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.modifier_level_code,p_old_PRICE_LIST_LINE_rec.modifier_level_code)
890     THEN
891         NULL;
892     END IF;
893 
894     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.number_effective_periods,p_old_PRICE_LIST_LINE_rec.number_effective_periods)
895     THEN
896         NULL;
897     END IF;
898 
899     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.operand,p_old_PRICE_LIST_LINE_rec.operand)
900     THEN
901         NULL;
902     END IF;
903 
904     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.organization_id,p_old_PRICE_LIST_LINE_rec.organization_id)
905     THEN
906         NULL;
907     END IF;
908 
909     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.override_flag,p_old_PRICE_LIST_LINE_rec.override_flag)
910     THEN
911         NULL;
912     END IF;
913 
914     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.percent_price,p_old_PRICE_LIST_LINE_rec.percent_price)
915     THEN
916         NULL;
917     END IF;
918 
919 --IF not p_PRICE_LIST_LINE_rec.list_line_type_code = 'PHB'
920 --then null;
921 --else
922 
923 --fnd_message.debug('gm before new code');
924 oe_debug_pub.add('gm before new code');
925 
926     IF NOT (QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.price_break_type_code,p_old_PRICE_LIST_LINE_rec.price_break_type_code)
927 	and QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.arithmetic_operator,p_old_PRICE_LIST_LINE_rec.arithmetic_operator))
928     and (p_PRICE_LIST_LINE_rec.list_line_type_code = 'PBH')
929     THEN
930 	   qp_delayed_requests_PVT.log_request(
931 		 p_entity_code => QP_GLOBALS.G_ENTITY_PRICE_LIST_LINE,
932    		 p_entity_id  => p_PRICE_LIST_LINE_rec.list_line_id,
933 		 p_requesting_entity_code=> QP_GLOBALS.G_ENTITY_Price_List_Line,
934 		 p_requesting_entity_id => p_PRICE_LIST_LINE_rec.list_line_id,
935 		 p_request_type =>QP_GLOBALS.G_UPDATE_CHILD_BREAKS,
936 		 x_return_status => l_return_status);
937     END IF;
938  --   END IF;
939 oe_debug_pub.add('gm after new code');
940 
941 
942 --fnd_message.debug('gm after new code');
943 
944 
945     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.price_by_formula_id,p_old_PRICE_LIST_LINE_rec.price_by_formula_id)
946     THEN
947         NULL;
948     END IF;
949 
950     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.primary_uom_flag,p_old_PRICE_LIST_LINE_rec.primary_uom_flag)
951     THEN
952         NULL;
953     END IF;
954 
955     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.print_on_invoice_flag,p_old_PRICE_LIST_LINE_rec.print_on_invoice_flag)
956     THEN
957         NULL;
958     END IF;
959 
960     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.program_application_id,p_old_PRICE_LIST_LINE_rec.program_application_id)
961     THEN
962         NULL;
963     END IF;
964 
965     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.program_id,p_old_PRICE_LIST_LINE_rec.program_id)
966     THEN
967         NULL;
968     END IF;
969 
970     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.program_update_date,p_old_PRICE_LIST_LINE_rec.program_update_date)
971     THEN
972         NULL;
973     END IF;
974 
975     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.rebate_trxn_type_code,p_old_PRICE_LIST_LINE_rec.rebate_trxn_type_code)
976     THEN
977         NULL;
978     END IF;
979 
980     -- block pricing
981     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.recurring_value, p_old_PRICE_LIST_LINE_rec.recurring_value)
982     THEN
983       NULL;
984     END IF;
985 
986     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.related_item_id,p_old_PRICE_LIST_LINE_rec.related_item_id)
987     THEN
988         NULL;
989     END IF;
990 
991     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.relationship_type_id,p_old_PRICE_LIST_LINE_rec.relationship_type_id)
992     THEN
993         NULL;
994     END IF;
995 
996     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.reprice_flag,p_old_PRICE_LIST_LINE_rec.reprice_flag)
997     THEN
998         NULL;
999     END IF;
1000 
1001     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.request_id,p_old_PRICE_LIST_LINE_rec.request_id)
1002     THEN
1003         NULL;
1004     END IF;
1005 
1006     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.revision,p_old_PRICE_LIST_LINE_rec.revision)
1007     THEN
1008         NULL;
1009     END IF;
1010 
1011     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.revision_date,p_old_PRICE_LIST_LINE_rec.revision_date)
1012     THEN
1013         NULL;
1014     END IF;
1015 
1016     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.revision_reason_code,p_old_PRICE_LIST_LINE_rec.revision_reason_code)
1017     THEN
1018         NULL;
1019     END IF;
1020 
1021     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.start_date_active,p_old_PRICE_LIST_LINE_rec.start_date_active)
1022     THEN
1023         NULL;
1024     END IF;
1025 
1026     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.substitution_attribute,p_old_PRICE_LIST_LINE_rec.substitution_attribute)
1027     THEN
1028         NULL;
1029     END IF;
1030 
1031     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.substitution_context,p_old_PRICE_LIST_LINE_rec.substitution_context)
1032     THEN
1033         NULL;
1034     END IF;
1035 
1036     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.substitution_value,p_old_PRICE_LIST_LINE_rec.substitution_value)
1037     THEN
1038         NULL;
1039     END IF;
1040 
1041     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.customer_item_id, p_old_PRICE_LIST_LINE_rec.customer_item_id)
1042     THEN
1043         NULL;
1044     END IF;
1045 
1046     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.break_uom_code,p_old_PRICE_LIST_LINE_rec.break_uom_code)
1047     THEN
1048         NULL;
1049     END IF;
1050 
1051     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.break_uom_context,p_old_PRICE_LIST_LINE_rec.break_uom_context)
1052     THEN
1053         NULL;
1054     END IF;
1055 
1056     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.break_uom_attribute,p_old_PRICE_LIST_LINE_rec.break_uom_attribute)
1057     THEN
1058         NULL;
1059     END IF;
1060 
1061     IF NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.continuous_price_break_flag,p_old_PRICE_LIST_LINE_rec.continuous_price_break_flag)
1062     THEN
1063         NULL;
1064     END IF;
1065 
1066 END Apply_Attribute_Changes;
1067 
1068 --  Function Complete_Record
1069 
1070 FUNCTION Complete_Record
1071 (   p_PRICE_LIST_LINE_rec           IN  QP_Price_List_PUB.Price_List_Line_Rec_Type
1072 ,   p_old_PRICE_LIST_LINE_rec       IN  QP_Price_List_PUB.Price_List_Line_Rec_Type
1073 ) RETURN QP_Price_List_PUB.Price_List_Line_Rec_Type
1074 IS
1075 l_PRICE_LIST_LINE_rec         QP_Price_List_PUB.Price_List_Line_Rec_Type := p_PRICE_LIST_LINE_rec;
1076 BEGIN
1077 
1078     IF l_PRICE_LIST_LINE_rec.accrual_qty = FND_API.G_MISS_NUM THEN
1079         l_PRICE_LIST_LINE_rec.accrual_qty := p_old_PRICE_LIST_LINE_rec.accrual_qty;
1080     END IF;
1081 
1082 
1083     IF l_PRICE_LIST_LINE_rec.accrual_uom_code = FND_API.G_MISS_CHAR THEN
1084         l_PRICE_LIST_LINE_rec.accrual_uom_code := p_old_PRICE_LIST_LINE_rec.accrual_uom_code;
1085     END IF;
1086 
1087     IF l_PRICE_LIST_LINE_rec.arithmetic_operator = FND_API.G_MISS_CHAR THEN
1088         l_PRICE_LIST_LINE_rec.arithmetic_operator := p_old_PRICE_LIST_LINE_rec.arithmetic_operator;
1089     END IF;
1090 
1091     IF l_PRICE_LIST_LINE_rec.attribute1 = FND_API.G_MISS_CHAR THEN
1092         l_PRICE_LIST_LINE_rec.attribute1 := p_old_PRICE_LIST_LINE_rec.attribute1;
1093     END IF;
1094 
1095     IF l_PRICE_LIST_LINE_rec.attribute10 = FND_API.G_MISS_CHAR THEN
1096         l_PRICE_LIST_LINE_rec.attribute10 := p_old_PRICE_LIST_LINE_rec.attribute10;
1097     END IF;
1098 
1099     IF l_PRICE_LIST_LINE_rec.attribute11 = FND_API.G_MISS_CHAR THEN
1100         l_PRICE_LIST_LINE_rec.attribute11 := p_old_PRICE_LIST_LINE_rec.attribute11;
1101     END IF;
1102 
1103     IF l_PRICE_LIST_LINE_rec.attribute12 = FND_API.G_MISS_CHAR THEN
1104         l_PRICE_LIST_LINE_rec.attribute12 := p_old_PRICE_LIST_LINE_rec.attribute12;
1105     END IF;
1106 
1107     IF l_PRICE_LIST_LINE_rec.attribute13 = FND_API.G_MISS_CHAR THEN
1108         l_PRICE_LIST_LINE_rec.attribute13 := p_old_PRICE_LIST_LINE_rec.attribute13;
1109     END IF;
1110 
1111     IF l_PRICE_LIST_LINE_rec.attribute14 = FND_API.G_MISS_CHAR THEN
1112         l_PRICE_LIST_LINE_rec.attribute14 := p_old_PRICE_LIST_LINE_rec.attribute14;
1113     END IF;
1114 
1115     IF l_PRICE_LIST_LINE_rec.attribute15 = FND_API.G_MISS_CHAR THEN
1116         l_PRICE_LIST_LINE_rec.attribute15 := p_old_PRICE_LIST_LINE_rec.attribute15;
1117     END IF;
1118 
1119     IF l_PRICE_LIST_LINE_rec.attribute2 = FND_API.G_MISS_CHAR THEN
1120         l_PRICE_LIST_LINE_rec.attribute2 := p_old_PRICE_LIST_LINE_rec.attribute2;
1121     END IF;
1122 
1123     IF l_PRICE_LIST_LINE_rec.attribute3 = FND_API.G_MISS_CHAR THEN
1124         l_PRICE_LIST_LINE_rec.attribute3 := p_old_PRICE_LIST_LINE_rec.attribute3;
1125     END IF;
1126 
1127     IF l_PRICE_LIST_LINE_rec.attribute4 = FND_API.G_MISS_CHAR THEN
1128         l_PRICE_LIST_LINE_rec.attribute4 := p_old_PRICE_LIST_LINE_rec.attribute4;
1129     END IF;
1130 
1131     IF l_PRICE_LIST_LINE_rec.attribute5 = FND_API.G_MISS_CHAR THEN
1132         l_PRICE_LIST_LINE_rec.attribute5 := p_old_PRICE_LIST_LINE_rec.attribute5;
1133     END IF;
1134 
1135     IF l_PRICE_LIST_LINE_rec.attribute6 = FND_API.G_MISS_CHAR THEN
1136         l_PRICE_LIST_LINE_rec.attribute6 := p_old_PRICE_LIST_LINE_rec.attribute6;
1137     END IF;
1138 
1139     IF l_PRICE_LIST_LINE_rec.attribute7 = FND_API.G_MISS_CHAR THEN
1140         l_PRICE_LIST_LINE_rec.attribute7 := p_old_PRICE_LIST_LINE_rec.attribute7;
1141     END IF;
1142 
1143     IF l_PRICE_LIST_LINE_rec.attribute8 = FND_API.G_MISS_CHAR THEN
1144         l_PRICE_LIST_LINE_rec.attribute8 := p_old_PRICE_LIST_LINE_rec.attribute8;
1145     END IF;
1146 
1147     IF l_PRICE_LIST_LINE_rec.attribute9 = FND_API.G_MISS_CHAR THEN
1148         l_PRICE_LIST_LINE_rec.attribute9 := p_old_PRICE_LIST_LINE_rec.attribute9;
1149     END IF;
1150 
1151     IF l_PRICE_LIST_LINE_rec.automatic_flag = FND_API.G_MISS_CHAR THEN
1152         l_PRICE_LIST_LINE_rec.automatic_flag := p_old_PRICE_LIST_LINE_rec.automatic_flag;
1153     END IF;
1154 
1155     IF l_PRICE_LIST_LINE_rec.base_qty = FND_API.G_MISS_NUM THEN
1156         l_PRICE_LIST_LINE_rec.base_qty := p_old_PRICE_LIST_LINE_rec.base_qty;
1157     END IF;
1158 
1159     IF l_PRICE_LIST_LINE_rec.base_uom_code = FND_API.G_MISS_CHAR THEN
1160         l_PRICE_LIST_LINE_rec.base_uom_code := p_old_PRICE_LIST_LINE_rec.base_uom_code;
1161     END IF;
1162 
1163     IF l_PRICE_LIST_LINE_rec.comments = FND_API.G_MISS_CHAR THEN
1164         l_PRICE_LIST_LINE_rec.comments := p_old_PRICE_LIST_LINE_rec.comments;
1165     END IF;
1166 
1167     IF l_PRICE_LIST_LINE_rec.context = FND_API.G_MISS_CHAR THEN
1168         l_PRICE_LIST_LINE_rec.context := p_old_PRICE_LIST_LINE_rec.context;
1169     END IF;
1170 
1171     IF l_PRICE_LIST_LINE_rec.created_by = FND_API.G_MISS_NUM THEN
1172         l_PRICE_LIST_LINE_rec.created_by := p_old_PRICE_LIST_LINE_rec.created_by;
1173     END IF;
1174 
1175     IF l_PRICE_LIST_LINE_rec.creation_date = FND_API.G_MISS_DATE THEN
1176         l_PRICE_LIST_LINE_rec.creation_date := p_old_PRICE_LIST_LINE_rec.creation_date;
1177     END IF;
1178 
1179     IF l_PRICE_LIST_LINE_rec.effective_period_uom = FND_API.G_MISS_CHAR THEN
1180         l_PRICE_LIST_LINE_rec.effective_period_uom := p_old_PRICE_LIST_LINE_rec.effective_period_uom;
1181     END IF;
1182 
1183     IF l_PRICE_LIST_LINE_rec.end_date_active = FND_API.G_MISS_DATE THEN
1184         l_PRICE_LIST_LINE_rec.end_date_active := p_old_PRICE_LIST_LINE_rec.end_date_active;
1185     END IF;
1186 
1187     IF l_PRICE_LIST_LINE_rec.estim_accrual_rate = FND_API.G_MISS_NUM THEN
1188         l_PRICE_LIST_LINE_rec.estim_accrual_rate := p_old_PRICE_LIST_LINE_rec.estim_accrual_rate;
1189     END IF;
1190 
1191     IF l_PRICE_LIST_LINE_rec.generate_using_formula_id = FND_API.G_MISS_NUM THEN
1192         l_PRICE_LIST_LINE_rec.generate_using_formula_id := p_old_PRICE_LIST_LINE_rec.generate_using_formula_id;
1193     END IF;
1194 
1195 
1196     IF l_PRICE_LIST_LINE_rec.inventory_item_id = FND_API.G_MISS_NUM THEN
1197         l_PRICE_LIST_LINE_rec.inventory_item_id := p_old_PRICE_LIST_LINE_rec.inventory_item_id;
1198     END IF;
1199 
1200     IF l_PRICE_LIST_LINE_rec.last_updated_by = FND_API.G_MISS_NUM THEN
1201         l_PRICE_LIST_LINE_rec.last_updated_by := p_old_PRICE_LIST_LINE_rec.last_updated_by;
1202     END IF;
1203 
1204     IF l_PRICE_LIST_LINE_rec.last_update_date = FND_API.G_MISS_DATE THEN
1205         l_PRICE_LIST_LINE_rec.last_update_date := p_old_PRICE_LIST_LINE_rec.last_update_date;
1206     END IF;
1207 
1208     IF l_PRICE_LIST_LINE_rec.last_update_login = FND_API.G_MISS_NUM THEN
1209         l_PRICE_LIST_LINE_rec.last_update_login := p_old_PRICE_LIST_LINE_rec.last_update_login;
1210     END IF;
1211 
1212     IF l_PRICE_LIST_LINE_rec.list_header_id = FND_API.G_MISS_NUM THEN
1213         l_PRICE_LIST_LINE_rec.list_header_id := p_old_PRICE_LIST_LINE_rec.list_header_id;
1214     END IF;
1215 
1216     IF l_PRICE_LIST_LINE_rec.list_line_id = FND_API.G_MISS_NUM THEN
1217         l_PRICE_LIST_LINE_rec.list_line_id := p_old_PRICE_LIST_LINE_rec.list_line_id;
1218     END IF;
1219 
1220     IF l_PRICE_LIST_LINE_rec.list_line_no = FND_API.G_MISS_CHAR THEN -- bug 4751658, 4199398
1221         l_PRICE_LIST_LINE_rec.list_line_no := p_old_PRICE_LIST_LINE_rec.list_line_no;
1222     END IF;
1223 
1224     IF l_PRICE_LIST_LINE_rec.list_line_type_code = FND_API.G_MISS_CHAR THEN
1225         l_PRICE_LIST_LINE_rec.list_line_type_code := p_old_PRICE_LIST_LINE_rec.list_line_type_code;
1226     END IF;
1227 
1228     IF l_PRICE_LIST_LINE_rec.list_price = FND_API.G_MISS_NUM THEN
1229         l_PRICE_LIST_LINE_rec.list_price := p_old_PRICE_LIST_LINE_rec.list_price;
1230     END IF;
1231 
1232     IF l_PRICE_LIST_LINE_rec.from_rltd_modifier_id = FND_API.G_MISS_NUM THEN
1233         l_PRICE_LIST_LINE_rec.from_rltd_modifier_id := p_old_PRICE_LIST_LINE_rec.from_rltd_modifier_id;
1234     END IF;
1235 
1236     IF l_PRICE_LIST_LINE_rec.rltd_modifier_group_no = FND_API.G_MISS_NUM THEN
1237         l_PRICE_LIST_LINE_rec.rltd_modifier_group_no := p_old_PRICE_LIST_LINE_rec.rltd_modifier_group_no;
1238     END IF;
1239 
1240     IF l_PRICE_LIST_LINE_rec.product_precedence = FND_API.G_MISS_NUM THEN
1241         l_PRICE_LIST_LINE_rec.product_precedence := p_old_PRICE_LIST_LINE_rec.product_precedence;
1242     END IF;
1243 
1244     IF l_PRICE_LIST_LINE_rec.modifier_level_code = FND_API.G_MISS_CHAR THEN
1245         l_PRICE_LIST_LINE_rec.modifier_level_code := p_old_PRICE_LIST_LINE_rec.modifier_level_code;
1246     END IF;
1247 
1248     IF l_PRICE_LIST_LINE_rec.number_effective_periods = FND_API.G_MISS_NUM THEN
1249         l_PRICE_LIST_LINE_rec.number_effective_periods := p_old_PRICE_LIST_LINE_rec.number_effective_periods;
1250     END IF;
1251 
1252     IF l_PRICE_LIST_LINE_rec.operand = FND_API.G_MISS_NUM THEN
1253         l_PRICE_LIST_LINE_rec.operand := p_old_PRICE_LIST_LINE_rec.operand;
1254     END IF;
1255 
1256     IF l_PRICE_LIST_LINE_rec.organization_id = FND_API.G_MISS_NUM THEN
1257         l_PRICE_LIST_LINE_rec.organization_id := p_old_PRICE_LIST_LINE_rec.organization_id;
1258     END IF;
1259 
1260     IF l_PRICE_LIST_LINE_rec.override_flag = FND_API.G_MISS_CHAR THEN
1261         l_PRICE_LIST_LINE_rec.override_flag := p_old_PRICE_LIST_LINE_rec.override_flag;
1262     END IF;
1263 
1264     IF l_PRICE_LIST_LINE_rec.percent_price = FND_API.G_MISS_NUM THEN
1265         l_PRICE_LIST_LINE_rec.percent_price := p_old_PRICE_LIST_LINE_rec.percent_price;
1266     END IF;
1267 
1268     IF l_PRICE_LIST_LINE_rec.price_break_type_code = FND_API.G_MISS_CHAR THEN
1269         l_PRICE_LIST_LINE_rec.price_break_type_code := p_old_PRICE_LIST_LINE_rec.price_break_type_code;
1270     END IF;
1271 
1272     IF l_PRICE_LIST_LINE_rec.price_by_formula_id = FND_API.G_MISS_NUM THEN
1273         l_PRICE_LIST_LINE_rec.price_by_formula_id := p_old_PRICE_LIST_LINE_rec.price_by_formula_id;
1274     END IF;
1275 
1276     IF l_PRICE_LIST_LINE_rec.primary_uom_flag = FND_API.G_MISS_CHAR THEN
1277         l_PRICE_LIST_LINE_rec.primary_uom_flag := p_old_PRICE_LIST_LINE_rec.primary_uom_flag;
1278     END IF;
1279 
1280     IF l_PRICE_LIST_LINE_rec.print_on_invoice_flag = FND_API.G_MISS_CHAR THEN
1281         l_PRICE_LIST_LINE_rec.print_on_invoice_flag := p_old_PRICE_LIST_LINE_rec.print_on_invoice_flag;
1282     END IF;
1283 
1284     IF l_PRICE_LIST_LINE_rec.program_application_id = FND_API.G_MISS_NUM THEN
1285         l_PRICE_LIST_LINE_rec.program_application_id := p_old_PRICE_LIST_LINE_rec.program_application_id;
1286     END IF;
1287 
1288     IF l_PRICE_LIST_LINE_rec.program_id = FND_API.G_MISS_NUM THEN
1289         l_PRICE_LIST_LINE_rec.program_id := p_old_PRICE_LIST_LINE_rec.program_id;
1290     END IF;
1291 
1292     IF l_PRICE_LIST_LINE_rec.program_update_date = FND_API.G_MISS_DATE THEN
1293         l_PRICE_LIST_LINE_rec.program_update_date := p_old_PRICE_LIST_LINE_rec.program_update_date;
1294     END IF;
1295 
1296     IF l_PRICE_LIST_LINE_rec.rebate_trxn_type_code = FND_API.G_MISS_CHAR THEN
1297         l_PRICE_LIST_LINE_rec.rebate_trxn_type_code := p_old_PRICE_LIST_LINE_rec.rebate_trxn_type_code;
1298     END IF;
1299 
1300     -- block pricing
1301     IF l_PRICE_LIST_LINE_rec.recurring_value = FND_API.G_MISS_NUM THEN
1302         l_PRICE_LIST_LINE_rec.recurring_value := p_old_PRICE_LIST_LINE_rec.recurring_value;
1303     END IF;
1304 
1305     IF l_PRICE_LIST_LINE_rec.related_item_id = FND_API.G_MISS_NUM THEN
1306         l_PRICE_LIST_LINE_rec.related_item_id := p_old_PRICE_LIST_LINE_rec.related_item_id;
1307     END IF;
1308 
1309     IF l_PRICE_LIST_LINE_rec.relationship_type_id = FND_API.G_MISS_NUM THEN
1310         l_PRICE_LIST_LINE_rec.relationship_type_id := p_old_PRICE_LIST_LINE_rec.relationship_type_id;
1311     END IF;
1312 
1313     IF l_PRICE_LIST_LINE_rec.reprice_flag = FND_API.G_MISS_CHAR THEN
1314         l_PRICE_LIST_LINE_rec.reprice_flag := p_old_PRICE_LIST_LINE_rec.reprice_flag;
1315     END IF;
1316 
1317     IF l_PRICE_LIST_LINE_rec.request_id = FND_API.G_MISS_NUM THEN
1318         l_PRICE_LIST_LINE_rec.request_id := p_old_PRICE_LIST_LINE_rec.request_id;
1319     END IF;
1320 
1321     IF l_PRICE_LIST_LINE_rec.revision = FND_API.G_MISS_CHAR THEN
1322         l_PRICE_LIST_LINE_rec.revision := p_old_PRICE_LIST_LINE_rec.revision;
1323     END IF;
1324 
1325     IF l_PRICE_LIST_LINE_rec.revision_date = FND_API.G_MISS_DATE THEN
1326         l_PRICE_LIST_LINE_rec.revision_date := p_old_PRICE_LIST_LINE_rec.revision_date;
1327     END IF;
1328 
1329     IF l_PRICE_LIST_LINE_rec.revision_reason_code = FND_API.G_MISS_CHAR THEN
1330         l_PRICE_LIST_LINE_rec.revision_reason_code := p_old_PRICE_LIST_LINE_rec.revision_reason_code;
1331     END IF;
1332 
1333     IF l_PRICE_LIST_LINE_rec.start_date_active = FND_API.G_MISS_DATE THEN
1334         l_PRICE_LIST_LINE_rec.start_date_active := p_old_PRICE_LIST_LINE_rec.start_date_active;
1335     END IF;
1336 
1337     IF l_PRICE_LIST_LINE_rec.substitution_attribute = FND_API.G_MISS_CHAR THEN
1338         l_PRICE_LIST_LINE_rec.substitution_attribute := p_old_PRICE_LIST_LINE_rec.substitution_attribute;
1339     END IF;
1340 
1341     IF l_PRICE_LIST_LINE_rec.substitution_context = FND_API.G_MISS_CHAR THEN
1342         l_PRICE_LIST_LINE_rec.substitution_context := p_old_PRICE_LIST_LINE_rec.substitution_context;
1343     END IF;
1344 
1345     IF l_PRICE_LIST_LINE_rec.substitution_value = FND_API.G_MISS_CHAR THEN
1346         l_PRICE_LIST_LINE_rec.substitution_value := p_old_PRICE_LIST_LINE_rec.substitution_value;
1347     END IF;
1348 
1349     IF l_PRICE_LIST_LINE_rec.qualification_ind = FND_API.G_MISS_NUM THEN
1350        l_PRICE_LIST_LINE_rec.qualification_ind := p_old_PRICE_LIST_LINE_rec.qualification_ind;
1351     END IF;
1352 
1353     IF l_PRICE_LIST_LINE_rec.break_uom_code = FND_API.G_MISS_CHAR THEN
1354        l_PRICE_LIST_LINE_rec.break_uom_code := p_old_PRICE_LIST_LINE_rec.break_uom_code;
1355     END IF;
1356 
1357     IF l_PRICE_LIST_LINE_rec.break_uom_context = FND_API.G_MISS_CHAR THEN
1358        l_PRICE_LIST_LINE_rec.break_uom_context := p_old_PRICE_LIST_LINE_rec.break_uom_context;
1359     END IF;
1360 
1361     IF l_PRICE_LIST_LINE_rec.break_uom_attribute = FND_API.G_MISS_CHAR THEN
1362        l_PRICE_LIST_LINE_rec.break_uom_attribute := p_old_PRICE_LIST_LINE_rec.break_uom_attribute;
1363     END IF;
1364 
1365     IF l_PRICE_LIST_LINE_rec.continuous_price_break_flag = FND_API.G_MISS_CHAR THEN
1366        l_PRICE_LIST_LINE_rec.continuous_price_break_flag := p_old_PRICE_LIST_LINE_rec.continuous_price_break_flag;
1367     END IF;
1368 
1369     RETURN l_PRICE_LIST_LINE_rec;
1370 
1371 END Complete_Record;
1372 
1373 --  Function Convert_Miss_To_Null
1374 
1375 FUNCTION Convert_Miss_To_Null
1376 (   p_PRICE_LIST_LINE_rec           IN  QP_Price_List_PUB.Price_List_Line_Rec_Type
1377 ) RETURN QP_Price_List_PUB.Price_List_Line_Rec_Type
1378 IS
1379 l_PRICE_LIST_LINE_rec         QP_Price_List_PUB.Price_List_Line_Rec_Type := p_PRICE_LIST_LINE_rec;
1380 BEGIN
1381 
1382     IF l_PRICE_LIST_LINE_rec.accrual_qty = FND_API.G_MISS_NUM THEN
1383         l_PRICE_LIST_LINE_rec.accrual_qty := NULL;
1384     END IF;
1385 
1386     IF l_PRICE_LIST_LINE_rec.accrual_uom_code = FND_API.G_MISS_CHAR THEN
1387         l_PRICE_LIST_LINE_rec.accrual_uom_code := NULL;
1388     END IF;
1389 
1390     IF l_PRICE_LIST_LINE_rec.arithmetic_operator = FND_API.G_MISS_CHAR THEN
1391         l_PRICE_LIST_LINE_rec.arithmetic_operator := NULL;
1392     END IF;
1393 
1394     IF l_PRICE_LIST_LINE_rec.attribute1 = FND_API.G_MISS_CHAR THEN
1395         l_PRICE_LIST_LINE_rec.attribute1 := NULL;
1396     END IF;
1397 
1398     IF l_PRICE_LIST_LINE_rec.attribute10 = FND_API.G_MISS_CHAR THEN
1399         l_PRICE_LIST_LINE_rec.attribute10 := NULL;
1400     END IF;
1401 
1402     IF l_PRICE_LIST_LINE_rec.attribute11 = FND_API.G_MISS_CHAR THEN
1403         l_PRICE_LIST_LINE_rec.attribute11 := NULL;
1404     END IF;
1405 
1406     IF l_PRICE_LIST_LINE_rec.attribute12 = FND_API.G_MISS_CHAR THEN
1407         l_PRICE_LIST_LINE_rec.attribute12 := NULL;
1408     END IF;
1409 
1410     IF l_PRICE_LIST_LINE_rec.attribute13 = FND_API.G_MISS_CHAR THEN
1411         l_PRICE_LIST_LINE_rec.attribute13 := NULL;
1412     END IF;
1413 
1414     IF l_PRICE_LIST_LINE_rec.attribute14 = FND_API.G_MISS_CHAR THEN
1415         l_PRICE_LIST_LINE_rec.attribute14 := NULL;
1416     END IF;
1417 
1418     IF l_PRICE_LIST_LINE_rec.attribute15 = FND_API.G_MISS_CHAR THEN
1419         l_PRICE_LIST_LINE_rec.attribute15 := NULL;
1420     END IF;
1421 
1422     IF l_PRICE_LIST_LINE_rec.attribute2 = FND_API.G_MISS_CHAR THEN
1423         l_PRICE_LIST_LINE_rec.attribute2 := NULL;
1424     END IF;
1425 
1426     IF l_PRICE_LIST_LINE_rec.attribute3 = FND_API.G_MISS_CHAR THEN
1427         l_PRICE_LIST_LINE_rec.attribute3 := NULL;
1428     END IF;
1429 
1430     IF l_PRICE_LIST_LINE_rec.attribute4 = FND_API.G_MISS_CHAR THEN
1431         l_PRICE_LIST_LINE_rec.attribute4 := NULL;
1432     END IF;
1433 
1434     IF l_PRICE_LIST_LINE_rec.attribute5 = FND_API.G_MISS_CHAR THEN
1435         l_PRICE_LIST_LINE_rec.attribute5 := NULL;
1436     END IF;
1437 
1438     IF l_PRICE_LIST_LINE_rec.attribute6 = FND_API.G_MISS_CHAR THEN
1439         l_PRICE_LIST_LINE_rec.attribute6 := NULL;
1440     END IF;
1441 
1442     IF l_PRICE_LIST_LINE_rec.attribute7 = FND_API.G_MISS_CHAR THEN
1443         l_PRICE_LIST_LINE_rec.attribute7 := NULL;
1444     END IF;
1445 
1446     IF l_PRICE_LIST_LINE_rec.attribute8 = FND_API.G_MISS_CHAR THEN
1447         l_PRICE_LIST_LINE_rec.attribute8 := NULL;
1448     END IF;
1449 
1450     IF l_PRICE_LIST_LINE_rec.attribute9 = FND_API.G_MISS_CHAR THEN
1451         l_PRICE_LIST_LINE_rec.attribute9 := NULL;
1452     END IF;
1453 
1454     IF l_PRICE_LIST_LINE_rec.automatic_flag = FND_API.G_MISS_CHAR THEN
1455         l_PRICE_LIST_LINE_rec.automatic_flag := NULL;
1456     END IF;
1457 
1458     IF l_PRICE_LIST_LINE_rec.base_qty = FND_API.G_MISS_NUM THEN
1459         l_PRICE_LIST_LINE_rec.base_qty := NULL;
1460     END IF;
1461 
1462     IF l_PRICE_LIST_LINE_rec.base_uom_code = FND_API.G_MISS_CHAR THEN
1463         l_PRICE_LIST_LINE_rec.base_uom_code := NULL;
1464     END IF;
1465 
1466     IF l_PRICE_LIST_LINE_rec.comments = FND_API.G_MISS_CHAR THEN
1467         l_PRICE_LIST_LINE_rec.comments := NULL;
1468     END IF;
1469 
1470     IF l_PRICE_LIST_LINE_rec.context = FND_API.G_MISS_CHAR THEN
1471         l_PRICE_LIST_LINE_rec.context := NULL;
1472     END IF;
1473 
1474     IF l_PRICE_LIST_LINE_rec.created_by = FND_API.G_MISS_NUM THEN
1475         l_PRICE_LIST_LINE_rec.created_by := NULL;
1476     END IF;
1477 
1478     IF l_PRICE_LIST_LINE_rec.creation_date = FND_API.G_MISS_DATE THEN
1479         l_PRICE_LIST_LINE_rec.creation_date := NULL;
1480     END IF;
1481 
1482     IF l_PRICE_LIST_LINE_rec.effective_period_uom = FND_API.G_MISS_CHAR THEN
1483         l_PRICE_LIST_LINE_rec.effective_period_uom := NULL;
1484     END IF;
1485 
1486     IF l_PRICE_LIST_LINE_rec.end_date_active = FND_API.G_MISS_DATE THEN
1487         l_PRICE_LIST_LINE_rec.end_date_active := NULL;
1488     END IF;
1489 
1490     IF l_PRICE_LIST_LINE_rec.estim_accrual_rate = FND_API.G_MISS_NUM THEN
1491         l_PRICE_LIST_LINE_rec.estim_accrual_rate := NULL;
1492     END IF;
1493 
1494     IF l_PRICE_LIST_LINE_rec.generate_using_formula_id = FND_API.G_MISS_NUM THEN
1495         l_PRICE_LIST_LINE_rec.generate_using_formula_id := NULL;
1496     END IF;
1497 
1498     IF l_PRICE_LIST_LINE_rec.inventory_item_id = FND_API.G_MISS_NUM THEN
1499         l_PRICE_LIST_LINE_rec.inventory_item_id := NULL;
1500     END IF;
1501 
1502     IF l_PRICE_LIST_LINE_rec.last_updated_by = FND_API.G_MISS_NUM THEN
1503         l_PRICE_LIST_LINE_rec.last_updated_by := NULL;
1504     END IF;
1505 
1506     IF l_PRICE_LIST_LINE_rec.last_update_date = FND_API.G_MISS_DATE THEN
1507         l_PRICE_LIST_LINE_rec.last_update_date := NULL;
1508     END IF;
1509 
1510     IF l_PRICE_LIST_LINE_rec.last_update_login = FND_API.G_MISS_NUM THEN
1511         l_PRICE_LIST_LINE_rec.last_update_login := NULL;
1512     END IF;
1513 
1514     IF l_PRICE_LIST_LINE_rec.list_header_id = FND_API.G_MISS_NUM THEN
1515         l_PRICE_LIST_LINE_rec.list_header_id := NULL;
1516     END IF;
1517 
1518     IF l_PRICE_LIST_LINE_rec.list_line_id = FND_API.G_MISS_NUM THEN
1519         l_PRICE_LIST_LINE_rec.list_line_id := NULL;
1520     END IF;
1521 
1522     IF l_PRICE_LIST_LINE_rec.list_line_no = FND_API.G_MISS_CHAR THEN -- bug 4751658, 4199398
1523         l_PRICE_LIST_LINE_rec.list_line_no := NULL;
1524     END IF;
1525 
1526     IF l_PRICE_LIST_LINE_rec.list_line_type_code = FND_API.G_MISS_CHAR THEN
1527         l_PRICE_LIST_LINE_rec.list_line_type_code := NULL;
1528     END IF;
1529 
1530     IF l_PRICE_LIST_LINE_rec.list_price = FND_API.G_MISS_NUM THEN
1531         l_PRICE_LIST_LINE_rec.list_price := NULL;
1532     END IF;
1533 
1534     IF l_PRICE_LIST_LINE_rec.from_rltd_modifier_id = FND_API.G_MISS_NUM THEN
1535         l_PRICE_LIST_LINE_rec.from_rltd_modifier_id := NULL;
1536     END IF;
1537 
1538     IF l_PRICE_LIST_LINE_rec.rltd_modifier_group_no = FND_API.G_MISS_NUM THEN
1539         l_PRICE_LIST_LINE_rec.rltd_modifier_group_no := NULL;
1540     END IF;
1541 
1542     IF l_PRICE_LIST_LINE_rec.product_precedence = FND_API.G_MISS_NUM THEN
1543         l_PRICE_LIST_LINE_rec.product_precedence := NULL;
1544     END IF;
1545 
1546     IF l_PRICE_LIST_LINE_rec.modifier_level_code = FND_API.G_MISS_CHAR THEN
1547         l_PRICE_LIST_LINE_rec.modifier_level_code := NULL;
1548     END IF;
1549 
1550     IF l_PRICE_LIST_LINE_rec.number_effective_periods = FND_API.G_MISS_NUM THEN
1551         l_PRICE_LIST_LINE_rec.number_effective_periods := NULL;
1552     END IF;
1553 
1554     IF l_PRICE_LIST_LINE_rec.operand = FND_API.G_MISS_NUM THEN
1555         l_PRICE_LIST_LINE_rec.operand := NULL;
1556     END IF;
1557 
1558     IF l_PRICE_LIST_LINE_rec.organization_id = FND_API.G_MISS_NUM THEN
1559         l_PRICE_LIST_LINE_rec.organization_id := NULL;
1560     END IF;
1561 
1562     IF l_PRICE_LIST_LINE_rec.override_flag = FND_API.G_MISS_CHAR THEN
1563         l_PRICE_LIST_LINE_rec.override_flag := NULL;
1564     END IF;
1565 
1566     IF l_PRICE_LIST_LINE_rec.percent_price = FND_API.G_MISS_NUM THEN
1567         l_PRICE_LIST_LINE_rec.percent_price := NULL;
1568     END IF;
1569 
1570     IF l_PRICE_LIST_LINE_rec.price_break_type_code = FND_API.G_MISS_CHAR THEN
1571         l_PRICE_LIST_LINE_rec.price_break_type_code := NULL;
1572     END IF;
1573 
1574     IF l_PRICE_LIST_LINE_rec.price_by_formula_id = FND_API.G_MISS_NUM THEN
1575         l_PRICE_LIST_LINE_rec.price_by_formula_id := NULL;
1576     END IF;
1577 
1578     IF l_PRICE_LIST_LINE_rec.primary_uom_flag = FND_API.G_MISS_CHAR THEN
1579         l_PRICE_LIST_LINE_rec.primary_uom_flag := NULL;
1580     END IF;
1581 
1582     IF l_PRICE_LIST_LINE_rec.print_on_invoice_flag = FND_API.G_MISS_CHAR THEN
1583         l_PRICE_LIST_LINE_rec.print_on_invoice_flag := NULL;
1584     END IF;
1585 
1586     IF l_PRICE_LIST_LINE_rec.program_application_id = FND_API.G_MISS_NUM THEN
1587         l_PRICE_LIST_LINE_rec.program_application_id := NULL;
1588     END IF;
1589 
1590     IF l_PRICE_LIST_LINE_rec.program_id = FND_API.G_MISS_NUM THEN
1591         l_PRICE_LIST_LINE_rec.program_id := NULL;
1592     END IF;
1593 
1594     IF l_PRICE_LIST_LINE_rec.program_update_date = FND_API.G_MISS_DATE THEN
1595         l_PRICE_LIST_LINE_rec.program_update_date := NULL;
1596     END IF;
1597 
1598     IF l_PRICE_LIST_LINE_rec.rebate_trxn_type_code = FND_API.G_MISS_CHAR THEN
1599         l_PRICE_LIST_LINE_rec.rebate_trxn_type_code := NULL;
1600     END IF;
1601 
1602     -- block pricing
1603     IF l_PRICE_LIST_LINE_rec.recurring_value = FND_API.G_MISS_NUM THEN
1604         l_PRICE_LIST_LINE_rec.recurring_value := NULL;
1605     END IF;
1606 
1607     IF l_PRICE_LIST_LINE_rec.related_item_id = FND_API.G_MISS_NUM THEN
1608         l_PRICE_LIST_LINE_rec.related_item_id := NULL;
1609     END IF;
1610 
1611     IF l_PRICE_LIST_LINE_rec.relationship_type_id = FND_API.G_MISS_NUM THEN
1612         l_PRICE_LIST_LINE_rec.relationship_type_id := NULL;
1613     END IF;
1614 
1615     IF l_PRICE_LIST_LINE_rec.reprice_flag = FND_API.G_MISS_CHAR THEN
1616         l_PRICE_LIST_LINE_rec.reprice_flag := NULL;
1617     END IF;
1618 
1619     IF l_PRICE_LIST_LINE_rec.request_id = FND_API.G_MISS_NUM THEN
1620         l_PRICE_LIST_LINE_rec.request_id := NULL;
1621     END IF;
1622 
1623     IF l_PRICE_LIST_LINE_rec.revision = FND_API.G_MISS_CHAR THEN
1624         l_PRICE_LIST_LINE_rec.revision := NULL;
1625     END IF;
1626 
1627     IF l_PRICE_LIST_LINE_rec.revision_date = FND_API.G_MISS_DATE THEN
1628         l_PRICE_LIST_LINE_rec.revision_date := NULL;
1629     END IF;
1630 
1631     IF l_PRICE_LIST_LINE_rec.revision_reason_code = FND_API.G_MISS_CHAR THEN
1632         l_PRICE_LIST_LINE_rec.revision_reason_code := NULL;
1633     END IF;
1634 
1635     IF l_PRICE_LIST_LINE_rec.start_date_active = FND_API.G_MISS_DATE THEN
1636         l_PRICE_LIST_LINE_rec.start_date_active := NULL;
1637     END IF;
1638 
1639     IF l_PRICE_LIST_LINE_rec.substitution_attribute = FND_API.G_MISS_CHAR THEN
1640         l_PRICE_LIST_LINE_rec.substitution_attribute := NULL;
1641     END IF;
1642 
1643     IF l_PRICE_LIST_LINE_rec.substitution_context = FND_API.G_MISS_CHAR THEN
1644         l_PRICE_LIST_LINE_rec.substitution_context := NULL;
1645     END IF;
1646 
1647     IF l_PRICE_LIST_LINE_rec.substitution_value = FND_API.G_MISS_CHAR THEN
1648         l_PRICE_LIST_LINE_rec.substitution_value := NULL;
1649     END IF;
1650 
1651     IF l_PRICE_LIST_LINE_rec.qualification_ind = FND_API.G_MISS_NUM THEN
1652         l_PRICE_LIST_LINE_rec.qualification_ind := NULL;
1653     END IF;
1654 
1655     IF l_PRICE_LIST_LINE_rec.break_uom_code = FND_API.G_MISS_CHAR THEN
1656         l_PRICE_LIST_LINE_rec.break_uom_code := NULL;
1657     END IF;
1658 
1659     IF l_PRICE_LIST_LINE_rec.break_uom_context = FND_API.G_MISS_CHAR THEN
1660         l_PRICE_LIST_LINE_rec.break_uom_context := NULL;
1661     END IF;
1662 
1663     IF l_PRICE_LIST_LINE_rec.break_uom_attribute = FND_API.G_MISS_CHAR THEN
1664         l_PRICE_LIST_LINE_rec.break_uom_attribute := NULL;
1665     END IF;
1666 
1667     IF l_PRICE_LIST_LINE_rec.continuous_price_break_flag = FND_API.G_MISS_CHAR THEN
1668        l_PRICE_LIST_LINE_rec.continuous_price_break_flag := NULL;
1669     END IF;
1670 
1671     RETURN l_PRICE_LIST_LINE_rec;
1672 
1673 END Convert_Miss_To_Null;
1674 
1675 --  Procedure Update_Row
1676 
1677 -- Added for Enhancement 1732601
1678 
1679 FUNCTION Round_List_Price(p_price_list_header_id IN NUMBER)
1680 RETURN NUMBER
1681 IS
1682 l_rounding_factor       NUMBER;
1683 
1684 BEGIN
1685     BEGIN
1686       select rounding_factor
1687       into   l_rounding_factor
1688       from   qp_list_headers_b
1689       where  list_header_id =p_price_list_header_id;
1690     EXCEPTION
1691          WHEN OTHERS THEN
1692            l_rounding_factor := -2;
1693     END;
1694     Return l_rounding_factor;
1695 END Round_List_Price;
1696 
1697 PROCEDURE Update_Row
1698 (   p_PRICE_LIST_LINE_rec           IN  QP_Price_List_PUB.Price_List_Line_Rec_Type
1699 )
1700 IS
1701 l_operand               NUMBER;
1702 l_check_active_flag     VARCHAR2(1); /* Proration */
1703 l_active_flag           VARCHAR2(1); /* Proration */
1704 BEGIN
1705     /* Added for Enhancement 1732601 */
1706    IF fnd_profile.value('QP_PRICE_ROUNDING') IS NOT NULL THEN
1707    	 l_operand := round(p_PRICE_LIST_LINE_rec.operand,-1*Round_List_Price(p_PRICE_LIST_LINE_rec.list_header_id));
1708    ELSE
1709   	 l_operand := p_PRICE_LIST_LINE_rec.operand;
1710    END IF;
1711 
1712    /* Proration Start */
1713    BEGIN
1714        SELECT ACTIVE_FLAG
1715        INTO   l_active_flag
1716        FROM   QP_LIST_HEADERS_B
1717        WHERE  list_header_id=p_PRICE_LIST_LINE_rec.list_header_id;
1718    EXCEPTION
1719    	WHEN OTHERS THEN
1720 	NULL;
1721    END;
1722    /* Proration End */
1723 
1724     UPDATE  QP_LIST_LINES
1725     SET     ACCRUAL_QTY                    = p_PRICE_LIST_LINE_rec.accrual_qty
1726     ,       ACCRUAL_UOM_CODE               = p_PRICE_LIST_LINE_rec.accrual_uom_code
1727     ,       ARITHMETIC_OPERATOR            = p_PRICE_LIST_LINE_rec.arithmetic_operator
1728     ,       ATTRIBUTE1                     = p_PRICE_LIST_LINE_rec.attribute1
1729     ,       ATTRIBUTE10                    = p_PRICE_LIST_LINE_rec.attribute10
1730     ,       ATTRIBUTE11                    = p_PRICE_LIST_LINE_rec.attribute11
1731     ,       ATTRIBUTE12                    = p_PRICE_LIST_LINE_rec.attribute12
1732     ,       ATTRIBUTE13                    = p_PRICE_LIST_LINE_rec.attribute13
1733     ,       ATTRIBUTE14                    = p_PRICE_LIST_LINE_rec.attribute14
1734     ,       ATTRIBUTE15                    = p_PRICE_LIST_LINE_rec.attribute15
1735     ,       ATTRIBUTE2                     = p_PRICE_LIST_LINE_rec.attribute2
1736     ,       ATTRIBUTE3                     = p_PRICE_LIST_LINE_rec.attribute3
1737     ,       ATTRIBUTE4                     = p_PRICE_LIST_LINE_rec.attribute4
1738     ,       ATTRIBUTE5                     = p_PRICE_LIST_LINE_rec.attribute5
1739     ,       ATTRIBUTE6                     = p_PRICE_LIST_LINE_rec.attribute6
1740     ,       ATTRIBUTE7                     = p_PRICE_LIST_LINE_rec.attribute7
1741     ,       ATTRIBUTE8                     = p_PRICE_LIST_LINE_rec.attribute8
1742     ,       ATTRIBUTE9                     = p_PRICE_LIST_LINE_rec.attribute9
1743     ,       AUTOMATIC_FLAG                 = p_PRICE_LIST_LINE_rec.automatic_flag
1744     ,       BASE_QTY                       = p_PRICE_LIST_LINE_rec.base_qty
1745     ,       BASE_UOM_CODE                  = p_PRICE_LIST_LINE_rec.base_uom_code
1746     ,       COMMENTS                       = p_PRICE_LIST_LINE_rec.comments
1747     ,       CONTEXT                        = p_PRICE_LIST_LINE_rec.context
1748     ,       CREATED_BY                     = p_PRICE_LIST_LINE_rec.created_by
1749     ,       CREATION_DATE                  = p_PRICE_LIST_LINE_rec.creation_date
1750     ,       EFFECTIVE_PERIOD_UOM           = p_PRICE_LIST_LINE_rec.effective_period_uom
1751     ,       END_DATE_ACTIVE                = trunc(p_PRICE_LIST_LINE_rec.end_date_active)
1752     ,       ESTIM_ACCRUAL_RATE             = p_PRICE_LIST_LINE_rec.estim_accrual_rate
1753     ,       GENERATE_USING_FORMULA_ID      = p_PRICE_LIST_LINE_rec.generate_using_formula_id
1754     ,       INVENTORY_ITEM_ID              = p_PRICE_LIST_LINE_rec.inventory_item_id
1755     ,       LAST_UPDATED_BY                = p_PRICE_LIST_LINE_rec.last_updated_by
1756     ,       LAST_UPDATE_DATE               = p_PRICE_LIST_LINE_rec.last_update_date
1757     ,       LAST_UPDATE_LOGIN              = p_PRICE_LIST_LINE_rec.last_update_login
1758     ,       LIST_HEADER_ID                 = p_PRICE_LIST_LINE_rec.list_header_id
1759     ,       LIST_LINE_ID                   = p_PRICE_LIST_LINE_rec.list_line_id
1760     ,       LIST_LINE_NO                   = p_PRICE_LIST_LINE_rec.list_line_no
1761     ,       LIST_LINE_TYPE_CODE            = p_PRICE_LIST_LINE_rec.list_line_type_code
1762     ,       LIST_PRICE                     = p_PRICE_LIST_LINE_rec.list_price
1763     ,       PRODUCT_PRECEDENCE             = p_PRICE_LIST_LINE_rec.product_precedence
1764     ,       MODIFIER_LEVEL_CODE            = p_PRICE_LIST_LINE_rec.modifier_level_code
1765     ,       NUMBER_EFFECTIVE_PERIODS       = p_PRICE_LIST_LINE_rec.number_effective_periods
1766     --,       OPERAND                        = p_PRICE_LIST_LINE_rec.operand
1767     ,       OPERAND                        = l_operand  					--Modified for Enhancement 1732601
1768     ,       ORGANIZATION_ID                = p_PRICE_LIST_LINE_rec.organization_id
1769     ,       OVERRIDE_FLAG                  = p_PRICE_LIST_LINE_rec.override_flag
1770     ,       PERCENT_PRICE                  = p_PRICE_LIST_LINE_rec.percent_price
1771     ,       PRICE_BREAK_TYPE_CODE          = p_PRICE_LIST_LINE_rec.price_break_type_code
1772     ,       PRICE_BY_FORMULA_ID            = p_PRICE_LIST_LINE_rec.price_by_formula_id
1773     ,       PRIMARY_UOM_FLAG               = p_PRICE_LIST_LINE_rec.primary_uom_flag
1774     ,       PRINT_ON_INVOICE_FLAG          = p_PRICE_LIST_LINE_rec.print_on_invoice_flag
1775     ,       PROGRAM_APPLICATION_ID         = p_PRICE_LIST_LINE_rec.program_application_id
1776     ,       PROGRAM_ID                     = p_PRICE_LIST_LINE_rec.program_id
1777     ,       PROGRAM_UPDATE_DATE            = p_PRICE_LIST_LINE_rec.program_update_date
1778     ,       REBATE_TRANSACTION_TYPE_CODE   = p_PRICE_LIST_LINE_rec.rebate_trxn_type_code
1779     ,       RELATED_ITEM_ID                = p_PRICE_LIST_LINE_rec.related_item_id
1780     ,       RELATIONSHIP_TYPE_ID           = p_PRICE_LIST_LINE_rec.relationship_type_id
1781     ,       REPRICE_FLAG                   = p_PRICE_LIST_LINE_rec.reprice_flag
1782     ,       REQUEST_ID                     = p_PRICE_LIST_LINE_rec.request_id
1783     ,       REVISION                       = p_PRICE_LIST_LINE_rec.revision
1784     ,       REVISION_DATE                  = trunc(p_PRICE_LIST_LINE_rec.revision_date)
1785     ,       REVISION_REASON_CODE           = p_PRICE_LIST_LINE_rec.revision_reason_code
1786     ,       START_DATE_ACTIVE              = trunc(p_PRICE_LIST_LINE_rec.start_date_active)
1787     ,       SUBSTITUTION_ATTRIBUTE         = p_PRICE_LIST_LINE_rec.substitution_attribute
1788     ,       SUBSTITUTION_CONTEXT           = p_PRICE_LIST_LINE_rec.substitution_context
1789     ,       SUBSTITUTION_VALUE             = p_PRICE_LIST_LINE_rec.substitution_value
1790     ,       PRICING_GROUP_SEQUENCE         = 0
1791     ,       PRICING_PHASE_ID               = 1
1792     ,       INCOMPATIBILITY_GRP_CODE       = 'EXCL'
1793     ,       QUALIFICATION_IND              = p_PRICE_LIST_LINE_rec.qualification_ind
1794     ,       RECURRING_VALUE                = p_PRICE_LIST_LINE_rec.recurring_value -- block pricing
1795     ,       CUSTOMER_ITEM_ID               = p_PRICE_LIST_LINE_rec.customer_item_id
1796     ,       BREAK_UOM_CODE                 = p_PRICE_LIST_LINE_rec.break_uom_code -- OKS proration
1797     ,       BREAK_UOM_CONTEXT              = p_PRICE_LIST_LINE_rec.break_uom_context -- OKS
1798     ,       BREAK_UOM_ATTRIBUTE            = p_PRICE_LIST_LINE_rec.break_uom_attribute -- OKS proration
1799     ,       CONTINUOUS_PRICE_BREAK_FLAG        = p_PRICE_LIST_LINE_rec.continuous_price_break_flag
1800     										-- Continuous price breaks
1801     WHERE   LIST_LINE_ID = p_PRICE_LIST_LINE_rec.list_line_id
1802     ;
1803 
1804    /* Proration Start */
1805 l_check_active_flag:=nvl(fnd_profile.value('QP_BUILD_ATTRIBUTES_MAPPING_OPTIONS'),'N');
1806 IF (l_check_active_flag='N') OR (l_check_active_flag='Y' AND l_active_flag='Y') THEN
1807  IF(p_PRICE_LIST_LINE_rec.break_uom_context IS NOT NULL) AND
1808    (p_PRICE_LIST_LINE_rec.break_uom_attribute IS NOT NULL) THEN
1809 
1810      UPDATE qp_pte_segments set used_in_setup='Y'
1811      WHERE  nvl(used_in_setup,'N')='N'
1812      AND    segment_id IN
1813       (SELECT a.segment_id FROM qp_segments_b a,qp_prc_contexts_b b
1814        WHERE  a.segment_mapping_column=p_PRICE_LIST_LINE_rec.break_uom_attribute
1815        AND    a.prc_context_id=b.prc_context_id
1816        AND b.prc_context_type = 'PRICING_ATTRIBUTE'
1817        AND    b.prc_context_code=p_PRICE_LIST_LINE_rec.break_uom_context);
1818 
1819  END IF;
1820 END IF;
1821    /* Proration End */
1822 
1823 EXCEPTION
1824 
1825     WHEN OTHERS THEN
1826 
1827         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1828         THEN
1829             oe_msg_pub.Add_Exc_Msg
1830             (   G_PKG_NAME
1831             ,   'Update_Row'
1832             );
1833         END IF;
1834 
1835         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1836 
1837 END Update_Row;
1838 
1839 --  Procedure Insert_Row
1840 
1841 PROCEDURE Insert_Row
1842 (   p_PRICE_LIST_LINE_rec           IN  QP_Price_List_PUB.Price_List_Line_Rec_Type
1843 )
1844 IS
1845 l_return_status         varchar2(30);
1846 l_operand		NUMBER;
1847 l_check_active_flag     VARCHAR2(1); /* Proration */
1848 l_active_flag           VARCHAR2(1); /* Proration */
1849 
1850 BEGIN
1851 
1852     /* Added for Enhancement 1732601 */
1853    IF fnd_profile.value('QP_PRICE_ROUNDING') IS NOT NULL THEN
1854          l_operand := round(p_PRICE_LIST_LINE_rec.operand,-1*Round_List_Price(p_PRICE_LIST_LINE_rec.list_header_id));
1855    ELSE
1856          l_operand := p_PRICE_LIST_LINE_rec.operand;
1857    END IF;
1858 
1859    /* pricing group sequence = 0, pricing_phase_id = 1 - list line price */
1860 
1861    /* Proration Start */
1862    begin
1863        SELECT ACTIVE_FLAG
1864        INTO   l_active_flag
1865        FROM   QP_LIST_HEADERS_B
1866        WHERE  list_header_id=p_PRICE_LIST_LINE_rec.list_header_id;
1867    exception
1868    when others then
1869    	null;
1870    end;
1871 
1872    /* Proration End */
1873 
1874     INSERT  INTO QP_LIST_LINES
1875     (       ACCRUAL_QTY
1876     ,       ACCRUAL_UOM_CODE
1877     ,       ARITHMETIC_OPERATOR
1878     ,       ATTRIBUTE1
1879     ,       ATTRIBUTE10
1880     ,       ATTRIBUTE11
1881     ,       ATTRIBUTE12
1882     ,       ATTRIBUTE13
1883     ,       ATTRIBUTE14
1884     ,       ATTRIBUTE15
1885     ,       ATTRIBUTE2
1886     ,       ATTRIBUTE3
1887     ,       ATTRIBUTE4
1888     ,       ATTRIBUTE5
1889     ,       ATTRIBUTE6
1890     ,       ATTRIBUTE7
1891     ,       ATTRIBUTE8
1892     ,       ATTRIBUTE9
1893     ,       AUTOMATIC_FLAG
1894     ,       BASE_QTY
1895     ,       BASE_UOM_CODE
1896     ,       COMMENTS
1897     ,       CONTEXT
1898     ,       CREATED_BY
1899     ,       CREATION_DATE
1900     ,       EFFECTIVE_PERIOD_UOM
1901     ,       END_DATE_ACTIVE
1902     ,       ESTIM_ACCRUAL_RATE
1903     ,       GENERATE_USING_FORMULA_ID
1904     ,       INVENTORY_ITEM_ID
1905     ,       LAST_UPDATED_BY
1906     ,       LAST_UPDATE_DATE
1907     ,       LAST_UPDATE_LOGIN
1908     ,       LIST_HEADER_ID
1909     ,       LIST_LINE_ID
1910     ,       LIST_LINE_NO
1911     ,       LIST_LINE_TYPE_CODE
1912     ,       LIST_PRICE
1913     ,       PRODUCT_PRECEDENCE
1914     ,       MODIFIER_LEVEL_CODE
1915     ,       NUMBER_EFFECTIVE_PERIODS
1916     ,       OPERAND
1917     ,       ORGANIZATION_ID
1918     ,       OVERRIDE_FLAG
1919     ,       PERCENT_PRICE
1920     ,       PRICE_BREAK_TYPE_CODE
1921     ,       PRICE_BY_FORMULA_ID
1922     ,       PRIMARY_UOM_FLAG
1923     ,       PRINT_ON_INVOICE_FLAG
1924     ,       PROGRAM_APPLICATION_ID
1925     ,       PROGRAM_ID
1926     ,       PROGRAM_UPDATE_DATE
1927     ,       REBATE_TRANSACTION_TYPE_CODE
1928     ,       RELATED_ITEM_ID
1929     ,       RELATIONSHIP_TYPE_ID
1930     ,       REPRICE_FLAG
1931     ,       REQUEST_ID
1932     ,       REVISION
1933     ,       REVISION_DATE
1934     ,       REVISION_REASON_CODE
1935     ,       START_DATE_ACTIVE
1936     ,       SUBSTITUTION_ATTRIBUTE
1937     ,       SUBSTITUTION_CONTEXT
1938     ,       SUBSTITUTION_VALUE
1939     ,       PRICING_GROUP_SEQUENCE
1940     ,       PRICING_PHASE_ID
1941     ,       INCOMPATIBILITY_GRP_CODE
1942     ,       QUALIFICATION_IND
1943     ,       RECURRING_VALUE -- block pricing
1944     ,       CUSTOMER_ITEM_ID
1945     ,       BREAK_UOM_CODE  -- OKS proration
1946     ,       BREAK_UOM_CONTEXT -- OKS proration
1947     ,       BREAK_UOM_ATTRIBUTE -- OKS proration
1948     ,       CONTINUOUS_PRICE_BREAK_FLAG -- Continuous price breaks
1949   --ENH Upgrade BOAPI for orig_sys...ref RAVI
1950   ,orig_sys_line_ref
1951   ,ORIG_SYS_HEADER_REF
1952     )
1953     VALUES
1954     (       p_PRICE_LIST_LINE_rec.accrual_qty
1955     ,       p_PRICE_LIST_LINE_rec.accrual_uom_code
1956     ,       p_PRICE_LIST_LINE_rec.arithmetic_operator
1957     ,       p_PRICE_LIST_LINE_rec.attribute1
1958     ,       p_PRICE_LIST_LINE_rec.attribute10
1959     ,       p_PRICE_LIST_LINE_rec.attribute11
1960     ,       p_PRICE_LIST_LINE_rec.attribute12
1961     ,       p_PRICE_LIST_LINE_rec.attribute13
1962     ,       p_PRICE_LIST_LINE_rec.attribute14
1963     ,       p_PRICE_LIST_LINE_rec.attribute15
1964     ,       p_PRICE_LIST_LINE_rec.attribute2
1965     ,       p_PRICE_LIST_LINE_rec.attribute3
1966     ,       p_PRICE_LIST_LINE_rec.attribute4
1967     ,       p_PRICE_LIST_LINE_rec.attribute5
1968     ,       p_PRICE_LIST_LINE_rec.attribute6
1969     ,       p_PRICE_LIST_LINE_rec.attribute7
1970     ,       p_PRICE_LIST_LINE_rec.attribute8
1971     ,       p_PRICE_LIST_LINE_rec.attribute9
1972     ,       p_PRICE_LIST_LINE_rec.automatic_flag
1973     ,       p_PRICE_LIST_LINE_rec.base_qty
1974     ,       p_PRICE_LIST_LINE_rec.base_uom_code
1975     ,       p_PRICE_LIST_LINE_rec.comments
1976     ,       p_PRICE_LIST_LINE_rec.context
1977     ,       p_PRICE_LIST_LINE_rec.created_by
1978     ,       p_PRICE_LIST_LINE_rec.creation_date
1979     ,       p_PRICE_LIST_LINE_rec.effective_period_uom
1980     ,       trunc(p_PRICE_LIST_LINE_rec.end_date_active)
1981     ,       p_PRICE_LIST_LINE_rec.estim_accrual_rate
1982     ,       p_PRICE_LIST_LINE_rec.generate_using_formula_id
1983     ,       p_PRICE_LIST_LINE_rec.inventory_item_id
1984     ,       p_PRICE_LIST_LINE_rec.last_updated_by
1985     ,       p_PRICE_LIST_LINE_rec.last_update_date
1986     ,       p_PRICE_LIST_LINE_rec.last_update_login
1987     ,       p_PRICE_LIST_LINE_rec.list_header_id
1988     ,       p_PRICE_LIST_LINE_rec.list_line_id
1989     ,       p_PRICE_LIST_LINE_rec.list_line_no
1990     ,       p_PRICE_LIST_LINE_rec.list_line_type_code
1991     ,       p_PRICE_LIST_LINE_rec.list_price
1992     ,       p_PRICE_LIST_LINE_rec.product_precedence
1993     ,       p_PRICE_LIST_LINE_rec.modifier_level_code
1994     ,       p_PRICE_LIST_LINE_rec.number_effective_periods
1995  --   ,       p_PRICE_LIST_LINE_rec.operand
1996     ,       l_operand                                             --Modified for 1732601
1997     ,       p_PRICE_LIST_LINE_rec.organization_id
1998     ,       p_PRICE_LIST_LINE_rec.override_flag
1999     ,       p_PRICE_LIST_LINE_rec.percent_price
2000     ,       p_PRICE_LIST_LINE_rec.price_break_type_code
2001     ,       p_PRICE_LIST_LINE_rec.price_by_formula_id
2002     ,       p_PRICE_LIST_LINE_rec.primary_uom_flag
2003     ,       p_PRICE_LIST_LINE_rec.print_on_invoice_flag
2004     ,       p_PRICE_LIST_LINE_rec.program_application_id
2005     ,       p_PRICE_LIST_LINE_rec.program_id
2006     ,       p_PRICE_LIST_LINE_rec.program_update_date
2007     ,       p_PRICE_LIST_LINE_rec.rebate_trxn_type_code
2008     ,       p_PRICE_LIST_LINE_rec.related_item_id
2009     ,       p_PRICE_LIST_LINE_rec.relationship_type_id
2010     ,       p_PRICE_LIST_LINE_rec.reprice_flag
2011     ,       p_PRICE_LIST_LINE_rec.request_id
2012     ,       p_PRICE_LIST_LINE_rec.revision
2013     ,       trunc(p_PRICE_LIST_LINE_rec.revision_date)
2014     ,       p_PRICE_LIST_LINE_rec.revision_reason_code
2015     ,       trunc(p_PRICE_LIST_LINE_rec.start_date_active)
2016     ,       p_PRICE_LIST_LINE_rec.substitution_attribute
2017     ,       p_PRICE_LIST_LINE_rec.substitution_context
2018     ,       p_PRICE_LIST_LINE_rec.substitution_value
2019     ,       0
2020     ,       1
2021     ,       'EXCL'
2022     ,       p_PRICE_LIST_LINE_rec.qualification_ind --Euro Bug 2138996
2023     ,       p_PRICE_LIST_LINE_rec.recurring_value -- block pricing
2024     ,       p_PRICE_LIST_LINE_rec.customer_item_id
2025     ,       p_PRICE_LIST_LINE_rec.break_uom_code -- OKS proration
2026     ,       p_PRICE_LIST_LINE_rec.break_uom_context -- OKS
2027     ,       p_PRICE_LIST_LINE_rec.break_uom_attribute -- OKS proration
2028     ,       p_PRICE_LIST_LINE_rec.continuous_price_break_flag -- Continuous price breaks
2029   --ENH Upgrade BOAPI for orig_sys...ref RAVI
2030   ,to_char(p_PRICE_LIST_LINE_rec.list_line_id)
2031   ,(select h.ORIG_SYSTEM_HEADER_REF from qp_list_headers_b h where h.list_header_id=p_PRICE_LIST_LINE_rec.list_header_id)
2032     );
2033       /* Added delayed request by dhgupta for bug 2018275 */
2034 
2035          qp_delayed_requests_PVT.log_request(
2036                  p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
2037                  p_entity_id  => p_PRICE_LIST_LINE_rec.list_line_id,
2038                  p_requesting_entity_code=> QP_GLOBALS.G_ENTITY_ALL,
2039                  p_requesting_entity_id => p_PRICE_LIST_LINE_rec.list_line_id,
2040                  p_request_type =>QP_GLOBALS.G_UPDATE_LINE_QUAL_IND,
2041                  x_return_status => l_return_status);
2042 
2043    /* Proration Start */
2044 l_check_active_flag:=nvl(fnd_profile.value('QP_BUILD_ATTRIBUTES_MAPPING_OPTIONS'),'N');
2045 IF (l_check_active_flag='N') OR (l_check_active_flag='Y' AND l_active_flag='Y') THEN
2046  IF(p_PRICE_LIST_LINE_rec.break_uom_context IS NOT NULL) AND
2047    (p_PRICE_LIST_LINE_rec.break_uom_attribute IS NOT NULL) THEN
2048 
2049      UPDATE qp_pte_segments set used_in_setup='Y'
2050      WHERE  nvl(used_in_setup,'N')='N'
2051      AND    segment_id IN
2052       (SELECT a.segment_id FROM qp_segments_b a,qp_prc_contexts_b b
2053        WHERE  a.segment_mapping_column=p_PRICE_LIST_LINE_rec.break_uom_attribute
2054        AND    a.prc_context_id=b.prc_context_id
2055        AND b.prc_context_type = 'PRICING_ATTRIBUTE'
2056        AND    b.prc_context_code=p_PRICE_LIST_LINE_rec.break_uom_context);
2057 
2058  END IF;
2059 END IF;
2060    /* Proration End */
2061 
2062 EXCEPTION
2063 
2064     WHEN OTHERS THEN
2065 
2066         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
2067         THEN
2068             oe_msg_pub.Add_Exc_Msg
2069             (   G_PKG_NAME
2070             ,   'Insert_Row'
2071             );
2072         END IF;
2073 
2074         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2075 
2076 END Insert_Row;
2077 
2078 --  Procedure delete_Row
2079 
2080 PROCEDURE Delete_Row
2081 (   p_list_line_id                  IN  NUMBER
2082 )
2083 IS
2084 L_LINE_TYPE_CODE VARCHAR2(30) := NULL;
2085 
2086 cursor get_rltd_mods(line_id in number) is
2087 select from_rltd_modifier_id, to_rltd_modifier_id
2088 from qp_rltd_modifiers
2089 where from_rltd_modifier_id = line_id;
2090 
2091 
2092 BEGIN
2093 
2094    SELECT LIST_LINE_TYPE_CODE
2095    INTO L_LINE_TYPE_CODE
2096    FROM QP_LIST_LINES
2097    WHERE LIST_LINE_ID = p_list_line_id;
2098 
2099    /* delete all the related modifier lines if the line is a PBH,
2100      else delete all references of this line in qp_rltd_modifiers */
2101 
2102    IF L_LINE_TYPE_CODE = 'PBH' THEN
2103 
2104      for get_rltd_mods_rec in get_rltd_mods(p_list_line_id) loop
2105 
2106         QP_PRICE_LIST_LINE_UTIL.DELETE_ROW(get_rltd_mods_rec.to_rltd_modifier_id);
2107 
2108      end loop;
2109 
2110      DELETE FROM QP_RLTD_MODIFIERS
2111      WHERE FROM_RLTD_MODIFIER_ID = p_list_line_id;
2112 
2113   ELSE
2114 
2115       DELETE FROM QP_RLTD_MODIFIERS
2116       WHERE TO_RLTD_MODIFIER_ID = p_list_line_id;
2117 
2118   END IF;  /* done with related modifier lines */
2119 
2120 
2121  /* delete all the pricing attributes */
2122 
2123     DELETE FROM QP_PRICING_ATTRIBUTES
2124     WHERE LIST_LINE_ID = p_list_line_id;   /* done with pricing attributes */
2125 
2126 
2127     DELETE  FROM QP_LIST_LINES
2128     WHERE   LIST_LINE_ID = p_list_line_id
2129     ;
2130 
2131 EXCEPTION
2132 
2133     WHEN OTHERS THEN
2134 
2135         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
2136         THEN
2137             oe_msg_pub.Add_Exc_Msg
2138             (   G_PKG_NAME
2139             ,   'Delete_Row'
2140             );
2141         END IF;
2142 
2143         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2144 
2145 END Delete_Row;
2146 
2147 --  Function Query_Row
2148 
2149 FUNCTION Query_Row
2150 (   p_list_line_id                  IN  NUMBER
2151 ) RETURN QP_Price_List_PUB.Price_List_Line_Rec_Type
2152 IS
2153 BEGIN
2154 
2155     RETURN Query_Rows
2156         (   p_list_line_id                => p_list_line_id
2157         )(1);
2158 
2159 END Query_Row;
2160 
2161 --  Function Query_Rows
2162 
2163 --
2164 
2165 FUNCTION Query_Rows
2166 (   p_list_line_id                  IN  NUMBER :=
2167                                         FND_API.G_MISS_NUM
2168 ,   p_list_header_id                IN  NUMBER :=
2169                                         FND_API.G_MISS_NUM
2170 ) RETURN QP_Price_List_PUB.Price_List_Line_Tbl_Type
2171 IS
2172 l_PRICE_LIST_LINE_rec         QP_Price_List_PUB.Price_List_Line_Rec_Type;
2173 l_PRICE_LIST_LINE_tbl         QP_Price_List_PUB.Price_List_Line_Tbl_Type;
2174 
2175 CURSOR l_PRICE_LIST_LINE_csr IS
2176     SELECT  ACCRUAL_QTY
2177     ,       ACCRUAL_UOM_CODE
2178     ,       ARITHMETIC_OPERATOR
2179     ,       ATTRIBUTE1
2180     ,       ATTRIBUTE10
2181     ,       ATTRIBUTE11
2182     ,       ATTRIBUTE12
2183     ,       ATTRIBUTE13
2184     ,       ATTRIBUTE14
2185     ,       ATTRIBUTE15
2186     ,       ATTRIBUTE2
2187     ,       ATTRIBUTE3
2188     ,       ATTRIBUTE4
2189     ,       ATTRIBUTE5
2190     ,       ATTRIBUTE6
2191     ,       ATTRIBUTE7
2192     ,       ATTRIBUTE8
2193     ,       ATTRIBUTE9
2194     ,       AUTOMATIC_FLAG
2195     ,       BASE_QTY
2196     ,       BASE_UOM_CODE
2197     ,       COMMENTS
2198     ,       CONTEXT
2199     ,       CREATED_BY
2200     ,       CREATION_DATE
2201     ,       EFFECTIVE_PERIOD_UOM
2202     ,       END_DATE_ACTIVE
2203     ,       ESTIM_ACCRUAL_RATE
2204     ,       GENERATE_USING_FORMULA_ID
2205     ,       INVENTORY_ITEM_ID
2206     ,       LAST_UPDATED_BY
2207     ,       LAST_UPDATE_DATE
2208     ,       LAST_UPDATE_LOGIN
2209     ,       LIST_HEADER_ID
2210     ,       LIST_LINE_ID
2211     ,       LIST_LINE_NO
2212     ,       LIST_LINE_TYPE_CODE
2213     ,       LIST_PRICE
2214     ,       PRODUCT_PRECEDENCE
2215     ,       MODIFIER_LEVEL_CODE
2216     ,       NUMBER_EFFECTIVE_PERIODS
2217     ,       OPERAND
2218     ,       ORGANIZATION_ID
2219     ,       OVERRIDE_FLAG
2220     ,       PERCENT_PRICE
2221     ,       PRICE_BREAK_TYPE_CODE
2222     ,       PRICE_BY_FORMULA_ID
2223     ,       PRIMARY_UOM_FLAG
2224     ,       PRINT_ON_INVOICE_FLAG
2225     ,       PROGRAM_APPLICATION_ID
2226     ,       PROGRAM_ID
2227     ,       PROGRAM_UPDATE_DATE
2228     ,       REBATE_TRANSACTION_TYPE_CODE
2229     ,       RELATED_ITEM_ID
2230     ,       RELATIONSHIP_TYPE_ID
2231     ,       REPRICE_FLAG
2232     ,       REQUEST_ID
2233     ,       REVISION
2234     ,       REVISION_DATE
2235     ,       REVISION_REASON_CODE
2236     ,       START_DATE_ACTIVE
2237     ,       SUBSTITUTION_ATTRIBUTE
2238     ,       SUBSTITUTION_CONTEXT
2239     ,       SUBSTITUTION_VALUE
2240     ,       QUALIFICATION_IND
2241     ,       RECURRING_VALUE -- block pricing
2242     ,       CUSTOMER_ITEM_ID
2243     ,       BREAK_UOM_CODE
2244     ,       BREAK_UOM_CONTEXT
2245     ,       BREAK_UOM_ATTRIBUTE
2246     ,       CONTINUOUS_PRICE_BREAK_FLAG -- Continuous price breaks
2247     FROM    QP_LIST_LINES
2248     WHERE  LIST_LINE_ID = p_list_line_id;
2249 
2250 /* Peformance changes for 2422019 */
2251 /*
2252     )
2253     OR (    LIST_HEADER_ID = p_list_header_id
2254     );
2255 */
2256 
2257 CURSOR l_PRICE_LIST_LINE_hdr_csr IS
2258     SELECT  ACCRUAL_QTY
2259     ,       ACCRUAL_UOM_CODE
2260     ,       ARITHMETIC_OPERATOR
2261     ,       ATTRIBUTE1
2262     ,       ATTRIBUTE10
2263     ,       ATTRIBUTE11
2264     ,       ATTRIBUTE12
2265     ,       ATTRIBUTE13
2266     ,       ATTRIBUTE14
2267     ,       ATTRIBUTE15
2268     ,       ATTRIBUTE2
2269     ,       ATTRIBUTE3
2270     ,       ATTRIBUTE4
2271     ,       ATTRIBUTE5
2272     ,       ATTRIBUTE6
2273     ,       ATTRIBUTE7
2274     ,       ATTRIBUTE8
2275     ,       ATTRIBUTE9
2276     ,       AUTOMATIC_FLAG
2277     ,       BASE_QTY
2278     ,       BASE_UOM_CODE
2279     ,       COMMENTS
2280     ,       CONTEXT
2281     ,       CREATED_BY
2282     ,       CREATION_DATE
2283     ,       EFFECTIVE_PERIOD_UOM
2284     ,       END_DATE_ACTIVE
2285     ,       ESTIM_ACCRUAL_RATE
2286     ,       GENERATE_USING_FORMULA_ID
2287     ,       INVENTORY_ITEM_ID
2288     ,       LAST_UPDATED_BY
2289     ,       LAST_UPDATE_DATE
2290     ,       LAST_UPDATE_LOGIN
2291     ,       LIST_HEADER_ID
2292     ,       LIST_LINE_ID
2293     ,       LIST_LINE_NO
2294     ,       LIST_LINE_TYPE_CODE
2295     ,       LIST_PRICE
2296     ,       PRODUCT_PRECEDENCE
2297     ,       MODIFIER_LEVEL_CODE
2298     ,       NUMBER_EFFECTIVE_PERIODS
2299     ,       OPERAND
2300     ,       ORGANIZATION_ID
2301     ,       OVERRIDE_FLAG
2302     ,       PERCENT_PRICE
2303     ,       PRICE_BREAK_TYPE_CODE
2304     ,       PRICE_BY_FORMULA_ID
2305     ,       PRIMARY_UOM_FLAG
2306     ,       PRINT_ON_INVOICE_FLAG
2307     ,       PROGRAM_APPLICATION_ID
2308     ,       PROGRAM_ID
2309     ,       PROGRAM_UPDATE_DATE
2310     ,       REBATE_TRANSACTION_TYPE_CODE
2311     ,       RELATED_ITEM_ID
2312     ,       RELATIONSHIP_TYPE_ID
2313     ,       REPRICE_FLAG
2314     ,       REQUEST_ID
2315     ,       REVISION
2316     ,       REVISION_DATE
2317     ,       REVISION_REASON_CODE
2318     ,       START_DATE_ACTIVE
2319     ,       SUBSTITUTION_ATTRIBUTE
2320     ,       SUBSTITUTION_CONTEXT
2321     ,       SUBSTITUTION_VALUE
2322     ,       QUALIFICATION_IND
2323     ,       RECURRING_VALUE -- block pricing
2324     ,       CUSTOMER_ITEM_ID
2325     ,       BREAK_UOM_CODE
2326     ,       BREAK_UOM_CONTEXT
2327     ,       BREAK_UOM_ATTRIBUTE
2328     ,       CONTINUOUS_PRICE_BREAK_FLAG -- Continuous price breaks
2329     FROM    QP_LIST_LINES
2330     WHERE   LIST_HEADER_ID = p_list_header_id;
2331 
2332 BEGIN
2333 
2334     IF
2335     (p_list_line_id IS NOT NULL
2336      AND
2337      p_list_line_id <> FND_API.G_MISS_NUM)
2338     AND
2339     (p_list_header_id IS NOT NULL
2340      AND
2341      p_list_header_id <> FND_API.G_MISS_NUM)
2342     THEN
2343             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
2344             THEN
2345                 oe_msg_pub.Add_Exc_Msg
2346                 (   G_PKG_NAME
2347                 ,   'Query Rows'
2348                 ,   'Keys are mutually exclusive: list_line_id = '|| p_list_line_id || ', list_header_id = '|| p_list_header_id
2349                 );
2350             END IF;
2351 
2352         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2353 
2354     END IF;
2355 
2356 
2357     --  Loop over fetched records
2358 IF (p_list_line_id IS NOT NULL) AND (p_list_line_id <> FND_API.G_MISS_NUM) THEN  --Added for performance bug2422019
2359     FOR l_implicit_rec IN l_PRICE_LIST_LINE_csr LOOP
2360 
2361         l_PRICE_LIST_LINE_rec.accrual_qty := l_implicit_rec.ACCRUAL_QTY;
2362         l_PRICE_LIST_LINE_rec.accrual_uom_code := l_implicit_rec.ACCRUAL_UOM_CODE;
2363         l_PRICE_LIST_LINE_rec.arithmetic_operator := l_implicit_rec.ARITHMETIC_OPERATOR;
2364         l_PRICE_LIST_LINE_rec.attribute1 := l_implicit_rec.ATTRIBUTE1;
2365         l_PRICE_LIST_LINE_rec.attribute10 := l_implicit_rec.ATTRIBUTE10;
2366         l_PRICE_LIST_LINE_rec.attribute11 := l_implicit_rec.ATTRIBUTE11;
2367         l_PRICE_LIST_LINE_rec.attribute12 := l_implicit_rec.ATTRIBUTE12;
2368         l_PRICE_LIST_LINE_rec.attribute13 := l_implicit_rec.ATTRIBUTE13;
2369         l_PRICE_LIST_LINE_rec.attribute14 := l_implicit_rec.ATTRIBUTE14;
2370         l_PRICE_LIST_LINE_rec.attribute15 := l_implicit_rec.ATTRIBUTE15;
2371         l_PRICE_LIST_LINE_rec.attribute2 := l_implicit_rec.ATTRIBUTE2;
2372         l_PRICE_LIST_LINE_rec.attribute3 := l_implicit_rec.ATTRIBUTE3;
2373         l_PRICE_LIST_LINE_rec.attribute4 := l_implicit_rec.ATTRIBUTE4;
2374         l_PRICE_LIST_LINE_rec.attribute5 := l_implicit_rec.ATTRIBUTE5;
2375         l_PRICE_LIST_LINE_rec.attribute6 := l_implicit_rec.ATTRIBUTE6;
2376         l_PRICE_LIST_LINE_rec.attribute7 := l_implicit_rec.ATTRIBUTE7;
2377         l_PRICE_LIST_LINE_rec.attribute8 := l_implicit_rec.ATTRIBUTE8;
2378         l_PRICE_LIST_LINE_rec.attribute9 := l_implicit_rec.ATTRIBUTE9;
2379         l_PRICE_LIST_LINE_rec.automatic_flag := l_implicit_rec.AUTOMATIC_FLAG;
2380         l_PRICE_LIST_LINE_rec.base_qty := l_implicit_rec.BASE_QTY;
2381         l_PRICE_LIST_LINE_rec.base_uom_code := l_implicit_rec.BASE_UOM_CODE;
2382         l_PRICE_LIST_LINE_rec.comments := l_implicit_rec.COMMENTS;
2383         l_PRICE_LIST_LINE_rec.context  := l_implicit_rec.CONTEXT;
2384         l_PRICE_LIST_LINE_rec.created_by := l_implicit_rec.CREATED_BY;
2385         l_PRICE_LIST_LINE_rec.creation_date := l_implicit_rec.CREATION_DATE;
2386         l_PRICE_LIST_LINE_rec.effective_period_uom := l_implicit_rec.EFFECTIVE_PERIOD_UOM;
2387         l_PRICE_LIST_LINE_rec.end_date_active := l_implicit_rec.END_DATE_ACTIVE;
2388         l_PRICE_LIST_LINE_rec.estim_accrual_rate := l_implicit_rec.ESTIM_ACCRUAL_RATE;
2389         l_PRICE_LIST_LINE_rec.generate_using_formula_id := l_implicit_rec.GENERATE_USING_FORMULA_ID;
2390         l_PRICE_LIST_LINE_rec.inventory_item_id := l_implicit_rec.INVENTORY_ITEM_ID;
2391         l_PRICE_LIST_LINE_rec.last_updated_by := l_implicit_rec.LAST_UPDATED_BY;
2392         l_PRICE_LIST_LINE_rec.last_update_date := l_implicit_rec.LAST_UPDATE_DATE;
2393         l_PRICE_LIST_LINE_rec.last_update_login := l_implicit_rec.LAST_UPDATE_LOGIN;
2394         l_PRICE_LIST_LINE_rec.list_header_id := l_implicit_rec.LIST_HEADER_ID;
2395         l_PRICE_LIST_LINE_rec.list_line_id := l_implicit_rec.LIST_LINE_ID;
2396         l_PRICE_LIST_LINE_rec.list_line_no := l_implicit_rec.LIST_LINE_NO;
2397         l_PRICE_LIST_LINE_rec.list_line_type_code := l_implicit_rec.LIST_LINE_TYPE_CODE;
2398         l_PRICE_LIST_LINE_rec.list_price := l_implicit_rec.LIST_PRICE;
2399         l_PRICE_LIST_LINE_rec.product_precedence := l_implicit_rec.PRODUCT_PRECEDENCE;
2400         l_PRICE_LIST_LINE_rec.modifier_level_code := l_implicit_rec.MODIFIER_LEVEL_CODE;
2401         l_PRICE_LIST_LINE_rec.number_effective_periods := l_implicit_rec.NUMBER_EFFECTIVE_PERIODS;
2402         l_PRICE_LIST_LINE_rec.operand  := l_implicit_rec.OPERAND;
2403         l_PRICE_LIST_LINE_rec.organization_id := l_implicit_rec.ORGANIZATION_ID;
2404         l_PRICE_LIST_LINE_rec.override_flag := l_implicit_rec.OVERRIDE_FLAG;
2405         l_PRICE_LIST_LINE_rec.percent_price := l_implicit_rec.PERCENT_PRICE;
2406         l_PRICE_LIST_LINE_rec.price_break_type_code := l_implicit_rec.PRICE_BREAK_TYPE_CODE;
2407         l_PRICE_LIST_LINE_rec.price_by_formula_id := l_implicit_rec.PRICE_BY_FORMULA_ID;
2408         l_PRICE_LIST_LINE_rec.primary_uom_flag := l_implicit_rec.PRIMARY_UOM_FLAG;
2409         l_PRICE_LIST_LINE_rec.print_on_invoice_flag := l_implicit_rec.PRINT_ON_INVOICE_FLAG;
2410         l_PRICE_LIST_LINE_rec.program_application_id := l_implicit_rec.PROGRAM_APPLICATION_ID;
2411         l_PRICE_LIST_LINE_rec.program_id := l_implicit_rec.PROGRAM_ID;
2412         l_PRICE_LIST_LINE_rec.program_update_date := l_implicit_rec.PROGRAM_UPDATE_DATE;
2413         l_PRICE_LIST_LINE_rec.rebate_trxn_type_code := l_implicit_rec.REBATE_TRANSACTION_TYPE_CODE;
2414         l_PRICE_LIST_LINE_rec.related_item_id := l_implicit_rec.RELATED_ITEM_ID;
2415         l_PRICE_LIST_LINE_rec.relationship_type_id := l_implicit_rec.RELATIONSHIP_TYPE_ID;
2416         l_PRICE_LIST_LINE_rec.reprice_flag := l_implicit_rec.REPRICE_FLAG;
2417         l_PRICE_LIST_LINE_rec.request_id := l_implicit_rec.REQUEST_ID;
2418         l_PRICE_LIST_LINE_rec.revision := l_implicit_rec.REVISION;
2419         l_PRICE_LIST_LINE_rec.revision_date := l_implicit_rec.REVISION_DATE;
2420         l_PRICE_LIST_LINE_rec.revision_reason_code := l_implicit_rec.REVISION_REASON_CODE;
2421         l_PRICE_LIST_LINE_rec.start_date_active := l_implicit_rec.START_DATE_ACTIVE;
2422         l_PRICE_LIST_LINE_rec.substitution_attribute := l_implicit_rec.SUBSTITUTION_ATTRIBUTE;
2423         l_PRICE_LIST_LINE_rec.substitution_context := l_implicit_rec.SUBSTITUTION_CONTEXT;
2424         l_PRICE_LIST_LINE_rec.substitution_value := l_implicit_rec.SUBSTITUTION_VALUE;
2425         l_PRICE_LIST_LINE_rec.qualification_ind := l_implicit_rec.QUALIFICATION_IND;
2426         l_PRICE_LIST_LINE_rec.recurring_value := l_implicit_rec.RECURRING_VALUE; -- block pricing
2427 	l_PRICE_LIST_LINE_rec.customer_item_id := l_implicit_rec.CUSTOMER_ITEM_ID;
2428         l_PRICE_LIST_LINE_rec.break_uom_code := l_implicit_rec.BREAK_UOM_CODE;
2429 	l_PRICE_LIST_LINE_rec.break_uom_context := l_implicit_rec.BREAK_UOM_CONTEXT;
2430         l_PRICE_LIST_LINE_rec.break_uom_attribute := l_implicit_rec.BREAK_UOM_ATTRIBUTE; --OKS proration
2431         l_PRICE_LIST_LINE_rec.continuous_price_break_flag := l_implicit_rec.CONTINUOUS_PRICE_BREAK_FLAG;
2432 										-- Continuous price breaks
2433   BEGIN
2434     SELECT  RLTD_MODIFIER_GRP_NO
2435     ,       RLTD_MODIFIER_GRP_TYPE
2436     ,       FROM_RLTD_MODIFIER_ID
2437     ,       TO_RLTD_MODIFIER_ID
2438     ,       RLTD_MODIFIER_ID
2439     INTO    l_PRICE_LIST_LINE_rec.rltd_modifier_group_no
2440     ,       l_PRICE_LIST_LINE_rec.rltd_modifier_grp_type
2441     ,       l_PRICE_LIST_LINE_rec.from_rltd_modifier_id
2442     ,       l_PRICE_LIST_LINE_rec.to_rltd_modifier_id
2443     ,       l_PRICE_LIST_LINE_rec.rltd_modifier_id
2444     FROM    QP_RLTD_MODIFIERS
2445     WHERE   ( TO_RLTD_MODIFIER_ID = l_implicit_rec.LIST_LINE_ID );
2446 
2447   EXCEPTION
2448     WHEN NO_DATA_FOUND THEN
2449       l_PRICE_LIST_LINE_rec.rltd_modifier_group_no := null;
2450       l_PRICE_LIST_LINE_rec.rltd_modifier_grp_type := null;
2451       l_PRICE_LIST_LINE_rec.from_rltd_modifier_id := null;
2452       l_PRICE_LIST_LINE_rec.to_rltd_modifier_id := null;
2453       l_PRICE_LIST_LINE_rec.rltd_modifier_id := null;
2454   END;
2455 
2456         l_PRICE_LIST_LINE_tbl(l_PRICE_LIST_LINE_tbl.COUNT + 1) := l_PRICE_LIST_LINE_rec;
2457 
2458     END LOOP;
2459 
2460 /* Added for performance bug2422019 */
2461 
2462 ELSIF (p_list_header_id IS NOT NULL) AND (p_list_header_id <> FND_API.G_MISS_NUM) THEN
2463     FOR l_implicit_rec IN l_PRICE_LIST_LINE_hdr_csr LOOP
2464 
2465         l_PRICE_LIST_LINE_rec.accrual_qty := l_implicit_rec.ACCRUAL_QTY;
2466         l_PRICE_LIST_LINE_rec.accrual_uom_code := l_implicit_rec.ACCRUAL_UOM_CODE;
2467         l_PRICE_LIST_LINE_rec.arithmetic_operator := l_implicit_rec.ARITHMETIC_OPERATOR;
2468         l_PRICE_LIST_LINE_rec.attribute1 := l_implicit_rec.ATTRIBUTE1;
2469         l_PRICE_LIST_LINE_rec.attribute10 := l_implicit_rec.ATTRIBUTE10;
2470         l_PRICE_LIST_LINE_rec.attribute11 := l_implicit_rec.ATTRIBUTE11;
2471         l_PRICE_LIST_LINE_rec.attribute12 := l_implicit_rec.ATTRIBUTE12;
2472         l_PRICE_LIST_LINE_rec.attribute13 := l_implicit_rec.ATTRIBUTE13;
2473         l_PRICE_LIST_LINE_rec.attribute14 := l_implicit_rec.ATTRIBUTE14;
2474         l_PRICE_LIST_LINE_rec.attribute15 := l_implicit_rec.ATTRIBUTE15;
2475         l_PRICE_LIST_LINE_rec.attribute2 := l_implicit_rec.ATTRIBUTE2;
2476         l_PRICE_LIST_LINE_rec.attribute3 := l_implicit_rec.ATTRIBUTE3;
2477         l_PRICE_LIST_LINE_rec.attribute4 := l_implicit_rec.ATTRIBUTE4;
2478         l_PRICE_LIST_LINE_rec.attribute5 := l_implicit_rec.ATTRIBUTE5;
2479         l_PRICE_LIST_LINE_rec.attribute6 := l_implicit_rec.ATTRIBUTE6;
2480         l_PRICE_LIST_LINE_rec.attribute7 := l_implicit_rec.ATTRIBUTE7;
2481         l_PRICE_LIST_LINE_rec.attribute8 := l_implicit_rec.ATTRIBUTE8;
2482         l_PRICE_LIST_LINE_rec.attribute9 := l_implicit_rec.ATTRIBUTE9;
2483         l_PRICE_LIST_LINE_rec.automatic_flag := l_implicit_rec.AUTOMATIC_FLAG;
2484         l_PRICE_LIST_LINE_rec.base_qty := l_implicit_rec.BASE_QTY;
2485         l_PRICE_LIST_LINE_rec.base_uom_code := l_implicit_rec.BASE_UOM_CODE;
2486         l_PRICE_LIST_LINE_rec.comments := l_implicit_rec.COMMENTS;
2487         l_PRICE_LIST_LINE_rec.context  := l_implicit_rec.CONTEXT;
2488         l_PRICE_LIST_LINE_rec.created_by := l_implicit_rec.CREATED_BY;
2489         l_PRICE_LIST_LINE_rec.creation_date := l_implicit_rec.CREATION_DATE;
2490         l_PRICE_LIST_LINE_rec.effective_period_uom := l_implicit_rec.EFFECTIVE_PERIOD_UOM;
2491         l_PRICE_LIST_LINE_rec.end_date_active := l_implicit_rec.END_DATE_ACTIVE;
2492         l_PRICE_LIST_LINE_rec.estim_accrual_rate := l_implicit_rec.ESTIM_ACCRUAL_RATE;
2493         l_PRICE_LIST_LINE_rec.generate_using_formula_id := l_implicit_rec.GENERATE_USING_FORMULA_ID;
2494         l_PRICE_LIST_LINE_rec.inventory_item_id := l_implicit_rec.INVENTORY_ITEM_ID;
2495         l_PRICE_LIST_LINE_rec.last_updated_by := l_implicit_rec.LAST_UPDATED_BY;
2496         l_PRICE_LIST_LINE_rec.last_update_date := l_implicit_rec.LAST_UPDATE_DATE;
2497         l_PRICE_LIST_LINE_rec.last_update_login := l_implicit_rec.LAST_UPDATE_LOGIN;
2498         l_PRICE_LIST_LINE_rec.list_header_id := l_implicit_rec.LIST_HEADER_ID;
2499         l_PRICE_LIST_LINE_rec.list_line_id := l_implicit_rec.LIST_LINE_ID;
2500         l_PRICE_LIST_LINE_rec.list_line_no := l_implicit_rec.LIST_LINE_NO;
2501         l_PRICE_LIST_LINE_rec.list_line_type_code := l_implicit_rec.LIST_LINE_TYPE_CODE;
2502         l_PRICE_LIST_LINE_rec.list_price := l_implicit_rec.LIST_PRICE;
2503         l_PRICE_LIST_LINE_rec.product_precedence := l_implicit_rec.PRODUCT_PRECEDENCE;
2504         l_PRICE_LIST_LINE_rec.modifier_level_code := l_implicit_rec.MODIFIER_LEVEL_CODE;
2505         l_PRICE_LIST_LINE_rec.number_effective_periods := l_implicit_rec.NUMBER_EFFECTIVE_PERIODS;
2506         l_PRICE_LIST_LINE_rec.operand  := l_implicit_rec.OPERAND;
2507         l_PRICE_LIST_LINE_rec.organization_id := l_implicit_rec.ORGANIZATION_ID;
2508         l_PRICE_LIST_LINE_rec.override_flag := l_implicit_rec.OVERRIDE_FLAG;
2509         l_PRICE_LIST_LINE_rec.percent_price := l_implicit_rec.PERCENT_PRICE;
2510         l_PRICE_LIST_LINE_rec.price_break_type_code := l_implicit_rec.PRICE_BREAK_TYPE_CODE;
2511         l_PRICE_LIST_LINE_rec.price_by_formula_id := l_implicit_rec.PRICE_BY_FORMULA_ID;
2512         l_PRICE_LIST_LINE_rec.primary_uom_flag := l_implicit_rec.PRIMARY_UOM_FLAG;
2513         l_PRICE_LIST_LINE_rec.print_on_invoice_flag := l_implicit_rec.PRINT_ON_INVOICE_FLAG;
2514         l_PRICE_LIST_LINE_rec.program_application_id := l_implicit_rec.PROGRAM_APPLICATION_ID;
2515         l_PRICE_LIST_LINE_rec.program_id := l_implicit_rec.PROGRAM_ID;
2516         l_PRICE_LIST_LINE_rec.program_update_date := l_implicit_rec.PROGRAM_UPDATE_DATE;
2517         l_PRICE_LIST_LINE_rec.rebate_trxn_type_code := l_implicit_rec.REBATE_TRANSACTION_TYPE_CODE;
2518         l_PRICE_LIST_LINE_rec.related_item_id := l_implicit_rec.RELATED_ITEM_ID;
2519         l_PRICE_LIST_LINE_rec.relationship_type_id := l_implicit_rec.RELATIONSHIP_TYPE_ID;
2520         l_PRICE_LIST_LINE_rec.reprice_flag := l_implicit_rec.REPRICE_FLAG;
2521         l_PRICE_LIST_LINE_rec.request_id := l_implicit_rec.REQUEST_ID;
2522         l_PRICE_LIST_LINE_rec.revision := l_implicit_rec.REVISION;
2523         l_PRICE_LIST_LINE_rec.revision_date := l_implicit_rec.REVISION_DATE;
2524         l_PRICE_LIST_LINE_rec.revision_reason_code := l_implicit_rec.REVISION_REASON_CODE;
2525         l_PRICE_LIST_LINE_rec.start_date_active := l_implicit_rec.START_DATE_ACTIVE;
2526         l_PRICE_LIST_LINE_rec.substitution_attribute := l_implicit_rec.SUBSTITUTION_ATTRIBUTE;
2527         l_PRICE_LIST_LINE_rec.substitution_context := l_implicit_rec.SUBSTITUTION_CONTEXT;
2528         l_PRICE_LIST_LINE_rec.substitution_value := l_implicit_rec.SUBSTITUTION_VALUE;
2529         l_PRICE_LIST_LINE_rec.qualification_ind := l_implicit_rec.QUALIFICATION_IND;
2530         l_PRICE_LIST_LINE_rec.recurring_value := l_implicit_rec.RECURRING_VALUE; -- block pricing
2531 	l_PRICE_LIST_LINE_rec.customer_item_id := l_implicit_rec.CUSTOMER_ITEM_ID;
2532         l_PRICE_LIST_LINE_rec.break_uom_code := l_implicit_rec.BREAK_UOM_CODE;
2533 	l_PRICE_LIST_LINE_rec.break_uom_context := l_implicit_rec.BREAK_UOM_CONTEXT;
2534         l_PRICE_LIST_LINE_rec.break_uom_attribute := l_implicit_rec.BREAK_UOM_ATTRIBUTE; --OKS proration
2535         l_PRICE_LIST_LINE_rec.continuous_price_break_flag := l_implicit_rec.CONTINUOUS_PRICE_BREAK_FLAG;
2536 										-- Continuous price breaks
2537   BEGIN
2538     SELECT  RLTD_MODIFIER_GRP_NO
2539     ,       RLTD_MODIFIER_GRP_TYPE
2540     ,       FROM_RLTD_MODIFIER_ID
2541     ,       TO_RLTD_MODIFIER_ID
2542     ,       RLTD_MODIFIER_ID
2543     INTO    l_PRICE_LIST_LINE_rec.rltd_modifier_group_no
2544     ,       l_PRICE_LIST_LINE_rec.rltd_modifier_grp_type
2545     ,       l_PRICE_LIST_LINE_rec.from_rltd_modifier_id
2546     ,       l_PRICE_LIST_LINE_rec.to_rltd_modifier_id
2547     ,       l_PRICE_LIST_LINE_rec.rltd_modifier_id
2548     FROM    QP_RLTD_MODIFIERS
2549     WHERE   ( TO_RLTD_MODIFIER_ID = l_implicit_rec.LIST_LINE_ID );
2550 
2551   EXCEPTION
2552     WHEN NO_DATA_FOUND THEN
2553       l_PRICE_LIST_LINE_rec.rltd_modifier_group_no := null;
2554       l_PRICE_LIST_LINE_rec.rltd_modifier_grp_type := null;
2555       l_PRICE_LIST_LINE_rec.from_rltd_modifier_id := null;
2556       l_PRICE_LIST_LINE_rec.to_rltd_modifier_id := null;
2557       l_PRICE_LIST_LINE_rec.rltd_modifier_id := null;
2558   END;
2559 
2560         l_PRICE_LIST_LINE_tbl(l_PRICE_LIST_LINE_tbl.COUNT + 1) := l_PRICE_LIST_LINE_rec;
2561 
2562     END LOOP;
2563 
2564 END IF;
2565 
2566     --  PK sent and no rows found
2567 
2568     IF
2569     (p_list_line_id IS NOT NULL
2570      AND
2571      p_list_line_id <> FND_API.G_MISS_NUM)
2572     AND
2573     (l_PRICE_LIST_LINE_tbl.COUNT = 0)
2574     THEN
2575         RAISE NO_DATA_FOUND;
2576     END IF;
2577 
2578 
2579     --  Return fetched table
2580 
2581     RETURN l_PRICE_LIST_LINE_tbl;
2582 
2583 EXCEPTION
2584 
2585     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2586 
2587         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2588 
2589     WHEN OTHERS THEN
2590 
2591         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
2592         THEN
2593             oe_msg_pub.Add_Exc_Msg
2594             (   G_PKG_NAME
2595             ,   'Query_Rows'
2596             );
2597         END IF;
2598 
2599         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2600 
2601 END Query_Rows;
2602 
2603 --  Procedure       lock_Row
2604 --
2605 
2606 PROCEDURE Lock_Row
2607 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2608 ,   p_PRICE_LIST_LINE_rec           IN  QP_Price_List_PUB.Price_List_Line_Rec_Type
2609 ,   x_PRICE_LIST_LINE_rec           OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Line_Rec_Type
2610 )
2611 IS
2612 l_PRICE_LIST_LINE_rec         QP_Price_List_PUB.Price_List_Line_Rec_Type;
2613 BEGIN
2614 
2615     QP_Price_List_Line_Util.Print_Price_List_line(p_PRICE_LIST_LINE_rec,
2616                                                    1);
2617 
2618 
2619     SELECT  ACCRUAL_QTY
2620     ,       ACCRUAL_UOM_CODE
2621     ,       ARITHMETIC_OPERATOR
2622     ,       ATTRIBUTE1
2623     ,       ATTRIBUTE10
2624     ,       ATTRIBUTE11
2625     ,       ATTRIBUTE12
2626     ,       ATTRIBUTE13
2627     ,       ATTRIBUTE14
2628     ,       ATTRIBUTE15
2629     ,       ATTRIBUTE2
2630     ,       ATTRIBUTE3
2631     ,       ATTRIBUTE4
2632     ,       ATTRIBUTE5
2633     ,       ATTRIBUTE6
2634     ,       ATTRIBUTE7
2635     ,       ATTRIBUTE8
2636     ,       ATTRIBUTE9
2637     ,       AUTOMATIC_FLAG
2638     ,       BASE_QTY
2639     ,       BASE_UOM_CODE
2640     ,       COMMENTS
2641     ,       CONTEXT
2642     ,       CREATED_BY
2643     ,       CREATION_DATE
2644     ,       EFFECTIVE_PERIOD_UOM
2645     ,       END_DATE_ACTIVE
2646     ,       ESTIM_ACCRUAL_RATE
2647     ,       GENERATE_USING_FORMULA_ID
2648     ,       INVENTORY_ITEM_ID
2649     ,       LAST_UPDATED_BY
2650     ,       LAST_UPDATE_DATE
2651     ,       LAST_UPDATE_LOGIN
2652     ,       LIST_HEADER_ID
2653     ,       LIST_LINE_ID
2654     ,       LIST_LINE_TYPE_CODE
2655     ,       LIST_PRICE
2656     ,       PRODUCT_PRECEDENCE
2657     ,       MODIFIER_LEVEL_CODE
2658     ,       NUMBER_EFFECTIVE_PERIODS
2659     ,       OPERAND
2660     ,       ORGANIZATION_ID
2661     ,       OVERRIDE_FLAG
2662     ,       PERCENT_PRICE
2663     ,       PRICE_BREAK_TYPE_CODE
2664     ,       PRICE_BY_FORMULA_ID
2665     ,       PRIMARY_UOM_FLAG
2666     ,       PRINT_ON_INVOICE_FLAG
2667     ,       PROGRAM_APPLICATION_ID
2668     ,       PROGRAM_ID
2669     ,       PROGRAM_UPDATE_DATE
2670     ,       REBATE_TRANSACTION_TYPE_CODE
2671     ,       RECURRING_VALUE -- block pricing
2672     ,       RELATED_ITEM_ID
2673     ,       RELATIONSHIP_TYPE_ID
2674     ,       REPRICE_FLAG
2675     ,       REQUEST_ID
2676     ,       REVISION
2677     ,       REVISION_DATE
2678     ,       REVISION_REASON_CODE
2679     ,       START_DATE_ACTIVE
2680     ,       SUBSTITUTION_ATTRIBUTE
2681     ,       SUBSTITUTION_CONTEXT
2682     ,       SUBSTITUTION_VALUE
2683     ,       CUSTOMER_ITEM_ID
2684     ,       BREAK_UOM_CODE
2685     ,	    BREAK_UOM_CONTEXT
2686     ,       BREAK_UOM_ATTRIBUTE
2687     ,       CONTINUOUS_PRICE_BREAK_FLAG -- Continuous price breaks
2688     INTO    l_PRICE_LIST_LINE_rec.accrual_qty
2689     ,       l_PRICE_LIST_LINE_rec.accrual_uom_code
2690     ,       l_PRICE_LIST_LINE_rec.arithmetic_operator
2691     ,       l_PRICE_LIST_LINE_rec.attribute1
2692     ,       l_PRICE_LIST_LINE_rec.attribute10
2693     ,       l_PRICE_LIST_LINE_rec.attribute11
2694     ,       l_PRICE_LIST_LINE_rec.attribute12
2695     ,       l_PRICE_LIST_LINE_rec.attribute13
2696     ,       l_PRICE_LIST_LINE_rec.attribute14
2697     ,       l_PRICE_LIST_LINE_rec.attribute15
2698     ,       l_PRICE_LIST_LINE_rec.attribute2
2699     ,       l_PRICE_LIST_LINE_rec.attribute3
2700     ,       l_PRICE_LIST_LINE_rec.attribute4
2701     ,       l_PRICE_LIST_LINE_rec.attribute5
2702     ,       l_PRICE_LIST_LINE_rec.attribute6
2703     ,       l_PRICE_LIST_LINE_rec.attribute7
2704     ,       l_PRICE_LIST_LINE_rec.attribute8
2705     ,       l_PRICE_LIST_LINE_rec.attribute9
2706     ,       l_PRICE_LIST_LINE_rec.automatic_flag
2707     ,       l_PRICE_LIST_LINE_rec.base_qty
2708     ,       l_PRICE_LIST_LINE_rec.base_uom_code
2709     ,       l_PRICE_LIST_LINE_rec.comments
2710     ,       l_PRICE_LIST_LINE_rec.context
2711     ,       l_PRICE_LIST_LINE_rec.created_by
2712     ,       l_PRICE_LIST_LINE_rec.creation_date
2713     ,       l_PRICE_LIST_LINE_rec.effective_period_uom
2714     ,       l_PRICE_LIST_LINE_rec.end_date_active
2715     ,       l_PRICE_LIST_LINE_rec.estim_accrual_rate
2716     ,       l_PRICE_LIST_LINE_rec.generate_using_formula_id
2717     ,       l_PRICE_LIST_LINE_rec.inventory_item_id
2718     ,       l_PRICE_LIST_LINE_rec.last_updated_by
2719     ,       l_PRICE_LIST_LINE_rec.last_update_date
2720     ,       l_PRICE_LIST_LINE_rec.last_update_login
2721     ,       l_PRICE_LIST_LINE_rec.list_header_id
2722     ,       l_PRICE_LIST_LINE_rec.list_line_id
2723     ,       l_PRICE_LIST_LINE_rec.list_line_type_code
2724     ,       l_PRICE_LIST_LINE_rec.list_price
2725     ,       l_PRICE_LIST_LINE_rec.product_precedence
2726     ,       l_PRICE_LIST_LINE_rec.modifier_level_code
2727     ,       l_PRICE_LIST_LINE_rec.number_effective_periods
2728     ,       l_PRICE_LIST_LINE_rec.operand
2729     ,       l_PRICE_LIST_LINE_rec.organization_id
2730     ,       l_PRICE_LIST_LINE_rec.override_flag
2731     ,       l_PRICE_LIST_LINE_rec.percent_price
2732     ,       l_PRICE_LIST_LINE_rec.price_break_type_code
2733     ,       l_PRICE_LIST_LINE_rec.price_by_formula_id
2734     ,       l_PRICE_LIST_LINE_rec.primary_uom_flag
2735     ,       l_PRICE_LIST_LINE_rec.print_on_invoice_flag
2736     ,       l_PRICE_LIST_LINE_rec.program_application_id
2737     ,       l_PRICE_LIST_LINE_rec.program_id
2738     ,       l_PRICE_LIST_LINE_rec.program_update_date
2739     ,       l_PRICE_LIST_LINE_rec.rebate_trxn_type_code
2740     ,       l_PRICE_LIST_LINE_rec.recurring_value -- block pricing
2741     ,       l_PRICE_LIST_LINE_rec.related_item_id
2742     ,       l_PRICE_LIST_LINE_rec.relationship_type_id
2743     ,       l_PRICE_LIST_LINE_rec.reprice_flag
2744     ,       l_PRICE_LIST_LINE_rec.request_id
2745     ,       l_PRICE_LIST_LINE_rec.revision
2746     ,       l_PRICE_LIST_LINE_rec.revision_date
2747     ,       l_PRICE_LIST_LINE_rec.revision_reason_code
2748     ,       l_PRICE_LIST_LINE_rec.start_date_active
2749     ,       l_PRICE_LIST_LINE_rec.substitution_attribute
2750     ,       l_PRICE_LIST_LINE_rec.substitution_context
2751     ,       l_PRICE_LIST_LINE_rec.substitution_value
2752     ,       l_PRICE_LIST_LINE_rec.customer_item_id
2753     ,       l_PRICE_LIST_LINE_rec.break_uom_code
2754     ,	    l_PRICE_LIST_LINE_rec.break_uom_context
2755     ,       l_PRICE_LIST_LINE_rec.break_uom_attribute
2756     ,       l_PRICE_LIST_LINE_rec.continuous_price_break_flag -- Continuous price breaks
2757     FROM    QP_LIST_LINES
2758     WHERE   LIST_LINE_ID = p_PRICE_LIST_LINE_rec.list_line_id
2759         FOR UPDATE NOWAIT;
2760 
2761 
2762     --  Row locked. Compare IN attributes to DB attributes.
2763 
2764     IF  QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.accrual_qty,
2765                          l_PRICE_LIST_LINE_rec.accrual_qty)
2766     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.accrual_uom_code,
2767                          l_PRICE_LIST_LINE_rec.accrual_uom_code)
2768     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.arithmetic_operator,
2769                          l_PRICE_LIST_LINE_rec.arithmetic_operator)
2770     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute1,
2771                          l_PRICE_LIST_LINE_rec.attribute1)
2772     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute10,
2773                          l_PRICE_LIST_LINE_rec.attribute10)
2774     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute11,
2775                          l_PRICE_LIST_LINE_rec.attribute11)
2776     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute12,
2777                          l_PRICE_LIST_LINE_rec.attribute12)
2778     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute13,
2779                          l_PRICE_LIST_LINE_rec.attribute13)
2780     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute14,
2781                          l_PRICE_LIST_LINE_rec.attribute14)
2782     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute15,
2783                          l_PRICE_LIST_LINE_rec.attribute15)
2784     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute2,
2785                          l_PRICE_LIST_LINE_rec.attribute2)
2786     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute3,
2787                          l_PRICE_LIST_LINE_rec.attribute3)
2788     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute4,
2789                          l_PRICE_LIST_LINE_rec.attribute4)
2790     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute5,
2791                          l_PRICE_LIST_LINE_rec.attribute5)
2792     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute6,
2793                          l_PRICE_LIST_LINE_rec.attribute6)
2794     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute7,
2795                          l_PRICE_LIST_LINE_rec.attribute7)
2796     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute8,
2797                          l_PRICE_LIST_LINE_rec.attribute8)
2798     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.attribute9,
2799                          l_PRICE_LIST_LINE_rec.attribute9)
2800     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.automatic_flag,
2801                          l_PRICE_LIST_LINE_rec.automatic_flag)
2802     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.base_qty,
2803                          l_PRICE_LIST_LINE_rec.base_qty)
2804     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.base_uom_code,
2805                          l_PRICE_LIST_LINE_rec.base_uom_code)
2806     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.comments,
2807                          l_PRICE_LIST_LINE_rec.comments)
2808     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.context,
2809                          l_PRICE_LIST_LINE_rec.context)
2810     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.created_by,
2811                          l_PRICE_LIST_LINE_rec.created_by)
2812     AND QP_GLOBALS.Equal(trunc(p_PRICE_LIST_LINE_rec.creation_date),
2813                          trunc(l_PRICE_LIST_LINE_rec.creation_date))
2814     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.effective_period_uom,
2815                          l_PRICE_LIST_LINE_rec.effective_period_uom)
2816     AND QP_GLOBALS.Equal(trunc(p_PRICE_LIST_LINE_rec.end_date_active),
2817                          trunc(l_PRICE_LIST_LINE_rec.end_date_active))
2818     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.estim_accrual_rate,
2819                          l_PRICE_LIST_LINE_rec.estim_accrual_rate)
2820     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.generate_using_formula_id,
2821                          l_PRICE_LIST_LINE_rec.generate_using_formula_id)
2822     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.inventory_item_id,
2823                          l_PRICE_LIST_LINE_rec.inventory_item_id)
2824     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.last_updated_by,
2825                          l_PRICE_LIST_LINE_rec.last_updated_by)
2826     AND QP_GLOBALS.Equal(trunc(p_PRICE_LIST_LINE_rec.last_update_date),
2827                          trunc(l_PRICE_LIST_LINE_rec.last_update_date))
2828     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.last_update_login,
2829                          l_PRICE_LIST_LINE_rec.last_update_login)
2830     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.list_header_id,
2831                          l_PRICE_LIST_LINE_rec.list_header_id)
2832     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.list_line_id,
2833                          l_PRICE_LIST_LINE_rec.list_line_id)
2834     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.list_line_type_code,
2835                          l_PRICE_LIST_LINE_rec.list_line_type_code)
2836     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.list_price,
2837                          l_PRICE_LIST_LINE_rec.list_price)
2838     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.product_precedence,
2839                          l_PRICE_LIST_LINE_rec.product_precedence)
2840     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.modifier_level_code,
2841                          l_PRICE_LIST_LINE_rec.modifier_level_code)
2842     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.number_effective_periods,
2843                          l_PRICE_LIST_LINE_rec.number_effective_periods)
2844     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.operand,
2845                          l_PRICE_LIST_LINE_rec.operand)
2846     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.organization_id,
2847                          l_PRICE_LIST_LINE_rec.organization_id)
2848     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.override_flag,
2849                          l_PRICE_LIST_LINE_rec.override_flag)
2850     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.percent_price,
2851                          l_PRICE_LIST_LINE_rec.percent_price)
2852     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.price_break_type_code,
2853                          l_PRICE_LIST_LINE_rec.price_break_type_code)
2854     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.price_by_formula_id,
2855                          l_PRICE_LIST_LINE_rec.price_by_formula_id)
2856     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.primary_uom_flag,
2857                          l_PRICE_LIST_LINE_rec.primary_uom_flag)
2858     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.print_on_invoice_flag,
2859                          l_PRICE_LIST_LINE_rec.print_on_invoice_flag)
2860     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.program_application_id,
2861                          l_PRICE_LIST_LINE_rec.program_application_id)
2862     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.program_id,
2863                          l_PRICE_LIST_LINE_rec.program_id)
2864     AND QP_GLOBALS.Equal(trunc(p_PRICE_LIST_LINE_rec.program_update_date),
2865                          trunc(l_PRICE_LIST_LINE_rec.program_update_date))
2866     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.rebate_trxn_type_code,
2867                          l_PRICE_LIST_LINE_rec.rebate_trxn_type_code)
2868     -- block pricing
2869     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.recurring_value,
2870                          l_PRICE_LIST_LINE_rec.recurring_value)
2871     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.related_item_id,
2872                          l_PRICE_LIST_LINE_rec.related_item_id)
2873     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.relationship_type_id,
2874                          l_PRICE_LIST_LINE_rec.relationship_type_id)
2875 --    AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.reprice_flag,
2876 --                         l_PRICE_LIST_LINE_rec.reprice_flag)
2877     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.request_id,
2878                          l_PRICE_LIST_LINE_rec.request_id)
2879     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.revision,
2880                          l_PRICE_LIST_LINE_rec.revision)
2881     AND QP_GLOBALS.Equal(trunc(p_PRICE_LIST_LINE_rec.revision_date),
2882                          trunc(l_PRICE_LIST_LINE_rec.revision_date))
2883     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.revision_reason_code,
2884                          l_PRICE_LIST_LINE_rec.revision_reason_code)
2885     AND QP_GLOBALS.Equal(trunc(p_PRICE_LIST_LINE_rec.start_date_active),
2886                          trunc(l_PRICE_LIST_LINE_rec.start_date_active))
2887     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.substitution_attribute,
2888                          l_PRICE_LIST_LINE_rec.substitution_attribute)
2889     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.substitution_context,
2890                          l_PRICE_LIST_LINE_rec.substitution_context)
2891     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.substitution_value,
2892                          l_PRICE_LIST_LINE_rec.substitution_value)
2893     AND QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.customer_item_id,
2894                          l_PRICE_LIST_LINE_rec.customer_item_id)
2895     THEN
2896 
2897         --  Row has not changed. Set out parameter.
2898 
2899         x_PRICE_LIST_LINE_rec          := l_PRICE_LIST_LINE_rec;
2900 
2901         --  Set return status
2902 
2903         x_return_status                := FND_API.G_RET_STS_SUCCESS;
2904         x_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_SUCCESS;
2905 
2906     ELSE
2907 
2908         --  Row has changed by another user.
2909 
2910         x_return_status                := FND_API.G_RET_STS_ERROR;
2911         x_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_ERROR;
2912 
2913         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR)
2914         THEN
2915 
2916             FND_MESSAGE.SET_NAME('QP','OE_LOCK_ROW_CHANGED');
2917             oe_msg_pub.Add;
2918 
2919         END IF;
2920 
2921     END IF;
2922 
2923 EXCEPTION
2924 
2925     WHEN NO_DATA_FOUND THEN
2926 
2927         x_return_status                := FND_API.G_RET_STS_ERROR;
2928         x_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_ERROR;
2929 
2930         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR)
2931         THEN
2932 
2933             FND_MESSAGE.SET_NAME('QP','OE_LOCK_ROW_DELETED');
2934             oe_msg_pub.Add;
2935 
2936         END IF;
2937     WHEN APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION THEN
2938 
2939         x_return_status                := FND_API.G_RET_STS_ERROR;
2940         x_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_ERROR;
2941 
2942         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR)
2943         THEN
2944 
2945             FND_MESSAGE.SET_NAME('QP','OE_LOCK_ROW_ALREADY_LOCKED');
2946             oe_msg_pub.Add;
2947 
2948         END IF;
2949     WHEN OTHERS THEN
2950 
2951         x_return_status                := FND_API.G_RET_STS_UNEXP_ERROR;
2952         x_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2953 
2954         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
2955         THEN
2956             oe_msg_pub.Add_Exc_Msg
2957             (   G_PKG_NAME
2958             ,   'Lock_Row'
2959             );
2960         END IF;
2961 
2962 END Lock_Row;
2963 
2964 --  Function Get_Values
2965 
2966 FUNCTION Get_Values
2967 (   p_PRICE_LIST_LINE_rec           IN  QP_Price_List_PUB.Price_List_Line_Rec_Type
2968 ,   p_old_PRICE_LIST_LINE_rec       IN  QP_Price_List_PUB.Price_List_Line_Rec_Type :=
2969                                         QP_Price_List_PUB.G_MISS_PRICE_LIST_LINE_REC
2970 ) RETURN QP_Price_List_PUB.Price_List_Line_Val_Rec_Type
2971 IS
2972 l_PRICE_LIST_LINE_val_rec     QP_Price_List_PUB.Price_List_Line_Val_Rec_Type;
2973 BEGIN
2974 
2975   /*
2976     IF p_PRICE_LIST_LINE_rec.accrual_uom_code IS NOT NULL AND
2977         p_PRICE_LIST_LINE_rec.accrual_uom_code <> FND_API.G_MISS_CHAR AND
2978         NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.accrual_uom_code,
2979         p_old_PRICE_LIST_LINE_rec.accrual_uom_code)
2980     THEN
2981         l_PRICE_LIST_LINE_val_rec.accrual_uom := QP_Id_To_Value.Accrual_Uom
2982         (   p_accrual_uom_code            => p_PRICE_LIST_LINE_rec.accrual_uom_code
2983         );
2984     END IF;
2985 
2986    */
2987 
2988     IF p_PRICE_LIST_LINE_rec.automatic_flag IS NOT NULL AND
2989         p_PRICE_LIST_LINE_rec.automatic_flag <> FND_API.G_MISS_CHAR AND
2990         NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.automatic_flag,
2991         p_old_PRICE_LIST_LINE_rec.automatic_flag)
2992     THEN
2993         l_PRICE_LIST_LINE_val_rec.automatic := QP_Id_To_Value.Automatic
2994         (   p_automatic_flag              => p_PRICE_LIST_LINE_rec.automatic_flag
2995         );
2996     END IF;
2997 
2998     IF p_PRICE_LIST_LINE_rec.base_uom_code IS NOT NULL AND
2999         p_PRICE_LIST_LINE_rec.base_uom_code <> FND_API.G_MISS_CHAR AND
3000         NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.base_uom_code,
3001         p_old_PRICE_LIST_LINE_rec.base_uom_code)
3002     THEN
3003         l_PRICE_LIST_LINE_val_rec.base_uom := QP_Id_To_Value.Base_Uom
3004         (   p_base_uom_code               => p_PRICE_LIST_LINE_rec.base_uom_code
3005         );
3006     END IF;
3007 
3008     IF p_PRICE_LIST_LINE_rec.generate_using_formula_id IS NOT NULL AND
3009         p_PRICE_LIST_LINE_rec.generate_using_formula_id <> FND_API.G_MISS_NUM AND
3010         NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.generate_using_formula_id,
3011         p_old_PRICE_LIST_LINE_rec.generate_using_formula_id)
3012     THEN
3013         l_PRICE_LIST_LINE_val_rec.generate_using_formula := QP_Id_To_Value.Generate_Using_Formula
3014         (   p_generate_using_formula_id   => p_PRICE_LIST_LINE_rec.generate_using_formula_id
3015         );
3016     END IF;
3017 
3018 
3019     IF p_PRICE_LIST_LINE_rec.inventory_item_id IS NOT NULL AND
3020         p_PRICE_LIST_LINE_rec.inventory_item_id <> FND_API.G_MISS_NUM AND
3021         NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.inventory_item_id,
3022         p_old_PRICE_LIST_LINE_rec.inventory_item_id)
3023     THEN
3024         l_PRICE_LIST_LINE_val_rec.inventory_item := QP_Id_To_Value.Inventory_Item
3025         (   p_inventory_item_id           => p_PRICE_LIST_LINE_rec.inventory_item_id
3026         );
3027     END IF;
3028 
3029     IF p_PRICE_LIST_LINE_rec.list_header_id IS NOT NULL AND
3030         p_PRICE_LIST_LINE_rec.list_header_id <> FND_API.G_MISS_NUM AND
3031         NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.list_header_id,
3032         p_old_PRICE_LIST_LINE_rec.list_header_id)
3033     THEN
3034         l_PRICE_LIST_LINE_val_rec.list_header := QP_Id_To_Value.List_Header
3035         (   p_list_header_id              => p_PRICE_LIST_LINE_rec.list_header_id
3036         );
3037     END IF;
3038 
3039     IF p_PRICE_LIST_LINE_rec.list_line_id IS NOT NULL AND
3040         p_PRICE_LIST_LINE_rec.list_line_id <> FND_API.G_MISS_NUM AND
3041         NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.list_line_id,
3042         p_old_PRICE_LIST_LINE_rec.list_line_id)
3043     THEN
3044         l_PRICE_LIST_LINE_val_rec.list_line := QP_Id_To_Value.List_Line
3045         (   p_list_line_id                => p_PRICE_LIST_LINE_rec.list_line_id
3046         );
3047     END IF;
3048 
3049     IF p_PRICE_LIST_LINE_rec.list_line_type_code IS NOT NULL AND
3050         p_PRICE_LIST_LINE_rec.list_line_type_code <> FND_API.G_MISS_CHAR AND
3051         NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.list_line_type_code,
3052         p_old_PRICE_LIST_LINE_rec.list_line_type_code)
3053     THEN
3054         l_PRICE_LIST_LINE_val_rec.list_line_type := QP_Id_To_Value.List_Line_Type
3055         (   p_list_line_type_code         => p_PRICE_LIST_LINE_rec.list_line_type_code
3056         );
3057     END IF;
3058 
3059     IF p_PRICE_LIST_LINE_rec.modifier_level_code IS NOT NULL AND
3060         p_PRICE_LIST_LINE_rec.modifier_level_code <> FND_API.G_MISS_CHAR AND
3061         NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.modifier_level_code,
3062         p_old_PRICE_LIST_LINE_rec.modifier_level_code)
3063     THEN
3064         l_PRICE_LIST_LINE_val_rec.modifier_level := QP_Id_To_Value.Modifier_Level
3065         (   p_modifier_level_code         => p_PRICE_LIST_LINE_rec.modifier_level_code
3066         );
3067     END IF;
3068 
3069     IF p_PRICE_LIST_LINE_rec.organization_id IS NOT NULL AND
3070         p_PRICE_LIST_LINE_rec.organization_id <> FND_API.G_MISS_NUM AND
3071         NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.organization_id,
3072         p_old_PRICE_LIST_LINE_rec.organization_id)
3073     THEN
3074         l_PRICE_LIST_LINE_val_rec.organization := QP_Id_To_Value.Organization
3075         (   p_organization_id             => p_PRICE_LIST_LINE_rec.organization_id
3076         );
3077     END IF;
3078 
3079     IF p_PRICE_LIST_LINE_rec.override_flag IS NOT NULL AND
3080         p_PRICE_LIST_LINE_rec.override_flag <> FND_API.G_MISS_CHAR AND
3081         NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.override_flag,
3082         p_old_PRICE_LIST_LINE_rec.override_flag)
3083     THEN
3084         l_PRICE_LIST_LINE_val_rec.override := QP_Id_To_Value.Override
3085         (   p_override_flag               => p_PRICE_LIST_LINE_rec.override_flag
3086         );
3087     END IF;
3088 
3089     IF p_PRICE_LIST_LINE_rec.price_break_type_code IS NOT NULL AND
3090         p_PRICE_LIST_LINE_rec.price_break_type_code <> FND_API.G_MISS_CHAR AND
3091         NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.price_break_type_code,
3092         p_old_PRICE_LIST_LINE_rec.price_break_type_code)
3093     THEN
3094         l_PRICE_LIST_LINE_val_rec.price_break_type := QP_Id_To_Value.Price_Break_Type
3095         (   p_price_break_type_code       => p_PRICE_LIST_LINE_rec.price_break_type_code
3096         );
3097     END IF;
3098 
3099     IF p_PRICE_LIST_LINE_rec.price_by_formula_id IS NOT NULL AND
3100         p_PRICE_LIST_LINE_rec.price_by_formula_id <> FND_API.G_MISS_NUM AND
3101         NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.price_by_formula_id,
3102         p_old_PRICE_LIST_LINE_rec.price_by_formula_id)
3103     THEN
3104         l_PRICE_LIST_LINE_val_rec.price_by_formula := QP_Id_To_Value.Price_By_Formula
3105         (   p_price_by_formula_id         => p_PRICE_LIST_LINE_rec.price_by_formula_id
3106         );
3107     END IF;
3108 
3109     IF p_PRICE_LIST_LINE_rec.primary_uom_flag IS NOT NULL AND
3110         p_PRICE_LIST_LINE_rec.primary_uom_flag <> FND_API.G_MISS_CHAR AND
3111         NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.primary_uom_flag,
3112         p_old_PRICE_LIST_LINE_rec.primary_uom_flag)
3113     THEN
3114         l_PRICE_LIST_LINE_val_rec.primary_uom := QP_Id_To_Value.Primary_Uom
3115         (   p_primary_uom_flag            => p_PRICE_LIST_LINE_rec.primary_uom_flag
3116         );
3117     END IF;
3118 
3119     IF p_PRICE_LIST_LINE_rec.print_on_invoice_flag IS NOT NULL AND
3120         p_PRICE_LIST_LINE_rec.print_on_invoice_flag <> FND_API.G_MISS_CHAR AND
3121         NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.print_on_invoice_flag,
3122         p_old_PRICE_LIST_LINE_rec.print_on_invoice_flag)
3123     THEN
3124         l_PRICE_LIST_LINE_val_rec.print_on_invoice := QP_Id_To_Value.Print_On_Invoice
3125         (   p_print_on_invoice_flag       => p_PRICE_LIST_LINE_rec.print_on_invoice_flag
3126         );
3127     END IF;
3128 
3129     IF p_PRICE_LIST_LINE_rec.rebate_trxn_type_code IS NOT NULL AND
3130         p_PRICE_LIST_LINE_rec.rebate_trxn_type_code <> FND_API.G_MISS_CHAR AND
3131         NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.rebate_trxn_type_code,
3132         p_old_PRICE_LIST_LINE_rec.rebate_trxn_type_code)
3133     THEN
3134         l_PRICE_LIST_LINE_val_rec.rebate_transaction_type := QP_Id_To_Value.Rebate_Transaction_Type
3135         (   p_rebate_trxn_type_code       => p_PRICE_LIST_LINE_rec.rebate_trxn_type_code
3136         );
3137     END IF;
3138 
3139     IF p_PRICE_LIST_LINE_rec.related_item_id IS NOT NULL AND
3140         p_PRICE_LIST_LINE_rec.related_item_id <> FND_API.G_MISS_NUM AND
3141         NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.related_item_id,
3142         p_old_PRICE_LIST_LINE_rec.related_item_id)
3143     THEN
3144         l_PRICE_LIST_LINE_val_rec.related_item := QP_Id_To_Value.Related_Item
3145         (   p_related_item_id             => p_PRICE_LIST_LINE_rec.related_item_id
3146         );
3147     END IF;
3148 
3149     IF p_PRICE_LIST_LINE_rec.relationship_type_id IS NOT NULL AND
3150         p_PRICE_LIST_LINE_rec.relationship_type_id <> FND_API.G_MISS_NUM AND
3151         NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.relationship_type_id,
3152         p_old_PRICE_LIST_LINE_rec.relationship_type_id)
3153     THEN
3154         l_PRICE_LIST_LINE_val_rec.relationship_type := QP_Id_To_Value.Relationship_Type
3155         (   p_relationship_type_id        => p_PRICE_LIST_LINE_rec.relationship_type_id
3156         );
3157     END IF;
3158 
3159     IF p_PRICE_LIST_LINE_rec.reprice_flag IS NOT NULL AND
3160         p_PRICE_LIST_LINE_rec.reprice_flag <> FND_API.G_MISS_CHAR AND
3161         NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.reprice_flag,
3162         p_old_PRICE_LIST_LINE_rec.reprice_flag)
3163     THEN
3164         l_PRICE_LIST_LINE_val_rec.reprice := QP_Id_To_Value.Reprice
3165         (   p_reprice_flag                => p_PRICE_LIST_LINE_rec.reprice_flag
3166         );
3167     END IF;
3168 
3169     IF p_PRICE_LIST_LINE_rec.revision_reason_code IS NOT NULL AND
3170         p_PRICE_LIST_LINE_rec.revision_reason_code <> FND_API.G_MISS_CHAR AND
3171         NOT QP_GLOBALS.Equal(p_PRICE_LIST_LINE_rec.revision_reason_code,
3172         p_old_PRICE_LIST_LINE_rec.revision_reason_code)
3173     THEN
3174         l_PRICE_LIST_LINE_val_rec.revision_reason := QP_Id_To_Value.Revision_Reason
3175         (   p_revision_reason_code        => p_PRICE_LIST_LINE_rec.revision_reason_code
3176         );
3177     END IF;
3178 
3179     RETURN l_PRICE_LIST_LINE_val_rec;
3180 
3181 END Get_Values;
3182 
3183 --  Function Get_Ids
3184 
3185 FUNCTION Get_Ids
3186 (   p_PRICE_LIST_LINE_rec           IN  QP_Price_List_PUB.Price_List_Line_Rec_Type
3187 ,   p_PRICE_LIST_LINE_val_rec       IN  QP_Price_List_PUB.Price_List_Line_Val_Rec_Type
3188 ) RETURN QP_Price_List_PUB.Price_List_Line_Rec_Type
3189 IS
3190 l_PRICE_LIST_LINE_rec         QP_Price_List_PUB.Price_List_Line_Rec_Type;
3191 BEGIN
3192 
3193     --  initialize  return_status.
3194 
3195     l_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_SUCCESS;
3196 
3197     --  initialize l_PRICE_LIST_LINE_rec.
3198 
3199     l_PRICE_LIST_LINE_rec := p_PRICE_LIST_LINE_rec;
3200 
3201     IF  p_PRICE_LIST_LINE_val_rec.accrual_uom <> FND_API.G_MISS_CHAR
3202     THEN
3203 
3204         IF p_PRICE_LIST_LINE_rec.accrual_uom_code <> FND_API.G_MISS_CHAR THEN
3205 
3206             l_PRICE_LIST_LINE_rec.accrual_uom_code := p_PRICE_LIST_LINE_rec.accrual_uom_code;
3207 
3208             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
3209             THEN
3210 
3211                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
3212                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','accrual_uom');
3213                 oe_msg_pub.Add;
3214 
3215             END IF;
3216 
3217         ELSE
3218 
3219 		 /*
3220 
3221 		  l_PRICE_LIST_LINE_rec.accrual_uom_code := QP_Value_To_Id.accrual_uom
3222             (   p_accrual_uom                 => p_PRICE_LIST_LINE_val_rec.accrual_uom
3223             );
3224 
3225            */
3226 
3227             IF l_PRICE_LIST_LINE_rec.accrual_uom_code = FND_API.G_MISS_CHAR THEN
3228                 l_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_ERROR;
3229             END IF;
3230 
3231         END IF;
3232 
3233     END IF;
3234 
3235     IF  p_PRICE_LIST_LINE_val_rec.automatic <> FND_API.G_MISS_CHAR
3236     THEN
3237 
3238         IF p_PRICE_LIST_LINE_rec.automatic_flag <> FND_API.G_MISS_CHAR THEN
3239 
3240             l_PRICE_LIST_LINE_rec.automatic_flag := p_PRICE_LIST_LINE_rec.automatic_flag;
3241 
3242             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
3243             THEN
3244 
3245                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
3246                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','automatic');
3247                 oe_msg_pub.Add;
3248 
3249             END IF;
3250 
3251         ELSE
3252 
3253             l_PRICE_LIST_LINE_rec.automatic_flag := QP_Value_To_Id.automatic
3254             (   p_automatic                   => p_PRICE_LIST_LINE_val_rec.automatic
3255             );
3256 
3257             IF l_PRICE_LIST_LINE_rec.automatic_flag = FND_API.G_MISS_CHAR THEN
3258                 l_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_ERROR;
3259             END IF;
3260 
3261         END IF;
3262 
3263     END IF;
3264 
3265     IF  p_PRICE_LIST_LINE_val_rec.base_uom <> FND_API.G_MISS_CHAR
3266     THEN
3267 
3268         IF p_PRICE_LIST_LINE_rec.base_uom_code <> FND_API.G_MISS_CHAR THEN
3269 
3270             l_PRICE_LIST_LINE_rec.base_uom_code := p_PRICE_LIST_LINE_rec.base_uom_code;
3271 
3272             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
3273             THEN
3274 
3275                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
3276                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','base_uom');
3277                 oe_msg_pub.Add;
3278 
3279             END IF;
3280 
3281         ELSE
3282 
3283             l_PRICE_LIST_LINE_rec.base_uom_code := QP_Value_To_Id.base_uom
3284             (   p_base_uom                    => p_PRICE_LIST_LINE_val_rec.base_uom
3285             );
3286 
3287             IF l_PRICE_LIST_LINE_rec.base_uom_code = FND_API.G_MISS_CHAR THEN
3288                 l_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_ERROR;
3289             END IF;
3290 
3291         END IF;
3292 
3293     END IF;
3294 
3295     IF  p_PRICE_LIST_LINE_val_rec.generate_using_formula <> FND_API.G_MISS_CHAR
3296     THEN
3297 
3298         IF p_PRICE_LIST_LINE_rec.generate_using_formula_id <> FND_API.G_MISS_NUM THEN
3299 
3300             l_PRICE_LIST_LINE_rec.generate_using_formula_id := p_PRICE_LIST_LINE_rec.generate_using_formula_id;
3301 
3302             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
3303             THEN
3304 
3305                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
3306                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','generate_using_formula');
3307                 oe_msg_pub.Add;
3308 
3309             END IF;
3310 
3311         ELSE
3312 
3313             l_PRICE_LIST_LINE_rec.generate_using_formula_id := QP_Value_To_Id.generate_using_formula
3314             (   p_generate_using_formula      => p_PRICE_LIST_LINE_val_rec.generate_using_formula
3315             );
3316 
3317             IF l_PRICE_LIST_LINE_rec.generate_using_formula_id = FND_API.G_MISS_NUM THEN
3318                 l_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_ERROR;
3319             END IF;
3320 
3321         END IF;
3322 
3323     END IF;
3324 
3325     IF  p_PRICE_LIST_LINE_val_rec.inventory_item <> FND_API.G_MISS_CHAR
3326     THEN
3327 
3328         IF p_PRICE_LIST_LINE_rec.inventory_item_id <> FND_API.G_MISS_NUM THEN
3329 
3330             l_PRICE_LIST_LINE_rec.inventory_item_id := p_PRICE_LIST_LINE_rec.inventory_item_id;
3331 
3332             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
3333             THEN
3334 
3335                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
3336                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','inventory_item');
3337                 oe_msg_pub.Add;
3338 
3339             END IF;
3340 
3341         ELSE
3342 
3343             l_PRICE_LIST_LINE_rec.inventory_item_id := QP_Value_To_Id.inventory_item
3344             (   p_inventory_item              => p_PRICE_LIST_LINE_val_rec.inventory_item
3345             );
3346 
3347             IF l_PRICE_LIST_LINE_rec.inventory_item_id = FND_API.G_MISS_NUM THEN
3348                 l_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_ERROR;
3349             END IF;
3350 
3351         END IF;
3352 
3353     END IF;
3354 
3355     IF  p_PRICE_LIST_LINE_val_rec.list_header <> FND_API.G_MISS_CHAR
3356     THEN
3357 
3358         IF p_PRICE_LIST_LINE_rec.list_header_id <> FND_API.G_MISS_NUM THEN
3359 
3360             l_PRICE_LIST_LINE_rec.list_header_id := p_PRICE_LIST_LINE_rec.list_header_id;
3361 
3362             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
3363             THEN
3364 
3365                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
3366                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','list_header');
3367                 oe_msg_pub.Add;
3368 
3369             END IF;
3370 
3371         ELSE
3372 
3373             l_PRICE_LIST_LINE_rec.list_header_id := QP_Value_To_Id.list_header
3374             (   p_list_header                 => p_PRICE_LIST_LINE_val_rec.list_header
3375             );
3376 
3377             IF l_PRICE_LIST_LINE_rec.list_header_id = FND_API.G_MISS_NUM THEN
3378                 l_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_ERROR;
3379             END IF;
3380 
3381         END IF;
3382 
3383     END IF;
3384 
3385     IF  p_PRICE_LIST_LINE_val_rec.list_line <> FND_API.G_MISS_CHAR
3386     THEN
3387 
3388         IF p_PRICE_LIST_LINE_rec.list_line_id <> FND_API.G_MISS_NUM THEN
3389 
3390             l_PRICE_LIST_LINE_rec.list_line_id := p_PRICE_LIST_LINE_rec.list_line_id;
3391 
3392             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
3393             THEN
3394 
3395                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
3396                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','list_line');
3397                 oe_msg_pub.Add;
3398 
3399             END IF;
3400 
3401         ELSE
3402 
3403             l_PRICE_LIST_LINE_rec.list_line_id := QP_Value_To_Id.list_line
3404             (   p_list_line                   => p_PRICE_LIST_LINE_val_rec.list_line
3405             );
3406 
3407             IF l_PRICE_LIST_LINE_rec.list_line_id = FND_API.G_MISS_NUM THEN
3408                 l_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_ERROR;
3409             END IF;
3410 
3411         END IF;
3412 
3413     END IF;
3414 
3415     IF  p_PRICE_LIST_LINE_val_rec.list_line_type <> FND_API.G_MISS_CHAR
3416     THEN
3417 
3418         IF p_PRICE_LIST_LINE_rec.list_line_type_code <> FND_API.G_MISS_CHAR THEN
3419 
3420             l_PRICE_LIST_LINE_rec.list_line_type_code := p_PRICE_LIST_LINE_rec.list_line_type_code;
3421 
3422             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
3423             THEN
3424 
3425                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
3426                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','list_line_type');
3427                 oe_msg_pub.Add;
3428 
3429             END IF;
3430 
3431         ELSE
3432 
3433             l_PRICE_LIST_LINE_rec.list_line_type_code := QP_Value_To_Id.list_line_type
3434             (   p_list_line_type              => p_PRICE_LIST_LINE_val_rec.list_line_type
3435             );
3436 
3437             IF l_PRICE_LIST_LINE_rec.list_line_type_code = FND_API.G_MISS_CHAR THEN
3438                 l_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_ERROR;
3439             END IF;
3440 
3441         END IF;
3442 
3443     END IF;
3444 
3445     IF  p_PRICE_LIST_LINE_val_rec.modifier_level <> FND_API.G_MISS_CHAR
3446     THEN
3447 
3448         IF p_PRICE_LIST_LINE_rec.modifier_level_code <> FND_API.G_MISS_CHAR THEN
3449 
3450             l_PRICE_LIST_LINE_rec.modifier_level_code := p_PRICE_LIST_LINE_rec.modifier_level_code;
3451 
3452             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
3453             THEN
3454 
3455                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
3456                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','modifier_level');
3457                 oe_msg_pub.Add;
3458 
3459             END IF;
3460 
3461         ELSE
3462 
3463             l_PRICE_LIST_LINE_rec.modifier_level_code := QP_Value_To_Id.modifier_level
3464             (   p_modifier_level              => p_PRICE_LIST_LINE_val_rec.modifier_level
3465             );
3466 
3467             IF l_PRICE_LIST_LINE_rec.modifier_level_code = FND_API.G_MISS_CHAR THEN
3468                 l_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_ERROR;
3469             END IF;
3470 
3471         END IF;
3472 
3473     END IF;
3474 
3475     IF  p_PRICE_LIST_LINE_val_rec.organization <> FND_API.G_MISS_CHAR
3476     THEN
3477 
3478         IF p_PRICE_LIST_LINE_rec.organization_id <> FND_API.G_MISS_NUM THEN
3479 
3480             l_PRICE_LIST_LINE_rec.organization_id := p_PRICE_LIST_LINE_rec.organization_id;
3481 
3482             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
3483             THEN
3484 
3485                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
3486                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','organization');
3487                 oe_msg_pub.Add;
3488 
3489             END IF;
3490 
3491         ELSE
3492 
3493             l_PRICE_LIST_LINE_rec.organization_id := QP_Value_To_Id.organization
3494             (   p_organization                => p_PRICE_LIST_LINE_val_rec.organization
3495             );
3496 
3497             IF l_PRICE_LIST_LINE_rec.organization_id = FND_API.G_MISS_NUM THEN
3498                 l_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_ERROR;
3499             END IF;
3500 
3501         END IF;
3502 
3503     END IF;
3504 
3505     IF  p_PRICE_LIST_LINE_val_rec.override <> FND_API.G_MISS_CHAR
3506     THEN
3507 
3508         IF p_PRICE_LIST_LINE_rec.override_flag <> FND_API.G_MISS_CHAR THEN
3509 
3510             l_PRICE_LIST_LINE_rec.override_flag := p_PRICE_LIST_LINE_rec.override_flag;
3511 
3512             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
3513             THEN
3514 
3515                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
3516                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','override');
3517                 oe_msg_pub.Add;
3518 
3519             END IF;
3520 
3521         ELSE
3522 
3523             l_PRICE_LIST_LINE_rec.override_flag := QP_Value_To_Id.override
3524             (   p_override                    => p_PRICE_LIST_LINE_val_rec.override
3525             );
3526 
3527             IF l_PRICE_LIST_LINE_rec.override_flag = FND_API.G_MISS_CHAR THEN
3528                 l_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_ERROR;
3529             END IF;
3530 
3531         END IF;
3532 
3533     END IF;
3534 
3535     IF  p_PRICE_LIST_LINE_val_rec.price_break_type <> FND_API.G_MISS_CHAR
3536     THEN
3537 
3538         IF p_PRICE_LIST_LINE_rec.price_break_type_code <> FND_API.G_MISS_CHAR THEN
3539 
3540             l_PRICE_LIST_LINE_rec.price_break_type_code := p_PRICE_LIST_LINE_rec.price_break_type_code;
3541 
3542             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
3543             THEN
3544 
3545                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
3546                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','price_break_type');
3547                 oe_msg_pub.Add;
3548 
3549             END IF;
3550 
3551         ELSE
3552 
3553             l_PRICE_LIST_LINE_rec.price_break_type_code := QP_Value_To_Id.price_break_type
3554             (   p_price_break_type            => p_PRICE_LIST_LINE_val_rec.price_break_type
3555             );
3556 
3557             IF l_PRICE_LIST_LINE_rec.price_break_type_code = FND_API.G_MISS_CHAR THEN
3558                 l_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_ERROR;
3559             END IF;
3560 
3561         END IF;
3562 
3563     END IF;
3564 
3565     IF  p_PRICE_LIST_LINE_val_rec.price_by_formula <> FND_API.G_MISS_CHAR
3566     THEN
3567 
3568         IF p_PRICE_LIST_LINE_rec.price_by_formula_id <> FND_API.G_MISS_NUM THEN
3569 
3570             l_PRICE_LIST_LINE_rec.price_by_formula_id := p_PRICE_LIST_LINE_rec.price_by_formula_id;
3571 
3572             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
3573             THEN
3574 
3575                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
3576                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','price_by_formula');
3577                 oe_msg_pub.Add;
3578 
3579             END IF;
3580 
3581         ELSE
3582 
3583             l_PRICE_LIST_LINE_rec.price_by_formula_id := QP_Value_To_Id.price_by_formula
3584             (   p_price_by_formula            => p_PRICE_LIST_LINE_val_rec.price_by_formula
3585             );
3586 
3587             IF l_PRICE_LIST_LINE_rec.price_by_formula_id = FND_API.G_MISS_NUM THEN
3588                 l_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_ERROR;
3589             END IF;
3590 
3591         END IF;
3592 
3593     END IF;
3594 
3595     IF  p_PRICE_LIST_LINE_val_rec.primary_uom <> FND_API.G_MISS_CHAR
3596     THEN
3597 
3598         IF p_PRICE_LIST_LINE_rec.primary_uom_flag <> FND_API.G_MISS_CHAR THEN
3599 
3600             l_PRICE_LIST_LINE_rec.primary_uom_flag := p_PRICE_LIST_LINE_rec.primary_uom_flag;
3601 
3602             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
3603             THEN
3604 
3605                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
3606                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','primary_uom');
3607                 oe_msg_pub.Add;
3608 
3609             END IF;
3610 
3611         ELSE
3612 
3613             l_PRICE_LIST_LINE_rec.primary_uom_flag := QP_Value_To_Id.primary_uom
3614             (   p_primary_uom                 => p_PRICE_LIST_LINE_val_rec.primary_uom
3615             );
3616 
3617             IF l_PRICE_LIST_LINE_rec.primary_uom_flag = FND_API.G_MISS_CHAR THEN
3618                 l_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_ERROR;
3619             END IF;
3620 
3621         END IF;
3622 
3623     END IF;
3624 
3625     IF  p_PRICE_LIST_LINE_val_rec.print_on_invoice <> FND_API.G_MISS_CHAR
3626     THEN
3627 
3628         IF p_PRICE_LIST_LINE_rec.print_on_invoice_flag <> FND_API.G_MISS_CHAR THEN
3629 
3630             l_PRICE_LIST_LINE_rec.print_on_invoice_flag := p_PRICE_LIST_LINE_rec.print_on_invoice_flag;
3631 
3632             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
3633             THEN
3634 
3635                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
3636                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','print_on_invoice');
3637                 oe_msg_pub.Add;
3638 
3639             END IF;
3640 
3641         ELSE
3642 
3643             l_PRICE_LIST_LINE_rec.print_on_invoice_flag := QP_Value_To_Id.print_on_invoice
3644             (   p_print_on_invoice            => p_PRICE_LIST_LINE_val_rec.print_on_invoice
3645             );
3646 
3647             IF l_PRICE_LIST_LINE_rec.print_on_invoice_flag = FND_API.G_MISS_CHAR THEN
3648                 l_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_ERROR;
3649             END IF;
3650 
3651         END IF;
3652 
3653     END IF;
3654 
3655     IF  p_PRICE_LIST_LINE_val_rec.rebate_transaction_type <> FND_API.G_MISS_CHAR
3656     THEN
3657 
3658         IF p_PRICE_LIST_LINE_rec.rebate_trxn_type_code <> FND_API.G_MISS_CHAR THEN
3659 
3660             l_PRICE_LIST_LINE_rec.rebate_trxn_type_code := p_PRICE_LIST_LINE_rec.rebate_trxn_type_code;
3661 
3662             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
3663             THEN
3664 
3665                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
3666                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','rebate_transaction_type');
3667                 oe_msg_pub.Add;
3668 
3669             END IF;
3670 
3671         ELSE
3672 
3673             l_PRICE_LIST_LINE_rec.rebate_trxn_type_code := QP_Value_To_Id.rebate_transaction_type
3674             (   p_rebate_transaction_type     => p_PRICE_LIST_LINE_val_rec.rebate_transaction_type
3675             );
3676 
3677             IF l_PRICE_LIST_LINE_rec.rebate_trxn_type_code = FND_API.G_MISS_CHAR THEN
3678                 l_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_ERROR;
3679             END IF;
3680 
3681         END IF;
3682 
3683     END IF;
3684 
3685     IF  p_PRICE_LIST_LINE_val_rec.related_item <> FND_API.G_MISS_CHAR
3686     THEN
3687 
3688         IF p_PRICE_LIST_LINE_rec.related_item_id <> FND_API.G_MISS_NUM THEN
3689 
3690             l_PRICE_LIST_LINE_rec.related_item_id := p_PRICE_LIST_LINE_rec.related_item_id;
3691 
3692             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
3693             THEN
3694 
3695                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
3696                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','related_item');
3697                 oe_msg_pub.Add;
3698 
3699             END IF;
3700 
3701         ELSE
3702 
3703             l_PRICE_LIST_LINE_rec.related_item_id := QP_Value_To_Id.related_item
3704             (   p_related_item                => p_PRICE_LIST_LINE_val_rec.related_item
3705             );
3706 
3707             IF l_PRICE_LIST_LINE_rec.related_item_id = FND_API.G_MISS_NUM THEN
3708                 l_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_ERROR;
3709             END IF;
3710 
3711         END IF;
3712 
3713     END IF;
3714 
3715     IF  p_PRICE_LIST_LINE_val_rec.relationship_type <> FND_API.G_MISS_CHAR
3716     THEN
3717 
3718         IF p_PRICE_LIST_LINE_rec.relationship_type_id <> FND_API.G_MISS_NUM THEN
3719 
3720             l_PRICE_LIST_LINE_rec.relationship_type_id := p_PRICE_LIST_LINE_rec.relationship_type_id;
3721 
3722             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
3723             THEN
3724 
3725                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
3726                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','relationship_type');
3727                 oe_msg_pub.Add;
3728 
3729             END IF;
3730 
3731         ELSE
3732 
3733             l_PRICE_LIST_LINE_rec.relationship_type_id := QP_Value_To_Id.relationship_type
3734             (   p_relationship_type           => p_PRICE_LIST_LINE_val_rec.relationship_type
3735             );
3736 
3737             IF l_PRICE_LIST_LINE_rec.relationship_type_id = FND_API.G_MISS_NUM THEN
3738                 l_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_ERROR;
3739             END IF;
3740 
3741         END IF;
3742 
3743     END IF;
3744 
3745     IF  p_PRICE_LIST_LINE_val_rec.reprice <> FND_API.G_MISS_CHAR
3746     THEN
3747 
3748         IF p_PRICE_LIST_LINE_rec.reprice_flag <> FND_API.G_MISS_CHAR THEN
3749 
3750             l_PRICE_LIST_LINE_rec.reprice_flag := p_PRICE_LIST_LINE_rec.reprice_flag;
3751 
3752             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
3753             THEN
3754 
3755                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
3756                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','reprice');
3757                 oe_msg_pub.Add;
3758 
3759             END IF;
3760 
3761         ELSE
3762 
3763             l_PRICE_LIST_LINE_rec.reprice_flag := QP_Value_To_Id.reprice
3764             (   p_reprice                     => p_PRICE_LIST_LINE_val_rec.reprice
3765             );
3766 
3767             IF l_PRICE_LIST_LINE_rec.reprice_flag = FND_API.G_MISS_CHAR THEN
3768                 l_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_ERROR;
3769             END IF;
3770 
3771         END IF;
3772 
3773     END IF;
3774 
3775     IF  p_PRICE_LIST_LINE_val_rec.revision_reason <> FND_API.G_MISS_CHAR
3776     THEN
3777 
3778         IF p_PRICE_LIST_LINE_rec.revision_reason_code <> FND_API.G_MISS_CHAR THEN
3779 
3780             l_PRICE_LIST_LINE_rec.revision_reason_code := p_PRICE_LIST_LINE_rec.revision_reason_code;
3781 
3782             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
3783             THEN
3784 
3785                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
3786                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','revision_reason');
3787                 oe_msg_pub.Add;
3788 
3789             END IF;
3790 
3791         ELSE
3792 
3793             l_PRICE_LIST_LINE_rec.revision_reason_code := QP_Value_To_Id.revision_reason
3794             (   p_revision_reason             => p_PRICE_LIST_LINE_val_rec.revision_reason
3795             );
3796 
3797             IF l_PRICE_LIST_LINE_rec.revision_reason_code = FND_API.G_MISS_CHAR THEN
3798                 l_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_ERROR;
3799             END IF;
3800 
3801         END IF;
3802 
3803     END IF;
3804 
3805 
3806     RETURN l_PRICE_LIST_LINE_rec;
3807 
3808 END Get_Ids;
3809 
3810 
3811 Procedure Print_Price_List_Line
3812         (p_PRICE_LIST_LINE_rec IN QP_PRICE_LIST_PUB.PRICE_LIST_LINE_REC_TYPE,
3813          p_counter IN NUMBER)
3814 IS
3815 BEGIN
3816 
3817   oe_debug_pub.add('accrual qty ' || p_counter || ': ' || p_PRICE_LIST_LINE_rec.accrual_qty);
3818 
3819    oe_debug_pub.add('accrual uom code ' || p_counter || ': ' ||  p_PRICE_LIST_LINE_rec.accrual_uom_code);
3820    oe_debug_pub.add('arithmetic_operator ' || p_counter || ': ' ||    p_PRICE_LIST_LINE_rec.arithmetic_operator);
3821    oe_debug_pub.add('attribute1 ' || p_counter || ': ' ||   p_PRICE_LIST_LINE_rec.attribute1);
3822    oe_debug_pub.add('attribute10 ' || p_counter || ': ' ||      p_PRICE_LIST_LINE_rec.attribute10);
3823    oe_debug_pub.add('attribute11 ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.attribute11);
3824    oe_debug_pub.add('attribute12 ' || p_counter || ': ' || p_PRICE_LIST_LINE_rec.attribute12);
3825    oe_debug_pub.add('attribute13 ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.attribute13);
3826    oe_debug_pub.add('attribute14 ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.attribute14);
3827    oe_debug_pub.add('attribute15 ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.attribute15);
3828    oe_debug_pub.add('attribute2 ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.attribute2);
3829    oe_debug_pub.add('attribute3 ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.attribute3);
3830    oe_debug_pub.add('attribute4 ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.attribute4);
3831    oe_debug_pub.add('attribute5 ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.attribute5);
3832    oe_debug_pub.add('attribute6 ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.attribute6);
3833    oe_debug_pub.add('attribute7 ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.attribute7);
3834    oe_debug_pub.add('attribute8 ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.attribute8);
3835    oe_debug_pub.add('attribute9 ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.attribute9);
3836    oe_debug_pub.add('automatic_flag ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.automatic_flag);
3837    oe_debug_pub.add('base qty ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.base_qty);
3838    oe_debug_pub.add('base uom code ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.base_uom_code);
3839    oe_debug_pub.add('comments ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.comments);
3840    oe_debug_pub.add('context ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.context);
3841    oe_debug_pub.add('created_by ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.created_by);
3842    oe_debug_pub.add('creation_date ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.creation_date);
3843    oe_debug_pub.add('effective_period_uom ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.effective_period_uom);
3844    oe_debug_pub.add('end_date_active ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.end_date_active);
3845    oe_debug_pub.add('estim_accrual_rate ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.estim_accrual_rate);
3846    oe_debug_pub.add('generate_using_formula_id ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.generate_using_formula_id);
3847    oe_debug_pub.add('inventory_item_id ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.inventory_item_id);
3848    oe_debug_pub.add('last_updated_by ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.last_updated_by);
3849    oe_debug_pub.add('last_update_date ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.last_update_date);
3850    oe_debug_pub.add('accrual qty ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.last_update_login);
3851    oe_debug_pub.add('list_header_id ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.list_header_id);
3852    oe_debug_pub.add('list_line_id ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.list_line_id);
3853    oe_debug_pub.add('list_line_type_code ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.list_line_type_code);
3854    oe_debug_pub.add('list_price ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.list_price);
3855    oe_debug_pub.add('product_precedence ' || p_counter || ': ' || p_PRICE_LIST_LINE_rec.product_precedence);
3856    oe_debug_pub.add('modifier_level_code ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.modifier_level_code);
3857    oe_debug_pub.add('number_effective_periods ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.number_effective_periods);
3858    oe_debug_pub.add('operand ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.operand);
3859    oe_debug_pub.add('organization_id ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.organization_id);
3860    oe_debug_pub.add('override_flag ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.override_flag);
3861    oe_debug_pub.add('percent_price ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.percent_price);
3862    oe_debug_pub.add('accrual qty ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.price_break_type_code);
3863    oe_debug_pub.add('price_by_formula_id ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.price_by_formula_id);
3864    oe_debug_pub.add('primary_uom_flag ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.primary_uom_flag);
3865    oe_debug_pub.add('print_on_invoice_flag ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.print_on_invoice_flag);
3866    oe_debug_pub.add('program_application_id ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.program_application_id);
3867    oe_debug_pub.add('program_id ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.program_id);
3868    oe_debug_pub.add('program_update_date ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.program_update_date);
3869    oe_debug_pub.add('rebate_trxn_type_code ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.rebate_trxn_type_code);
3870 -- block pricing
3871    oe_debug_pub.add('recurring_value' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.recurring_value);
3872    oe_debug_pub.add('related_item_id ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.related_item_id);
3873    oe_debug_pub.add('relationship_type_id ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.relationship_type_id);
3874    oe_debug_pub.add('reprice_flag ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.reprice_flag);
3875    oe_debug_pub.add('request_id ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.request_id);
3876    oe_debug_pub.add('revision ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.revision);
3877    oe_debug_pub.add('revision_date ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.revision_date);
3878    oe_debug_pub.add('revision_reason_code ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.revision_reason_code);
3879    oe_debug_pub.add('start_date_active ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.start_date_active);
3880    oe_debug_pub.add('substitution_attr ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.substitution_attribute);
3881    oe_debug_pub.add('substitution_context ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.substitution_context);
3882    oe_debug_pub.add('substitution_value ' || p_counter || ': ' ||p_PRICE_LIST_LINE_rec.substitution_value);
3883 
3884 END Print_Price_List_Line;
3885 
3886 FUNCTION get_qualifier_attr_value(p_qual_attr_value in varchar2)
3887 return varchar2
3888 is
3889 l_qual_attr_value number;
3890 BEGIN
3891 
3892    IF p_qual_attr_value is not null THEN
3893 
3894 	  select to_number(p_qual_attr_value)
3895 	  into l_qual_attr_value
3896 	  from dual;
3897 
3898        return to_char(l_qual_attr_value);
3899    ELSE
3900        return null;
3901    END IF;
3902 
3903 EXCEPTION
3904 
3905    WHEN INVALID_NUMBER THEN
3906 
3907        return NULL;
3908 
3909 END get_qualifier_attr_value;
3910 
3911 
3912 /******************************************************************************
3913 * Important: The following function Get_Context is currently not being
3914 *            called anywhere. So this function has not been altered for used
3915 *            with Attributes Manager installed. So, please do not use this
3916 *            utility function from anywhere in the code even in the future
3917 *            unless you modify it suitably for use with Attributes Manager.
3918 ******************************************************************************/
3919 FUNCTION Get_Context(p_FlexField_Name  IN VARCHAR2
3920 				  ,p_context    IN VARCHAR2)RETURN VARCHAR2 IS
3921 
3922   Flexfield FND_DFLEX.dflex_r;
3923   Flexinfo  FND_DFLEX.dflex_dr;
3924   Contexts  FND_DFLEX.contexts_dr;
3925 
3926 
3927   x_context_code        VARCHAR2(240);
3928 
3929   BEGIN
3930 
3931   -- Call Flexapi to get contexts
3932 
3933   FND_DFLEX.get_flexfield('QP',p_FlexField_Name,Flexfield,Flexinfo);
3934   FND_DFLEX.get_contexts(Flexfield,Contexts);
3935 
3936 
3937   For i in 1..Contexts.ncontexts LOOP
3938 
3939     If(Contexts.is_enabled(i) AND (NOT (Contexts.is_global(i)))) Then
3940 
3941        If p_context = Contexts.context_code(i) Then
3942           x_context_code :=Contexts.context_name(i);
3943 		EXIT;
3944        End If;
3945 
3946     End if;
3947   End Loop;
3948 
3949   RETURN x_context_code;
3950 
3951 END Get_Context;
3952 
3953 /******************************************************************************
3954 * Important: The following function Get_Attribute_Code is currently not being
3955 *            called anywhere. So this function has not been altered for used
3956 *            with Attributes Manager installed. So, please do not use this
3957 *            utility function from anywhere in the code even in the future
3958 *            unless you modify it suitably for use with Attributes Manager.
3959 ******************************************************************************/
3960 FUNCTION Get_Attribute_Code(p_FlexField_Name IN VARCHAR2
3961                             ,p_Context_Name   IN VARCHAR2
3962 				        ,p_attribute      IN VARCHAR2
3963 			   ) RETURN VARCHAR2 IS
3964 
3965   Flexfield FND_DFLEX.dflex_r;
3966   Flexinfo  FND_DFLEX.dflex_dr;
3967   Contexts  FND_DFLEX.contexts_dr;
3968   segments  FND_DFLEX.segments_dr;
3969   i BINARY_INTEGER;
3970   x_attribute_code VARCHAR2(240) := NULL;
3971 
3972 BEGIN
3973 
3974   --fnd_message.debug('passsed values are ' ||p_FlexField_Name);
3975   --fnd_message.debug('passsed values are ' ||p_Context_Name);
3976   --fnd_message.debug('passsed values are ' ||p_attribute);
3977 
3978 
3979   FND_DFLEX.get_flexfield('QP',p_FlexField_Name,Flexfield,Flexinfo);
3980   FND_DFLEX.get_segments(FND_DFLEX.make_context(Flexfield,p_Context_Name),
3981                       segments,TRUE);
3982 
3983   For i in 1..segments.nsegments LOOP
3984 
3985     IF segments.is_enabled(i)  THEN
3986 
3987          --fnd_message.debug('col name is  ' ||segments.application_column_name(i));
3988          --fnd_message.debug(' seg name is  ' ||segments.segment_name(i));
3989 	    IF segments.application_column_name(i) = p_attribute Then
3990 		  x_attribute_code := segments.row_prompt(i);
3991 		  RETURN x_attribute_code;
3992          End if;
3993     END IF;
3994   END LOOP;
3995 
3996   RETURN x_attribute_code;
3997 
3998  END Get_Attribute_Code;
3999 
4000 FUNCTION Get_Product_Value(p_FlexField_Name       IN VARCHAR2
4001                             ,p_Context_Name         IN VARCHAR2
4002 				        ,p_attribute_name         IN VARCHAR2
4003 					   ,p_attr_value IN VARCHAR2
4004 					   ) RETURN VARCHAR2 IS
4005 l_item_name varchar2(240) := NULL;
4006 l_category_name varchar2(240) := NULL;
4007 l_segment_name varchar2(240) := NULL;
4008 l_organization_id VARCHAR2(30) := TO_CHAR(QP_UTIL.Get_Item_Validation_Org);
4009 
4010 
4011 BEGIN
4012 
4013   IF (    (p_FlexField_Name = 'QP_ATTR_DEFNS_PRICING')
4014       and ( p_Context_Name = 'ITEM' ) ) THEN
4015 
4016 	 IF (p_attribute_name = 'PRICING_ATTRIBUTE1') then
4017 
4018 --changed the code to use G_ORGANIZATION_ID for performance problem on modifiers
4019 		select concatenated_segments
4020 		into l_item_name
4021 		from mtl_system_items_vl
4022 		where inventory_item_id = to_number(p_attr_value)
4023 		and organization_id = l_organization_id and rownum=1;
4024 
4025 		RETURN l_item_name;
4026 
4027 	 ELSIF (p_attribute_name = 'PRICING_ATTRIBUTE2') then
4028        /* product catalog
4029               select concatenated_segments
4030 		into l_category_name
4031 		from mtl_categories_kfv
4032 		where category_id = to_number(p_attr_value) and rownum=1;
4033        */
4034               select category_name
4035 		into l_category_name
4036 		from qp_item_categories_v
4037 		where category_id = to_number(p_attr_value) and rownum=1;
4038 
4039 		RETURN l_category_name;
4040        /*
4041 
4042         ELSIF (p_attribute_name = 'PRICING_ATTRIBUTE3') then
4043 
4044              RETURN( Get_Attribute_Value(
4045                              p_FlexField_Name => 'QP_ATTR_DEFNS_PRICING'
4046                             ,p_Context_Name => 'ITEM'
4047 		            ,p_segment_name => 'ALL_ITEMS'
4048                             ,p_attr_value => p_attr_value) );
4049 
4050        */
4051 
4052        ELSE
4053 
4054             l_segment_name := Get_Segment_Name(p_FlexField_Name,
4055                              p_Context_Name,
4056                              p_attribute_name);
4057 
4058              RETURN( Get_Attribute_Value(
4059                              p_FlexField_Name
4060                             ,p_Context_Name
4061 		            ,l_segment_name
4062                             ,p_attr_value) );
4063 
4064 
4065 
4066      END IF;
4067 
4068    ELSE
4069 
4070 	 RETURN NULL;
4071 
4072    END IF;
4073 
4074  EXCEPTION
4075 
4076          WHEN OTHERS THEN RETURN NULL;
4077 
4078 END Get_Product_Value;
4079 
4080 FUNCTION Get_Attribute_Value(p_FlexField_Name       IN VARCHAR2
4081                             ,p_Context_Name         IN VARCHAR2
4082 				        ,p_segment_name         IN VARCHAR2
4083 					   ,p_attr_value IN VARCHAR2
4084 					   ) RETURN VARCHAR2 IS
4085 
4086   Vset  FND_VSET.valueset_r;
4087   Fmt   FND_VSET.valueset_dr;
4088 
4089   Found BOOLEAN;
4090   Row   NUMBER;
4091   Value FND_VSET.value_dr;
4092 
4093 
4094 
4095   x_Format_Type Varchar2(1);
4096   x_Validation_Type Varchar2(1);
4097   x_Vsid  NUMBER;
4098 
4099 
4100   x_attr_value_code     VARCHAR2(240);
4101   l_id VARCHAR2(150);
4102   l_value VARCHAR2(150);
4103 
4104 
4105   BEGIN
4106 
4107   QP_UTIL.get_valueset_id(p_FlexField_Name,p_Context_Name,p_Segment_Name,x_Vsid,x_Format_Type,
4108                    x_Validation_Type);
4109   --fnd_message.debug(x_Vsid);
4110   --fnd_message.debug(x_Validation_Type);
4111   --fnd_message.show;
4112 
4113   IF x_Validation_Type In('F' ,'I')  AND x_Vsid  IS NOT NULL THEN
4114    IF x_Validation_Type = 'I' THEN     --Added for 2332139
4115      FND_VSET.get_valueset(x_Vsid,Vset,Fmt);
4116      FND_VSET.get_value_init(Vset,TRUE);
4117      FND_VSET.get_value(Vset,Row,Found,Value);
4118 
4119    IF Fmt.Has_Id Then    --id is defined.Hence compare for id
4120 
4121      While(Found) Loop
4122 
4123        --fnd_message.debug(Value.value);
4124        --fnd_message.debug(Value.meaning);
4125        --fnd_message.debug(Value.id);
4126 
4127        If  p_attr_value  = Value.id  Then
4128 
4129 	      x_attr_value_code  := Value.Value;
4130            RETURN x_attr_value_code;
4131        End If;
4132        FND_VSET.get_value(Vset,Row,Found,Value);
4133 
4134      End Loop;
4135 
4136   Else
4137 
4138      While(Found) Loop
4139 
4140                       --fnd_message.debug(Value.value);
4141                       --fnd_message.debug(Value.meaning);
4142                       --fnd_message.debug(Value.id);
4143 
4144                         If  p_attr_value  = Value.value  Then
4145 
4146 	                       x_attr_value_code  := p_attr_value;
4147                                RETURN x_attr_value_code;
4148                         End If;
4149                         FND_VSET.get_value(Vset,Row,Found,Value);
4150 
4151                      End Loop;
4152 
4153      End If;   -- end of Fmt.Has_Id
4154 
4155      FND_VSET.get_value_end(Vset);
4156 
4157 /* Added for 2332139 */
4158 
4159    ELSIF x_Validation_Type='F' THEN
4160                                        FND_VSET.get_valueset(x_Vsid,Vset,Fmt);
4161 
4162                                         IF (QP_UTIL.value_exists_in_table(Vset.table_info,
4163                                                         p_attr_value,l_id,l_value)) THEN
4164 
4165                                                         IF Fmt.Has_Id Then
4166                                                         --id is defined. Hence compare id
4167 
4168                                                                 IF p_attr_value = l_id Then
4169 
4170                                                                         x_attr_value_code := l_value;
4171                                                                 END IF;
4172                                                         ELSE
4173                                                                 IF p_attr_value = l_value THEN
4174                                                                         x_attr_value_code := p_attr_value;
4175                                                                 END IF;
4176                                                         END IF;         --End of Fmt.Has_ID
4177                                         END IF;
4178 
4179    END IF;
4180 
4181  ELSE
4182 
4183     x_attr_value_code := p_attr_value;
4184  END IF;
4185 
4186  RETURN x_attr_value_code;
4187 
4188 
4189 END Get_Attribute_Value;
4190 
4191 FUNCTION Get_Item_Validate_Org_Value(p_pricing_attribute  IN VARCHAR2,p_attr_value IN VARCHAR2
4192 					   ) RETURN VARCHAR2 IS
4193 
4194 l_name varchar2(240) := 'Y';
4195 
4196 BEGIN
4197 	 IF (p_pricing_attribute = 'PRICING_ATTRIBUTE1') then
4198 
4199 		select to_char(organization_id)
4200 		into l_name
4201 		from mtl_system_items_b
4202 		where inventory_item_id = to_number(p_attr_value)
4203 		and organization_id = G_ORGANIZATION_ID;
4204 
4205 		RETURN l_name;
4206    ELSE
4207 
4208 	 RETURN l_name;
4209 
4210    END IF;
4211 
4212  EXCEPTION
4213 
4214          WHEN OTHERS THEN RETURN 'N';
4215 
4216 END Get_Item_Validate_Org_Value;
4217 
4218 FUNCTION Get_Segment_Name(p_FlexField_Name IN VARCHAR2
4219                          ,p_Context_Name   IN VARCHAR2
4220 			 ,p_attribute      IN VARCHAR2
4221 			 ) RETURN VARCHAR2 IS
4222 
4223 Flexfield FND_DFLEX.dflex_r;
4224 Flexinfo  FND_DFLEX.dflex_dr;
4225 Contexts  FND_DFLEX.contexts_dr;
4226 segments  FND_DFLEX.segments_dr;
4227 i BINARY_INTEGER;
4228 x_segment_name VARCHAR2(240) := NULL;
4229 
4230 l_pte_code            VARCHAR2(30);
4231 l_context_type        VARCHAR2(30);
4232 l_error_code          NUMBER;
4233 
4234 CURSOR attribute_cur(a_context_type VARCHAR2, a_context_code VARCHAR2,
4235                      a_pte_code VARCHAR2, a_attribute VARCHAR2)
4236 IS
4237   SELECT b.segment_code
4238   FROM   qp_segments_tl a, qp_segments_b b,
4239          qp_prc_contexts_b c, qp_pte_segments d
4240   WHERE  c.prc_context_type = a_context_type
4241   AND    c.prc_context_code = a_context_code
4242   AND    c.prc_context_id = b.prc_context_id
4243   AND    b.segment_mapping_column = a_attribute
4244   AND    b.segment_id = a.segment_id
4245   AND    a.language = userenv('LANG')
4246   AND    b.segment_id = d.segment_id
4247   AND    d.pte_code = a_pte_code;
4248 
4249 
4250 BEGIN
4251 
4252 
4253   IF QP_UTIL.Attrmgr_Installed = 'Y' THEN
4254 
4255     FND_PROFILE.GET('QP_PRICING_TRANSACTION_ENTITY', l_pte_code);
4256 
4257     IF l_pte_code IS NULL THEN
4258       l_pte_code := 'ORDFUL';
4259     END IF;
4260 
4261     QP_UTIL.Get_Context_Type(p_flexfield_name, p_context_name,
4262                              l_context_type, l_error_code);
4263 
4264     IF l_error_code = 0 THEN
4265 
4266       OPEN  attribute_cur(l_context_type, p_context_name,
4267                           l_pte_code, p_attribute);
4268 
4269       FETCH attribute_cur INTO x_segment_name;
4270       CLOSE attribute_cur;
4271 
4272     END IF; --If l_error_code = 0
4273 
4274   ELSE
4275 
4276   /* Added for 2332139 */
4277 
4278    BEGIN
4279     select end_user_column_name
4280     INTO x_segment_name
4281     from FND_DESCR_FLEX_COL_USAGE_VL
4282     where APPLICATION_ID = 661 and
4283     DESCRIPTIVE_FLEXFIELD_NAME = p_FlexField_Name and
4284     DESCRIPTIVE_FLEX_CONTEXT_CODE = p_Context_Name and
4285     application_column_name = p_attribute and
4286     enabled_flag='Y';
4287 
4288    EXCEPTION
4289     WHEN OTHERS THEN
4290     x_segment_name := NULL;
4291    END;
4292 
4293 /* Commented out for 2332139 */
4294 /*
4295 
4296     FND_DFLEX.get_flexfield('QP',p_FlexField_Name,Flexfield,Flexinfo);
4297     FND_DFLEX.get_segments(FND_DFLEX.make_context(Flexfield,p_Context_Name),
4298                            segments,TRUE);
4299 
4300     FOR i IN 1..segments.nsegments LOOP
4301 
4302       IF segments.is_enabled(i)  THEN
4303 
4304 	IF segments.application_column_name(i) = p_attribute Then
4305 	  x_segment_name := segments.segment_name(i);
4306 	  EXIT;
4307         END IF;
4308 
4309       END IF;
4310 
4311     END LOOP;
4312 */
4313   END IF; --If qp_util.attrmgr_installed = 'Y'
4314 
4315   RETURN x_segment_name;
4316 
4317 END Get_Segment_Name;
4318 
4319 
4320 FUNCTION Get_Product_Id(p_FlexField_Name IN VARCHAR2
4321                            ,p_Context_Name   IN VARCHAR2
4322                            ,p_attribute      IN VARCHAR2
4323                            ,p_attr_value IN VARCHAR2) RETURN NUMBER IS
4324 
4325 l_product_id number := NULL;
4326 
4327 BEGIN
4328 
4329    IF p_flexfield_name = 'QP_ATTR_DEFNS_PRICING' THEN
4330 
4331      IF ( p_Context_Name = 'ITEM' and
4332            (p_attribute in ('PRICING_ATTRIBUTE1', 'PRICING_ATTRIBUTE2') )
4333         ) then
4334 
4335       l_product_id := TO_NUMBER(p_attr_value);
4336 
4337      END IF;
4338 
4339    END IF;
4340 
4341    RETURN l_product_id;
4342 
4343 END Get_Product_Id;
4344 
4345 
4346 
4347 END QP_Price_List_Line_Util;