DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_QPXPRCST_XMLP_PKG

Source


1 PACKAGE BODY QP_QPXPRCST_XMLP_PKG AS
2 /* $Header: QPXPRCSTB.pls 120.2 2010/11/03 16:00:03 smuhamme noship $ */
3   FUNCTION CF_FREIGHT_TERMSFORMULA(FREIGHT_TERMS_CODE IN VARCHAR2) RETURN CHAR IS
4     L_FREIGHT_TERMS VARCHAR2(80);
5     CURSOR CUR_FREIGHT IS
6       SELECT
7         FREIGHT_TERMS
8       FROM
9         OE_FRGHT_TERMS_ACTIVE_V
10       WHERE FREIGHT_TERMS_CODE = CF_FREIGHT_TERMSFORMULA.FREIGHT_TERMS_CODE;
11   BEGIN
12     OPEN CUR_FREIGHT;
13     FETCH CUR_FREIGHT
14      INTO L_FREIGHT_TERMS;
15     CLOSE CUR_FREIGHT;
16     RETURN (L_FREIGHT_TERMS);
17   END CF_FREIGHT_TERMSFORMULA;
18 
19   FUNCTION CF_PAYMENT_TERMSFORMULA(TERMS_ID IN NUMBER) RETURN CHAR IS
20     L_PAYMENT_TERMS VARCHAR2(15);
21     CURSOR CUR_PAYMENT IS
22       SELECT
23         DISTINCT
24         NAME
25       FROM
26         RA_TERMS
27       WHERE TERM_ID = TERMS_ID;
28   BEGIN
29     OPEN CUR_PAYMENT;
30     FETCH CUR_PAYMENT
31      INTO L_PAYMENT_TERMS;
32     CLOSE CUR_PAYMENT;
33     RETURN (L_PAYMENT_TERMS);
34   END CF_PAYMENT_TERMSFORMULA;
35 
36   FUNCTION BEFOREREPORT RETURN BOOLEAN IS
37   BEGIN
38     BEGIN
39       P_CONC_REQUEST_ID := FND_GLOBAL.CONC_REQUEST_ID;
40       /*SRW.USER_EXIT('FND SRWINIT')*/NULL;
41     EXCEPTION
42       WHEN /*SRW.USER_EXIT_FAILURE*/OTHERS THEN
43         /*SRW.MESSAGE(1000
44                    ,'Failed in BEFORE REPORT trigger')*/NULL;
45         RETURN (FALSE);
46     END;
47     DECLARE
48       L_COMPANY_NAME VARCHAR2(100);
49       L_FUNCTIONAL_CURRENCY VARCHAR2(15);
50     BEGIN
51       SELECT
52         SOB.NAME,
53         SOB.CURRENCY_CODE
54       INTO L_COMPANY_NAME,L_FUNCTIONAL_CURRENCY
55       FROM
56         GL_SETS_OF_BOOKS SOB,
57         FND_CURRENCIES CUR
58       WHERE SOB.SET_OF_BOOKS_ID = P_SOB_ID
59         AND SOB.CURRENCY_CODE = CUR.CURRENCY_CODE;
60       RP_COMPANY_NAME := L_COMPANY_NAME;
61     EXCEPTION
62       WHEN NO_DATA_FOUND THEN
63         NULL;
64     END;
65     DECLARE
66       L_REPORT_NAME VARCHAR2(240);
67     BEGIN
68       SELECT
69         CP.USER_CONCURRENT_PROGRAM_NAME
70       INTO L_REPORT_NAME
71       FROM
72         FND_CONCURRENT_PROGRAMS_VL CP,
73         FND_CONCURRENT_REQUESTS CR
74       WHERE CR.REQUEST_ID = P_CONC_REQUEST_ID
75         AND CP.APPLICATION_ID = CR.PROGRAM_APPLICATION_ID
76         AND CP.CONCURRENT_PROGRAM_ID = CR.CONCURRENT_PROGRAM_ID;
77       RP_REPORT_NAME := L_REPORT_NAME;
78     EXCEPTION
79       WHEN NO_DATA_FOUND THEN
80         RP_REPORT_NAME := 'Price Lists';
81     END;
82     BEGIN
83       QP_SECURITY.SET_GRANTS(P_USER_NAME
84                             ,P_RESP_ID
85                             ,NULL);
86     EXCEPTION
87       WHEN OTHERS THEN
88         NULL;
89     END;
90     RETURN (TRUE);
91   END BEFOREREPORT;
92 
93   FUNCTION CF_PRICE_CONTEXTFORMULA(PRICING_ATTRIBUTE_CONTEXT IN VARCHAR2
94                                   ,PRICING_ATTRIBUTE IN VARCHAR2) RETURN CHAR IS
95     X_ATTRIBUTE_CODE VARCHAR2(240);
96     X_SEGMENT_NAME VARCHAR2(240);
97   BEGIN
98     QP_UTIL.GET_ATTRIBUTE_CODE('QP_ATTR_DEFNS_PRICING'
99                               ,PRICING_ATTRIBUTE_CONTEXT
100                               ,PRICING_ATTRIBUTE
101                               ,X_ATTRIBUTE_CODE
102                               ,X_SEGMENT_NAME);
103     RETURN (X_ATTRIBUTE_CODE);
104   END CF_PRICE_CONTEXTFORMULA;
105 
106   FUNCTION CF_PRICE_CONTEXT1FORMULA(PRICING_ATTRIBUTE_CONTEXT1 IN VARCHAR2
107                                    ,PRICING_ATTRIBUTE1 IN VARCHAR2) RETURN CHAR IS
108     X_ATTRIBUTE_CODE VARCHAR2(240);
109     X_SEGMENT_NAME VARCHAR2(240);
110   BEGIN
111     QP_UTIL.GET_ATTRIBUTE_CODE('QP_ATTR_DEFNS_PRICING'
112                               ,PRICING_ATTRIBUTE_CONTEXT1
113                               ,PRICING_ATTRIBUTE1
114                               ,X_ATTRIBUTE_CODE
115                               ,X_SEGMENT_NAME);
116     RETURN (X_ATTRIBUTE_CODE);
117   END CF_PRICE_CONTEXT1FORMULA;
118 
119   FUNCTION AFTERPFORM RETURN BOOLEAN IS
120   BEGIN
121     IF P_START_DATE_ACTIVE IS NOT NULL THEN
122       P_PRICE_LIST_ACTIVE_DATE := ' and  nvl(qplh.start_date_active,''' || P_START_DATE_ACTIVE || ''') >= ''' || P_START_DATE_ACTIVE || '''';
123     END IF;
124     IF P_END_DATE_ACTIVE IS NOT NULL THEN
125       P_PRICE_LIST_ACTIVE_DATE := P_PRICE_LIST_ACTIVE_DATE || ' and  nvl(qplh.end_date_active,''' || P_END_DATE_ACTIVE || ''') <= ''' || P_END_DATE_ACTIVE || '''';
126     END IF;
127     IF P_ACTIVE_FLAG in ('Y','N') THEN
128       P_PRICE_LIST_ACTIVE_FLAG := ' and qplh.active_flag = ''' || P_ACTIVE_FLAG || '''';
132         P_PRICE_LIST_NAME := 'AND qplh.name BETWEEN :p_from_price_list  AND :p_to_price_list';
129     END IF;
130     IF P_FROM_PRICE_LIST IS NOT NULL THEN
131       IF P_TO_PRICE_LIST IS NOT NULL THEN
133       ELSE
134         P_PRICE_LIST_NAME := 'AND qplh.name >=:p_from_price_list';
135       END IF;
136     END IF;
137     IF (P_FROM_PRICE_LIST IS NULL AND P_TO_PRICE_LIST IS NOT NULL) THEN
138       P_PRICE_LIST_NAME := 'AND qplh.name <=:p_to_price_list';
139     END IF;
140     IF (P_TO_CURRENCY_CODE IS NOT NULL) THEN
141       P_TO_CURRENCY := 'where to_currency_code = :p_to_currency_code';
142     ELSE
143       P_TO_CURRENCY := ' where to_currency_code = ''XXXYYYZZZZ''';
144     END IF;
145     RETURN (TRUE);
146   END AFTERPFORM;
147 
148   FUNCTION CF_QUALIFIER_ATTR_VALUEFORMULA(QUALIFIER_CONTEXT IN VARCHAR2
149                                          ,QUALIFIER_ATTRIBUTE IN VARCHAR2
150                                          ,QUALIFIER_ATTR_VALUE IN VARCHAR2
151                                          ,COMPARISION_OPERATOR_CODE IN VARCHAR2) RETURN CHAR IS
152     L_QUALIFIER_ATTR_VALUE VARCHAR2(240);
153   BEGIN
154     L_QUALIFIER_ATTR_VALUE := QP_UTIL.GET_ATTRIBUTE_VALUE(P_FLEXFIELD_NAME => 'QP_ATTR_DEFNS_QUALIFIER'
155                                                          ,P_CONTEXT_NAME => QUALIFIER_CONTEXT
156                                                          ,P_SEGMENT_NAME => QUALIFIER_ATTRIBUTE
157                                                          ,P_ATTR_VALUE => QUALIFIER_ATTR_VALUE
158                                                          ,P_COMPARISON_OPERATOR_CODE => COMPARISION_OPERATOR_CODE);
159     IF (QUALIFIER_CONTEXT = 'ORDER' AND QUALIFIER_ATTRIBUTE = 'QUALIFIER_ATTRIBUTE5') THEN
160       BEGIN
161         SELECT
162           ORDER_NUMBER
163         INTO L_QUALIFIER_ATTR_VALUE
164         FROM
165           OE_BLANKET_HEADERS_ALL
166         WHERE HEADER_ID = QUALIFIER_ATTR_VALUE;
167       EXCEPTION
168         WHEN OTHERS THEN
169           NULL;
170       END;
171     ELSIF (QUALIFIER_CONTEXT = 'ORDER' AND QUALIFIER_ATTRIBUTE = 'QUALIFIER_ATTRIBUTE6') THEN
172       BEGIN
173         SELECT
174           H.ORDER_NUMBER || '-' || L.LINE_NUMBER
175         INTO L_QUALIFIER_ATTR_VALUE
176         FROM
177           OE_BLANKET_HEADERS_ALL H,
178           OE_BLANKET_LINES_ALL L
179         WHERE L.LINE_ID = QUALIFIER_ATTR_VALUE
180           AND H.HEADER_ID = L.HEADER_ID;
181       EXCEPTION
182         WHEN OTHERS THEN
183           NULL;
184       END;
185     END IF;
186     RETURN L_QUALIFIER_ATTR_VALUE;
187   END CF_QUALIFIER_ATTR_VALUEFORMULA;
188 
189   FUNCTION GET_ATTRIBUTE_VALUE(P_FLEXFIELD_NAME IN VARCHAR2
190                               ,P_CONTEXT_NAME IN VARCHAR2
191                               ,P_SEGMENT_NAME IN VARCHAR2
192                               ,P_ATTR_VALUE IN VARCHAR2
193                               ,P_COMPARISON_OPERATOR_CODE IN VARCHAR2 := NULL) RETURN VARCHAR2 IS
194     VSET FND_VSET.VALUESET_R;
195     FMT FND_VSET.VALUESET_DR;
196     FOUND BOOLEAN;
197     ROW NUMBER;
198     VALUE FND_VSET.VALUE_DR;
199     X_FORMAT_TYPE VARCHAR2(1);
200     X_VALIDATION_TYPE VARCHAR2(1);
201     X_VSID NUMBER;
202     X_ATTR_VALUE_CODE VARCHAR2(240);
203     L_ATTR_VALUE VARCHAR2(2000);
204     VALUE_VALID_IN_VALUESET BOOLEAN := FALSE;
205     L_ID VARCHAR2(240);
206     L_VALUE VARCHAR2(240);
207   BEGIN
208     /*SRW.MESSAGE(1
209                ,' In get_attr ')*/NULL;
210     QP_UTIL.GET_VALUESET_ID_R(P_FLEXFIELD_NAME
211                              ,P_CONTEXT_NAME
212                              ,P_SEGMENT_NAME
213                              ,X_VSID
214                              ,X_FORMAT_TYPE
215                              ,X_VALIDATION_TYPE);
216     /*SRW.MESSAGE(1
217                ,' vali ' || X_VALIDATION_TYPE)*/NULL;
218     L_ATTR_VALUE := GET_NUM_DATE_FROM_CANONICAL(X_FORMAT_TYPE
219                                                ,P_ATTR_VALUE);
220     /*SRW.MESSAGE(1
221                ,'attr value ' || L_ATTR_VALUE)*/NULL;
222     IF P_COMPARISON_OPERATOR_CODE <> 'BETWEEN' THEN
223       IF X_VALIDATION_TYPE in ('F','I') AND X_VSID IS NOT NULL THEN
224         IF X_VALIDATION_TYPE = 'I' THEN
225           FND_VSET.GET_VALUESET(X_VSID
226                                ,VSET
227                                ,FMT);
228           FND_VSET.GET_VALUE_INIT(VSET
229                                  ,TRUE);
230           FND_VSET.GET_VALUE(VSET
231                             ,ROW
232                             ,FOUND
233                             ,VALUE);
234           IF FMT.HAS_ID THEN
235             WHILE (FOUND) LOOP
236 
237               IF L_ATTR_VALUE = VALUE.ID THEN
238                 X_ATTR_VALUE_CODE := VALUE.VALUE;
239                 VALUE_VALID_IN_VALUESET := TRUE;
240                 EXIT;
241               END IF;
242               FND_VSET.GET_VALUE(VSET
243                                 ,ROW
244                                 ,FOUND
245                                 ,VALUE);
246             END LOOP;
247           ELSE
248             WHILE (FOUND) LOOP
249 
250               IF L_ATTR_VALUE = VALUE.VALUE THEN
251                 X_ATTR_VALUE_CODE := L_ATTR_VALUE;
252                 VALUE_VALID_IN_VALUESET := TRUE;
253                 EXIT;
254               END IF;
255               FND_VSET.GET_VALUE(VSET
256                                 ,ROW
257                                 ,FOUND
258                                 ,VALUE);
259             END LOOP;
260           END IF;
261           FND_VSET.GET_VALUE_END(VSET);
265                                ,FMT);
262         ELSIF X_VALIDATION_TYPE = 'F' THEN
263           FND_VSET.GET_VALUESET(X_VSID
264                                ,VSET
266           IF (QP_UTIL.VALUE_EXISTS_IN_TABLE(VSET.TABLE_INFO
267                                        ,L_ATTR_VALUE
268                                        ,L_ID
269                                        ,L_VALUE)) THEN
270             IF FMT.HAS_ID THEN
271               IF L_ATTR_VALUE = L_ID THEN
272                 X_ATTR_VALUE_CODE := L_VALUE;
273                 VALUE_VALID_IN_VALUESET := TRUE;
274               END IF;
275             ELSE
276               IF L_ATTR_VALUE = L_VALUE THEN
277                 X_ATTR_VALUE_CODE := L_ATTR_VALUE;
278                 VALUE_VALID_IN_VALUESET := TRUE;
279               END IF;
280             END IF;
281           ELSE
282             VALUE_VALID_IN_VALUESET := FALSE;
283           END IF;
284         END IF;
285       ELSE
286         X_ATTR_VALUE_CODE := L_ATTR_VALUE;
287       END IF;
288     ELSE
289       X_ATTR_VALUE_CODE := L_ATTR_VALUE;
290     END IF;
291     RETURN X_ATTR_VALUE_CODE;
292   END GET_ATTRIBUTE_VALUE;
293 
294   FUNCTION GET_NUM_DATE_FROM_CANONICAL(P_DATATYPE IN VARCHAR2
295                                       ,P_VALUE IN VARCHAR2) RETURN VARCHAR2 IS
296     L_VARCHAR_OUT VARCHAR2(2000);
297     INVALID_DATA_TYPE EXCEPTION;
298   BEGIN
299     IF P_DATATYPE = 'N' THEN
300       L_VARCHAR_OUT := TO_CHAR(FND_NUMBER.CANONICAL_TO_NUMBER(P_VALUE));
301     ELSIF P_DATATYPE = 'X' THEN
302       L_VARCHAR_OUT := FND_DATE.CANONICAL_TO_DATE(P_VALUE);
303     ELSIF P_DATATYPE = 'Y' THEN
304       L_VARCHAR_OUT := FND_DATE.CANONICAL_TO_DATE(P_VALUE);
305     ELSIF P_DATATYPE = 'C' THEN
306       L_VARCHAR_OUT := P_VALUE;
307     ELSE
308       L_VARCHAR_OUT := P_VALUE;
309     END IF;
310     RETURN L_VARCHAR_OUT;
311   EXCEPTION
312     WHEN OTHERS THEN
313       L_VARCHAR_OUT := P_VALUE;
314   END GET_NUM_DATE_FROM_CANONICAL;
315 
316   PROCEDURE GET_VALUESET_ID(P_FLEXFIELD_NAME IN VARCHAR2
317                            ,P_CONTEXT IN VARCHAR2
318                            ,P_SEG IN VARCHAR2
319                            ,X_VSID OUT NOCOPY NUMBER
320                            ,X_FORMAT_TYPE OUT NOCOPY VARCHAR2
321                            ,X_VALIDATION_TYPE OUT NOCOPY VARCHAR2) IS
322     TEST_REC FND_VSET.VALUESET_R;
323     X_VALUESETID NUMBER;
324     TEST_FREC FND_VSET.VALUESET_DR;
325     CURSOR CUR_GET_APPLICATION_ID(APP_SHORT_NAME IN VARCHAR2) IS
326       SELECT
327         APPLICATION_ID
328       FROM
329         FND_APPLICATION
330       WHERE APPLICATION_SHORT_NAME = APP_SHORT_NAME;
331     V_DFLEX_R FND_DFLEX.DFLEX_R;
332     V_SEGMENTS_DR FND_DFLEX.SEGMENTS_DR;
333     V_CONTEXT_R FND_DFLEX.CONTEXT_R;
334   BEGIN
335     OPEN CUR_GET_APPLICATION_ID('QP');
336     FETCH CUR_GET_APPLICATION_ID
337      INTO V_DFLEX_R.APPLICATION_ID;
338     CLOSE CUR_GET_APPLICATION_ID;
339     /*SRW.MESSAGE(1
340                ,'Application id ')*/NULL;
341     V_DFLEX_R.FLEXFIELD_NAME := P_FLEXFIELD_NAME;
342     V_CONTEXT_R.FLEXFIELD := V_DFLEX_R;
343     V_CONTEXT_R.CONTEXT_CODE := P_CONTEXT;
344     FND_DFLEX.GET_SEGMENTS(V_CONTEXT_R
345                           ,V_SEGMENTS_DR
346                           ,TRUE);
347     /*SRW.MESSAGE(1
348                ,'p_seg is ' || P_SEG)*/NULL;
349     FOR i IN 1 .. V_SEGMENTS_DR.NSEGMENTS LOOP
350       IF (V_SEGMENTS_DR.APPLICATION_COLUMN_NAME(I) = P_SEG) THEN
351         X_VALUESETID := V_SEGMENTS_DR.VALUE_SET(I);
352         EXIT;
353       END IF;
354     END LOOP;
355     /*SRW.MESSAGE(1
356                ,'the app ' || X_VALUESETID)*/NULL;
357     IF X_VALUESETID IS NOT NULL THEN
358       FND_VSET.GET_VALUESET(X_VALUESETID
359                            ,TEST_REC
360                            ,TEST_FREC);
361       /*SRW.MESSAGE(1
362                  ,'val type ')*/NULL;
363       X_VSID := X_VALUESETID;
364       X_FORMAT_TYPE := TEST_FREC.FORMAT_TYPE;
365       X_VALIDATION_TYPE := TEST_REC.VALIDATION_TYPE;
366     ELSE
367       X_VSID := NULL;
368       X_FORMAT_TYPE := 'C';
369       X_VALIDATION_TYPE := NULL;
370     END IF;
371     /*SRW.MESSAGE(1
372                ,'End..')*/NULL;
373   END GET_VALUESET_ID;
374 
375   FUNCTION CF_QUALIFIER_CONTEXTFORMULA(QUALIFIER_CONTEXT IN VARCHAR2
376                                       ,QUALIFIER_ATTRIBUTE IN VARCHAR2) RETURN CHAR IS
377     X_ATTRIBUTE_CODE VARCHAR2(240);
378     X_SEGMENT_NAME VARCHAR2(240);
379   BEGIN
380     QP_UTIL.GET_ATTRIBUTE_CODE('QP_ATTR_DEFNS_QUALIFIER'
381                               ,QUALIFIER_CONTEXT
382                               ,QUALIFIER_ATTRIBUTE
383                               ,X_ATTRIBUTE_CODE
384                               ,X_SEGMENT_NAME);
385     RETURN (X_ATTRIBUTE_CODE);
386   END CF_QUALIFIER_CONTEXTFORMULA;
387 
388   FUNCTION CF_PRODUCT_ATTRIBUTEFORMULA(PRODUCT_ATTRIBUTE_CONTEXT1 IN VARCHAR2
389                                       ,PRODUCT_ATTRIBUTE1 IN VARCHAR2) RETURN VARCHAR2 IS
390     X_ATTRIBUTE_CODE VARCHAR2(240);
391     X_SEGMENT_NAME VARCHAR2(240);
392   BEGIN
393     QP_UTIL.GET_ATTRIBUTE_CODE('QP_ATTR_DEFNS_PRICING'
394                               ,PRODUCT_ATTRIBUTE_CONTEXT1
395                               ,PRODUCT_ATTRIBUTE1
396                               ,X_ATTRIBUTE_CODE
397                               ,X_SEGMENT_NAME);
398     RETURN (X_ATTRIBUTE_CODE);
399   END CF_PRODUCT_ATTRIBUTEFORMULA;
400 
404       SELECT
401   FUNCTION CF_BASE_MARKUP_FORMULAFORMULA(BASE_MARKUP_FORMULA_ID IN NUMBER) RETURN CHAR IS
402     L_FORMULA_NAME VARCHAR2(240);
403     CURSOR CUR_BASE_FORMULA IS
405         NAME
406       FROM
407         QP_PRICE_FORMULAS_VL
408       WHERE PRICE_FORMULA_ID = BASE_MARKUP_FORMULA_ID;
409   BEGIN
410     OPEN CUR_BASE_FORMULA;
411     FETCH CUR_BASE_FORMULA
412      INTO L_FORMULA_NAME;
413     CLOSE CUR_BASE_FORMULA;
414     RETURN (L_FORMULA_NAME);
415   END CF_BASE_MARKUP_FORMULAFORMULA;
416 
417   FUNCTION CF_PRICE_FORMULAFORMULA(PRICE_FORMULA_ID IN NUMBER) RETURN CHAR IS
418     L_FORMULA_NAME VARCHAR2(240);
419     CURSOR CUR_BASE_FORMULA IS
420       SELECT
421         NAME
422       FROM
423         QP_PRICE_FORMULAS_VL
424       WHERE PRICE_FORMULA_ID = CF_PRICE_FORMULAFORMULA.PRICE_FORMULA_ID;
425   BEGIN
426     OPEN CUR_BASE_FORMULA;
427     FETCH CUR_BASE_FORMULA
428      INTO L_FORMULA_NAME;
429     CLOSE CUR_BASE_FORMULA;
430     RETURN (L_FORMULA_NAME);
431   END CF_PRICE_FORMULAFORMULA;
432 
433   FUNCTION CF_MARKUP_FORMULAFORMULA(MARKUP_FORMULA_ID IN NUMBER) RETURN CHAR IS
434     L_FORMULA_NAME VARCHAR2(240);
435     CURSOR CUR_BASE_FORMULA IS
436       SELECT
437         NAME
438       FROM
439         QP_PRICE_FORMULAS_VL
440       WHERE PRICE_FORMULA_ID = MARKUP_FORMULA_ID;
441   BEGIN
442     OPEN CUR_BASE_FORMULA;
443     FETCH CUR_BASE_FORMULA
444      INTO L_FORMULA_NAME;
445     CLOSE CUR_BASE_FORMULA;
446     RETURN (L_FORMULA_NAME);
447   END CF_MARKUP_FORMULAFORMULA;
448 
449   FUNCTION CF_ATTRIBUTE_CONTEXTFORMULA(CURR_ATTRIBUTE_TYPE IN VARCHAR2
450                                       ,CURR_ATTRIBUTE_CONTEXT IN VARCHAR2) RETURN CHAR IS
451     X_CONTEXT VARCHAR2(80);
452   BEGIN
453     IF CURR_ATTRIBUTE_TYPE = 'QUALIFIER' THEN
454       X_CONTEXT := QP_UTIL.GET_CONTEXT('QP_ATTR_DEFNS_QUALIFIER'
455                                       ,CURR_ATTRIBUTE_CONTEXT);
456     ELSIF CURR_ATTRIBUTE_TYPE in ('PRICING','PRODUCT') THEN
457       X_CONTEXT := QP_UTIL.GET_CONTEXT('QP_ATTR_DEFNS_PRICING'
458                                       ,CURR_ATTRIBUTE_CONTEXT);
459     END IF;
460     RETURN (X_CONTEXT);
461   END CF_ATTRIBUTE_CONTEXTFORMULA;
462 
463   FUNCTION CF_ATTRIBUTEFORMULA(CURR_ATTRIBUTE_TYPE IN VARCHAR2
464                               ,CURR_ATTRIBUTE_CONTEXT IN VARCHAR2
465                               ,CURR_ATTRIBUTE IN VARCHAR2) RETURN CHAR IS
466     X_ATTRIBUTE_CODE VARCHAR2(80);
467     X_SEGMENT_NAME VARCHAR2(80);
468   BEGIN
469     IF CURR_ATTRIBUTE_TYPE = 'QUALIFIER' THEN
470       QP_UTIL.GET_ATTRIBUTE_CODE('QP_ATTR_DEFNS_QUALIFIER'
471                                 ,CURR_ATTRIBUTE_CONTEXT
472                                 ,CURR_ATTRIBUTE
473                                 ,X_ATTRIBUTE_CODE
474                                 ,X_SEGMENT_NAME);
475     ELSIF CURR_ATTRIBUTE_TYPE in ('PRICING','PRODUCT') THEN
476       QP_UTIL.GET_ATTRIBUTE_CODE('QP_ATTR_DEFNS_PRICING'
477                                 ,CURR_ATTRIBUTE_CONTEXT
478                                 ,CURR_ATTRIBUTE
479                                 ,X_ATTRIBUTE_CODE
480                                 ,X_SEGMENT_NAME);
481     END IF;
482     RETURN (X_ATTRIBUTE_CODE);
483   END CF_ATTRIBUTEFORMULA;
484 
485   FUNCTION CF_ATTRIBUTE_VALUEFORMULA(CURR_ATTRIBUTE_TYPE IN VARCHAR2
486                                     ,CURR_ATTRIBUTE_CONTEXT IN VARCHAR2
487                                     ,CURR_ATTRIBUTE IN VARCHAR2
488                                     ,CURR_ATTRIBUTE_VALUE IN VARCHAR2) RETURN CHAR IS
489     L_ATTR_VALUE VARCHAR2(240);
490   BEGIN
491     IF CURR_ATTRIBUTE_TYPE = 'QUALIFIER' THEN
492       L_ATTR_VALUE := QP_UTIL.GET_ATTRIBUTE_VALUE(P_FLEXFIELD_NAME => 'QP_ATTR_DEFNS_QUALIFIER'
493                                                  ,P_CONTEXT_NAME => CURR_ATTRIBUTE_CONTEXT
494                                                  ,P_SEGMENT_NAME => CURR_ATTRIBUTE
495                                                  ,P_ATTR_VALUE => CURR_ATTRIBUTE_VALUE
496                                                  ,P_COMPARISON_OPERATOR_CODE => '=');
497     ELSIF CURR_ATTRIBUTE_TYPE in ('PRODUCT','PRICING') THEN
498       IF CURR_ATTRIBUTE_CONTEXT = 'ITEM' THEN
499         L_ATTR_VALUE := QP_PRICE_LIST_LINE_UTIL.GET_PRODUCT_VALUE(P_FLEXFIELD_NAME => 'QP_ATTR_DEFNS_PRICING'
500                                                                  ,P_CONTEXT_NAME => CURR_ATTRIBUTE_CONTEXT
501                                                                  ,P_ATTRIBUTE_NAME => CURR_ATTRIBUTE
502                                                                  ,P_ATTR_VALUE => CURR_ATTRIBUTE_VALUE);
503       ELSE
504         L_ATTR_VALUE := QP_UTIL.GET_ATTRIBUTE_VALUE(P_FLEXFIELD_NAME => 'QP_ATTR_DEFNS_PRICING'
505                                                    ,P_CONTEXT_NAME => CURR_ATTRIBUTE_CONTEXT
506                                                    ,P_SEGMENT_NAME => CURR_ATTRIBUTE
507                                                    ,P_ATTR_VALUE => CURR_ATTRIBUTE_VALUE
508                                                    ,P_COMPARISON_OPERATOR_CODE => '=');
509       END IF;
510     END IF;
511     RETURN L_ATTR_VALUE;
512   END CF_ATTRIBUTE_VALUEFORMULA;
513 
514   FUNCTION CF_PRODUCT_ATTR_VAL_DISPFORMUL(PRODUCT_ATTRIBUTE_CONTEXT1 IN VARCHAR2
515                                          ,PRODUCT_ATTRIBUTE1 IN VARCHAR2
516                                          ,PRODUCT_ATTR_VALUE IN VARCHAR2
517                                          ,PRODUCT_ATTR_VAL_DISP IN VARCHAR2) RETURN CHAR IS
518   BEGIN
519     DECLARE
520       V_ITEM_NAME VARCHAR2(240);
521     BEGIN
525         INTO V_ITEM_NAME
522       IF (PRODUCT_ATTRIBUTE_CONTEXT1 = 'ITEM' AND PRODUCT_ATTRIBUTE1 = 'PRICING_ATTRIBUTE1') THEN
523         SELECT
524           CONCATENATED_SEGMENTS
526         FROM
527           MTL_SYSTEM_ITEMS_VL
528         WHERE INVENTORY_ITEM_ID = TO_NUMBER(PRODUCT_ATTR_VALUE)
529           AND ORGANIZATION_ID = P_ITEM_ORGANIZATION;
530         RETURN V_ITEM_NAME;
531       ELSE
532         RETURN PRODUCT_ATTR_VAL_DISP;
533       END IF;
534     END;
535   END CF_PRODUCT_ATTR_VAL_DISPFORMUL;
536 
537   FUNCTION CF_QUAL_ATTR_VALUE_TOFORMULA(QUALIFIER_CONTEXT IN VARCHAR2
538                                        ,QUALIFIER_ATTRIBUTE IN VARCHAR2
539                                        ,QUALIFIER_ATTR_VALUE_TO IN VARCHAR2
540                                        ,COMPARISION_OPERATOR_CODE IN VARCHAR2) RETURN CHAR IS
541     L_QUALIFIER_ATTR_VALUE_TO VARCHAR2(240);
542   BEGIN
543     L_QUALIFIER_ATTR_VALUE_TO := QP_UTIL.GET_ATTRIBUTE_VALUE(P_FLEXFIELD_NAME => 'QP_ATTR_DEFNS_QUALIFIER'
544                                                             ,P_CONTEXT_NAME => QUALIFIER_CONTEXT
545                                                             ,P_SEGMENT_NAME => QUALIFIER_ATTRIBUTE
546                                                             ,P_ATTR_VALUE => QUALIFIER_ATTR_VALUE_TO
547                                                             ,P_COMPARISON_OPERATOR_CODE => COMPARISION_OPERATOR_CODE);
548     IF (QUALIFIER_CONTEXT = 'ORDER' AND QUALIFIER_ATTRIBUTE = 'QUALIFIER_ATTRIBUTE5') THEN
549       BEGIN
550         SELECT
551           ORDER_NUMBER
552         INTO L_QUALIFIER_ATTR_VALUE_TO
553         FROM
554           OE_BLANKET_HEADERS_ALL
555         WHERE HEADER_ID = QUALIFIER_ATTR_VALUE_TO;
556       EXCEPTION
557         WHEN OTHERS THEN
558           NULL;
559       END;
560     ELSIF (QUALIFIER_CONTEXT = 'ORDER' AND QUALIFIER_ATTRIBUTE = 'QUALIFIER_ATTRIBUTE6') THEN
561       BEGIN
562         SELECT
563           H.ORDER_NUMBER || '-' || L.LINE_NUMBER
564         INTO L_QUALIFIER_ATTR_VALUE_TO
565         FROM
566           OE_BLANKET_HEADERS_ALL H,
567           OE_BLANKET_LINES_ALL L
568         WHERE L.LINE_ID = QUALIFIER_ATTR_VALUE_TO
569           AND H.HEADER_ID = L.HEADER_ID;
570       EXCEPTION
571         WHEN OTHERS THEN
572           NULL;
573       END;
574     END IF;
575     RETURN L_QUALIFIER_ATTR_VALUE_TO;
576   END CF_QUAL_ATTR_VALUE_TOFORMULA;
577 
578   FUNCTION AFTERREPORT RETURN BOOLEAN IS
579   BEGIN
580     BEGIN
581       /*SRW.USER_EXIT('FND SRWEXIT')*/NULL;
582     EXCEPTION
583       WHEN /*SRW.USER_EXIT_FAILURE*/OTHERS THEN
584         /*SRW.MESSAGE(1
585                    ,'Failed in AFTER REPORT TRIGGER')*/NULL;
586         RETURN (FALSE);
587     END;
588     RETURN (TRUE);
589   END AFTERREPORT;
590 
591   FUNCTION RP_REPORT_NAME_P RETURN VARCHAR2 IS
592   BEGIN
593     RETURN RP_REPORT_NAME;
594   END RP_REPORT_NAME_P;
595 
596   FUNCTION RP_COMPANY_NAME_P RETURN VARCHAR2 IS
597   BEGIN
598     RETURN RP_COMPANY_NAME;
599   END RP_COMPANY_NAME_P;
600 
601 END QP_QPXPRCST_XMLP_PKG;