[Home] [Help]
PACKAGE BODY: APPS.QP_LIST_HEADERS_PVT
Source
1 PACKAGE BODY QP_LIST_HEADERS_PVT AS
2 /* $Header: QPXVPRLB.pls 120.6 2005/12/15 11:58:33 rnayani 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
1198 ELSIF l_QUALIFIERS_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
1199
1200 l_QUALIFIERS_rec.creation_date := SYSDATE;
1201 l_QUALIFIERS_rec.created_by := FND_GLOBAL.USER_ID;
1202
1203 QP_Qualifiers_Util.Insert_Row (l_QUALIFIERS_rec);
1204
1205 END IF;
1206
1207 END IF;
1208
1209 END IF;
1210
1211 END IF; /* if operation is create, update or delete */
1212
1213 -- Load tables.
1214
1215 l_QUALIFIERS_tbl(I) := l_QUALIFIERS_rec;
1216 l_old_QUALIFIERS_tbl(I) := l_old_QUALIFIERS_rec;
1217
1218 -- For loop exception handler.
1219
1220
1221 EXCEPTION
1222
1223 WHEN FND_API.G_EXC_ERROR THEN
1224
1225 l_QUALIFIERS_rec.return_status := FND_API.G_RET_STS_ERROR;
1226 l_QUALIFIERS_tbl(I) := l_QUALIFIERS_rec;
1227 l_old_QUALIFIERS_tbl(I) := l_old_QUALIFIERS_rec;
1228
1229 -- mkarya If process_price_list has been called from public package, then ONLY call
1230 -- qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1231 if l_control_rec.called_from_ui = 'N' then
1232 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1233 (p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
1234 p_entity_id => l_QUALIFIERS_rec.list_header_id,
1235 x_return_status => l_return_status );
1236
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_line_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.qualifier_id,
1245 x_return_status => l_return_status );
1246 end if;
1247
1248 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1249
1250 l_QUALIFIERS_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1251 l_QUALIFIERS_tbl(I) := l_QUALIFIERS_rec;
1252 l_old_QUALIFIERS_tbl(I) := l_old_QUALIFIERS_rec;
1253
1254 -- mkarya If process_price_list has been called from public package, then ONLY call
1255 -- qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1256 if l_control_rec.called_from_ui = 'N' then
1257 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1258 (p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
1259 p_entity_id => l_QUALIFIERS_rec.list_header_id,
1260 x_return_status => l_return_status );
1261
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_line_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.qualifier_id,
1270 x_return_status => l_return_status );
1271 end if;
1272
1273 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1274
1275 WHEN OTHERS THEN
1276
1277 l_QUALIFIERS_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1278 l_QUALIFIERS_tbl(I) := l_QUALIFIERS_rec;
1279 l_old_QUALIFIERS_tbl(I) := l_old_QUALIFIERS_rec;
1280
1281 IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1282 THEN
1283 oe_msg_pub.Add_Exc_Msg
1284 ( G_PKG_NAME
1285 , 'Qualifierss'
1286 );
1287 END IF;
1288
1289 -- mkarya If process_price_list has been called from public package, then ONLY call
1290 -- qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1291 if l_control_rec.called_from_ui = 'N' then
1292 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1293 (p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
1294 p_entity_id => l_QUALIFIERS_rec.list_header_id,
1295 x_return_status => l_return_status );
1296
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_line_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.qualifier_id,
1305 x_return_status => l_return_status );
1306 end if;
1307
1308 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1309
1310 END;
1311 END LOOP;
1312
1313 -- Load OUT parameters
1314
1315 x_QUALIFIERS_tbl := l_QUALIFIERS_tbl;
1316 x_old_QUALIFIERS_tbl := l_old_QUALIFIERS_tbl;
1317
1318 EXCEPTION
1319
1320 WHEN FND_API.G_EXC_ERROR THEN
1321
1322 RAISE;
1323
1324 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1325
1326
1327 RAISE;
1328
1329 WHEN OTHERS THEN
1330
1331 IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1332 THEN
1333 oe_msg_pub.Add_Exc_Msg
1334 ( G_PKG_NAME
1335 , 'Qualifierss'
1336 );
1337 END IF;
1338
1339
1340 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1341
1342 END Qualifierss;
1343
1344
1345
1346 -- Pricing_Attrs
1347
1348 PROCEDURE Pricing_Attrs
1349 ( p_validation_level IN NUMBER
1350 , p_control_rec IN QP_GLOBALS.Control_Rec_Type
1351 , p_PRICING_ATTR_tbl IN QP_Price_List_PUB.Pricing_Attr_Tbl_Type
1352 , p_old_PRICING_ATTR_tbl IN QP_Price_List_PUB.Pricing_Attr_Tbl_Type
1353 , x_PRICING_ATTR_tbl OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Pricing_Attr_Tbl_Type
1354 , x_old_PRICING_ATTR_tbl OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Pricing_Attr_Tbl_Type
1355 )
1356 IS
1357 l_return_status VARCHAR2(1);
1358 l_control_rec QP_GLOBALS.Control_Rec_Type;
1359 l_PRICING_ATTR_rec QP_Price_List_PUB.Pricing_Attr_Rec_Type;
1360 l_p_PRICING_ATTR_rec QP_Price_List_PUB.Pricing_Attr_Rec_Type;
1361 l_PRICING_ATTR_tbl QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1362 l_old_PRICING_ATTR_rec QP_Price_List_PUB.Pricing_Attr_Rec_Type;
1363 l_old_PRICING_ATTR_tbl QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1364 l_pte_code VARCHAR2(30);
1365 l_source_system_code VARCHAR2(30);
1366 l_saved_pte_code VARCHAR2(30);
1367 l_saved_source_system_code VARCHAR2(30);
1368 --Bug 4706180
1369 l_rltd_modifier_grp_type VARCHAR2(30);
1370
1371 BEGIN
1372
1373 oe_debug_pub.add('entering pricing attrs');
1374
1375 --Added for Bug 2444971 - Begin
1376 FND_PROFILE.GET('QP_PRICING_TRANSACTION_ENTITY', l_pte_code);
1377 FND_PROFILE.GET('QP_SOURCE_SYSTEM_CODE', l_source_system_code);
1378 --Added for Bug 2444971 - End
1379
1380 -- Init local table variables.
1381
1382 l_PRICING_ATTR_tbl := p_PRICING_ATTR_tbl;
1383 l_old_PRICING_ATTR_tbl := p_old_PRICING_ATTR_tbl;
1384
1385 oe_debug_pub.add('before for loop ');
1386
1387 FOR I IN 1..l_PRICING_ATTR_tbl.COUNT LOOP
1388 BEGIN
1389
1390 -- Load local records.
1391
1392 l_PRICING_ATTR_rec := l_PRICING_ATTR_tbl(I);
1393
1394 --Fetch modfier group type (Bug 4706180) Start
1395 BEGIN
1396 SELECT RLTD_MODIFIER_GRP_TYPE
1397 INTO l_rltd_modifier_grp_type
1398 FROM qp_rltd_modifiers rm
1399 WHERE rm.TO_RLTD_MODIFIER_ID = l_PRICING_ATTR_rec.list_line_id;
1400 EXCEPTION
1401 WHEN OTHERS THEN
1402 l_rltd_modifier_grp_type := '';
1403 END;
1404 --End
1405
1406 -- If the 'value to' in the price break is equal to null and the value from is not null then
1407 -- make the 'value to' equal to 999999999999999 to accomodate a high value
1408 IF(l_Pricing_Attr_rec.pricing_attr_value_to IS NULL
1409 AND l_Pricing_Attr_rec.pricing_attr_value_from IS NOT NULL
1410 -- Bug 4706180
1411 AND l_rltd_modifier_grp_type = 'PRICE BREAK')
1412 THEN
1413 l_Pricing_Attr_rec.pricing_attr_value_to := '999999999999999';
1414 END IF;
1415
1416 IF l_old_PRICING_ATTR_tbl.EXISTS(I) THEN
1417 oe_debug_pub.add('record already exists');
1418 l_old_PRICING_ATTR_rec := l_old_PRICING_ATTR_tbl(I);
1419 ELSE
1420 l_old_PRICING_ATTR_rec := QP_Price_List_PUB.G_MISS_PRICING_ATTR_REC;
1421 END IF;
1422
1423 -- Load API control record
1424 oe_debug_pub.add('before init control rec');
1425
1426 l_control_rec := QP_GLOBALS.Init_Control_Rec
1427 ( p_operation => l_PRICING_ATTR_rec.operation
1428 , p_control_rec => p_control_rec
1429 );
1430
1431 -- Set record return status.
1432
1433 l_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_SUCCESS;
1434
1435 -- Prepare record.
1436
1437 IF l_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
1438
1439 oe_debug_pub.add(' operation is create ');
1440
1441 l_PRICING_ATTR_rec.db_flag := FND_API.G_FALSE;
1442
1443 -- Set missing old record elements to NULL.
1444
1445 l_old_PRICING_ATTR_rec :=
1446 Qp_pll_pricing_attr_Util.Convert_Miss_To_Null (l_old_PRICING_ATTR_rec);
1447
1448 ELSIF l_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_UPDATE
1449 OR l_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_DELETE
1450 THEN
1451 oe_debug_pub.add('operation is update');
1452
1453 l_PRICING_ATTR_rec.db_flag := FND_API.G_TRUE;
1454
1455 -- Query Old if missing
1456
1457 IF l_old_PRICING_ATTR_rec.pricing_attribute_id = FND_API.G_MISS_NUM
1458 THEN
1459 oe_debug_pub.add('query pricing attributes');
1460
1461 l_old_PRICING_ATTR_rec := Qp_pll_pricing_attr_Util.Query_Row
1462 ( p_pricing_attribute_id => l_PRICING_ATTR_rec.pricing_attribute_id
1463 );
1464
1465 ELSE
1466
1467 -- Set missing old record elements to NULL.
1468
1469 oe_debug_pub.add('set missing record elements to null');
1470 l_old_PRICING_ATTR_rec :=
1471 Qp_pll_pricing_attr_Util.Convert_Miss_To_Null (l_old_PRICING_ATTR_rec);
1472
1473 END IF;
1474
1475 -- Complete new record from old
1476
1477 oe_debug_pub.add('complete new record from old');
1478
1479
1480 l_PRICING_ATTR_rec := Qp_pll_pricing_attr_Util.Complete_Record
1481 ( p_PRICING_ATTR_rec => l_PRICING_ATTR_rec
1482 , p_old_PRICING_ATTR_rec => l_old_PRICING_ATTR_rec
1483 );
1484
1485 --Start of code added for Bug 2444971. Added for Patchset H
1486 BEGIN
1487 SELECT h.pte_code, h.source_system_code
1488 INTO l_saved_pte_code, l_saved_source_system_code
1489 FROM qp_list_headers_b h, qp_list_lines l
1490 WHERE h.list_header_id = l.list_header_id
1491 AND l.list_line_id = l_PRICING_ATTR_rec.list_line_id;
1492
1493 EXCEPTION
1494 WHEN OTHERS THEN
1495 NULL;
1496 END;
1497
1498 IF l_saved_pte_code <> l_pte_code OR
1499 l_saved_source_system_code <> l_source_system_code
1500 THEN
1501
1502 l_return_status := FND_API.G_RET_STS_ERROR;
1503 FND_MESSAGE.SET_NAME('QP', 'QP_PTE_SS_CODE_MISMATCH');
1504 FND_MESSAGE.SET_TOKEN('SOURCE_SYSTEM',l_saved_source_system_code);
1505 FND_MESSAGE.SET_TOKEN('PTE_CODE',l_saved_pte_code);
1506 OE_MSG_PUB.Add;
1507
1508 RAISE FND_API.G_EXC_ERROR;
1509
1510 END IF;
1511 --End of code added for Bug 2444971. Added for Patchset H
1512
1513 END IF;
1514
1515 -- Attribute level validation.
1516 IF ( l_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_UPDATE
1517 or l_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_CREATE
1518 or l_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_DELETE ) THEN
1519
1520 IF l_control_rec.default_attributes
1521 OR l_control_rec.change_attributes
1522 THEN
1523
1524 IF p_validation_level > FND_API.G_VALID_LEVEL_NONE THEN
1525
1526 oe_debug_pub.add('validate the attributes');
1527
1528 QP_Validate_pll_pricing_attr.Attributes
1529 ( x_return_status => l_return_status
1530 , p_PRICING_ATTR_rec => l_PRICING_ATTR_rec
1531 , p_old_PRICING_ATTR_rec => l_old_PRICING_ATTR_rec
1532 );
1533
1534 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1535 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1536 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1537 RAISE FND_API.G_EXC_ERROR;
1538 END IF;
1539
1540 END IF;
1541
1542 END IF;
1543
1544 -- Clear dependent attributes.
1545
1546 IF l_control_rec.change_attributes THEN
1547
1548 oe_debug_pub.add('clear dependent attr1');
1549 l_p_PRICING_ATTR_rec := l_PRICING_ATTR_rec;
1550 Qp_pll_pricing_attr_Util.Clear_Dependent_Attr
1551 ( p_PRICING_ATTR_rec => l_p_PRICING_ATTR_rec
1552 , p_old_PRICING_ATTR_rec => l_old_PRICING_ATTR_rec
1553 , x_PRICING_ATTR_rec => l_PRICING_ATTR_rec
1554 );
1555
1556 END IF;
1557
1558 -- Default missing attributes
1559
1560 IF l_control_rec.default_attributes
1561 OR l_control_rec.change_attributes
1562 THEN
1563
1564 oe_debug_pub.add('call attributes ');
1565 l_p_PRICING_ATTR_rec := l_PRICING_ATTR_rec;
1566 QP_Default_pll_pricing_attr.Attributes
1567 ( p_PRICING_ATTR_rec => l_p_PRICING_ATTR_rec
1568 , x_PRICING_ATTR_rec => l_PRICING_ATTR_rec
1569 );
1570
1571 END IF;
1572
1573 --Start of code added for Bug 2444971. Added for Patchset H
1574 IF l_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_CREATE
1575 THEN
1576 BEGIN
1577 SELECT h.pte_code, h.source_system_code
1578 INTO l_saved_pte_code, l_saved_source_system_code
1579 FROM qp_list_headers_b h, qp_list_lines l
1580 WHERE h.list_header_id = l.list_header_id
1581 AND l.list_line_id = l_PRICING_ATTR_rec.list_line_id;
1582
1583 EXCEPTION
1584 WHEN OTHERS THEN
1585 NULL;
1586 END;
1587
1588 IF l_saved_pte_code <> l_pte_code OR
1589 l_saved_source_system_code <> l_source_system_code
1590 THEN
1591
1592 l_return_status := FND_API.G_RET_STS_ERROR;
1593 FND_MESSAGE.SET_NAME('QP', 'QP_PTE_SS_CODE_MISMATCH');
1594 FND_MESSAGE.SET_TOKEN('SOURCE_SYSTEM',l_saved_source_system_code);
1595 FND_MESSAGE.SET_TOKEN('PTE_CODE',l_saved_pte_code);
1596 OE_MSG_PUB.Add;
1597
1598 RAISE FND_API.G_EXC_ERROR;
1599
1600 END IF;
1601
1602 END IF; --operation is G_OPR_CREATE
1603 --End of code added for Bug 2444971. Added for Patchset H
1604
1605 -- Apply attribute changes
1606
1607 IF l_control_rec.default_attributes
1608 OR l_control_rec.change_attributes
1609 THEN
1610 l_p_PRICING_ATTR_rec := l_PRICING_ATTR_rec;
1611 oe_debug_pub.add('before calling apply attribute changes');
1612 Qp_pll_pricing_attr_Util.Apply_Attribute_Changes
1613 ( p_PRICING_ATTR_rec => l_p_PRICING_ATTR_rec
1614 , p_old_PRICING_ATTR_rec => l_old_PRICING_ATTR_rec
1615 , x_PRICING_ATTR_rec => l_PRICING_ATTR_rec
1616 );
1617
1618 END IF;
1619
1620 -- Entity level validation.
1621
1622 IF l_control_rec.validate_entity THEN
1623
1624 IF l_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
1625
1626 QP_Validate_pll_pricing_attr.Entity_Delete
1627 ( x_return_status => l_return_status
1628 , p_PRICING_ATTR_rec => l_PRICING_ATTR_rec
1629 );
1630
1631 ELSE
1632
1633 QP_Validate_pll_pricing_attr.Entity
1634 ( x_return_status => l_return_status
1635 , p_PRICING_ATTR_rec => l_PRICING_ATTR_rec
1636 , p_old_PRICING_ATTR_rec => l_old_PRICING_ATTR_rec
1637 );
1638
1639 END IF;
1640
1641 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1642 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1643 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1644 RAISE FND_API.G_EXC_ERROR;
1645 END IF;
1646
1647 END IF;
1648
1649 IF l_control_rec.write_to_db THEN
1650 l_p_PRICING_ATTR_rec := l_PRICING_ATTR_rec;
1651 QP_pll_PRICING_ATTR_UTIL.PRE_WRITE_PROCESS
1652 ( p_Pricing_Attr_rec => l_p_Pricing_Attr_rec
1653 , p_old_Pricing_Attr_rec => l_old_Pricing_Attr_rec
1654 , x_Pricing_Attr_rec => l_Pricing_Attr_rec);
1655
1656 END IF;
1657
1658 -- Step 4. Write to DB
1659
1660 IF l_control_rec.write_to_db THEN
1661
1662 IF l_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
1663
1664 Qp_pll_pricing_attr_Util.Delete_Row
1665 ( p_pricing_attribute_id => l_PRICING_ATTR_rec.pricing_attribute_id
1666 );
1667
1668 ELSE
1669
1670 -- Get Who Information
1671
1672 l_PRICING_ATTR_rec.last_update_date := SYSDATE;
1673 l_PRICING_ATTR_rec.last_updated_by := FND_GLOBAL.USER_ID;
1674 l_PRICING_ATTR_rec.last_update_login := FND_GLOBAL.LOGIN_ID;
1675
1676 IF l_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_UPDATE THEN
1677
1678 oe_debug_Pub.add('before update row');
1679 Qp_pll_pricing_attr_Util.Update_Row (l_PRICING_ATTR_rec);
1680
1681 ELSIF l_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
1682
1683 l_PRICING_ATTR_rec.creation_date := SYSDATE;
1684 l_PRICING_ATTR_rec.created_by := FND_GLOBAL.USER_ID;
1685
1686 oe_debug_pub.add('before insert row');
1687
1688 Qp_pll_pricing_attr_Util.Insert_Row (l_PRICING_ATTR_rec);
1689
1690 END IF;
1691
1692 END IF;
1693
1694 END IF;
1695
1696 END IF; /* if operation is create, update or delete */
1697
1698 -- Load tables.
1699
1700 l_PRICING_ATTR_tbl(I) := l_PRICING_ATTR_rec;
1701 l_old_PRICING_ATTR_tbl(I) := l_old_PRICING_ATTR_rec;
1702
1703 -- For loop exception handler.
1704
1705
1706 EXCEPTION
1707
1708 WHEN FND_API.G_EXC_ERROR THEN
1709
1710 l_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_ERROR;
1711 l_PRICING_ATTR_tbl(I) := l_PRICING_ATTR_rec;
1712 l_old_PRICING_ATTR_tbl(I) := l_old_PRICING_ATTR_rec;
1713
1714 -- mkarya If process_price_list has been called from public package, then ONLY call
1715 -- qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1716 if l_control_rec.called_from_ui = 'N' then
1717 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1718 (p_entity_code => QP_GLOBALS.G_ENTITY_PRICE_LIST_LINE,
1719 p_entity_id => l_PRICING_ATTR_rec.list_line_id,
1720 x_return_status => l_return_status );
1721
1722 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1723 (p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
1724 p_entity_id => l_PRICING_ATTR_rec.list_line_id,
1725 x_return_status => l_return_status );
1726 end if;
1727
1728 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1729
1730 l_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1731 l_PRICING_ATTR_tbl(I) := l_PRICING_ATTR_rec;
1732 l_old_PRICING_ATTR_tbl(I) := l_old_PRICING_ATTR_rec;
1733
1734 -- mkarya If process_price_list has been called from public package, then ONLY call
1735 -- qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1736 if l_control_rec.called_from_ui = 'N' then
1737 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1738 (p_entity_code => QP_GLOBALS.G_ENTITY_PRICE_LIST_LINE,
1739 p_entity_id => l_PRICING_ATTR_rec.list_line_id,
1740 x_return_status => l_return_status );
1741
1742 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1743 (p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
1744 p_entity_id => l_PRICING_ATTR_rec.list_line_id,
1745 x_return_status => l_return_status );
1746 end if;
1747
1748 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1749
1750 WHEN OTHERS THEN
1751
1752 l_PRICING_ATTR_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1753 l_PRICING_ATTR_tbl(I) := l_PRICING_ATTR_rec;
1754 l_old_PRICING_ATTR_tbl(I) := l_old_PRICING_ATTR_rec;
1755
1756 IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1757 THEN
1758 oe_msg_pub.Add_Exc_Msg
1759 ( G_PKG_NAME
1760 , 'Pricing_Attrs'
1761 );
1762 END IF;
1763
1764 -- mkarya If process_price_list has been called from public package, then ONLY call
1765 -- qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1766 if l_control_rec.called_from_ui = 'N' then
1767 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1768 (p_entity_code => QP_GLOBALS.G_ENTITY_PRICE_LIST_LINE,
1769 p_entity_id => l_PRICING_ATTR_rec.list_line_id,
1770 x_return_status => l_return_status );
1771
1772 qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1773 (p_entity_code => QP_GLOBALS.G_ENTITY_ALL,
1774 p_entity_id => l_PRICING_ATTR_rec.list_line_id,
1775 x_return_status => l_return_status );
1776 end if;
1777
1778 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1779
1780 END;
1781 END LOOP;
1782
1783 -- Load OUT parameters
1784
1785 x_PRICING_ATTR_tbl := l_PRICING_ATTR_tbl;
1786 x_old_PRICING_ATTR_tbl := l_old_PRICING_ATTR_tbl;
1787
1788 oe_debug_pub.add('exiting pricing attrs');
1789
1790 EXCEPTION
1791
1792 WHEN FND_API.G_EXC_ERROR THEN
1793
1794 RAISE;
1795
1796 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1797
1798
1799 RAISE;
1800
1801 WHEN OTHERS THEN
1802
1803 IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1804 THEN
1805 oe_msg_pub.Add_Exc_Msg
1806 ( G_PKG_NAME
1807 , 'Pricing_Attrs'
1808 );
1809 END IF;
1810
1811
1812 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1813
1814 END Pricing_Attrs;
1815
1816 -- Start of Comments
1817 -- API name Process_Price_List
1818 -- Type Private
1819 -- Function
1820 --
1821 -- Pre-reqs
1822 --
1823 -- Parameters
1824 --
1825 -- Version Current version = 1.0
1826 -- Initial version = 1.0
1827 --
1828 -- Notes
1829 --
1830 -- End of Comments
1831
1832 PROCEDURE Process_Price_List
1833 ( p_api_version_number IN NUMBER
1834 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
1835 , p_commit IN VARCHAR2 := FND_API.G_FALSE
1836 , p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
1837 , p_control_rec IN QP_GLOBALS.Control_Rec_Type :=
1838 QP_GLOBALS.G_MISS_CONTROL_REC
1839 , x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1840 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
1841 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1842 , p_PRICE_LIST_rec IN QP_Price_List_PUB.Price_List_Rec_Type :=
1843 QP_Price_List_PUB.G_MISS_PRICE_LIST_REC
1844 , p_old_PRICE_LIST_rec IN QP_Price_List_PUB.Price_List_Rec_Type :=
1845 QP_Price_List_PUB.G_MISS_PRICE_LIST_REC
1846 , p_PRICE_LIST_LINE_tbl IN QP_Price_List_PUB.Price_List_Line_Tbl_Type :=
1847 QP_Price_List_PUB.G_MISS_PRICE_LIST_LINE_TBL
1848 , p_old_PRICE_LIST_LINE_tbl IN QP_Price_List_PUB.Price_List_Line_Tbl_Type :=
1849 QP_Price_List_PUB.G_MISS_PRICE_LIST_LINE_TBL
1850 , p_QUALIFIERS_tbl IN Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type :=
1851 QP_Price_List_PUB.G_MISS_QUALIFIERS_TBL
1852 --Qp_Qualifier_Rules_Pub.G_MISS_QUALIFIERS_TBL --2422176
1853 , p_old_QUALIFIERS_tbl IN Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type :=
1854 QP_Price_List_PUB.G_MISS_QUALIFIERS_TBL
1855 --Qp_Qualifier_Rules_Pub.G_MISS_QUALIFIERS_TBL --2422176
1856 , p_PRICING_ATTR_tbl IN QP_Price_List_PUB.Pricing_Attr_Tbl_Type :=
1857 QP_Price_List_PUB.G_MISS_PRICING_ATTR_TBL
1858 , p_old_PRICING_ATTR_tbl IN QP_Price_List_PUB.Pricing_Attr_Tbl_Type :=
1859 QP_Price_List_PUB.G_MISS_PRICING_ATTR_TBL
1860 , x_PRICE_LIST_rec OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Rec_Type
1861 , x_PRICE_LIST_LINE_tbl OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Line_Tbl_Type
1862 , x_QUALIFIERS_tbl OUT NOCOPY /* file.sql.39 change */ Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type
1863 , x_PRICING_ATTR_tbl OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Pricing_Attr_Tbl_Type
1864 )
1865 IS
1866 l_api_version_number CONSTANT NUMBER := 1.0;
1867 l_api_name CONSTANT VARCHAR2(30):= 'Process_Price_List';
1868 l_return_status VARCHAR2(1);
1869 l_control_rec QP_GLOBALS.Control_Rec_Type;
1870 l_PRICE_LIST_rec QP_Price_List_PUB.Price_List_Rec_Type := p_PRICE_LIST_rec;
1871 l_p_PRICE_LIST_rec QP_Price_List_PUB.Price_List_Rec_Type := p_PRICE_LIST_rec;
1872 l_old_PRICE_LIST_rec QP_Price_List_PUB.Price_List_Rec_Type := p_old_PRICE_LIST_rec;
1873 l_p_old_PRICE_LIST_rec QP_Price_List_PUB.Price_List_Rec_Type := p_old_PRICE_LIST_rec;
1874 l_PRICE_LIST_LINE_rec QP_Price_List_PUB.Price_List_Line_Rec_Type;
1875 l_PRICE_LIST_LINE_tbl QP_Price_List_PUB.Price_List_Line_Tbl_Type;
1876 l_p_PRICE_LIST_LINE_tbl QP_Price_List_PUB.Price_List_Line_Tbl_Type;
1877 l_old_PRICE_LIST_LINE_rec QP_Price_List_PUB.Price_List_Line_Rec_Type;
1878 l_old_PRICE_LIST_LINE_tbl QP_Price_List_PUB.Price_List_Line_Tbl_Type;
1879 l_p_old_PRICE_LIST_LINE_tbl QP_Price_List_PUB.Price_List_Line_Tbl_Type;
1880 l_QUALIFIERS_rec Qp_Qualifier_Rules_Pub.Qualifiers_Rec_Type;
1881 l_QUALIFIERS_tbl Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
1882 l_p_QUALIFIERS_tbl Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
1883 l_old_QUALIFIERS_rec Qp_Qualifier_Rules_Pub.Qualifiers_Rec_Type;
1884 l_old_QUALIFIERS_tbl Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
1885 l_p_old_QUALIFIERS_tbl Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
1886 l_PRICING_ATTR_rec QP_Price_List_PUB.Pricing_Attr_Rec_Type;
1887 l_PRICING_ATTR_tbl QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1888 l_p_PRICING_ATTR_tbl QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1889 l_old_PRICING_ATTR_rec QP_Price_List_PUB.Pricing_Attr_Rec_Type;
1890 l_old_PRICING_ATTR_tbl QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1891 l_p_old_PRICING_ATTR_tbl QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1892 l_installed_status VARCHAR2(1);
1893 -- Blanket Agreement
1894 l_qual_exists VARCHAR2(1) := 'N';
1895 BEGIN
1896
1897 oe_debug_pub.add('entering process price list');
1898
1899 -- Standard call to check for call compatibility
1900
1901 IF NOT FND_API.Compatible_API_Call
1902 ( l_api_version_number
1903 , p_api_version_number
1904 , l_api_name
1905 , G_PKG_NAME
1906 )
1907 THEN
1908 oe_debug_pub.add('in unexpected error 1');
1909 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1910 END IF;
1911
1912
1913 oe_debug_Pub.add('process_Price_list 1');
1914 -- Initialize message list.
1915
1916 IF FND_API.to_Boolean(p_init_msg_list) THEN
1917 oe_msg_pub.initialize;
1918 END IF;
1919
1920 /* check for installation status ; if it's basic then this api
1921 is not available */
1922
1923 l_installed_status := QP_UTIL.get_qp_status;
1924
1925 IF l_installed_status = 'N' THEN
1926
1927 l_return_status := FND_API.G_RET_STS_ERROR;
1928 FND_MESSAGE.SET_NAME('QP', 'QP_BASIC_PRICING_UNAVAILABLE');
1929 OE_MSG_PUB.Add;
1930 RAISE FND_API.G_EXC_ERROR;
1931
1932 END IF;
1933
1934 -- Init local table variables.
1935
1936 l_PRICE_LIST_LINE_tbl := p_PRICE_LIST_LINE_tbl;
1937 l_old_PRICE_LIST_LINE_tbl := p_old_PRICE_LIST_LINE_tbl;
1938
1939 -- Init local table variables.
1940
1941 l_QUALIFIERS_tbl := p_QUALIFIERS_tbl;
1942 l_old_QUALIFIERS_tbl := p_old_QUALIFIERS_tbl;
1943
1944 -- Init local table variables.
1945
1946 l_PRICING_ATTR_tbl := p_PRICING_ATTR_tbl;
1947 l_old_PRICING_ATTR_tbl := p_old_PRICING_ATTR_tbl;
1948
1949 -- Price_List
1950 oe_debug_Pub.add('process_Price_list 2');
1951 l_p_PRICE_LIST_rec := l_PRICE_LIST_rec;
1952 l_p_old_PRICE_LIST_rec := l_old_PRICE_LIST_rec;
1953 Price_List
1954 ( p_validation_level => p_validation_level
1955 , p_control_rec => p_control_rec
1956 , p_PRICE_LIST_rec => l_p_PRICE_LIST_rec
1957 , p_old_PRICE_LIST_rec => l_p_old_PRICE_LIST_rec
1958 , x_PRICE_LIST_rec => l_PRICE_LIST_rec
1959 , x_old_PRICE_LIST_rec => l_old_PRICE_LIST_rec
1960 );
1961 oe_debug_Pub.add('process_Price_list 3');
1962
1963 -- Perform PRICE_LIST group requests.
1964
1965 IF p_control_rec.process AND
1966 (p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_ALL OR
1967 p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_PRICE_LIST)
1968 THEN
1969
1970 QP_DELAYED_REQUESTS_PVT.Process_Request_for_Entity
1971 (p_entity_code => QP_GLOBALS.G_ENTITY_PRICE_LIST
1972 ,p_delete => FND_API.G_TRUE
1973 ,x_return_status => l_return_status
1974 );
1975 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1976 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1977 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1978 RAISE FND_API.G_EXC_ERROR;
1979 END IF;
1980
1981 END IF;
1982
1983 -- Load parent key if missing and operation is create.
1984
1985 FOR I IN 1..l_PRICE_LIST_LINE_tbl.COUNT LOOP
1986
1987 l_PRICE_LIST_LINE_rec := l_PRICE_LIST_LINE_tbl(I);
1988
1989 IF l_PRICE_LIST_LINE_rec.operation = QP_GLOBALS.G_OPR_CREATE
1990 AND (l_PRICE_LIST_LINE_rec.list_header_id IS NULL OR
1991 l_PRICE_LIST_LINE_rec.list_header_id = FND_API.G_MISS_NUM)
1992 THEN
1993
1994 -- Copy parent_id.
1995
1996 l_PRICE_LIST_LINE_tbl(I).list_header_id := l_PRICE_LIST_rec.list_header_id;
1997 END IF;
1998
1999 END LOOP;
2000
2001 -- Price_List_Lines
2002 oe_debug_Pub.add('process_Price_list 4');
2003 l_p_PRICE_LIST_LINE_tbl := l_PRICE_LIST_LINE_tbl;
2004 l_p_old_PRICE_LIST_LINE_tbl := l_old_PRICE_LIST_LINE_tbl;
2005 Price_List_Lines
2006 ( p_validation_level => p_validation_level
2007 , p_control_rec => p_control_rec
2008 , p_PRICE_LIST_LINE_tbl => l_p_PRICE_LIST_LINE_tbl
2009 , p_old_PRICE_LIST_LINE_tbl => l_p_old_PRICE_LIST_LINE_tbl
2010 , x_PRICE_LIST_LINE_tbl => l_PRICE_LIST_LINE_tbl
2011 , x_old_PRICE_LIST_LINE_tbl => l_old_PRICE_LIST_LINE_tbl
2012 );
2013 oe_debug_Pub.add('process_Price_list 5');
2014
2015 -- Perform PRICE_LIST_LINE group requests.
2016
2017 IF p_control_rec.process AND
2018 (p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_ALL OR
2019 p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_PRICE_LIST_LINE)
2020 THEN
2021
2022 QP_DELAYED_REQUESTS_PVT.Process_Request_for_Entity
2023 (p_entity_code => QP_GLOBALS.G_ENTITY_PRICE_LIST_LINE
2024 ,p_delete => FND_API.G_TRUE
2025 ,x_return_status => l_return_status
2026 );
2027 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2028 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2029 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2030 RAISE FND_API.G_EXC_ERROR;
2031 END IF;
2032
2033 END IF;
2034
2035 -- Load parent key if missing and operation is create.
2036
2037 FOR I IN 1..l_QUALIFIERS_tbl.COUNT LOOP
2038
2039 l_QUALIFIERS_rec := l_QUALIFIERS_tbl(I);
2040
2041 IF l_QUALIFIERS_rec.operation = QP_GLOBALS.G_OPR_CREATE
2042 AND (l_QUALIFIERS_rec.list_header_id IS NULL OR
2043 l_QUALIFIERS_rec.list_header_id = FND_API.G_MISS_NUM)
2044 THEN
2045
2046 -- Copy parent_id.
2047
2048 l_QUALIFIERS_tbl(I).list_header_id := l_PRICE_LIST_rec.list_header_id;
2049 END IF;
2050 END LOOP;
2051
2052 -- Qualifierss
2053
2054 oe_debug_Pub.add('process_Price_list 6');
2055 l_p_QUALIFIERS_tbl := l_QUALIFIERS_tbl;
2056 l_p_old_QUALIFIERS_tbl := l_old_QUALIFIERS_tbl;
2057 Qualifierss
2058 ( p_validation_level => p_validation_level
2059 , p_control_rec => p_control_rec
2060 , p_QUALIFIERS_tbl => l_p_QUALIFIERS_tbl
2061 , p_old_QUALIFIERS_tbl => l_p_old_QUALIFIERS_tbl
2062 , x_QUALIFIERS_tbl => l_QUALIFIERS_tbl
2063 , x_old_QUALIFIERS_tbl => l_old_QUALIFIERS_tbl
2064 );
2065 oe_debug_Pub.add('process_Price_list 7');
2066
2067
2068 -- Perform QUALIFIERS group requests.
2069
2070 IF p_control_rec.process AND
2071 (p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_ALL OR
2072 p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_QUALIFIERS)
2073 THEN
2074 oe_debug_pub.add('process_Price_List 12');
2075 NULL;
2076
2077 END IF;
2078
2079 -- Load parent key if missing and operation is create.
2080
2081 FOR I IN 1..l_PRICING_ATTR_tbl.COUNT LOOP
2082
2083 oe_debug_pub.add('process_Price_List 13');
2084 l_PRICING_ATTR_rec := l_PRICING_ATTR_tbl(I);
2085
2086 IF l_PRICING_ATTR_rec.operation = QP_GLOBALS.G_OPR_CREATE
2087 AND (l_PRICING_ATTR_rec.list_line_id IS NULL OR
2088 l_PRICING_ATTR_rec.list_line_id = FND_API.G_MISS_NUM)
2089 THEN
2090
2091 oe_debug_pub.add('process_Price_List 14');
2092 -- Check If parent exists.
2093
2094 IF l_PRICE_LIST_LINE_tbl.EXISTS(l_PRICING_ATTR_rec.PRICE_LIST_LINE_index) THEN
2095
2096 -- Copy parent_id.
2097 oe_debug_pub.add('process_Price_List 15');
2098
2099 l_PRICING_ATTR_tbl(I).list_line_id := l_PRICE_LIST_LINE_tbl(l_PRICING_ATTR_rec.PRICE_LIST_LINE_index).list_line_id;
2100
2101
2102 -- Copy list line's from_rltd_modifier_id to pricing attr's from_rltd_modifier_id
2103
2104 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;
2105
2106
2107 ELSE
2108 oe_debug_pub.add('process_Price_List 16');
2109
2110 IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR)
2111 THEN
2112 oe_debug_pub.add('process_Price_List 17');
2113
2114 FND_MESSAGE.SET_NAME('QP','QP_API_INV_PARENT_INDEX');
2115 oe_debug_pub.add('process_Price_List 18');
2116 FND_MESSAGE.SET_TOKEN('ENTITY_NAME','PRICING_ATTR');
2117 oe_debug_pub.add('process_Price_List 19');
2118 FND_MESSAGE.SET_TOKEN('ENTITY_INDEX',I);
2119 oe_debug_pub.add('process_Price_List 20');
2120 FND_MESSAGE.SET_TOKEN('PARENT_INDEX',l_PRICING_ATTR_rec.PRICE_LIST_LINE_index);
2121 oe_debug_pub.add('process_Price_List 21');
2122 oe_msg_pub.Add;
2123
2124
2125 END IF;
2126 END IF;
2127 END IF;
2128 END LOOP;
2129 oe_debug_pub.add('process_Price_List 22');
2130
2131 -- Pricing_Attrs
2132 oe_debug_Pub.add('process_Price_list 8');
2133 l_p_PRICING_ATTR_tbl := l_PRICING_ATTR_tbl;
2134 l_p_old_PRICING_ATTR_tbl := l_old_PRICING_ATTR_tbl;
2135 Pricing_Attrs
2136 ( p_validation_level => p_validation_level
2137 , p_control_rec => p_control_rec
2138 , p_PRICING_ATTR_tbl => l_p_PRICING_ATTR_tbl
2139 , p_old_PRICING_ATTR_tbl => l_p_old_PRICING_ATTR_tbl
2140 , x_PRICING_ATTR_tbl => l_PRICING_ATTR_tbl
2141 , x_old_PRICING_ATTR_tbl => l_old_PRICING_ATTR_tbl
2142 );
2143 oe_debug_Pub.add('process_Price_list 9');
2144
2145 -- Perform PRICING_ATTR group requests.
2146
2147 IF p_control_rec.process AND
2148 (p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_ALL OR
2149 p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_PRICING_ATTR)
2150 THEN
2151
2152 NULL;
2153
2154 END IF;
2155
2156 -- Step 6. Perform Object group logic
2157
2158 IF p_control_rec.process AND
2159 p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_ALL
2160 THEN
2161
2162 oe_debug_pub.add('Ren: before processing delayed request');
2163
2164 QP_DELAYED_REQUESTS_PVT.Process_Delayed_Requests(
2165 x_return_status => l_return_status
2166 );
2167
2168 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2169 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2170 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2171 RAISE FND_API.G_EXC_ERROR;
2172 END IF;
2173
2174 oe_debug_pub.add('Ren: after processing delayed request');
2175
2176 END IF;
2177
2178 -- Done processing, load OUT parameters.
2179
2180 x_PRICE_LIST_rec := l_PRICE_LIST_rec;
2181 x_PRICE_LIST_LINE_tbl := l_PRICE_LIST_LINE_tbl;
2182 x_QUALIFIERS_tbl := l_QUALIFIERS_tbl;
2183 x_PRICING_ATTR_tbl := l_PRICING_ATTR_tbl;
2184
2185 -- Clear API cache.
2186
2187 IF p_control_rec.clear_api_cache THEN
2188
2189 NULL;
2190
2191 END IF;
2192
2193 -- Clear API request tbl.
2194
2195 IF p_control_rec.clear_api_requests THEN
2196
2197 NULL;
2198
2199 END IF;
2200
2201 -- Derive return status.
2202
2203 x_return_status := FND_API.G_RET_STS_SUCCESS;
2204
2205 IF l_PRICE_LIST_rec.return_status = FND_API.G_RET_STS_ERROR THEN
2206 x_return_status := FND_API.G_RET_STS_ERROR;
2207 END IF;
2208
2209 FOR I IN 1..l_PRICE_LIST_LINE_tbl.COUNT LOOP
2210
2211 IF ( l_PRICE_LIST_LINE_tbl(I).return_status = FND_API.G_RET_STS_ERROR AND
2212 ( l_PRICE_LIST_LINE_rec.list_line_id <> FND_API.G_MISS_NUM OR
2213 l_PRICE_LIST_LINE_rec.list_line_id <> NULL ) ) THEN
2214 x_return_status := FND_API.G_RET_STS_ERROR;
2215 END IF;
2216
2217 END LOOP;
2218
2219 FOR I IN 1..l_QUALIFIERS_tbl.COUNT LOOP
2220
2221 IF l_QUALIFIERS_tbl(I).return_status = FND_API.G_RET_STS_ERROR THEN
2222 x_return_status := FND_API.G_RET_STS_ERROR;
2223 END IF;
2224
2225 END LOOP;
2226
2227 FOR I IN 1..l_PRICING_ATTR_tbl.COUNT LOOP
2228
2229 IF l_PRICING_ATTR_tbl(I).return_status = FND_API.G_RET_STS_ERROR THEN
2230 x_return_status := FND_API.G_RET_STS_ERROR;
2231 END IF;
2232
2233 END LOOP;
2234
2235 -- Get message count and data
2236 oe_debug_Pub.add('process_Price_list 11');
2237
2238 oe_msg_pub.Count_And_Get
2239 ( p_count => x_msg_count
2240 , p_data => x_msg_data
2241 );
2242
2243 -- Create blanket header qualifier
2244
2245 IF ( p_control_rec.write_to_db --Bug#3309455
2246 AND x_PRICE_LIST_rec.operation = QP_GLOBALS.G_OPR_CREATE
2247 AND x_PRICE_LIST_rec.list_source_code = 'BSO'
2248 AND ( x_PRICE_LIST_rec.orig_system_header_ref <> NULL
2249 OR x_PRICE_LIST_rec.orig_system_header_ref <> FND_API.G_MISS_CHAR)
2250 )
2251 THEN
2252 oe_debug_pub.add('inside create qualifier for blanket modifier');
2253
2254 BEGIN
2255 select 'Y' into l_qual_exists
2256 from qp_qualifiers
2257 where list_header_id = x_PRICE_LIST_rec.list_header_id
2258 and qualifier_context = 'ORDER'
2259 and qualifier_attribute = 'QUALIFIER_ATTRIBUTE5'
2260 and qualifier_attr_value = x_PRICE_LIST_rec.orig_system_header_ref;
2261 EXCEPTION
2262 WHEN NO_DATA_FOUND THEN
2263 l_qual_exists := 'N';
2264 WHEN OTHERS THEN NULL;
2265 END;
2266
2267 IF l_qual_exists = 'N' THEN
2268
2269 QP_Qualifier_Rules_PVT.Create_Blanket_Qualifier
2270 ( p_list_header_id => x_PRICE_LIST_rec.list_header_id
2271 , p_old_list_header_id => x_PRICE_LIST_rec.list_header_id
2272 , p_blanket_id => to_number(x_PRICE_LIST_rec.orig_system_header_ref)
2273 , p_operation => QP_GLOBALS.G_OPR_CREATE
2274 , x_return_status => l_return_status
2275 );
2276
2277 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2278 oe_debug_pub.add('Unexp Error while creating blanket qualifier');
2279 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2280 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2281 oe_debug_pub.add('Exp Error while creating blanket qualifier');
2282 RAISE FND_API.G_EXC_ERROR;
2283 END IF;
2284 END IF;
2285
2286 END IF;
2287
2288 oe_debug_pub.add('exiting process price list');
2289
2290
2291 EXCEPTION
2292
2293 WHEN FND_API.G_EXC_ERROR THEN
2294
2295 x_return_status := FND_API.G_RET_STS_ERROR;
2296
2297 -- mkarya If process_price_list has been called from public package, then ONLY call clear_request
2298 if p_control_rec.called_from_ui = 'N' then
2299 qp_delayed_requests_pvt.Clear_Request
2300 (x_return_status => l_return_status);
2301 end if;
2302
2303 -- Get message count and data
2304
2305 oe_msg_pub.Count_And_Get
2306 ( p_count => x_msg_count
2307 , p_data => x_msg_data
2308 );
2309
2310 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2311
2312 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2313
2314 -- mkarya If process_price_list has been called from public package, then ONLY call clear_request
2315 if p_control_rec.called_from_ui = 'N' then
2316 qp_delayed_requests_pvt.Clear_Request
2317 (x_return_status => l_return_status);
2318 end if;
2319
2320 -- Get message count and data
2321
2322 oe_msg_pub.Count_And_Get
2323 ( p_count => x_msg_count
2324 , p_data => x_msg_data
2325 );
2326
2327
2328 WHEN OTHERS THEN
2329
2330 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2331
2332 -- mkarya If process_price_list has been called from public package, then ONLY call clear_request
2333 if p_control_rec.called_from_ui = 'N' then
2334 qp_delayed_requests_pvt.Clear_Request
2335 (x_return_status => l_return_status);
2336 end if;
2337
2338 IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
2339 THEN
2340 oe_msg_pub.Add_Exc_Msg
2341 ( G_PKG_NAME
2342 , 'Process_Price_List'
2343 );
2344 END IF;
2345
2346 -- Get message count and data
2347
2348 oe_msg_pub.Count_And_Get
2349 ( p_count => x_msg_count
2350 , p_data => x_msg_data
2351 );
2352
2353 END Process_Price_List;
2354
2355 -- Start of Comments
2356 -- API name Lock_Price_List
2357 -- Type Private
2358 -- Function
2359 --
2360 -- Pre-reqs
2361 --
2362 -- Parameters
2363 --
2364 -- Version Current version = 1.0
2365 -- Initial version = 1.0
2366 --
2367 -- Notes
2368 --
2369 -- End of Comments
2370
2371 PROCEDURE Lock_Price_List
2372 ( p_api_version_number IN NUMBER
2373 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
2374 , x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2375 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
2376 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2377 , p_PRICE_LIST_rec IN QP_Price_List_PUB.Price_List_Rec_Type :=
2378 QP_Price_List_PUB.G_MISS_PRICE_LIST_REC
2379 , p_PRICE_LIST_LINE_tbl IN QP_Price_List_PUB.Price_List_Line_Tbl_Type :=
2380 QP_Price_List_PUB.G_MISS_PRICE_LIST_LINE_TBL
2381 , p_QUALIFIERS_tbl IN Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type :=
2382 QP_Price_List_PUB.G_MISS_QUALIFIERS_TBL
2383 --Qp_Qualifier_Rules_Pub.G_MISS_QUALIFIERS_TBL --2422176
2384 , p_PRICING_ATTR_tbl IN QP_Price_List_PUB.Pricing_Attr_Tbl_Type :=
2385 QP_Price_List_PUB.G_MISS_PRICING_ATTR_TBL
2386 , x_PRICE_LIST_rec OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Rec_Type
2387 , x_PRICE_LIST_LINE_tbl OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Line_Tbl_Type
2388 , x_QUALIFIERS_tbl OUT NOCOPY /* file.sql.39 change */ Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type
2389 , x_PRICING_ATTR_tbl OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Pricing_Attr_Tbl_Type
2390 )
2391 IS
2392 l_api_version_number CONSTANT NUMBER := 1.0;
2393 l_api_name CONSTANT VARCHAR2(30):= 'Lock_Price_List';
2394 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
2395 l_PRICE_LIST_LINE_rec QP_Price_List_PUB.Price_List_Line_Rec_Type;
2396 l_QUALIFIERS_rec Qp_Qualifier_Rules_Pub.Qualifiers_Rec_Type;
2397 l_PRICING_ATTR_rec QP_Price_List_PUB.Pricing_Attr_Rec_Type;
2398 BEGIN
2399
2400 -- Standard call to check for call compatibility
2401
2402 IF NOT FND_API.Compatible_API_Call
2403 ( l_api_version_number
2404 , p_api_version_number
2405 , l_api_name
2406 , G_PKG_NAME
2407 )
2408 THEN
2409 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2410 END IF;
2411
2412 -- Initialize message list.
2413
2414 IF FND_API.to_Boolean(p_init_msg_list) THEN
2415 oe_msg_pub.initialize;
2416 END IF;
2417
2418 -- Set Savepoint
2419
2420 SAVEPOINT Lock_Price_List_PVT;
2421
2422 -- Lock PRICE_LIST
2423
2424 IF p_PRICE_LIST_rec.operation = QP_GLOBALS.G_OPR_LOCK THEN
2425
2426 QP_Price_List_Util.Lock_Row
2427 ( p_PRICE_LIST_rec => p_PRICE_LIST_rec
2428 , x_PRICE_LIST_rec => x_PRICE_LIST_rec
2429 , x_return_status => l_return_status
2430 );
2431
2432 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2433 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2434 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2435 RAISE FND_API.G_EXC_ERROR;
2436 END IF;
2437
2438
2439 END IF;
2440
2441 -- Lock PRICE_LIST_LINE
2442
2443 FOR I IN 1..p_PRICE_LIST_LINE_tbl.COUNT LOOP
2444
2445 IF p_PRICE_LIST_LINE_tbl(I).operation = QP_GLOBALS.G_OPR_LOCK THEN
2446
2447 QP_Price_List_Line_Util.Lock_Row
2448 ( p_PRICE_LIST_LINE_rec => p_PRICE_LIST_LINE_tbl(I)
2449 , x_PRICE_LIST_LINE_rec => l_PRICE_LIST_LINE_rec
2450 , x_return_status => l_return_status
2451 );
2452
2453 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2454 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2455 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2456 RAISE FND_API.G_EXC_ERROR;
2457 END IF;
2458
2459 x_PRICE_LIST_LINE_tbl(I) := l_PRICE_LIST_LINE_rec;
2460
2461 END IF;
2462
2463 END LOOP;
2464
2465 -- Lock QUALIFIERS
2466
2467 FOR I IN 1..p_QUALIFIERS_tbl.COUNT LOOP
2468
2469 IF p_QUALIFIERS_tbl(I).operation = QP_GLOBALS.G_OPR_LOCK THEN
2470
2471 QP_Qualifiers_Util.Lock_Row
2472 ( p_QUALIFIERS_rec => p_QUALIFIERS_tbl(I)
2473 , x_QUALIFIERS_rec => l_QUALIFIERS_rec
2474 , x_return_status => l_return_status
2475 );
2476
2477
2478 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2479 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2480 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2481 RAISE FND_API.G_EXC_ERROR;
2482 END IF;
2483
2484 x_QUALIFIERS_tbl(I) := l_QUALIFIERS_rec;
2485
2486 END IF;
2487
2488 END LOOP;
2489
2490 -- Lock PRICING_ATTR
2491
2492 FOR I IN 1..p_PRICING_ATTR_tbl.COUNT LOOP
2493
2494 IF p_PRICING_ATTR_tbl(I).operation = QP_GLOBALS.G_OPR_LOCK THEN
2495
2496 Qp_pll_pricing_attr_Util.Lock_Row
2497 ( p_PRICING_ATTR_rec => p_PRICING_ATTR_tbl(I)
2498 , x_PRICING_ATTR_rec => l_PRICING_ATTR_rec
2499 , x_return_status => l_return_status
2500 );
2501
2502 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2503 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2504 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2505 RAISE FND_API.G_EXC_ERROR;
2506 END IF;
2507
2508 x_PRICING_ATTR_tbl(I) := l_PRICING_ATTR_rec;
2509
2510 END IF;
2511
2512 END LOOP;
2513
2514 -- Set return status
2515
2516 x_return_status := FND_API.G_RET_STS_SUCCESS;
2517
2518 -- Get message count and data
2519
2520 oe_msg_pub.Count_And_Get
2521 ( p_count => x_msg_count
2522 , p_data => x_msg_data
2523 );
2524
2525
2526 EXCEPTION
2527
2528 WHEN FND_API.G_EXC_ERROR THEN
2529
2530 x_return_status := FND_API.G_RET_STS_ERROR;
2531
2532 -- Get message count and data
2533
2534 oe_msg_pub.Count_And_Get
2535 ( p_count => x_msg_count
2536 , p_data => x_msg_data
2537 );
2538
2539 -- Rollback
2540
2541 ROLLBACK TO Lock_Price_List_PVT;
2542
2543 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2544
2545 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2546
2547 -- Get message count and data
2548
2549 oe_msg_pub.Count_And_Get
2550 ( p_count => x_msg_count
2551 , p_data => x_msg_data
2552 );
2553
2554 -- Rollback
2555
2556 ROLLBACK TO Lock_Price_List_PVT;
2557
2558 WHEN OTHERS THEN
2559
2560 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2561
2562 IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
2563 THEN
2564 oe_msg_pub.Add_Exc_Msg
2565 ( G_PKG_NAME
2566 , 'Lock_Price_List'
2567 );
2568 END IF;
2569
2570 -- Get message count and data
2571
2572 oe_msg_pub.Count_And_Get
2573 ( p_count => x_msg_count
2574 , p_data => x_msg_data
2575 );
2576
2577 -- Rollback
2578
2579 ROLLBACK TO Lock_Price_List_PVT;
2580
2581 END Lock_Price_List;
2582
2583 -- Start of Comments
2584 -- API name Get_Price_List
2585 -- Type Private
2586 -- Function
2587 --
2588 -- Pre-reqs
2589 --
2590 -- Parameters
2591 --
2592 -- Version Current version = 1.0
2593 -- Initial version = 1.0
2594 --
2595 -- Notes
2596 --
2597 -- End of Comments
2598
2599 PROCEDURE Get_Price_List
2600 ( p_api_version_number IN NUMBER
2601 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
2602 , x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2603 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
2604 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2605 , p_list_header_id IN NUMBER
2606 , x_PRICE_LIST_rec OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Rec_Type
2607 , x_PRICE_LIST_LINE_tbl OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Line_Tbl_Type
2608 , x_QUALIFIERS_tbl OUT NOCOPY /* file.sql.39 change */ Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type
2609 , x_PRICING_ATTR_tbl OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Pricing_Attr_Tbl_Type
2610 )
2611 IS
2612 l_api_version_number CONSTANT NUMBER := 1.0;
2613 l_api_name CONSTANT VARCHAR2(30):= 'Get_Price_List';
2614 l_PRICE_LIST_rec QP_Price_List_PUB.Price_List_Rec_Type;
2615 l_PRICE_LIST_LINE_tbl QP_Price_List_PUB.Price_List_Line_Tbl_Type;
2616 l_QUALIFIERS_tbl Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
2617 l_PRICING_ATTR_tbl QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
2618 l_x_PRICING_ATTR_tbl QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
2619 BEGIN
2620
2621 -- Standard call to check for call compatibility
2622
2623 IF NOT FND_API.Compatible_API_Call
2624 ( l_api_version_number
2625 , p_api_version_number
2626 , l_api_name
2627 , G_PKG_NAME
2628 )
2629 THEN
2630 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2631 END IF;
2632
2633 -- Initialize message list.
2634
2635 IF FND_API.to_Boolean(p_init_msg_list) THEN
2636 oe_msg_pub.initialize;
2637 END IF;
2638
2639 -- Get PRICE_LIST ( parent = PRICE_LIST )
2640
2641 l_PRICE_LIST_rec := QP_Price_List_Util.Query_Row
2642 ( p_list_header_id => p_list_header_id
2643 );
2644
2645 -- Get PRICE_LIST_LINE ( parent = PRICE_LIST )
2646
2647 l_PRICE_LIST_LINE_tbl := QP_Price_List_Line_Util.Query_Rows
2648 ( p_list_header_id => l_PRICE_LIST_rec.list_header_id
2649 );
2650
2651
2652 -- Loop over PRICE_LIST_LINE's children
2653
2654 FOR I2 IN 1..l_PRICE_LIST_LINE_tbl.COUNT LOOP
2655
2656 -- Get PRICING_ATTR ( parent = PRICE_LIST_LINE )
2657
2658 l_PRICING_ATTR_tbl := Qp_pll_pricing_attr_Util.Query_Rows
2659 ( p_list_line_id => l_PRICE_LIST_LINE_tbl(I2).list_line_id
2660 );
2661
2662 FOR I3 IN 1..l_PRICING_ATTR_tbl.COUNT LOOP
2663 l_PRICING_ATTR_tbl(I3).PRICE_LIST_LINE_Index := I2;
2664 l_x_PRICING_ATTR_tbl
2665 (l_x_PRICING_ATTR_tbl.COUNT + 1) := l_PRICING_ATTR_tbl(I3);
2666 END LOOP;
2667
2668
2669 END LOOP;
2670
2671
2672 -- Get QUALIFIERS ( parent = PRICE_LIST )
2673
2674 l_QUALIFIERS_tbl := QP_Qualifiers_Util_Mod.Query_Rows
2675 ( p_list_header_id => l_PRICE_LIST_rec.list_header_id
2676 );
2677
2678
2679
2680 -- Load out parameters
2681
2682 x_PRICE_LIST_rec := l_PRICE_LIST_rec;
2683 x_PRICE_LIST_LINE_tbl := l_PRICE_LIST_LINE_tbl;
2684 x_QUALIFIERS_tbl := l_QUALIFIERS_tbl;
2685 x_PRICING_ATTR_tbl := l_x_PRICING_ATTR_tbl;
2686
2687 -- Set return status
2688
2689 x_return_status := FND_API.G_RET_STS_SUCCESS;
2690
2691 -- Get message count and data
2692
2693 oe_msg_pub.Count_And_Get
2694 ( p_count => x_msg_count
2695 , p_data => x_msg_data
2696 );
2697
2698
2699 EXCEPTION
2700
2701 WHEN FND_API.G_EXC_ERROR THEN
2702
2703 x_return_status := FND_API.G_RET_STS_ERROR;
2704
2705 -- Get message count and data
2706
2707 oe_msg_pub.Count_And_Get
2708 ( p_count => x_msg_count
2709 , p_data => x_msg_data
2710 );
2711
2712 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2713
2714 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2715
2716 -- Get message count and data
2717
2718 oe_msg_pub.Count_And_Get
2719 ( p_count => x_msg_count
2720 , p_data => x_msg_data
2721 );
2722
2723 WHEN OTHERS THEN
2724
2725 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2726
2727 IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
2728 THEN
2729 oe_msg_pub.Add_Exc_Msg
2730 ( G_PKG_NAME
2731 , 'Get_Price_List'
2732 );
2733 END IF;
2734
2735 -- Get message count and data
2736
2737 oe_msg_pub.Count_And_Get
2738 ( p_count => x_msg_count
2739 , p_data => x_msg_data
2740 );
2741
2742 END Get_Price_List;
2743
2744 END QP_LIST_HEADERS_PVT;