DBA Data[Home] [Help]

PACKAGE BODY: APPS.XTR_XTRDDHTY_XMLP_PKG

Source


1 PACKAGE BODY XTR_XTRDDHTY_XMLP_PKG AS
2 /* $Header: XTRDDHTYB.pls 120.1 2007/12/28 12:46:58 npannamp noship $ */
3   FUNCTION HITEM_AMTFORMULA(HEDGE_NO IN NUMBER
4                            ,HEDGE_APPROACH IN VARCHAR2
5                            ,HEDGE_AMOUNT IN NUMBER) RETURN NUMBER IS
6     SOURCE_CURSOR INTEGER;
7     DESTINATION_CURSOR INTEGER;
8     IGNORE INTEGER;
9     NATIVE CONSTANT INTEGER DEFAULT 1;
10     V_AMOUNT NUMBER;
11     V_QUERY VARCHAR2(1000);
12     L_TOTAL NUMBER;
13     CURSOR XTR_AMT IS
14       SELECT
15         SUM(REFERENCE_AMOUNT)
16       FROM
17         XTR_HEDGE_RELATIONSHIPS HR
18       WHERE HR.INSTRUMENT_ITEM_FLAG = 'I'
19         AND HR.HEDGE_ATTRIBUTE_ID = HEDGE_NO;
20     CURSOR RECLASS IS
21       SELECT
22         SUM(RECLASS_HEDGE_AMT)
23       FROM
24         XTR_RECLASS_DETAILS
25       WHERE HEDGE_ATTRIBUTE_ID = HEDGE_NO
26         AND RECLASS_DATE <= P_DATE
27         AND RECLASS_GAIN_LOSS_AMT is not null;
28     L_RECLASS_AMT NUMBER;
29     L_ORIG_HDG_AMT NUMBER;
30   BEGIN
31     OPEN RECLASS;
32     FETCH RECLASS
33      INTO L_RECLASS_AMT;
34     CLOSE RECLASS;
35     IF HEDGE_APPROACH = 'FORECAST' THEN
36       L_ORIG_HDG_AMT := NVL(HEDGE_AMOUNT
37                            ,0);
38     ELSIF NVL(HEDGE_APPROACH , ' @#@ ') <> 'FORECAST' THEN
39       OPEN XTR_AMT;
40       FETCH XTR_AMT
41        INTO L_ORIG_HDG_AMT;
42       CLOSE XTR_AMT;
43     END IF;
44     IF NVL(L_ORIG_HDG_AMT
45        ,0) <> 0 THEN
46       L_TOTAL := (ABS(L_ORIG_HDG_AMT) - NVL(L_RECLASS_AMT
47                     ,0)) * SIGN(L_ORIG_HDG_AMT);
48     ELSE
49       L_TOTAL := (-NVL(L_RECLASS_AMT
50                     ,0));
51     END IF;
52     RETURN (L_TOTAL / NVL(P_UNIT
53               ,1));
54   EXCEPTION
55     WHEN OTHERS THEN
56       /*SRW.MESSAGE(100
57                  ,SQLERRM)*/NULL;
58       RETURN (NULL);
59   END HITEM_AMTFORMULA;
60 
61   FUNCTION HINST_AMTFORMULA(CHINST_AMT IN NUMBER) RETURN NUMBER IS
62     CURSOR ITEM(P_HEDGE_NO IN NUMBER) IS
63       SELECT
64         SUM(REFERENCE_AMOUNT)
65       FROM
66         XTR_HEDGE_RELATIONSHIPS
67       WHERE HEDGE_ATTRIBUTE_ID = P_HEDGE_NO
68         AND INSTRUMENT_ITEM_FLAG = 'U';
69     L_AMOUNT NUMBER;
70   BEGIN
71     L_AMOUNT := CHINST_AMT;
72     RETURN (L_AMOUNT / NVL(P_UNIT
73               ,1));
74   EXCEPTION
75     WHEN OTHERS THEN
76       /*SRW.MESSAGE(100
77                  ,SQLERRM)*/NULL;
78       RETURN (NULL);
79   END HINST_AMTFORMULA;
80 
81   FUNCTION HITEM_RCCYFORMULA(COMPANY_CODE IN VARCHAR2
82                             ,HEDGE_CURRENCY IN VARCHAR2
83                             ,HITEM_AMT IN NUMBER) RETURN NUMBER IS
84   BEGIN
85     RETURN (ABS(GET_EQU_AMT(COMPANY_CODE
86                           ,HEDGE_CURRENCY
87                           ,HITEM_AMT)));
88   END HITEM_RCCYFORMULA;
89 
90   FUNCTION HINST_RCCYFORMULA(COMPANY_CODE IN VARCHAR2
91                             ,HEDGE_CURRENCY IN VARCHAR2
92                             ,HINST_AMT IN NUMBER) RETURN NUMBER IS
93   BEGIN
94     RETURN (ABS(GET_EQU_AMT(COMPANY_CODE
95                           ,HEDGE_CURRENCY
96                           ,HINST_AMT)));
97   END HINST_RCCYFORMULA;
98 
99   FUNCTION AFTERPFORM RETURN BOOLEAN IS
100     CURSOR COMPANY(P_COMPANY IN VARCHAR2) IS
101       SELECT
102         SHORT_NAME
103       FROM
104         XTR_PARTIES_V
105       WHERE PARTY_CODE = P_COMPANY;
106     CURSOR STRATEGY(P_STRATEGY IN VARCHAR2) IS
107       SELECT
108         STRATEGY_NAME
109       FROM
110         XTR_HEDGE_STRATEGIES
111       WHERE STRATEGY_CODE = P_STRATEGY;
112     CURSOR CUR_MEAN(P_TYPE IN VARCHAR2,P_CODE IN VARCHAR2) IS
113       SELECT
114         MEANING
115       FROM
116         FND_LOOKUPS
117       WHERE LOOKUP_TYPE = P_TYPE
118         AND LOOKUP_CODE = P_CODE;
119     L_LOOKUP_TYPE VARCHAR2(30);
120   BEGIN
121    P_CONC_REQUEST_ID := FND_GLOBAL.CONC_REQUEST_ID;
122 P_AS_OF_DATE_1 := P_AS_OF_DATE;
123     P_DATE := FND_DATE.CANONICAL_TO_DATE(P_AS_OF_DATE_1);
124     P_AS_OF_DATE_1 := P_DATE;
125     IF P_FACTOR = '0' THEN
126       P_UNIT := 1;
127     ELSE
128       P_UNIT := TO_NUMBER(P_FACTOR);
129     END IF;
130     IF REPORT_NAME IS NULL THEN
131       SELECT
132         CP.USER_CONCURRENT_PROGRAM_NAME
133       INTO REPORT_NAME
134       FROM
135         FND_CONCURRENT_PROGRAMS_VL CP,
136         FND_CONCURRENT_REQUESTS CR
137       WHERE CR.REQUEST_ID = P_CONC_REQUEST_ID
138         AND CP.APPLICATION_ID = CR.PROGRAM_APPLICATION_ID
139         AND CP.CONCURRENT_PROGRAM_ID = CR.CONCURRENT_PROGRAM_ID;
140  REPORT_NAME := substr(REPORT_NAME,1,instr(REPORT_NAME,' (XML)'));
141     END IF;
142     IF P_COMPANY IS NOT NULL THEN
143       OPEN COMPANY(P_COMPANY);
144       FETCH COMPANY
145        INTO RP_COMPANY_NAME;
146       CLOSE COMPANY;
147     END IF;
148     IF P_RISK_TYPE IS NOT NULL THEN
149       OPEN CUR_MEAN('XTR_HEDGE_RISK_TYPES',P_RISK_TYPE);
150       FETCH CUR_MEAN
151        INTO RP_RISK_TYPE;
152       CLOSE CUR_MEAN;
153     END IF;
154     IF P_HEDGE_TYPE IS NOT NULL THEN
155       OPEN CUR_MEAN('XTR_HEDGE_TYPES',P_HEDGE_TYPE);
156       FETCH CUR_MEAN
157        INTO RP_HEDGE_TYPE;
158       CLOSE CUR_MEAN;
159     END IF;
160     IF P_OBJECTIVE IS NOT NULL THEN
161       OPEN CUR_MEAN('XTR_HEDGE_OBJECTIVE_TYPES',P_OBJECTIVE);
162       FETCH CUR_MEAN
163        INTO RP_OBJECTIVE;
164       CLOSE CUR_MEAN;
165     END IF;
166     IF P_STRATEGY IS NOT NULL THEN
167       OPEN STRATEGY(P_STRATEGY);
168       FETCH STRATEGY
169        INTO RP_STRATEGY_NAME;
170       CLOSE STRATEGY;
171     END IF;
172     IF P_HEDGE_STATUS IS NOT NULL THEN
173       IF P_HEDGE_STATUS = 'ALLXCANC' THEN
174         L_LOOKUP_TYPE := 'XTR_HEDGE_MISC';
175       ELSE
176         L_LOOKUP_TYPE := 'XTR_HEDGE_STATUS';
177       END IF;
178       OPEN CUR_MEAN(L_LOOKUP_TYPE,P_HEDGE_STATUS);
179       FETCH CUR_MEAN
180        INTO RP_HEDGE_STATUS;
181       CLOSE CUR_MEAN;
182     END IF;
183     IF P_FACTOR IS NOT NULL THEN
184       OPEN CUR_MEAN('XTR_NUM_FACTOR',P_FACTOR);
185       FETCH CUR_MEAN
186        INTO RP_FACTOR;
187       CLOSE CUR_MEAN;
188     END IF;
189     RETURN (TRUE);
190   EXCEPTION
191     WHEN OTHERS THEN
192       /*SRW.MESSAGE(100
193                  ,SQLERRM)*/NULL;
194   END AFTERPFORM;
195 
196   FUNCTION GET_EQU_AMT(X_COMPANY_CODE IN VARCHAR2
197                       ,X_BASE_CCY IN VARCHAR2
198                       ,X_BASE_AMT IN NUMBER) RETURN NUMBER IS
199     CURSOR COMPANY_INFO IS
200       SELECT
201         CP.PARAMETER_VALUE_CODE,
202         DCT.USER_CONVERSION_TYPE,
203         CURRENCY_CODE
207         GL_SETS_OF_BOOKS SOB,
204       FROM
205         XTR_PARTIES_V PTY,
206         XTR_COMPANY_PARAMETERS CP,
208         GL_DAILY_CONVERSION_TYPES DCT
209       WHERE PTY.PARTY_CODE = X_COMPANY_CODE
210         AND CP.COMPANY_CODE = PTY.PARTY_CODE
211         AND CP.PARAMETER_CODE = 'ACCNT_EXRTP'
212         AND PTY.SET_OF_BOOKS_ID = SOB.SET_OF_BOOKS_ID
213         AND CP.PARAMETER_VALUE_CODE = dct.conversion_type (+);
214     CURSOR C_DATE(P_SOB_CCY IN VARCHAR2,L_CON_TYPE IN VARCHAR2) IS
215       SELECT
216         MAX(CONVERSION_DATE)
217       FROM
218         GL_DAILY_RATES
219       WHERE FROM_CURRENCY = X_BASE_CCY
220         AND TO_CURRENCY = P_SOB_CCY
221         AND CONVERSION_TYPE = L_CON_TYPE
222         AND CONVERSION_DATE <= P_AS_OF_DATE_1;
223     SOB_CURRENCY VARCHAR2(15);
224     L_PTY_CONVERT_TYPE VARCHAR2(30);
225     L_PTY_USER_CONVERT_TYPE VARCHAR2(30);
226     L_EQU_AMOUNT NUMBER;
227     L_DATE DATE;
228     L_CURRENCY VARCHAR2(15);
229   BEGIN
230     OPEN COMPANY_INFO;
231     FETCH COMPANY_INFO
232      INTO L_PTY_CONVERT_TYPE,L_PTY_USER_CONVERT_TYPE,SOB_CURRENCY;
233     CLOSE COMPANY_INFO;
234     L_CURRENCY := NVL(P_REPORT_CCY
235                      ,SOB_CURRENCY);
236     OPEN C_DATE(L_CURRENCY,L_PTY_CONVERT_TYPE);
237     FETCH C_DATE
238      INTO L_DATE;
239     CLOSE C_DATE;
240     L_EQU_AMOUNT := GL_CURRENCY_API.CONVERT_AMOUNT(X_BASE_CCY
241                                                   ,L_CURRENCY
242                                                   ,L_DATE
243                                                   ,L_PTY_CONVERT_TYPE
244                                                   ,X_BASE_AMT);
245     RETURN (L_EQU_AMOUNT);
246   EXCEPTION
247     WHEN OTHERS THEN
248       IF CP_NO_GL_RATE IS NULL THEN
249         FND_MESSAGE.SET_NAME('XTR'
250                             ,'XTR_HEDGE_NO_GL_RATE_SRW');
251         IF CP_NO_GL_RATE IS NULL THEN
252           CP_NO_GL_RATE := FND_MESSAGE.GET;
253         END IF;
254       END IF;
255       /*SRW.MESSAGE(100
256                  ,'Error Calculating the Report Currency Equivalent Amount')*/NULL;
257       RETURN (NULL);
258   END GET_EQU_AMT;
259 
260   FUNCTION BEFOREREPORT RETURN BOOLEAN IS
261     CURSOR GET_LANGUAGE_DESC IS
262       SELECT
263         ITEM_NAME,
264         TEXT LANG_NAME
265       FROM
266         XTR_SYS_LANGUAGES_VL
267       WHERE MODULE_NAME = 'XTRDDHTY';
268   BEGIN
269 
270     /*SRW.USER_EXIT('FND SRWINIT')*/NULL;
271     FOR c IN GET_LANGUAGE_DESC LOOP
272       IF C.ITEM_NAME = 'Z1AMOUNT' THEN
273         Z1AMOUNT := C.LANG_NAME;
274       ELSIF C.ITEM_NAME = 'Z1CUR_HEDGE' THEN
275         Z1CUR_HEDGE := C.LANG_NAME;
276       ELSIF C.ITEM_NAME = 'Z1ITEM_AMOUNT' THEN
277         Z1ITEM_AMOUNT := C.LANG_NAME;
278       ELSIF C.ITEM_NAME = 'Z1INST_AMOUNT' THEN
279         Z1INST_AMOUNT := C.LANG_NAME;
280       ELSIF C.ITEM_NAME = 'Z1AS_OF_DATE' THEN
281         Z1AS_OF_DATE := C.LANG_NAME;
282       ELSIF C.ITEM_NAME = 'Z1CCY' THEN
283         Z1CCY := C.LANG_NAME;
284       ELSIF C.ITEM_NAME = 'Z1COMPANY' THEN
285         Z1COMPANY := C.LANG_NAME;
286       ELSIF C.ITEM_NAME = 'Z1DER_DISCL' THEN
287         Z1DER_DISCL := C.LANG_NAME;
288       ELSIF C.ITEM_NAME = 'Z1END_DATE' THEN
289         Z1END_DATE := C.LANG_NAME;
290       ELSIF C.ITEM_NAME = 'Z1EQUI' THEN
291         Z1EQUI := C.LANG_NAME;
292       ELSIF C.ITEM_NAME = 'Z1FACTOR' THEN
293         Z1FACTOR := C.LANG_NAME;
294       ELSIF C.ITEM_NAME = 'Z1GT_SYSDATE' THEN
295         IF P_AS_OF_DATE_1 > SYSDATE THEN
296           Z1GT_SYSDATE := C.LANG_NAME;
297         ELSE
298           Z1GT_SYSDATE := NULL;
299         END IF;
300       ELSIF C.ITEM_NAME = 'Z1HEDGE' THEN
301         Z1HEDGE := C.LANG_NAME;
302       ELSIF C.ITEM_NAME = 'Z1HEDGE_INST' THEN
303         Z1HEDGE_INST := C.LANG_NAME;
304       ELSIF C.ITEM_NAME = 'Z1HEDGE_ITEM' THEN
305         Z1HEDGE_ITEM := C.LANG_NAME;
306       ELSIF C.ITEM_NAME = 'Z1HEDGE_TYPE' THEN
307         Z1HEDGE_TYPE := C.LANG_NAME;
308       ELSIF C.ITEM_NAME = 'Z1HSTGY_TOTAL' THEN
309         Z1HSTGY_TOTAL := C.LANG_NAME;
310       ELSIF C.ITEM_NAME = 'Z1HTYPE_TOTAL' THEN
311         Z1HTYPE_TOTAL := C.LANG_NAME;
312       ELSIF C.ITEM_NAME = 'Z1NUMBER' THEN
313         Z1NUMBER := C.LANG_NAME;
314       ELSIF C.ITEM_NAME = 'Z1OBJECTIVE' THEN
315         Z1OBJECTIVE := C.LANG_NAME;
316       ELSIF C.ITEM_NAME = 'Z1OBJECTIVE_DESC' THEN
317         Z1OBJECTIVE_DESC := C.LANG_NAME;
318       ELSIF C.ITEM_NAME = 'Z1PARAMETERS' THEN
319         Z1PARAMETERS := C.LANG_NAME;
320       ELSIF C.ITEM_NAME = 'Z1POLICY_REF' THEN
321         Z1POLICY_REF := C.LANG_NAME;
322       ELSIF C.ITEM_NAME = 'Z1REPORT_CCY' THEN
323         Z1REPORT_CCY := C.LANG_NAME;
324       ELSIF C.ITEM_NAME = 'Z1RISK_TYPE' THEN
325         Z1RISK_TYPE := C.LANG_NAME;
326       ELSIF C.ITEM_NAME = 'Z1START_DATE' THEN
327         Z1START_DATE := C.LANG_NAME;
328       ELSIF C.ITEM_NAME = 'Z1STRATEGY' THEN
329         Z1STRATEGY := C.LANG_NAME;
330       ELSIF C.ITEM_NAME = 'Z1STRATEGY_NAME' THEN
331         Z1STRATEGY_NAME := C.LANG_NAME;
332       ELSIF C.ITEM_NAME = 'Z2END_OF_REPORT' THEN
333         Z2END_OF_REPORT := C.LANG_NAME;
334       ELSIF C.ITEM_NAME = 'Z2HEDGE_STATUS' THEN
335         Z2HEDGE_STATUS := C.LANG_NAME;
336       ELSIF C.ITEM_NAME = 'Z2NO_DATA_FOUND' THEN
337         Z2NO_DATA_FOUND := C.LANG_NAME;
338       ELSIF C.ITEM_NAME = 'Z2PAGE' THEN
339         Z2PAGE := C.LANG_NAME;
340       ELSIF C.ITEM_NAME = 'Z2REPORT_DATE' THEN
341         Z2REPORT_DATE := C.LANG_NAME;
342       ELSIF C.ITEM_NAME = 'Z2STRATEGY' THEN
343         Z2STRATEGY := C.LANG_NAME;
344       END IF;
345     END LOOP;
346     RETURN (TRUE);
347   END BEFOREREPORT;
348 
349   FUNCTION COMPANY_NAMEFORMULA(COMPANY_CODE IN VARCHAR2) RETURN CHAR IS
350     CURSOR COMPANY(P_COMPANY IN VARCHAR2) IS
351       SELECT
352         SHORT_NAME
353       FROM
354         XTR_PARTIES_V
355       WHERE PARTY_CODE = P_COMPANY;
356     L_COMPANY VARCHAR2(20);
357   BEGIN
358     IF COMPANY_CODE IS NOT NULL THEN
359       OPEN COMPANY(COMPANY_CODE);
360       FETCH COMPANY
361        INTO L_COMPANY;
362       CLOSE COMPANY;
363     END IF;
364     RETURN (L_COMPANY);
365   EXCEPTION
366     WHEN OTHERS THEN
367       RETURN (NULL);
368   END COMPANY_NAMEFORMULA;
369 
370   FUNCTION HEDGE_TYPE_DSPFORMULA(HEDGE_TYPE IN VARCHAR2) RETURN CHAR IS
371     CURSOR HTYPE(P_HTYPE IN VARCHAR2) IS
372       SELECT
373         MEANING
374       FROM
375         FND_LOOKUPS
376       WHERE LOOKUP_TYPE = 'XTR_HEDGE_TYPES'
377         AND LOOKUP_CODE = P_HTYPE;
378     L_HEDGE_TYPE VARCHAR2(80);
379   BEGIN
380     IF HEDGE_TYPE IS NOT NULL THEN
381       OPEN HTYPE(HEDGE_TYPE);
382       FETCH HTYPE
383        INTO L_HEDGE_TYPE;
384       CLOSE HTYPE;
385     END IF;
386     RETURN (L_HEDGE_TYPE);
387   EXCEPTION
388     WHEN OTHERS THEN
389       RETURN (NULL);
390   END HEDGE_TYPE_DSPFORMULA;
391 
392   FUNCTION OBJECTIVE_NAMEFORMULA(OBJECTIVE_CODE IN VARCHAR2) RETURN CHAR IS
393     CURSOR OBJ(P_OBJ IN VARCHAR2) IS
394       SELECT
395         MEANING
396       FROM
397         FND_LOOKUPS
398       WHERE LOOKUP_TYPE = 'XTR_HEDGE_OBJECTIVE_TYPES'
399         AND LOOKUP_CODE = P_OBJ;
400     L_OBJNAME VARCHAR2(80);
401   BEGIN
402     IF OBJECTIVE_CODE IS NOT NULL THEN
403       OPEN OBJ(OBJECTIVE_CODE);
404       FETCH OBJ
405        INTO L_OBJNAME;
406       CLOSE OBJ;
407     END IF;
408     RETURN (L_OBJNAME);
409   EXCEPTION
410     WHEN OTHERS THEN
411       RETURN (NULL);
412   END OBJECTIVE_NAMEFORMULA;
413 
414   FUNCTION OBJECTIVE_DESCFORMULA(OBJECTIVE_CODE IN VARCHAR2) RETURN CHAR IS
415     CURSOR OBJ(P_OBJ IN VARCHAR2) IS
416       SELECT
417         DESCRIPTION
418       FROM
419         FND_LOOKUPS
420       WHERE LOOKUP_TYPE = 'XTR_HEDGE_OBJECTIVE_TYPES'
421         AND LOOKUP_CODE = P_OBJ;
422     L_OBJDESC VARCHAR2(240);
423   BEGIN
424     IF OBJECTIVE_CODE IS NOT NULL THEN
425       OPEN OBJ(OBJECTIVE_CODE);
426       FETCH OBJ
427        INTO L_OBJDESC;
428       CLOSE OBJ;
429     END IF;
430     RETURN (L_OBJDESC);
431   EXCEPTION
432     WHEN OTHERS THEN
433       RETURN (NULL);
434   END OBJECTIVE_DESCFORMULA;
435 
436   FUNCTION RISK_TYPE_DSPFORMULA(RISK_TYPE IN VARCHAR2) RETURN CHAR IS
437     CURSOR RISK(P_CODE IN VARCHAR2) IS
438       SELECT
439         MEANING
440       FROM
441         FND_LOOKUPS
442       WHERE LOOKUP_TYPE = 'XTR_HEDGE_RISK_TYPES'
443         AND LOOKUP_CODE = P_CODE;
444     L_RISKNAME VARCHAR2(80);
445   BEGIN
446     IF RISK_TYPE IS NOT NULL THEN
447       OPEN RISK(RISK_TYPE);
448       FETCH RISK
449        INTO L_RISKNAME;
450       CLOSE RISK;
451     END IF;
452     RETURN (L_RISKNAME);
453   EXCEPTION
454     WHEN OTHERS THEN
455       RETURN (NULL);
456   END RISK_TYPE_DSPFORMULA;
457 
458   FUNCTION STARFORMULA(HEDGE_STATUS IN VARCHAR2) RETURN CHAR IS
459   BEGIN
460     IF HEDGE_STATUS <> 'CURRENT' THEN
461       FND_MESSAGE.SET_NAME('XTR'
462                           ,'XTR_HEDGE_NOT_CURRENT_SRW');
463       FND_MESSAGE.SET_TOKEN('STATUS'
464                            ,'Current');
465       IF CP_NOT_CURRENT IS NULL THEN
466         CP_NOT_CURRENT := FND_MESSAGE.GET;
467       END IF;
468       RETURN ('**');
469     ELSE
470       RETURN (NULL);
471     END IF;
472   END STARFORMULA;
473 
474   FUNCTION RPT_CCYFORMULA(COMPANY_CODE IN VARCHAR2) RETURN CHAR IS
475     CURSOR COMPANY_INFO IS
476       SELECT
477         CP.PARAMETER_VALUE_CODE,
478         DCT.USER_CONVERSION_TYPE,
479         CURRENCY_CODE
480       FROM
481         XTR_PARTIES_V PTY,
482         XTR_COMPANY_PARAMETERS CP,
483         GL_SETS_OF_BOOKS SOB,
484         GL_DAILY_CONVERSION_TYPES DCT
485       WHERE PTY.PARTY_CODE = COMPANY_CODE
486         AND CP.COMPANY_CODE = PTY.PARTY_CODE
487         AND CP.PARAMETER_CODE = 'ACCNT_EXRTP'
488         AND PTY.SET_OF_BOOKS_ID = SOB.SET_OF_BOOKS_ID
489         AND CP.PARAMETER_VALUE_CODE = dct.conversion_type (+);
490     SOB_CURRENCY VARCHAR2(15);
491     L_PTY_CONVERT_TYPE VARCHAR2(30);
492     L_PTY_USER_CONVERT_TYPE VARCHAR2(30);
493     L_SOB_AMOUNT NUMBER;
494     L_DATE DATE;
495     L_CURRENCY VARCHAR2(15);
496   BEGIN
497     IF P_REPORT_CCY IS NOT NULL THEN
498       RETURN (P_REPORT_CCY);
499     ELSE
500       OPEN COMPANY_INFO;
501       FETCH COMPANY_INFO
502        INTO L_PTY_CONVERT_TYPE,L_PTY_USER_CONVERT_TYPE,SOB_CURRENCY;
503       CLOSE COMPANY_INFO;
504       RETURN (SOB_CURRENCY);
505     END IF;
506   EXCEPTION
507     WHEN OTHERS THEN
508       RETURN (NULL);
509   END RPT_CCYFORMULA;
510 
511   FUNCTION AFTERREPORT RETURN BOOLEAN IS
512   BEGIN
513     /*SRW.USER_EXIT('FND SRWEXIT')*/NULL;
514     RETURN (TRUE);
515   END AFTERREPORT;
516 
517   FUNCTION CHINST_AMTFORMULA(HEDGE_NO IN NUMBER) RETURN NUMBER IS
518     L_APPROACH VARCHAR2(30);
519     L_ROUND NUMBER;
520     L_GAIN_LOSS_CCY VARCHAR2(15);
521     L_AMOUNT_TYPE VARCHAR2(30);
522     L_HEDGE_AMT NUMBER;
523     L_REF_AMOUNT NUMBER;
524     L_ORIG_HEDGE_AMT NUMBER;
525     L_CUM_REC_HDG_AMT NUMBER;
526     L_REM_HEDGE_AMT NUMBER;
527     L_ORIG_REF_AMT NUMBER;
528     L_CUR_REF_AMT NUMBER;
529     CURSOR RECLASS IS
530       SELECT
531         SUM(RECLASS_HEDGE_AMT)
532       FROM
533         XTR_RECLASS_DETAILS
534       WHERE HEDGE_ATTRIBUTE_ID = HEDGE_NO
535         AND RECLASS_DATE <= P_DATE
536         AND RECLASS_GAIN_LOSS_AMT is not null;
537     CURSOR HDG IS
538       SELECT
539         S.HEDGE_APPROACH,
540         H.HEDGE_AMOUNT
541       FROM
542         XTR_HEDGE_STRATEGIES S,
543         XTR_HEDGE_ATTRIBUTES H
544       WHERE S.STRATEGY_CODE = H.STRATEGY_CODE
545         AND H.HEDGE_ATTRIBUTE_ID = HEDGE_NO;
546     CURSOR REF_AMT(P_FLAG IN VARCHAR2) IS
547       SELECT
548         ABS(SUM(R.REFERENCE_AMOUNT)) REF_AMT
549       FROM
550         XTR_HEDGE_RELATIONSHIPS R
551       WHERE R.HEDGE_ATTRIBUTE_ID = HEDGE_NO
552         AND INSTRUMENT_ITEM_FLAG = P_FLAG;
553   BEGIN
554     OPEN HDG;
555     FETCH HDG
556      INTO L_APPROACH,L_HEDGE_AMT;
557     CLOSE HDG;
558     IF L_APPROACH = 'FORECAST' THEN
559       L_ORIG_HEDGE_AMT := NVL(L_HEDGE_AMT
560                              ,0);
561     ELSE
562       OPEN REF_AMT('I');
563       FETCH REF_AMT
564        INTO L_ORIG_HEDGE_AMT;
565       CLOSE REF_AMT;
566     END IF;
567     OPEN REF_AMT('U');
568     FETCH REF_AMT
569      INTO L_ORIG_REF_AMT;
570     CLOSE REF_AMT;
571     OPEN RECLASS;
572     FETCH RECLASS
573      INTO L_CUM_REC_HDG_AMT;
574     CLOSE RECLASS;
575     L_REM_HEDGE_AMT := NVL(L_ORIG_HEDGE_AMT
576                           ,0) - NVL(L_CUM_REC_HDG_AMT
577                           ,0);
578     L_CUR_REF_AMT := L_ORIG_REF_AMT * L_REM_HEDGE_AMT / L_ORIG_HEDGE_AMT;
579     RETURN (L_CUR_REF_AMT);
580   EXCEPTION
581     WHEN OTHERS THEN
582       RETURN NULL;
583   END CHINST_AMTFORMULA;
584 
585   FUNCTION CP_NO_GL_RATE_P RETURN VARCHAR2 IS
586   BEGIN
587     RETURN CP_NO_GL_RATE;
588   END CP_NO_GL_RATE_P;
589 
590   FUNCTION CP_NOT_CURRENT_P RETURN VARCHAR2 IS
591   BEGIN
592     RETURN CP_NOT_CURRENT;
593   END CP_NOT_CURRENT_P;
594 
595 
596 END XTR_XTRDDHTY_XMLP_PKG;
597