1 PACKAGE BODY QP_Validate_Qualifiers AS
2 /* $Header: QPXLQPQB.pls 120.2 2005/08/31 18:05:45 srashmi noship $ */
3
4 -- Global constant holding the package name
5
6 G_PKG_NAME CONSTANT VARCHAR2(30) := 'QP_Validate_Qualifiers';
7
8
9 FUNCTION Check_Duplicate_Start_date(p_qualifier_grouping_no IN number,
10 p_start_date IN date,
11 p_qualifier_rule_id IN number,
12 p_qualifier_id IN number)RETURN BOOLEAN IS
13 CURSOR c_QualifierStartDate(p_qualifier_grouping_no number,
14 p_start_date date,
15 p_qualifier_rule_id number,
16 p_qualifier_id number) is
17 SELECT 'CHANGED'
18 FROM QP_QUALIFIERS
19 WHERE qualifier_rule_id = p_qualifier_rule_id
20 AND qualifier_grouping_no = p_qualifier_grouping_no
21 AND start_date_active <> p_start_date
22 AND qualifier_id <> p_qualifier_id;
23
24
25 l_status VARCHAR2(30);
26
27 BEGIN
28
29 OPEN c_QualifierStartDate(p_qualifier_grouping_no,
30 p_start_date,
31 p_qualifier_rule_id,
32 p_qualifier_id);
33 FETCH c_QualifierStartDate INTO l_status;
34 CLOSE c_QualifierStartDate;
35
36 IF l_status = 'CHANGED' then
37
38 RETURN TRUE;
39
40 ELSE
41
42 RETURN FALSE;
43
44 End If;
45
46 END check_duplicate_start_date;
47
48
49 FUNCTION Check_Duplicate_End_Date(p_qualifier_grouping_no IN number,
50 p_end_date IN date,
51 p_qualifier_rule_id IN number,
52 p_qualifier_id IN number)RETURN BOOLEAN IS
53 CURSOR c_QualifierEndDate(p_qualifier_grouping_no number,
54 p_end_date date,
55 p_qualifier_rule_id number,
56 p_qualifier_id number ) is
57 SELECT 'CHANGED'
58 FROM QP_QUALIFIERS
59 WHERE qualifier_rule_id = p_qualifier_rule_id
60 AND qualifier_grouping_no = p_qualifier_grouping_no
61 AND end_date_active <> p_end_date
62 AND qualifier_id <> p_qualifier_id;
63
64
65 l_status VARCHAR2(30);
66
67 BEGIN
68
69 OPEN c_QualifierEndDate(p_qualifier_grouping_no,
70 p_end_date,
71 p_qualifier_rule_id,
72 p_qualifier_id);
73 FETCH c_QualifierEndDate INTO l_status;
74 CLOSE c_QualifierEndDate;
75
76 IF l_status = 'CHANGED' then
77
78 RETURN TRUE;
79
80 ELSE
81
82 RETURN FALSE;
83
84 End If;
85
86 END check_duplicate_end_date;
87
88
89 -- Procedure Entity
90
91 PROCEDURE Entity
92 ( x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
93 , p_QUALIFIERS_rec IN QP_Qualifier_Rules_PUB.Qualifiers_Rec_Type
94 , p_old_QUALIFIERS_rec IN QP_Qualifier_Rules_PUB.Qualifiers_Rec_Type :=
95 QP_Qualifier_Rules_PUB.G_MISS_QUALIFIERS_REC
96 )
97 IS
98 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
99 l_qualifier_id NUMBER;
100 l_qualifier_rule_id NUMBER;
101 l_comparison_operator_code VARCHAR2(30);
102 l_error_code NUMBER;
103 l_precedence NUMBER;
104 l_datatype FND_FLEX_VALUE_SETS.Format_type%TYPE;
105 l_value_error VARCHAR2(1);
106 l_context_error VARCHAR2(1);
107 l_attribute_error VARCHAR2(1);
108 l_list_header_id NUMBER;
109 l_list_line_id NUMBER;
110 l_gsa_indicator VARCHAR2(1);
111 l_customer_gsa_indicator VARCHAR2(1);
112 l_list_type_code VARCHAR2(30) := '';
113
114 l_context_type VARCHAR2(30);
115 l_sourcing_enabled VARCHAR2(1);
116 l_sourcing_status VARCHAR2(1);
117 l_sourcing_method VARCHAR2(30);
118
119 l_modifier_level_code VARCHAR2(30);
120 l_segment_level VARCHAR2(30);
121 x_attribute_code VARCHAR2(80);
122 x_segment_name VARCHAR2(30);
123
124 -- start 2091362
125 p_attr_count number;
126 p_product_attribute_context VARCHAR2(30);
127 p_product_attribute VARCHAR2(240);
128 p_product_attr_value VARCHAR2(240);
129 l_qp_status VARCHAR2(1);
130 l_start_date_active DATE;
131 l_end_date_active DATE;
132 l_list_header_id_1 NUMBER;
133 -- end bug2091362
134
135 BEGIN
136
137 -- Check whether Source System Code matches
138 -- mkarya for bug 1728764, Prevent update of Trade Management Data in QP
139 QP_UTIL.Check_Source_System_Code
140 (p_list_header_id => p_QUALIFIERS_rec.list_header_id,
141 p_list_line_id => p_QUALIFIERS_rec.list_line_id,
142 x_return_status => l_return_status
143 );
144
145 -- Check required attributes.
146
147
148 --dbms_output.put_line('entity validation for qualifier id');
149 oe_debug_pub.add('entity validation for qualifier id');
150 oe_debug_pub.add('entity validation for qualifier id'||p_QUALIFIERS_rec.qualifier_id);
151
152
153
154
155 IF p_QUALIFIERS_rec.qualifier_id IS NULL
156 THEN
157
158 l_return_status := FND_API.G_RET_STS_ERROR;
159
160 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
161 THEN
162
163 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
164 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Qualifier Id');
165 OE_MSG_PUB.Add;
166
167 END IF;
168
169 END IF;
170
171 --dbms_output.put_line('entity validation for qualifier id status '|| l_return_status);
172 oe_debug_pub.add('entity null validation for qualifier id status '|| l_return_status);
173 --dbms_output.put_line('entity validation for qualifier grouping no');
174 oe_debug_pub.add('entity validation for qualifier grouping no');
175
176
177
178
179 --
180 -- Check rest of required attributes here.
181 --
182
183
184
185 IF p_QUALIFIERS_rec.qualifier_grouping_no IS NULL
186 THEN
187
188 l_return_status := FND_API.G_RET_STS_ERROR;
189
190 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
191 THEN
192
193 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
194 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('QUALIFIER_GROUPING_NO')); -- Fix For Bug-1974413
195 OE_MSG_PUB.Add;
196
197 END IF;
198
199 END IF;
200
201
202 --oe_debug_pub.add('entity null validation for qualifier group id status '|| l_return_status);
203 --dbms_output.put_line('entity validation for qualifier group id status '|| l_return_status);
204
205 --dbms_output.put_line('entity validation for qualifier attr_value');
206
207 --oe_debug_pub.add('entity validation for attr_value with value as '
208 -- || p_QUALIFIERS_rec.qualifier_attr_value);
209
210
211 -- qualifier_attr_value can be null when the operator is
212 --'Between'.This is to proivde 'less than ' functionality
213 -- using 'between ' operator.
214 --fix for the bug 1253121.
215
216 IF p_QUALIFIERS_rec.comparison_operator_code <> 'BETWEEN' AND
217 p_QUALIFIERS_rec.qualifier_attr_value IS NULL
218 THEN
219
220 l_return_status := FND_API.G_RET_STS_ERROR;
221
222 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
223 THEN
224
225 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
226 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('QUALIFIER_ATTR_VALUE')); -- Fix FOr Bug-1974413
227 OE_MSG_PUB.Add;
228
229 END IF;
230
231 END IF;
232
233
234
235
236 --dbms_output.put_line('entity validation for qualifier attr value '|| l_return_status);
237 oe_debug_pub.add('entity validation for qualifier attr value '|| l_return_status);
238
239
240 --dbms_output.put_line('entity validation for qualifier attribute');
241
242
243
244
245 IF p_QUALIFIERS_rec.qualifier_attribute IS NULL
246 THEN
247
248 l_return_status := FND_API.G_RET_STS_ERROR;
249
250 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
251 THEN
252
253 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
254 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Attribute');
255 OE_MSG_PUB.Add;
256
257 END IF;
258
259 END IF;
260
261
262
263 --dbms_output.put_line('entity validation for qualifier attr '|| l_return_status);
264 oe_debug_pub.add('entity null validation for qualifier attr '|| l_return_status);
265
266
267
268 --dbms_output.put_line('entity validation for qualifier context');
269
270
271
272 IF p_QUALIFIERS_rec.qualifier_context IS NULL
273 THEN
274
275 l_return_status := FND_API.G_RET_STS_ERROR;
276
277 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
278 THEN
279
280 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
281 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('QUALIFIER_CONTEXT')); -- Fix For Bug-1974413
282 OE_MSG_PUB.Add;
283
284 END IF;
285
286 END IF;
287
288
289 --dbms_output.put_line('entity null validation for qualifier context '|| l_return_status);
290 oe_debug_pub.add('entity validation for qualifier context '|| l_return_status);
291 --dbms_output.put_line('entity validation for comparison operator ');
292
293
294
295
296 IF p_QUALIFIERS_rec.comparison_operator_code IS NULL
297
298 THEN
299
300 l_return_status := FND_API.G_RET_STS_ERROR;
301
302 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
303 THEN
304
305 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
306 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('COMPARISON_OPERATOR_CODE')); -- Fix For Bug-1974413
307 OE_MSG_PUB.Add;
308
309 END IF;
310
311 END IF;
312
313
314
315
316 --dbms_output.put_line('entity validation for compari '|| l_return_status);
317 oe_debug_pub.add('entity validation for compari '|| l_return_status);
318 --dbms_output.put_line('entity validation for excluder flag operator ');
319
320 /* Added for bug2368511 */
321
322 IF p_QUALIFIERS_rec.list_line_id IS NULL
323
324 THEN
325
326 l_return_status := FND_API.G_RET_STS_ERROR;
327
328 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
329 THEN
330
331 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
332 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','List Line Id');
333 OE_MSG_PUB.Add;
334
335 END IF;
336
337 END IF;
338
339 oe_debug_pub.add('entity validation for List Line Id '|| l_return_status);
340
341
342 IF p_QUALIFIERS_rec.excluder_flag IS NULL
343 THEN
344
345 l_return_status := FND_API.G_RET_STS_ERROR;
346
347 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
348 THEN
349
350 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
351 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('EXCLUDER_FLAG')); -- FIx For Bug-1974413
352 OE_MSG_PUB.Add;
353
354 END IF;
355
356 END IF;
357
358
359
360
361 --dbms_output.put_line('entity validation for excluder '|| l_return_status);
362 oe_debug_pub.add('entity validation for excluder '|| l_return_status);
363 -- Return Error if a required attribute is missing.
364
365
366
367 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
368
369 RAISE FND_API.G_EXC_ERROR;
370
371 END IF;
372
373 --
374 -- Check conditionally required attributes here.
375 --
376
377
378 --
379 -- Validate attribute dependencies here.
380 --
381 IF p_QUALIFIERS_rec.list_header_id IS NOT NULL
382 THEN
383 BEGIN
384 select list_type_code
385 into l_list_type_code
386 from qp_list_headers_b
387 where list_header_id = p_QUALIFIERS_rec.list_header_id;
388 EXCEPTION
389 WHEN OTHERS THEN
390 l_list_type_code := '';
391 END;
392 END IF;
393
394 IF p_QUALIFIERS_rec.qualifier_context = 'VOLUME' AND
395 p_QUALIFIERS_rec.qualifier_attribute = 'QUALIFIER_ATTRIBUTE10' AND
396 l_list_type_code in ('PRL', 'AGR')
397 -- Qualifier Attr 'Order Amount' under the 'Volume' Qualfier context
398 THEN
399 l_return_status := FND_API.G_RET_STS_ERROR;
400
401 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
402 THEN
403 FND_MESSAGE.SET_NAME('QP','QP_INVALID_ATTRIBUTE');
404 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Qualifier Attribute');
405 OE_MSG_PUB.Add;
406 END IF;
407 END IF;
408
409 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
410 RAISE FND_API.G_EXC_ERROR;
411 END IF;
412
413 -- Validate start_date active and end_date active
414 --end date active must be greater than start date active
415
416 --dbms_output.put_line('entity validation for start-date ');
417
418
419
420 /*IF nvl(p_QUALIFIERS_rec.end_date_active,
421 TO_DATE('01-01-1999','MM-DD-YYYY')) <
422 nvl(p_QUALIFIERS_rec.start_date_active,
423 TO_DATE('01-01-1955','MM-DD-YYYY'))*/
424 IF nvl(p_QUALIFIERS_rec.end_date_active,
425 p_QUALIFIERS_rec.start_date_active ) <
426 nvl(p_QUALIFIERS_rec.start_date_active,
427 p_QUALIFIERS_rec.end_date_active)
428 THEN
429 l_return_status := FND_API.G_RET_STS_ERROR;
430
431 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
432 THEN
433
434 FND_MESSAGE.SET_NAME('QP','QP_STRT_DATE_BFR_END_DATE');
435 --FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Start Date active');
436 OE_MSG_PUB.Add;
437
438 END IF;
439
440 END IF;
441
442
443 --dbms_output.put_line('entity validation for start_date '||l_return_status);
444 oe_debug_pub.add('entity validation for start_date '||l_return_status);
445 --dbms_output.put_line('entity validation for value to ');
446
447
448
449 --Validate Qualifier_attr_value_to and Qualifier_attr_value
450 -- if comparison operator code is BETWEEN then both
451 --qualifier attr_value _to or qualifier_attr_value are required
452 -- for all other operators ,qualifier_attr_value_to must be null.
453
454 IF UPPER(p_QUALIFIERS_rec.comparison_operator_code) = 'BETWEEN' AND
455 (p_QUALIFIERS_rec.qualifier_attr_value_to IS NULL OR
456 p_QUALIFIERS_rec.qualifier_attr_value IS NULL)
457 THEN
458 l_return_status := FND_API.G_RET_STS_ERROR;
459
460 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
461 THEN
462
463 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED' );
464 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('QUALIFIER_ATTR_VALUE_TO')||'/'||
465 QP_PRC_UTIL.Get_Attribute_Name('QUALIFIER_ATTR_VALUE')); -- Fix For Bug-1974413
466 OE_MSG_PUB.Add;
467
468 END IF;
469
470 END IF;
471
472
473 --validation for canonical form for value to
474
475 l_error_code:=QP_UTIL.validate_num_date(p_QUALIFIERS_rec.qualifier_datatype,
476 p_QUALIFIERS_rec.qualifier_attr_value_to);
477 IF l_error_code <> 0 THEN
478
479 l_return_status := FND_API.G_RET_STS_ERROR;
480
481 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
482 THEN
483 FND_MESSAGE.SET_NAME('QP','QP_INVALID_ATTRIBUTE');
484 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Value To ');
485 OE_MSG_PUB.Add;
486 END IF;
487
488 END IF;
489
490 -- End of validation for canonical form on value to
491
492
493
494 --dbms_output.put_line('entity validation for value to '||l_return_status);
495 oe_debug_pub.add('entity validation for value to '||l_return_status);
496
497
498
499 --Other Validations
500
501
502 --validate for start_date active to the same within a group for a qualifier rule id
503
504 If Check_Duplicate_start_date(p_QUALIFIERS_rec.qualifier_grouping_no,
505 p_QUALIFIERS_rec.start_date_active,
506 p_QUALIFIERS_rec.qualifier_rule_id,
507 p_QUALIFIERS_rec.qualifier_id) THEN
508 l_return_status := FND_API.G_RET_STS_ERROR;
509
510 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
511 Then
512 FND_MESSAGE.SET_NAME('QP','QP_DATE_WITHIN_GRPNO_REQ_SAME');
513 FND_MESSAGE.SET_TOKEN('ATTRIBUTE', 'Start Date Active');
514 OE_MSG_PUB.Add;
515 END IF;
516 END IF;
517
518
519 If Check_Duplicate_end_date(p_QUALIFIERS_rec.qualifier_grouping_no,
520 p_QUALIFIERS_rec.end_date_active,
521 p_QUALIFIERS_rec.qualifier_rule_id,
522 p_QUALIFIERS_rec.qualifier_id) THEN
523 l_return_status := FND_API.G_RET_STS_ERROR;
524
525 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
526 Then
527 FND_MESSAGE.SET_NAME('QP','QP_DATE_WITHIN_GRPNO_REQ_SAME');
528 FND_MESSAGE.SET_TOKEN('ATTRIBUTE', 'End Date Active');
529 OE_MSG_PUB.Add;
530 END IF;
531 END IF;
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549 --Validate Qualifier Id for duplicate values.
550
551
552 --dbms_output.put_line('entity validation for duplicate id' ||p_QUALIFIERS_rec.qualifier_id);
553
554
555
556 /* SELECT qualifier_id
557 INTO l_qualifier_id
558 FROM QP_QUALIFIERS
559 WHERE qualifier_id = p_QUALIFIERS_rec.qualifier_id;
560
561 If SQL%NOTFOUND
562 Then
563 null;
564 Else
565 l_return_status := FND_API.G_RET_STS_ERROR;
566 --dbms_output.put_line('entity validation for duplicaet id '||l_return_status);
567
568 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
569 THEN
570
571 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED' );
572 -- FND_MESSAGE.SET_NAME('QP','QP_DUPLICATE_ATTRIBUTE');
573 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Qualifier Id');
574 OE_MSG_PUB.Add;
575 END IF;
576
577 End If;*/
578
579 --dbms_output.put_line('entity validation for duplicaet id '||l_return_status);
580 oe_debug_pub.add('entity validation for duplicaet id '||l_return_status);
581
582
583
584
585 --Validate Comparison Operator Code for Valid Values.
586
587 --dbms_output.put_line('entity validation for compar 2 ');
588
589
590
591 SELECT lookup_code
592 INTO l_comparison_operator_code
593 FROM QP_LOOKUPS
594 WHERE LOOKUP_TYPE = 'COMPARISON_OPERATOR'
595 AND LOOKUP_CODE = UPPER(p_QUALIFIERS_rec.comparison_operator_code);
596
597 If SQL%NOTFOUND
598 Then
599
600 l_return_status := FND_API.G_RET_STS_ERROR;
601
602 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
603 THEN
604
605 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED' );
606 --FND_MESSAGE.SET_NAME('QP','QP_INVALID_ATTRIBUTE');
607 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('COMPARISON_OPERATOR_CODE')); -- Fix For Bug-1974413
608 OE_MSG_PUB.Add;
609 END IF;
610
611 End If;
612
613
614 --dbms_output.put_line('entity validation for compa2 '||l_return_status);
615 oe_debug_pub.add('entity validation for compa2 '||l_return_status);
616
617
618
619 --Validate Qualifier_Context , Qualifier_attribute ,Qualifier_Attr Value
620 --qualifier_datatype,qualifier_precedence
621
622
623 --dbms_output.put_line('for context ,attribute,value,datatype,precedence');
624
625 if (p_QUALIFIERS_rec.qualifier_datatype = 'X' and p_QUALIFIERS_rec.comparison_operator_code = 'BETWEEN' ) THEN
626
627 IF fnd_date.canonical_to_date(p_QUALIFIERS_rec.qualifier_attr_value_to) <
628 fnd_date.canonical_to_date(p_QUALIFIERS_rec.qualifier_attr_value)
629 THEN
630
631 l_return_status := FND_API.G_RET_STS_ERROR;
632
633 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
634 THEN
635 FND_MESSAGE.SET_NAME('QP','QP_STRT_DATE_BFR_END_DATE');
636 OE_MSG_PUB.Add;
637
638 END IF;
639
640 END IF;
641
642 END IF;
643
644 QP_UTIL.validate_qp_flexfield(flexfield_name =>'QP_ATTR_DEFNS_QUALIFIER'
645 ,context =>p_QUALIFIERS_rec.qualifier_context
646 ,attribute =>p_QUALIFIERS_rec.qualifier_attribute
647 ,value =>p_QUALIFIERS_rec.qualifier_attr_value
648 ,application_short_name => 'QP'
649 ,context_flag =>l_context_error
650 ,attribute_flag =>l_attribute_error
651 ,value_flag =>l_value_error
652 ,datatype =>l_datatype
653 ,precedence =>l_precedence
654 ,error_code =>l_error_code
655 );
656
657 If (l_context_error = 'N' AND l_error_code = 7) -- invalid context
658 Then
659 l_return_status := FND_API.G_RET_STS_ERROR;
660
661 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
662 THEN
663
664 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED' );
665 --FND_MESSAGE.SET_NAME('QP','QP_INVALID_ATTRIBUTE');
666 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('QUALIFIER_CONTEXT')); -- Fix For Bug-1974413
667 OE_MSG_PUB.Add;
668 END IF;
669
670 End If;
671
672
673 --dbms_output.put_line('for context '||l_return_status);
674
675 --dbms_output.put_line('for context ,attribute,value,datatype,precedence');
676
677
678
679 If l_attribute_error = 'N' AND l_error_code = 8 -- invalid Attribute
680 Then
681 l_return_status := FND_API.G_RET_STS_ERROR;
682
683 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
684 THEN
685
686 FND_MESSAGE.SET_NAME('QP','QP_INVALID_ATTRIBUTE');
687 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',' Attribute');
688 OE_MSG_PUB.Add;
689 END IF;
690
691 End If;
692
693
694 --dbms_output.put_line('for attributr '||l_return_status);
695 oe_debug_pub.add('for context '||l_return_status);
696
697
698 --- validate qualifier_attr_value only if comparison operator is
699 -- '='
700
701 IF p_QUALIFIERS_rec.comparison_operator_code = '=' Then
702
703 If l_value_error = 'N' AND l_error_code = 9 -- invalid value
704 Then
705 l_return_status := FND_API.G_RET_STS_ERROR;
706
707 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
708 THEN
709
710 FND_MESSAGE.SET_NAME('QP','QP_INVALID_ATTRIBUTE');
711 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',' Value From ');
712 --OE_MSG_PUB.Add;
713 OE_MSG_PUB.Add;
714 END IF;
715 End If;
716 END IF;
717
718 --- Validation for GSA Discounts - Customer must be GSA
719
720 IF p_QUALIFIERS_rec.qualifier_context = 'CUSTOMER'
721 AND p_QUALIFIERS_rec.qualifier_attribute = 'QUALIFIER_ATTRIBUTE2'
722 AND p_QUALIFIERS_rec.list_header_id IS NOT NULL
723 THEN
724
725 oe_debug_pub.add('attcching');
726 BEGIN
727
728 select gsa_indicator
729 into l_gsa_indicator
730 from qp_list_headers_b
731 where list_header_id = p_QUALIFIERS_rec.list_header_id;
732
733 IF nvl(l_gsa_indicator,'N') = 'Y'
734 THEN
735
736 oe_debug_pub.add('GSA = Y');
737 select decode(party.party_type,'ORGANIZATION',party.gsa_indicator_flag,'N')
738 into l_customer_gsa_indicator
739 from hz_cust_accounts cust_acct,hz_parties party
740 where cust_acct.party_id = party.party_id and
741 cust_acct.cust_account_id = to_number(p_QUALIFIERS_rec.qualifier_attr_value);
742
743 IF SQL%NOTFOUND
744 THEN
745
746 oe_debug_pub.add('customer GSA not found');
747 l_return_status := FND_API.G_RET_STS_ERROR;
748
749 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
750 THEN
751
752 FND_MESSAGE.SET_NAME('QP','QP_INVALID_GSA_CUSTOMER');
753 OE_MSG_PUB.Add;
754
755 END IF;
756
757 ELSIF nvl(l_customer_gsa_indicator,'N') <> 'Y'
758 THEN
759
760 oe_debug_pub.add('customer GSA = '||l_customer_gsa_indicator);
761 l_return_status := FND_API.G_RET_STS_ERROR;
762
763 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
764 THEN
765
766 FND_MESSAGE.SET_NAME('QP','QP_INVALID_GSA_CUSTOMER');
767 OE_MSG_PUB.Add;
768
769 END IF;
770
771 END IF;
772
773 END IF;
774
775 EXCEPTION
776 when no_data_found then
777 oe_debug_pub.add('exception GSA indicator in header is null');
778 null;
779
780 END;
781
782 END IF;
783
784 --dbms_output.put_line('for value,'||l_return_status);
785 oe_debug_pub.add('for value,'||l_return_status);
786
787 --dbms_output.put_line('org precede '||p_QUALIFIERS_rec.qualifier_precedence);
788 --dbms_output.put_line('n precede '||l_precedence);
789 oe_debug_pub.add('org precede '||p_QUALIFIERS_rec.qualifier_precedence);
790 oe_debug_pub.add('n precede '||l_precedence);
791
792 /*If p_QUALIFIERS_rec.qualifier_precedence <> l_precedence --- invalid precedence
793 Then
794 l_return_status := FND_API.G_RET_STS_ERROR;
795
796 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
797 THEN
798
799 --FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED' );
800 FND_MESSAGE.SET_NAME('QP','QP_INVALID_ATTRIBUTE');
801 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('QUALIFIER_PRECEDENCE')); -- Fix For Bug-1974413
802 OE_MSG_PUB.Add;
803 END IF;
804
805
806 End If;*/
807
808
809
810 --dbms_output.put_line('for precedence'||l_return_status);
811
812
813
814 If p_QUALIFIERS_rec.qualifier_datatype <> l_datatype --- invalid qualifier datatype
815 Then
816 l_return_status := FND_API.G_RET_STS_ERROR;
817
818 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
819 THEN
820 --FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED' );
821 FND_MESSAGE.SET_NAME('QP','QP_INVALID_ATTRIBUTE');
822 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Qualifier Datatype ');
823 OE_MSG_PUB.Add;
824 END IF;
825
826 End If;
827
828
829
830 --dbms_output.put_line('for datatype,'||l_return_status);
831 oe_debug_pub.add('qualifier datatype,'||l_return_status);
832
833
834
835 --validation for canonical form
836
837 l_error_code:=QP_UTIL.validate_num_date(p_QUALIFIERS_rec.qualifier_datatype,
838 p_QUALIFIERS_rec.qualifier_attr_value);
839 IF l_error_code <> 0 THEN
840
841 l_return_status := FND_API.G_RET_STS_ERROR;
842
843 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
844 THEN
845 FND_MESSAGE.SET_NAME('QP','QP_INVALID_ATTRIBUTE');
846 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Value From ');
847 OE_MSG_PUB.Add;
848 END IF;
849
850 END IF;
851 --dbms_output.put_line('for cano of value from ,'||l_return_status);
852
853 -- End of validation for canonical form on value from
854
855
856 -- Validate qualifier rule id when not null
857
858
859
860 /* IF p_QUALIFIERS_rec.qualifier_rule_id IS NOT NULL
861 THEN
862 SELECT qualifier_rule_id
863 INTO l_qualifier_rule_id
864 FROM QP_QUALIFIER_RULES
865 WHERE qualifier_rule_id = p_QUALIFIERS_rec.qualifier_rule_id;
866
867 If SQL%NOTFOUND
868 Then
869 l_return_status := FND_API.G_RET_STS_ERROR;
870
871 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
872 THEN
873 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED' );
874 -- FND_MESSAGE.SET_NAME('QP','QP_INVALID_ATTRIBUTE');
875 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Qualifier qualifier rule id ');
876 OE_MSG_PUB.Add;
877 END IF;
878 End If;
879 END IF;*/
880
881
882
883
884 -- Validate created from rule id when not null
885
886 /* IF p_QUALIFIERS_rec.created_from_rule_id IS NOT NULL
887 THEN
888 SELECT qualifier_rule_id
889 INTO l_qualifier_rule_id
890 FROM QP_QUALIFIER_RULES
891 WHERE qualifier_rule_id = p_QUALIFIERS_rec.created_from_rule_id;
892
893 If SQL%NOTFOUND
894 Then
895 l_return_status := FND_API.G_RET_STS_ERROR;
896
897 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
898 THEN
899 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED' );
900 --FND_MESSAGE.SET_NAME('QP','QP_INVALID_ATTRIBUTE');
901 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','created from rule id ');
902 OE_MSG_PUB.Add;
903 END IF;
904 End If;
905 END IF;*/
906
907
908
909 -- Validate list header id when not null
910
911 /* IF p_QUALIFIERS_rec.list_header_id IS NOT NULL
912 THEN
913 SELECT list_header_id
914 INTO l_list_header_id
915 FROM QP_LIST_HEADERS_B
916 WHERE list_header_id = p_QUALIFIERS_rec.list_header_id;
917
918 If SQL%NOTFOUND
919 Then
920 l_return_status := FND_API.G_RET_STS_ERROR;
921
922 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
923 THEN
924 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED' );
925 --FND_MESSAGE.SET_NAME('QP','QP_INVALID_ATTRIBUTE');
926 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','List Header id ');
927 OE_MSG_PUB.Add;
928 END IF;
929 End If;
930 END IF; */
931
932
933
934 -- Validate list line id when not null
935
936 /* IF p_QUALIFIERS_rec.list_line_id IS NOT NULL
937 THEN
938 SELECT list_line_id
939 INTO l_list_line_id
940 FROM QP_LIST_LINES
941 WHERE list_line_id = p_QUALIFIERS_rec.list_line_id;
942
943 If SQL%NOTFOUND
944 Then
945 l_return_status := FND_API.G_RET_STS_ERROR;
946
947 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
948 THEN
949 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED' );
950 --FND_MESSAGE.SET_NAME('QP','QP_INVALID_ATTRIBUTE');
951 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','List Line id ');
952 OE_MSG_PUB.Add;
953 END IF;
954 End If;
955 END IF; */
956
957
958 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
959
960 RAISE FND_API.G_EXC_ERROR;
961
962 END IF;
963
964 --- start bug2091362
965 l_qp_status := QP_UTIL.GET_QP_STATUS;
966
967 IF (fnd_profile.value('QP_ALLOW_DUPLICATE_MODIFIERS') <> 'Y'
968 and p_qualifiers_rec.list_line_id <> -1
969 and l_qp_status = 'S') THEN
970
971 select start_date_active, end_date_active , list_header_id
972 into l_start_date_active, l_end_date_active, l_list_header_id_1
973 from qp_list_lines
974 where list_line_id = p_qualifiers_rec.list_line_id;
975
976 OE_Debug_Pub.add ( 'Value Set 1' || l_start_date_active || l_end_date_active );
977
978 -- oe_debug_pub.add('about to delete a request to check duplicate modifier list lines without product attribute');
979
980 QP_delayed_requests_pvt.Delete_Request
981 ( p_entity_code => QP_GLOBALS.G_ENTITY_ALL
982 , p_entity_id => p_qualifiers_rec.list_line_id
983 , p_request_Type => QP_GLOBALS.G_DUPLICATE_MODIFIER_LINES
984 , x_return_status => l_return_status
985 );
986
987 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
988
989 oe_debug_pub.add('failed in logging a delayed request ');
990
991 RAISE FND_API.G_EXC_ERROR;
992
993 END IF;
994
995 /* After deleting request if any log a new request to check duplicate modifier list lines with product attribute */
996
997 oe_debug_pub.add('about to log a request to check duplicate modifier list lines with product attribute');
998
999 select count(*) into p_attr_count
1000 from qp_pricing_attributes
1001 where list_line_id = p_qualifiers_rec.list_line_id;
1002
1003 IF p_attr_count = 0 THEN
1004
1005 QP_DELAYED_REQUESTS_PVT.Log_Request
1006 ( p_entity_code => QP_GLOBALS.G_ENTITY_ALL
1007 , p_entity_id => p_qualifiers_rec.list_line_id
1008 , p_requesting_entity_code => QP_GLOBALS.G_ENTITY_ALL
1009 , p_requesting_entity_id => p_qualifiers_rec.list_line_id
1010 , p_request_type => QP_GLOBALS.G_DUPLICATE_MODIFIER_LINES
1011 , p_param1 => l_list_header_id_1
1012 , p_param2 => fnd_date.date_to_canonical(l_start_date_active) --2752265
1013 , p_param3 => fnd_date.date_to_canonical(l_end_date_active) --2752265
1014 , p_param4 => NULL
1015 , p_param5 => NULL
1016 , p_param6 => NULL
1017 , x_return_status => l_return_status
1018 );
1019
1020 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1021
1022 oe_debug_pub.add('failed in logging a delayed request ');
1023
1024 RAISE FND_API.G_EXC_ERROR;
1025
1026 END IF;
1027
1028 ELSE
1029
1030 Select product_attribute_context, product_attribute, product_attr_value
1031 into p_product_attribute_context, p_product_attribute, p_product_attr_value
1032 from qp_pricing_attributes
1033 where list_line_id = p_qualifiers_rec.list_line_id
1034 and rownum < 2;
1035
1036 QP_DELAYED_REQUESTS_PVT.Log_Request
1037 ( p_entity_code => QP_GLOBALS.G_ENTITY_ALL
1038 , p_entity_id => p_qualifiers_rec.list_line_id
1039 , p_requesting_entity_code => QP_GLOBALS.G_ENTITY_ALL
1040 , p_requesting_entity_id => p_qualifiers_rec.list_line_id
1041 , p_request_type => QP_GLOBALS.G_DUPLICATE_MODIFIER_LINES
1042 , p_param1 => l_list_header_id_1
1043 , p_param2 => fnd_date.date_to_canonical(l_start_date_active) --2752265
1044 , p_param3 => fnd_date.date_to_canonical(l_end_date_active) --2752265
1045 , p_param4 => p_product_attribute_context
1046 , p_param5 => p_product_attribute
1047 , p_param6 => p_product_attr_value
1048 , x_return_status => l_return_status
1049 );
1050
1051 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1052
1053 oe_debug_pub.add('failed in logging a delayed request for duplicate modifiers');
1054
1055 RAISE FND_API.G_EXC_ERROR;
1056
1057 END IF;
1058 END IF;
1059 oe_debug_pub.add('after logging delayed request from qualfiers ');
1060 END IF;
1061
1062
1063
1064 --- end bug2091362
1065
1066
1067 --Raise a warning if the Qualifier Attribute being used in setup
1068 --has a sourcing method of 'ATTRIBUTE MAPPING' but is not sourcing-enabled
1069 --or if its sourcing_status is not 'Y', i.e., the build sourcing conc.
1070 --program has to be run.
1071
1072 IF qp_util.attrmgr_installed = 'Y' THEN
1073
1074 IF p_Qualifiers_rec.qualifier_context IS NOT NULL AND
1075 p_Qualifiers_rec.qualifier_attribute IS NOT NULL
1076 THEN
1077 QP_UTIL.Get_Context_Type('QP_ATTR_DEFNS_QUALIFIER',
1078 p_Qualifiers_rec.qualifier_context,
1079 l_context_type,
1080 l_error_code);
1081
1082 IF l_error_code = 0 THEN --successfully returned context_type
1083
1084 QP_UTIL.Get_Sourcing_Info(l_context_type,
1085 p_Qualifiers_rec.qualifier_context,
1086 p_Qualifiers_rec.qualifier_attribute,
1087 l_sourcing_enabled,
1088 l_sourcing_status,
1089 l_sourcing_method);
1090
1091 IF l_sourcing_method = 'ATTRIBUTE MAPPING' THEN
1092
1093 IF l_sourcing_enabled <> 'Y' THEN
1094
1095 FND_MESSAGE.SET_NAME('QP','QP_ENABLE_SOURCING');
1096 FND_MESSAGE.SET_TOKEN('CONTEXT',
1097 p_Qualifiers_rec.qualifier_context);
1098 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
1099 p_Qualifiers_rec.qualifier_attribute);
1100 OE_MSG_PUB.Add;
1101
1102 END IF;
1103
1104 IF l_sourcing_status <> 'Y' THEN
1105
1106 IF NOT (
1107 p_qualifiers_rec.qualifier_context= 'MODLIST' AND
1108 p_qualifiers_rec.qualifier_attribute = 'QUALIFIER_ATTRIBUTE10')
1109 THEN
1110 FND_MESSAGE.SET_NAME('QP','QP_BUILD_SOURCING_RULES');
1111 FND_MESSAGE.SET_TOKEN('CONTEXT',
1112 p_Qualifiers_rec.qualifier_context);
1113 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
1114 p_Qualifiers_rec.qualifier_attribute);
1115 OE_MSG_PUB.Add;
1116 END IF;
1117
1118 END IF;
1119
1120 END IF; --If sourcing_method = 'ATTRIBUTE MAPPING'
1121
1122 END IF; --l_error_code = 0
1123
1124 END IF;--If qualifier_context and qualifier_attribute are NOT NULL
1125
1126 -- Giri, validate that qualifiers attached to Price Lists are or type LINE/BOTH
1127 IF p_qualifiers_rec.list_header_id is not null and
1128 l_list_type_code in ('PRL', 'AGR') THEN
1129 IF p_Qualifiers_rec.qualifier_context IS NOT NULL AND
1130 p_Qualifiers_rec.qualifier_attribute IS NOT NULL THEN
1131 l_segment_level := qp_util.get_segment_level(p_qualifiers_rec.list_header_id
1132 ,p_Qualifiers_rec.qualifier_context
1133 ,p_Qualifiers_rec.qualifier_attribute
1134 );
1135 IF l_segment_level = 'ORDER' THEN
1136 l_return_status := FND_API.G_RET_STS_ERROR;
1137 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR) THEN
1138 qp_util. Get_Attribute_Code(p_FlexField_Name => 'QP_ATTR_DEFNS_QUALIFIER',
1139 p_Context_Name => p_Qualifiers_rec.qualifier_context,
1140 p_attribute => p_Qualifiers_rec.qualifier_attribute,
1141 x_attribute_code => x_attribute_code,
1142 x_segment_name => x_segment_name);
1143 -- The level of attribute (?) ? is not compatible for Price Lists
1144 FND_MESSAGE.SET_NAME('QP','QP_SEGMENT_NOT_ALLOWED_FOR_PL');
1145 FND_MESSAGE.SET_TOKEN('ATTRIBUTE', x_attribute_code);
1146 FND_MESSAGE.SET_TOKEN('SEGMENT_LEVEL', l_segment_level);
1147 OE_MSG_PUB.Add;
1148 END IF;
1149 END IF;
1150 END IF;
1151 END IF;
1152
1153 -- mkarya, validate that line level qualifiers attached to modifier match the modifier level
1154 -- Changes for attribute manager
1155
1156 if p_qualifiers_rec.list_header_id is not null and
1157 p_qualifiers_rec.list_line_id <> -1 and
1158 l_list_type_code not in ('PRL', 'AGR') then
1159
1160 IF p_Qualifiers_rec.qualifier_context IS NOT NULL AND
1161 p_Qualifiers_rec.qualifier_attribute IS NOT NULL
1162 THEN
1163 select modifier_level_code
1164 into l_modifier_level_code
1165 from qp_list_lines
1166 where list_header_id = p_qualifiers_rec.list_header_id
1167 and list_line_id = p_qualifiers_rec.list_line_id;
1168
1169 l_segment_level := qp_util.get_segment_level(p_qualifiers_rec.list_header_id
1170 ,p_Qualifiers_rec.qualifier_context
1171 ,p_Qualifiers_rec.qualifier_attribute
1172 );
1173 if ((l_modifier_level_code in ('LINE', 'LINEGROUP') and l_segment_level = 'ORDER')
1174 OR
1175 (l_modifier_level_code = 'ORDER' and l_segment_level = 'LINE')) then
1176
1177 l_return_status := FND_API.G_RET_STS_ERROR;
1178 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR) THEN
1179 qp_util. Get_Attribute_Code(p_FlexField_Name => 'QP_ATTR_DEFNS_QUALIFIER',
1180 p_Context_Name => p_Qualifiers_rec.qualifier_context,
1181 p_attribute => p_Qualifiers_rec.qualifier_attribute,
1182 x_attribute_code => x_attribute_code,
1183 x_segment_name => x_segment_name);
1184 -- The level of attribute (?) ? is not compatible with modifier level ?.
1185 FND_MESSAGE.SET_NAME('QP','QP_SEGMENT_NOT_ALLOWED');
1186 FND_MESSAGE.SET_TOKEN('ATTRIBUTE', x_attribute_code);
1187 FND_MESSAGE.SET_TOKEN('SEGMENT_LEVEL', l_segment_level);
1188 FND_MESSAGE.SET_TOKEN('MODIFIER_LEVEL', l_modifier_level_code);
1189 OE_MSG_PUB.Add;
1190 END IF; -- check_msg_level
1191
1192 end if; -- compare modifier_level and segment_level
1193
1194 END IF;--If qualifier_context and qualifier_attribute are NOT NULL
1195
1196 end if; -- if line level qualifier attached to modifier
1197
1198 END IF; -- attribute manager installed
1199
1200 -- Done validating entity
1201
1202 x_return_status := l_return_status;
1203
1204 EXCEPTION
1205
1206 WHEN FND_API.G_EXC_ERROR THEN
1207
1208 x_return_status := FND_API.G_RET_STS_ERROR;
1209
1210 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1211
1212 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1213
1214 WHEN OTHERS THEN
1215
1216 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1217
1218 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1219 THEN
1220 OE_MSG_PUB.Add_Exc_Msg
1221 ( G_PKG_NAME
1222 , 'Entity'
1223 );
1224 END IF;
1225
1226 END Entity;
1227
1228 -- Procedure Attributes
1229
1230 PROCEDURE Attributes
1231 ( x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1232 , p_QUALIFIERS_rec IN QP_Qualifier_Rules_PUB.Qualifiers_Rec_Type
1233 , p_old_QUALIFIERS_rec IN QP_Qualifier_Rules_PUB.Qualifiers_Rec_Type :=
1234 QP_Qualifier_Rules_PUB.G_MISS_QUALIFIERS_REC
1235 )
1236 IS
1237 BEGIN
1238
1239 x_return_status := FND_API.G_RET_STS_SUCCESS;
1240
1241 -- Validate QUALIFIERS attributes
1242
1243
1244 --dbms_output.put_line('comparison operator');
1245 --dbms_output.put_line('comparison operators is '||nvl(p_QUALIFIERS_rec.comparison_operator_code,'c'));
1246
1247
1248 IF p_QUALIFIERS_rec.comparison_operator_code IS NOT NULL AND
1249 ( p_QUALIFIERS_rec.comparison_operator_code <>
1250 p_old_QUALIFIERS_rec.comparison_operator_code OR
1251 p_old_QUALIFIERS_rec.comparison_operator_code IS NULL )
1252 THEN
1253
1254 --dbms_output.put_line(' inside if not null comparison operator');
1255 IF NOT QP_Validate.Comparison_Operator(p_QUALIFIERS_rec.comparison_operator_code) THEN
1256 x_return_status := FND_API.G_RET_STS_ERROR;
1257 END IF;
1258 END IF;
1259
1260
1261 --dbms_output.put_line('comparison status is '||x_return_status);
1262
1263
1264 --dbms_output.put_line('created_by ');
1265
1266 IF p_QUALIFIERS_rec.created_by IS NOT NULL AND
1267 ( p_QUALIFIERS_rec.created_by <>
1268 p_old_QUALIFIERS_rec.created_by OR
1269 p_old_QUALIFIERS_rec.created_by IS NULL )
1270 THEN
1271 IF NOT QP_Validate.Created_By(p_QUALIFIERS_rec.created_by) THEN
1272 x_return_status := FND_API.G_RET_STS_ERROR;
1273 END IF;
1274 END IF;
1275 --dbms_output.put_line('status is '||x_return_status);
1276
1277
1278
1279 --dbms_output.put_line('create from rule ');
1280
1281 IF p_QUALIFIERS_rec.created_from_rule_id IS NOT NULL AND
1282 ( p_QUALIFIERS_rec.created_from_rule_id <>
1283 p_old_QUALIFIERS_rec.created_from_rule_id OR
1284 p_old_QUALIFIERS_rec.created_from_rule_id IS NULL )
1285 THEN
1286 IF NOT QP_Validate.Created_From_Rule(p_QUALIFIERS_rec.created_from_rule_id) THEN
1287 x_return_status := FND_API.G_RET_STS_ERROR;
1288 END IF;
1289 END IF;
1290
1291 --dbms_output.put_line(' created from status is '||x_return_status);
1292
1293
1294
1295 --dbms_output.put_line('validating creation date');
1296
1297 IF p_QUALIFIERS_rec.creation_date IS NOT NULL AND
1298 ( p_QUALIFIERS_rec.creation_date <>
1299 p_old_QUALIFIERS_rec.creation_date OR
1300 p_old_QUALIFIERS_rec.creation_date IS NULL )
1301 THEN
1302 IF NOT QP_Validate.Creation_Date(p_QUALIFIERS_rec.creation_date) THEN
1303 x_return_status := FND_API.G_RET_STS_ERROR;
1304 END IF;
1305 END IF;
1306 --dbms_output.put_line('status is '||x_return_status);
1307
1308
1309
1310 --dbms_output.put_line('validating end date');
1311
1312 IF p_QUALIFIERS_rec.end_date_active IS NOT NULL AND
1313 ( p_QUALIFIERS_rec.end_date_active <>
1314 p_old_QUALIFIERS_rec.end_date_active OR
1315 p_old_QUALIFIERS_rec.end_date_active IS NULL )
1316 THEN
1317 IF NOT QP_Validate.End_Date_Active(p_QUALIFIERS_rec.end_date_active) THEN
1318 x_return_status := FND_API.G_RET_STS_ERROR;
1319 END IF;
1320 END IF;
1321 --dbms_output.put_line('end adate status is '||x_return_status);
1322
1323
1324
1325 --dbms_output.put_line('validating excluder flag ');
1326
1327 IF p_QUALIFIERS_rec.excluder_flag IS NOT NULL AND
1328 ( p_QUALIFIERS_rec.excluder_flag <>
1329 p_old_QUALIFIERS_rec.excluder_flag OR
1330 p_old_QUALIFIERS_rec.excluder_flag IS NULL )
1331 THEN
1332 IF NOT QP_Validate.Excluder(p_QUALIFIERS_rec.excluder_flag) THEN
1333 x_return_status := FND_API.G_RET_STS_ERROR;
1334 END IF;
1335 END IF;
1336 --dbms_output.put_line(' excluder flag status is '||x_return_status);
1337
1338
1339
1340 --dbms_output.put_line('validating lat_updated by ');
1341
1342 IF p_QUALIFIERS_rec.last_updated_by IS NOT NULL AND
1343 ( p_QUALIFIERS_rec.last_updated_by <>
1344 p_old_QUALIFIERS_rec.last_updated_by OR
1345 p_old_QUALIFIERS_rec.last_updated_by IS NULL )
1346 THEN
1347 IF NOT QP_Validate.Last_Updated_By(p_QUALIFIERS_rec.last_updated_by) THEN
1348 x_return_status := FND_API.G_RET_STS_ERROR;
1349 END IF;
1350 END IF;
1351 --dbms_output.put_line('status is '||x_return_status);
1352
1353
1354
1355 --dbms_output.put_line('validating lat_update date ');
1356
1357 IF p_QUALIFIERS_rec.last_update_date IS NOT NULL AND
1358 ( p_QUALIFIERS_rec.last_update_date <>
1359 p_old_QUALIFIERS_rec.last_update_date OR
1360 p_old_QUALIFIERS_rec.last_update_date IS NULL )
1361 THEN
1362 IF NOT QP_Validate.Last_Update_Date(p_QUALIFIERS_rec.last_update_date) THEN
1363 x_return_status := FND_API.G_RET_STS_ERROR;
1364 END IF;
1365 END IF;
1366 --dbms_output.put_line('status is '||x_return_status);
1367
1368
1369
1370 --dbms_output.put_line('validating lat_update login ');
1371
1372 IF p_QUALIFIERS_rec.last_update_login IS NOT NULL AND
1373 ( p_QUALIFIERS_rec.last_update_login <>
1374 p_old_QUALIFIERS_rec.last_update_login OR
1375 p_old_QUALIFIERS_rec.last_update_login IS NULL )
1376 THEN
1377 IF NOT QP_Validate.Last_Update_Login(p_QUALIFIERS_rec.last_update_login) THEN
1378 x_return_status := FND_API.G_RET_STS_ERROR;
1379 END IF;
1380 END IF;
1381 --dbms_output.put_line('status is '||x_return_status);
1382
1383
1384
1385 --dbms_output.put_line('validating list_header_id ');
1386
1387 IF p_QUALIFIERS_rec.list_header_id IS NOT NULL AND
1388 ( p_QUALIFIERS_rec.list_header_id <>
1389 p_old_QUALIFIERS_rec.list_header_id OR
1390 p_old_QUALIFIERS_rec.list_header_id IS NULL )
1391 THEN
1392 IF NOT QP_Validate.List_Header(p_QUALIFIERS_rec.list_header_id) THEN
1393 x_return_status := FND_API.G_RET_STS_ERROR;
1394 END IF;
1395 END IF;
1396 --dbms_output.put_line('status is '||x_return_status);
1397
1398
1399
1400 --dbms_output.put_line('validating list_line id ');
1401
1402 IF p_QUALIFIERS_rec.list_line_id IS NOT NULL AND
1403 ( p_QUALIFIERS_rec.list_line_id <>
1404 p_old_QUALIFIERS_rec.list_line_id OR
1405 p_old_QUALIFIERS_rec.list_line_id IS NULL )
1406 THEN
1407 IF NOT QP_Validate.List_Line(p_QUALIFIERS_rec.list_line_id) THEN
1408 x_return_status := FND_API.G_RET_STS_ERROR;
1409 END IF;
1410 END IF;
1411 --dbms_output.put_line('status is '||x_return_status);
1412
1413
1414
1415
1416 --dbms_output.put_line('validating program application id ');
1417
1418 IF p_QUALIFIERS_rec.program_application_id IS NOT NULL AND
1419 ( p_QUALIFIERS_rec.program_application_id <>
1420 p_old_QUALIFIERS_rec.program_application_id OR
1421 p_old_QUALIFIERS_rec.program_application_id IS NULL )
1422 THEN
1423 IF NOT QP_Validate.Program_Application(p_QUALIFIERS_rec.program_application_id) THEN
1424 x_return_status := FND_API.G_RET_STS_ERROR;
1425 END IF;
1426 END IF;
1427 --dbms_output.put_line('status is '||x_return_status);
1428
1429
1430
1431
1432 --dbms_output.put_line('validating program id ');
1433
1434 IF p_QUALIFIERS_rec.program_id IS NOT NULL AND
1435 ( p_QUALIFIERS_rec.program_id <>
1436 p_old_QUALIFIERS_rec.program_id OR
1437 p_old_QUALIFIERS_rec.program_id IS NULL )
1438 THEN
1439 IF NOT QP_Validate.Program(p_QUALIFIERS_rec.program_id) THEN
1440 x_return_status := FND_API.G_RET_STS_ERROR;
1441 END IF;
1442 END IF;
1443 --dbms_output.put_line('status is '||x_return_status);
1444
1445
1446
1447 --dbms_output.put_line('validating update date ');
1448
1449 IF p_QUALIFIERS_rec.program_update_date IS NOT NULL AND
1450 ( p_QUALIFIERS_rec.program_update_date <>
1451 p_old_QUALIFIERS_rec.program_update_date OR
1452 p_old_QUALIFIERS_rec.program_update_date IS NULL )
1453 THEN
1454 IF NOT QP_Validate.Program_Update_Date(p_QUALIFIERS_rec.program_update_date) THEN
1455 x_return_status := FND_API.G_RET_STS_ERROR;
1456 END IF;
1457 END IF;
1458 --dbms_output.put_line('status is '||x_return_status);
1459
1460
1461
1462 --dbms_output.put_line('validating qualifier_attribute ');
1463
1464 IF p_QUALIFIERS_rec.qualifier_attribute IS NOT NULL AND
1465 ( p_QUALIFIERS_rec.qualifier_attribute <>
1466 p_old_QUALIFIERS_rec.qualifier_attribute OR
1467 p_old_QUALIFIERS_rec.qualifier_attribute IS NULL )
1468 THEN
1469 IF NOT QP_Validate.Qualifier_Attribute(p_QUALIFIERS_rec.qualifier_attribute) THEN
1470 x_return_status := FND_API.G_RET_STS_ERROR;
1471 END IF;
1472 END IF;
1473 --dbms_output.put_line(' attribute status is '||x_return_status);
1474
1475
1476
1477 --dbms_output.put_line('validating qualifier_attribute val ');
1478
1479 IF p_QUALIFIERS_rec.qualifier_attr_value IS NOT NULL AND
1480 ( p_QUALIFIERS_rec.qualifier_attr_value <>
1481 p_old_QUALIFIERS_rec.qualifier_attr_value OR
1482 p_old_QUALIFIERS_rec.qualifier_attr_value IS NULL )
1483 THEN
1484 IF NOT QP_Validate.Qualifier_Attr_Value(p_QUALIFIERS_rec.qualifier_attr_value) THEN
1485 x_return_status := FND_API.G_RET_STS_ERROR;
1486 END IF;
1487 END IF;
1488 --dbms_output.put_line(' attr value status is '||x_return_status);
1489
1490
1491
1492 --dbms_output.put_line('validating qualifier_attribute valto ');
1493
1494 IF p_QUALIFIERS_rec.qualifier_attr_value_to IS NOT NULL AND
1495 ( p_QUALIFIERS_rec.qualifier_attr_value_to <>
1496 p_old_QUALIFIERS_rec.qualifier_attr_value_to OR
1497 p_old_QUALIFIERS_rec.qualifier_attr_value_to IS NULL )
1498 THEN
1499 IF NOT QP_Validate.Qualifier_Attr_Value_to(p_QUALIFIERS_rec.qualifier_attr_value_to) THEN
1500 x_return_status := FND_API.G_RET_STS_ERROR;
1501 END IF;
1502 END IF;
1503 --dbms_output.put_line(' attr_value to status is '||x_return_status);
1504
1505
1506
1507
1508 --dbms_output.put_line('validating qualifier_context ');
1509
1510 IF p_QUALIFIERS_rec.qualifier_context IS NOT NULL AND
1511 ( p_QUALIFIERS_rec.qualifier_context <>
1512 p_old_QUALIFIERS_rec.qualifier_context OR
1513 p_old_QUALIFIERS_rec.qualifier_context IS NULL )
1514 THEN
1515 IF NOT QP_Validate.Qualifier_Context(p_QUALIFIERS_rec.qualifier_context) THEN
1516 x_return_status := FND_API.G_RET_STS_ERROR;
1517 END IF;
1518 END IF;
1519 --dbms_output.put_line(' context status is '||x_return_status);
1520
1521
1522
1523 --dbms_output.put_line('validating qualifier_datatype ');
1524
1525 IF p_QUALIFIERS_rec.qualifier_datatype IS NOT NULL AND
1526 ( p_QUALIFIERS_rec.qualifier_datatype <>
1527 p_old_QUALIFIERS_rec.qualifier_datatype OR
1528 p_old_QUALIFIERS_rec.qualifier_datatype IS NULL )
1529 THEN
1530 IF NOT QP_Validate.Qualifier_Datatype(p_QUALIFIERS_rec.qualifier_datatype) THEN
1531 x_return_status := FND_API.G_RET_STS_ERROR;
1532 END IF;
1533 END IF;
1534 --dbms_output.put_line(' data type status is '||x_return_status);
1535
1536 /*IF p_QUALIFIERS_rec.qualifier_date_format IS NOT NULL AND
1537 ( p_QUALIFIERS_rec.qualifier_date_format <>
1538 p_old_QUALIFIERS_rec.qualifier_date_format OR
1539 p_old_QUALIFIERS_rec.qualifier_date_format IS NULL )
1540 THEN
1541 IF NOT QP_Validate.Qualifier_Date_Format(p_QUALIFIERS_rec.qualifier_date_format) THEN
1542 x_return_status := FND_API.G_RET_STS_ERROR;
1543 END IF;
1544 END IF;*/
1545
1546
1547
1548
1549 --dbms_output.put_line('validating qualifier_gruouping ');
1550
1551
1552
1553 IF p_QUALIFIERS_rec.qualifier_grouping_no <> -1 AND
1554 ( p_QUALIFIERS_rec.qualifier_grouping_no <>
1555 p_old_QUALIFIERS_rec.qualifier_grouping_no OR
1556 p_old_QUALIFIERS_rec.qualifier_grouping_no = -1 )
1557 THEN
1558 IF NOT QP_Validate.Qualifier_Grouping_No(p_QUALIFIERS_rec.qualifier_grouping_no) THEN
1559 x_return_status := FND_API.G_RET_STS_ERROR;
1560 END IF;
1561 END IF;
1562 --dbms_output.put_line(' gropuing status is '||x_return_status);
1563
1564
1565
1566 --dbms_output.put_line('validating qualifier_id ');
1567
1568 IF p_QUALIFIERS_rec.qualifier_id IS NOT NULL AND
1569 ( p_QUALIFIERS_rec.qualifier_id <>
1570 p_old_QUALIFIERS_rec.qualifier_id OR
1571 p_old_QUALIFIERS_rec.qualifier_id IS NULL )
1572 THEN
1573 IF NOT QP_Validate.Qualifier(p_QUALIFIERS_rec.qualifier_id) THEN
1574 x_return_status := FND_API.G_RET_STS_ERROR;
1575 END IF;
1576 END IF;
1577 --dbms_output.put_line(' qualiifer id status is '||x_return_status);
1578
1579
1580
1581
1582 /*IF p_QUALIFIERS_rec.qualifier_number_format IS NOT NULL AND
1583 ( p_QUALIFIERS_rec.qualifier_number_format <>
1584 p_old_QUALIFIERS_rec.qualifier_number_format OR
1585 p_old_QUALIFIERS_rec.qualifier_number_format IS NULL )
1586 THEN
1587 IF NOT QP_Validate.Qualifier_Number_Format(p_QUALIFIERS_rec.qualifier_number_format) THEN
1588 x_return_status := FND_API.G_RET_STS_ERROR;
1589 END IF;
1590 END IF;*/
1591
1592
1593
1594 --dbms_output.put_line('validating qualifier_precedence ');
1595
1596 IF p_QUALIFIERS_rec.qualifier_precedence IS NOT NULL AND
1597 ( p_QUALIFIERS_rec.qualifier_precedence <>
1598 p_old_QUALIFIERS_rec.qualifier_precedence OR
1599 p_old_QUALIFIERS_rec.qualifier_precedence IS NULL )
1600 THEN
1601 IF NOT QP_Validate.Qualifier_Precedence(p_QUALIFIERS_rec.qualifier_precedence) THEN
1602 x_return_status := FND_API.G_RET_STS_ERROR;
1603 END IF;
1604 END IF;
1605 --dbms_output.put_line(' precedence status is '||x_return_status);
1606
1607
1608
1609
1610 --dbms_output.put_line('validating qualifier rule id ');
1611
1612
1613
1614 IF p_QUALIFIERS_rec.qualifier_rule_id IS NOT NULL AND
1615 ( p_QUALIFIERS_rec.qualifier_rule_id <>
1616 p_old_QUALIFIERS_rec.qualifier_rule_id OR
1617 p_old_QUALIFIERS_rec.qualifier_rule_id IS NULL )
1618 THEN
1619 IF NOT QP_Validate.Qualifier_Rule(p_QUALIFIERS_rec.qualifier_rule_id) THEN
1620 x_return_status := FND_API.G_RET_STS_ERROR;
1621 END IF;
1622 END IF;
1623 --dbms_output.put_line(' qualifier rule id status is '||x_return_status);
1624
1625
1626 --dbms_output.put_line('validating request id ');
1627
1628 IF p_QUALIFIERS_rec.request_id IS NOT NULL AND
1629 ( p_QUALIFIERS_rec.request_id <>
1630 p_old_QUALIFIERS_rec.request_id OR
1631 p_old_QUALIFIERS_rec.request_id IS NULL )
1632 THEN
1633 IF NOT QP_Validate.Request(p_QUALIFIERS_rec.request_id) THEN
1634 x_return_status := FND_API.G_RET_STS_ERROR;
1635 END IF;
1636 END IF;
1637 --dbms_output.put_line('status is '||x_return_status);
1638
1639
1640 --dbms_output.put_line('validating date active ');
1641
1642 IF p_QUALIFIERS_rec.start_date_active IS NOT NULL AND
1643 ( p_QUALIFIERS_rec.start_date_active <>
1644 p_old_QUALIFIERS_rec.start_date_active OR
1645 p_old_QUALIFIERS_rec.start_date_active IS NULL )
1646 THEN
1647 IF NOT QP_Validate.Start_Date_Active(p_QUALIFIERS_rec.start_date_active) THEN
1648 x_return_status := FND_API.G_RET_STS_ERROR;
1649 END IF;
1650 END IF;
1651 --dbms_output.put_line('status is '||x_return_status);
1652 -- Added for TCA
1653 IF p_QUALIFIERS_rec.qualify_hier_descendent_flag IS NOT NULL AND
1654 ( p_QUALIFIERS_rec.qualify_hier_descendent_flag <>
1655 p_old_QUALIFIERS_rec.qualify_hier_descendent_flag OR
1656 p_old_QUALIFIERS_rec.qualify_hier_descendent_flag IS NULL )
1657 THEN
1658 IF NOT QP_Validate.Qualify_Hier_Descendent_Flag(p_QUALIFIERS_rec.qualify_hier_descendent_flag) THEN
1659 x_return_status := FND_API.G_RET_STS_ERROR;
1660 END IF;
1661 END IF;
1662
1663
1664 IF (p_QUALIFIERS_rec.attribute1 IS NOT NULL AND
1665 ( p_QUALIFIERS_rec.attribute1 <>
1666 p_old_QUALIFIERS_rec.attribute1 OR
1667 p_old_QUALIFIERS_rec.attribute1 IS NULL ))
1668 OR (p_QUALIFIERS_rec.attribute10 IS NOT NULL AND
1669 ( p_QUALIFIERS_rec.attribute10 <>
1670 p_old_QUALIFIERS_rec.attribute10 OR
1671 p_old_QUALIFIERS_rec.attribute10 IS NULL ))
1672 OR (p_QUALIFIERS_rec.attribute11 IS NOT NULL AND
1673 ( p_QUALIFIERS_rec.attribute11 <>
1674 p_old_QUALIFIERS_rec.attribute11 OR
1675 p_old_QUALIFIERS_rec.attribute11 IS NULL ))
1676 OR (p_QUALIFIERS_rec.attribute12 IS NOT NULL AND
1677 ( p_QUALIFIERS_rec.attribute12 <>
1678 p_old_QUALIFIERS_rec.attribute12 OR
1679 p_old_QUALIFIERS_rec.attribute12 IS NULL ))
1680 OR (p_QUALIFIERS_rec.attribute13 IS NOT NULL AND
1681 ( p_QUALIFIERS_rec.attribute13 <>
1682 p_old_QUALIFIERS_rec.attribute13 OR
1683 p_old_QUALIFIERS_rec.attribute13 IS NULL ))
1684 OR (p_QUALIFIERS_rec.attribute14 IS NOT NULL AND
1685 ( p_QUALIFIERS_rec.attribute14 <>
1686 p_old_QUALIFIERS_rec.attribute14 OR
1687 p_old_QUALIFIERS_rec.attribute14 IS NULL ))
1688 OR (p_QUALIFIERS_rec.attribute15 IS NOT NULL AND
1689 ( p_QUALIFIERS_rec.attribute15 <>
1690 p_old_QUALIFIERS_rec.attribute15 OR
1691 p_old_QUALIFIERS_rec.attribute15 IS NULL ))
1692 OR (p_QUALIFIERS_rec.attribute2 IS NOT NULL AND
1693 ( p_QUALIFIERS_rec.attribute2 <>
1694 p_old_QUALIFIERS_rec.attribute2 OR
1695 p_old_QUALIFIERS_rec.attribute2 IS NULL ))
1696 OR (p_QUALIFIERS_rec.attribute3 IS NOT NULL AND
1697 ( p_QUALIFIERS_rec.attribute3 <>
1698 p_old_QUALIFIERS_rec.attribute3 OR
1699 p_old_QUALIFIERS_rec.attribute3 IS NULL ))
1700 OR (p_QUALIFIERS_rec.attribute4 IS NOT NULL AND
1701 ( p_QUALIFIERS_rec.attribute4 <>
1702 p_old_QUALIFIERS_rec.attribute4 OR
1703 p_old_QUALIFIERS_rec.attribute4 IS NULL ))
1704 OR (p_QUALIFIERS_rec.attribute5 IS NOT NULL AND
1705 ( p_QUALIFIERS_rec.attribute5 <>
1706 p_old_QUALIFIERS_rec.attribute5 OR
1707 p_old_QUALIFIERS_rec.attribute5 IS NULL ))
1708 OR (p_QUALIFIERS_rec.attribute6 IS NOT NULL AND
1709 ( p_QUALIFIERS_rec.attribute6 <>
1710 p_old_QUALIFIERS_rec.attribute6 OR
1711 p_old_QUALIFIERS_rec.attribute6 IS NULL ))
1712 OR (p_QUALIFIERS_rec.attribute7 IS NOT NULL AND
1713 ( p_QUALIFIERS_rec.attribute7 <>
1714 p_old_QUALIFIERS_rec.attribute7 OR
1715 p_old_QUALIFIERS_rec.attribute7 IS NULL ))
1716 OR (p_QUALIFIERS_rec.attribute8 IS NOT NULL AND
1717 ( p_QUALIFIERS_rec.attribute8 <>
1718 p_old_QUALIFIERS_rec.attribute8 OR
1719 p_old_QUALIFIERS_rec.attribute8 IS NULL ))
1720 OR (p_QUALIFIERS_rec.attribute9 IS NOT NULL AND
1721 ( p_QUALIFIERS_rec.attribute9 <>
1722 p_old_QUALIFIERS_rec.attribute9 OR
1723 p_old_QUALIFIERS_rec.attribute9 IS NULL ))
1724 OR (p_QUALIFIERS_rec.context IS NOT NULL AND
1725 ( p_QUALIFIERS_rec.context <>
1726 p_old_QUALIFIERS_rec.context OR
1727 p_old_QUALIFIERS_rec.context IS NULL ))
1728 THEN
1729
1730 -- These calls are temporarily commented out
1731
1732 /*
1733 FND_FLEX_DESC_VAL.Set_Column_Value
1734 ( column_name => 'ATTRIBUTE1'
1735 , column_value => p_QUALIFIERS_rec.attribute1
1736 );
1737 FND_FLEX_DESC_VAL.Set_Column_Value
1738 ( column_name => 'ATTRIBUTE10'
1739 , column_value => p_QUALIFIERS_rec.attribute10
1740 );
1741 FND_FLEX_DESC_VAL.Set_Column_Value
1742 ( column_name => 'ATTRIBUTE11'
1743 , column_value => p_QUALIFIERS_rec.attribute11
1744 );
1745 FND_FLEX_DESC_VAL.Set_Column_Value
1746 ( column_name => 'ATTRIBUTE12'
1747 , column_value => p_QUALIFIERS_rec.attribute12
1748 );
1749 FND_FLEX_DESC_VAL.Set_Column_Value
1750 ( column_name => 'ATTRIBUTE13'
1751 , column_value => p_QUALIFIERS_rec.attribute13
1752 );
1753 FND_FLEX_DESC_VAL.Set_Column_Value
1754 ( column_name => 'ATTRIBUTE14'
1755 , column_value => p_QUALIFIERS_rec.attribute14
1756 );
1757 FND_FLEX_DESC_VAL.Set_Column_Value
1758 ( column_name => 'ATTRIBUTE15'
1759 , column_value => p_QUALIFIERS_rec.attribute15
1760 );
1761 FND_FLEX_DESC_VAL.Set_Column_Value
1762 ( column_name => 'ATTRIBUTE2'
1763 , column_value => p_QUALIFIERS_rec.attribute2
1764 );
1765 FND_FLEX_DESC_VAL.Set_Column_Value
1766 ( column_name => 'ATTRIBUTE3'
1767 , column_value => p_QUALIFIERS_rec.attribute3
1768 );
1769 FND_FLEX_DESC_VAL.Set_Column_Value
1770 ( column_name => 'ATTRIBUTE4'
1771 , column_value => p_QUALIFIERS_rec.attribute4
1772 );
1773 FND_FLEX_DESC_VAL.Set_Column_Value
1774 ( column_name => 'ATTRIBUTE5'
1775 , column_value => p_QUALIFIERS_rec.attribute5
1776 );
1777 FND_FLEX_DESC_VAL.Set_Column_Value
1778 ( column_name => 'ATTRIBUTE6'
1779 , column_value => p_QUALIFIERS_rec.attribute6
1780 );
1781 FND_FLEX_DESC_VAL.Set_Column_Value
1782 ( column_name => 'ATTRIBUTE7'
1783 , column_value => p_QUALIFIERS_rec.attribute7
1784 );
1785 FND_FLEX_DESC_VAL.Set_Column_Value
1786 ( column_name => 'ATTRIBUTE8'
1787 , column_value => p_QUALIFIERS_rec.attribute8
1788 );
1789 FND_FLEX_DESC_VAL.Set_Column_Value
1790 ( column_name => 'ATTRIBUTE9'
1791 , column_value => p_QUALIFIERS_rec.attribute9
1792 );
1793 FND_FLEX_DESC_VAL.Set_Column_Value
1794 ( column_name => 'CONTEXT'
1795 , column_value => p_QUALIFIERS_rec.context
1796 );
1797 */
1798
1799 -- Validate descriptive flexfield.
1800
1801 --dbms_output.put_line('validating flex ');
1802 IF NOT QP_Validate.Desc_Flex( 'QP_QUALIFIERS' ) THEN
1803 x_return_status := FND_API.G_RET_STS_ERROR;
1804 END IF;
1805 --dbms_output.put_line('status is '||x_return_status);
1806
1807 END IF;
1808
1809 -- Done validating attributes
1810
1811 EXCEPTION
1812
1813 WHEN FND_API.G_EXC_ERROR THEN
1814
1815 x_return_status := FND_API.G_RET_STS_ERROR;
1816
1817 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1818
1819 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1820
1821 WHEN OTHERS THEN
1822
1823 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1824
1825 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1826 THEN
1827 OE_MSG_PUB.Add_Exc_Msg
1828 ( G_PKG_NAME
1829 , 'Attributes'
1830 );
1831 END IF;
1832
1833 END Attributes;
1834
1835 -- Procedure Entity_Delete
1836
1837 PROCEDURE Entity_Delete
1838 ( x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1839 , p_QUALIFIERS_rec IN QP_Qualifier_Rules_PUB.Qualifiers_Rec_Type
1840 )
1841 IS
1842 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
1843 BEGIN
1844
1845 -- Validate entity delete.
1846
1847 NULL;
1848 -- Check whether Source System Code matches
1849 -- mkarya for bug 1728764, Prevent update of Trade Management Data in QP
1850 QP_UTIL.Check_Source_System_Code
1851 (p_list_header_id => p_QUALIFIERS_rec.list_header_id,
1852 p_list_line_id => p_QUALIFIERS_rec.list_line_id,
1853 x_return_status => l_return_status
1854 );
1855
1856 -- Done.
1857
1858 x_return_status := l_return_status;
1859
1860 EXCEPTION
1861
1862 WHEN FND_API.G_EXC_ERROR THEN
1863
1864 x_return_status := FND_API.G_RET_STS_ERROR;
1865
1866 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1867
1868 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1869
1870 WHEN OTHERS THEN
1871
1872 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1873
1874 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1875 THEN
1876 OE_MSG_PUB.Add_Exc_Msg
1877 ( G_PKG_NAME
1878 , 'Entity_Delete'
1879 );
1880 END IF;
1881
1882 END Entity_Delete;
1883
1884 END QP_Validate_Qualifiers;