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.1 2008/05/30 05:44:04 dwkrishn noship $ */
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.1 2008/05/30 05:44:04 dwkrishn noship $')*/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     SELECT
756       SUM(NVL(CHARGE_AMOUNT
757              ,0))
758     INTO L_HEADER_CHARGE
759     FROM
760       OE_CHARGE_LINES_V
761     WHERE HEADER_ID =C_HEADER_CHARGEFORMULA.HEADER_ID
762       AND LINE_ID is null;
763     RETURN (L_HEADER_CHARGE);
764   EXCEPTION
765     WHEN NO_DATA_FOUND THEN
766       RETURN (0);
767     WHEN OTHERS THEN
768       RETURN (0);
769   END C_HEADER_CHARGEFORMULA;
770 
771   FUNCTION C_ACCEPT_REQUIREDFORMULA(CONTINGENCY_ID IN NUMBER) RETURN CHAR IS
772     L_RETURN_VALUE VARCHAR(10);
773   BEGIN
774     IF CONTINGENCY_ID IS NULL THEN
775       SELECT
776         MEANING
777       INTO L_RETURN_VALUE
778       FROM
779         OE_LOOKUPS
780       WHERE LOOKUP_TYPE = 'OM_YES_NO'
781         AND LOOKUP_CODE = 'NO';
782     ELSE
783       SELECT
784         MEANING
785       INTO L_RETURN_VALUE
786       FROM
787         OE_LOOKUPS
788       WHERE LOOKUP_TYPE = 'OM_YES_NO'
789         AND LOOKUP_CODE = 'YES';
790     END IF;
791     RETURN L_RETURN_VALUE;
792   END C_ACCEPT_REQUIREDFORMULA;
793 
794   FUNCTION C_BILL_CONTACTFORMULA(INVOICE_TO_CONTACT_ID IN NUMBER) RETURN CHAR IS
795     L_BILL_CONTACT VARCHAR2(300);
796   BEGIN
797     SELECT
798       SUBSTRB(BILL_CT_PARTY.PERSON_FIRST_NAME
799              ,1
800              ,40) || ' ' || SUBSTRB(BILL_CT_PARTY.PERSON_LAST_NAME
801              ,1
802              ,50)
803     INTO L_BILL_CONTACT
804     FROM
805       HZ_CUST_ACCOUNT_ROLES BILL_CT_ACCT_ROLE,
806       HZ_PARTIES BILL_CT_PARTY,
807       HZ_RELATIONSHIPS BILL_CT_REL,
808       HZ_ORG_CONTACTS BILL_CT_ORG_CONT,
809       HZ_PARTIES BILL_CT_REL_PARTY,
810       HZ_CUST_ACCOUNTS BILL_CT_ROLE_ACCT
811     WHERE BILL_CT_ACCT_ROLE.CUST_ACCOUNT_ROLE_ID = INVOICE_TO_CONTACT_ID
812       AND BILL_CT_ACCT_ROLE.PARTY_ID = BILL_CT_REL.PARTY_ID
813       AND BILL_CT_ACCT_ROLE.ROLE_TYPE = 'CONTACT'
814       AND BILL_CT_REL.RELATIONSHIP_ID = BILL_CT_ORG_CONT.PARTY_RELATIONSHIP_ID
815       AND BILL_CT_REL.SUBJECT_ID = BILL_CT_PARTY.PARTY_ID
816       AND BILL_CT_REL.PARTY_ID = BILL_CT_REL_PARTY.PARTY_ID
817       AND BILL_CT_REL.SUBJECT_TABLE_NAME = 'HZ_PARTIES'
818       AND BILL_CT_REL.OBJECT_TABLE_NAME = 'HZ_PARTIES'
819       AND BILL_CT_ACCT_ROLE.CUST_ACCOUNT_ID = BILL_CT_ROLE_ACCT.CUST_ACCOUNT_ID
820       AND BILL_CT_ROLE_ACCT.PARTY_ID = BILL_CT_REL.OBJECT_ID;
821     RETURN (L_BILL_CONTACT);
822   EXCEPTION
823     WHEN OTHERS THEN
824       RETURN NULL;
825   END C_BILL_CONTACTFORMULA;
826 
827   FUNCTION C_SHIP_CONTACTFORMULA(SHIP_TO_CONTACT_ID IN NUMBER) RETURN CHAR IS
828     L_SHIP_CONTACT VARCHAR2(300);
829   BEGIN
830     SELECT
831       SUBSTRB(SHIP_CT_PARTY.PERSON_FIRST_NAME
832              ,1
833              ,40) || ' ' || SUBSTRB(SHIP_CT_PARTY.PERSON_LAST_NAME
834              ,1
835              ,50)
836     INTO L_SHIP_CONTACT
837     FROM
838       HZ_CUST_ACCOUNT_ROLES SHIP_CT_ACCT_ROLE,
839       HZ_PARTIES SHIP_CT_PARTY,
840       HZ_RELATIONSHIPS SHIP_CT_REL,
841       HZ_ORG_CONTACTS SHIP_CT_ORG_CONT,
842       HZ_PARTIES SHIP_CT_REL_PARTY,
843       HZ_CUST_ACCOUNTS SHIP_CT_ROLE_ACCT
844     WHERE SHIP_CT_ACCT_ROLE.CUST_ACCOUNT_ROLE_ID = SHIP_TO_CONTACT_ID
845       AND SHIP_CT_ACCT_ROLE.PARTY_ID = SHIP_CT_REL.PARTY_ID
846       AND SHIP_CT_ACCT_ROLE.ROLE_TYPE = 'CONTACT'
847       AND SHIP_CT_REL.RELATIONSHIP_ID = SHIP_CT_ORG_CONT.PARTY_RELATIONSHIP_ID
848       AND SHIP_CT_REL.SUBJECT_ID = SHIP_CT_PARTY.PARTY_ID
849       AND SHIP_CT_REL.PARTY_ID = SHIP_CT_REL_PARTY.PARTY_ID
850       AND SHIP_CT_REL.SUBJECT_TABLE_NAME = 'HZ_PARTIES'
851       AND SHIP_CT_REL.OBJECT_TABLE_NAME = 'HZ_PARTIES'
852       AND SHIP_CT_ACCT_ROLE.CUST_ACCOUNT_ID = SHIP_CT_ROLE_ACCT.CUST_ACCOUNT_ID
853       AND SHIP_CT_ROLE_ACCT.PARTY_ID = SHIP_CT_REL.OBJECT_ID;
854     RETURN (L_SHIP_CONTACT);
855   EXCEPTION
856     WHEN OTHERS THEN
857       RETURN NULL;
858   END C_SHIP_CONTACTFORMULA;
859 
860   FUNCTION C_DEL_CONTACTFORMULA(DELIVER_TO_CONTACT_ID IN NUMBER) RETURN CHAR IS
861     L_DEL_CONTACT VARCHAR2(300);
862   BEGIN
863     SELECT
864       SUBSTRB(DEL_CT_PARTY.PERSON_FIRST_NAME
865              ,1
866              ,40) || ' ' || SUBSTRB(DEL_CT_PARTY.PERSON_LAST_NAME
867              ,1
868              ,50)
869     INTO L_DEL_CONTACT
870     FROM
871       HZ_CUST_ACCOUNT_ROLES DEL_CT_ACCT_ROLE,
872       HZ_PARTIES DEL_CT_PARTY,
873       HZ_RELATIONSHIPS DEL_CT_REL,
874       HZ_ORG_CONTACTS DEL_CT_ORG_CONT,
875       HZ_PARTIES DEL_CT_REL_PARTY,
876       HZ_CUST_ACCOUNTS DEL_CT_ROLE_ACCT
877     WHERE DEL_CT_ACCT_ROLE.CUST_ACCOUNT_ROLE_ID = DELIVER_TO_CONTACT_ID
878       AND DEL_CT_ACCT_ROLE.PARTY_ID = DEL_CT_REL.PARTY_ID
879       AND DEL_CT_ACCT_ROLE.ROLE_TYPE = 'CONTACT'
880       AND DEL_CT_REL.RELATIONSHIP_ID = DEL_CT_ORG_CONT.PARTY_RELATIONSHIP_ID
881       AND DEL_CT_REL.SUBJECT_ID = DEL_CT_PARTY.PARTY_ID
882       AND DEL_CT_REL.PARTY_ID = DEL_CT_REL_PARTY.PARTY_ID
883       AND DEL_CT_REL.SUBJECT_TABLE_NAME = 'HZ_PARTIES'
884       AND DEL_CT_REL.OBJECT_TABLE_NAME = 'HZ_PARTIES'
885       AND DEL_CT_ACCT_ROLE.CUST_ACCOUNT_ID = DEL_CT_ROLE_ACCT.CUST_ACCOUNT_ID
886       AND DEL_CT_ROLE_ACCT.PARTY_ID = DEL_CT_REL.OBJECT_ID;
887     RETURN (L_DEL_CONTACT);
888   EXCEPTION
889     WHEN OTHERS THEN
890       RETURN NULL;
891   END C_DEL_CONTACTFORMULA;
892 
893   FUNCTION RP_DUMMY_ITEM_P RETURN VARCHAR2 IS
894   BEGIN
895     RETURN RP_DUMMY_ITEM;
896   END RP_DUMMY_ITEM_P;
897 
898   FUNCTION RP_REPORT_NAME_P RETURN VARCHAR2 IS
899   BEGIN
900     RETURN RP_REPORT_NAME;
901   END RP_REPORT_NAME_P;
902 
903   FUNCTION RP_SUB_TITLE_P RETURN VARCHAR2 IS
904   BEGIN
905     RETURN RP_SUB_TITLE;
906   END RP_SUB_TITLE_P;
907 
908   FUNCTION RP_COMPANY_NAME_P RETURN VARCHAR2 IS
909   BEGIN
910     RETURN RP_COMPANY_NAME;
911   END RP_COMPANY_NAME_P;
912 
913   FUNCTION RP_FUNCTIONAL_CURRENCY_P RETURN VARCHAR2 IS
914   BEGIN
915     RETURN RP_FUNCTIONAL_CURRENCY;
916   END RP_FUNCTIONAL_CURRENCY_P;
917 
918   FUNCTION RP_DATA_FOUND_P RETURN VARCHAR2 IS
919   BEGIN
920     RETURN RP_DATA_FOUND;
921   END RP_DATA_FOUND_P;
922 
923   FUNCTION RP_ITEM_FLEX_ALL_SEG_P RETURN VARCHAR2 IS
924   BEGIN
925     RETURN RP_ITEM_FLEX_ALL_SEG;
926   END RP_ITEM_FLEX_ALL_SEG_P;
927 
928   FUNCTION RP_PRINT_DESCRIPTION_P RETURN VARCHAR2 IS
929   BEGIN
930     RETURN RP_PRINT_DESCRIPTION;
931   END RP_PRINT_DESCRIPTION_P;
932 
933   FUNCTION RP_CURR_PROFILE_P RETURN VARCHAR2 IS
934   BEGIN
935     RETURN RP_CURR_PROFILE;
936   END RP_CURR_PROFILE_P;
937 
938   FUNCTION RP_ITEM_FLEX_SEG_VAL_P RETURN VARCHAR2 IS
939   BEGIN
940     RETURN RP_ITEM_FLEX_SEG_VAL;
941   END RP_ITEM_FLEX_SEG_VAL_P;
942 
943   FUNCTION RP_TAX_TOTAL_ROUNDED_P RETURN NUMBER IS
944   BEGIN
945     RETURN RP_TAX_TOTAL_ROUNDED;
946   END RP_TAX_TOTAL_ROUNDED_P;
947 
948   FUNCTION RP_LINE_CHARGE_TOTAL_ROUNDED_P RETURN NUMBER IS
949   BEGIN
950     RETURN RP_LINE_CHARGE_TOTAL_ROUNDED;
951   END RP_LINE_CHARGE_TOTAL_ROUNDED_P;
952 
953   FUNCTION RP_HDR_CHARGE_TOTAL_ROUNDED_P RETURN NUMBER IS
954   BEGIN
955     RETURN RP_HDR_CHARGE_TOTAL_ROUNDED;
956   END RP_HDR_CHARGE_TOTAL_ROUNDED_P;
957 
958   FUNCTION RP_HDR_CHARGE_TOTAL_P RETURN NUMBER IS
959   BEGIN
960     RETURN RP_HDR_CHARGE_TOTAL;
961   END RP_HDR_CHARGE_TOTAL_P;
962 
963   FUNCTION IS_FIXED_RATE(X_FROM_CURRENCY IN VARCHAR2
964                         ,X_TO_CURRENCY IN VARCHAR2
965                         ,X_EFFECTIVE_DATE IN DATE) RETURN VARCHAR2 IS
966     X0 VARCHAR2(2000);
967   BEGIN
968     /*STPROC.INIT('begin :X0 := GL_CURRENCY_API.IS_FIXED_RATE(:X_FROM_CURRENCY, :X_TO_CURRENCY, :X_EFFECTIVE_DATE); end;');
969     STPROC.BIND_O(X0);
970     STPROC.BIND_I(X_FROM_CURRENCY);
971     STPROC.BIND_I(X_TO_CURRENCY);
972     STPROC.BIND_I(X_EFFECTIVE_DATE);
973     STPROC.EXECUTE;
974     STPROC.RETRIEVE(1
975                    ,X0);*/
976     X0 := GL_CURRENCY_API.IS_FIXED_RATE(X_FROM_CURRENCY, X_TO_CURRENCY, X_EFFECTIVE_DATE);
977     RETURN X0;
978   END IS_FIXED_RATE;
979 
980   PROCEDURE GET_RELATION(X_FROM_CURRENCY IN VARCHAR2
981                         ,X_TO_CURRENCY IN VARCHAR2
982                         ,X_EFFECTIVE_DATE IN DATE
983                         ,X_FIXED_RATE IN OUT NOCOPY BOOLEAN
984                         ,X_RELATIONSHIP IN OUT NOCOPY VARCHAR2) IS
985   BEGIN
986   /*  STPROC.INIT('declare X_FIXED_RATE BOOLEAN;
987   begin X_FIXED_RATE := sys.diutil.int_to_bool(:X_FIXED_RATE);
988   GL_CURRENCY_API.GET_RELATION(:X_FROM_CURRENCY, :X_TO_CURRENCY,
989   :X_EFFECTIVE_DATE, X_FIXED_RATE, :X_RELATIONSHIP);
990   :X_FIXED_RATE := sys.diutil.bool_to_int(X_FIXED_RATE); end;');
991     STPROC.BIND_IO(X_FIXED_RATE);
992     STPROC.BIND_I(X_FROM_CURRENCY);
993     STPROC.BIND_I(X_TO_CURRENCY);
994     STPROC.BIND_I(X_EFFECTIVE_DATE);
995     STPROC.BIND_IO(X_RELATIONSHIP);
996     STPROC.EXECUTE;
997     STPROC.RETRIEVE(1
998                    ,X_FIXED_RATE);
999     STPROC.RETRIEVE(5
1000                    ,X_RELATIONSHIP);*/
1001 --X_FIXED_RATE := sys.diutil.int_to_bool(X_FIXED_RATE);
1002 GL_CURRENCY_API.GET_RELATION(X_FROM_CURRENCY, X_TO_CURRENCY, X_EFFECTIVE_DATE, X_FIXED_RATE, X_RELATIONSHIP);
1003 --X_FIXED_RATE := sys.diutil.bool_to_int(X_FIXED_RATE);
1004   END GET_RELATION;
1005 
1006   FUNCTION GET_EURO_CODE RETURN VARCHAR2 IS
1007     X0 VARCHAR2(2000);
1008   BEGIN
1009     /*STPROC.INIT('begin :X0 := GL_CURRENCY_API.GET_EURO_CODE; end;');
1010     STPROC.BIND_O(X0);
1011     STPROC.EXECUTE;
1012     STPROC.RETRIEVE(1
1013                    ,X0);*/
1014     X0 := GL_CURRENCY_API.GET_EURO_CODE;
1015     RETURN X0;
1016   END GET_EURO_CODE;
1017 
1018   FUNCTION GET_RATE(X_FROM_CURRENCY IN VARCHAR2
1019                    ,X_TO_CURRENCY IN VARCHAR2
1020                    ,X_CONVERSION_DATE IN DATE
1021                    ,X_CONVERSION_TYPE IN VARCHAR2) RETURN NUMBER IS
1022     X0 NUMBER;
1023   BEGIN
1024     /*STPROC.INIT('begin :X0 := GL_CURRENCY_API.GET_RATE(:X_FROM_CURRENCY, :X_TO_CURRENCY, :X_CONVERSION_DATE, :X_CONVERSION_TYPE); end;');
1025     STPROC.BIND_O(X0);
1026     STPROC.BIND_I(X_FROM_CURRENCY);
1027     STPROC.BIND_I(X_TO_CURRENCY);
1028     STPROC.BIND_I(X_CONVERSION_DATE);
1029     STPROC.BIND_I(X_CONVERSION_TYPE);
1030     STPROC.EXECUTE;
1031     STPROC.RETRIEVE(1
1032                    ,X0);*/
1033     X0 := GL_CURRENCY_API.GET_RATE(X_FROM_CURRENCY, X_TO_CURRENCY, X_CONVERSION_DATE, X_CONVERSION_TYPE);
1034     RETURN X0;
1035   END GET_RATE;
1036 
1037   FUNCTION GET_RATE(X_SET_OF_BOOKS_ID IN NUMBER
1038                    ,X_FROM_CURRENCY IN VARCHAR2
1039                    ,X_CONVERSION_DATE IN DATE
1040                    ,X_CONVERSION_TYPE IN VARCHAR2) RETURN NUMBER IS
1041     X0 NUMBER;
1042   BEGIN
1043     /*STPROC.INIT('begin :X0 := GL_CURRENCY_API.GET_RATE(:X_SET_OF_BOOKS_ID, :X_FROM_CURRENCY, :X_CONVERSION_DATE, :X_CONVERSION_TYPE); end;');
1044     STPROC.BIND_O(X0);
1045     STPROC.BIND_I(X_SET_OF_BOOKS_ID);
1046     STPROC.BIND_I(X_FROM_CURRENCY);
1047     STPROC.BIND_I(X_CONVERSION_DATE);
1048     STPROC.BIND_I(X_CONVERSION_TYPE);
1049     STPROC.EXECUTE;
1050     STPROC.RETRIEVE(1
1051                    ,X0);*/
1052     X0 := GL_CURRENCY_API.GET_RATE(X_SET_OF_BOOKS_ID, X_FROM_CURRENCY, X_CONVERSION_DATE, X_CONVERSION_TYPE);
1053     RETURN X0;
1054   END GET_RATE;
1055 
1056   FUNCTION CONVERT_AMOUNT(X_FROM_CURRENCY IN VARCHAR2
1057                          ,X_TO_CURRENCY IN VARCHAR2
1058                          ,X_CONVERSION_DATE IN DATE
1059                          ,X_CONVERSION_TYPE IN VARCHAR2
1060                          ,X_AMOUNT IN NUMBER) RETURN NUMBER IS
1061     X0 NUMBER;
1062   BEGIN
1063     /*STPROC.INIT('begin :X0 := GL_CURRENCY_API.CONVERT_AMOUNT(:X_FROM_CURRENCY, :X_TO_CURRENCY, :X_CONVERSION_DATE, :X_CONVERSION_TYPE, :X_AMOUNT); end;');
1064     STPROC.BIND_O(X0);
1065     STPROC.BIND_I(X_FROM_CURRENCY);
1066     STPROC.BIND_I(X_TO_CURRENCY);
1067     STPROC.BIND_I(X_CONVERSION_DATE);
1068     STPROC.BIND_I(X_CONVERSION_TYPE);
1069     STPROC.BIND_I(X_AMOUNT);
1070     STPROC.EXECUTE;
1071     STPROC.RETRIEVE(1
1072                    ,X0);*/
1073     X0 := GL_CURRENCY_API.CONVERT_AMOUNT(X_FROM_CURRENCY, X_TO_CURRENCY, X_CONVERSION_DATE, X_CONVERSION_TYPE, X_AMOUNT);
1074     RETURN X0;
1075   END CONVERT_AMOUNT;
1076 
1077   FUNCTION CONVERT_AMOUNT(X_SET_OF_BOOKS_ID IN NUMBER
1078                          ,X_FROM_CURRENCY IN VARCHAR2
1079                          ,X_CONVERSION_DATE IN DATE
1080                          ,X_CONVERSION_TYPE IN VARCHAR2
1081                          ,X_AMOUNT IN NUMBER) RETURN NUMBER IS
1082     X0 NUMBER;
1083   BEGIN
1084     /*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;');
1085     STPROC.BIND_O(X0);
1086     STPROC.BIND_I(X_SET_OF_BOOKS_ID);
1087     STPROC.BIND_I(X_FROM_CURRENCY);
1088     STPROC.BIND_I(X_CONVERSION_DATE);
1089     STPROC.BIND_I(X_CONVERSION_TYPE);
1090     STPROC.BIND_I(X_AMOUNT);
1091     STPROC.EXECUTE;
1092     STPROC.RETRIEVE(1
1093                    ,X0);*/
1094     X0 := GL_CURRENCY_API.CONVERT_AMOUNT(X_SET_OF_BOOKS_ID, X_FROM_CURRENCY, X_CONVERSION_DATE, X_CONVERSION_TYPE, X_AMOUNT);
1095     RETURN X0;
1096   END CONVERT_AMOUNT;
1097 
1098   FUNCTION GET_DERIVE_TYPE(SOB_ID IN NUMBER
1099                           ,PERIOD IN VARCHAR2
1100                           ,CURR_CODE IN VARCHAR2) RETURN VARCHAR2 IS
1101     X0 VARCHAR2(2000);
1102   BEGIN
1103     /*STPROC.INIT('begin :X0 := GL_CURRENCY_API.GET_DERIVE_TYPE(:SOB_ID, :PERIOD, :CURR_CODE); end;');
1104     STPROC.BIND_O(X0);
1105     STPROC.BIND_I(SOB_ID);
1106     STPROC.BIND_I(PERIOD);
1107     STPROC.BIND_I(CURR_CODE);
1108     STPROC.EXECUTE;
1109     STPROC.RETRIEVE(1
1110                    ,X0);*/
1111     X0 := GL_CURRENCY_API.GET_DERIVE_TYPE(SOB_ID, PERIOD, CURR_CODE);
1112     RETURN X0;
1113   END GET_DERIVE_TYPE;
1114 
1115   FUNCTION RATE_EXISTS(X_FROM_CURRENCY IN VARCHAR2
1116                       ,X_TO_CURRENCY IN VARCHAR2
1117                       ,X_CONVERSION_DATE IN DATE
1118                       ,X_CONVERSION_TYPE IN VARCHAR2) RETURN VARCHAR2 IS
1119     X0 VARCHAR2(2000);
1120   BEGIN
1121     /*STPROC.INIT('begin :X0 := GL_CURRENCY_API.RATE_EXISTS(:X_FROM_CURRENCY, :X_TO_CURRENCY, :X_CONVERSION_DATE, :X_CONVERSION_TYPE); end;');
1122     STPROC.BIND_O(X0);
1123     STPROC.BIND_I(X_FROM_CURRENCY);
1124     STPROC.BIND_I(X_TO_CURRENCY);
1125     STPROC.BIND_I(X_CONVERSION_DATE);
1126     STPROC.BIND_I(X_CONVERSION_TYPE);
1127     STPROC.EXECUTE;
1128     STPROC.RETRIEVE(1
1129                    ,X0);*/
1130     X0 := GL_CURRENCY_API.RATE_EXISTS(X_FROM_CURRENCY, X_TO_CURRENCY, X_CONVERSION_DATE, X_CONVERSION_TYPE);
1131     RETURN X0;
1132   END RATE_EXISTS;
1133 
1134 FUNCTION BEFOREREPORT RETURN BOOLEAN IS
1135 BEGIN
1136 
1137 	DECLARE
1138 	BEGIN
1139 
1140 	/*  BEGIN
1141 	  SRW.USER_EXIT('FND SRWINIT');
1142 	  EXCEPTION
1143 		 WHEN SRW.USER_EXIT_FAILURE THEN
1144 		SRW.MESSAGE (1000,'Failed in BEFORE REPORT trigger - SRWINIT USER EXIT');
1145 		 return (FALSE);
1146 	  END;*/
1147 
1148 	BEGIN  /*MOAC*/
1149 
1150 	P_ORG_ID:= MO_GLOBAL.GET_CURRENT_ORG_ID();
1151 	END;
1152 
1153 
1154 
1155 /*------------------------------------------------------------------------------
1156 Following PL/SQL block gets the company name, functional currency and precision.
1157 ------------------------------------------------------------------------------*/
1158 
1159 
1160 	  DECLARE
1161 	  l_company_name            VARCHAR2 (100);
1162 	  l_functional_currency     VARCHAR2  (15);
1163 
1164 	  BEGIN
1165 
1166 	    SELECT sob.name                   ,
1167 		   sob.currency_code
1168 	    INTO
1169 		   l_company_name ,
1170 		   l_functional_currency
1171 	    FROM    gl_sets_of_books sob,
1172 		    fnd_currencies cur
1173 	    WHERE  sob.set_of_books_id = p_sob_id
1174 	    AND    sob.currency_code = cur.currency_code
1175 	    ;
1176 
1177 	    rp_company_name            := l_company_name;
1178 	    rp_functional_currency     := l_functional_currency ;
1179 
1180 
1181 	  EXCEPTION
1182 	    WHEN NO_DATA_FOUND THEN
1183 	     /*srw.message(2000,'Failed in BEFORE REPORT trigger. get company, currency');*/null;
1184 	    when OTHERS then
1185 	    /*srw.message(2000,'Failed in BEFORE REPORT trigger. get company, currency'); */null;
1186 	  END ;
1187 
1188 /*------------------------------------------------------------------------------
1189 Following PL/SQL block gets the report name for the passed concurrent request Id.
1190 ------------------------------------------------------------------------------*/
1191 	  DECLARE
1192 	      l_report_name  VARCHAR2(240);
1193 	  BEGIN
1194 	      SELECT cp.user_concurrent_program_name
1195 	      INTO   l_report_name
1196 	      FROM   FND_CONCURRENT_PROGRAMS_VL cp,
1197 		     FND_CONCURRENT_REQUESTS cr
1198 	      WHERE  cr.request_id     = P_CONC_REQUEST_ID
1199 	      AND    cp.application_id = cr.program_application_id
1200 	      AND    cp.concurrent_program_id = cr.concurrent_program_id
1201 	      ;
1202 
1203 	      RP_Report_Name := l_report_name;
1204 	  EXCEPTION
1205 	      WHEN NO_DATA_FOUND
1206 	      THEN RP_REPORT_NAME := 'Sales Order Acknowledgement';
1207 	      when OTHERS then
1208 	      /*srw.message(2000,'Failed in BEFORE REPORT trigger. get company, currency'); */null;
1209 	  END;
1210 
1211 /*------------------------------------------------------------------------------
1212 The following block retrieves the profile option value for standard vs
1213 extended currency
1214 -------------------------------------------------------------------------------*/
1215 
1216 	/*  BEGIN
1217 	    SRW.REFERENCE(:p_profile_name);
1218 	    SRW.USER_EXIT('FND GETPROFILE NAME=":p_profile_name"
1219 					  FIELD=":RP_CURR_PROFILE"
1220 					  PRINT_ERROR="N"
1221 					  ');
1222 
1223 
1224 	  EXCEPTION
1225 	    WHEN SRW.USER_EXIT_FAILURE THEN
1226 	    srw.message(2000,'Failed in BEFORE REPORT trigger. FND GETPROFILE - CURR USER_EXIT');
1227 	  END; */
1228 
1229 
1230 
1231 /*------------------------------------------------------------------------------
1232 Following PL/SQL block builds up the lexical parameters, to be used in the
1233 WHERE clause of the query. This also populates the report level variables, used
1234 to store the flexfield structure.
1235 ------------------------------------------------------------------------------*/
1236 	  /*BEGIN
1237 	    SRW.REFERENCE(:P_item_flex_code);
1238 	    SRW.REFERENCE(:P_item_structure_num);
1239 
1240 
1241 	    SRW.USER_EXIT('FND FLEXSQL CODE=":p_item_flex_code"
1242 				   NUM=":p_item_structure_num"
1243 				   APPL_SHORT_NAME="INV"
1244 				   OUTPUT=":rp_item_flex_all_seg"
1245 				   MODE="SELECT"
1246 				   DISPLAY="ALL"
1247 				   TABLEALIAS="SI"
1248 				    ');
1249 
1250 	  EXCEPTION
1251 	    WHEN SRW.USER_EXIT_FAILURE THEN
1252 	   srw.message(2000,'Failed in BEFORE REPORT trigger. FND FLEXSQL USER_EXIT');
1253 	  END; */
1254 
1255 
1256 
1257 	DECLARE
1258 	    l_meaning       VARCHAR2 (80);
1259 	  BEGIN
1260 	    SELECT MEANING
1261 	    INTO   l_meaning
1262 	    FROM OE_LOOKUPS
1263 	    WHERE LOOKUP_TYPE = 'ITEM_DISPLAY_CODE'
1264 	    AND LOOKUP_CODE  = substr(upper(p_print_description),1,1)
1265 	    ;
1266 
1267 	    rp_print_description := l_meaning ;
1268 	  EXCEPTION WHEN NO_DATA_FOUND THEN
1269 	    rp_print_description := 'Internal Item Description';
1270 	  when OTHERS then
1271 	  /*srw.message(2000,'Failed in BEFORE REPORT trigger. Get Print Description'); */null;
1272 
1273 	  END ;
1274 
1275 
1276 
1277 	/* ----- The follwoing PL/SQL block populates the multi-lingual
1278 	lexical parameters----- */
1279 	  BEGIN
1280 	    populate_mls_lexicals;
1281 	  END;
1282 
1283 	END ;
1284   RETURN (TRUE);
1285 END;
1286 
1287 function F_PeriodicityFormatTrigger return VARCHAR2 is
1288 begin
1289   if OE_SYS_PARAMETERS.Value('RECURRING_CHARGES',mo_global.get_current_org_id()) = 'Y' THEN
1290     return('TRUE');
1291   else
1292     return ('FALSE');
1293   end if;
1294   return ('FALSE');
1295 end;
1296 
1297 END ONT_OEXOEACK_XMLP_PKG;
1298 
1299