DBA Data[Home] [Help]

PACKAGE BODY: APPS.JA_JAINBBR_XMLP_PKG

Source


1 PACKAGE BODY JA_JAINBBR_XMLP_PKG AS
2 /* $Header: JAINBBRB.pls 120.1 2007/12/25 16:13:44 dwkrishn noship $ */
3   FUNCTION CF_CLOSING_BALANCEFORMULA(CF_CLOSING_BALANCE IN NUMBER
4                                     ,CF_OPEN_BALANCE IN NUMBER
5                                     ,RECEIPTS IN VARCHAR2
6                                     ,PAYMENTS IN VARCHAR2) RETURN NUMBER IS
7   BEGIN
8     RETURN (NVL(CF_CLOSING_BALANCE
9               ,CF_OPEN_BALANCE) + RECEIPTS - PAYMENTS);
10   END CF_CLOSING_BALANCEFORMULA;
11 
12   FUNCTION CF_BALANCEFORMULA(RECEIPTS IN VARCHAR2
13                             ,PAYMENTS IN VARCHAR2) RETURN NUMBER IS
14   BEGIN
15     RETURN (NVL(RECEIPTS
16               ,0) - NVL(PAYMENTS
17               ,0));
18   END CF_BALANCEFORMULA;
19 
20   FUNCTION CF_ACCOUNT_CODEFORMULA(ACCOUNT_CODE IN NUMBER) RETURN VARCHAR2 IS
21     V_ACCOUNT VARCHAR2(1000);
22   BEGIN
23     JAI_CMN_GL_PKG.GET_ACCOUNT_NUMBER(P_CHART_OF_ACCTS_ID
24                                      ,ACCOUNT_CODE
25                                      ,V_ACCOUNT);
26     RETURN (V_ACCOUNT);
27   END CF_ACCOUNT_CODEFORMULA;
28 
29   FUNCTION BEFOREREPORT RETURN BOOLEAN IS
30     CURSOR C_PROGRAM_ID(P_REQUEST_ID IN NUMBER) IS
31       SELECT
32         CONCURRENT_PROGRAM_ID,
33         NVL(ENABLE_TRACE
34            ,'N')
35       FROM
36         FND_CONCURRENT_REQUESTS
37       WHERE REQUEST_ID = P_REQUEST_ID;
38     V_ENABLE_TRACE FND_CONCURRENT_PROGRAMS.ENABLE_TRACE%TYPE;
39     V_PROGRAM_ID FND_CONCURRENT_PROGRAMS.CONCURRENT_PROGRAM_ID%TYPE;
40   BEGIN
41     /*SRW.MESSAGE(1275
42                ,'Report Version -> 115.2, Last Updated Date -> 17/11/2004')*/NULL;
43     BEGIN
44       OPEN C_PROGRAM_ID(P_CONC_REQUEST_ID);
45       FETCH C_PROGRAM_ID
46        INTO V_PROGRAM_ID,V_ENABLE_TRACE;
47       CLOSE C_PROGRAM_ID;
48       /*SRW.MESSAGE(1275
49                  ,'v_program_id -> ' || V_PROGRAM_ID || ', v_enable_trace -> ' || V_ENABLE_TRACE || ', request_id -> ' || P_CONC_REQUEST_ID)*/NULL;
50       IF V_ENABLE_TRACE = 'Y' THEN
51         EXECUTE IMMEDIATE
52           'ALTER SESSION SET EVENTS ''10046 trace name context forever, level 4''';
53       END IF;
54     EXCEPTION
55       WHEN OTHERS THEN
56         /*SRW.MESSAGE(1275
57                    ,'Error during enabling the trace. ErrCode -> ' || SQLCODE || ', ErrMesg -> ' || SQLERRM)*/NULL;
58     END;
59     P_CONC_REQUEST_ID := FND_GLOBAL.CONC_REQUEST_ID;
60     /*SRW.USER_EXIT('FND SRWINIT')*/NULL;
61     LP_SET_OF_BOOKS_ID := FND_PROFILE.VALUE('GL_SET_OF_BKS_ID');
62     IF P_BOOK_TYPE = 'C' THEN
63       P_DUMMY := 'Cash';
64     ELSE
65       P_DUMMY := 'Bank';
66     END IF;
67     LP_START_DATE:=to_char(P_START_DATE,'DD-MON-YYYY');
68     LP_END_DATE:=to_char(P_END_DATE,'DD-MON-YYYY');
69     LP1_START_DATE:=to_char(P_START_DATE,'DD-MON-YYYY HH24:MI:SS');
70     LP1_END_DATE:=to_char(P_END_DATE,'DD-MON-YYYY HH24:MI:SS');
71 
72     RETURN (TRUE);
73   END BEFOREREPORT;
74 
75   FUNCTION CF_1FORMULA RETURN VARCHAR2 IS
76     CURSOR FOR_SOB_ID(COA_ID IN NUMBER) IS
77       SELECT
78         SET_OF_BOOKS_ID
79       FROM
80         ORG_ORGANIZATION_DEFINITIONS
81       WHERE CHART_OF_ACCOUNTS_ID = COA_ID;
82     CURSOR FOR_SOB_NAME(SOB_ID IN NUMBER) IS
83       SELECT
84         NAME
85       FROM
86         GL_SETS_OF_BOOKS
87       WHERE SET_OF_BOOKS_ID = SOB_ID;
88     V_SET_OF_BOOKS_ID NUMBER;
89     V_SOB_NAME VARCHAR2(100);
90   BEGIN
91     OPEN FOR_SOB_ID(P_CHART_OF_ACCTS_ID);
92     FETCH FOR_SOB_ID
93      INTO V_SET_OF_BOOKS_ID;
94     CLOSE FOR_SOB_ID;
95     OPEN FOR_SOB_NAME(V_SET_OF_BOOKS_ID);
96     FETCH FOR_SOB_NAME
97      INTO V_SOB_NAME;
98     CLOSE FOR_SOB_NAME;
99     RETURN (V_SOB_NAME);
100   END CF_1FORMULA;
101 
102   FUNCTION CF_ACCT_DESCFORMULA (account_code IN NUMBER) RETURN VARCHAR2 IS
103     CURSOR GET_APP_COLUMN_NAME(CP_ID_FLEX_CODE IN FND_SEGMENT_ATTRIBUTE_VALUES.ID_FLEX_CODE%TYPE,CP_SEG_ATT_TYPE IN FND_SEGMENT_ATTRIBUTE_VALUES.SEGMENT_ATTRIBUTE_TYPE%TYPE) IS
104       SELECT
105         DISTINCT
106         APPLICATION_COLUMN_NAME
107       FROM
108         FND_SEGMENT_ATTRIBUTE_VALUES
109       WHERE APPLICATION_ID = 101
110         AND ID_FLEX_CODE = CP_ID_FLEX_CODE
111         AND ID_FLEX_NUM = P_CHART_OF_ACCTS_ID
112         AND SEGMENT_ATTRIBUTE_TYPE = CP_SEG_ATT_TYPE
113         AND ATTRIBUTE_VALUE = 'Y';
114     CURSOR FLEX_VAL_SET_ID(V_COLUMN_NAME IN VARCHAR2,CP_ID_FLEX_CODE IN FND_SEGMENT_ATTRIBUTE_VALUES.ID_FLEX_CODE%TYPE) IS
115       SELECT
116         A.FLEX_VALUE_SET_ID
117       FROM
118         FND_ID_FLEX_SEGMENTS A
119       WHERE A.APPLICATION_COLUMN_NAME = V_COLUMN_NAME
120         AND A.APPLICATION_ID = 101
121         AND A.ID_FLEX_CODE = CP_ID_FLEX_CODE
122         AND A.ID_FLEX_NUM = P_CHART_OF_ACCTS_ID;
123     V_COLUMN_NAME VARCHAR2(30);
124     V_COLUMN_VALUE VARCHAR2(30);
125     V_FLEX_ID NUMBER;
126     V_DESCRIPTION VARCHAR2(100);
127     CURSOR GET_DESCRIPTION IS
128       SELECT
129         SUBSTR(DESCRIPTION
130               ,1
131               ,50)
132       FROM
133         FND_FLEX_VALUES_VL
134       WHERE FLEX_VALUE_SET_ID = V_FLEX_ID
135         AND FLEX_VALUE = V_COLUMN_VALUE;
136   BEGIN
137     OPEN GET_APP_COLUMN_NAME('GL#','GL_ACCOUNT');
138     FETCH GET_APP_COLUMN_NAME
139      INTO V_COLUMN_NAME;
140     CLOSE GET_APP_COLUMN_NAME;
141     IF V_COLUMN_NAME IS NULL THEN
142       V_COLUMN_NAME := 'SEGMENT3';
143     END IF;
144     OPEN FLEX_VAL_SET_ID(V_COLUMN_NAME,'GL#');
145     FETCH FLEX_VAL_SET_ID
146      INTO V_FLEX_ID;
147     CLOSE FLEX_VAL_SET_ID;
148     /*EXECUTE IMMEDIATE
149       'select ' || V_COLUMN_NAME || ' into :p_column_value from gl_code_combinations
150       		where chart_of_accounts_id = :P_CHART_OF_ACCTS_ID AND code_combination_id = :account_code';*/
151     EXECUTE IMMEDIATE
152       'select ' || V_COLUMN_NAME || ' from gl_code_combinations
153       		where chart_of_accounts_id = :P_CHART_OF_ACCTS_ID AND code_combination_id = :account_code'
154 	        INTO p_column_value
155 		USING P_CHART_OF_ACCTS_ID,account_code  ;
156     V_COLUMN_VALUE := P_COLUMN_VALUE;
157     OPEN GET_DESCRIPTION;
158     FETCH GET_DESCRIPTION
159      INTO V_DESCRIPTION;
160     CLOSE GET_DESCRIPTION;
161     RETURN (V_DESCRIPTION);
162   END CF_ACCT_DESCFORMULA;
163 
164   FUNCTION CF_P_BOOKFORMULA RETURN VARCHAR2 IS
165     V_BOOK_TYPE VARCHAR2(20);
166   BEGIN
167     IF P_BOOK_TYPE = 'B' THEN
168       V_BOOK_TYPE := 'Bank Book';
169     ELSE
170       V_BOOK_TYPE := 'Cash Book';
171     END IF;
172     RETURN (V_BOOK_TYPE);
173   END CF_P_BOOKFORMULA;
174 
175   FUNCTION JA_IN_CAL_BAL(P_BASE_DATE IN DATE
176                         ,P_BALANCE_TYPE IN VARCHAR2
177                         ,P_OPEN_CLOSE IN VARCHAR2) RETURN NUMBER IS
178     V_BASE_DATE DATE;
179     V_AMOUNT1 NUMBER;
180     V_AMOUNT2 NUMBER;
181     V_AMOUNT3 NUMBER;
182     V_BALANCE NUMBER;
183     V_SET_OF_BOOKS_ID NUMBER;
184     LV_PAY_SOURCE GL_JE_HEADERS.JE_SOURCE%TYPE;
185     LV_RCV_SOURCE GL_JE_HEADERS.JE_SOURCE%TYPE;
186     LV_PAY_SOURCE1 GL_JE_HEADERS.JE_SOURCE%TYPE;
187     LV_RCV_SOURCE1 GL_JE_HEADERS.JE_SOURCE%TYPE;
188     LV_CLEAR_STATUS AR_CASH_RECEIPT_HISTORY_ALL.STATUS%TYPE;
189     LV_REMIT_STATUS AR_CASH_RECEIPT_HISTORY_ALL.STATUS%TYPE;
190     LV_CONFIRM_STATUS AR_CASH_RECEIPT_HISTORY_ALL.STATUS%TYPE;
191     LV_REV_STATUS AR_CASH_RECEIPT_HISTORY_ALL.STATUS%TYPE;
192     LV_NEGOT_LOOKUP AP_CHECKS_ALL.STATUS_LOOKUP_CODE%TYPE;
193     LV_CLEAR_LOOKUP AP_CHECKS_ALL.STATUS_LOOKUP_CODE%TYPE;
194     LV_VOIDED_LOOKUP AP_CHECKS_ALL.STATUS_LOOKUP_CODE%TYPE;
195     LV_REC_UNACC_LOOKUP AP_CHECKS_ALL.STATUS_LOOKUP_CODE%TYPE;
196     LV_REC_LOOKUP AP_CHECKS_ALL.STATUS_LOOKUP_CODE%TYPE;
197     LV_CLEAR_UNACC_LOOKUP AP_CHECKS_ALL.STATUS_LOOKUP_CODE%TYPE;
198   BEGIN
199     LV_PAY_SOURCE := 'Payables India';
200     LV_RCV_SOURCE := 'Receivables India';
201     LV_PAY_SOURCE1 := 'Payables';
202     LV_RCV_SOURCE1 := 'Receivables';
203     LV_CLEAR_STATUS := 'CLEARED';
204     LV_REMIT_STATUS := 'REMITTED';
205     LV_CONFIRM_STATUS := 'CONFIRMED';
206     LV_REV_STATUS := 'REVERSED';
207     LV_NEGOT_LOOKUP := 'NEGOTIABLE';
208     LV_CLEAR_LOOKUP := 'CLEARED';
209     LV_VOIDED_LOOKUP := 'VOIDED';
210     LV_REC_UNACC_LOOKUP := 'RECONCILED UNACCOUNTED';
211     LV_REC_LOOKUP := 'RECONCILED';
212     LV_CLEAR_UNACC_LOOKUP := 'CLEARED BUT UNACCOUNTED';
213     IF P_OPEN_CLOSE = 'OP' THEN
214       V_BASE_DATE := P_BASE_DATE;
215     END IF;
216     SELECT
217       DECODE(P_BALANCE_TYPE
218             ,'CR'
219             ,SUM(ACCOUNTED_DR)
220             ,'DR'
221             ,SUM(ACCOUNTED_CR)
222             ,0)
223     INTO V_AMOUNT2
224     FROM
225       GL_JE_HEADERS GLH,
226       GL_JE_LINES GLL,
227       CE_BANK_ACCOUNTS CBA
228     WHERE GLH.JE_HEADER_ID = GLL.JE_HEADER_ID
229       AND GLH.LEDGER_ID = GLL.LEDGER_ID
230       AND GLL.LEDGER_ID = LP_SET_OF_BOOKS_ID
231       AND CBA.ASSET_CODE_COMBINATION_ID = GLL.CODE_COMBINATION_ID
232       AND CBA.BANK_ACCOUNT_ID = P_BANK_ACCOUNT_ID
233       AND GLH.JE_SOURCE NOT IN ( LV_PAY_SOURCE , LV_RCV_SOURCE , LV_PAY_SOURCE1 , LV_RCV_SOURCE1 )
234       AND GLH.DEFAULT_EFFECTIVE_DATE < V_BASE_DATE
235       AND ( CBA.ACCOUNT_OWNER_ORG_ID IS NULL
236     OR CBA.ACCOUNT_OWNER_ORG_ID = P_ORG_ID );
237     IF P_BALANCE_TYPE = 'CR' THEN
238       SELECT
239         SUM(DECODE(ACRH.STATUS
240                   ,'REVERSED'
241                   ,(ACRH.AMOUNT * NVL(ACRH.EXCHANGE_RATE
242                      ,1)) * -1
243                   ,NVL(ACRH.AMOUNT
244                      ,0) * NVL(ACRH.EXCHANGE_RATE
245                      ,1)))
246       INTO V_AMOUNT1
247       FROM
248         AR_CASH_RECEIPT_HISTORY_ALL ACRH,
249         AR_CASH_RECEIPTS_ALL ACR,
250         HZ_PARTIES HP,
251         HZ_CUST_ACCOUNTS HCA,
252         CE_BANK_ACCOUNTS CBA
253       WHERE ACRH.CASH_RECEIPT_ID = ACR.CASH_RECEIPT_ID
254         AND ACR.REMITTANCE_BANK_ACCOUNT_ID = CBA.BANK_ACCOUNT_ID
255         AND HCA.PARTY_ID = hp.party_id (+)
256         AND ACR.PAY_FROM_CUSTOMER = hca.cust_account_id (+)
257         AND ACRH.STATUS IN ( LV_CLEAR_STATUS , LV_REMIT_STATUS , LV_CONFIRM_STATUS , LV_REV_STATUS )
258         AND ( ( ACRH.STATUS = LV_REV_STATUS
259         AND ACR.REVERSAL_DATE is not null )
260       OR ( ACRH.CASH_RECEIPT_HISTORY_ID IN (
261         SELECT
262           MIN(INCRH.CASH_RECEIPT_HISTORY_ID)
263         FROM
264           AR_CASH_RECEIPT_HISTORY_ALL INCRH
265         WHERE INCRH.CASH_RECEIPT_ID = ACR.CASH_RECEIPT_ID
266           AND INCRH.STATUS <> LV_REV_STATUS ) ) )
267         AND CBA.BANK_ACCOUNT_ID = P_BANK_ACCOUNT_ID
268         AND ACRH.GL_DATE < V_BASE_DATE
269         AND ( ACR.ORG_ID IS NULL
270       OR ACR.ORG_ID = P_ORG_ID );
271       SELECT
272         SUM(API.INVOICE_AMOUNT * NVL(API.EXCHANGE_RATE
273                ,1))
274       INTO V_AMOUNT3
275       FROM
276         AP_INVOICE_DISTRIBUTIONS_ALL APID,
277         AP_INVOICE_LINES_ALL APLA,
278         AP_INVOICES_ALL API,
279         PO_VENDORS POV,
280         CE_BANK_ACCOUNTS CBA
281       WHERE API.INVOICE_ID = APID.INVOICE_ID
282         AND APLA.INVOICE_ID = APID.INVOICE_ID
283         AND APLA.LINE_NUMBER = APID.INVOICE_LINE_NUMBER
284         AND API.VENDOR_ID = POV.VENDOR_ID
285         AND CBA.BANK_ACCOUNT_ID = P_BANK_ACCOUNT_ID
286         AND CBA.ASSET_CODE_COMBINATION_ID = APID.DIST_CODE_COMBINATION_ID
287         AND APID.MATCH_STATUS_FLAG = 'A'
288         AND APID.ACCOUNTING_DATE < V_BASE_DATE
289         AND ( CBA.ACCOUNT_OWNER_ORG_ID IS NULL
290       OR CBA.ACCOUNT_OWNER_ORG_ID = P_ORG_ID );
291       V_BALANCE := NVL(V_AMOUNT1
292                       ,0) + NVL(V_AMOUNT2
293                       ,0) + NVL(V_AMOUNT3
294                       ,0);
295     ELSIF P_BALANCE_TYPE = 'DR' THEN
296       SELECT
297         SUM(NVL(AIP.AMOUNT
298                ,0) * NVL(AIP.EXCHANGE_RATE
299                ,1))
300       INTO V_AMOUNT1
301       FROM
302         AP_INVOICE_PAYMENTS_ALL AIP,
303         AP_CHECKS_ALL APC,
304         CE_BANK_ACCOUNTS CBA
305       WHERE AIP.CHECK_ID = APC.CHECK_ID
306         AND APC.BANK_ACCOUNT_ID = CBA.BANK_ACCOUNT_ID
307         AND APC.STATUS_LOOKUP_CODE IN ( LV_NEGOT_LOOKUP , LV_CLEAR_LOOKUP , LV_VOIDED_LOOKUP , LV_REC_UNACC_LOOKUP , LV_REC_LOOKUP , LV_CLEAR_UNACC_LOOKUP )
308         AND CBA.BANK_ACCOUNT_ID = P_BANK_ACCOUNT_ID
309         AND AIP.ACCOUNTING_DATE < V_BASE_DATE
310         AND ( CBA.ACCOUNT_OWNER_ORG_ID IS NULL
311       OR CBA.ACCOUNT_OWNER_ORG_ID = P_ORG_ID );
312       V_BALANCE := NVL(V_AMOUNT1
313                       ,0) + NVL(V_AMOUNT2
314                       ,0);
315     END IF;
316     RETURN V_BALANCE;
317   END JA_IN_CAL_BAL;
318 
319   FUNCTION AFTERREPORT RETURN BOOLEAN IS
320   BEGIN
321     /*SRW.USER_EXIT('FND SRWEXIT')*/NULL;
322     RETURN (TRUE);
323   END AFTERREPORT;
324 
325   FUNCTION CF_OPEN_BAL_DRFORMULA RETURN NUMBER IS
326     AMT NUMBER;
327     AMT1 NUMBER;
328   BEGIN
329     RETURN (JA_IN_CAL_BAL(P_START_DATE
330                         ,'DR'
331                         ,'OP'));
332   END CF_OPEN_BAL_DRFORMULA;
333 
334   FUNCTION CF_OPEN_BAL_CRFORMULA RETURN NUMBER IS
335     AMT NUMBER;
336     AMT1 NUMBER;
337   BEGIN
338     RETURN (JA_IN_CAL_BAL(P_START_DATE
339                         ,'CR'
340                         ,'OP'));
341   END CF_OPEN_BAL_CRFORMULA;
342 
343   FUNCTION CF_OPEN_BALANCEFORMULA(CF_OPEN_BAL_CR IN NUMBER
344                                  ,CF_OPEN_BAL_DR IN NUMBER) RETURN NUMBER IS
345   BEGIN
346     RETURN (NVL(CF_OPEN_BAL_CR
347               ,0) - NVL(CF_OPEN_BAL_DR
348               ,0));
349   END CF_OPEN_BALANCEFORMULA;
350 
351 END JA_JAINBBR_XMLP_PKG;
352