DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_VALIDATE_QUALIFIERS

Source


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;