DBA Data[Home] [Help]

PACKAGE BODY: APPS.ONT_OEXOEACK_XMLP_PKG

Source


1 PACKAGE BODY ONT_OEXOEACK_XMLP_PKG AS
2 /* $Header: OEXOEACKB.pls 120.2 2011/11/11 14:32:00 vmachett ship $ */
3   FUNCTION AFTERREPORT RETURN BOOLEAN IS
4   BEGIN
5     BEGIN
6       /*SRW.USER_EXIT('FND SRWEXIT')*/NULL;
7     EXCEPTION
8       WHEN /*SRW.USER_EXIT_FAILURE*/OTHERS THEN
9         /*SRW.MESSAGE(1
10                    ,'Failed in AFTER REPORT TRIGGER')*/NULL;
11         RETURN (FALSE);
12     END;
13     RETURN (TRUE);
14   END AFTERREPORT;
15 
16   FUNCTION P_ITEM_FLEX_CODEVALIDTRIGGER RETURN BOOLEAN IS
17   BEGIN
18     RETURN (TRUE);
19   END P_ITEM_FLEX_CODEVALIDTRIGGER;
20 
21   FUNCTION AFTERPFORM RETURN BOOLEAN IS
22   BEGIN
23     /*SRW.MESSAGE(99999
24                ,'$Header: OEXOEACKB.pls 120.2 2011/11/11 14:32:00 vmachett ship $')*/NULL;
25     BEGIN
26       IF P_BOOKED_STATUS IS NOT NULL THEN
27         IF P_BOOKED_STATUS = 'Y' THEN
28           LP_BOOKED_STATUS := ' and h.booked_flag = ''Y'' ';
29         ELSE
30           LP_BOOKED_STATUS := ' and h.booked_flag = ''N'' ';
31         END IF;
32       ELSE
33         LP_BOOKED_STATUS := ' ';
34       END IF;
35       IF (P_ORDER_DATE_LOW IS NOT NULL) AND (P_ORDER_DATE_HIGH IS NOT NULL) THEN
36         LP_ORDER_DATE := ' and h.ordered_date between :p_order_date_low and (:p_order_date_high+1) ';
37       ELSIF (P_ORDER_DATE_LOW IS NOT NULL) THEN
38         LP_ORDER_DATE := ' and h.ordered_date  >= :p_order_date_low ';
39       ELSIF (P_ORDER_DATE_HIGH IS NOT NULL) THEN
40         LP_ORDER_DATE := ' and h.ordered_date <= (:p_order_date_high+1) ';
41       END IF;
42       IF (P_SCHEDULE_DATE_LOW IS NOT NULL) AND (P_SCHEDULE_DATE_HIGH IS NOT NULL) THEN
43         LP_SCHEDULE_DATE := ' and (l.schedule_ship_date between :p_schedule_date_low and (:p_schedule_date_high+1)) ';
44       ELSIF (P_SCHEDULE_DATE_LOW IS NOT NULL) THEN
45         LP_SCHEDULE_DATE := ' and l.schedule_ship_date  >= :p_schedule_date_low ';
46       ELSIF (P_SCHEDULE_DATE_HIGH IS NOT NULL) THEN
47         LP_SCHEDULE_DATE := ' and l.schedule_ship_date <= (:p_schedule_date_high+1) ';
48       END IF;
49       IF (P_REQUEST_DATE_LOW IS NOT NULL) AND (P_REQUEST_DATE_HIGH IS NOT NULL) THEN
50         LP_REQUEST_DATE := ' and (l.request_date between :p_request_date_low and (:p_request_date_high+1)) ';
51       ELSIF (P_REQUEST_DATE_LOW IS NOT NULL) THEN
52         LP_REQUEST_DATE := ' and l.request_date  >= :p_request_date_low ';
53       ELSIF (P_REQUEST_DATE_HIGH IS NOT NULL) THEN
54         LP_REQUEST_DATE := ' and l.request_date <= (:p_request_date_high+1) ';
55       END IF;
56       IF (P_PROMISE_DATE_LOW IS NOT NULL) AND (P_PROMISE_DATE_HIGH IS NOT NULL) THEN
57         LP_PROMISE_DATE := ' and (l.promise_date between :p_promise_date_low and (:p_promise_date_high+1)) ';
58       ELSIF (P_PROMISE_DATE_LOW IS NOT NULL) THEN
59         LP_PROMISE_DATE := ' and l.promise_date  >= :p_promise_date_low ';
60       ELSIF (P_PROMISE_DATE_HIGH IS NOT NULL) THEN
61         LP_PROMISE_DATE := ' and l.promise_date  <= (:p_promise_date_high+1) ';
62       END IF;
63       IF (P_SHIP_TO_CUSTOMER_NAME_LO IS NOT NULL) AND (P_SHIP_TO_CUSTOMER_NAME_HI IS NOT NULL) THEN
64         LP_SHIP_TO_CUSTOMER_NAME := ' and (ship_party.party_name between :p_ship_to_customer_name_lo and
65 
66                                     :p_ship_to_customer_name_hi) ';
67       ELSIF (P_SHIP_TO_CUSTOMER_NAME_LO IS NOT NULL) THEN
68         LP_SHIP_TO_CUSTOMER_NAME := ' and ship_party.party_name >= :p_ship_to_customer_name_lo ';
69       ELSIF (P_SHIP_TO_CUSTOMER_NAME_HI IS NOT NULL) THEN
70         LP_SHIP_TO_CUSTOMER_NAME := ' and ship_party.party_name <= :p_ship_to_customer_name_hi ';
71       END IF;
72       IF (P_BILL_TO_CUSTOMER_NAME_LO IS NOT NULL) AND (P_BILL_TO_CUSTOMER_NAME_HI IS NOT NULL) THEN
73         LP_BILL_TO_CUSTOMER_NAME := ' and (bill_party.party_name between :p_bill_to_customer_name_lo and
74 
75                                     :p_bill_to_customer_name_hi) ';
76       ELSIF (P_BILL_TO_CUSTOMER_NAME_LO IS NOT NULL) THEN
77         LP_BILL_TO_CUSTOMER_NAME := ' and bill_party.party_name >= :p_bill_to_customer_name_lo ';
78       ELSIF (P_BILL_TO_CUSTOMER_NAME_HI IS NOT NULL) THEN
79         LP_BILL_TO_CUSTOMER_NAME := ' and bill_party.party_name <= :p_bill_to_customer_name_hi ';
80       END IF;
81       IF (P_DEL_TO_CUSTOMER_NAME_LO IS NOT NULL) AND (P_DEL_TO_CUSTOMER_NAME_HI IS NOT NULL) THEN
82         LP_DEL_TO_CUSTOMER_NAME := ' and (del_party.party_name between :p_del_to_customer_name_lo and
83 
84                                    :p_del_to_customer_name_hi) ';
85       ELSIF (P_DEL_TO_CUSTOMER_NAME_LO IS NOT NULL) THEN
86         LP_DEL_TO_CUSTOMER_NAME := ' and del_party.party_name >= :p_del_to_customer_name_lo ';
87       ELSIF (P_DEL_TO_CUSTOMER_NAME_HI IS NOT NULL) THEN
88         LP_DEL_TO_CUSTOMER_NAME := ' and del_party.party_name <= :p_del_to_customer_name_hi ';
89       END IF;
90       IF (P_ORDER_NUM_LOW IS NOT NULL) AND (P_ORDER_NUM_HIGH IS NOT NULL) THEN
91         IF (P_ORDER_NUM_LOW = P_ORDER_NUM_HIGH) THEN
92           LP_ORDER_NUM := ' and h.order_number = :p_order_num_low ';
93         ELSE
94           LP_ORDER_NUM := ' and (h.order_number between to_number(:p_order_num_low) and to_number(:p_order_num_high)) ';
95         END IF;
96       ELSIF (P_ORDER_NUM_LOW IS NOT NULL) THEN
97         LP_ORDER_NUM := ' and h.order_number >= to_number(:p_order_num_low) ';
98       ELSIF (P_ORDER_NUM_HIGH IS NOT NULL) THEN
99         LP_ORDER_NUM := ' and h.order_number <= to_number(:p_order_num_high) ';
100       END IF;
101       IF P_SALESREP IS NOT NULL THEN
102         LP_SALESREP := ' and sr.name = :p_salesrep ';
103       ELSE
104         LP_SALESREP := ' ';
105       END IF;
106       IF P_CREATED_BY IS NOT NULL THEN
107         LP_CREATED_BY := ' and u.user_name = :p_created_by ';
108       ELSE
109         LP_CREATED_BY := ' ';
110       END IF;
111       IF P_OPEN_ORDERS = 'Y' THEN
112         LP_OPEN_ORDERS := 'and h.open_flag = ''Y''';
113       ELSE
114         LP_OPEN_ORDERS := ' ';
115       END IF;
116       IF P_ORDER_TYPE IS NOT NULL THEN
117         LP_ORDER_TYPE := ' and h.order_type_id = :p_order_type ';
118       ELSE
119         LP_ORDER_TYPE := ' ';
120       END IF;
121       IF P_ORDER_NUM_LOW = P_ORDER_NUM_HIGH THEN
122         NULL;
123       ELSE
124         IF P_ORDER_CATEGORY IS NOT NULL THEN
125           IF P_ORDER_CATEGORY = 'SALES' THEN
126             LP_ORDER_CATEGORY := 'and h.order_category_code in (''ORDER'', ''MIXED'') ';
127           ELSIF P_ORDER_CATEGORY = 'CREDIT' THEN
128             LP_ORDER_CATEGORY := 'and h.order_category_code in (''RETURN'', ''MIXED'') ';
129           ELSIF P_ORDER_CATEGORY = 'ALL' THEN
130             LP_ORDER_CATEGORY := NULL;
131           END IF;
132         ELSE
133           LP_ORDER_CATEGORY := 'and h.order_category_code in (''ORDER'', ''MIXED'') ';
134         END IF;
135       END IF;
136       IF P_LINE_CATEGORY IS NOT NULL THEN
137         IF P_LINE_CATEGORY = 'SALES' THEN
138           LP_LINE_CATEGORY := 'and l.line_category_code = ''ORDER'' ';
139         ELSIF P_LINE_CATEGORY = 'CREDIT' THEN
140           LP_LINE_CATEGORY := 'and l.line_category_code = ''RETURN'' ';
141         ELSIF P_LINE_CATEGORY = 'ALL' THEN
142           LP_LINE_CATEGORY := ' ';
143         END IF;
144       ELSE
145         LP_LINE_CATEGORY := 'and l.line_category_code = ''ORDER'' ';
146       END IF;
147       SELECT
148         USERENV('LANG')
149       INTO P_USER_LANG
150       FROM
151         DUAL;
152     END;
153     RETURN (TRUE);
154   END AFTERPFORM;
155 
156   FUNCTION C_LINE_SHIP_TO_CUSTFORMULA(LINE_SHIP_TO_ORG_ID IN NUMBER
157                                      ,HDR_SHIP_TO_ORG_ID IN NUMBER
158                                      ,LINE_S_CITY_ST_ZIP IN VARCHAR2) RETURN VARCHAR2 IS
159   BEGIN
160     BEGIN
161       IF LINE_SHIP_TO_ORG_ID IS NULL THEN
162         RETURN (NULL);
163       END IF;
164       IF NVL(HDR_SHIP_TO_ORG_ID
165          ,0) <> NVL(LINE_SHIP_TO_ORG_ID
166          ,0) THEN
167         RETURN (LINE_S_CITY_ST_ZIP);
168       ELSE
169         RETURN (NULL);
170       END IF;
171     END;
172     RETURN NULL;
173   END C_LINE_SHIP_TO_CUSTFORMULA;
174 
175   FUNCTION C_DATA_NOT_FOUNDFORMULA(ORDER_NUMBER IN NUMBER) RETURN NUMBER IS
176   BEGIN
177     RP_DATA_FOUND := TO_CHAR(ORDER_NUMBER);
178     RETURN (0);
179   END C_DATA_NOT_FOUNDFORMULA;
180 
181   FUNCTION C_EXTENDED_PRICEFORMULA(SELLING_PRICE IN NUMBER
182                                   ,C_PRECISION IN NUMBER
183                                   ,PRICING_QUANTITY IN NUMBER
184                                   ,LINE_CATEGORY_CODE IN VARCHAR2
185                                   ,ORDERED_QUANTITY IN NUMBER) RETURN NUMBER IS
186   BEGIN
187     /*SRW.REFERENCE(SELLING_PRICE)*/NULL;
188     /*SRW.REFERENCE(C_PRECISION)*/NULL;
189     /*SRW.REFERENCE(PRICING_QUANTITY)*/NULL;
190     IF LINE_CATEGORY_CODE = 'RETURN' THEN
191       RETURN (ROUND(NVL(SELLING_PRICE
192                       ,0) * NVL(ORDERED_QUANTITY
193                       ,0)
194                   ,C_PRECISION) * (-1));
195     ELSE
196       RETURN (ROUND(NVL(SELLING_PRICE
197                       ,0) * NVL(ORDERED_QUANTITY
198                       ,0)
199                   ,C_PRECISION));
200     END IF;
201   END C_EXTENDED_PRICEFORMULA;
202 
203   FUNCTION S_TAX_TOTAL_DSPFORMULA RETURN VARCHAR2 IS
204   BEGIN
205     RETURN NULL;
206   END S_TAX_TOTAL_DSPFORMULA;
207 
208   FUNCTION C_PRECISIONFORMULA(CURRENCY1 IN VARCHAR2) RETURN NUMBER IS
209   BEGIN
210     DECLARE
211       W_PRECISION NUMBER;
212     BEGIN
213       SELECT
214         PRECISION
215       INTO W_PRECISION
216       FROM
217         FND_CURRENCIES
218       WHERE CURRENCY_CODE = CURRENCY1;
219       RETURN (W_PRECISION);
220     EXCEPTION
221       WHEN NO_DATA_FOUND THEN
222         W_PRECISION := 2;
223         RETURN (W_PRECISION);
224     END;
225     RETURN NULL;
226   END C_PRECISIONFORMULA;
227 
228   PROCEDURE POPULATE_MLS_LEXICALS IS
229     SQLSTMT VARCHAR2(1000) := '';
230     SESSION_LANGUAGE VARCHAR2(30) := '';
231     BASE_LANGUAGE VARCHAR2(30) := '';
232   BEGIN
233     SQLSTMT := 'select multi_lingual_flag
234                                into :mls_flag
235                                from fnd_product_groups
236                               where multi_lingual_flag = ''Y''';
237     EXECUTE IMMEDIATE
238       SQLSTMT;
239     IF (MLS_FLAG = 'Y') THEN
240       SELECT
241         SUBSTR(USERENV('LANGUAGE')
242               ,1
243               ,INSTR(USERENV('LANGUAGE')
244                    ,'_') - 1)
245       INTO SESSION_LANGUAGE
246       FROM
247         DUAL;
248       SELECT
249         NLS_LANGUAGE
250       INTO BASE_LANGUAGE
251       FROM
252         FND_LANGUAGES
253       WHERE INSTALLED_FLAG = 'B';
254       LP_LANGUAGE_WHERE := 'and nvl(bill_addr.language,' || '''' || BASE_LANGUAGE || ''') = ' || '''' || SESSION_LANGUAGE || '''';
255       SQLSTMT := 'select alax.attribute_column_name
256                                     into :att_column_name
257                                     from ak_translated_columns atc,
258                                          ak_language_attribute_xrefs alax
259                                    where atc.table_name = ' || '''MTL_UNITS_OF_MEASURE''' || ' and atc.column_name = ' || '''UNIT_OF_MEASURE''' || ' and alax.translated_column_number = atc.translated_column_number
260                                            and alax.language = ' || '''' || SESSION_LANGUAGE || '''';
261       EXECUTE IMMEDIATE
262         SQLSTMT;
263       IF (ATT_COLUMN_NAME IS NOT NULL) THEN
264         LP_UNIT_OF_MEASURE := 'uom.' || RTRIM(ATT_COLUMN_NAME
265                                    ,' ');
266       END IF;
267     END IF;
268   EXCEPTION
269     WHEN /*SRW.DO_SQL_FAILURE*/OTHERS THEN
270       /*SRW.MESSAGE(2000
271                  ,'Failed in BEFORE REPORT trigger. populate mls lexical')*/NULL;
272   END POPULATE_MLS_LEXICALS;
273 
274   FUNCTION C_USE_CURRENCYFORMULA(C_BASE_CURRENCY IN VARCHAR2
275                                 ,CURRENCY1 IN VARCHAR2) RETURN VARCHAR2 IS
276   BEGIN
277     /*SRW.REFERENCE(C_BASE_CURRENCY)*/NULL;
278     /*SRW.REFERENCE(CURRENCY1)*/NULL;
279     IF P_FUNCTIONAL_CURRENCY = 'Y' THEN
280       RETURN (C_BASE_CURRENCY);
281     ELSIF CURRENCY1 IS NULL THEN
282       RETURN (C_BASE_CURRENCY);
283     ELSE
284       RETURN (CURRENCY1);
285     END IF;
286     RETURN NULL;
287   END C_USE_CURRENCYFORMULA;
288 
289   FUNCTION C_BASE_CURRENCYFORMULA RETURN VARCHAR2 IS
290   BEGIN
291     DECLARE
292       BASE_CURRENCY VARCHAR2(30);
293     BEGIN
294       SELECT
295         CURRENCY_CODE
296       INTO BASE_CURRENCY
297       FROM
298         GL_SETS_OF_BOOKS
299       WHERE SET_OF_BOOKS_ID = P_SOB_ID;
300       RETURN (BASE_CURRENCY);
301     EXCEPTION
302       WHEN OTHERS THEN
303         NULL;
304     END;
305     RETURN NULL;
306   END C_BASE_CURRENCYFORMULA;
307 
308   FUNCTION C_GL_CONV_RATEFORMULA(CURRENCY1 IN VARCHAR2
309                                 ,C_BASE_CURRENCY IN VARCHAR2
310                                 ,CONVERSION_RATE IN NUMBER
311                                 ,ORDER_DATE IN DATE
312                                 ,CONVERSION_TYPE_CODE IN VARCHAR2) RETURN NUMBER IS
313   BEGIN
314     DECLARE
315       GL_RATE NUMBER;
316     BEGIN
317       IF P_FUNCTIONAL_CURRENCY = 'Y' THEN
318         IF CURRENCY1 = C_BASE_CURRENCY THEN
319           RETURN (1);
320         ELSE
321           IF CONVERSION_RATE IS NULL THEN
322             GL_RATE := GET_RATE(P_SOB_ID
323                                ,CURRENCY1
324                                ,TRUNC(ORDER_DATE)
325                                ,CONVERSION_TYPE_CODE);
326             RETURN (GL_RATE);
327           ELSE
328             RETURN (CONVERSION_RATE);
329           END IF;
330         END IF;
331       ELSE
332         RETURN (1);
333       END IF;
334     EXCEPTION
335       WHEN NO_DATA_FOUND THEN
336         RETURN (-1);
337     END;
338     RETURN NULL;
339   END C_GL_CONV_RATEFORMULA;
340 
341   FUNCTION C_LINE_BILL_TO_CUSTFORMULA(LINE_BILL_TO_ORG_ID IN NUMBER
342                                      ,HDR_BILL_TO_ORG_ID IN NUMBER
343                                      ,LINE_B_CITY_ST_ZIP IN VARCHAR2) RETURN CHAR IS
344   BEGIN
345     BEGIN
346       IF LINE_BILL_TO_ORG_ID IS NULL THEN
347         RETURN (NULL);
348       END IF;
349       IF NVL(HDR_BILL_TO_ORG_ID
350          ,0) <> NVL(LINE_BILL_TO_ORG_ID
351          ,0) THEN
352         RETURN (LINE_B_CITY_ST_ZIP);
353       ELSE
354         RETURN (NULL);
355       END IF;
356     END;
357     RETURN NULL;
358   END C_LINE_BILL_TO_CUSTFORMULA;
359 
360   FUNCTION C_LINE_DEL_TO_CUSTFORMULA(LINE_DEL_TO_ORG_ID IN NUMBER
361                                     ,HDR_DEL_TO_ORG_ID IN NUMBER
362                                     ,LINE_D_CITY_ST_ZIP IN VARCHAR2) RETURN CHAR IS
363   BEGIN
364     BEGIN
365       IF LINE_DEL_TO_ORG_ID IS NULL THEN
366         RETURN (NULL);
367       END IF;
368       IF NVL(HDR_DEL_TO_ORG_ID
369          ,0) <> NVL(LINE_DEL_TO_ORG_ID
370          ,0) THEN
371         RETURN (LINE_D_CITY_ST_ZIP);
372       ELSE
373         RETURN (NULL);
374       END IF;
375     END;
376     RETURN NULL;
377   END C_LINE_DEL_TO_CUSTFORMULA;
378 
379   FUNCTION C_LINE_SALESREPFORMULA(LINE_SALESREP IN VARCHAR2
380                                  ,SALES_PERSON IN VARCHAR2) RETURN CHAR IS
381   BEGIN
382     BEGIN
383       IF LINE_SALESREP IS NULL THEN
384         RETURN (NULL);
385       END IF;
386       IF NVL(SALES_PERSON
387          ,' ') = NVL(LINE_SALESREP
388          ,' ') THEN
389         RETURN (NULL);
390       ELSE
391         RETURN (LINE_SALESREP);
392       END IF;
393     END;
394     RETURN NULL;
395   END C_LINE_SALESREPFORMULA;
396 
397   FUNCTION C_LINE_POFORMULA(LINE_PO IN VARCHAR2
398                            ,PURCHASE_ORDER IN VARCHAR2) RETURN CHAR IS
399   BEGIN
400     BEGIN
401       IF LINE_PO IS NULL THEN
402         RETURN (NULL);
403       END IF;
404       IF NVL(PURCHASE_ORDER
405          ,' ') = NVL(LINE_PO
406          ,' ') THEN
407         RETURN (NULL);
408       ELSE
409         RETURN (LINE_PO);
410       END IF;
411     END;
412     RETURN NULL;
413   END C_LINE_POFORMULA;
414 
415   FUNCTION C_LINE_TYPEFORMULA(LINE_TYPE_ID IN NUMBER
416                              ,LINE_TYPE IN VARCHAR2) RETURN CHAR IS
417   BEGIN
418     BEGIN
419       IF LINE_TYPE_ID IS NOT NULL THEN
420         RETURN (LINE_TYPE);
421       ELSE
422         RETURN (NULL);
423       END IF;
424     END;
425     RETURN NULL;
426   END C_LINE_TYPEFORMULA;
427 
428   FUNCTION C_LINE_FREIGHT_TERMSFORMULA(LINE_FREIGHT_TERMS IN VARCHAR2
429                                       ,FREIGHT_TERMS IN VARCHAR2) RETURN CHAR IS
430   BEGIN
431     BEGIN
432       IF LINE_FREIGHT_TERMS IS NULL THEN
433         RETURN (NULL);
434       END IF;
435       IF NVL(FREIGHT_TERMS
436          ,' ') = NVL(LINE_FREIGHT_TERMS
437          ,' ') THEN
438         RETURN (NULL);
439       ELSE
440         RETURN (LINE_FREIGHT_TERMS);
441       END IF;
442     END;
443     RETURN NULL;
444   END C_LINE_FREIGHT_TERMSFORMULA;
445 
446   FUNCTION C_LINE_FOBFORMULA(LINE_FOB IN VARCHAR2
447                             ,FOB IN VARCHAR2) RETURN CHAR IS
448   BEGIN
449     BEGIN
450       IF LINE_FOB IS NULL THEN
451         RETURN (NULL);
452       END IF;
453       IF NVL(FOB
454          ,' ') = NVL(LINE_FOB
455          ,' ') THEN
456         RETURN (NULL);
457       ELSE
458         RETURN (LINE_FOB);
459       END IF;
460     END;
461     RETURN NULL;
462   END C_LINE_FOBFORMULA;
463 
464   FUNCTION C_LINE_CARRIERFORMULA(LINE_CARRIER IN VARCHAR2
465                                 ,CARRIER IN VARCHAR2) RETURN CHAR IS
466   BEGIN
467     BEGIN
468       IF LINE_CARRIER IS NULL THEN
469         RETURN (NULL);
470       END IF;
471       IF NVL(CARRIER
472          ,' ') <> NVL(LINE_CARRIER
473          ,' ') THEN
474         RETURN (LINE_CARRIER);
475       ELSE
476         RETURN (NULL);
477       END IF;
478     END;
479     RETURN NULL;
480   END C_LINE_CARRIERFORMULA;
481 
482   FUNCTION C_FC_EXTEND_PRICEFORMULA(C_GL_CONV_RATE IN NUMBER
483                                    ,SVC_EXTENDED_PRICE IN NUMBER
484                                    ,C_PRECISION IN NUMBER) RETURN NUMBER IS
485   BEGIN
486     DECLARE
487       FC_SVC_EXTENDED_PRICE NUMBER;
488     BEGIN
489       IF P_FUNCTIONAL_CURRENCY = 'Y' THEN
490         SELECT
491           C_GL_CONV_RATE * NVL(SVC_EXTENDED_PRICE
492              ,0)
493         INTO FC_SVC_EXTENDED_PRICE
494         FROM
495           DUAL;
496         RETURN (ROUND(NVL(FC_SVC_EXTENDED_PRICE
497                         ,0)
498                     ,C_PRECISION));
499       ELSE
500         RETURN (ROUND(NVL(SVC_EXTENDED_PRICE
501                         ,0)
502                     ,C_PRECISION));
503       END IF;
504     END;
505     RETURN NULL;
506   END C_FC_EXTEND_PRICEFORMULA;
507 
508   FUNCTION C_FC_SALE_PRICEFORMULA(C_GL_CONV_RATE IN NUMBER
509                                  ,SVC_SELLING_PRICE IN NUMBER) RETURN NUMBER IS
510   BEGIN
511     DECLARE
512       FC_SVC_SELLING_PRICE NUMBER;
513     BEGIN
514       IF P_FUNCTIONAL_CURRENCY = 'Y' THEN
515         SELECT
516           C_GL_CONV_RATE * SVC_SELLING_PRICE
517         INTO FC_SVC_SELLING_PRICE
518         FROM
519           DUAL;
520         RETURN (FC_SVC_SELLING_PRICE);
521       ELSE
522         RETURN (SVC_SELLING_PRICE);
523       END IF;
524     END;
525     RETURN NULL;
526   END C_FC_SALE_PRICEFORMULA;
527 
528   FUNCTION C_LINE_AGREEMENTFORMULA(LINE_AGREEMENT IN VARCHAR2
529                                   ,AGREEMENT IN VARCHAR2) RETURN CHAR IS
530   BEGIN
531     BEGIN
532       IF LINE_AGREEMENT IS NULL THEN
533         RETURN (NULL);
534       END IF;
535       IF NVL(AGREEMENT
536          ,' ') <> NVL(LINE_AGREEMENT
537          ,' ') THEN
538         RETURN (LINE_AGREEMENT);
539       ELSE
540         RETURN (NULL);
541       END IF;
542     END;
543     RETURN NULL;
544   END C_LINE_AGREEMENTFORMULA;
545 
546   FUNCTION C_LINE_TERMSFORMULA(LINE_TERM IN VARCHAR2
547                               ,PAYMENT_TERMS IN VARCHAR2) RETURN CHAR IS
548   BEGIN
549     BEGIN
550       IF LINE_TERM IS NULL THEN
551         RETURN (NULL);
552       END IF;
553       IF NVL(PAYMENT_TERMS
554          ,' ') = NVL(LINE_TERM
555          ,' ') THEN
556         RETURN (NULL);
557       ELSE
558         RETURN (LINE_TERM);
559       END IF;
560     END;
561     RETURN NULL;
562   END C_LINE_TERMSFORMULA;
563 
564   FUNCTION C_FMT_TAX_ON_LINEFORMULA(LINE_CATEGORY_CODE IN VARCHAR2
565                                    ,C_TOTAL_LINE_TAX IN NUMBER
566                                    ,C_PRECISION IN NUMBER) RETURN NUMBER IS
567   BEGIN
568     IF LINE_CATEGORY_CODE = 'RETURN' THEN
569       RETURN (ROUND(NVL(C_TOTAL_LINE_TAX
570                       ,0)
571                   ,C_PRECISION) * (-1));
572     ELSE
573       RETURN (ROUND(NVL(C_TOTAL_LINE_TAX
574                       ,0)
575                   ,C_PRECISION));
576     END IF;
577   END C_FMT_TAX_ON_LINEFORMULA;
578 
579   FUNCTION C_LINE_CATEGORYFORMULA(LINE_CATEGORY_CODE IN VARCHAR2) RETURN CHAR IS
580   BEGIN
581     BEGIN
582       IF LINE_CATEGORY_CODE IS NOT NULL THEN
583         RETURN (LINE_CATEGORY_CODE);
584       ELSE
585         RETURN (NULL);
586       END IF;
587     END;
588     RETURN NULL;
589   END C_LINE_CATEGORYFORMULA;
590 
591   FUNCTION C_LINE_CHARGEFORMULA(LINE_CHARGE IN NUMBER
592                                ,C_PRECISION IN NUMBER) RETURN NUMBER IS
593   BEGIN
594     /*SRW.REFERENCE(LINE_CHARGE)*/NULL;
595     /*SRW.REFERENCE(C_PRECISION)*/NULL;
596     RETURN (ROUND(NVL(LINE_CHARGE
597                     ,0)
598                 ,C_PRECISION));
599   END C_LINE_CHARGEFORMULA;
600 
601   FUNCTION C_MASTER_ORGFORMULA RETURN CHAR IS
602     V_MASTER_ORG VARCHAR2(20);
603   BEGIN
604     SELECT
605       NVL(OE_SYS_PARAMETERS.VALUE('MASTER_ORGANIZATION_ID'
606                                  ,MO_GLOBAL.GET_CURRENT_ORG_ID)
607          ,0)
608     INTO V_MASTER_ORG
609     FROM
610       DUAL;
611     RETURN V_MASTER_ORG;
612   END C_MASTER_ORGFORMULA;
613 
614   FUNCTION CF_1FORMULA(S_TAX_TOTAL IN NUMBER
615                       ,S_LINE_CHARGE IN NUMBER
616                       ,S_EXTENDED_PRICE IN NUMBER
617                       ,S_SVC_EXTENDED_PRICE IN NUMBER
618                       ,S_HEADER_CHARGE IN NUMBER
619                       ,C_PRECISION IN NUMBER) RETURN NUMBER IS
620   BEGIN
621     RETURN (ROUND(NVL(S_TAX_TOTAL
622                     ,0) + NVL(S_LINE_CHARGE
623                     ,0) + NVL(S_EXTENDED_PRICE
624                     ,0) + NVL(S_SVC_EXTENDED_PRICE
625                     ,0) + NVL(S_HEADER_CHARGE
626                     ,0)
627                 ,C_PRECISION));
628   END CF_1FORMULA;
629 
630   FUNCTION C_TAX_ON_LINEFORMULA(LINE_CATEGORY_CODE IN VARCHAR2
631                                ,C_TOTAL_LINE_TAX IN NUMBER
632                                ,C_PRECISION IN NUMBER) RETURN NUMBER IS
633   BEGIN
634     IF LINE_CATEGORY_CODE = 'RETURN' THEN
635       RETURN (ROUND(NVL(C_TOTAL_LINE_TAX
636                       ,0)
637                   ,C_PRECISION) * (-1));
638     ELSE
639       RETURN (ROUND(NVL(C_TOTAL_LINE_TAX
640                       ,0)
641                   ,C_PRECISION));
642     END IF;
643   END C_TAX_ON_LINEFORMULA;
644 
645   FUNCTION C_ORDERED_QUANTITY(LINE_CATEGORY_CODE IN VARCHAR2
646                              ,ORDERED_QUANTITY IN NUMBER) RETURN NUMBER IS
647   BEGIN
648     IF LINE_CATEGORY_CODE = 'RETURN' THEN
649       RETURN ((ORDERED_QUANTITY) * (-1));
650     ELSE
651       RETURN (ORDERED_QUANTITY);
652     END IF;
653   END C_ORDERED_QUANTITY;
654 
655   FUNCTION C_TOTAL_LINE_TAXFORMULA(TAX_ON_LINE IN NUMBER
656                                   ,S_TOTAL_SVC_TAX IN NUMBER) RETURN NUMBER IS
657   BEGIN
658     RETURN (NVL(TAX_ON_LINE
659               ,0) + NVL(S_TOTAL_SVC_TAX
660               ,0));
661   END C_TOTAL_LINE_TAXFORMULA;
662 
663   FUNCTION C_SVC_TAXFORMULA(TAX_ON_SVC_LINE IN NUMBER
664                            ,C_PRECISION IN NUMBER) RETURN NUMBER IS
665   BEGIN
666     RETURN (ROUND(NVL(TAX_ON_SVC_LINE
667                     ,0)
668                 ,C_PRECISION));
669   END C_SVC_TAXFORMULA;
670 
671   FUNCTION C_CHARGE_PERIODICITYFORMULA(CHARGE_PERIODICITY_CODE IN VARCHAR2) RETURN CHAR IS
672     L_PERIODICITY VARCHAR2(25);
673   BEGIN
674     IF CHARGE_PERIODICITY_CODE IS NOT NULL THEN
675       SELECT
676         UNIT_OF_MEASURE
677       INTO L_PERIODICITY
678       FROM
679         MTL_UNITS_OF_MEASURE_VL
680       WHERE UOM_CODE = CHARGE_PERIODICITY_CODE
681         AND UOM_CLASS = FND_PROFILE.VALUE('ONT_UOM_CLASS_CHARGE_PERIODICITY');
682       RETURN (L_PERIODICITY);
683     ELSE
684       RETURN (P_CHARGE_PERIODICITY);
685     END IF;
686     RETURN NULL;
687   EXCEPTION
688     WHEN NO_DATA_FOUND THEN
689       RETURN NULL;
690   END C_CHARGE_PERIODICITYFORMULA;
691 
692   FUNCTION G_GRAND_TOTALFORMULA(CHARGE_PERIODICITY_CODE IN VARCHAR2
693                                ,C_TAX_TOTAL IN NUMBER
694                                ,C_LINE_RECUR_CHARGE IN NUMBER
695                                ,CF_EXTENDED_PRICE IN NUMBER
696                                ,C_SVC_EXTENDED_PRICE IN NUMBER
697                                ,C_HEADER_CHARGE_PERIODICITY IN NUMBER
698                                ,C_PRECISION IN NUMBER) RETURN NUMBER IS
699   BEGIN
700     IF CHARGE_PERIODICITY_CODE IS NULL THEN
701       RETURN (ROUND(NVL(C_TAX_TOTAL
702                       ,0) + NVL(C_LINE_RECUR_CHARGE
703                       ,0) + NVL(CF_EXTENDED_PRICE
704                       ,0) + NVL(C_SVC_EXTENDED_PRICE
705                       ,0) + NVL(C_HEADER_CHARGE_PERIODICITY
706                       ,0)
707                   ,C_PRECISION));
708     ELSE
709       RETURN (ROUND(NVL(C_TAX_TOTAL
710                       ,0) + NVL(C_LINE_RECUR_CHARGE
711                       ,0) + NVL(CF_EXTENDED_PRICE
712                       ,0) + NVL(C_SVC_EXTENDED_PRICE
713                       ,0)
714                   ,C_PRECISION));
715     END IF;
716   END G_GRAND_TOTALFORMULA;
717 
718   FUNCTION G_PRECISIONFORMULA(CURRENCY1 IN VARCHAR2) RETURN NUMBER IS
719   BEGIN
720     DECLARE
721       W_PRECISION NUMBER;
722     BEGIN
723       SELECT
724         PRECISION
725       INTO W_PRECISION
726       FROM
727         FND_CURRENCIES
728       WHERE CURRENCY_CODE = CURRENCY1;
729       RETURN (W_PRECISION);
730     EXCEPTION
731       WHEN NO_DATA_FOUND THEN
732         W_PRECISION := 2;
733         RETURN (W_PRECISION);
734     END;
735     RETURN NULL;
736   END G_PRECISIONFORMULA;
737 
738   FUNCTION C_HEADER_CHARGE_PERIODICITYFOR(CHARGE_PERIODICITY_CODE IN VARCHAR2
739                                          ,C_HEADER_CHARGE IN NUMBER
740                                          ,C_PRECISION IN NUMBER) RETURN NUMBER IS
741   BEGIN
742     IF CHARGE_PERIODICITY_CODE IS NULL THEN
743       RETURN (ROUND(NVL(C_HEADER_CHARGE
744                       ,0)
745                   ,C_PRECISION));
746     ELSE
747       RETURN (ROUND(0.00
748                   ,C_PRECISION));
749     END IF;
750   END C_HEADER_CHARGE_PERIODICITYFOR;
751 
752   FUNCTION C_HEADER_CHARGEFORMULA(HEADER_ID IN NUMBER) RETURN NUMBER IS
753     L_HEADER_CHARGE NUMBER;
754   BEGIN
755     oe_debug_pub.add('C_HEADER_CHARGEFORMULA.HEADER_ID :' || C_HEADER_CHARGEFORMULA.HEADER_ID);
756     SELECT
757       SUM(NVL(CHARGE_AMOUNT
758              ,0))
759     INTO L_HEADER_CHARGE
760     FROM
761       OE_CHARGE_LINES_V
762     WHERE HEADER_ID =C_HEADER_CHARGEFORMULA.HEADER_ID
763       AND LINE_ID is null;
764     RETURN (L_HEADER_CHARGE);
765   EXCEPTION
766     WHEN NO_DATA_FOUND THEN
767       RETURN (0);
768     WHEN OTHERS THEN
769       RETURN (0);
770   END C_HEADER_CHARGEFORMULA;
771 
772   FUNCTION C_ACCEPT_REQUIREDFORMULA(CONTINGENCY_ID IN NUMBER) RETURN CHAR IS
773     L_RETURN_VALUE VARCHAR(10);
774   BEGIN
775     IF CONTINGENCY_ID IS NULL THEN
776       SELECT
777         MEANING
778       INTO L_RETURN_VALUE
779       FROM
780         OE_LOOKUPS
781       WHERE LOOKUP_TYPE = 'OM_YES_NO'
782         AND LOOKUP_CODE = 'NO';
783     ELSE
784       SELECT
785         MEANING
786       INTO L_RETURN_VALUE
787       FROM
788         OE_LOOKUPS
789       WHERE LOOKUP_TYPE = 'OM_YES_NO'
790         AND LOOKUP_CODE = 'YES';
791     END IF;
792     RETURN L_RETURN_VALUE;
793   END C_ACCEPT_REQUIREDFORMULA;
794 
795   FUNCTION C_BILL_CONTACTFORMULA(INVOICE_TO_CONTACT_ID IN NUMBER) RETURN CHAR IS
796     L_BILL_CONTACT VARCHAR2(300);
797   BEGIN
798     SELECT
799       SUBSTRB(BILL_CT_PARTY.PERSON_FIRST_NAME
800              ,1
801              ,40) || ' ' || SUBSTRB(BILL_CT_PARTY.PERSON_LAST_NAME
802              ,1
803              ,50)
804     INTO L_BILL_CONTACT
805     FROM
806       HZ_CUST_ACCOUNT_ROLES BILL_CT_ACCT_ROLE,
807       HZ_PARTIES BILL_CT_PARTY,
808       HZ_RELATIONSHIPS BILL_CT_REL,
809       HZ_ORG_CONTACTS BILL_CT_ORG_CONT,
810       HZ_PARTIES BILL_CT_REL_PARTY,
811       HZ_CUST_ACCOUNTS BILL_CT_ROLE_ACCT
812     WHERE BILL_CT_ACCT_ROLE.CUST_ACCOUNT_ROLE_ID = INVOICE_TO_CONTACT_ID
813       AND BILL_CT_ACCT_ROLE.PARTY_ID = BILL_CT_REL.PARTY_ID
814       AND BILL_CT_ACCT_ROLE.ROLE_TYPE = 'CONTACT'
815       AND BILL_CT_REL.RELATIONSHIP_ID = BILL_CT_ORG_CONT.PARTY_RELATIONSHIP_ID
816       AND BILL_CT_REL.SUBJECT_ID = BILL_CT_PARTY.PARTY_ID
817       AND BILL_CT_REL.PARTY_ID = BILL_CT_REL_PARTY.PARTY_ID
818       AND BILL_CT_REL.SUBJECT_TABLE_NAME = 'HZ_PARTIES'
819       AND BILL_CT_REL.OBJECT_TABLE_NAME = 'HZ_PARTIES'
820       AND BILL_CT_ACCT_ROLE.CUST_ACCOUNT_ID = BILL_CT_ROLE_ACCT.CUST_ACCOUNT_ID
821       AND BILL_CT_ROLE_ACCT.PARTY_ID = BILL_CT_REL.OBJECT_ID;
822     RETURN (L_BILL_CONTACT);
823   EXCEPTION
824     WHEN OTHERS THEN
825       RETURN NULL;
826   END C_BILL_CONTACTFORMULA;
827 
828   FUNCTION C_SHIP_CONTACTFORMULA(SHIP_TO_CONTACT_ID IN NUMBER) RETURN CHAR IS
829     L_SHIP_CONTACT VARCHAR2(300);
830   BEGIN
831     SELECT
832       SUBSTRB(SHIP_CT_PARTY.PERSON_FIRST_NAME
833              ,1
834              ,40) || ' ' || SUBSTRB(SHIP_CT_PARTY.PERSON_LAST_NAME
835              ,1
836              ,50)
837     INTO L_SHIP_CONTACT
838     FROM
839       HZ_CUST_ACCOUNT_ROLES SHIP_CT_ACCT_ROLE,
840       HZ_PARTIES SHIP_CT_PARTY,
841       HZ_RELATIONSHIPS SHIP_CT_REL,
842       HZ_ORG_CONTACTS SHIP_CT_ORG_CONT,
843       HZ_PARTIES SHIP_CT_REL_PARTY,
844       HZ_CUST_ACCOUNTS SHIP_CT_ROLE_ACCT
845     WHERE SHIP_CT_ACCT_ROLE.CUST_ACCOUNT_ROLE_ID = SHIP_TO_CONTACT_ID
846       AND SHIP_CT_ACCT_ROLE.PARTY_ID = SHIP_CT_REL.PARTY_ID
847       AND SHIP_CT_ACCT_ROLE.ROLE_TYPE = 'CONTACT'
848       AND SHIP_CT_REL.RELATIONSHIP_ID = SHIP_CT_ORG_CONT.PARTY_RELATIONSHIP_ID
849       AND SHIP_CT_REL.SUBJECT_ID = SHIP_CT_PARTY.PARTY_ID
850       AND SHIP_CT_REL.PARTY_ID = SHIP_CT_REL_PARTY.PARTY_ID
851       AND SHIP_CT_REL.SUBJECT_TABLE_NAME = 'HZ_PARTIES'
852       AND SHIP_CT_REL.OBJECT_TABLE_NAME = 'HZ_PARTIES'
853       AND SHIP_CT_ACCT_ROLE.CUST_ACCOUNT_ID = SHIP_CT_ROLE_ACCT.CUST_ACCOUNT_ID
854       AND SHIP_CT_ROLE_ACCT.PARTY_ID = SHIP_CT_REL.OBJECT_ID;
855     RETURN (L_SHIP_CONTACT);
856   EXCEPTION
857     WHEN OTHERS THEN
858       RETURN NULL;
859   END C_SHIP_CONTACTFORMULA;
860 
861   FUNCTION C_DEL_CONTACTFORMULA(DELIVER_TO_CONTACT_ID IN NUMBER) RETURN CHAR IS
862     L_DEL_CONTACT VARCHAR2(300);
863   BEGIN
864     SELECT
865       SUBSTRB(DEL_CT_PARTY.PERSON_FIRST_NAME
866              ,1
867              ,40) || ' ' || SUBSTRB(DEL_CT_PARTY.PERSON_LAST_NAME
868              ,1
869              ,50)
870     INTO L_DEL_CONTACT
871     FROM
872       HZ_CUST_ACCOUNT_ROLES DEL_CT_ACCT_ROLE,
873       HZ_PARTIES DEL_CT_PARTY,
874       HZ_RELATIONSHIPS DEL_CT_REL,
875       HZ_ORG_CONTACTS DEL_CT_ORG_CONT,
876       HZ_PARTIES DEL_CT_REL_PARTY,
877       HZ_CUST_ACCOUNTS DEL_CT_ROLE_ACCT
878     WHERE DEL_CT_ACCT_ROLE.CUST_ACCOUNT_ROLE_ID = DELIVER_TO_CONTACT_ID
879       AND DEL_CT_ACCT_ROLE.PARTY_ID = DEL_CT_REL.PARTY_ID
880       AND DEL_CT_ACCT_ROLE.ROLE_TYPE = 'CONTACT'
881       AND DEL_CT_REL.RELATIONSHIP_ID = DEL_CT_ORG_CONT.PARTY_RELATIONSHIP_ID
882       AND DEL_CT_REL.SUBJECT_ID = DEL_CT_PARTY.PARTY_ID
883       AND DEL_CT_REL.PARTY_ID = DEL_CT_REL_PARTY.PARTY_ID
884       AND DEL_CT_REL.SUBJECT_TABLE_NAME = 'HZ_PARTIES'
885       AND DEL_CT_REL.OBJECT_TABLE_NAME = 'HZ_PARTIES'
886       AND DEL_CT_ACCT_ROLE.CUST_ACCOUNT_ID = DEL_CT_ROLE_ACCT.CUST_ACCOUNT_ID
887       AND DEL_CT_ROLE_ACCT.PARTY_ID = DEL_CT_REL.OBJECT_ID;
888     RETURN (L_DEL_CONTACT);
889   EXCEPTION
890     WHEN OTHERS THEN
891       RETURN NULL;
892   END C_DEL_CONTACTFORMULA;
893 
894   FUNCTION RP_DUMMY_ITEM_P RETURN VARCHAR2 IS
895   BEGIN
896     RETURN RP_DUMMY_ITEM;
897   END RP_DUMMY_ITEM_P;
898 
899   FUNCTION RP_REPORT_NAME_P RETURN VARCHAR2 IS
900   BEGIN
901     RETURN RP_REPORT_NAME;
902   END RP_REPORT_NAME_P;
903 
904   FUNCTION RP_SUB_TITLE_P RETURN VARCHAR2 IS
905   BEGIN
906     RETURN RP_SUB_TITLE;
907   END RP_SUB_TITLE_P;
908 
909   FUNCTION RP_COMPANY_NAME_P RETURN VARCHAR2 IS
910   BEGIN
911     RETURN RP_COMPANY_NAME;
912   END RP_COMPANY_NAME_P;
913 
914   FUNCTION RP_FUNCTIONAL_CURRENCY_P RETURN VARCHAR2 IS
915   BEGIN
916     RETURN RP_FUNCTIONAL_CURRENCY;
917   END RP_FUNCTIONAL_CURRENCY_P;
918 
919   FUNCTION RP_DATA_FOUND_P RETURN VARCHAR2 IS
920   BEGIN
921     RETURN RP_DATA_FOUND;
922   END RP_DATA_FOUND_P;
923 
924   FUNCTION RP_ITEM_FLEX_ALL_SEG_P RETURN VARCHAR2 IS
925   BEGIN
926     RETURN RP_ITEM_FLEX_ALL_SEG;
927   END RP_ITEM_FLEX_ALL_SEG_P;
928 
929   FUNCTION RP_PRINT_DESCRIPTION_P RETURN VARCHAR2 IS
930   BEGIN
931     RETURN RP_PRINT_DESCRIPTION;
932   END RP_PRINT_DESCRIPTION_P;
933 
934   FUNCTION RP_CURR_PROFILE_P RETURN VARCHAR2 IS
935   BEGIN
936     RETURN RP_CURR_PROFILE;
937   END RP_CURR_PROFILE_P;
938 
939   FUNCTION RP_ITEM_FLEX_SEG_VAL_P RETURN VARCHAR2 IS
940   BEGIN
941     RETURN RP_ITEM_FLEX_SEG_VAL;
942   END RP_ITEM_FLEX_SEG_VAL_P;
943 
944   FUNCTION RP_TAX_TOTAL_ROUNDED_P RETURN NUMBER IS
945   BEGIN
946     RETURN RP_TAX_TOTAL_ROUNDED;
947   END RP_TAX_TOTAL_ROUNDED_P;
948 
949   FUNCTION RP_LINE_CHARGE_TOTAL_ROUNDED_P RETURN NUMBER IS
950   BEGIN
951     RETURN RP_LINE_CHARGE_TOTAL_ROUNDED;
952   END RP_LINE_CHARGE_TOTAL_ROUNDED_P;
953 
954   FUNCTION RP_HDR_CHARGE_TOTAL_ROUNDED_P RETURN NUMBER IS
955   BEGIN
956     RETURN RP_HDR_CHARGE_TOTAL_ROUNDED;
957   END RP_HDR_CHARGE_TOTAL_ROUNDED_P;
958 
959   FUNCTION RP_HDR_CHARGE_TOTAL_P RETURN NUMBER IS
960   BEGIN
961     RETURN RP_HDR_CHARGE_TOTAL;
962   END RP_HDR_CHARGE_TOTAL_P;
963 
964   FUNCTION IS_FIXED_RATE(X_FROM_CURRENCY IN VARCHAR2
965                         ,X_TO_CURRENCY IN VARCHAR2
966                         ,X_EFFECTIVE_DATE IN DATE) RETURN VARCHAR2 IS
967     X0 VARCHAR2(2000);
968   BEGIN
969     /*STPROC.INIT('begin :X0 := GL_CURRENCY_API.IS_FIXED_RATE(:X_FROM_CURRENCY, :X_TO_CURRENCY, :X_EFFECTIVE_DATE); end;');
970     STPROC.BIND_O(X0);
971     STPROC.BIND_I(X_FROM_CURRENCY);
972     STPROC.BIND_I(X_TO_CURRENCY);
973     STPROC.BIND_I(X_EFFECTIVE_DATE);
974     STPROC.EXECUTE;
975     STPROC.RETRIEVE(1
976                    ,X0);*/
977     X0 := GL_CURRENCY_API.IS_FIXED_RATE(X_FROM_CURRENCY, X_TO_CURRENCY, X_EFFECTIVE_DATE);
978     RETURN X0;
979   END IS_FIXED_RATE;
980 
981   PROCEDURE GET_RELATION(X_FROM_CURRENCY IN VARCHAR2
982                         ,X_TO_CURRENCY IN VARCHAR2
983                         ,X_EFFECTIVE_DATE IN DATE
984                         ,X_FIXED_RATE IN OUT NOCOPY BOOLEAN
985                         ,X_RELATIONSHIP IN OUT NOCOPY VARCHAR2) IS
986   BEGIN
987   /*  STPROC.INIT('declare X_FIXED_RATE BOOLEAN;
988   begin X_FIXED_RATE := sys.diutil.int_to_bool(:X_FIXED_RATE);
989   GL_CURRENCY_API.GET_RELATION(:X_FROM_CURRENCY, :X_TO_CURRENCY,
990   :X_EFFECTIVE_DATE, X_FIXED_RATE, :X_RELATIONSHIP);
991   :X_FIXED_RATE := sys.diutil.bool_to_int(X_FIXED_RATE); end;');
992     STPROC.BIND_IO(X_FIXED_RATE);
993     STPROC.BIND_I(X_FROM_CURRENCY);
994     STPROC.BIND_I(X_TO_CURRENCY);
995     STPROC.BIND_I(X_EFFECTIVE_DATE);
996     STPROC.BIND_IO(X_RELATIONSHIP);
997     STPROC.EXECUTE;
998     STPROC.RETRIEVE(1
999                    ,X_FIXED_RATE);
1000     STPROC.RETRIEVE(5
1001                    ,X_RELATIONSHIP);*/
1002 --X_FIXED_RATE := sys.diutil.int_to_bool(X_FIXED_RATE);
1003 GL_CURRENCY_API.GET_RELATION(X_FROM_CURRENCY, X_TO_CURRENCY, X_EFFECTIVE_DATE, X_FIXED_RATE, X_RELATIONSHIP);
1004 --X_FIXED_RATE := sys.diutil.bool_to_int(X_FIXED_RATE);
1005   END GET_RELATION;
1006 
1007   FUNCTION GET_EURO_CODE RETURN VARCHAR2 IS
1008     X0 VARCHAR2(2000);
1009   BEGIN
1010     /*STPROC.INIT('begin :X0 := GL_CURRENCY_API.GET_EURO_CODE; end;');
1011     STPROC.BIND_O(X0);
1012     STPROC.EXECUTE;
1013     STPROC.RETRIEVE(1
1014                    ,X0);*/
1015     X0 := GL_CURRENCY_API.GET_EURO_CODE;
1016     RETURN X0;
1017   END GET_EURO_CODE;
1018 
1019   FUNCTION GET_RATE(X_FROM_CURRENCY IN VARCHAR2
1020                    ,X_TO_CURRENCY IN VARCHAR2
1021                    ,X_CONVERSION_DATE IN DATE
1022                    ,X_CONVERSION_TYPE IN VARCHAR2) RETURN NUMBER IS
1023     X0 NUMBER;
1024   BEGIN
1025     /*STPROC.INIT('begin :X0 := GL_CURRENCY_API.GET_RATE(:X_FROM_CURRENCY, :X_TO_CURRENCY, :X_CONVERSION_DATE, :X_CONVERSION_TYPE); end;');
1026     STPROC.BIND_O(X0);
1027     STPROC.BIND_I(X_FROM_CURRENCY);
1028     STPROC.BIND_I(X_TO_CURRENCY);
1029     STPROC.BIND_I(X_CONVERSION_DATE);
1030     STPROC.BIND_I(X_CONVERSION_TYPE);
1031     STPROC.EXECUTE;
1032     STPROC.RETRIEVE(1
1033                    ,X0);*/
1034     X0 := GL_CURRENCY_API.GET_RATE(X_FROM_CURRENCY, X_TO_CURRENCY, X_CONVERSION_DATE, X_CONVERSION_TYPE);
1035     RETURN X0;
1036   END GET_RATE;
1037 
1038   FUNCTION GET_RATE(X_SET_OF_BOOKS_ID IN NUMBER
1039                    ,X_FROM_CURRENCY IN VARCHAR2
1040                    ,X_CONVERSION_DATE IN DATE
1041                    ,X_CONVERSION_TYPE IN VARCHAR2) RETURN NUMBER IS
1042     X0 NUMBER;
1043   BEGIN
1044     /*STPROC.INIT('begin :X0 := GL_CURRENCY_API.GET_RATE(:X_SET_OF_BOOKS_ID, :X_FROM_CURRENCY, :X_CONVERSION_DATE, :X_CONVERSION_TYPE); end;');
1045     STPROC.BIND_O(X0);
1046     STPROC.BIND_I(X_SET_OF_BOOKS_ID);
1047     STPROC.BIND_I(X_FROM_CURRENCY);
1048     STPROC.BIND_I(X_CONVERSION_DATE);
1049     STPROC.BIND_I(X_CONVERSION_TYPE);
1050     STPROC.EXECUTE;
1051     STPROC.RETRIEVE(1
1052                    ,X0);*/
1053     X0 := GL_CURRENCY_API.GET_RATE(X_SET_OF_BOOKS_ID, X_FROM_CURRENCY, X_CONVERSION_DATE, X_CONVERSION_TYPE);
1054     RETURN X0;
1055   END GET_RATE;
1056 
1057   FUNCTION CONVERT_AMOUNT(X_FROM_CURRENCY IN VARCHAR2
1058                          ,X_TO_CURRENCY IN VARCHAR2
1059                          ,X_CONVERSION_DATE IN DATE
1060                          ,X_CONVERSION_TYPE IN VARCHAR2
1061                          ,X_AMOUNT IN NUMBER) RETURN NUMBER IS
1062     X0 NUMBER;
1063   BEGIN
1064     /*STPROC.INIT('begin :X0 := GL_CURRENCY_API.CONVERT_AMOUNT(:X_FROM_CURRENCY, :X_TO_CURRENCY, :X_CONVERSION_DATE, :X_CONVERSION_TYPE, :X_AMOUNT); end;');
1065     STPROC.BIND_O(X0);
1066     STPROC.BIND_I(X_FROM_CURRENCY);
1067     STPROC.BIND_I(X_TO_CURRENCY);
1068     STPROC.BIND_I(X_CONVERSION_DATE);
1069     STPROC.BIND_I(X_CONVERSION_TYPE);
1070     STPROC.BIND_I(X_AMOUNT);
1071     STPROC.EXECUTE;
1072     STPROC.RETRIEVE(1
1073                    ,X0);*/
1074     X0 := GL_CURRENCY_API.CONVERT_AMOUNT(X_FROM_CURRENCY, X_TO_CURRENCY, X_CONVERSION_DATE, X_CONVERSION_TYPE, X_AMOUNT);
1075     RETURN X0;
1076   END CONVERT_AMOUNT;
1077 
1078   FUNCTION CONVERT_AMOUNT(X_SET_OF_BOOKS_ID IN NUMBER
1079                          ,X_FROM_CURRENCY IN VARCHAR2
1080                          ,X_CONVERSION_DATE IN DATE
1081                          ,X_CONVERSION_TYPE IN VARCHAR2
1082                          ,X_AMOUNT IN NUMBER) RETURN NUMBER IS
1083     X0 NUMBER;
1084   BEGIN
1085     /*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;');
1086     STPROC.BIND_O(X0);
1087     STPROC.BIND_I(X_SET_OF_BOOKS_ID);
1088     STPROC.BIND_I(X_FROM_CURRENCY);
1089     STPROC.BIND_I(X_CONVERSION_DATE);
1090     STPROC.BIND_I(X_CONVERSION_TYPE);
1091     STPROC.BIND_I(X_AMOUNT);
1092     STPROC.EXECUTE;
1093     STPROC.RETRIEVE(1
1094                    ,X0);*/
1095     X0 := GL_CURRENCY_API.CONVERT_AMOUNT(X_SET_OF_BOOKS_ID, X_FROM_CURRENCY, X_CONVERSION_DATE, X_CONVERSION_TYPE, X_AMOUNT);
1096     RETURN X0;
1097   END CONVERT_AMOUNT;
1098 
1099   FUNCTION GET_DERIVE_TYPE(SOB_ID IN NUMBER
1100                           ,PERIOD IN VARCHAR2
1101                           ,CURR_CODE IN VARCHAR2) RETURN VARCHAR2 IS
1102     X0 VARCHAR2(2000);
1103   BEGIN
1104     /*STPROC.INIT('begin :X0 := GL_CURRENCY_API.GET_DERIVE_TYPE(:SOB_ID, :PERIOD, :CURR_CODE); end;');
1105     STPROC.BIND_O(X0);
1106     STPROC.BIND_I(SOB_ID);
1107     STPROC.BIND_I(PERIOD);
1108     STPROC.BIND_I(CURR_CODE);
1109     STPROC.EXECUTE;
1110     STPROC.RETRIEVE(1
1111                    ,X0);*/
1112     X0 := GL_CURRENCY_API.GET_DERIVE_TYPE(SOB_ID, PERIOD, CURR_CODE);
1113     RETURN X0;
1114   END GET_DERIVE_TYPE;
1115 
1116   FUNCTION RATE_EXISTS(X_FROM_CURRENCY IN VARCHAR2
1117                       ,X_TO_CURRENCY IN VARCHAR2
1118                       ,X_CONVERSION_DATE IN DATE
1119                       ,X_CONVERSION_TYPE IN VARCHAR2) RETURN VARCHAR2 IS
1120     X0 VARCHAR2(2000);
1121   BEGIN
1122     /*STPROC.INIT('begin :X0 := GL_CURRENCY_API.RATE_EXISTS(:X_FROM_CURRENCY, :X_TO_CURRENCY, :X_CONVERSION_DATE, :X_CONVERSION_TYPE); end;');
1123     STPROC.BIND_O(X0);
1124     STPROC.BIND_I(X_FROM_CURRENCY);
1125     STPROC.BIND_I(X_TO_CURRENCY);
1126     STPROC.BIND_I(X_CONVERSION_DATE);
1127     STPROC.BIND_I(X_CONVERSION_TYPE);
1128     STPROC.EXECUTE;
1129     STPROC.RETRIEVE(1
1130                    ,X0);*/
1131     X0 := GL_CURRENCY_API.RATE_EXISTS(X_FROM_CURRENCY, X_TO_CURRENCY, X_CONVERSION_DATE, X_CONVERSION_TYPE);
1132     RETURN X0;
1133   END RATE_EXISTS;
1134 
1135 FUNCTION BEFOREREPORT RETURN BOOLEAN IS
1136 BEGIN
1137 
1138 	DECLARE
1139 	BEGIN
1140 
1141 	/*  BEGIN
1142 	  SRW.USER_EXIT('FND SRWINIT');
1143 	  EXCEPTION
1144 		 WHEN SRW.USER_EXIT_FAILURE THEN
1145 		SRW.MESSAGE (1000,'Failed in BEFORE REPORT trigger - SRWINIT USER EXIT');
1146 		 return (FALSE);
1147 	  END;*/
1148 
1149 	BEGIN  /*MOAC*/
1150 
1151 	P_ORG_ID:= MO_GLOBAL.GET_CURRENT_ORG_ID();
1152 	END;
1153 
1154 
1155 
1156 /*------------------------------------------------------------------------------
1157 Following PL/SQL block gets the company name, functional currency and precision.
1158 ------------------------------------------------------------------------------*/
1159 
1160 
1161 	  DECLARE
1162 	  l_company_name            VARCHAR2 (100);
1163 	  l_functional_currency     VARCHAR2  (15);
1164 
1165 	  BEGIN
1166 
1167 	    SELECT sob.name                   ,
1168 		   sob.currency_code
1169 	    INTO
1170 		   l_company_name ,
1171 		   l_functional_currency
1172 	    FROM    gl_sets_of_books sob,
1173 		    fnd_currencies cur
1174 	    WHERE  sob.set_of_books_id = p_sob_id
1175 	    AND    sob.currency_code = cur.currency_code
1176 	    ;
1177 
1178 	    rp_company_name            := l_company_name;
1179 	    rp_functional_currency     := l_functional_currency ;
1180 
1181 
1182 	  EXCEPTION
1183 	    WHEN NO_DATA_FOUND THEN
1184 	     /*srw.message(2000,'Failed in BEFORE REPORT trigger. get company, currency');*/null;
1185 	    when OTHERS then
1186 	    /*srw.message(2000,'Failed in BEFORE REPORT trigger. get company, currency'); */null;
1187 	  END ;
1188 
1189 /*------------------------------------------------------------------------------
1190 Following PL/SQL block gets the report name for the passed concurrent request Id.
1191 ------------------------------------------------------------------------------*/
1192 	  DECLARE
1193 	      l_report_name  VARCHAR2(240);
1194 	  BEGIN
1195 	      SELECT cp.user_concurrent_program_name
1196 	      INTO   l_report_name
1197 	      FROM   FND_CONCURRENT_PROGRAMS_VL cp,
1198 		     FND_CONCURRENT_REQUESTS cr
1199 	      WHERE  cr.request_id     = P_CONC_REQUEST_ID
1200 	      AND    cp.application_id = cr.program_application_id
1201 	      AND    cp.concurrent_program_id = cr.concurrent_program_id
1202 	      ;
1203 
1204 	      RP_Report_Name := l_report_name;
1205 	  EXCEPTION
1206 	      WHEN NO_DATA_FOUND
1207 	      THEN RP_REPORT_NAME := 'Sales Order Acknowledgement';
1208 	      when OTHERS then
1209 	      /*srw.message(2000,'Failed in BEFORE REPORT trigger. get company, currency'); */null;
1210 	  END;
1211 
1212 /*------------------------------------------------------------------------------
1213 The following block retrieves the profile option value for standard vs
1214 extended currency
1215 -------------------------------------------------------------------------------*/
1216 
1217 	/*  BEGIN
1218 	    SRW.REFERENCE(:p_profile_name);
1219 	    SRW.USER_EXIT('FND GETPROFILE NAME=":p_profile_name"
1220 					  FIELD=":RP_CURR_PROFILE"
1221 					  PRINT_ERROR="N"
1222 					  ');
1223 
1224 
1225 	  EXCEPTION
1226 	    WHEN SRW.USER_EXIT_FAILURE THEN
1227 	    srw.message(2000,'Failed in BEFORE REPORT trigger. FND GETPROFILE - CURR USER_EXIT');
1228 	  END; */
1229 
1230 
1231 
1232 /*------------------------------------------------------------------------------
1233 Following PL/SQL block builds up the lexical parameters, to be used in the
1234 WHERE clause of the query. This also populates the report level variables, used
1235 to store the flexfield structure.
1236 ------------------------------------------------------------------------------*/
1237 	  /*BEGIN
1238 	    SRW.REFERENCE(:P_item_flex_code);
1239 	    SRW.REFERENCE(:P_item_structure_num);
1240 
1241 
1242 	    SRW.USER_EXIT('FND FLEXSQL CODE=":p_item_flex_code"
1243 				   NUM=":p_item_structure_num"
1244 				   APPL_SHORT_NAME="INV"
1245 				   OUTPUT=":rp_item_flex_all_seg"
1246 				   MODE="SELECT"
1247 				   DISPLAY="ALL"
1248 				   TABLEALIAS="SI"
1249 				    ');
1250 
1251 	  EXCEPTION
1252 	    WHEN SRW.USER_EXIT_FAILURE THEN
1253 	   srw.message(2000,'Failed in BEFORE REPORT trigger. FND FLEXSQL USER_EXIT');
1254 	  END; */
1255 
1256 
1257 
1258 	DECLARE
1259 	    l_meaning       VARCHAR2 (80);
1260 	  BEGIN
1261 	    SELECT MEANING
1262 	    INTO   l_meaning
1263 	    FROM OE_LOOKUPS
1264 	    WHERE LOOKUP_TYPE = 'ITEM_DISPLAY_CODE'
1265 	    AND LOOKUP_CODE  = substr(upper(p_print_description),1,1)
1266 	    ;
1267 
1268 	    rp_print_description := l_meaning ;
1269 	  EXCEPTION WHEN NO_DATA_FOUND THEN
1270 	    rp_print_description := 'Internal Item Description';
1271 	  when OTHERS then
1272 	  /*srw.message(2000,'Failed in BEFORE REPORT trigger. Get Print Description'); */null;
1273 
1274 	  END ;
1275 
1276 
1277 
1278 	/* ----- The follwoing PL/SQL block populates the multi-lingual
1279 	lexical parameters----- */
1280 	  BEGIN
1281 	    populate_mls_lexicals;
1282 	  END;
1283 
1284 	END ;
1285   RETURN (TRUE);
1286 END;
1287 
1288 function F_PeriodicityFormatTrigger return VARCHAR2 is
1289 begin
1290   if OE_SYS_PARAMETERS.Value('RECURRING_CHARGES',mo_global.get_current_org_id()) = 'Y' THEN
1291     return('TRUE');
1292   else
1293     return ('FALSE');
1294   end if;
1295   return ('FALSE');
1296 end;
1297 
1298  -- Added this function for Bug 12690206
1299  FUNCTION ITEM_DSPFORMULA(ITEM_IDENTIFIER_TYPE IN VARCHAR2,INVENTORY_ITEM_ID IN NUMBER,
1300  C_MASTER_ORG IN VARCHAR2,ORDERED_ITEM_ID IN NUMBER,ORDERED_ITEM IN VARCHAR2,SI_ORGANIZATION_ID IN NUMBER,
1301  SI_INVENTORY_ITEM_ID IN NUMBER) RETURN VARCHAR2 IS
1302  v_item varchar2(2000);
1303  v_description varchar2(500);
1304  begin
1305 
1306    if (item_identifier_type is null or item_identifier_type = 'INT')
1307         or (p_print_description in ('I','D','F')) then
1308      select sitems.description description
1309      into   v_description
1310      from   mtl_system_items_vl sitems
1311      where    nvl(sitems.organization_id,0) = c_master_org
1312      and    sitems.inventory_item_id = ITEM_DSPFORMULA.inventory_item_id;
1313 
1314 
1315      rp_dummy_item := v_item;
1316     -- rp_dummy_item := '';
1317      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');
1318 
1319 
1320    elsif (item_identifier_type = 'CUST' and p_print_description in ('C','P','O')) then
1321 
1322      select citems.customer_item_number item,
1323             nvl(citems.customer_item_desc,sitems.description) description
1324      into   v_item,v_description
1325      from   mtl_customer_items citems,
1326             mtl_customer_item_xrefs cxref,
1327             mtl_system_items_vl sitems
1328      where  citems.customer_item_id = cxref.customer_item_id
1329      and    cxref.inventory_item_id = sitems.inventory_item_id
1330      and    citems.customer_item_id = ordered_item_id
1331      and    nvl(sitems.organization_id,0) = c_master_org
1332      and    sitems.inventory_item_id = ITEM_DSPFORMULA.inventory_item_id;
1333 
1334    elsif (p_print_description in ('C','P','O')) then
1335      Begin
1336           select items.cross_reference item,
1337                  nvl(items.description,sitems.description) description
1338             into v_item,v_description
1339             from mtl_cross_reference_types xtypes,
1340                  mtl_cross_references items,
1341                  mtl_system_items_vl sitems
1342            where xtypes.cross_reference_type = items.cross_reference_type
1343              and items.inventory_item_id = sitems.inventory_item_id
1344              and items.cross_reference = ordered_item
1345              and items.cross_reference_type = item_identifier_type
1346              and nvl(sitems.organization_id,0) = c_master_org
1347              and sitems.inventory_item_id = ITEM_DSPFORMULA.inventory_item_id
1348            --Bug 3433353 begin
1349              and items.org_independent_flag = 'N'
1350              and items.organization_id = c_master_org;
1351          --  and sitems.customer_order_enabled_flag = 'Y'
1352          --  and sitems.bom_item_type in (1,4)
1353      Exception When NO_DATA_FOUND Then
1354              select items.cross_reference item,
1355              nvl(items.description,sitems.description) description
1356              into v_item,v_description
1357              from mtl_cross_reference_types xtypes,
1358              mtl_cross_references items,
1359              mtl_system_items_vl sitems
1360              where xtypes.cross_reference_type = items.cross_reference_type
1361              and items.inventory_item_id = sitems.inventory_item_id
1362              and items.cross_reference = ordered_item
1363              and items.cross_reference_type = item_identifier_type
1364              and nvl(sitems.organization_id,0) = c_master_org
1365              and sitems.inventory_item_id = ITEM_DSPFORMULA.inventory_item_id
1366              and items.org_independent_flag = 'Y';
1367      End;
1368  --Bug 343353 End
1369    end if;
1370 
1371    if (p_print_description in ('I','C')) then
1372      return(v_item||' - '||v_description);
1373    elsif (p_print_description in ('D','P')) then
1374      return(v_description);
1375    else
1376      return(v_item);
1377    end if;
1378 
1379  RETURN NULL;
1380  Exception
1381     When Others Then
1382          return('Item Not Found');
1383  end ITEM_DSPFORMULA;
1384 
1385  FUNCTION  test (abc IN VARCHAR) RETURN VARCHAR2 IS
1386  BEGIN
1387    oe_debug_pub.add(abc);
1388    return 'abc';
1389  END test;  --End of bug# 12690206
1390 
1391 END ONT_OEXOEACK_XMLP_PKG;
1392