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