DBA Data[Home] [Help]

PACKAGE BODY: APPS.ONT_OEXOEOCR_XMLP_PKG

Source


1 PACKAGE BODY ONT_OEXOEOCR_XMLP_PKG AS
2 /* $Header: OEXOEOCRB.pls 120.3.12020000.2 2013/03/12 08:38:42 adandu ship $ */
3   FUNCTION BEFOREREPORT RETURN BOOLEAN IS
4   BEGIN
5     BEGIN
6       BEGIN
7         P_CONC_REQUEST_ID := FND_GLOBAL.CONC_REQUEST_ID;
8         /*SRW.USER_EXIT('FND SRWINIT')*/NULL;
9       EXCEPTION
10         WHEN /*SRW.USER_EXIT_FAILURE*/OTHERS THEN
11           BEGIN
12             /*SRW.MESSAGE(1000
13                        ,'Failed in BEFORE REPORT trigger')*/NULL;
14             /*RAISE SRW.PROGRAM_ABORT*/RAISE_APPLICATION_ERROR(-20101,null);
15           END;
16       END;
17       BEGIN
18         P_ORGANIZATION_ID := MO_GLOBAL.GET_CURRENT_ORG_ID;
19       END;
20       BEGIN
21         IF P_ITEM IS NOT NULL THEN
22           SELECT
23             CONCATENATED_SEGMENTS
24           INTO P_ITEM_NAME
25           FROM
26             MTL_SYSTEM_ITEMS_KFV
27           WHERE INVENTORY_ITEM_ID = P_ITEM
28             AND CUSTOMER_ORDER_ENABLED_FLAG = 'Y'
29             AND BOM_ITEM_TYPE in ( 1 , 4 )
30             AND ORGANIZATION_ID = OE_SYS_PARAMETERS.VALUE('MASTER_ORGANIZATION_ID');
31         END IF;
32       END;
33       DECLARE
34         L_COMPANY_NAME VARCHAR2(100);
35         L_FUNCTIONAL_CURRENCY VARCHAR2(15);
36       BEGIN
37         SELECT
38           SOB.NAME,
39           SOB.CURRENCY_CODE
40         INTO L_COMPANY_NAME,L_FUNCTIONAL_CURRENCY
41         FROM
42           GL_SETS_OF_BOOKS SOB,
43           FND_CURRENCIES CUR
44         WHERE SOB.SET_OF_BOOKS_ID = P_SOB_ID
45           AND SOB.CURRENCY_CODE = CUR.CURRENCY_CODE;
46         RP_COMPANY_NAME := L_COMPANY_NAME;
47         RP_FUNCTIONAL_CURRENCY := L_FUNCTIONAL_CURRENCY;
48       EXCEPTION
49         WHEN NO_DATA_FOUND THEN
50           NULL;
51       END;
52       BEGIN
53         /*SRW.REFERENCE(P_ITEM_FLEX_CODE)*/NULL;
54         /*SRW.REFERENCE(P_ITEM_STRUCTURE_NUM)*/NULL;
55         IF P_ITEM IS NOT NULL THEN
56           LP_ITEM_FLEX_ALL_SEG := ' and ' || RP_ITEM_FLEX_ALL_SEG_WHERE;
57         ELSE
58    LP_ITEM_FLEX_ALL_SEG := ' ';
59         END IF;
60       EXCEPTION
61         WHEN /*SRW.USER_EXIT_FAILURE*/OTHERS THEN
62           /*SRW.MESSAGE(1
63                      ,'Failed in before report trigger:MSTK')*/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 := SUBSTR(L_REPORT_NAME,1,INSTR(L_REPORT_NAME,' (XML)'));
78       EXCEPTION
79         WHEN NO_DATA_FOUND THEN
80           RP_REPORT_NAME := 'Cancelled Orders Reason Detail Report';
81       END;
82     END;
83     LP_ORDER_BY := UPPER(P_ORDER_BY);
84     LP_ORDER_DATE_LOW := TO_CHAR(P_ORDER_DATE_LOW,'DD-MON-YY');
85     LP_ORDER_DATE_HIGH := TO_CHAR(P_ORDER_DATE_HIGH,'DD-MON-YY');
86     LP_CANCEL_DATE_LOW := TO_CHAR(P_CANCEL_DATE_LOW,'DD-MON-YY');
87     LP_CANCEL_DATE_HIGH := TO_CHAR(P_CANCEL_DATE_HIGH,'DD-MON-YY');
88     RETURN (TRUE);
89   END BEFOREREPORT;
90 
91   FUNCTION AFTERREPORT RETURN BOOLEAN IS
92   BEGIN
93     BEGIN
94       /*SRW.USER_EXIT('FND SRWEXIT')*/NULL;
95     EXCEPTION
96       WHEN /*SRW.USER_EXIT_FAILURE*/OTHERS THEN
97         /*SRW.MESSAGE(1
98                    ,'Failed in AFTER REPORT TRIGGER')*/NULL;
99         RETURN (FALSE);
100     END;
101     RETURN (TRUE);
102   END AFTERREPORT;
103 
104   FUNCTION P_ITEM_FLEX_CODEVALIDTRIGGER RETURN BOOLEAN IS
105   BEGIN
106     RETURN (TRUE);
107   END P_ITEM_FLEX_CODEVALIDTRIGGER;
108 
109   FUNCTION P_USE_FUNCTIONAL_CURRENCYVALID RETURN BOOLEAN IS
110   BEGIN
111     RETURN (TRUE);
112   END P_USE_FUNCTIONAL_CURRENCYVALID;
113 
114   FUNCTION AFTERPFORM RETURN BOOLEAN IS
115   BEGIN
116     BEGIN
117       IF P_ORDER_NUM_LOW IS NOT NULL AND P_ORDER_NUM_HIGH IS NOT NULL THEN
118         LP_ORDER_NUM := ' AND  h.order_number  between to_number(:p_order_num_low) and to_number(:p_order_num_high)  ';
119       ELSIF (P_ORDER_NUM_LOW IS NOT NULL) THEN
120         LP_ORDER_NUM := 'and h.order_number >= to_number(:p_order_num_low) ';
121       ELSIF (P_ORDER_NUM_HIGH IS NOT NULL) THEN
122         LP_ORDER_NUM := 'and h.order_number <= to_number(:p_order_num_high) ';
123       ELSE
124         LP_ORDER_NUM := ' ';
125       END IF;
126       IF P_SALESREP_LOW IS NOT NULL AND P_SALESREP_HIGH IS NOT NULL THEN
127         LP_SALESREP := ' AND nvl(sr.name,''zzzzzz'') between :p_salesrep_low and :p_salesrep_high ';
128       ELSIF (P_SALESREP_LOW IS NOT NULL) THEN
129         LP_SALESREP := 'and sr.name >= :p_salesrep_low ';
130       ELSIF (P_SALESREP_HIGH IS NOT NULL) THEN
131         LP_SALESREP := 'and sr.name <= :p_salesrep_high ';
132       ELSE
133         LP_SALESREP := ' ';  --praveen
134       END IF;
135       IF P_CANCEL_DATE_LOW IS NOT NULL AND P_CANCEL_DATE_HIGH IS NOT NULL THEN
136         LP_CANCEL_DATE := ' AND  trunc(lh.hist_creation_date, ''DD'')
137                                                    between  trunc(:p_cancel_date_low, ''DD'')
138                                                        and  trunc(:p_cancel_date_high, ''DD'') ';
139       ELSIF (P_CANCEL_DATE_LOW IS NOT NULL) THEN
140         LP_CANCEL_DATE := ' AND  trunc(lh.hist_creation_date, ''DD'')
141                                                         >=  trunc(:p_cancel_date_low, ''DD'') ';
142       ELSIF (P_CANCEL_DATE_HIGH IS NOT NULL) THEN
143         LP_CANCEL_DATE := ' AND  trunc(lh.hist_creation_date, ''DD'')
144                                                         <=  trunc(:p_cancel_date_high, ''DD'') ';
145       ELSE
146  LP_CANCEL_DATE := ' ';
147       END IF;
148       IF P_ORDER_DATE_LOW IS NOT NULL AND P_ORDER_DATE_HIGH IS NOT NULL THEN
149         LP_ORDER_DATE := ' AND  trunc(h.ordered_date, ''DD'')
150                                                   between  trunc(:p_order_date_low, ''DD'')
151                                                       and  trunc(:p_order_date_high, ''DD'') ';
152       ELSIF (P_ORDER_DATE_LOW IS NOT NULL) THEN
153         LP_ORDER_DATE := ' AND  trunc(h.ordered_date, ''DD'')
154                                                        >=  trunc(:p_order_date_low, ''DD'') ';
155       ELSIF (P_ORDER_DATE_HIGH IS NOT NULL) THEN
156         LP_ORDER_DATE := ' AND  trunc(h.ordered_date, ''DD'')
157                                                        <=  trunc(:p_order_date_high, ''DD'') ';
158       ELSE
159         LP_ORDER_DATE := ' ';
160       END IF;
161       IF P_CUSTOMER_NAME_LOW IS NOT NULL AND P_CUSTOMER_NAME_HIGH IS NOT NULL THEN
162         LP_CUSTOMER_NAME := ' AND  org.name between :p_customer_name_low and :p_customer_name_high ';
163       ELSIF (P_CUSTOMER_NAME_LOW IS NOT NULL) THEN
164         LP_CUSTOMER_NAME := 'and org.name >= :p_customer_name_low ';
165       ELSIF (P_CUSTOMER_NAME_HIGH IS NOT NULL) THEN
166         LP_CUSTOMER_NAME := 'and org.name <= :p_customer_name_high ';
167       ELSE
168  LP_CUSTOMER_NAME := ' '; --praveen
169       END IF;
170       IF P_CANCELLED_BY_LOW IS NOT NULL AND P_CANCELLED_BY_HIGH IS NOT NULL THEN
171         LP_CANCELLED_BY := ' and fnd_user.user_name between :p_cancelled_by_low and
172                                                       :p_cancelled_by_high ';
173       ELSIF (P_CANCELLED_BY_LOW IS NOT NULL) THEN
174         LP_CANCELLED_BY := 'and fnd_user.user_name >= :p_cancelled_by_low ';
175       ELSIF (P_CANCELLED_BY_HIGH IS NOT NULL) THEN
176         LP_CANCELLED_BY := ' and fnd_user.user_name <= :p_cancelled_by_high ';
177       ELSE
178         LP_CANCELLED_BY := ' ';
179       END IF;
180       IF P_CANCEL_REASON IS NOT NULL THEN
181         LP_CANCEL_REASON := ' and r.reason_code = :p_cancel_reason ';
182       ELSE
183         LP_CANCEL_REASON := ' ';
184       END IF;
185       IF P_ORDER_NUM_LOW = P_ORDER_NUM_HIGH THEN
186         NULL;
187       ELSE
188         IF P_ORDER_CATEGORY IS NOT NULL THEN
189           IF P_ORDER_CATEGORY = 'SALES' THEN
190             LP_ORDER_CATEGORY := 'and h.order_category_code in (''ORDER'', ''MIXED'') ';
191           ELSIF P_ORDER_CATEGORY = 'CREDIT' THEN
192             LP_ORDER_CATEGORY := 'and h.order_category_code in (''RETURN'', ''MIXED'') ';
193           ELSIF P_ORDER_CATEGORY = 'ALL' THEN
194             LP_ORDER_CATEGORY := ' '; --praveen
195           END IF;
196         ELSE
197           LP_ORDER_CATEGORY := 'and h.order_category_code in (''ORDER'', ''MIXED'') ';
198         END IF;
199       END IF;
200       IF P_LINE_CATEGORY IS NOT NULL THEN
201         IF P_LINE_CATEGORY = 'SALES' THEN
202           LP_LINE_CATEGORY := 'and lh.line_category_code = ''ORDER'' ';
203         ELSIF P_LINE_CATEGORY = 'CREDIT' THEN
204           LP_LINE_CATEGORY := 'and lh.line_category_code = ''RETURN'' ';
205         ELSIF P_LINE_CATEGORY = 'ALL' THEN
206           LP_LINE_CATEGORY := ' '; --praveen
207         END IF;
208       ELSE
209         LP_LINE_CATEGORY := 'and lh.line_category_code = ''ORDER'' ';
210       END IF;
211     END;
212     RETURN (TRUE);
213   END AFTERPFORM;
214 
215   FUNCTION C_SET_LBLFORMULA RETURN VARCHAR2 IS
216   BEGIN
217     BEGIN
218       /*SRW.REFERENCE(P_ORDER_BY)*/NULL;
219       IF UPPER(P_ORDER_BY) = 'SALESREP' THEN
220         RP_SALES_REASON_LBL := 'Salesperson';
221         RP_SALES_REASON_LBL_2 := 'Salesperson: ';
222       ELSIF UPPER(P_ORDER_BY) = 'CANCEL_REASON' THEN
223         RP_SALES_REASON_LBL := 'Cancel Reason';
224         RP_SALES_REASON_LBL_2 := 'Cancel Reason: ';
225       ELSIF UPPER(P_ORDER_BY) = 'ORDER_DATE' THEN
226         RP_DATE_LBL := 'Order Date';
227       ELSIF UPPER(P_ORDER_BY) = 'CANCEL_DATE' THEN
228         RP_DATE_LBL := 'Cancel Date';
229       END IF;
230       IF P_CUSTOMER_NAME_LOW IS NOT NULL OR P_CUSTOMER_NAME_HIGH IS NOT NULL THEN
231         RP_CUSTOMER_RANGE := 'From ' || NVL(SUBSTR(P_CUSTOMER_NAME_LOW
232                                        ,1
233                                        ,16)
234                                 ,'     ') || ' To ' || NVL(SUBSTR(P_CUSTOMER_NAME_HIGH
235                                        ,1
236                                        ,16)
237                                 ,'     ');
238       END IF;
239       IF P_SALESREP_LOW IS NOT NULL OR P_SALESREP_HIGH IS NOT NULL THEN
240         RP_SALESPERSON_RANGE := 'From ' || NVL(SUBSTR(P_SALESREP_LOW
241                                           ,1
242                                           ,16)
243                                    ,'     ') || ' To ' || NVL(SUBSTR(P_SALESREP_HIGH
244                                           ,1
245                                           ,16)
246                                    ,'     ');
247       END IF;
248       IF P_CANCEL_DATE_LOW IS NOT NULL AND P_CANCEL_DATE_HIGH IS NOT NULL THEN
249         RP_CANCEL_DATE_RANGE := 'From ' || LP_CANCEL_DATE_LOW || ' To ' || LP_CANCEL_DATE_HIGH;
250       ELSIF P_CANCEL_DATE_LOW IS NOT NULL THEN
251         RP_CANCEL_DATE_RANGE := 'From ' || LP_CANCEL_DATE_LOW || ' To ' || '       ';
252       ELSIF P_CANCEL_DATE_HIGH IS NOT NULL THEN
253         RP_CANCEL_DATE_RANGE := 'From ' || '       ' || ' To ' || LP_CANCEL_DATE_HIGH;
254       END IF;
255       IF P_ORDER_DATE_LOW IS NOT NULL AND P_ORDER_DATE_HIGH IS NOT NULL THEN
256         RP_ORDER_DATE_RANGE := 'From ' || LP_ORDER_DATE_LOW || ' To ' || LP_ORDER_DATE_HIGH;
257       ELSIF P_ORDER_DATE_LOW IS NOT NULL THEN
258         RP_ORDER_DATE_RANGE := 'From ' || LP_ORDER_DATE_LOW || ' To ' || '       ';
259       ELSIF P_ORDER_DATE_HIGH IS NOT NULL THEN
260         RP_ORDER_DATE_RANGE := 'From ' || '       ' || ' To ' || LP_ORDER_DATE_HIGH;
261       END IF;
262       IF P_ORDER_NUM_LOW IS NOT NULL OR P_ORDER_NUM_HIGH IS NOT NULL THEN
263         RP_ORDER_RANGE := 'From ' || NVL(P_ORDER_NUM_LOW
264                              ,'     ') || ' To ' || NVL(P_ORDER_NUM_HIGH
265                              ,'     ');
266       END IF;
267       IF P_CANCELLED_BY_LOW IS NOT NULL OR P_CANCELLED_BY_HIGH IS NOT NULL THEN
268         RP_CANCELLED_BY_RANGE := 'From ' || NVL(SUBSTR(P_CANCELLED_BY_LOW
269                                            ,1
270                                            ,16)
271                                     ,'     ') || ' To ' || NVL(SUBSTR(P_CANCELLED_BY_HIGH
272                                            ,1
273                                            ,16)
274                                     ,'     ');
275       END IF;
276       IF P_ORDER_BY IS NOT NULL THEN
277         DECLARE
278           ORDER_BY VARCHAR2(80);
279           L_LOOKUP_TYPE VARCHAR2(80);
280           L_LOOKUP_CODE VARCHAR2(80);
281         BEGIN
282           L_LOOKUP_TYPE := 'OEXOEOCR SORT BY';
283           L_LOOKUP_CODE := P_ORDER_BY;
284           SELECT
285             MEANING
286           INTO ORDER_BY
287           FROM
288             OE_LOOKUPS
289           WHERE LOOKUP_TYPE = L_LOOKUP_TYPE
290             AND LOOKUP_CODE = L_LOOKUP_CODE;
291           RP_ORDER_BY := ORDER_BY;
292         EXCEPTION
293           WHEN NO_DATA_FOUND THEN
294             RP_ORDER_BY := P_ORDER_BY;
295         END;
296       END IF;
297       IF P_CANCEL_REASON IS NOT NULL THEN
298         DECLARE
299           MEANING VARCHAR2(80);
300           L_LOOKUP_TYPE VARCHAR2(80);
301           L_LOOKUP_CODE VARCHAR2(80);
302         BEGIN
303           L_LOOKUP_TYPE := 'CANCEL_CODE';
304           L_LOOKUP_CODE := P_CANCEL_REASON;
305           SELECT
306             MEANING
307           INTO MEANING
308           FROM
309             OE_LOOKUPS
310           WHERE LOOKUP_TYPE = L_LOOKUP_TYPE
311             AND LOOKUP_CODE = L_LOOKUP_CODE;
312           RP_CANCEL_REASON := MEANING;
313         EXCEPTION
314           WHEN NO_DATA_FOUND THEN
315             RP_CANCEL_REASON := P_CANCEL_REASON;
316         END;
317       END IF;
318       DECLARE
319         MEANING VARCHAR2(80);
320         L_LOOKUP_TYPE VARCHAR2(80);
321         L_LOOKUP_CODE VARCHAR2(80);
322       BEGIN
323         L_LOOKUP_TYPE := 'YES_NO';
324         L_LOOKUP_CODE := P_USE_FUNCTIONAL_CURRENCY;
325         SELECT
326           MEANING
327         INTO MEANING
328         FROM
329           FND_LOOKUPS
330         WHERE LOOKUP_TYPE = L_LOOKUP_TYPE
331           AND LOOKUP_CODE = L_LOOKUP_CODE;
332         RP_USE_FUNCTIONAL_CURRENCY := MEANING;
333       EXCEPTION
334         WHEN NO_DATA_FOUND THEN
335           RP_USE_FUNCTIONAL_CURRENCY := P_USE_FUNCTIONAL_CURRENCY;
336       END;
337       DECLARE
338         ITEM_DISPLAY_MEANING VARCHAR2(80);
339         L_LOOKUP_TYPE VARCHAR2(80);
340         L_LOOKUP_CODE VARCHAR2(80);
341       BEGIN
342         L_LOOKUP_TYPE := 'ITEM_DISPLAY_CODE';
343         L_LOOKUP_CODE := P_PRINT_DESCRIPTION;
344         SELECT
345           MEANING
346         INTO ITEM_DISPLAY_MEANING
347         FROM
348           OE_LOOKUPS
349         WHERE LOOKUP_TYPE = L_LOOKUP_TYPE
350           AND LOOKUP_CODE = L_LOOKUP_CODE;
351         RP_FLEX_OR_DESC := ITEM_DISPLAY_MEANING;
352       END;
353       RETURN (1);
354     END;
355     RETURN NULL;
356   END C_SET_LBLFORMULA;
357 
358   FUNCTION C_GL_CONV_RATEFORMULA(CURRENCY_CODE IN VARCHAR2
359                                 ,ORD_DATE IN DATE
360                                 ,CONVERSION_TYPE_CODE IN VARCHAR2
361                                 ,CONVERSION_RATE IN NUMBER) RETURN NUMBER IS
362   BEGIN
363     DECLARE
364       GL_RATE NUMBER;
365     BEGIN
366       /*SRW.REFERENCE(CURRENCY_CODE)*/NULL;
367       /*SRW.REFERENCE(ORD_DATE)*/NULL;
368       /*SRW.REFERENCE(CONVERSION_TYPE_CODE)*/NULL;
369       IF P_USE_FUNCTIONAL_CURRENCY = 'Y' THEN
370         IF CURRENCY_CODE = RP_FUNCTIONAL_CURRENCY THEN
371           RETURN (1);
372         ELSE
373           IF CONVERSION_RATE IS NULL THEN
374             GL_RATE := GET_RATE(P_SOB_ID
375                                ,CURRENCY_CODE
376                                ,ORD_DATE
377                                ,CONVERSION_TYPE_CODE);
378             RETURN (GL_RATE);
379           ELSE
380             RETURN (CONVERSION_RATE);
381           END IF;
382         END IF;
383       ELSE
384         RETURN (1);
385       END IF;
386     EXCEPTION
387       WHEN NO_DATA_FOUND THEN
388         RETURN (-1);
389       WHEN OTHERS THEN
390         RETURN (-1);
391     END;
392     RETURN NULL;
393   END C_GL_CONV_RATEFORMULA;
394 
395   FUNCTION C_AMOUNTFORMULA(CALC_AMOUNT IN NUMBER
396                           ,C_GL_CONV_RATE IN NUMBER
397                           ,C_PRECISION IN NUMBER) RETURN NUMBER IS
398   BEGIN
399     DECLARE
400       ORDER_AMOUNT NUMBER(14,2);
401 
402     BEGIN
403       /*SRW.REFERENCE(CALC_AMOUNT)*/NULL;
404       /*SRW.REFERENCE(C_GL_CONV_RATE)*/NULL;
405       /*SRW.REFERENCE(C_PRECISION)*/NULL;
406       IF P_USE_FUNCTIONAL_CURRENCY = 'Y' THEN
407         IF C_GL_CONV_RATE <> -1 THEN
408           SELECT
409             C_GL_CONV_RATE * CALC_AMOUNT
410           INTO ORDER_AMOUNT
411           FROM
412             DUAL;
413           RETURN (ROUND(ORDER_AMOUNT
414                       ,C_PRECISION));
415         ELSE
416           RETURN (0);
417         END IF;
418       ELSE
419         RETURN (ROUND(CALC_AMOUNT
420                     ,C_PRECISION));
421       END IF;
422     END;
423     RETURN NULL;
424   END C_AMOUNTFORMULA;
425 
426   FUNCTION C_CURRENCY_CODEFORMULA(CURRENCY_CODE IN VARCHAR2) RETURN VARCHAR2 IS
427   BEGIN
428     /*SRW.REFERENCE(CURRENCY_CODE)*/NULL;
429     IF P_USE_FUNCTIONAL_CURRENCY = 'Y' THEN
430       RETURN (RP_FUNCTIONAL_CURRENCY);
431     ELSE
432       RETURN (CURRENCY_CODE);
433     END IF;
434     RETURN NULL;
435   END C_CURRENCY_CODEFORMULA;
436 
437   FUNCTION PR_ORDER_CATEGORYFORMULA RETURN CHAR IS
438   BEGIN
439     DECLARE
440       L_MEANING VARCHAR2(80);
441       L_LOOKUP_TYPE VARCHAR2(80);
442       L_LOOKUP_CODE VARCHAR2(80);
443     BEGIN
444       L_LOOKUP_TYPE := 'REPORT_ORDER_CATEGORY';
445       L_LOOKUP_CODE := P_ORDER_CATEGORY;
446       SELECT
447         MEANING
448       INTO L_MEANING
449       FROM
450         OE_LOOKUPS
451       WHERE LOOKUP_TYPE = L_LOOKUP_TYPE
452         AND LOOKUP_CODE = L_LOOKUP_CODE;
453       RETURN (L_MEANING);
454     EXCEPTION
455       WHEN NO_DATA_FOUND THEN
456         RETURN (NULL);
457     END;
458   END PR_ORDER_CATEGORYFORMULA;
459 
460   FUNCTION RP_LINE_CATEGORYFORMULA RETURN VARCHAR2 IS
461   BEGIN
462     DECLARE
463       L_MEANING VARCHAR2(80);
464       L_LOOKUP_TYPE VARCHAR2(80);
465       L_LOOKUP_CODE VARCHAR2(80);
466     BEGIN
467       L_LOOKUP_TYPE := 'REPORT_LINE_DISPLAY';
468       L_LOOKUP_CODE := P_LINE_CATEGORY;
469       SELECT
470         MEANING
471       INTO L_MEANING
472       FROM
473         OE_LOOKUPS
474       WHERE LOOKUP_TYPE = L_LOOKUP_TYPE
475         AND LOOKUP_CODE = L_LOOKUP_CODE;
476       RETURN (L_MEANING);
477     EXCEPTION
478       WHEN NO_DATA_FOUND THEN
479         RETURN (NULL);
480     END;
481   END RP_LINE_CATEGORYFORMULA;
482 
483   FUNCTION CF_UNIT1FORMULA(UNIT1 IN VARCHAR2) RETURN CHAR IS
484   BEGIN
485     CP_UNIT1 := UNIT1;
486     RETURN 1;
487   END CF_UNIT1FORMULA;
488 
489   FUNCTION CF_UNIT2FORMULA(UNIT2 IN VARCHAR2) RETURN CHAR IS
490   BEGIN
491     CP_UNIT2 := UNIT2;
492     RETURN 1;
493   END CF_UNIT2FORMULA;
494 
495   FUNCTION C_CANCELLED_QTYFORMULA(LINEID IN NUMBER
496                                  ,CANCELLED_QTY IN NUMBER) RETURN NUMBER IS
497   BEGIN
498     DECLARE
499       HIST_LINES NUMBER;
500       CAN_QTY_1 NUMBER;
501       ORD_QTY_MAX NUMBER;
502       CAN_QTY_MAX NUMBER;
503       CAN_QTY_FINAL1 NUMBER;
504       CAN_QTY_FINAL2 NUMBER;
505     BEGIN
506       SELECT
507         COUNT(1)
508       INTO HIST_LINES
509       FROM
510         OE_ORDER_LINES_HISTORY
511       WHERE LINE_ID = LINEID
512         AND HIST_TYPE_CODE = 'CANCELLATION';
513       IF HIST_LINES = 1 THEN
514         SELECT
515           CANCELLED_QUANTITY
516         INTO CAN_QTY_1
517         FROM
518           OE_ORDER_LINES_ALL
519         WHERE LINE_ID = LINEID;
520         RETURN (CAN_QTY_1);
521       ELSE
522         SELECT
523           MAX(ORDERED_QUANTITY),
524           MAX(CANCELLED_QUANTITY)
525         INTO ORD_QTY_MAX,CAN_QTY_MAX
526         FROM
527           OE_ORDER_LINES_HISTORY
528         WHERE LINE_ID = LINEID
529           AND HIST_TYPE_CODE = 'CANCELLATION';
530         IF CANCELLED_QTY = CAN_QTY_MAX THEN
531           SELECT
532             ( CANCELLED_QUANTITY - CAN_QTY_MAX )
533           INTO CAN_QTY_FINAL1
534           FROM
535             OE_ORDER_LINES_ALL
536           WHERE LINE_ID = LINEID;
537           RETURN (CAN_QTY_FINAL1);
538         ELSE
539           SELECT
540             MIN(CANCELLED_QUANTITY)
541           INTO CAN_QTY_FINAL2
542           FROM
543             OE_ORDER_LINES_HISTORY
544           WHERE LINE_ID = LINEID
545             AND CANCELLED_QUANTITY > CANCELLED_QTY
546             AND HIST_TYPE_CODE = 'CANCELLATION';
547           RETURN (CAN_QTY_FINAL2 - CANCELLED_QTY);
548         END IF;
549       END IF;
550     EXCEPTION
551       WHEN NO_DATA_FOUND THEN
552         RETURN (NULL);
553     END;
554   END C_CANCELLED_QTYFORMULA;
555 
556   FUNCTION CALC_AMOUNTFORMULA(LINEID IN NUMBER
557                              ,CANCELLED_QTY IN NUMBER) RETURN NUMBER IS
558   BEGIN
559     DECLARE
560       HIST_LINES NUMBER;
561       CAN_QTY_1 NUMBER;
562       ORD_QTY_MAX NUMBER;
563       CAN_QTY_MAX NUMBER;
564       CAN_QTY_FINAL1 NUMBER;
565       CAN_QTY_FINAL2 NUMBER;
566       UNIT_SELLING_PRICE_VAR NUMBER;
567     BEGIN
568       SELECT
569         COUNT(1)
570       INTO HIST_LINES
571       FROM
572         OE_ORDER_LINES_HISTORY
573       WHERE LINE_ID = LINEID
574         AND HIST_TYPE_CODE = 'CANCELLATION';
575       IF HIST_LINES = 1 THEN
576         SELECT
577           CANCELLED_QUANTITY,
578           UNIT_SELLING_PRICE
579         INTO CAN_QTY_1,UNIT_SELLING_PRICE_VAR
580         FROM
581           OE_ORDER_LINES_ALL
582         WHERE LINE_ID = LINEID;
583         RETURN (CAN_QTY_1 * UNIT_SELLING_PRICE_VAR);
584       ELSE
585         SELECT
586           MAX(ORDERED_QUANTITY),
587           MAX(CANCELLED_QUANTITY)
588         INTO ORD_QTY_MAX,CAN_QTY_MAX
589         FROM
590           OE_ORDER_LINES_HISTORY
591         WHERE LINE_ID = LINEID
592           AND HIST_TYPE_CODE = 'CANCELLATION';
593         IF CANCELLED_QTY = CAN_QTY_MAX THEN
594           SELECT
595             ( CANCELLED_QUANTITY - CAN_QTY_MAX ),
596             UNIT_SELLING_PRICE
597           INTO CAN_QTY_FINAL1,UNIT_SELLING_PRICE_VAR
598           FROM
599             OE_ORDER_LINES_ALL
600           WHERE LINE_ID = LINEID;
601           RETURN (CAN_QTY_FINAL1 * UNIT_SELLING_PRICE_VAR);
602         ELSE
603           SELECT
604             MIN(CANCELLED_QUANTITY)
605           INTO CAN_QTY_FINAL2
606           FROM
607             OE_ORDER_LINES_HISTORY
608           WHERE LINE_ID = LINEID
609             AND CANCELLED_QUANTITY > CANCELLED_QTY
610             AND HIST_TYPE_CODE = 'CANCELLATION';
611 
612           BEGIN--Added for bug 7135763
613             SELECT
614               DISTINCT
615               UNIT_SELLING_PRICE
616             INTO UNIT_SELLING_PRICE_VAR
617             FROM
618               OE_ORDER_LINES_HISTORY
619             WHERE LINE_ID = LINEID
620               AND CANCELLED_QUANTITY = CAN_QTY_FINAL2
621               AND HIST_TYPE_CODE = 'CANCELLATION';
622             RETURN ((CAN_QTY_FINAL2 - CANCELLED_QTY) * UNIT_SELLING_PRICE_VAR);
623           EXCEPTION --Added the exception block to fix the bug 7135763
624             WHEN TOO_MANY_ROWS THEN
625              oe_debug_pub.add('Multiple records returned while fetching the Unit Selling Price for line id '||LINEID||' and the cancelled quantity '||CAN_QTY_FINAL2||' from the order lines history');
626              RETURN (NULL);
627           END;
628 
629         END IF;
630       END IF;
631     EXCEPTION
632       WHEN NO_DATA_FOUND THEN
633         RETURN (NULL);
634     END;
635   END CALC_AMOUNTFORMULA;
636 
637   FUNCTION C_PRECISIONFORMULA(CURRENCY_CODE IN VARCHAR2) RETURN NUMBER IS
638   BEGIN
639     DECLARE
640       W_PRECISION NUMBER;
641     BEGIN
642       SELECT
643         PRECISION
644       INTO W_PRECISION
645       FROM
646         FND_CURRENCIES CUR
647       WHERE CUR.CURRENCY_CODE = C_PRECISIONFORMULA.CURRENCY_CODE;
648       RETURN (W_PRECISION);
649     EXCEPTION
650       WHEN NO_DATA_FOUND THEN
651         W_PRECISION := 2;
652         RETURN (W_PRECISION);
653     END;
654     RETURN NULL;
655   END C_PRECISIONFORMULA;
656 
657   FUNCTION RP_REPORT_NAME_P RETURN VARCHAR2 IS
658   BEGIN
659     RETURN RP_REPORT_NAME;
660   END RP_REPORT_NAME_P;
661 
662   FUNCTION RP_SUB_TITLE_P RETURN VARCHAR2 IS
663   BEGIN
664     RETURN RP_SUB_TITLE;
665   END RP_SUB_TITLE_P;
666 
667   FUNCTION RP_COMPANY_NAME_P RETURN VARCHAR2 IS
668   BEGIN
669     RETURN RP_COMPANY_NAME;
670   END RP_COMPANY_NAME_P;
671 
672   FUNCTION RP_FUNCTIONAL_CURRENCY_P RETURN VARCHAR2 IS
673   BEGIN
674     RETURN RP_FUNCTIONAL_CURRENCY;
675   END RP_FUNCTIONAL_CURRENCY_P;
676 
677   FUNCTION RP_DATA_FOUND_P RETURN VARCHAR2 IS
678   BEGIN
679     RETURN RP_DATA_FOUND;
680   END RP_DATA_FOUND_P;
681 
682   FUNCTION RP_ITEM_FLEX_LPROMPT_P RETURN VARCHAR2 IS
683   BEGIN
684     RETURN RP_ITEM_FLEX_LPROMPT;
685   END RP_ITEM_FLEX_LPROMPT_P;
686 
687   FUNCTION RP_ITEM_FLEX_ALL_SEG_P RETURN VARCHAR2 IS
688   BEGIN
689     RETURN RP_ITEM_FLEX_ALL_SEG;
690   END RP_ITEM_FLEX_ALL_SEG_P;
691 
692   FUNCTION RP_ITEM_FLEX_APROMPT_P RETURN VARCHAR2 IS
693   BEGIN
694     RETURN RP_ITEM_FLEX_APROMPT;
695   END RP_ITEM_FLEX_APROMPT_P;
696 
697   FUNCTION RP_SALES_REASON_LBL_P RETURN VARCHAR2 IS
698   BEGIN
699     RETURN RP_SALES_REASON_LBL;
700   END RP_SALES_REASON_LBL_P;
701 
702   FUNCTION RP_CUSTOMER_RANGE_P RETURN VARCHAR2 IS
703   BEGIN
704     RETURN RP_CUSTOMER_RANGE;
705   END RP_CUSTOMER_RANGE_P;
706 
707   FUNCTION RP_SALESPERSON_RANGE_P RETURN VARCHAR2 IS
708   BEGIN
709     RETURN RP_SALESPERSON_RANGE;
710   END RP_SALESPERSON_RANGE_P;
711 
712   FUNCTION RP_ORDER_RANGE_P RETURN VARCHAR2 IS
713   BEGIN
714     RETURN RP_ORDER_RANGE;
715   END RP_ORDER_RANGE_P;
716 
717   FUNCTION RP_CANCEL_DATE_RANGE_P RETURN VARCHAR2 IS
718   BEGIN
719     RETURN RP_CANCEL_DATE_RANGE;
720   END RP_CANCEL_DATE_RANGE_P;
721 
722   FUNCTION RP_SALES_REASON_LBL_2_P RETURN VARCHAR2 IS
723   BEGIN
724     RETURN RP_SALES_REASON_LBL_2;
725   END RP_SALES_REASON_LBL_2_P;
726 
727   FUNCTION RP_ORDER_BY_P RETURN VARCHAR2 IS
728   BEGIN
729     RETURN RP_ORDER_BY;
730   END RP_ORDER_BY_P;
731 
732   FUNCTION RP_CANCEL_REASON_P RETURN VARCHAR2 IS
733   BEGIN
734     RETURN RP_CANCEL_REASON;
735   END RP_CANCEL_REASON_P;
736 
737   FUNCTION RP_USE_FUNCTIONAL_CURRENCY_P RETURN VARCHAR2 IS
738   BEGIN
739     RETURN RP_USE_FUNCTIONAL_CURRENCY;
740   END RP_USE_FUNCTIONAL_CURRENCY_P;
741 
742   FUNCTION RP_FLEX_OR_DESC_P RETURN VARCHAR2 IS
743   BEGIN
744     RETURN RP_FLEX_OR_DESC;
745   END RP_FLEX_OR_DESC_P;
746 
747   FUNCTION RP_ITEM_FLEX_ALL_SEG_WHERE_P RETURN VARCHAR2 IS
748   BEGIN
749     RETURN RP_ITEM_FLEX_ALL_SEG_WHERE;
750   END RP_ITEM_FLEX_ALL_SEG_WHERE_P;
751 
752   FUNCTION RP_ORDER_DATE_RANGE_P RETURN VARCHAR2 IS
753   BEGIN
754     RETURN RP_ORDER_DATE_RANGE;
755   END RP_ORDER_DATE_RANGE_P;
756 
757   FUNCTION RP_CANCELLED_BY_RANGE_P RETURN VARCHAR2 IS
758   BEGIN
759     RETURN RP_CANCELLED_BY_RANGE;
760   END RP_CANCELLED_BY_RANGE_P;
761 
762   FUNCTION RP_DATE_LBL_P RETURN VARCHAR2 IS
763   BEGIN
764     RETURN RP_DATE_LBL;
765   END RP_DATE_LBL_P;
766 
767   FUNCTION CP_UNIT1_P RETURN VARCHAR2 IS
768   BEGIN
769     RETURN CP_UNIT1;
770   END CP_UNIT1_P;
771 
772   FUNCTION CP_UNIT2_P RETURN VARCHAR2 IS
773   BEGIN
774     RETURN CP_UNIT2;
775   END CP_UNIT2_P;
776 
777   FUNCTION RP_DUMMY_ITEM_P RETURN NUMBER IS
778   BEGIN
779     RETURN RP_DUMMY_ITEM;
780   END RP_DUMMY_ITEM_P;
781 
782   FUNCTION IS_FIXED_RATE(X_FROM_CURRENCY IN VARCHAR2
783                         ,X_TO_CURRENCY IN VARCHAR2
784                         ,X_EFFECTIVE_DATE IN DATE) RETURN VARCHAR2 IS
785     X0 VARCHAR2(2000);
786   BEGIN
787  /*   STPROC.INIT('begin :X0 := GL_CURRENCY_API.IS_FIXED_RATE(:X_FROM_CURRENCY, :X_TO_CURRENCY, :X_EFFECTIVE_DATE); end;');
788     STPROC.BIND_O(X0);
789     STPROC.BIND_I(X_FROM_CURRENCY);
790     STPROC.BIND_I(X_TO_CURRENCY);
791     STPROC.BIND_I(X_EFFECTIVE_DATE);
792     STPROC.EXECUTE;
793     STPROC.RETRIEVE(1
794                    ,X0);
795     RETURN X0;*/
796     NULL;
797     RETURN(NULL);
798 
799   END IS_FIXED_RATE;
800 
801   PROCEDURE GET_RELATION(X_FROM_CURRENCY IN VARCHAR2
802                         ,X_TO_CURRENCY IN VARCHAR2
803                         ,X_EFFECTIVE_DATE IN DATE
804                         ,X_FIXED_RATE IN OUT NOCOPY BOOLEAN
805                         ,X_RELATIONSHIP IN OUT NOCOPY VARCHAR2) IS
806   BEGIN
807    /* STPROC.INIT('declare X_FIXED_RATE BOOLEAN; begin X_FIXED_RATE := sys.diutil.int_to_bool(:X_FIXED_RATE); GL_CURRENCY_API.GET_RELATION(:X_FROM_CURRENCY, :X_TO_CURRENCY, :X_EFFECTIVE_DATE, X_FIXED_RATE, :X_RELATIONSHIP);
808    :X_FIXED_RATE := sys.diutil.bool_to_int(X_FIXED_RATE); end;');
809     STPROC.BIND_IO(X_FIXED_RATE);
810     STPROC.BIND_I(X_FROM_CURRENCY);
811     STPROC.BIND_I(X_TO_CURRENCY);
812     STPROC.BIND_I(X_EFFECTIVE_DATE);
813     STPROC.BIND_IO(X_RELATIONSHIP);
814     STPROC.EXECUTE;
815     STPROC.RETRIEVE(1
816                    ,X_FIXED_RATE);
817     STPROC.RETRIEVE(5
818                    ,X_RELATIONSHIP);*/
819   NULL;
820   END GET_RELATION;
821 
822   FUNCTION GET_EURO_CODE RETURN VARCHAR2 IS
823     X0 VARCHAR2(2000);
824   BEGIN
825  /*   STPROC.INIT('begin :X0 := GL_CURRENCY_API.GET_EURO_CODE; end;');
826     STPROC.BIND_O(X0);
827     STPROC.EXECUTE;
828     STPROC.RETRIEVE(1
829                    ,X0);
830     RETURN X0;*/
831     NULL;
832       RETURN(NULL);
833   END GET_EURO_CODE;
834 
835   FUNCTION GET_RATE(X_FROM_CURRENCY IN VARCHAR2
836                    ,X_TO_CURRENCY IN VARCHAR2
837                    ,X_CONVERSION_DATE IN DATE
838                    ,X_CONVERSION_TYPE IN VARCHAR2) RETURN NUMBER IS
839     X0 NUMBER;
840   BEGIN
841  /*   STPROC.INIT('begin :X0 := GL_CURRENCY_API.GET_RATE(:X_FROM_CURRENCY, :X_TO_CURRENCY, :X_CONVERSION_DATE, :X_CONVERSION_TYPE); end;');
842     STPROC.BIND_O(X0);
843     STPROC.BIND_I(X_FROM_CURRENCY);
844     STPROC.BIND_I(X_TO_CURRENCY);
845     STPROC.BIND_I(X_CONVERSION_DATE);
846     STPROC.BIND_I(X_CONVERSION_TYPE);
847     STPROC.EXECUTE;
848     STPROC.RETRIEVE(1
849                    ,X0);
850     RETURN X0;*/
851 NULL;
852       RETURN(NULL);
853   END GET_RATE;
854 
855   FUNCTION GET_RATE(X_SET_OF_BOOKS_ID IN NUMBER
856                    ,X_FROM_CURRENCY IN VARCHAR2
857                    ,X_CONVERSION_DATE IN DATE
858                    ,X_CONVERSION_TYPE IN VARCHAR2) RETURN NUMBER IS
859     X0 NUMBER;
860   BEGIN
861    /* STPROC.INIT('begin :X0 := GL_CURRENCY_API.GET_RATE(:X_SET_OF_BOOKS_ID, :X_FROM_CURRENCY, :X_CONVERSION_DATE, :X_CONVERSION_TYPE); end;');
862     STPROC.BIND_O(X0);
863     STPROC.BIND_I(X_SET_OF_BOOKS_ID);
864     STPROC.BIND_I(X_FROM_CURRENCY);
865     STPROC.BIND_I(X_CONVERSION_DATE);
866     STPROC.BIND_I(X_CONVERSION_TYPE);
867     STPROC.EXECUTE;
868     STPROC.RETRIEVE(1
869                    ,X0);
870     RETURN X0;*/
871     NULL;
872       RETURN(NULL);
873   END GET_RATE;
874 
875   FUNCTION CONVERT_AMOUNT(X_FROM_CURRENCY IN VARCHAR2
876                          ,X_TO_CURRENCY IN VARCHAR2
877                          ,X_CONVERSION_DATE IN DATE
878                          ,X_CONVERSION_TYPE IN VARCHAR2
879                          ,X_AMOUNT IN NUMBER) RETURN NUMBER IS
880     X0 NUMBER;
881   BEGIN
882    /* STPROC.INIT('begin :X0 := GL_CURRENCY_API.CONVERT_AMOUNT(:X_FROM_CURRENCY, :X_TO_CURRENCY, :X_CONVERSION_DATE, :X_CONVERSION_TYPE, :X_AMOUNT); end;');
883     STPROC.BIND_O(X0);
884     STPROC.BIND_I(X_FROM_CURRENCY);
885     STPROC.BIND_I(X_TO_CURRENCY);
886     STPROC.BIND_I(X_CONVERSION_DATE);
887     STPROC.BIND_I(X_CONVERSION_TYPE);
888     STPROC.BIND_I(X_AMOUNT);
889     STPROC.EXECUTE;
890     STPROC.RETRIEVE(1
891                    ,X0);
892     RETURN X0;*/
893     NULL;
894       RETURN(NULL);
895   END CONVERT_AMOUNT;
896 
897   FUNCTION CONVERT_AMOUNT(X_SET_OF_BOOKS_ID IN NUMBER
898                          ,X_FROM_CURRENCY IN VARCHAR2
899                          ,X_CONVERSION_DATE IN DATE
900                          ,X_CONVERSION_TYPE IN VARCHAR2
901                          ,X_AMOUNT IN NUMBER) RETURN NUMBER IS
902     X0 NUMBER;
903   BEGIN
904  /*   STPROC.INIT('begin :X0 := GL_CURRENCY_API.CONVERT_AMOUNT(:X_SET_OF_BOOKS_ID, :X_FROM_CURRENCY, :X_CONVERSION_DATE, :X_CONVERSION_TYPE, :X_AMOUNT); end;');
905     STPROC.BIND_O(X0);
906     STPROC.BIND_I(X_SET_OF_BOOKS_ID);
907     STPROC.BIND_I(X_FROM_CURRENCY);
908     STPROC.BIND_I(X_CONVERSION_DATE);
909     STPROC.BIND_I(X_CONVERSION_TYPE);
910     STPROC.BIND_I(X_AMOUNT);
911     STPROC.EXECUTE;
912     STPROC.RETRIEVE(1
913                    ,X0);
914     RETURN X0;*/
915     NULL;
916       RETURN(NULL);
917   END CONVERT_AMOUNT;
918 
919   FUNCTION GET_DERIVE_TYPE(SOB_ID IN NUMBER
920                           ,PERIOD IN VARCHAR2
921                           ,CURR_CODE IN VARCHAR2) RETURN VARCHAR2 IS
922     X0 VARCHAR2(2000);
923   BEGIN
924  /*   STPROC.INIT('begin :X0 := GL_CURRENCY_API.GET_DERIVE_TYPE(:SOB_ID, :PERIOD, :CURR_CODE); end;');
925     STPROC.BIND_O(X0);
926     STPROC.BIND_I(SOB_ID);
927     STPROC.BIND_I(PERIOD);
928     STPROC.BIND_I(CURR_CODE);
929     STPROC.EXECUTE;
930     STPROC.RETRIEVE(1
931                    ,X0);
932     RETURN X0;*/
933     NULL;
934       RETURN(NULL);
935   END GET_DERIVE_TYPE;
936 
937 FUNCTION C_AMOUNT_DSPFORMULA RETURN VARCHAR2 IS
938       C_GL_CONV_RATE NUMBER;
939       C_AMOUNT_DSP VARCHAR2(10);
940 BEGIN
941 
942 --SRW.REFERENCE(:C_AMOUNT);
943 --SRW.REFERENCE(:CURRENCY_CODE);
944 --SRW.REFERENCE(:C_GL_CONV_RATE);
945 --SRW.REFERENCE(:RP_FUNCTIONAL_CURRENCY);
946 
947 RP_DATA_FOUND := 'X';
948 IF C_GL_CONV_RATE <> -1 THEN
949  IF P_USE_FUNCTIONAL_CURRENCY = 'Y' THEN
950  /* SRW.USER_EXIT('FND FORMAT_CURRENCY
951   CODE=":RP_FUNCTIONAL_CURRENCY"
952   DISPLAY_WIDTH="14"
953   AMOUNT=":C_AMOUNT"
954   DISPLAY=":C_AMOUNT_DSP"
955                 MINIMUM_PRECISION=":P_MIXED_PRECISION"');*/
956   RETURN(C_AMOUNT_DSP);
957  ELSE
958  /* SRW.USER_EXIT('FND FORMAT_CURRENCY
959   CODE=":CURRENCY_CODE"
960   DISPLAY_WIDTH="14"
961   AMOUNT=":C_AMOUNT"
962   DISPLAY=":C_AMOUNT_DSP"
963                 MINIMUM_PRECISION=":P_MIXED_PRECISION"');*/
964   RETURN(C_AMOUNT_DSP);
965  END IF;
966 ELSE
967  RETURN('NO RATE');
968 END IF;
969 
970 RETURN NULL;
971 
972 END;
973 
974 
975 function item_dspFormula
976 (
977 ITEM_IDENTIFIER_TYPE_T in varchar2,
978 iid IN NUMBER,
979 SI_ORGANIZATION_ID IN NUMBER,
980 SI_INVENTORY_ITEM_ID IN NUMBER,
981 ordered_item_id IN NUMBER,
982 ORDERED_ITEM IN VARCHAR
983 )
984 return Char is
985 v_item varchar2(2000);
986 v_description varchar2(500);
987 begin
988   if (ITEM_IDENTIFIER_TYPE_T is null or ITEM_IDENTIFIER_TYPE_T = 'INT')
989        or (p_print_description in ('I','D','F')) then
990 
991     --v_item := :item_flex;
992 
993     select sitems.description description
994     into   v_description
995     from   mtl_system_items_vl sitems
996     where
997     nvl(sitems.organization_id,0) = nvl(oe_sys_parameters.value('MASTER_ORGANIZATION_ID',mo_global.get_current_org_id()),0)
998     and    sitems.inventory_item_id = IID;
999 
1000        /*  srw.reference (:item_flex);
1001          srw.reference (:p_item_flex_code);
1002          srw.reference (:Item_dsp);
1003          srw.reference (:p_item_structure_num);
1004          srw.user_exit (' FND FLEXIDVAL
1005       CODE=":p_item_flex_code"
1006       NUM=":p_item_structure_num"
1007       APPL_SHORT_NAME="INV"
1008       DATA= ":item_flex"
1009       VALUE=":Item_dsp"
1010       DISPLAY="ALL"'
1011   );*/
1012     v_item := fnd_flex_xml_publisher_apis.process_kff_combination_1('Item_dsp', 'INV', p_item_flex_code, p_item_structure_num, SI_ORGANIZATION_ID, SI_INVENTORY_ITEM_ID, 'ALL', 'Y', 'VALUE');
1013   elsif (ITEM_IDENTIFIER_TYPE_T = 'CUST' and p_print_description in ('C','P','O')) then
1014     select citems.customer_item_number item,
1015         nvl(citems.customer_item_desc,sitems.description) description
1016     into   v_item,v_description
1017     from   mtl_customer_items citems,
1018            mtl_customer_item_xrefs cxref,
1019            mtl_system_items_vl sitems
1020     where  citems.customer_item_id = cxref.customer_item_id
1021     and    cxref.inventory_item_id = sitems.inventory_item_id
1022     and    citems.customer_item_id = ordered_item_id
1023     and    nvl(sitems.organization_id,0) = nvl(oe_sys_parameters.value('MASTER_ORGANIZATION_ID',mo_global.get_current_org_id()),0)
1024     and    sitems.inventory_item_id = IID;
1025   elsif (p_print_description in ('C','P','O')) then
1026   Begin
1027     select items.cross_reference item,
1028         nvl(items.description,sitems.description) description
1029     into   v_item,v_description
1030     from   mtl_cross_reference_types xtypes,
1031            mtl_cross_references items,
1032            mtl_system_items_vl sitems
1033     where  xtypes.cross_reference_type = items.cross_reference_type
1034     and    items.inventory_item_id = sitems.inventory_item_id
1035     and    items.cross_reference = ORDERED_ITEM
1036     and    items.cross_reference_type = ITEM_IDENTIFIER_TYPE_T
1037     and    nvl(sitems.organization_id,0) = nvl(oe_sys_parameters.value('MASTER_ORGANIZATION_ID',mo_global.get_current_org_id()),0)
1038     and    sitems.inventory_item_id = IID
1039     and   items.org_independent_flag = 'N'
1040     and   items.organization_id = nvl(oe_sys_parameters.value('MASTER_ORGANIZATION_ID',mo_global.get_current_org_id()),0);
1041     Exception When NO_DATA_FOUND Then
1042     Select items.cross_reference item,
1043     nvl(items.description,sitems.description) description
1044     into v_item,v_description
1045     from mtl_cross_reference_types xtypes,
1046     mtl_cross_references items,
1047     mtl_system_items_vl sitems
1048     where xtypes.cross_reference_type = items.cross_reference_type
1049     and items.inventory_item_id = sitems.inventory_item_id
1050     and items.cross_reference = ORDERED_ITEM
1051     and items.cross_reference_type = ITEM_IDENTIFIER_TYPE_T
1052     and nvl(sitems.organization_id,0 ) = nvl(oe_sys_parameters.value('MASTER_ORGANIZATION_ID',mo_global.get_current_org_id()),0)
1053     and sitems.inventory_item_id = IID
1054     and items.org_independent_flag ='Y';
1055     End;
1056     --Bug 3433353 End
1057 
1058   end if;
1059 
1060   if (p_print_description in ('I','C')) then
1061     return(v_item||' - '||v_description);
1062   elsif (p_print_description in ('D','P')) then
1063     return(v_description);
1064   else
1065     return(v_item);
1066   end if;
1067 
1068 
1069 
1070 
1071 RETURN NULL;
1072 exception
1073 when no_data_found then
1074 return ('Item not found');
1075 end;
1076 
1077 
1078 END ONT_OEXOEOCR_XMLP_PKG;
1079 
1080