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