[Home] [Help]
PACKAGE BODY: APPS.QP_LIST_HEADERS_PVT
Source
1 PACKAGE BODY QP_LIST_HEADERS_PVT AS
2 /* $Header: QPXVPRLB.pls 120.7 2008/09/08 07:03:02 jputta ship $ */
3
4 -- Global constant holding the package name
5
6 G_PKG_NAME CONSTANT VARCHAR2(30) := 'QP_LIST_HEADERS_PVT';
7
8 -- Price_List
9
10 PROCEDURE Price_List
11 ( p_validation_level IN NUMBER
12 , p_control_rec IN QP_GLOBALS.Control_Rec_Type
13 , p_PRICE_LIST_rec IN QP_Price_List_PUB.Price_List_Rec_Type
14 , p_old_PRICE_LIST_rec IN QP_Price_List_PUB.Price_List_Rec_Type
15 , x_PRICE_LIST_rec OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Rec_Type
16 , x_old_PRICE_LIST_rec OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Rec_Type
17 )
18 IS
19 l_return_status VARCHAR2(1);
20 l_control_rec QP_GLOBALS.Control_Rec_Type;
21 l_PRICE_LIST_rec QP_Price_List_PUB.Price_List_Rec_Type := p_PRICE_LIST_rec;
22 l_p_PRICE_LIST_rec QP_Price_List_PUB.Price_List_Rec_Type := p_PRICE_LIST_rec;
23 l_old_PRICE_LIST_rec QP_Price_List_PUB.Price_List_Rec_Type := p_old_PRICE_LIST_rec;
24 l_pte_code VARCHAR2(30);
25 l_source_system_code VARCHAR2(30);
26 l_saved_pte_code VARCHAR2(30);
27 l_saved_source_system_code VARCHAR2(30);
28
29 BEGIN
30
31 --Added for Bug 2444971 - Begin
32 FND_PROFILE.GET('QP_PRICING_TRANSACTION_ENTITY', l_pte_code);
33 FND_PROFILE.GET('QP_SOURCE_SYSTEM_CODE', l_source_system_code);
34 --Added for Bug 2444971 - End
35
36 -- Load API control record
37
38 l_control_rec := QP_GLOBALS.Init_Control_Rec
39 ( p_operation => l_PRICE_LIST_rec.operation
40 , p_control_rec => p_control_rec
41 );
42
43 -- Set record return status.
44
45 l_PRICE_LIST_rec.return_status := FND_API.G_RET_STS_SUCCESS;
46
47 --added for moac for inline BSA PL and locked PL --fix for bug 4748511
48 if l_PRICE_LIST_rec.operation in (QP_GLOBALS.G_OPR_CREATE, QP_GLOBALS.G_OPR_UPDATE)
49 --and l_control_rec.called_from_ui = 'N' --this is not true for price locking API call
50 and l_PRICE_LIST_rec.list_source_code IS NOT NULL
51 and l_PRICE_LIST_rec.global_flag = 'N'
52 and nvl(QP_SECURITY.security_on, 'N') = 'N' then
53 l_PRICE_LIST_rec.global_flag := 'Y';
54 l_PRICE_LIST_rec.org_id := null;
55 end if;
56
57 -- Prepare record.
58
59 IF l_PRICE_LIST_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
60
61 l_PRICE_LIST_rec.db_flag := FND_API.G_FALSE;
62
63 -- Set missing old record elements to NULL.
64
65 l_old_PRICE_LIST_rec :=
66 QP_Price_List_Util.Convert_Miss_To_Null (l_old_PRICE_LIST_rec);
67
68 ELSIF l_PRICE_LIST_rec.operation = QP_GLOBALS.G_OPR_UPDATE
69 OR l_PRICE_LIST_rec.operation = QP_GLOBALS.G_OPR_DELETE
70 THEN
71
72 l_PRICE_LIST_rec.db_flag := FND_API.G_TRUE;
73
74 -- Query Old if missing
75
76 IF l_old_PRICE_LIST_rec.list_header_id = FND_API.G_MISS_NUM
77 THEN
78
79 l_old_PRICE_LIST_rec := QP_Price_List_Util.Query_Row
80 ( p_list_header_id => l_PRICE_LIST_rec.list_header_id
81 );
82
83 ELSE
84
85 -- Set missing old record elements to NULL.
86
87 l_old_PRICE_LIST_rec :=
88 QP_Price_List_Util.Convert_Miss_To_Null (l_old_PRICE_LIST_rec);
89
90 END IF;
91
92 -- Complete new record from old
93
94 l_PRICE_LIST_rec := QP_Price_List_Util.Complete_Record
95 ( p_PRICE_LIST_rec => l_PRICE_LIST_rec
96 , p_old_PRICE_LIST_rec => l_old_PRICE_LIST_rec
97 );
98
99 --Start of code added for Bug 2444971. Added for Patchset H
100 BEGIN
101 SELECT pte_code, source_system_code
102 INTO l_saved_pte_code, l_saved_source_system_code
103 FROM qp_list_headers_b
104 WHERE list_header_id = l_PRICE_LIST_rec.list_header_id;
105
106 EXCEPTION
107 WHEN OTHERS THEN
108 NULL;
109 END;
110
111 IF l_saved_pte_code <> l_pte_code OR
112 l_saved_source_system_code <> l_source_system_code
113 THEN
114
115 l_return_status := FND_API.G_RET_STS_ERROR;
116 FND_MESSAGE.SET_NAME('QP', 'QP_PTE_SS_CODE_MISMATCH');
117 FND_MESSAGE.SET_TOKEN('SOURCE_SYSTEM',l_saved_source_system_code);
118 FND_MESSAGE.SET_TOKEN('PTE_CODE',l_saved_pte_code);
119 OE_MSG_PUB.Add;
120
121 RAISE FND_API.G_EXC_ERROR;
122
123 END IF;
124 --End of code added for Bug 2444971. Added for Patchset H
125
126 END IF;
127
128 -- Attribute level validation.
129
130 IF ( l_PRICE_LIST_rec.operation = QP_GLOBALS.G_OPR_UPDATE
131 or l_PRICE_LIST_rec.operation = QP_GLOBALS.G_OPR_CREATE
132 or l_PRICE_LIST_rec.operation = QP_GLOBALS.G_OPR_DELETE ) THEN
133
134 IF l_control_rec.default_attributes
135 OR l_control_rec.change_attributes
136 THEN
137
138 IF p_validation_level > FND_API.G_VALID_LEVEL_NONE THEN
139
140 QP_Validate_Price_List.Attributes
141 ( x_return_status => l_return_status
142 , p_PRICE_LIST_rec => l_PRICE_LIST_rec
143 , p_old_PRICE_LIST_rec => l_old_PRICE_LIST_rec
144 );
145
146 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
147 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
148 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
149 RAISE FND_API.G_EXC_ERROR;
150 END IF;
151
152 END IF;
153
154 END IF;
155
156 -- Clear dependent attributes.
157
158 IF l_control_rec.change_attributes THEN
159 l_p_PRICE_LIST_rec := l_PRICE_LIST_rec;
160 QP_Price_List_Util.Clear_Dependent_Attr
161 ( p_PRICE_LIST_rec => l_p_PRICE_LIST_rec
162 , p_old_PRICE_LIST_rec => l_old_PRICE_LIST_rec
163 , x_PRICE_LIST_rec => l_PRICE_LIST_rec
164 );
165
166 END IF;
167
168 -- Default missing attributes
169
170 IF l_control_rec.default_attributes
171 OR l_control_rec.change_attributes
172 THEN
173 l_p_PRICE_LIST_rec := l_PRICE_LIST_rec;
174 QP_Default_Price_List.Attributes
175 ( p_PRICE_LIST_rec => l_p_PRICE_LIST_rec
176 , x_PRICE_LIST_rec => l_PRICE_LIST_rec
177 );
178
179 END IF;
180
181 -- Apply attribute changes
182
183 IF l_control_rec.default_attributes
184 OR l_control_rec.change_attributes
185 THEN
186 l_p_PRICE_LIST_rec := l_PRICE_LIST_rec;
187 QP_Price_List_Util.Apply_Attribute_Changes
188 ( p_PRICE_LIST_rec => l_p_PRICE_LIST_rec
189 , p_old_PRICE_LIST_rec => l_old_PRICE_LIST_rec
190 , x_PRICE_LIST_rec => l_PRICE_LIST_rec
191 );
192
193 END IF;
194
195 -- Entity level validation.
196
197 IF l_control_rec.validate_entity THEN
198
199 IF l_PRICE_LIST_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
200
201 QP_Validate_Price_List.Entity_Delete
202 ( x_return_status => l_return_status
203 , p_PRICE_LIST_rec => l_PRICE_LIST_rec
204 );
205
206 ELSE
207
208 QP_Validate_Price_List.Entity
209 ( x_return_status => l_return_status
210 , p_PRICE_LIST_rec => l_PRICE_LIST_rec
211 , p_old_PRICE_LIST_rec => l_old_PRICE_LIST_rec
212 );
213
214 END IF;
215
216 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
217 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
218 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
219 RAISE FND_API.G_EXC_ERROR;
220 END IF;
221
222
223 END IF;
224
225 -- Step 4. Write to DB
226
227 IF l_control_rec.write_to_db THEN
228
229 IF l_PRICE_LIST_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
230
231 FND_MESSAGE.SET_NAME('QP', 'QP_CANNOT_DELETE_PRICE_LIST');
232 OE_MSG_PUB.Add;
233
234 RAISE FND_API.G_EXC_ERROR;
235
236 /*QP_Price_List_Util.Delete_Row
237 ( p_list_header_id => l_PRICE_LIST_rec.list_header_id
238 );*/
239
240 ELSE
241
242 -- Get Who Information
243
244 l_PRICE_LIST_rec.last_update_date := SYSDATE;
245 l_PRICE_LIST_rec.last_updated_by := FND_GLOBAL.USER_ID;
246 l_PRICE_LIST_rec.last_update_login := FND_GLOBAL.LOGIN_ID;
247
248 IF l_PRICE_LIST_rec.operation = QP_GLOBALS.G_OPR_UPDATE THEN
249
250 QP_Price_List_Util.Update_Row (l_PRICE_LIST_rec);
251
252 ELSIF l_PRICE_LIST_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
253
254 l_PRICE_LIST_rec.creation_date := SYSDATE;
255 l_PRICE_LIST_rec.created_by := FND_GLOBAL.USER_ID;
256
257 QP_Price_List_Util.Insert_Row (l_PRICE_LIST_rec);
258
259 END IF;
260
261 END IF;
262
263 END IF;
264
265 END IF; /* if operation is create, update or delete */
266
267 -- Load OUT parameters
268
269 x_PRICE_LIST_rec := l_PRICE_LIST_rec;
270 x_old_PRICE_LIST_rec := l_old_PRICE_LIST_rec;
271
272 EXCEPTION
273
274 WHEN FND_API.G_EXC_ERROR THEN
275
276 l_PRICE_LIST_rec.return_status := FND_API.G_RET_STS_ERROR;
277 x_PRICE_LIST_rec := l_PRICE_LIST_rec;
278 x_old_PRICE_LIST_rec := l_old_PRICE_LIST_rec;
279
280 -- mkarya If process_price_list has been called from public package, then ONLY call
281 -- qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
282 if l_control_rec.called_from_ui = 'N' then
283 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
284 (p_entity_code => QP_GLOBALS.G_ENTITY_PRICE_LIST,
285 p_entity_id => l_PRICE_LIST_rec.list_header_id,
286 x_return_status => l_return_status );
287 end if;
288
289 RAISE;
290
291 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
292
293 l_PRICE_LIST_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
294 x_PRICE_LIST_rec := l_PRICE_LIST_rec;
295 x_old_PRICE_LIST_rec := l_old_PRICE_LIST_rec;
296
297 -- mkarya If process_price_list has been called from public package, then ONLY call
298 -- qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
299 if l_control_rec.called_from_ui = 'N' then
300 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
301 (p_entity_code => QP_GLOBALS.G_ENTITY_PRICE_LIST,
302 p_entity_id => l_PRICE_LIST_rec.list_header_id,
303 x_return_status => l_return_status );
304 end if;
305
306 RAISE;
307
308 WHEN OTHERS THEN
309
310 IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
311 THEN
312 oe_msg_pub.Add_Exc_Msg
313 ( G_PKG_NAME
314 , 'Price_List'
315 );
316 END IF;
317
318 l_PRICE_LIST_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
319 x_PRICE_LIST_rec := l_PRICE_LIST_rec;
320 x_old_PRICE_LIST_rec := l_old_PRICE_LIST_rec;
321
322 -- mkarya If process_price_list has been called from public package, then ONLY call
323 -- qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
324 if l_control_rec.called_from_ui = 'N' then
325 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
326 (p_entity_code => QP_GLOBALS.G_ENTITY_PRICE_LIST,
327 p_entity_id => l_PRICE_LIST_rec.list_header_id,
328 x_return_status => l_return_status );
329 end if;
330
331 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
332
333 END Price_List;
334
335 -- Price_List_Lines
336
337 PROCEDURE Price_List_Lines
338 ( p_validation_level IN NUMBER
339 , p_control_rec IN QP_GLOBALS.Control_Rec_Type
340 , p_PRICE_LIST_LINE_tbl IN QP_Price_List_PUB.Price_List_Line_Tbl_Type
341 , p_old_PRICE_LIST_LINE_tbl IN QP_Price_List_PUB.Price_List_Line_Tbl_Type
342 , x_PRICE_LIST_LINE_tbl OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Line_Tbl_Type
343 , x_old_PRICE_LIST_LINE_tbl OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Line_Tbl_Type
344 )
345 IS
346 l_return_status VARCHAR2(1);
347 l_control_rec QP_GLOBALS.Control_Rec_Type;
348 l_PRICE_LIST_LINE_rec QP_Price_List_PUB.Price_List_Line_Rec_Type;
349 l_p_PRICE_LIST_LINE_rec QP_Price_List_PUB.Price_List_Line_Rec_Type;
350 l_PRICE_LIST_LINE_tbl QP_Price_List_PUB.Price_List_Line_Tbl_Type;
351 l_old_PRICE_LIST_LINE_rec QP_Price_List_PUB.Price_List_Line_Rec_Type;
352 l_old_PRICE_LIST_LINE_tbl QP_Price_List_PUB.Price_List_Line_Tbl_Type;
353 l_rltd_modifiers_s number;
354 l_pte_code VARCHAR2(30);
355 l_source_system_code VARCHAR2(30);
356 l_saved_pte_code VARCHAR2(30);
357 l_saved_source_system_code VARCHAR2(30);
358
359 BEGIN
360 --Added for Bug 2444971 - Begin
361 FND_PROFILE.GET('QP_PRICING_TRANSACTION_ENTITY', l_pte_code);
362 FND_PROFILE.GET('QP_SOURCE_SYSTEM_CODE', l_source_system_code);
363 --Added for Bug 2444971 - End
364
365 -- Init local table variables.
366
367 l_PRICE_LIST_LINE_tbl := p_PRICE_LIST_LINE_tbl;
368 l_old_PRICE_LIST_LINE_tbl := p_old_PRICE_LIST_LINE_tbl;
369
370 FOR I IN 1..l_PRICE_LIST_LINE_tbl.COUNT LOOP
371 BEGIN
372
373 -- Load local records.
374
375 l_PRICE_LIST_LINE_rec := l_PRICE_LIST_LINE_tbl(I);
376
377 IF l_old_PRICE_LIST_LINE_tbl.EXISTS(I) THEN
378 l_old_PRICE_LIST_LINE_rec := l_old_PRICE_LIST_LINE_tbl(I);
379 ELSE
380 l_old_PRICE_LIST_LINE_rec := QP_Price_List_PUB.G_MISS_PRICE_LIST_LINE_REC;
381 END IF;
382
383 -- Load API control record
384
385 l_control_rec := QP_GLOBALS.Init_Control_Rec
386 ( p_operation => l_PRICE_LIST_LINE_rec.operation
387 , p_control_rec => p_control_rec
388 );
389
390 -- Set record return status.
391
392 l_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_SUCCESS;
393
394 -- Prepare record.
395
396 IF l_PRICE_LIST_LINE_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
397
398 l_PRICE_LIST_LINE_rec.db_flag := FND_API.G_FALSE;
399
400 -- Set missing old record elements to NULL.
401
402 l_old_PRICE_LIST_LINE_rec :=
403 QP_Price_List_Line_Util.Convert_Miss_To_Null (l_old_PRICE_LIST_LINE_rec);
404
405 ELSIF l_PRICE_LIST_LINE_rec.operation = QP_GLOBALS.G_OPR_UPDATE
406 OR l_PRICE_LIST_LINE_rec.operation = QP_GLOBALS.G_OPR_DELETE
407 THEN
408
409 l_PRICE_LIST_LINE_rec.db_flag := FND_API.G_TRUE;
410
411 -- Query Old if missing
412
413 IF l_old_PRICE_LIST_LINE_rec.list_line_id = FND_API.G_MISS_NUM
414 THEN
415
416 l_old_PRICE_LIST_LINE_rec := QP_Price_List_Line_Util.Query_Row
417 ( p_list_line_id => l_PRICE_LIST_LINE_rec.list_line_id
418 );
419
420 ELSE
421
422 -- Set missing old record elements to NULL.
423
424 l_old_PRICE_LIST_LINE_rec :=
425 QP_Price_List_Line_Util.Convert_Miss_To_Null (l_old_PRICE_LIST_LINE_rec);
426
427 END IF;
428
429 -- Complete new record from old
430
431 l_PRICE_LIST_LINE_rec := QP_Price_List_Line_Util.Complete_Record
432 ( p_PRICE_LIST_LINE_rec => l_PRICE_LIST_LINE_rec
433 , p_old_PRICE_LIST_LINE_rec => l_old_PRICE_LIST_LINE_rec
434 );
435
436 --Start of code added for Bug 2444971. Added for Patchset H
437 BEGIN
438 SELECT pte_code, source_system_code
439 INTO l_saved_pte_code, l_saved_source_system_code
440 FROM qp_list_headers_b
441 WHERE list_header_id = l_PRICE_LIST_LINE_rec.list_header_id;
442
443 EXCEPTION
444 WHEN OTHERS THEN
445 NULL;
446 END;
447
448 IF l_saved_pte_code <> l_pte_code OR
449 l_saved_source_system_code <> l_source_system_code
450 THEN
451
452 l_return_status := FND_API.G_RET_STS_ERROR;
453 FND_MESSAGE.SET_NAME('QP', 'QP_PTE_SS_CODE_MISMATCH');
454 FND_MESSAGE.SET_TOKEN('SOURCE_SYSTEM',l_saved_source_system_code);
455 FND_MESSAGE.SET_TOKEN('PTE_CODE',l_saved_pte_code);
456 OE_MSG_PUB.Add;
457
458 RAISE FND_API.G_EXC_ERROR;
459
460 END IF;
461 --End of code added for Bug 2444971. Added for Patchset H
462
463 END IF;
464
465 -- Attribute level validation.
466
467 IF ( l_PRICE_LIST_LINE_rec.operation = QP_GLOBALS.G_OPR_UPDATE
468 or l_PRICE_LIST_LINE_rec.operation = QP_GLOBALS.G_OPR_CREATE
469 or l_PRICE_LIST_LINE_rec.operation = QP_GLOBALS.G_OPR_DELETE ) THEN
470
471 IF l_control_rec.default_attributes
472 OR l_control_rec.change_attributes
473 THEN
474
475 IF p_validation_level > FND_API.G_VALID_LEVEL_NONE THEN
476
477 QP_Validate_Price_List_Line.Attributes
478 ( x_return_status => l_return_status
479 , p_PRICE_LIST_LINE_rec => l_PRICE_LIST_LINE_rec
480 , p_old_PRICE_LIST_LINE_rec => l_old_PRICE_LIST_LINE_rec
481 );
482
483 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
484 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
485 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
486 RAISE FND_API.G_EXC_ERROR;
487 END IF;
488
489 END IF;
490
491 END IF;
492
493 -- Clear dependent attributes.
494
495 IF l_control_rec.change_attributes THEN
496 l_p_PRICE_LIST_LINE_rec := l_PRICE_LIST_LINE_rec;
497 QP_Price_List_Line_Util.Clear_Dependent_Attr
498 ( p_PRICE_LIST_LINE_rec => l_p_PRICE_LIST_LINE_rec
499 , p_old_PRICE_LIST_LINE_rec => l_old_PRICE_LIST_LINE_rec
500 , x_PRICE_LIST_LINE_rec => l_PRICE_LIST_LINE_rec
501 );
502
503 END IF;
504
505 -- Default missing attributes
506
507 IF l_control_rec.default_attributes
508 OR l_control_rec.change_attributes
509 THEN
510 l_p_PRICE_LIST_LINE_rec := l_PRICE_LIST_LINE_rec;
511 QP_Default_Price_List_Line.Attributes
512 ( p_PRICE_LIST_LINE_rec => l_p_PRICE_LIST_LINE_rec
513 , x_PRICE_LIST_LINE_rec => l_PRICE_LIST_LINE_rec
514 );
515
516 END IF;
517
518 --Start of code added for Bug 2444971. Added for Patchset H
519 IF l_PRICE_LIST_LINE_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
520 BEGIN
521 SELECT pte_code, source_system_code
522 INTO l_saved_pte_code, l_saved_source_system_code
523 FROM qp_list_headers_b
524 WHERE list_header_id = l_PRICE_LIST_LINE_rec.list_header_id;
525
526 EXCEPTION
527 WHEN OTHERS THEN
528 NULL;
529 END;
530
531 IF l_saved_pte_code <> l_pte_code OR
532 l_saved_source_system_code <> l_source_system_code
533 THEN
534
535 l_return_status := FND_API.G_RET_STS_ERROR;
536 FND_MESSAGE.SET_NAME('QP', 'QP_PTE_SS_CODE_MISMATCH');
537 FND_MESSAGE.SET_TOKEN('SOURCE_SYSTEM',l_saved_source_system_code);
538 FND_MESSAGE.SET_TOKEN('PTE_CODE',l_saved_pte_code);
539 OE_MSG_PUB.Add;
540
541 RAISE FND_API.G_EXC_ERROR;
542
543 END IF;
544 END IF; --If operation is G_OPR_CREATE
545 --End of code added for Bug 2444971. Added for Patchset H
546
547 -- Apply attribute changes
548
549 IF l_control_rec.default_attributes
550 OR l_control_rec.change_attributes
551 THEN
552 l_p_PRICE_LIST_LINE_rec := l_PRICE_LIST_LINE_rec;
553 QP_Price_List_Line_Util.Apply_Attribute_Changes
554 ( p_PRICE_LIST_LINE_rec => l_p_PRICE_LIST_LINE_rec
555 , p_old_PRICE_LIST_LINE_rec => l_old_PRICE_LIST_LINE_rec
556 , x_PRICE_LIST_LINE_rec => l_PRICE_LIST_LINE_rec
557 );
558
559 END IF;
560
561 -- Entity level validation.
562
563 IF l_control_rec.validate_entity THEN
564
565 IF l_PRICE_LIST_LINE_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
566
567 QP_Validate_Price_List_Line.Entity_Delete
568 ( x_return_status => l_return_status
569 , p_PRICE_LIST_LINE_rec => l_PRICE_LIST_LINE_rec
570 );
571
572 ELSE
573
574 QP_Validate_Price_List_Line.Entity
575 ( x_return_status => l_return_status
576 , p_PRICE_LIST_LINE_rec => l_PRICE_LIST_LINE_rec
577 , p_old_PRICE_LIST_LINE_rec => l_old_PRICE_LIST_LINE_rec
578 );
579
580 END IF;
581
582 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
583 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
584 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
585 RAISE FND_API.G_EXC_ERROR;
586 END IF;
587
588 END IF;
589
590 -- Step 4. Write to DB
591
592 IF l_control_rec.write_to_db THEN
593
594 IF l_PRICE_LIST_LINE_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
595
596 QP_Price_List_Line_Util.Delete_Row
597 ( p_list_line_id => l_PRICE_LIST_LINE_rec.list_line_id
598 );
599
600 ELSE
601
602 -- Get Who Information
603
604 l_PRICE_LIST_LINE_rec.last_update_date := SYSDATE;
605 l_PRICE_LIST_LINE_rec.last_updated_by := FND_GLOBAL.USER_ID;
606 l_PRICE_LIST_LINE_rec.last_update_login := FND_GLOBAL.LOGIN_ID;
607
608 IF l_PRICE_LIST_LINE_rec.operation = QP_GLOBALS.G_OPR_UPDATE THEN
609
610 QP_Price_List_Line_Util.Update_Row (l_PRICE_LIST_LINE_rec);
611
612 ELSIF l_PRICE_LIST_LINE_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
613
614 l_PRICE_LIST_LINE_rec.creation_date := SYSDATE;
615 l_PRICE_LIST_LINE_rec.created_by := FND_GLOBAL.USER_ID;
616
617 QP_Price_List_Line_Util.Insert_Row (l_PRICE_LIST_LINE_rec);
618
619 IF l_PRICE_LIST_LINE_rec.operation = QP_GLOBALS.G_OPR_CREATE
620 AND l_PRICE_LIST_LINE_rec.PRICE_BREAK_HEADER_index IS NOT NULL
621 AND l_PRICE_LIST_LINE_rec.PRICE_BREAK_HEADER_index <> FND_API.G_MISS_NUM
622 AND (l_PRICE_LIST_LINE_rec.from_rltd_modifier_id IS NULL OR
623 l_PRICE_LIST_LINE_rec.from_rltd_modifier_id = FND_API.G_MISS_NUM)
624 THEN
625
626 IF l_PRICE_LIST_LINE_tbl.EXISTS(l_PRICE_LIST_LINE_rec.PRICE_BREAK_HEADER_index) AND
627 l_PRICE_LIST_LINE_tbl(l_PRICE_LIST_LINE_rec.PRICE_BREAK_HEADER_index).list_line_type_code = 'PBH'
628 THEN
629
630 -- Copy parent list_line_id to from_rltd_modifier_id.
631
632 l_PRICE_LIST_LINE_rec.from_rltd_modifier_id :=
633 l_PRICE_LIST_LINE_tbl(l_PRICE_LIST_LINE_rec.PRICE_BREAK_HEADER_index).list_line_id;
634
635
636 END IF;
637
638 END IF;
639
640
641 IF l_PRICE_LIST_LINE_rec.from_rltd_modifier_id IS NOT NULL
642 AND l_PRICE_LIST_LINE_rec.rltd_modifier_group_no IS NOT NULL
643 THEN
644
645 select QP_RLTD_MODIFIERS_S.nextval
646 into l_rltd_modifiers_s from dual;
647
648 QP_RLTD_MODIFIER_PVT.Insert_Row(
649 l_rltd_modifiers_s
650 , l_PRICE_LIST_LINE_rec.creation_date
651 , l_PRICE_LIST_LINE_rec.created_by
652 , l_price_list_line_rec.last_update_date
653 , l_price_list_line_rec.last_updated_by
654 , l_price_list_line_rec.last_update_login
655 , l_price_list_line_rec.rltd_modifier_group_no
656 , l_price_list_line_rec.from_rltd_modifier_id
657 , l_price_list_line_rec.list_line_id
658 , 'PRICE BREAK'
659 , null
660 , null
661 , null
662 , null
663 , null
664 , null
665 , null
666 , null
667 , null
668 , null
669 , null
670 , null
671 , null
672 , null
673 , null
674 , null
675 );
676
677 qp_delayed_requests_PVT.log_request(
678 p_entity_code => QP_GLOBALS.G_ENTITY_PRICE_LIST_LINE,
679 p_entity_id => l_price_list_line_rec.list_line_id,
680 p_requesting_entity_code=> QP_GLOBALS.G_ENTITY_PRICE_LIST_LINE,
681 p_requesting_entity_id => l_price_list_line_rec.list_line_id,
682 p_request_type =>QP_GLOBALS.G_UPDATE_LINE_QUAL_IND,
683 x_return_status => l_return_status);
684
685 END IF;
686
687 END IF;
688
689 END IF;
690
691 END IF;
692
693 END IF; /* if operation is create, update or delete */
694
695 -- Load tables.
696
697 l_PRICE_LIST_LINE_tbl(I) := l_PRICE_LIST_LINE_rec;
698 l_old_PRICE_LIST_LINE_tbl(I) := l_old_PRICE_LIST_LINE_rec;
699
700 -- For loop exception handler.
701
702
703 EXCEPTION
704
705 WHEN FND_API.G_EXC_ERROR THEN
706
707 l_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_ERROR;
708 l_PRICE_LIST_LINE_tbl(I) := l_PRICE_LIST_LINE_rec;
709 l_old_PRICE_LIST_LINE_tbl(I) := l_old_PRICE_LIST_LINE_rec;
710
711 -- mkarya If process_price_list has been called from public package, then ONLY call
712 -- qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
713 if l_control_rec.called_from_ui = 'N' then
714 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
715 (p_entity_code => QP_GLOBALS.G_ENTITY_PRICE_LIST_LINE,
716 p_entity_id => l_PRICE_LIST_LINE_rec.list_line_id,
717 x_return_status => l_return_status );
718
719 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
720 (p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
721 p_entity_id => l_PRICE_LIST_LINE_rec.list_line_id,
722 x_return_status => l_return_status );
723 end if;
724
725 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
726
727 l_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
728 l_PRICE_LIST_LINE_tbl(I) := l_PRICE_LIST_LINE_rec;
729 l_old_PRICE_LIST_LINE_tbl(I) := l_old_PRICE_LIST_LINE_rec;
730
731 -- mkarya If process_price_list has been called from public package, then ONLY call
732 -- qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
733 if l_control_rec.called_from_ui = 'N' then
734 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
735 (p_entity_code => QP_GLOBALS.G_ENTITY_PRICE_LIST_LINE,
736 p_entity_id => l_PRICE_LIST_LINE_rec.list_line_id,
737 x_return_status => l_return_status );
738
739 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
740 (p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
741 p_entity_id => l_PRICE_LIST_LINE_rec.list_line_id,
742 x_return_status => l_return_status );
743 end if;
744
745 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
746
747 WHEN OTHERS THEN
748
749 l_PRICE_LIST_LINE_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
750 l_PRICE_LIST_LINE_tbl(I) := l_PRICE_LIST_LINE_rec;
751 l_old_PRICE_LIST_LINE_tbl(I) := l_old_PRICE_LIST_LINE_rec;
752
753 IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
754 THEN
755 oe_msg_pub.Add_Exc_Msg
756 ( G_PKG_NAME
757 , 'Price_List_Lines'
758 );
759 END IF;
760
761 -- mkarya If process_price_list has been called from public package, then ONLY call
762 -- qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
763 if l_control_rec.called_from_ui = 'N' then
764 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
765 (p_entity_code => QP_GLOBALS.G_ENTITY_PRICE_LIST_LINE,
766 p_entity_id => l_PRICE_LIST_LINE_rec.list_line_id,
767 x_return_status => l_return_status );
768
769 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
770 (p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
771 p_entity_id => l_PRICE_LIST_LINE_rec.list_line_id,
772 x_return_status => l_return_status );
773 end if;
774
775 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
776
777 END;
778 END LOOP;
779
780 -- Load OUT parameters
781
782 x_PRICE_LIST_LINE_tbl := l_PRICE_LIST_LINE_tbl;
783 x_old_PRICE_LIST_LINE_tbl := l_old_PRICE_LIST_LINE_tbl;
784
785 EXCEPTION
786
787 WHEN FND_API.G_EXC_ERROR THEN
788
789 RAISE;
790
791 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
792
793
794 RAISE;
795
796 WHEN OTHERS THEN
797
798 IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
799 THEN
800 oe_msg_pub.Add_Exc_Msg
801 ( G_PKG_NAME
802 , 'Price_List_Lines'
803 );
804 END IF;
805
806
807 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
808
809 END Price_List_Lines;
810
811 -- Qualifierss
812
813
814 PROCEDURE Qualifierss
815 ( p_validation_level IN NUMBER
816 , p_control_rec IN QP_GLOBALS.Control_Rec_Type
817 , p_QUALIFIERS_tbl IN Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type
818 , p_old_QUALIFIERS_tbl IN Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type
819 , x_QUALIFIERS_tbl OUT NOCOPY /* file.sql.39 change */ Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type
820 , x_old_QUALIFIERS_tbl OUT NOCOPY /* file.sql.39 change */ Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type
821 )
822 IS
823 l_return_status VARCHAR2(1);
824 l_control_rec QP_GLOBALS.Control_Rec_Type;
825 l_QUALIFIERS_rec Qp_Qualifier_Rules_Pub.Qualifiers_Rec_Type;
826 l_p_QUALIFIERS_rec Qp_Qualifier_Rules_Pub.Qualifiers_Rec_Type;
827 l_QUALIFIERS_tbl Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
828 l_old_QUALIFIERS_rec Qp_Qualifier_Rules_Pub.Qualifiers_Rec_Type;
829 l_old_QUALIFIERS_tbl Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
830 l_list_type_code QP_LIST_HEADERS_B.LIST_TYPE_CODE%TYPE;
831 l_pte_code VARCHAR2(30);
832 l_source_system_code VARCHAR2(30);
833 l_saved_pte_code VARCHAR2(30);
834 l_saved_source_system_code VARCHAR2(30);
835
836 v_count NUMBER;
837 v_install VARCHAR2(1);
838 BEGIN
839
840 --Added for Bug 2444971 - Begin
841 FND_PROFILE.GET('QP_PRICING_TRANSACTION_ENTITY', l_pte_code);
842 FND_PROFILE.GET('QP_SOURCE_SYSTEM_CODE', l_source_system_code);
843 --Added for Bug 2444971 - End
844
845 -- Init local table variables.
846
847 l_QUALIFIERS_tbl := p_QUALIFIERS_tbl;
848 l_old_QUALIFIERS_tbl := p_old_QUALIFIERS_tbl;
849
850 FOR I IN 1..l_QUALIFIERS_tbl.COUNT LOOP
851 BEGIN
852
853 -- Load local records.
854
855 l_QUALIFIERS_rec := l_QUALIFIERS_tbl(I);
856
857 IF l_old_QUALIFIERS_tbl.EXISTS(I) THEN
858 l_old_QUALIFIERS_rec := l_old_QUALIFIERS_tbl(I);
859 ELSE
860 l_old_QUALIFIERS_rec := Qp_Qualifier_Rules_Pub.G_MISS_QUALIFIERS_REC;
861 END IF;
862
863 -- Load API control record
864
865 l_control_rec := QP_GLOBALS.Init_Control_Rec
866 ( p_operation => l_QUALIFIERS_rec.operation
867 , p_control_rec => p_control_rec
868 );
869
870 -- Set record return status.
871
872 l_QUALIFIERS_rec.return_status := FND_API.G_RET_STS_SUCCESS;
873
874 -- Prepare record.
875
876 IF l_QUALIFIERS_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
877
878 l_QUALIFIERS_rec.db_flag := FND_API.G_FALSE;
879
880 -- Set missing old record elements to NULL.
881
882 l_old_QUALIFIERS_rec :=
883 QP_Qualifiers_Util.Convert_Miss_To_Null (l_old_QUALIFIERS_rec);
884
885 ELSIF l_QUALIFIERS_rec.operation = QP_GLOBALS.G_OPR_UPDATE
886 OR l_QUALIFIERS_rec.operation = QP_GLOBALS.G_OPR_DELETE
887 THEN
888
889 l_QUALIFIERS_rec.db_flag := FND_API.G_TRUE;
890
891 -- Query Old if missing
892
893 IF l_old_QUALIFIERS_rec.qualifier_id = FND_API.G_MISS_NUM
894 THEN
895
896 l_old_QUALIFIERS_rec := QP_Qualifiers_Util.Query_Row
897 ( p_qualifier_id => l_QUALIFIERS_rec.qualifier_id
898 );
899
900 ELSE
901
902 -- Set missing old record elements to NULL.
903
904 l_old_QUALIFIERS_rec :=
905 QP_Qualifiers_Util.Convert_Miss_To_Null (l_old_QUALIFIERS_rec);
906
907 END IF;
908
909 -- Complete new record from old
910
911 l_QUALIFIERS_rec := QP_Qualifiers_Util.Complete_Record
912 ( p_QUALIFIERS_rec => l_QUALIFIERS_rec
913 , p_old_QUALIFIERS_rec => l_old_QUALIFIERS_rec
914 );
915
916 --Start of code added for Bug 2444971. Added for Patchset H
917 BEGIN
918 SELECT h.pte_code, h.source_system_code, h.list_type_code
919 INTO l_saved_pte_code, l_saved_source_system_code,
920 l_list_type_code
921 FROM qp_list_headers_b h, qp_qualifiers q
922 WHERE h.list_header_id = q.list_header_id
923 AND q.qualifier_id = l_QUALIFIERS_rec.qualifier_id;
924
925 EXCEPTION
926 WHEN OTHERS THEN
927 NULL;
928 END;
929
930 IF (l_saved_pte_code <> l_pte_code OR
931 l_saved_source_system_code <> l_source_system_code)
932 AND l_list_type_code IN ('PRL', 'AGR')
933 THEN
934
935 l_return_status := FND_API.G_RET_STS_ERROR;
936 FND_MESSAGE.SET_NAME('QP', 'QP_PTE_SS_CODE_MISMATCH');
937 FND_MESSAGE.SET_TOKEN('SOURCE_SYSTEM',l_saved_source_system_code);
938 FND_MESSAGE.SET_TOKEN('PTE_CODE',l_saved_pte_code);
939 OE_MSG_PUB.Add;
940
941 RAISE FND_API.G_EXC_ERROR;
942
943 END IF;
944 --End of code added for Bug 2444971. Added for Patchset H
945
946 END IF;
947
948 -- Attribute level validation.
949 IF ( l_QUALIFIERS_rec.operation = QP_GLOBALS.G_OPR_UPDATE
950 or l_QUALIFIERS_rec.operation = QP_GLOBALS.G_OPR_CREATE
951 or l_QUALIFIERS_rec.operation = QP_GLOBALS.G_OPR_DELETE ) THEN
952
953 IF l_control_rec.default_attributes
954 OR l_control_rec.change_attributes
955 THEN
956
957 IF p_validation_level > FND_API.G_VALID_LEVEL_NONE THEN
958
959 QP_Validate_Qualifiers.Attributes
960 ( x_return_status => l_return_status
961 , p_QUALIFIERS_rec => l_QUALIFIERS_rec
962 , p_old_QUALIFIERS_rec => l_old_QUALIFIERS_rec
963 );
964
965 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
966 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
967 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
968 RAISE FND_API.G_EXC_ERROR;
969 END IF;
970
971 END IF;
972
973 END IF;
974
975 -- Clear dependent attributes.
976
977 IF l_control_rec.change_attributes THEN
978 l_p_QUALIFIERS_rec := l_QUALIFIERS_rec;
979 QP_Qualifiers_Util.Clear_Dependent_Attr
980 ( p_QUALIFIERS_rec => l_p_QUALIFIERS_rec
981 , p_old_QUALIFIERS_rec => l_old_QUALIFIERS_rec
982 , x_QUALIFIERS_rec => l_QUALIFIERS_rec
983 );
984
985 END IF;
986
987 -- Default missing attributes
988
989 IF l_control_rec.default_attributes
990 OR l_control_rec.change_attributes
991 THEN
992 l_p_QUALIFIERS_rec := l_QUALIFIERS_rec;
993 QP_Default_Qualifiers.Attributes
994 ( p_QUALIFIERS_rec => l_p_QUALIFIERS_rec
995 , x_QUALIFIERS_rec => l_QUALIFIERS_rec
996 );
997
998 END IF;
999
1000 --Start of code added for Bug 2444971. Added for Patchset H
1001 IF l_QUALIFIERS_rec.operation = QP_GLOBALS.G_OPR_CREATE
1002 THEN
1003 BEGIN
1004
1005 SELECT pte_code, source_system_code, list_type_code
1006 INTO l_saved_pte_code, l_saved_source_system_code,
1007 l_list_type_code
1008 FROM qp_list_headers_b
1009 WHERE list_header_id = l_QUALIFIERS_rec.list_header_id;
1010
1011 EXCEPTION
1012 WHEN OTHERS THEN
1013 NULL;
1014 END;
1015
1016 IF (l_saved_pte_code <> l_pte_code OR
1017 l_saved_source_system_code <> l_source_system_code)
1018 AND l_list_type_code IN ('PRL', 'AGR')
1019 THEN
1020
1021 l_return_status := FND_API.G_RET_STS_ERROR;
1022 FND_MESSAGE.SET_NAME('QP', 'QP_PTE_SS_CODE_MISMATCH');
1023 FND_MESSAGE.SET_TOKEN('SOURCE_SYSTEM',l_saved_source_system_code);
1024 FND_MESSAGE.SET_TOKEN('PTE_CODE',l_saved_pte_code);
1025 OE_MSG_PUB.Add;
1026
1027 RAISE FND_API.G_EXC_ERROR;
1028
1029 END IF;
1030
1031 END IF; --operation is G_OPR_CREATE
1032 --End of code added for Bug 2444971. Added for Patchset H
1033
1034 -- Apply attribute changes
1035
1036 IF l_control_rec.default_attributes
1037 OR l_control_rec.change_attributes
1038 THEN
1039 l_p_QUALIFIERS_rec := l_QUALIFIERS_rec;
1040 QP_Qualifiers_Util.Apply_Attribute_Changes
1041 ( p_QUALIFIERS_rec => l_p_QUALIFIERS_rec
1042 , p_old_QUALIFIERS_rec => l_old_QUALIFIERS_rec
1043 , x_QUALIFIERS_rec => l_QUALIFIERS_rec
1044 );
1045
1046 END IF;
1047
1048 -- Entity level validation.
1049
1050 IF l_control_rec.validate_entity THEN
1051
1052 IF l_QUALIFIERS_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
1053
1054 QP_Validate_Qualifiers.Entity_Delete
1055 ( x_return_status => l_return_status
1056 , p_QUALIFIERS_rec => l_QUALIFIERS_rec
1057 );
1058
1059 ELSE
1060
1061 QP_Validate_Qualifiers.Entity
1062 ( x_return_status => l_return_status
1063 , p_QUALIFIERS_rec => l_QUALIFIERS_rec
1064 , p_old_QUALIFIERS_rec => l_old_QUALIFIERS_rec
1065 );
1066
1067 END IF;
1068
1069 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1070 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1071 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1072 RAISE FND_API.G_EXC_ERROR;
1073 END IF;
1074
1075 oe_debug_pub.add('qualifier attr value = '||l_qualifiers_rec.qualifier_attr_value);
1076 v_install := QP_UTIL.GET_QP_STATUS;
1077 IF v_install = 'S' THEN
1078
1079 /*modified by spgopal for bug: 1381209 08/17/00*/
1080
1081 BEGIN
1082
1083 SELECT LIST_TYPE_CODE INTO l_list_type_code
1084 FROM QP_LIST_HEADERS_B WHERE
1085 LIST_HEADER_ID = l_QUALIFIERS_rec.LIST_HEADER_ID;
1086 EXCEPTION
1087 When NO_DATA_FOUND Then Null;
1088 END;
1089
1090 oe_debug_pub.add('in basic qual test');
1091 if l_list_type_code in ('DLT', 'SLT') then
1092
1093 -- mkarya for bug 1820251, error while updating end-date of a header level qualifier
1094 -- commented the following lines as there is no condition of only one qualifier
1095 -- of type Price List, as per the discussion with product management.
1096 /*
1097 oe_debug_pub.add('in modifier qual test'||l_list_type_code);
1098 BEGIN
1099
1100 SELECT COUNT(*) INTO v_count FROM
1101 QP_QUALIFIERS WHERE
1102 LIST_HEADER_ID = l_QUALIFIERS_rec.list_header_id
1103 AND QUALIFIER_CONTEXT = 'MODLIST'
1104 AND QUALIFIER_ATTRIBUTE = 'QUALIFIER_ATTRIBUTE4';
1105
1106 EXCEPTION
1107 When NO_DATA_FOUND Then Null;
1108 END;
1109
1110
1111 if v_count > 0 and
1112 (l_QUALIFIERS_rec.QUALIFIER_CONTEXT = 'MODLIST'
1113 and l_QUALIFIERS_rec.QUALIFIER_ATTRIBUTE =
1114 'QUALIFIER_ATTRIBUTE4') then
1115
1116 fnd_message.set_name('QP', 'QP_BASIC_MOD_MULT_PLIST');
1117 oe_msg_pub.add;
1118 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1119
1120 else null;
1121 end if;
1122 */
1123 null;
1124 -- mkarya for bug 1820251, END
1125 elsif l_list_type_code = 'PRL' then
1126 /*end of modifications by spgopal 08/17/00*/
1127
1128 /* The following if condition has been added for 1606695 */
1129
1130 if l_qualifiers_rec.operation <> QP_GLOBALS.G_OPR_DELETE
1131 then
1132 SELECT COUNT(*)
1133 INTO v_count
1134 FROM qp_secondary_price_lists_v
1135 WHERE parent_price_list_id =
1136 l_qualifiers_rec.qualifier_attr_value;
1137
1138 IF v_count > 0 THEN
1139 fnd_message.set_name('QP', 'QP_SEC_PRL_COUNT');
1140 oe_msg_pub.add;
1141 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1142 END IF;
1143 end if; -- l_qualifiers_rec.operation
1144 /* 1606695 */
1145
1146
1147
1148 else Null;
1149
1150 end if; --list_type_code
1151 END IF;
1152
1153 END IF;
1154
1155 IF l_control_rec.write_to_db THEN
1156 l_p_QUALIFIERS_rec := l_QUALIFIERS_rec;
1157 QP_QUALIFIERS_UTIL.PRE_WRITE_PROCESS
1158 ( p_QUALIFIERS_rec => l_p_QUALIFIERS_rec
1159 , p_old_QUALIFIERS_rec => l_old_QUALIFIERS_rec
1160 , x_QUALIFIERS_rec => l_QUALIFIERS_rec);
1161
1162 END IF;
1163
1164 -- Step 4. Write to DB
1165
1166 IF l_control_rec.write_to_db THEN
1167
1168 IF l_QUALIFIERS_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
1169
1170 IF l_QUALIFIERS_rec.QUALIFIER_CONTEXT = 'MODLIST' AND
1171 l_QUALIFIERS_rec.QUALIFIER_ATTRIBUTE =
1172 'QUALIFIER_ATTRIBUTE3' THEN
1173 --fix for bug 1501138 not allow deletion of coupon qualifiers
1174
1175 oe_debug_pub.add('1501138 not allow delete qual');
1176 FND_MESSAGE.SET_NAME('QP', 'QP_CANNOT_DELETE_THIS_QUAL');
1177 OE_MSG_PUB.ADD;
1178 RAISE FND_API.G_EXC_ERROR;
1179 ELSE
1180
1181 QP_Qualifiers_Util.Delete_Row
1182 ( p_qualifier_id => l_QUALIFIERS_rec.qualifier_id
1183 );
1184 END IF;
1185
1186 ELSE
1187
1188 -- Get Who Information
1189
1190 l_QUALIFIERS_rec.last_update_date := SYSDATE;
1191 l_QUALIFIERS_rec.last_updated_by := FND_GLOBAL.USER_ID;
1192 l_QUALIFIERS_rec.last_update_login := FND_GLOBAL.LOGIN_ID;
1193
1194 IF l_QUALIFIERS_rec.operation = QP_GLOBALS.G_OPR_UPDATE THEN
1195
1196 QP_Qualifiers_Util.Update_Row (l_QUALIFIERS_rec);
1197 IF l_QUALIFIERS_rec.QUALIFIER_CONTEXT = 'MODLIST' AND
1198 l_QUALIFIERS_rec.QUALIFIER_ATTRIBUTE =
1199 'QUALIFIER_ATTRIBUTE3' THEN
1200 QP_Qualifiers_Util.Update_Coupon_Row (l_QUALIFIERS_rec); ---Added for bug 7315016
1201 END IF;
1202
1203 ELSIF l_QUALIFIERS_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
1204
1205 l_QUALIFIERS_rec.creation_date := SYSDATE;
1206 l_QUALIFIERS_rec.created_by := FND_GLOBAL.USER_ID;
1207
1208 QP_Qualifiers_Util.Insert_Row (l_QUALIFIERS_rec);
1209
1210 END IF;
1211
1212 END IF;
1213
1214 END IF;
1215
1216 END IF; /* if operation is create, update or delete */
1217
1218 -- Load tables.
1219
1220 l_QUALIFIERS_tbl(I) := l_QUALIFIERS_rec;
1221 l_old_QUALIFIERS_tbl(I) := l_old_QUALIFIERS_rec;
1222
1223 -- For loop exception handler.
1224
1225
1226 EXCEPTION
1227
1228 WHEN FND_API.G_EXC_ERROR THEN
1229
1230 l_QUALIFIERS_rec.return_status := FND_API.G_RET_STS_ERROR;
1231 l_QUALIFIERS_tbl(I) := l_QUALIFIERS_rec;
1232 l_old_QUALIFIERS_tbl(I) := l_old_QUALIFIERS_rec;
1233
1234 -- mkarya If process_price_list has been called from public package, then ONLY call
1235 -- qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1236 if l_control_rec.called_from_ui = 'N' then
1237 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1238 (p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
1239 p_entity_id => l_QUALIFIERS_rec.list_header_id,
1240 x_return_status => l_return_status );
1241
1242 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1243 (p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
1244 p_entity_id => l_QUALIFIERS_rec.list_line_id,
1245 x_return_status => l_return_status );
1246
1247 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1248 (p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
1249 p_entity_id => l_QUALIFIERS_rec.qualifier_id,
1250 x_return_status => l_return_status );
1251 end if;
1252
1253 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1254
1255 l_QUALIFIERS_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1256 l_QUALIFIERS_tbl(I) := l_QUALIFIERS_rec;
1257 l_old_QUALIFIERS_tbl(I) := l_old_QUALIFIERS_rec;
1258
1259 -- mkarya If process_price_list has been called from public package, then ONLY call
1260 -- qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1261 if l_control_rec.called_from_ui = 'N' then
1262 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1263 (p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
1264 p_entity_id => l_QUALIFIERS_rec.list_header_id,
1265 x_return_status => l_return_status );
1266
1267 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1268 (p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
1269 p_entity_id => l_QUALIFIERS_rec.list_line_id,
1270 x_return_status => l_return_status );
1271
1272 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1273 (p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
1274 p_entity_id => l_QUALIFIERS_rec.qualifier_id,
1275 x_return_status => l_return_status );
1276 end if;
1277
1278 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1279
1280 WHEN OTHERS THEN
1281
1282 l_QUALIFIERS_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1283 l_QUALIFIERS_tbl(I) := l_QUALIFIERS_rec;
1284 l_old_QUALIFIERS_tbl(I) := l_old_QUALIFIERS_rec;
1285
1286 IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1287 THEN
1288 oe_msg_pub.Add_Exc_Msg
1289 ( G_PKG_NAME
1290 , 'Qualifierss'
1291 );
1292 END IF;
1293
1294 -- mkarya If process_price_list has been called from public package, then ONLY call
1295 -- qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1296 if l_control_rec.called_from_ui = 'N' then
1297 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1298 (p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
1299 p_entity_id => l_QUALIFIERS_rec.list_header_id,
1300 x_return_status => l_return_status );
1301
1302 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1303 (p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
1304 p_entity_id => l_QUALIFIERS_rec.list_line_id,
1305 x_return_status => l_return_status );
1306
1307 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1308 (p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
1309 p_entity_id => l_QUALIFIERS_rec.qualifier_id,
1310 x_return_status => l_return_status );
1311 end if;
1312
1313 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1314
1315 END;
1316 END LOOP;
1317
1318 -- Load OUT parameters
1319
1320 x_QUALIFIERS_tbl := l_QUALIFIERS_tbl;
1321 x_old_QUALIFIERS_tbl := l_old_QUALIFIERS_tbl;
1322
1323 EXCEPTION
1324
1325 WHEN FND_API.G_EXC_ERROR THEN
1326
1327 RAISE;
1328
1329 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1330
1331
1332 RAISE;
1333
1334 WHEN OTHERS THEN
1335
1336 IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1337 THEN
1338 oe_msg_pub.Add_Exc_Msg
1339 ( G_PKG_NAME
1340 , 'Qualifierss'
1341 );
1342 END IF;
1343
1344
1345 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1346
1347 END Qualifierss;
1348
1349
1350
1351 -- Pricing_Attrs
1352
1353 PROCEDURE Pricing_Attrs
1354 ( p_validation_level IN NUMBER
1355 , p_control_rec IN QP_GLOBALS.Control_Rec_Type
1356 , p_PRICING_ATTR_tbl IN QP_Price_List_PUB.Pricing_Attr_Tbl_Type
1357 , p_old_PRICING_ATTR_tbl IN QP_Price_List_PUB.Pricing_Attr_Tbl_Type
1358 , x_PRICING_ATTR_tbl OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Pricing_Attr_Tbl_Type
1359 , x_old_PRICING_ATTR_tbl OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Pricing_Attr_Tbl_Type
1360 )
1361 IS
1362 l_return_status VARCHAR2(1);
1363 l_control_rec QP_GLOBALS.Control_Rec_Type;
1364 l_PRICING_ATTR_rec QP_Price_List_PUB.Pricing_Attr_Rec_Type;
1365 l_p_PRICING_ATTR_rec QP_Price_List_PUB.Pricing_Attr_Rec_Type;
1366 l_PRICING_ATTR_tbl QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1367 l_old_PRICING_ATTR_rec QP_Price_List_PUB.Pricing_Attr_Rec_Type;
1368 l_old_PRICING_ATTR_tbl QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1369 l_pte_code VARCHAR2(30);
1370 l_source_system_code VARCHAR2(30);
1371 l_saved_pte_code VARCHAR2(30);
1372 l_saved_source_system_code VARCHAR2(30);
1373 --Bug 4706180
1374 l_rltd_modifier_grp_type VARCHAR2(30);
1375
1376 BEGIN
1377
1378 oe_debug_pub.add('entering pricing attrs');
1379
1380 --Added for Bug 2444971 - Begin
1381 FND_PROFILE.GET('QP_PRICING_TRANSACTION_ENTITY', l_pte_code);
1382 FND_PROFILE.GET('QP_SOURCE_SYSTEM_CODE', l_source_system_code);
1383 --Added for Bug 2444971 - End
1384
1385 -- Init local table variables.
1386
1387 l_PRICING_ATTR_tbl := p_PRICING_ATTR_tbl;
1388 l_old_PRICING_ATTR_tbl := p_old_PRICING_ATTR_tbl;
1389
1390 oe_debug_pub.add('before for loop ');
1391
1392 FOR I IN 1..l_PRICING_ATTR_tbl.COUNT LOOP
1393 BEGIN
1394
1395 -- Load local records.
1396
1397 l_PRICING_ATTR_rec := l_PRICING_ATTR_tbl(I);
1398
1399 --Fetch modfier group type (Bug 4706180) Start
1400 BEGIN
1401 SELECT RLTD_MODIFIER_GRP_TYPE
1402 INTO l_rltd_modifier_grp_type
1403 FROM qp_rltd_modifiers rm
1404 WHERE rm.TO_RLTD_MODIFIER_ID = l_PRICING_ATTR_rec.list_line_id;
1405 EXCEPTION
1406 WHEN OTHERS THEN
1407 l_rltd_modifier_grp_type := '';
1408 END;
1409 --End
1410
1411 -- If the 'value to' in the price break is equal to null and the value from is not null then
1412 -- make the 'value to' equal to 999999999999999 to accomodate a high value
1413 IF(l_Pricing_Attr_rec.pricing_attr_value_to IS NULL
1414 AND l_Pricing_Attr_rec.pricing_attr_value_from IS NOT NULL
1415 -- Bug 4706180
1416 AND l_rltd_modifier_grp_type = 'PRICE BREAK')
1417 THEN
1418 l_Pricing_Attr_rec.pricing_attr_value_to := '999999999999999';
1419 END IF;
1420
1421 IF l_old_PRICING_ATTR_tbl.EXISTS(I) THEN
1422 oe_debug_pub.add('record already exists');
1423 l_old_PRICING_ATTR_rec := l_old_PRICING_ATTR_tbl(I);
1424 ELSE
1425 l_old_PRICING_ATTR_rec := QP_Price_List_PUB.G_MISS_PRICING_ATTR_REC;
1426 END IF;
1427
1428 -- Load API control record
1429 oe_debug_pub.add('before init control rec');
1430
1431 l_control_rec := QP_GLOBALS.Init_Control_Rec
1432 ( p_operation => l_PRICING_ATTR_rec.operation
1433 , p_control_rec => p_control_rec
1434 );
1435
1436 -- Set record return status.
1437
1438 l_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_SUCCESS;
1439
1440 -- Prepare record.
1441
1442 IF l_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
1443
1444 oe_debug_pub.add(' operation is create ');
1445
1446 l_PRICING_ATTR_rec.db_flag := FND_API.G_FALSE;
1447
1448 -- Set missing old record elements to NULL.
1449
1450 l_old_PRICING_ATTR_rec :=
1451 Qp_pll_pricing_attr_Util.Convert_Miss_To_Null (l_old_PRICING_ATTR_rec);
1452
1453 ELSIF l_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_UPDATE
1454 OR l_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_DELETE
1455 THEN
1456 oe_debug_pub.add('operation is update');
1457
1458 l_PRICING_ATTR_rec.db_flag := FND_API.G_TRUE;
1459
1460 -- Query Old if missing
1461
1462 IF l_old_PRICING_ATTR_rec.pricing_attribute_id = FND_API.G_MISS_NUM
1463 THEN
1464 oe_debug_pub.add('query pricing attributes');
1465
1466 l_old_PRICING_ATTR_rec := Qp_pll_pricing_attr_Util.Query_Row
1467 ( p_pricing_attribute_id => l_PRICING_ATTR_rec.pricing_attribute_id
1468 );
1469
1470 ELSE
1471
1472 -- Set missing old record elements to NULL.
1473
1474 oe_debug_pub.add('set missing record elements to null');
1475 l_old_PRICING_ATTR_rec :=
1476 Qp_pll_pricing_attr_Util.Convert_Miss_To_Null (l_old_PRICING_ATTR_rec);
1477
1478 END IF;
1479
1480 -- Complete new record from old
1481
1482 oe_debug_pub.add('complete new record from old');
1483
1484
1485 l_PRICING_ATTR_rec := Qp_pll_pricing_attr_Util.Complete_Record
1486 ( p_PRICING_ATTR_rec => l_PRICING_ATTR_rec
1487 , p_old_PRICING_ATTR_rec => l_old_PRICING_ATTR_rec
1488 );
1489
1490 --Start of code added for Bug 2444971. Added for Patchset H
1491 BEGIN
1492 SELECT h.pte_code, h.source_system_code
1493 INTO l_saved_pte_code, l_saved_source_system_code
1494 FROM qp_list_headers_b h, qp_list_lines l
1495 WHERE h.list_header_id = l.list_header_id
1496 AND l.list_line_id = l_PRICING_ATTR_rec.list_line_id;
1497
1498 EXCEPTION
1499 WHEN OTHERS THEN
1500 NULL;
1501 END;
1502
1503 IF l_saved_pte_code <> l_pte_code OR
1504 l_saved_source_system_code <> l_source_system_code
1505 THEN
1506
1507 l_return_status := FND_API.G_RET_STS_ERROR;
1508 FND_MESSAGE.SET_NAME('QP', 'QP_PTE_SS_CODE_MISMATCH');
1509 FND_MESSAGE.SET_TOKEN('SOURCE_SYSTEM',l_saved_source_system_code);
1510 FND_MESSAGE.SET_TOKEN('PTE_CODE',l_saved_pte_code);
1511 OE_MSG_PUB.Add;
1512
1513 RAISE FND_API.G_EXC_ERROR;
1514
1515 END IF;
1516 --End of code added for Bug 2444971. Added for Patchset H
1517
1518 END IF;
1519
1520 -- Attribute level validation.
1521 IF ( l_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_UPDATE
1522 or l_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_CREATE
1523 or l_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_DELETE ) THEN
1524
1525 IF l_control_rec.default_attributes
1526 OR l_control_rec.change_attributes
1527 THEN
1528
1529 IF p_validation_level > FND_API.G_VALID_LEVEL_NONE THEN
1530
1531 oe_debug_pub.add('validate the attributes');
1532
1533 QP_Validate_pll_pricing_attr.Attributes
1534 ( x_return_status => l_return_status
1535 , p_PRICING_ATTR_rec => l_PRICING_ATTR_rec
1536 , p_old_PRICING_ATTR_rec => l_old_PRICING_ATTR_rec
1537 );
1538
1539 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1540 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1541 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1542 RAISE FND_API.G_EXC_ERROR;
1543 END IF;
1544
1545 END IF;
1546
1547 END IF;
1548
1549 -- Clear dependent attributes.
1550
1551 IF l_control_rec.change_attributes THEN
1552
1553 oe_debug_pub.add('clear dependent attr1');
1554 l_p_PRICING_ATTR_rec := l_PRICING_ATTR_rec;
1555 Qp_pll_pricing_attr_Util.Clear_Dependent_Attr
1556 ( p_PRICING_ATTR_rec => l_p_PRICING_ATTR_rec
1557 , p_old_PRICING_ATTR_rec => l_old_PRICING_ATTR_rec
1558 , x_PRICING_ATTR_rec => l_PRICING_ATTR_rec
1559 );
1560
1561 END IF;
1562
1563 -- Default missing attributes
1564
1565 IF l_control_rec.default_attributes
1566 OR l_control_rec.change_attributes
1567 THEN
1568
1569 oe_debug_pub.add('call attributes ');
1570 l_p_PRICING_ATTR_rec := l_PRICING_ATTR_rec;
1571 QP_Default_pll_pricing_attr.Attributes
1572 ( p_PRICING_ATTR_rec => l_p_PRICING_ATTR_rec
1573 , x_PRICING_ATTR_rec => l_PRICING_ATTR_rec
1574 );
1575
1576 END IF;
1577
1578 --Start of code added for Bug 2444971. Added for Patchset H
1579 IF l_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_CREATE
1580 THEN
1581 BEGIN
1582 SELECT h.pte_code, h.source_system_code
1583 INTO l_saved_pte_code, l_saved_source_system_code
1584 FROM qp_list_headers_b h, qp_list_lines l
1585 WHERE h.list_header_id = l.list_header_id
1586 AND l.list_line_id = l_PRICING_ATTR_rec.list_line_id;
1587
1588 EXCEPTION
1589 WHEN OTHERS THEN
1590 NULL;
1591 END;
1592
1593 IF l_saved_pte_code <> l_pte_code OR
1594 l_saved_source_system_code <> l_source_system_code
1595 THEN
1596
1597 l_return_status := FND_API.G_RET_STS_ERROR;
1598 FND_MESSAGE.SET_NAME('QP', 'QP_PTE_SS_CODE_MISMATCH');
1599 FND_MESSAGE.SET_TOKEN('SOURCE_SYSTEM',l_saved_source_system_code);
1600 FND_MESSAGE.SET_TOKEN('PTE_CODE',l_saved_pte_code);
1601 OE_MSG_PUB.Add;
1602
1603 RAISE FND_API.G_EXC_ERROR;
1604
1605 END IF;
1606
1607 END IF; --operation is G_OPR_CREATE
1608 --End of code added for Bug 2444971. Added for Patchset H
1609
1610 -- Apply attribute changes
1611
1612 IF l_control_rec.default_attributes
1613 OR l_control_rec.change_attributes
1614 THEN
1615 l_p_PRICING_ATTR_rec := l_PRICING_ATTR_rec;
1616 oe_debug_pub.add('before calling apply attribute changes');
1617 Qp_pll_pricing_attr_Util.Apply_Attribute_Changes
1618 ( p_PRICING_ATTR_rec => l_p_PRICING_ATTR_rec
1619 , p_old_PRICING_ATTR_rec => l_old_PRICING_ATTR_rec
1620 , x_PRICING_ATTR_rec => l_PRICING_ATTR_rec
1621 );
1622
1623 END IF;
1624
1625 -- Entity level validation.
1626
1627 IF l_control_rec.validate_entity THEN
1628
1629 IF l_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
1630
1631 QP_Validate_pll_pricing_attr.Entity_Delete
1632 ( x_return_status => l_return_status
1633 , p_PRICING_ATTR_rec => l_PRICING_ATTR_rec
1634 );
1635
1636 ELSE
1637
1638 QP_Validate_pll_pricing_attr.Entity
1639 ( x_return_status => l_return_status
1640 , p_PRICING_ATTR_rec => l_PRICING_ATTR_rec
1641 , p_old_PRICING_ATTR_rec => l_old_PRICING_ATTR_rec
1642 );
1643
1644 END IF;
1645
1646 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1647 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1648 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1649 RAISE FND_API.G_EXC_ERROR;
1650 END IF;
1651
1652 END IF;
1653
1654 IF l_control_rec.write_to_db THEN
1655 l_p_PRICING_ATTR_rec := l_PRICING_ATTR_rec;
1656 QP_pll_PRICING_ATTR_UTIL.PRE_WRITE_PROCESS
1657 ( p_Pricing_Attr_rec => l_p_Pricing_Attr_rec
1658 , p_old_Pricing_Attr_rec => l_old_Pricing_Attr_rec
1659 , x_Pricing_Attr_rec => l_Pricing_Attr_rec);
1660
1661 END IF;
1662
1663 -- Step 4. Write to DB
1664
1665 IF l_control_rec.write_to_db THEN
1666
1667 IF l_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
1668
1669 Qp_pll_pricing_attr_Util.Delete_Row
1670 ( p_pricing_attribute_id => l_PRICING_ATTR_rec.pricing_attribute_id
1671 );
1672
1673 ELSE
1674
1675 -- Get Who Information
1676
1677 l_PRICING_ATTR_rec.last_update_date := SYSDATE;
1678 l_PRICING_ATTR_rec.last_updated_by := FND_GLOBAL.USER_ID;
1679 l_PRICING_ATTR_rec.last_update_login := FND_GLOBAL.LOGIN_ID;
1680
1681 IF l_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_UPDATE THEN
1682
1683 oe_debug_Pub.add('before update row');
1684 Qp_pll_pricing_attr_Util.Update_Row (l_PRICING_ATTR_rec);
1685
1686 ELSIF l_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
1687
1688 l_PRICING_ATTR_rec.creation_date := SYSDATE;
1689 l_PRICING_ATTR_rec.created_by := FND_GLOBAL.USER_ID;
1690
1691 oe_debug_pub.add('before insert row');
1692
1693 Qp_pll_pricing_attr_Util.Insert_Row (l_PRICING_ATTR_rec);
1694
1695 END IF;
1696
1697 END IF;
1698
1699 END IF;
1700
1701 END IF; /* if operation is create, update or delete */
1702
1703 -- Load tables.
1704
1705 l_PRICING_ATTR_tbl(I) := l_PRICING_ATTR_rec;
1706 l_old_PRICING_ATTR_tbl(I) := l_old_PRICING_ATTR_rec;
1707
1708 -- For loop exception handler.
1709
1710
1711 EXCEPTION
1712
1713 WHEN FND_API.G_EXC_ERROR THEN
1714
1715 l_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_ERROR;
1716 l_PRICING_ATTR_tbl(I) := l_PRICING_ATTR_rec;
1717 l_old_PRICING_ATTR_tbl(I) := l_old_PRICING_ATTR_rec;
1718
1719 -- mkarya If process_price_list has been called from public package, then ONLY call
1720 -- qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1721 if l_control_rec.called_from_ui = 'N' then
1722 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1723 (p_entity_code => QP_GLOBALS.G_ENTITY_PRICE_LIST_LINE,
1724 p_entity_id => l_PRICING_ATTR_rec.list_line_id,
1725 x_return_status => l_return_status );
1726
1727 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1728 (p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
1729 p_entity_id => l_PRICING_ATTR_rec.list_line_id,
1730 x_return_status => l_return_status );
1731 end if;
1732
1733 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1734
1735 l_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1736 l_PRICING_ATTR_tbl(I) := l_PRICING_ATTR_rec;
1737 l_old_PRICING_ATTR_tbl(I) := l_old_PRICING_ATTR_rec;
1738
1739 -- mkarya If process_price_list has been called from public package, then ONLY call
1740 -- qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1741 if l_control_rec.called_from_ui = 'N' then
1742 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1743 (p_entity_code => QP_GLOBALS.G_ENTITY_PRICE_LIST_LINE,
1744 p_entity_id => l_PRICING_ATTR_rec.list_line_id,
1745 x_return_status => l_return_status );
1746
1747 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1748 (p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
1749 p_entity_id => l_PRICING_ATTR_rec.list_line_id,
1750 x_return_status => l_return_status );
1751 end if;
1752
1753 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1754
1755 WHEN OTHERS THEN
1756
1757 l_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1758 l_PRICING_ATTR_tbl(I) := l_PRICING_ATTR_rec;
1759 l_old_PRICING_ATTR_tbl(I) := l_old_PRICING_ATTR_rec;
1760
1761 IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1762 THEN
1763 oe_msg_pub.Add_Exc_Msg
1764 ( G_PKG_NAME
1765 , 'Pricing_Attrs'
1766 );
1767 END IF;
1768
1769 -- mkarya If process_price_list has been called from public package, then ONLY call
1770 -- qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1771 if l_control_rec.called_from_ui = 'N' then
1772 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1773 (p_entity_code => QP_GLOBALS.G_ENTITY_PRICE_LIST_LINE,
1774 p_entity_id => l_PRICING_ATTR_rec.list_line_id,
1775 x_return_status => l_return_status );
1776
1777 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1778 (p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
1779 p_entity_id => l_PRICING_ATTR_rec.list_line_id,
1780 x_return_status => l_return_status );
1781 end if;
1782
1783 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1784
1785 END;
1786 END LOOP;
1787
1788 -- Load OUT parameters
1789
1790 x_PRICING_ATTR_tbl := l_PRICING_ATTR_tbl;
1791 x_old_PRICING_ATTR_tbl := l_old_PRICING_ATTR_tbl;
1792
1793 oe_debug_pub.add('exiting pricing attrs');
1794
1795 EXCEPTION
1796
1797 WHEN FND_API.G_EXC_ERROR THEN
1798
1799 RAISE;
1800
1801 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1802
1803
1804 RAISE;
1805
1806 WHEN OTHERS THEN
1807
1808 IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1809 THEN
1810 oe_msg_pub.Add_Exc_Msg
1811 ( G_PKG_NAME
1812 , 'Pricing_Attrs'
1813 );
1814 END IF;
1815
1816
1817 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1818
1819 END Pricing_Attrs;
1820
1821 -- Start of Comments
1822 -- API name Process_Price_List
1823 -- Type Private
1824 -- Function
1825 --
1826 -- Pre-reqs
1827 --
1828 -- Parameters
1829 --
1830 -- Version Current version = 1.0
1831 -- Initial version = 1.0
1832 --
1833 -- Notes
1834 --
1835 -- End of Comments
1836
1837 PROCEDURE Process_Price_List
1838 ( p_api_version_number IN NUMBER
1839 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
1840 , p_commit IN VARCHAR2 := FND_API.G_FALSE
1841 , p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
1842 , p_control_rec IN QP_GLOBALS.Control_Rec_Type :=
1843 QP_GLOBALS.G_MISS_CONTROL_REC
1844 , x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1845 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
1846 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1847 , p_PRICE_LIST_rec IN QP_Price_List_PUB.Price_List_Rec_Type :=
1848 QP_Price_List_PUB.G_MISS_PRICE_LIST_REC
1849 , p_old_PRICE_LIST_rec IN QP_Price_List_PUB.Price_List_Rec_Type :=
1850 QP_Price_List_PUB.G_MISS_PRICE_LIST_REC
1851 , p_PRICE_LIST_LINE_tbl IN QP_Price_List_PUB.Price_List_Line_Tbl_Type :=
1852 QP_Price_List_PUB.G_MISS_PRICE_LIST_LINE_TBL
1853 , p_old_PRICE_LIST_LINE_tbl IN QP_Price_List_PUB.Price_List_Line_Tbl_Type :=
1854 QP_Price_List_PUB.G_MISS_PRICE_LIST_LINE_TBL
1855 , p_QUALIFIERS_tbl IN Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type :=
1856 QP_Price_List_PUB.G_MISS_QUALIFIERS_TBL
1857 --Qp_Qualifier_Rules_Pub.G_MISS_QUALIFIERS_TBL --2422176
1858 , p_old_QUALIFIERS_tbl IN Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type :=
1859 QP_Price_List_PUB.G_MISS_QUALIFIERS_TBL
1860 --Qp_Qualifier_Rules_Pub.G_MISS_QUALIFIERS_TBL --2422176
1861 , p_PRICING_ATTR_tbl IN QP_Price_List_PUB.Pricing_Attr_Tbl_Type :=
1862 QP_Price_List_PUB.G_MISS_PRICING_ATTR_TBL
1863 , p_old_PRICING_ATTR_tbl IN QP_Price_List_PUB.Pricing_Attr_Tbl_Type :=
1864 QP_Price_List_PUB.G_MISS_PRICING_ATTR_TBL
1865 , x_PRICE_LIST_rec OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Rec_Type
1866 , x_PRICE_LIST_LINE_tbl OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Line_Tbl_Type
1867 , x_QUALIFIERS_tbl OUT NOCOPY /* file.sql.39 change */ Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type
1868 , x_PRICING_ATTR_tbl OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Pricing_Attr_Tbl_Type
1869 )
1870 IS
1871 l_api_version_number CONSTANT NUMBER := 1.0;
1872 l_api_name CONSTANT VARCHAR2(30):= 'Process_Price_List';
1873 l_return_status VARCHAR2(1);
1874 l_control_rec QP_GLOBALS.Control_Rec_Type;
1875 l_PRICE_LIST_rec QP_Price_List_PUB.Price_List_Rec_Type := p_PRICE_LIST_rec;
1876 l_p_PRICE_LIST_rec QP_Price_List_PUB.Price_List_Rec_Type := p_PRICE_LIST_rec;
1877 l_old_PRICE_LIST_rec QP_Price_List_PUB.Price_List_Rec_Type := p_old_PRICE_LIST_rec;
1878 l_p_old_PRICE_LIST_rec QP_Price_List_PUB.Price_List_Rec_Type := p_old_PRICE_LIST_rec;
1879 l_PRICE_LIST_LINE_rec QP_Price_List_PUB.Price_List_Line_Rec_Type;
1880 l_PRICE_LIST_LINE_tbl QP_Price_List_PUB.Price_List_Line_Tbl_Type;
1881 l_p_PRICE_LIST_LINE_tbl QP_Price_List_PUB.Price_List_Line_Tbl_Type;
1882 l_old_PRICE_LIST_LINE_rec QP_Price_List_PUB.Price_List_Line_Rec_Type;
1883 l_old_PRICE_LIST_LINE_tbl QP_Price_List_PUB.Price_List_Line_Tbl_Type;
1884 l_p_old_PRICE_LIST_LINE_tbl QP_Price_List_PUB.Price_List_Line_Tbl_Type;
1885 l_QUALIFIERS_rec Qp_Qualifier_Rules_Pub.Qualifiers_Rec_Type;
1886 l_QUALIFIERS_tbl Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
1887 l_p_QUALIFIERS_tbl Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
1888 l_old_QUALIFIERS_rec Qp_Qualifier_Rules_Pub.Qualifiers_Rec_Type;
1889 l_old_QUALIFIERS_tbl Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
1890 l_p_old_QUALIFIERS_tbl Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
1891 l_PRICING_ATTR_rec QP_Price_List_PUB.Pricing_Attr_Rec_Type;
1892 l_PRICING_ATTR_tbl QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1893 l_p_PRICING_ATTR_tbl QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1894 l_old_PRICING_ATTR_rec QP_Price_List_PUB.Pricing_Attr_Rec_Type;
1895 l_old_PRICING_ATTR_tbl QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1896 l_p_old_PRICING_ATTR_tbl QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1897 l_installed_status VARCHAR2(1);
1898 -- Blanket Agreement
1899 l_qual_exists VARCHAR2(1) := 'N';
1900 BEGIN
1901
1902 oe_debug_pub.add('entering process price list');
1903
1904 -- Standard call to check for call compatibility
1905
1906 IF NOT FND_API.Compatible_API_Call
1907 ( l_api_version_number
1908 , p_api_version_number
1909 , l_api_name
1910 , G_PKG_NAME
1911 )
1912 THEN
1913 oe_debug_pub.add('in unexpected error 1');
1914 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1915 END IF;
1916
1917
1918 oe_debug_Pub.add('process_Price_list 1');
1919 -- Initialize message list.
1920
1921 IF FND_API.to_Boolean(p_init_msg_list) THEN
1922 oe_msg_pub.initialize;
1923 END IF;
1924
1925 /* check for installation status ; if it's basic then this api
1926 is not available */
1927
1928 l_installed_status := QP_UTIL.get_qp_status;
1929
1930 IF l_installed_status = 'N' THEN
1931
1932 l_return_status := FND_API.G_RET_STS_ERROR;
1933 FND_MESSAGE.SET_NAME('QP', 'QP_BASIC_PRICING_UNAVAILABLE');
1934 OE_MSG_PUB.Add;
1935 RAISE FND_API.G_EXC_ERROR;
1936
1937 END IF;
1938
1939 -- Init local table variables.
1940
1941 l_PRICE_LIST_LINE_tbl := p_PRICE_LIST_LINE_tbl;
1942 l_old_PRICE_LIST_LINE_tbl := p_old_PRICE_LIST_LINE_tbl;
1943
1944 -- Init local table variables.
1945
1946 l_QUALIFIERS_tbl := p_QUALIFIERS_tbl;
1947 l_old_QUALIFIERS_tbl := p_old_QUALIFIERS_tbl;
1948
1949 -- Init local table variables.
1950
1951 l_PRICING_ATTR_tbl := p_PRICING_ATTR_tbl;
1952 l_old_PRICING_ATTR_tbl := p_old_PRICING_ATTR_tbl;
1953
1954 -- Price_List
1955 oe_debug_Pub.add('process_Price_list 2');
1956 l_p_PRICE_LIST_rec := l_PRICE_LIST_rec;
1957 l_p_old_PRICE_LIST_rec := l_old_PRICE_LIST_rec;
1958 Price_List
1959 ( p_validation_level => p_validation_level
1960 , p_control_rec => p_control_rec
1961 , p_PRICE_LIST_rec => l_p_PRICE_LIST_rec
1962 , p_old_PRICE_LIST_rec => l_p_old_PRICE_LIST_rec
1963 , x_PRICE_LIST_rec => l_PRICE_LIST_rec
1964 , x_old_PRICE_LIST_rec => l_old_PRICE_LIST_rec
1965 );
1966 oe_debug_Pub.add('process_Price_list 3');
1967
1968 -- Perform PRICE_LIST group requests.
1969
1970 IF p_control_rec.process AND
1971 (p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_ALL OR
1972 p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_PRICE_LIST)
1973 THEN
1974
1975 QP_DELAYED_REQUESTS_PVT.Process_Request_for_Entity
1976 (p_entity_code => QP_GLOBALS.G_ENTITY_PRICE_LIST
1977 ,p_delete => FND_API.G_TRUE
1978 ,x_return_status => l_return_status
1979 );
1980 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1981 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1982 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1983 RAISE FND_API.G_EXC_ERROR;
1984 END IF;
1985
1986 END IF;
1987
1988 -- Load parent key if missing and operation is create.
1989
1990 FOR I IN 1..l_PRICE_LIST_LINE_tbl.COUNT LOOP
1991
1992 l_PRICE_LIST_LINE_rec := l_PRICE_LIST_LINE_tbl(I);
1993
1994 IF l_PRICE_LIST_LINE_rec.operation = QP_GLOBALS.G_OPR_CREATE
1995 AND (l_PRICE_LIST_LINE_rec.list_header_id IS NULL OR
1996 l_PRICE_LIST_LINE_rec.list_header_id = FND_API.G_MISS_NUM)
1997 THEN
1998
1999 -- Copy parent_id.
2000
2001 l_PRICE_LIST_LINE_tbl(I).list_header_id := l_PRICE_LIST_rec.list_header_id;
2002 END IF;
2003
2004 END LOOP;
2005
2006 -- Price_List_Lines
2007 oe_debug_Pub.add('process_Price_list 4');
2008 l_p_PRICE_LIST_LINE_tbl := l_PRICE_LIST_LINE_tbl;
2009 l_p_old_PRICE_LIST_LINE_tbl := l_old_PRICE_LIST_LINE_tbl;
2010 Price_List_Lines
2011 ( p_validation_level => p_validation_level
2012 , p_control_rec => p_control_rec
2013 , p_PRICE_LIST_LINE_tbl => l_p_PRICE_LIST_LINE_tbl
2014 , p_old_PRICE_LIST_LINE_tbl => l_p_old_PRICE_LIST_LINE_tbl
2015 , x_PRICE_LIST_LINE_tbl => l_PRICE_LIST_LINE_tbl
2016 , x_old_PRICE_LIST_LINE_tbl => l_old_PRICE_LIST_LINE_tbl
2017 );
2018 oe_debug_Pub.add('process_Price_list 5');
2019
2020 -- Perform PRICE_LIST_LINE group requests.
2021
2022 IF p_control_rec.process AND
2023 (p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_ALL OR
2024 p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_PRICE_LIST_LINE)
2025 THEN
2026
2027 QP_DELAYED_REQUESTS_PVT.Process_Request_for_Entity
2028 (p_entity_code => QP_GLOBALS.G_ENTITY_PRICE_LIST_LINE
2029 ,p_delete => FND_API.G_TRUE
2030 ,x_return_status => l_return_status
2031 );
2032 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2033 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2034 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2035 RAISE FND_API.G_EXC_ERROR;
2036 END IF;
2037
2038 END IF;
2039
2040 -- Load parent key if missing and operation is create.
2041
2042 FOR I IN 1..l_QUALIFIERS_tbl.COUNT LOOP
2043
2044 l_QUALIFIERS_rec := l_QUALIFIERS_tbl(I);
2045
2046 IF l_QUALIFIERS_rec.operation = QP_GLOBALS.G_OPR_CREATE
2047 AND (l_QUALIFIERS_rec.list_header_id IS NULL OR
2048 l_QUALIFIERS_rec.list_header_id = FND_API.G_MISS_NUM)
2049 THEN
2050
2051 -- Copy parent_id.
2052
2053 l_QUALIFIERS_tbl(I).list_header_id := l_PRICE_LIST_rec.list_header_id;
2054 END IF;
2055 END LOOP;
2056
2057 -- Qualifierss
2058
2059 oe_debug_Pub.add('process_Price_list 6');
2060 l_p_QUALIFIERS_tbl := l_QUALIFIERS_tbl;
2061 l_p_old_QUALIFIERS_tbl := l_old_QUALIFIERS_tbl;
2062 Qualifierss
2063 ( p_validation_level => p_validation_level
2064 , p_control_rec => p_control_rec
2065 , p_QUALIFIERS_tbl => l_p_QUALIFIERS_tbl
2066 , p_old_QUALIFIERS_tbl => l_p_old_QUALIFIERS_tbl
2067 , x_QUALIFIERS_tbl => l_QUALIFIERS_tbl
2068 , x_old_QUALIFIERS_tbl => l_old_QUALIFIERS_tbl
2069 );
2070 oe_debug_Pub.add('process_Price_list 7');
2071
2072
2073 -- Perform QUALIFIERS group requests.
2074
2075 IF p_control_rec.process AND
2076 (p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_ALL OR
2077 p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_QUALIFIERS)
2078 THEN
2079 oe_debug_pub.add('process_Price_List 12');
2080 NULL;
2081
2082 END IF;
2083
2084 -- Load parent key if missing and operation is create.
2085
2086 FOR I IN 1..l_PRICING_ATTR_tbl.COUNT LOOP
2087
2088 oe_debug_pub.add('process_Price_List 13');
2089 l_PRICING_ATTR_rec := l_PRICING_ATTR_tbl(I);
2090
2091 IF l_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_CREATE
2092 AND (l_PRICING_ATTR_rec.list_line_id IS NULL OR
2093 l_PRICING_ATTR_rec.list_line_id = FND_API.G_MISS_NUM)
2094 THEN
2095
2096 oe_debug_pub.add('process_Price_List 14');
2097 -- Check If parent exists.
2098
2099 IF l_PRICE_LIST_LINE_tbl.EXISTS(l_PRICING_ATTR_rec.PRICE_LIST_LINE_index) THEN
2100
2101 -- Copy parent_id.
2102 oe_debug_pub.add('process_Price_List 15');
2103
2104 l_PRICING_ATTR_tbl(I).list_line_id := l_PRICE_LIST_LINE_tbl(l_PRICING_ATTR_rec.PRICE_LIST_LINE_index).list_line_id;
2105
2106
2107 -- Copy list line's from_rltd_modifier_id to pricing attr's from_rltd_modifier_id
2108
2109 l_PRICING_ATTR_tbl(I).from_rltd_modifier_id := l_PRICE_LIST_LINE_tbl(l_PRICING_ATTR_rec.PRICE_LIST_LINE_index).from_rltd_modifier_id;
2110
2111
2112 ELSE
2113 oe_debug_pub.add('process_Price_List 16');
2114
2115 IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR)
2116 THEN
2117 oe_debug_pub.add('process_Price_List 17');
2118
2119 FND_MESSAGE.SET_NAME('QP','QP_API_INV_PARENT_INDEX');
2120 oe_debug_pub.add('process_Price_List 18');
2121 FND_MESSAGE.SET_TOKEN('ENTITY_NAME','PRICING_ATTR');
2122 oe_debug_pub.add('process_Price_List 19');
2123 FND_MESSAGE.SET_TOKEN('ENTITY_INDEX',I);
2124 oe_debug_pub.add('process_Price_List 20');
2125 FND_MESSAGE.SET_TOKEN('PARENT_INDEX',l_PRICING_ATTR_rec.PRICE_LIST_LINE_index);
2126 oe_debug_pub.add('process_Price_List 21');
2127 oe_msg_pub.Add;
2128
2129
2130 END IF;
2131 END IF;
2132 END IF;
2133 END LOOP;
2134 oe_debug_pub.add('process_Price_List 22');
2135
2136 -- Pricing_Attrs
2137 oe_debug_Pub.add('process_Price_list 8');
2138 l_p_PRICING_ATTR_tbl := l_PRICING_ATTR_tbl;
2139 l_p_old_PRICING_ATTR_tbl := l_old_PRICING_ATTR_tbl;
2140 Pricing_Attrs
2141 ( p_validation_level => p_validation_level
2142 , p_control_rec => p_control_rec
2143 , p_PRICING_ATTR_tbl => l_p_PRICING_ATTR_tbl
2144 , p_old_PRICING_ATTR_tbl => l_p_old_PRICING_ATTR_tbl
2145 , x_PRICING_ATTR_tbl => l_PRICING_ATTR_tbl
2146 , x_old_PRICING_ATTR_tbl => l_old_PRICING_ATTR_tbl
2147 );
2148 oe_debug_Pub.add('process_Price_list 9');
2149
2150 -- Perform PRICING_ATTR group requests.
2151
2152 IF p_control_rec.process AND
2153 (p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_ALL OR
2154 p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_PRICING_ATTR)
2155 THEN
2156
2157 NULL;
2158
2159 END IF;
2160
2161 -- Step 6. Perform Object group logic
2162
2163 IF p_control_rec.process AND
2164 p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_ALL
2165 THEN
2166
2167 oe_debug_pub.add('Ren: before processing delayed request');
2168
2169 QP_DELAYED_REQUESTS_PVT.Process_Delayed_Requests(
2170 x_return_status => l_return_status
2171 );
2172
2173 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2174 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2175 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2176 RAISE FND_API.G_EXC_ERROR;
2177 END IF;
2178
2179 oe_debug_pub.add('Ren: after processing delayed request');
2180
2181 END IF;
2182
2183 -- Done processing, load OUT parameters.
2184
2185 x_PRICE_LIST_rec := l_PRICE_LIST_rec;
2186 x_PRICE_LIST_LINE_tbl := l_PRICE_LIST_LINE_tbl;
2187 x_QUALIFIERS_tbl := l_QUALIFIERS_tbl;
2188 x_PRICING_ATTR_tbl := l_PRICING_ATTR_tbl;
2189
2190 -- Clear API cache.
2191
2192 IF p_control_rec.clear_api_cache THEN
2193
2194 NULL;
2195
2196 END IF;
2197
2198 -- Clear API request tbl.
2199
2200 IF p_control_rec.clear_api_requests THEN
2201
2202 NULL;
2203
2204 END IF;
2205
2206 -- Derive return status.
2207
2208 x_return_status := FND_API.G_RET_STS_SUCCESS;
2209
2210 IF l_PRICE_LIST_rec.return_status = FND_API.G_RET_STS_ERROR THEN
2211 x_return_status := FND_API.G_RET_STS_ERROR;
2212 END IF;
2213
2214 FOR I IN 1..l_PRICE_LIST_LINE_tbl.COUNT LOOP
2215
2216 IF ( l_PRICE_LIST_LINE_tbl(I).return_status = FND_API.G_RET_STS_ERROR AND
2217 ( l_PRICE_LIST_LINE_rec.list_line_id <> FND_API.G_MISS_NUM OR
2218 l_PRICE_LIST_LINE_rec.list_line_id <> NULL ) ) THEN
2219 x_return_status := FND_API.G_RET_STS_ERROR;
2220 END IF;
2221
2222 END LOOP;
2223
2224 FOR I IN 1..l_QUALIFIERS_tbl.COUNT LOOP
2225
2226 IF l_QUALIFIERS_tbl(I).return_status = FND_API.G_RET_STS_ERROR THEN
2227 x_return_status := FND_API.G_RET_STS_ERROR;
2228 END IF;
2229
2230 END LOOP;
2231
2232 FOR I IN 1..l_PRICING_ATTR_tbl.COUNT LOOP
2233
2234 IF l_PRICING_ATTR_tbl(I).return_status = FND_API.G_RET_STS_ERROR THEN
2235 x_return_status := FND_API.G_RET_STS_ERROR;
2236 END IF;
2237
2238 END LOOP;
2239
2240 -- Get message count and data
2241 oe_debug_Pub.add('process_Price_list 11');
2242
2243 oe_msg_pub.Count_And_Get
2244 ( p_count => x_msg_count
2245 , p_data => x_msg_data
2246 );
2247
2248 -- Create blanket header qualifier
2249
2250 IF ( p_control_rec.write_to_db --Bug#3309455
2251 AND x_PRICE_LIST_rec.operation = QP_GLOBALS.G_OPR_CREATE
2252 AND x_PRICE_LIST_rec.list_source_code = 'BSO'
2253 AND ( x_PRICE_LIST_rec.orig_system_header_ref <> NULL
2254 OR x_PRICE_LIST_rec.orig_system_header_ref <> FND_API.G_MISS_CHAR)
2255 )
2256 THEN
2257 oe_debug_pub.add('inside create qualifier for blanket modifier');
2258
2259 BEGIN
2260 select 'Y' into l_qual_exists
2261 from qp_qualifiers
2262 where list_header_id = x_PRICE_LIST_rec.list_header_id
2263 and qualifier_context = 'ORDER'
2264 and qualifier_attribute = 'QUALIFIER_ATTRIBUTE5'
2265 and qualifier_attr_value = x_PRICE_LIST_rec.orig_system_header_ref;
2266 EXCEPTION
2267 WHEN NO_DATA_FOUND THEN
2268 l_qual_exists := 'N';
2269 WHEN OTHERS THEN NULL;
2270 END;
2271
2272 IF l_qual_exists = 'N' THEN
2273
2274 QP_Qualifier_Rules_PVT.Create_Blanket_Qualifier
2275 ( p_list_header_id => x_PRICE_LIST_rec.list_header_id
2276 , p_old_list_header_id => x_PRICE_LIST_rec.list_header_id
2277 , p_blanket_id => to_number(x_PRICE_LIST_rec.orig_system_header_ref)
2278 , p_operation => QP_GLOBALS.G_OPR_CREATE
2279 , x_return_status => l_return_status
2280 );
2281
2282 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2283 oe_debug_pub.add('Unexp Error while creating blanket qualifier');
2284 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2285 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2286 oe_debug_pub.add('Exp Error while creating blanket qualifier');
2287 RAISE FND_API.G_EXC_ERROR;
2288 END IF;
2289 END IF;
2290
2291 END IF;
2292
2293 oe_debug_pub.add('exiting process price list');
2294
2295
2296 EXCEPTION
2297
2298 WHEN FND_API.G_EXC_ERROR THEN
2299
2300 x_return_status := FND_API.G_RET_STS_ERROR;
2301
2302 -- mkarya If process_price_list has been called from public package, then ONLY call clear_request
2303 if p_control_rec.called_from_ui = 'N' then
2304 qp_delayed_requests_pvt.Clear_Request
2305 (x_return_status => l_return_status);
2306 end if;
2307
2308 -- Get message count and data
2309
2310 oe_msg_pub.Count_And_Get
2311 ( p_count => x_msg_count
2312 , p_data => x_msg_data
2313 );
2314
2315 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2316
2317 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2318
2319 -- mkarya If process_price_list has been called from public package, then ONLY call clear_request
2320 if p_control_rec.called_from_ui = 'N' then
2321 qp_delayed_requests_pvt.Clear_Request
2322 (x_return_status => l_return_status);
2323 end if;
2324
2325 -- Get message count and data
2326
2327 oe_msg_pub.Count_And_Get
2328 ( p_count => x_msg_count
2329 , p_data => x_msg_data
2330 );
2331
2332
2333 WHEN OTHERS THEN
2334
2335 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2336
2337 -- mkarya If process_price_list has been called from public package, then ONLY call clear_request
2338 if p_control_rec.called_from_ui = 'N' then
2339 qp_delayed_requests_pvt.Clear_Request
2340 (x_return_status => l_return_status);
2341 end if;
2342
2343 IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
2344 THEN
2345 oe_msg_pub.Add_Exc_Msg
2346 ( G_PKG_NAME
2347 , 'Process_Price_List'
2348 );
2349 END IF;
2350
2351 -- Get message count and data
2352
2353 oe_msg_pub.Count_And_Get
2354 ( p_count => x_msg_count
2355 , p_data => x_msg_data
2356 );
2357
2358 END Process_Price_List;
2359
2360 -- Start of Comments
2361 -- API name Lock_Price_List
2362 -- Type Private
2363 -- Function
2364 --
2365 -- Pre-reqs
2366 --
2367 -- Parameters
2368 --
2369 -- Version Current version = 1.0
2370 -- Initial version = 1.0
2371 --
2372 -- Notes
2373 --
2374 -- End of Comments
2375
2376 PROCEDURE Lock_Price_List
2377 ( p_api_version_number IN NUMBER
2378 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
2379 , x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2380 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
2381 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2382 , p_PRICE_LIST_rec IN QP_Price_List_PUB.Price_List_Rec_Type :=
2383 QP_Price_List_PUB.G_MISS_PRICE_LIST_REC
2384 , p_PRICE_LIST_LINE_tbl IN QP_Price_List_PUB.Price_List_Line_Tbl_Type :=
2385 QP_Price_List_PUB.G_MISS_PRICE_LIST_LINE_TBL
2386 , p_QUALIFIERS_tbl IN Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type :=
2387 QP_Price_List_PUB.G_MISS_QUALIFIERS_TBL
2388 --Qp_Qualifier_Rules_Pub.G_MISS_QUALIFIERS_TBL --2422176
2389 , p_PRICING_ATTR_tbl IN QP_Price_List_PUB.Pricing_Attr_Tbl_Type :=
2390 QP_Price_List_PUB.G_MISS_PRICING_ATTR_TBL
2391 , x_PRICE_LIST_rec OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Rec_Type
2392 , x_PRICE_LIST_LINE_tbl OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Line_Tbl_Type
2393 , x_QUALIFIERS_tbl OUT NOCOPY /* file.sql.39 change */ Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type
2394 , x_PRICING_ATTR_tbl OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Pricing_Attr_Tbl_Type
2395 )
2396 IS
2397 l_api_version_number CONSTANT NUMBER := 1.0;
2398 l_api_name CONSTANT VARCHAR2(30):= 'Lock_Price_List';
2399 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
2400 l_PRICE_LIST_LINE_rec QP_Price_List_PUB.Price_List_Line_Rec_Type;
2401 l_QUALIFIERS_rec Qp_Qualifier_Rules_Pub.Qualifiers_Rec_Type;
2402 l_PRICING_ATTR_rec QP_Price_List_PUB.Pricing_Attr_Rec_Type;
2403 BEGIN
2404
2405 -- Standard call to check for call compatibility
2406
2407 IF NOT FND_API.Compatible_API_Call
2408 ( l_api_version_number
2409 , p_api_version_number
2410 , l_api_name
2411 , G_PKG_NAME
2412 )
2413 THEN
2414 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2415 END IF;
2416
2417 -- Initialize message list.
2418
2419 IF FND_API.to_Boolean(p_init_msg_list) THEN
2420 oe_msg_pub.initialize;
2421 END IF;
2422
2423 -- Set Savepoint
2424
2425 SAVEPOINT Lock_Price_List_PVT;
2426
2427 -- Lock PRICE_LIST
2428
2429 IF p_PRICE_LIST_rec.operation = QP_GLOBALS.G_OPR_LOCK THEN
2430
2431 QP_Price_List_Util.Lock_Row
2432 ( p_PRICE_LIST_rec => p_PRICE_LIST_rec
2433 , x_PRICE_LIST_rec => x_PRICE_LIST_rec
2434 , x_return_status => l_return_status
2435 );
2436
2437 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2438 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2439 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2440 RAISE FND_API.G_EXC_ERROR;
2441 END IF;
2442
2443
2444 END IF;
2445
2446 -- Lock PRICE_LIST_LINE
2447
2448 FOR I IN 1..p_PRICE_LIST_LINE_tbl.COUNT LOOP
2449
2450 IF p_PRICE_LIST_LINE_tbl(I).operation = QP_GLOBALS.G_OPR_LOCK THEN
2451
2452 QP_Price_List_Line_Util.Lock_Row
2453 ( p_PRICE_LIST_LINE_rec => p_PRICE_LIST_LINE_tbl(I)
2454 , x_PRICE_LIST_LINE_rec => l_PRICE_LIST_LINE_rec
2455 , x_return_status => l_return_status
2456 );
2457
2458 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2459 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2460 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2461 RAISE FND_API.G_EXC_ERROR;
2462 END IF;
2463
2464 x_PRICE_LIST_LINE_tbl(I) := l_PRICE_LIST_LINE_rec;
2465
2466 END IF;
2467
2468 END LOOP;
2469
2470 -- Lock QUALIFIERS
2471
2472 FOR I IN 1..p_QUALIFIERS_tbl.COUNT LOOP
2473
2474 IF p_QUALIFIERS_tbl(I).operation = QP_GLOBALS.G_OPR_LOCK THEN
2475
2476 QP_Qualifiers_Util.Lock_Row
2477 ( p_QUALIFIERS_rec => p_QUALIFIERS_tbl(I)
2478 , x_QUALIFIERS_rec => l_QUALIFIERS_rec
2479 , x_return_status => l_return_status
2480 );
2481
2482
2483 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2484 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2485 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2486 RAISE FND_API.G_EXC_ERROR;
2487 END IF;
2488
2489 x_QUALIFIERS_tbl(I) := l_QUALIFIERS_rec;
2490
2491 END IF;
2492
2493 END LOOP;
2494
2495 -- Lock PRICING_ATTR
2496
2497 FOR I IN 1..p_PRICING_ATTR_tbl.COUNT LOOP
2498
2499 IF p_PRICING_ATTR_tbl(I).operation = QP_GLOBALS.G_OPR_LOCK THEN
2500
2501 Qp_pll_pricing_attr_Util.Lock_Row
2502 ( p_PRICING_ATTR_rec => p_PRICING_ATTR_tbl(I)
2503 , x_PRICING_ATTR_rec => l_PRICING_ATTR_rec
2504 , x_return_status => l_return_status
2505 );
2506
2507 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2508 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2509 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2510 RAISE FND_API.G_EXC_ERROR;
2511 END IF;
2512
2513 x_PRICING_ATTR_tbl(I) := l_PRICING_ATTR_rec;
2514
2515 END IF;
2516
2517 END LOOP;
2518
2519 -- Set return status
2520
2521 x_return_status := FND_API.G_RET_STS_SUCCESS;
2522
2523 -- Get message count and data
2524
2525 oe_msg_pub.Count_And_Get
2526 ( p_count => x_msg_count
2527 , p_data => x_msg_data
2528 );
2529
2530
2531 EXCEPTION
2532
2533 WHEN FND_API.G_EXC_ERROR THEN
2534
2535 x_return_status := FND_API.G_RET_STS_ERROR;
2536
2537 -- Get message count and data
2538
2539 oe_msg_pub.Count_And_Get
2540 ( p_count => x_msg_count
2541 , p_data => x_msg_data
2542 );
2543
2544 -- Rollback
2545
2546 ROLLBACK TO Lock_Price_List_PVT;
2547
2548 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2549
2550 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2551
2552 -- Get message count and data
2553
2554 oe_msg_pub.Count_And_Get
2555 ( p_count => x_msg_count
2556 , p_data => x_msg_data
2557 );
2558
2559 -- Rollback
2560
2561 ROLLBACK TO Lock_Price_List_PVT;
2562
2563 WHEN OTHERS THEN
2564
2565 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2566
2567 IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
2568 THEN
2569 oe_msg_pub.Add_Exc_Msg
2570 ( G_PKG_NAME
2571 , 'Lock_Price_List'
2572 );
2573 END IF;
2574
2575 -- Get message count and data
2576
2577 oe_msg_pub.Count_And_Get
2578 ( p_count => x_msg_count
2579 , p_data => x_msg_data
2580 );
2581
2582 -- Rollback
2583
2584 ROLLBACK TO Lock_Price_List_PVT;
2585
2586 END Lock_Price_List;
2587
2588 -- Start of Comments
2589 -- API name Get_Price_List
2590 -- Type Private
2591 -- Function
2592 --
2593 -- Pre-reqs
2594 --
2595 -- Parameters
2596 --
2597 -- Version Current version = 1.0
2598 -- Initial version = 1.0
2599 --
2600 -- Notes
2601 --
2602 -- End of Comments
2603
2604 PROCEDURE Get_Price_List
2605 ( p_api_version_number IN NUMBER
2606 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
2607 , x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2608 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
2609 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2610 , p_list_header_id IN NUMBER
2611 , x_PRICE_LIST_rec OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Rec_Type
2612 , x_PRICE_LIST_LINE_tbl OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Line_Tbl_Type
2613 , x_QUALIFIERS_tbl OUT NOCOPY /* file.sql.39 change */ Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type
2614 , x_PRICING_ATTR_tbl OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Pricing_Attr_Tbl_Type
2615 )
2616 IS
2617 l_api_version_number CONSTANT NUMBER := 1.0;
2618 l_api_name CONSTANT VARCHAR2(30):= 'Get_Price_List';
2619 l_PRICE_LIST_rec QP_Price_List_PUB.Price_List_Rec_Type;
2620 l_PRICE_LIST_LINE_tbl QP_Price_List_PUB.Price_List_Line_Tbl_Type;
2621 l_QUALIFIERS_tbl Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
2622 l_PRICING_ATTR_tbl QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
2623 l_x_PRICING_ATTR_tbl QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
2624 BEGIN
2625
2626 -- Standard call to check for call compatibility
2627
2628 IF NOT FND_API.Compatible_API_Call
2629 ( l_api_version_number
2630 , p_api_version_number
2631 , l_api_name
2632 , G_PKG_NAME
2633 )
2634 THEN
2635 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2636 END IF;
2637
2638 -- Initialize message list.
2639
2640 IF FND_API.to_Boolean(p_init_msg_list) THEN
2641 oe_msg_pub.initialize;
2642 END IF;
2643
2644 -- Get PRICE_LIST ( parent = PRICE_LIST )
2645
2646 l_PRICE_LIST_rec := QP_Price_List_Util.Query_Row
2647 ( p_list_header_id => p_list_header_id
2648 );
2649
2650 -- Get PRICE_LIST_LINE ( parent = PRICE_LIST )
2651
2652 l_PRICE_LIST_LINE_tbl := QP_Price_List_Line_Util.Query_Rows
2653 ( p_list_header_id => l_PRICE_LIST_rec.list_header_id
2654 );
2655
2656
2657 -- Loop over PRICE_LIST_LINE's children
2658
2659 FOR I2 IN 1..l_PRICE_LIST_LINE_tbl.COUNT LOOP
2660
2661 -- Get PRICING_ATTR ( parent = PRICE_LIST_LINE )
2662
2663 l_PRICING_ATTR_tbl := Qp_pll_pricing_attr_Util.Query_Rows
2664 ( p_list_line_id => l_PRICE_LIST_LINE_tbl(I2).list_line_id
2665 );
2666
2667 FOR I3 IN 1..l_PRICING_ATTR_tbl.COUNT LOOP
2668 l_PRICING_ATTR_tbl(I3).PRICE_LIST_LINE_Index := I2;
2669 l_x_PRICING_ATTR_tbl
2670 (l_x_PRICING_ATTR_tbl.COUNT + 1) := l_PRICING_ATTR_tbl(I3);
2671 END LOOP;
2672
2673
2674 END LOOP;
2675
2676
2677 -- Get QUALIFIERS ( parent = PRICE_LIST )
2678
2679 l_QUALIFIERS_tbl := QP_Qualifiers_Util_Mod.Query_Rows
2680 ( p_list_header_id => l_PRICE_LIST_rec.list_header_id
2681 );
2682
2683
2684
2685 -- Load out parameters
2686
2687 x_PRICE_LIST_rec := l_PRICE_LIST_rec;
2688 x_PRICE_LIST_LINE_tbl := l_PRICE_LIST_LINE_tbl;
2689 x_QUALIFIERS_tbl := l_QUALIFIERS_tbl;
2690 x_PRICING_ATTR_tbl := l_x_PRICING_ATTR_tbl;
2691
2692 -- Set return status
2693
2694 x_return_status := FND_API.G_RET_STS_SUCCESS;
2695
2696 -- Get message count and data
2697
2698 oe_msg_pub.Count_And_Get
2699 ( p_count => x_msg_count
2700 , p_data => x_msg_data
2701 );
2702
2703
2704 EXCEPTION
2705
2706 WHEN FND_API.G_EXC_ERROR THEN
2707
2708 x_return_status := FND_API.G_RET_STS_ERROR;
2709
2710 -- Get message count and data
2711
2712 oe_msg_pub.Count_And_Get
2713 ( p_count => x_msg_count
2714 , p_data => x_msg_data
2715 );
2716
2717 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2718
2719 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2720
2721 -- Get message count and data
2722
2723 oe_msg_pub.Count_And_Get
2724 ( p_count => x_msg_count
2725 , p_data => x_msg_data
2726 );
2727
2728 WHEN OTHERS THEN
2729
2730 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2731
2732 IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
2733 THEN
2734 oe_msg_pub.Add_Exc_Msg
2735 ( G_PKG_NAME
2736 , 'Get_Price_List'
2737 );
2738 END IF;
2739
2740 -- Get message count and data
2741
2742 oe_msg_pub.Count_And_Get
2743 ( p_count => x_msg_count
2744 , p_data => x_msg_data
2745 );
2746
2747 END Get_Price_List;
2748
2749 END QP_LIST_HEADERS_PVT;