DBA Data[Home] [Help]

PACKAGE BODY: APPS.JA_JAINSTR_XMLP_PKG

Source


1 PACKAGE BODY JA_JAINSTR_XMLP_PKG AS
2 /* $Header: JAINSTRB.pls 120.1 2007/12/25 16:31:53 dwkrishn noship $ */
3   FUNCTION BEFOREREPORT RETURN BOOLEAN IS
4     CURSOR C_PROGRAM_ID(P_REQUEST_ID IN NUMBER) IS
5       SELECT
6         CONCURRENT_PROGRAM_ID,
7         NVL(ENABLE_TRACE
8            ,'N')
9       FROM
10         FND_CONCURRENT_REQUESTS
11       WHERE REQUEST_ID = P_REQUEST_ID;
12     V_ENABLE_TRACE FND_CONCURRENT_PROGRAMS.ENABLE_TRACE%TYPE;
13     V_PROGRAM_ID FND_CONCURRENT_PROGRAMS.CONCURRENT_PROGRAM_ID%TYPE;
14   BEGIN
15     /*SRW.MESSAGE(1275
16                ,'Report Version is 120.4 Last modified date is 02/05/2007')*/NULL;
17     P_CONC_REQUEST_ID := FND_GLOBAL.CONC_REQUEST_ID;
18     /*SRW.USER_EXIT('FND SRWINIT')*/NULL;
19     BEGIN
20       OPEN C_PROGRAM_ID(P_CONC_REQUEST_ID);
21       FETCH C_PROGRAM_ID
22        INTO V_PROGRAM_ID,V_ENABLE_TRACE;
23       CLOSE C_PROGRAM_ID;
24       /*SRW.MESSAGE(1275
25                  ,'v_program_id -> ' || V_PROGRAM_ID || ', v_enable_trace -> ' || V_ENABLE_TRACE || ', request_id -> ' || P_CONC_REQUEST_ID)*/NULL;
26       IF V_ENABLE_TRACE = 'Y' THEN
27         EXECUTE IMMEDIATE
28           'ALTER SESSION SET EVENTS ''10046 trace name context forever, level 4''';
29       END IF;
30     EXCEPTION
31       WHEN OTHERS THEN
32         /*SRW.MESSAGE(1275
33                    ,'Error during enabling the trace. ErrCode -> ' || SQLCODE || ', ErrMesg -> ' || SQLERRM)*/NULL;
34     END;
35     LP_FROM_DATE:=to_char(P_FROM_DATE,'DD-MON-YYYY');
36     LP_TO_DATE:=to_char(P_TO_DATE,'DD-MON-YYYY');
37     RETURN (TRUE);
38   END BEFOREREPORT;
39 
40   FUNCTION CF_RECEIPT_AMOUNTFORMULA(INVOICE_ID IN NUMBER) RETURN NUMBER IS
41     CURSOR FETCH_RECEIPT_AMOUNT IS
42       SELECT
43         SUM(AMOUNT_APPLIED)
44       FROM
45         AR_RECEIVABLE_APPLICATIONS_ALL
46       WHERE APPLIED_CUSTOMER_TRX_ID = INVOICE_ID
47         AND APPLICATION_TYPE = 'CASH'
48         AND STATUS in ( 'APP' , 'UNAPP' );
49     LN_RECEIPT_AMOUNT AR_RECEIVABLE_APPLICATIONS_ALL.AMOUNT_APPLIED%TYPE;
50   BEGIN
51     OPEN FETCH_RECEIPT_AMOUNT;
52     FETCH FETCH_RECEIPT_AMOUNT
53      INTO LN_RECEIPT_AMOUNT;
54     CLOSE FETCH_RECEIPT_AMOUNT;
55     IF P_DEBUG_FLAG = 'Y' THEN
56       /*SRW.MESSAGE('106'
57                  ,'Value of customer_trx_id ' || INVOICE_ID)*/NULL;
58       /*SRW.MESSAGE('106'
59                  ,'Value of receipt amount ' || LN_RECEIPT_AMOUNT)*/NULL;
60     END IF;
61     RETURN (ROUND(LN_RECEIPT_AMOUNT
62                 ,0));
63   EXCEPTION
64     WHEN OTHERS THEN
65       /*SRW.MESSAGE('106'
66                  ,' Exception in receipt maount' || SQLERRM)*/NULL;
67       RETURN (NULL);
68   END CF_RECEIPT_AMOUNTFORMULA;
69 
70   FUNCTION CF_1FORMULA(INVOICE_ID_1 IN NUMBER
71                       ,ORG_ID1 IN NUMBER
72                       ,SERVICE_BASIS IN NUMBER
73                       ,SERVICE_REC_AMOUNT IN NUMBER
74                       ,CESS_REC_AMOUNT IN NUMBER
75                       ,SERVICE_PAYABLE_AMOUNT IN NUMBER
76                       ,CESS_PAYABLE_AMOUNT IN NUMBER) RETURN CHAR IS
77     L_INVOICE_NUMBER VARCHAR2(25);
78     CURSOR FETCH_INV_NUMBER IS
79       SELECT
80         TRX_NUMBER
81       FROM
82         JAI_AR_TRXS
83       WHERE CUSTOMER_TRX_ID = INVOICE_ID_1;
84     CURSOR FETCH_AMT_DETAILS IS
85       SELECT
86         DISTINCT
87         TRX.*
88       FROM
89         RA_CUSTOMER_TRX_ALL TRX,
90         RA_CUST_TRX_TYPES_ALL TRX_TYPE,
91         JAI_AR_TRXS JTRX,
92         JAI_AR_TRX_LINES JTRXL,
93         JAI_AR_TRX_TAX_LINES JTRXTL,
94         JAI_CMN_TAXES_ALL JTC
95       WHERE TRX.ORG_ID = ORG_ID1
96         AND TRX.COMPLETE_FLAG = 'Y'
97         AND TRX.PREVIOUS_CUSTOMER_TRX_ID = INVOICE_ID_1
98         AND TRX.CUSTOMER_TRX_ID = JTRX.CUSTOMER_TRX_ID
99         AND UPPER(TRX_TYPE.TYPE) = 'CM'
100         AND TRX_TYPE.CUST_TRX_TYPE_ID = TRX.CUST_TRX_TYPE_ID
101         AND TRX_TYPE.ORG_ID = TRX.ORG_ID
102         AND JTRX.CUSTOMER_TRX_ID = JTRXL.CUSTOMER_TRX_ID
103         AND JTRXL.CUSTOMER_TRX_LINE_ID = JTRXTL.LINK_TO_CUST_TRX_LINE_ID
104         AND JTRXTL.TAX_ID = JTC.TAX_ID
105         AND UPPER(JTC.TAX_TYPE) IN ( 'SERVICE' , 'SERVICE_EDUCATION_CESS' , 'SERVICE_SH_EDU_CESS' );
106     CURSOR FETCH_INV_AMT IS
107       SELECT
108         SUM(NVL(AMOUNT
109                ,0))
110       FROM
111         RA_CUST_TRX_LINE_GL_DIST_ALL
112       WHERE CUSTOMER_TRX_ID = INVOICE_ID_1
113         AND ACCOUNT_CLASS = 'REC';
114     CURSOR CUR_SH_CESS_REC IS
115       SELECT
116         TAXABLE_BASIS SH_CESS_BASIS,
117         RECOVERABLE_PTG SH_CESS_REC_PERCENT,
118         RECOVERABLE_AMOUNT SH_CESS_REC_AMOUNT,
119         RECOVERED_AMOUNT SH_CESS_PAYABLE_AMOUNT
120       FROM
121         JAI_RGM_TRX_REFS
122       WHERE SOURCE = 'AR'
123         AND INVOICE_ID = INVOICE_ID_1
124         AND TAX_TYPE = 'SERVICE_SH_EDU_CESS';
125     LN_INV_SH_CESS_BASIS JAI_RGM_TRX_REFS.TAXABLE_BASIS%TYPE;
126     LN_INV_SH_CESS_REC_PERCENT JAI_RGM_TRX_REFS.RECOVERABLE_PTG%TYPE;
127     LN_INV_SH_CESS_AMOUNT JAI_RGM_TRX_REFS.RECOVERABLE_AMOUNT%TYPE;
128     LN_INV_SH_CESS_PAYABLE_AMOUNT JAI_RGM_TRX_REFS.RECOVERED_AMOUNT%TYPE;
129     LN_CM_SH_CESS_AMT JAI_RGM_TRX_REFS.RECOVERABLE_AMOUNT%TYPE;
130     LN_INV_GROSS_AMT RA_CUST_TRX_LINE_GL_DIST_ALL.AMOUNT%TYPE;
131     LN_INV_TAXABLE_BASIS JAI_RGM_TRX_REFS.TAXABLE_BASIS%TYPE;
132     LN_INV_SERVICE_AMT JAI_RGM_TRX_REFS.RECOVERABLE_AMOUNT%TYPE;
133     LN_INV_CESS_AMT JAI_RGM_TRX_REFS.RECOVERABLE_AMOUNT%TYPE;
134     LN_INV_SERVICE_PAY JAI_RGM_TRX_REFS.RECOVERABLE_AMOUNT%TYPE;
135     LN_CM_GROSS_AMT RA_CUST_TRX_LINE_GL_DIST_ALL.AMOUNT%TYPE;
136     LN_CM_GROSS_AMT_TMP RA_CUST_TRX_LINE_GL_DIST_ALL.AMOUNT%TYPE;
137     LN_CM_TAXABLE_BASIS JAI_RGM_TRX_REFS.TAXABLE_BASIS%TYPE;
138     LN_CM_SERVICE_AMT JAI_RGM_TRX_REFS.RECOVERABLE_AMOUNT%TYPE;
139     LN_CM_CESS_AMT JAI_RGM_TRX_REFS.RECOVERABLE_AMOUNT%TYPE;
140     LN_CM_SERVICE_PAY JAI_RGM_TRX_REFS.RECOVERABLE_AMOUNT%TYPE;
141   BEGIN
142     OPEN FETCH_INV_NUMBER;
143     FETCH FETCH_INV_NUMBER
144      INTO L_INVOICE_NUMBER;
145     CLOSE FETCH_INV_NUMBER;
146     IF P_DEBUG_FLAG = 'Y' THEN
147       /*SRW.MESSAGE('101'
148                  ,' Customer trx id ' || INVOICE_ID)*/NULL;
149       /*SRW.MESSAGE('101'
150                  ,'Invoice number ' || L_INVOICE_NUMBER)*/NULL;
151     END IF;
152     BEGIN
153       OPEN FETCH_INV_AMT;
154       FETCH FETCH_INV_AMT
155        INTO LN_INV_GROSS_AMT;
156       CLOSE FETCH_INV_AMT;
157       OPEN CUR_SH_CESS_REC;
158       FETCH CUR_SH_CESS_REC
159        INTO LN_INV_SH_CESS_BASIS,LN_INV_SH_CESS_REC_PERCENT,LN_INV_SH_CESS_AMOUNT,LN_INV_SH_CESS_PAYABLE_AMOUNT;
160       CLOSE CUR_SH_CESS_REC;
161       LN_INV_TAXABLE_BASIS := NVL(SERVICE_BASIS
162                                  ,0);
163       LN_INV_SERVICE_AMT := NVL(SERVICE_REC_AMOUNT
164                                ,0);
165       LN_INV_CESS_AMT := NVL(CESS_REC_AMOUNT
166                             ,0);
167       LN_INV_SERVICE_PAY := NVL(SERVICE_PAYABLE_AMOUNT
168                                ,0) + NVL(CESS_PAYABLE_AMOUNT
169                                ,0) + NVL(LN_INV_SH_CESS_PAYABLE_AMOUNT
170                                ,0);
171       IF P_DEBUG_FLAG = 'Y' THEN
172         /*SRW.MESSAGE('101'
173                    ,' Inv - Customer trx id ' || INVOICE_ID)*/NULL;
174         /*SRW.MESSAGE('102'
175                    ,' Inv - gross amt  ' || LN_INV_GROSS_AMT)*/NULL;
176         /*SRW.MESSAGE('103'
177                    ,' Inv - taxable basis ' || LN_INV_TAXABLE_BASIS)*/NULL;
178         /*SRW.MESSAGE('104'
179                    ,' inv - service amt ' || LN_INV_SERVICE_AMT)*/NULL;
180         /*SRW.MESSAGE('105'
181                    ,' inv - cess amt ' || LN_INV_CESS_AMT)*/NULL;
182         /*SRW.MESSAGE('106'
183                    ,' inv - cess pay ' || LN_INV_SERVICE_PAY)*/NULL;
184         /*SRW.MESSAGE('107'
185                    ,' inv - sh cess amt ' || LN_INV_SH_CESS_AMOUNT)*/NULL;
186       END IF;
187       LN_CM_GROSS_AMT := 0;
188       LN_CM_TAXABLE_BASIS := 0;
189       LN_CM_SERVICE_AMT := 0;
190       LN_CM_CESS_AMT := 0;
191       LN_CM_SERVICE_PAY := 0;
192       LN_CM_SH_CESS_AMT := 0;
193       FOR CM_inv IN FETCH_AMT_DETAILS LOOP
194         FOR CM_tot_amt IN (SELECT
195                              SUM(NVL(AMOUNT
196                                     ,0)) AMOUNT
197                            FROM
198                              RA_CUST_TRX_LINE_GL_DIST_ALL
199                            WHERE CUSTOMER_TRX_ID = CM_INV.CUSTOMER_TRX_ID
200                              AND ACCOUNT_CLASS = 'REC') LOOP
201           LN_CM_GROSS_AMT_TMP := CM_TOT_AMT.AMOUNT;
202           /*SRW.MESSAGE('108'
203                      ,' CM - Customer trx id ' || CM_INV.CUSTOMER_TRX_ID)*/NULL;
204         END LOOP;
205         LN_CM_GROSS_AMT := LN_CM_GROSS_AMT + NVL(LN_CM_GROSS_AMT_TMP
206                               ,0);
207         FOR amt_det IN (SELECT
208                           JRTR1.ORGANIZATION_ID ORG_ID1,
209                           JRTR1.INVOICE_ID INVOICE_ID,
210                           JRTR1.TAXABLE_BASIS SERVICE_BASIS,
211                           JRTR1.RECOVERABLE_PTG SERVICE_REC_PERCENT,
212                           JRTR1.RECOVERABLE_AMOUNT SERVICE_REC_AMOUNT,
213                           JRTR1.RECOVERED_AMOUNT SERVICE_PAYABLE_AMOUNT,
214                           JRTR2.TAXABLE_BASIS CESS_BASIS,
215                           JRTR2.RECOVERABLE_PTG CESS_REC_PERCENT,
216                           JRTR2.RECOVERABLE_AMOUNT CESS_REC_AMOUNT,
217                           JRTR2.RECOVERED_AMOUNT CESS_PAYABLE_AMOUNT
218                         FROM
219                           JAI_RGM_TRX_REFS JRTR1,
220                           JAI_RGM_TRX_REFS JRTR2
221                         WHERE JRTR1.SOURCE = 'AR'
222                           AND JRTR1.INVOICE_ID = jrtr2.invoice_id (+)
223                           AND JRTR1.INVOICE_ID = CM_INV.CUSTOMER_TRX_ID
224                           AND JRTR1.TAX_TYPE = 'Service'
225                           AND JRTR2.TAX_TYPE = 'SERVICE_EDUCATION_CESS') LOOP
226           LN_CM_TAXABLE_BASIS := LN_CM_TAXABLE_BASIS + NVL(AMT_DET.SERVICE_BASIS
227                                     ,0);
228           LN_CM_SERVICE_AMT := LN_CM_SERVICE_AMT + NVL(AMT_DET.SERVICE_REC_AMOUNT
229                                   ,0);
230           LN_CM_CESS_AMT := LN_CM_CESS_AMT + NVL(AMT_DET.CESS_REC_AMOUNT
231                                ,0);
232           LN_CM_SERVICE_PAY := LN_CM_SERVICE_PAY + NVL(AMT_DET.SERVICE_PAYABLE_AMOUNT
233                                   ,0) + NVL(AMT_DET.CESS_PAYABLE_AMOUNT
234                                   ,0);
235           IF P_DEBUG_FLAG = 'Y' THEN
236             /*SRW.MESSAGE('109'
237                        ,' CM - gross amt  ' || LN_CM_GROSS_AMT)*/NULL;
238             /*SRW.MESSAGE('110'
239                        ,' CM - Tax basis ' || LN_CM_TAXABLE_BASIS)*/NULL;
240             /*SRW.MESSAGE('111'
241                        ,' CM - Service  ' || LN_CM_SERVICE_AMT)*/NULL;
242             /*SRW.MESSAGE('112'
243                        ,' CM - CESS ' || LN_CM_CESS_AMT)*/NULL;
244             /*SRW.MESSAGE('113'
245                        ,' CM - Service PAY ' || LN_CM_SERVICE_PAY)*/NULL;
246           END IF;
247         END LOOP;
248         FOR sh_amt_det IN CUR_SH_CESS_REC LOOP
249           LN_CM_CESS_AMT := LN_CM_SH_CESS_AMT + NVL(SH_AMT_DET.SH_CESS_REC_AMOUNT
250                                ,0);
251           IF P_DEBUG_FLAG = 'Y' THEN
252             /*SRW.MESSAGE('114'
253                        ,' CM - SH CESS  ' || LN_CM_SH_CESS_AMT)*/NULL;
254           END IF;
255         END LOOP;
256       END LOOP;
257       LN_INV_GROSS_AMT := LN_INV_GROSS_AMT + LN_CM_GROSS_AMT;
258       LN_INV_TAXABLE_BASIS := LN_INV_TAXABLE_BASIS + LN_CM_TAXABLE_BASIS;
259       LN_INV_SERVICE_AMT := LN_INV_SERVICE_AMT + LN_CM_SERVICE_AMT;
260       LN_INV_CESS_AMT := LN_INV_CESS_AMT + LN_CM_CESS_AMT;
261       LN_INV_SERVICE_PAY := LN_INV_SERVICE_PAY + LN_CM_SERVICE_PAY;
262       LN_INV_SH_CESS_AMOUNT := LN_INV_SH_CESS_AMOUNT + LN_CM_CESS_AMT;
263       IF P_DEBUG_FLAG = 'Y' THEN
264         /*SRW.MESSAGE('115'
265                    ,' Inv - Customer trx id ' || INVOICE_ID)*/NULL;
266         /*SRW.MESSAGE('116'
267                    ,' Inv - gross amt  ' || LN_INV_GROSS_AMT)*/NULL;
268         /*SRW.MESSAGE('117'
269                    ,' Inv - Tax basis ' || LN_INV_TAXABLE_BASIS)*/NULL;
270         /*SRW.MESSAGE('118'
271                    ,' Inv - service  ' || LN_INV_SERVICE_AMT)*/NULL;
272         /*SRW.MESSAGE('119'
273                    ,' Inv - cesd ' || LN_INV_CESS_AMT)*/NULL;
274         /*SRW.MESSAGE('120'
275                    ,' Inv - Service pay ' || LN_INV_SERVICE_PAY)*/NULL;
276         /*SRW.MESSAGE('119'
277                    ,' Inv - shcesd ' || LN_INV_SH_CESS_AMOUNT)*/NULL;
278       END IF;
279       CP_GROSS_INVOICE_AMOUNT := ROUND(NVL(LN_INV_GROSS_AMT
280                                           ,0)
281                                       ,2);
282       CP_TAXABLE_BASIS := ROUND(NVL(LN_INV_TAXABLE_BASIS
283                                    ,0)
284                                ,2);
285       CP_SERVICE_TAX_AMOUNT := ROUND(NVL(LN_INV_SERVICE_AMT
286                                         ,0)
287                                     ,2);
288       CP_CESS_AMOUNT := ROUND(NVL(LN_INV_CESS_AMT
289                                  ,0)
290                              ,2);
291       CP_SERVICE_TAX_PAY := ROUND(NVL(LN_INV_SERVICE_PAY
292                                      ,0)
293                                  ,2);
294       CP_SH_CESS_AMOUNT := ROUND(NVL(LN_INV_SH_CESS_AMOUNT
295                                     ,0)
296                                 ,2);
297     EXCEPTION
298       WHEN OTHERS THEN
299         /*SRW.MESSAGE('1000'
300                    ,' In exception of amount fields' || SQLERRM)*/NULL;
301     END;
302     RETURN (L_INVOICE_NUMBER);
303   EXCEPTION
304     WHEN OTHERS THEN
305       /*SRW.MESSAGE('101'
306                  ,' Invoice number exception' || SQLERRM)*/NULL;
307       RETURN (NULL);
308   END CF_1FORMULA;
309 
310   FUNCTION CF_SERVICE_TYPEFORMULA(SERVICE_REF_ID IN NUMBER) RETURN CHAR IS
311     CURSOR GET_SERVICE_TYPE_CUR(CP_SERVICE_TYPE_CODE IN VARCHAR2) IS
312       SELECT
313         DESCRIPTION
314       FROM
315         JA_LOOKUPS
316       WHERE LOOKUP_TYPE = 'JAI_SERVICE_TYPE'
317         AND LOOKUP_CODE = CP_SERVICE_TYPE_CODE;
318     LV_SERVICE_TYPE_CODE VARCHAR2(30);
319     LV_SERVICE_TYPE VARCHAR2(80);
320   BEGIN
321     LV_SERVICE_TYPE_CODE := JAI_TRX_REPO_EXTRACT_PKG.GET_SERVICE_TYPE_FROM_REF(SERVICE_REF_ID);
322     OPEN GET_SERVICE_TYPE_CUR(LV_SERVICE_TYPE_CODE);
323     FETCH GET_SERVICE_TYPE_CUR
324      INTO LV_SERVICE_TYPE;
325     CLOSE GET_SERVICE_TYPE_CUR;
326     RETURN LV_SERVICE_TYPE;
327   END CF_SERVICE_TYPEFORMULA;
328 
329   FUNCTION AFTERREPORT RETURN BOOLEAN IS
330   BEGIN
331     /*SRW.USER_EXIT('FND SRWEXIT')*/NULL;
332     RETURN (TRUE);
333   END AFTERREPORT;
334 
335   FUNCTION P_TO_DATEVALIDTRIGGER RETURN BOOLEAN IS
336   BEGIN
337     RETURN (TRUE);
338   END P_TO_DATEVALIDTRIGGER;
339 
340   FUNCTION CP_GROSS_INVOICE_AMOUNT_P RETURN NUMBER IS
341   BEGIN
342     RETURN CP_GROSS_INVOICE_AMOUNT;
343   END CP_GROSS_INVOICE_AMOUNT_P;
344 
345   FUNCTION CP_TAXABLE_BASIS_P RETURN NUMBER IS
346   BEGIN
347     RETURN CP_TAXABLE_BASIS;
348   END CP_TAXABLE_BASIS_P;
349 
350   FUNCTION CP_SERVICE_TAX_AMOUNT_P RETURN NUMBER IS
351   BEGIN
352     RETURN CP_SERVICE_TAX_AMOUNT;
353   END CP_SERVICE_TAX_AMOUNT_P;
354 
355   FUNCTION CP_CESS_AMOUNT_P RETURN NUMBER IS
356   BEGIN
357     RETURN CP_CESS_AMOUNT;
358   END CP_CESS_AMOUNT_P;
359 
360   FUNCTION CP_SERVICE_TAX_PAY_P RETURN NUMBER IS
361   BEGIN
362     RETURN CP_SERVICE_TAX_PAY;
363   END CP_SERVICE_TAX_PAY_P;
364 
365   FUNCTION CP_SH_CESS_AMOUNT_P RETURN NUMBER IS
366   BEGIN
367     RETURN CP_SH_CESS_AMOUNT;
368   END CP_SH_CESS_AMOUNT_P;
369 
370 END JA_JAINSTR_XMLP_PKG;
371 
372