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