DBA Data[Home] [Help]

PACKAGE BODY: APPS.GL_GLWACCTR_XMLP_PKG

Source


1 PACKAGE BODY GL_GLWACCTR_XMLP_PKG AS
2 /* $Header: GLWACCTRB.pls 120.2 2008/01/09 07:28:17 vijranga noship $ */
3 
4 UNKNOWN_USER_EXIT EXCEPTION;
5 
6 USER_EXIT_FAILURE EXCEPTION;
7 
8 FUNCTION BEFOREREPORT RETURN BOOLEAN IS
9 
10   T_ERRORBUFFER            VARCHAR2(132);
11   AMOUNT_WHERE             VARCHAR2(500);
12   AMOUNT_WHERE2            VARCHAR2(500);
13   JOURNAL_FROM		   VARCHAR2(500);
14   JOURNAL_WHERE            VARCHAR2(1000);
15   AFF_WHERE                VARCHAR2(500);
16   AFF_WHERE2   		   VARCHAR2(4000);
17   L_LEDGER_TYPE            VARCHAR2(100);
18   L_LEDGER_CURR            VARCHAR2(100);
19   L_LEDGER_FROM            VARCHAR2(1000);
20   L_LEDGER_WHERE           VARCHAR2(2000);
21   L_DAS_WHERE              VARCHAR2(2000);
22   ERR_IN_REP EXCEPTION;
23 
24 BEGIN
25 
26 ---------------------------------------------------------
27 -- INITIALIZE SRW.USER_EXIT
28 ---------------------------------------------------------
29 
30 BEGIN
31 --  SRW.USER_EXIT('FND SRWINIT');
32 
33   /*EXCEPTION
34   WHEN SRW.UNKNOWN_USER_EXIT THEN
35     SRW.MESSAGE(01,'FND SRWINIT USER EXIT IS UNKNOWN.');
36     RAISE;
37   WHEN SRW.USER_EXIT_FAILURE THEN
38     SRW.MESSAGE(02,'FND SRWINIT USER EXIT IS FAILED.');
39     RAISE;*/NULL;
40 END;
41 
42 SELECT
43 	 FND_DATE.CANONICAL_TO_DATE(P_START_DATE),
44   	 FND_DATE.CANONICAL_TO_DATE(P_END_DATE),
45 	 FND_NUMBER.CANONICAL_TO_NUMBER(P_LEDGER_ID),
46 	 FND_DATE.CANONICAL_TO_DATE(P_START_UPDATE_DATE),
47   	 FND_DATE.CANONICAL_TO_DATE(P_END_UPDATE_DATE)
48 --         FND_NUMBER.CANONICAL_TO_NUMBER(:P_DOC_ID),
49 --        FND_NUMBER.CANONICAL_TO_NUMBER(:P_DOC_VALUE),
50 --        FND_NUMBER.CANONICAL_TO_NUMBER(:P_AMOUNT_FROM),
51 --        FND_NUMBER.CANONICAL_TO_NUMBER(:P_AMOUNT_TO),
52 --        FND_NUMBER.CANONICAL_TO_NUMBER(:P_SUB_DOC_ID),
53 --        FND_NUMBER.CANONICAL_TO_NUMBER(:P_SUB_DOC_VALUE)
54 INTO
55      	H_START_DATE,
56       	H_END_DATE,
57 	H_SET_OF_BOOKS_ID,
58         H_START_UPDATE_DATE,
59       	H_END_UPDATE_DATE
60 --	:H_DOC_ID,
61 --	:H_DOC_VALUE,
62 --	:H_AMOUNT_FROM,
63 --	:H_AMOUNT_TO,
64 --	:H_SUB_DOC_ID,
65 --	:H_SUB_DOC_VALUE
66 FROM DUAL;
67 
68  /* GET ACCESS SET INFO */
69   BEGIN
70     SELECT NAME , CHART_OF_ACCOUNTS_ID
71     INTO   ACCESS_SET_NAME, CHART_OF_ACCOUNTS_ID
72     FROM   GL_ACCESS_SETS
73     WHERE  ACCESS_SET_ID = P_ACCESS_SET_ID;
74 
75   EXCEPTION
76     WHEN NO_DATA_FOUND THEN
77       T_ERRORBUFFER := GL_MESSAGE.GET_MESSAGE('GL_PLL_INVALID_DATA_ACCESS_SET', 'Y',
78                                               'DASID', TO_CHAR(P_ACCESS_SET_ID));
79   --    SRW.MESSAGE('00', T_ERRORBUFFER);
80     --  RAISE SRW.PROGRAM_ABORT;
81 
82     WHEN OTHERS THEN
83       T_ERRORBUFFER := SQLERRM;
84 --      SRW.MESSAGE('00', T_ERRORBUFFER);
85   --    RAISE SRW.PROGRAM_ABORT;
86   END;
87 
88  -- BUILD DATA ACCESS SECURITY WHERE CLAUSE
89   P_DAS_WHERE := GL_ACCESS_SET_SECURITY_PKG.GET_SECURITY_CLAUSE(
90                   P_ACCESS_SET_ID,
91                   'R',               -- FOR READ ACCESS
92                   'LEDGER_COLUMN',
93                   'LEDGER_ID',
94                   'GLH',     -- TABLE ALIAS FOR GL_JE_HEADERS
95                   'SEG_COLUMN',
96                   NULL,
97                   'CC',   -- TABLE ALIAS FOR GL_CODE_COMBINATIONS.
98                   NULL);
99 
100   L_DAS_WHERE := GL_ACCESS_SET_SECURITY_PKG.GET_SECURITY_CLAUSE(
101                   P_ACCESS_SET_ID,
102                   'R',               -- FOR READ ACCESS
103                   'LEDGER_COLUMN',
104                   'LEDGER_ID',
105                   'GLH2',     -- TABLE ALIAS FOR GL_JE_HEADERS
106                   'SEG_COLUMN',
107                   NULL,
108                   'GCC2',   -- TABLE ALIAS FOR GL_CODE_COMBINATIONS.
109                   NULL);
110 
111   IF (P_DAS_WHERE IS NOT NULL) THEN
112     P_DAS_WHERE := ' AND ' || P_DAS_WHERE;
113     L_DAS_WHERE := ' AND ' || L_DAS_WHERE;
114   END IF;
115 
116 --##############
117 
118   P_LEDGER_FROM := ' ';
119   P_LEDGER_WHERE := ' ';
120   L_LEDGER_FROM := ' ';
121   L_LEDGER_WHERE := ' ';
122   P_JOURNAL_WHERE_CLAUSE := ' ';
123   /* GET THE LEDGER INFO WHEN A LEDGER/LEDGER SET IS SELECTED BY THE USER*/
124 
125   IF P_LEDGER_ID IS NOT NULL THEN
126 
127 
128     /* GET INFORMATION OF LEDGER PARAMETER. */
129 
130     BEGIN
131       SELECT CURRENCY_CODE, OBJECT_TYPE_CODE
132       INTO   L_LEDGER_CURR,
133              L_LEDGER_TYPE
134       FROM   GL_LEDGERS
135       WHERE  LEDGER_ID = P_LEDGER_ID;
136     EXCEPTION
137       WHEN OTHERS THEN
138         T_ERRORBUFFER := SQLERRM;
139     --    SRW.MESSAGE('00', T_ERRORBUFFER);
140     --    RAISE SRW.PROGRAM_ABORT;
141     END;
142 
143     IF (L_LEDGER_TYPE = 'S') THEN  -- IT IS A LEDGER SET
144        L_LEDGER_FROM  := ', GL_LEDGER_SET_ASSIGNMENTS LS1';
145       P_LEDGER_FROM := ', GL_LEDGER_SET_ASSIGNMENTS LS';
146        L_LEDGER_WHERE := ' AND LS1.LEDGER_SET_ID = ' || TO_CHAR(P_LEDGER_ID) || ' AND ' ||
147                        'LGR1.LEDGER_ID = LS1.LEDGER_ID';
148       P_LEDGER_WHERE := ' AND LS.LEDGER_SET_ID = ' || TO_CHAR(P_LEDGER_ID) || ' AND ' ||
149                        'LGR.LEDGER_ID = LS.LEDGER_ID';
150     ELSE
151       P_LEDGER_FROM := ' ';
152       P_LEDGER_WHERE := ' AND LGR.LEDGER_ID = ' || TO_CHAR(P_LEDGER_ID);
153 
154       L_LEDGER_FROM := '';
155       L_LEDGER_WHERE := ' AND  LGR1.LEDGER_ID = ' || TO_CHAR(P_LEDGER_ID);
156     END IF;
157 
158   END IF; --IF :P_LEDGER_ID IS NOT NULL
159 
160 --###############
161 
162 
163   IF P_STATUS IS NOT NULL THEN
164 
165   IF (P_STATUS = 'E') THEN
166      P_POSTING_STATUS := ' AND '|| ' GLB.STATUS IN ' ||
167           '(SELECT LOOKUP_CODE FROM GL_LOOKUPS ' ||
168           'WHERE LOOKUP_TYPE = ''MJE_BATCH_STATUS'' '||
169           'AND LOOKUP_CODE NOT IN (''S'', ''I'', ''U'', ''P'')) ';
170      P_HEADER_POSTING_STATUS :=
171          ' AND GLH.JE_HEADER_ID = GLL.JE_HEADER_ID(+)
172           AND GLL.CODE_COMBINATION_ID = CC.CODE_COMBINATION_ID(+) ';
173 
174   ELSE
175    P_POSTING_STATUS := 'AND GLB.STATUS =  '''||P_STATUS||'''';
176    P_HEADER_POSTING_STATUS :=
177           'AND GLH.JE_HEADER_ID = GLL.JE_HEADER_ID
178            AND GLL.LEDGER_ID = LGR.LEDGER_ID
179            AND GLL.CODE_COMBINATION_ID = CC.CODE_COMBINATION_ID';
180 
181  END IF;
182 
183 ELSE
184    P_HEADER_POSTING_STATUS :=
185           'AND GLH.JE_HEADER_ID = GLL.JE_HEADER_ID
186            AND GLL.LEDGER_ID = LGR.LEDGER_ID
187            AND GLL.CODE_COMBINATION_ID = CC.CODE_COMBINATION_ID';
188    P_POSTING_STATUS := ' ';
189 END IF;
190 
191  IF (P_ACTUAL_FLAG IS NOT NULL) THEN
192 
193    P_ACTUAL_TYPE_WHERE := ' AND GLH.ACTUAL_FLAG = '''||P_ACTUAL_FLAG||'''';
194  ELSE
195    P_ACTUAL_TYPE_WHERE := ' ';
196 
197  END IF;
198 
199 
200 -----------------------------------------------------------
201 -- FLEXFIELDS
202 -- FILL OUT ACCT_SEGMENT_NAME, BAL_SEGMENT_NAME, SECONDARY_SEG
203 -----------------------------------------------------------
204 
205 BEGIN
206 
207     -- SRW.REFERENCE(:CHART_OF_ACCOUNTS_ID);
208 
209      /*SRW.USER_EXIT('FND FLEXSQL CODE="GL#"
210                NUM=":CHART_OF_ACCOUNTS_ID"
211                APPL_SHORT_NAME="SQLGL"
212                OUTPUT=":SELECT_ACCOUNT"
213                MODE="SELECT"
214                DISPLAY="ALL"
215                TABLEALIAS="CC"');
216 
217      SRW.USER_EXIT('FND FLEXSQL CODE="GL#"
218                NUM=":CHART_OF_ACCOUNTS_ID"
219                APPL_SHORT_NAME="SQLGL"
220                OUTPUT=":SELECT_ACCT_SEGMENT"
221                MODE="SELECT"
222                DISPLAY="GL_ACCOUNT"
223 	       IDISPLAY="GL_ACCOUNT"
224                TABLEALIAS="CC"');
225 
226      SRW.USER_EXIT('FND FLEXSQL CODE="GL#"
227                NUM=":CHART_OF_ACCOUNTS_ID"
228                APPL_SHORT_NAME="SQLGL"
229                OUTPUT=":SELECT_BAL_SEGMENT"
230                MODE="SELECT"
231                DISPLAY="GL_BALANCING"
232                TABLEALIAS="CC"');
233 
234      SRW.USER_EXIT('FND FLEXSQL CODE="GL#"
235                NUM=":CHART_OF_ACCOUNTS_ID"
236                APPL_SHORT_NAME="SQLGL"
237                OUTPUT=":SELECT_COST_CTR_SEGMENT"
238                MODE="SELECT"
239                DISPLAY="FA_COST_CTR"
240 	       IDISPLAY="FA_COST_CTR"
241                TABLEALIAS="CC"');*/
242 
243 
244  IF (P_SEC_SEG_NUM IS NOT NULL) THEN
245 
246 
247     /* SRW.USER_EXIT('FND FLEXSQL CODE="GL#"
248                  NUM=":CHART_OF_ACCOUNTS_ID"
249                  APPL_SHORT_NAME="SQLGL"
250                  OUTPUT=":SELECT_SECONDARY_SEGMENT"
251                  MODE="SELECT"
252                  DISPLAY="GL_SECONDARY_TRACKING"
253                  TABLEALIAS="CC"'); */
254 
255         SELECT 'CC.'||APPLICATION_COLUMN_NAME , FORM_LEFT_PROMPT
256         INTO   SELECT_SECONDARY_SEGMENT, PARAM_SEC_SEG_NAME
257         FROM   FND_ID_FLEX_SEGMENTS_VL S
258         WHERE  S.ID_FLEX_CODE = 'GL#'
259         AND    S.ID_FLEX_NUM = CHART_OF_ACCOUNTS_ID
260         AND    S.ENABLED_FLAG = 'Y'
261         AND    S.SEGMENT_NUM = P_SEC_SEG_NUM;
262 
263 
264 
265 END IF;
266 
267 
268 
269 IF (P_BAL_SEG_VAL IS NOT NULL) THEN
270   /*SRW.USER_EXIT('FND FLEXSQL CODE="GL#"
271                  NUM=":CHART_OF_ACCOUNTS_ID"
272                  APPL_SHORT_NAME="SQLGL"
273                  OUTPUT=":P_BAL_WHERE"
274                  MODE="WHERE"
275                  DISPLAY="GL_BALANCING"
276                  OPERATOR = "="
277                  OPERAND1=":P_BAL_SEG_VAL"
278                 TABLEALIAS="CC"');*/
279 
280      P_BAL_WHERE := ' AND '||P_BAL_WHERE;
281 
282 
283  -- ' AND '||:P_BAL_WHERE|| ' = '''||:P_BAL_SEG_VAL||'''';
284 END IF;
285 
286 
287 --      IF :P_SEC_SEG_NUM IS NULL THEN
288 --          :P_SEC_SEGMENT_WHERE:= 'A';
289 --      END IF;
290 
291 
292  /* THE FOLLOWING IS NOT USED ANY WHERE IN THE UNIT TESTING
293    SRW.USER_EXIT('FND FLEXSQL CODE="GL#"
294                  NUM=":CHART_OF_ACCOUNTS_ID"
295                  APPL_SHORT_NAME="SQLGL"
296                  OUTPUT=":P_ACC_SEGMENT_SELECT"
297                  MODE="SELECT"
298                  DISPLAY="ALL"
299                  TABLEALIAS="GCC"');
300 */
301 
302     IF P_CURRENCY IS NOT NULL THEN
303         IF P_CURRENCY = 'STAT' THEN
304           P_CURRENCY_WHERE := 'AND GLH.CURRENCY_CODE = ''STAT'' ';
305        ELSE
306           P_CURRENCY_WHERE := 'AND GLH.CURRENCY_CODE <> ''STAT'' ';
307        END IF;
308 
309    END IF;
310 
311    -- SOURCE PARAMETER
312    IF P_SOURCE IS NOT NULL THEN
313           P_SOURCE_WHERE :=  'AND GLH.JE_SOURCE = '''||P_SOURCE||'''';
314     ELSE
315         P_SOURCE_WHERE := ' ';
316    END IF;
317 
318    -- CATEGORY PARAMATER
319    IF P_CATEGORY IS NOT NULL THEN
320         P_CATEGORY_WHERE := 'AND GLH.JE_CATEGORY = '''||P_CATEGORY||'''';
321     ELSE
322       P_CATEGORY_WHERE := ' ';
323   END IF;
324 
325    --  BATCH NAME PARAMETER
326    IF P_BATCH_NAME IS NOT NULL THEN
327         P_BATCH_WHERE := 'AND GLB.NAME = '''||P_BATCH_NAME||'''';
328    ELSE
329        P_BATCH_WHERE := ' ';
330    END IF;
331 
332    IF P_DOC_ID IS NOT NULL THEN
333       P_DOC_ID_WHERE := 'AND GLH.DOC_SEQUENCE_ID = '''||P_DOC_ID||'''';
334    ELSE
335      P_DOC_ID_WHERE := ' ';
336    END IF;
337 
338    P_DOC_VAL_WHERE :=  ' ';
339    IF ((P_DOC_VALUE IS NOT NULL)
340         OR (P_START_DOC_VALUE IS NOT NULL)
341            OR (P_END_DOC_VALUE IS NOT NULL)) THEN
342 
343 
344     IF P_DOC_VALUE IS NOT NULL THEN
345        P_DOC_VAL_WHERE := ' AND GLH.DOC_SEQUENCE_VALUE = '||P_DOC_VALUE;
346     ELSE
347        P_DOC_VAL_WHERE := ' ';
348     END IF;
349 
350    IF   (P_START_DOC_VALUE IS NULL)
351           AND  (P_END_DOC_VALUE IS NOT NULL) THEN
352       P_DOC_VAL_WHERE :=  P_DOC_VAL_WHERE || ' AND GLH.DOC_SEQUENCE_VALUE <= '''||P_END_DOC_VALUE ||'''';
353 
354    ELSIF  (P_START_DOC_VALUE IS NOT NULL)
355             AND (P_END_DOC_VALUE IS NULL) THEN
356       P_DOC_VAL_WHERE :=  P_DOC_VAL_WHERE || ' AND GLH.DOC_SEQUENCE_VALUE >= '''||P_START_DOC_VALUE||'''';
357 
358    ELSIF  (P_START_DOC_VALUE IS NOT NULL)
359             AND (P_END_DOC_VALUE IS NOT NULL) THEN
360          P_DOC_VAL_WHERE :=  P_DOC_VAL_WHERE ||' AND GLH.DOC_SEQUENCE_VALUE BETWEEN '''
361                               ||P_START_DOC_VALUE||''' AND '''||P_END_DOC_VALUE||'''';
362    END IF;
363 
364   END IF;
365 
366 
367 
368 
369    -- SUBLEDGER DOC SEQ ID AND VALUES.
370 
371    IF P_SUB_DOC_ID IS NOT NULL THEN
372       P_SUB_DOC_ID_WHERE := ' AND GLL.SUBLEDGER_DOC_SEQUENCE_ID = '||P_SUB_DOC_ID;
373    ELSE
374       P_SUB_DOC_ID_WHERE := ' ';
375    END IF;
376 
377    IF P_SUB_DOC_VALUE IS NOT NULL THEN
378       P_SUB_DOC_VAL_WHERE := ' AND GLL.SUBLEDGER_DOC_SEQUENCE_VALUE = '''||P_SUB_DOC_VALUE||'''';
379     ELSE
380       P_SUB_DOC_VAL_WHERE := ' ';
381    END IF;
382 
383 
384    -- DO NOT SELECT ZERO JOURANL AMOUNTS LINE AMOUNTS.
385 
386    IF NVL(P_STATUS, 'P') <> 'E' THEN
387       P_NOT_ZERO_LINE_WHERE:= ' AND ((NVL(GLL.ACCOUNTED_DR, 0) <> 0) OR (NVL(GLL.ACCOUNTED_CR, 0) <> 0)) ';
388    ELSE
389       P_NOT_ZERO_LINE_WHERE := ' ';
390    END IF;
391 
392    -- CONTRA ACCOUNT
393 
394     P_CONTRA_ACCOUNT_WHERE := ' ';
395     IF P_CONTRA_ACCT IS NOT NULL THEN
396       --SRW.REFERENCE(:CHART_OF_ACCOUNTS_ID);
397       /*SRW.USER_EXIT('FND FLEXSQL CODE="GL#"
398                NUM=":CHART_OF_ACCOUNTS_ID"
399                APPL_SHORT_NAME="SQLGL"
400                OUTPUT=":P_ACC_SEGMENT_WHERE"
401                MODE="WHERE"
402                DISPLAY="ALL"
403 	       OPERATOR="BETWEEN"
404 	       OPERAND1=:P_AFF_FROM
405 	       OPERAND2=:P_AFF_TO
406                TABLEALIAS="CC"'); */
407 
408      IF (P_ACC_SEGMENT_WHERE IS NOT NULL) THEN
409         P_ACC_SEGMENT_WHERE := ' AND ' ||P_ACC_SEGMENT_WHERE;
410      END IF;
411 
412     --WHEN THE USER DEFINED THE CONTRA_ACCOUNT IN THE PARAMETER, THE REPORT SELECTS THE
413     -- JOURNALS WHICH HAVE THE SAME SUBLEDGER_DOC_SEQUENCE_ID AND INCLUDE AT LEAST ONE
414     -- MATCHED LINE.
415 
416 --      SRW.REFERENCE(:CHART_OF_ACCOUNTS_ID);
417   /*    SRW.USER_EXIT('FND FLEXSQL CODE="GL#"
418                     NUM=":CHART_OF_ACCOUNTS_ID"
419                     APPL_SHORT_NAME="SQLGL"
420                     OUTPUT=":P_CONTRA_ACCOUNT"
421                     MODE="WHERE"
422                     DISPLAY="GL_ACCOUNT"
423 	            OPERATOR = "="
424                     OPERAND1 = ":P_CONTRA_ACCT"
425                     TABLEALIAS="GCC2"');*/
426 
427 
428 
429        P_CONTRA_ACCOUNT_WHERE := ' AND EXISTS (SELECT GJL2.JE_LINE_NUM
430                                      FROM GL_JE_LINES GJL2, GL_CODE_COMBINATIONS GCC2
431        WHERE
432        GJL2.JE_HEADER_ID = GLH.JE_HEADER_ID AND
433        GJL2.CODE_COMBINATION_ID = GCC2.CODE_COMBINATION_ID AND
434        ((GJL2.SUBLEDGER_DOC_SEQUENCE_ID = GLL.SUBLEDGER_DOC_SEQUENCE_ID AND
435          GJL2.SUBLEDGER_DOC_SEQUENCE_VALUE = GLL.SUBLEDGER_DOC_SEQUENCE_VALUE) OR
436         (GLL.SUBLEDGER_DOC_SEQUENCE_ID IS NULL AND GJL2.SUBLEDGER_DOC_SEQUENCE_ID IS NULL AND
437          GJL2.SUBLEDGER_DOC_SEQUENCE_VALUE IS NULL)) AND
438        ((GLL.ACCOUNTED_DR IS NOT NULL AND GLL.ACCOUNTED_DR<> 0 AND GJL2.ACCOUNTED_CR IS NOT NULL
439          AND GJL2.ACCOUNTED_CR <> 0) OR
440         (GLL.ACCOUNTED_CR IS NOT NULL AND GLL.ACCOUNTED_CR<> 0 AND GJL2.ACCOUNTED_DR IS NOT NULL
441          AND GJL2.ACCOUNTED_DR <> 0)) AND '||P_CONTRA_ACCOUNT|| ' )';
442     END IF;
443 
444 
445 
446 
447    IF (P_START_UPDATE_DATE IS NOT NULL OR P_END_UPDATE_DATE IS NOT NULL)  THEN
448       IF P_START_UPDATE_DATE IS NULL THEN
449          P_JOURNAL_UPD_DATE_WHERE :=
450   ' AND TRUNC(GLH.LAST_UPDATE_DATE) <= '''|| H_END_UPDATE_DATE ||'''';
451       ELSIF P_END_UPDATE_DATE IS NULL THEN
452    P_JOURNAL_UPD_DATE_WHERE :=  ' AND TRUNC(GLH.LAST_UPDATE_DATE) >= '''|| H_START_UPDATE_DATE ||'''';
453        ELSIF  ((P_START_UPDATE_DATE IS NOT NULL) AND (P_END_UPDATE_DATE IS NOT NULL)) THEN
454          P_JOURNAL_UPD_DATE_WHERE := ' AND TRUNC(GLH.LAST_UPDATE_DATE)  BETWEEN ''' || H_START_UPDATE_DATE || ''' AND ''' || H_END_UPDATE_DATE || '''';
455       END IF;
456    ELSE
457      P_JOURNAL_UPD_DATE_WHERE := ' ';
458   END IF;
459 
460 
461   IF(P_LAST_UPDATED_BY IS NOT NULL) THEN
462 
463     P_JOURNAL_LAST_UPD_WHERE := ' AND GLH.LAST_UPDATED_BY =  '||P_LAST_UPDATED_BY;
464   ELSE
465     P_JOURNAL_LAST_UPD_WHERE := ' ';
466 
467   END IF;
468 ---*****************************************--------
469 
470 
471 IF NVL(P_JOURNALS_LINE_FLAG,'L') = 'J' THEN
472 
473     IF NVL(P_STATUS,'U')<> 'P' THEN
474          P_USE_DATE_COL := 'GLH2.DEFAULT_EFFECTIVE_DATE';
475    ELSIF P_STATUS = 'P' THEN
476          P_USE_DATE_COL := 'GLB2.POSTED_DATE';
477    END IF;
478 
479 
480    IF P_USE_DATE_COL = 'GLH2.DEFAULT_EFFECTIVE_DATE' AND
481       (P_START_DATE IS NOT NULL OR P_END_DATE IS NOT NULL) THEN
482       -- SUB QUERY START
483       P_JOURNAL_DATE_WHERE_2 := ' AND GLH2.PERIOD_NAME IN (SELECT PERIOD_NAME FROM GL_PERIOD_STATUSES PS
484            WHERE PS.APPLICATION_ID = 101 AND PS.LEDGER_ID =  LGR1.LEDGER_ID ';
485       /* BUGFIX - 3804059 AND 4043565 CHANGED VARIABLES TO BIND */
486       IF P_START_DATE IS NULL THEN
487          P_JOURNAL_DATE_WHERE_2 := P_JOURNAL_DATE_WHERE_2 ||' AND ( PS.START_DATE <= ''' || H_END_DATE || '''  )';
488       ELSIF P_END_DATE IS NULL THEN
489          P_JOURNAL_DATE_WHERE_2 := P_JOURNAL_DATE_WHERE_2 ||' AND (PS.END_DATE >= ''' || H_START_DATE || '''  )';
490       ELSE
491          P_JOURNAL_DATE_WHERE_2 := P_JOURNAL_DATE_WHERE_2 ||' AND (PS.END_DATE >= ''' || H_START_DATE ||''' AND PS.START_DATE <= ''' || H_END_DATE || ''')';
492       END IF;
493       P_JOURNAL_DATE_WHERE_2 := P_JOURNAL_DATE_WHERE_2 ||')';
494       -- SUB QUERY END
495 
496    ELSIF P_USE_DATE_COL = 'GLL2.EFFECTIVE_DATE' AND --:P_JOURNAL_DATE_WHERE_2 IS NOT NULL THEN
497          (P_START_DATE IS NOT NULL OR P_END_DATE IS NOT NULL) THEN
498 
499       -- SUB QUERY START
500       P_JOURNAL_DATE_WHERE_2 := ' AND GLL2.PERIOD_NAME IN (SELECT PERIOD_NAME FROM GL_PERIOD_STATUSES PS
501             WHERE PS.APPLICATION_ID = 101 AND PS.SET_OF_BOOKS_ID = ' || P_LEDGER_ID || ' ';
502    -- BUGFIX - 3804059 AND 4043565 CHANGED VARIABLES TO BIND
503       IF P_START_DATE IS NULL THEN
504          P_JOURNAL_DATE_WHERE_2 := P_JOURNAL_DATE_WHERE_2 ||' AND ( PS.START_DATE <= ''' || H_END_DATE || ''' )';
505       ELSIF P_END_DATE IS NULL THEN
506          P_JOURNAL_DATE_WHERE_2 := P_JOURNAL_DATE_WHERE_2 ||' AND (PS.END_DATE >= ''' || H_START_DATE || '''  )';
507       ELSE
508          P_JOURNAL_DATE_WHERE_2 := P_JOURNAL_DATE_WHERE_2 ||' AND (PS.END_DATE >= ''' || H_START_DATE || ''' AND PS.START_DATE <= ''' || H_END_DATE ||''')';
509       END IF;
510       P_JOURNAL_DATE_WHERE_2 := P_JOURNAL_DATE_WHERE_2 ||')';
511       -- SUB QUERY END
512 
513  -- BUGFIX - 3804059 AND 4043565 CHANGED VARIABLES TO BIND
514  /*  ELSIF (:P_START_DATE IS NULL AND :P_END_DATE IS NULL) THEN
515       :P_JOURNAL_DATE_WHERE_2 := ' AND ( ' ||:P_START_DATE || ' IS NULL AND ' || :H_END_DATE || ' IS NULL) ';
516 
517    ELSIF ((:P_START_DATE IS  NOT NULL) AND (:P_END_DATE IS NOT NULL))THEN
518       :P_JOURNAL_DATE_WHERE_2 := ' AND (( ' || :H_START_DATE || ' IS NOT NULL OR ' || :H_END_DATE || ' IS NOT NULL)) ';
519 */
520    END IF;
521 
522  -- BUGFIX - 3804059 AND 4043565 CHANGE VARIABLES TO BIND
523    IF ((P_START_DATE IS  NOT NULL) OR (P_END_DATE IS NOT NULL))THEN
524     IF P_START_DATE IS NULL THEN
525       P_JOURNAL_DATE_WHERE_2 := P_JOURNAL_DATE_WHERE_2 ||' AND TRUNC('|| P_USE_DATE_COL ||') <= ''' || H_END_DATE||'''' ;
526     ELSIF P_END_DATE IS NULL THEN
527       P_JOURNAL_DATE_WHERE_2 := P_JOURNAL_DATE_WHERE_2 ||' AND TRUNC('|| P_USE_DATE_COL ||') >= ''' || H_START_DATE||'''';
528     ELSIF ((P_START_DATE IS  NOT NULL) AND (P_END_DATE IS NOT NULL)) THEN
529       P_JOURNAL_DATE_WHERE_2 := P_JOURNAL_DATE_WHERE_2 ||' AND TRUNC('|| P_USE_DATE_COL ||') BETWEEN '''|| H_START_DATE || ''' AND '''|| H_END_DATE || '''';
530     END IF;
531    END IF;
532 
533 
534 ELSE -- LINE LEVEL REQUEST
535 
536 
537    IF P_PERIOD_NAME IS NOT NULL THEN
538 
539      --   BUGFIX - 3804059 AND 4043565 CHANGE TO BIND VARIABLE
540 
541       P_PERIOD_WHERE := 'AND GLB.DEFAULT_PERIOD_NAME = '''||P_PERIOD_NAME||'''' ;
542 
543 
544    ELSE
545      -- BUGFIX - 3804059 AND 4043565 CHANGE TO BIND VARIABLE
546       P_PERIOD_WHERE := ' ';
547      IF P_REPORT_NAME = 'CONTRA' OR  P_REPORT_NAME = 'VOUCHER' OR
548          (P_JOURNALS_LINE_FLAG IS NOT NULL AND NVL(P_STATUS,'U') <> 'P') THEN
549 
550          -- USE GLL.EFFECTIVE_DATE FOR "ACCOUNT ANALYSIS - CONTRA ACCOUNT" AND "JOURNALS VOUCHER"
551 
552          P_USE_DATE_COL := 'GLL.EFFECTIVE_DATE';
553 
554      ELSIF P_STATUS = 'P' THEN
555 
556         P_USE_DATE_COL := 'GLB.POSTED_DATE';
557 
558      ELSE
559 
560         P_USE_DATE_COL := 'GLH.DEFAULT_EFFECTIVE_DATE';
561 
562      END IF;
563 
564      --
565       -- PERFORMANCE ENHANCEMENT BOOST
566       --
567      IF (P_USE_DATE_COL = 'GLH.DEFAULT_EFFECTIVE_DATE' OR
568           P_USE_DATE_COL = 'NVL(GLL.EFFECTIVE_DATE, GLH.DEFAULT_EFFECTIVE_DATE)') AND
569            (P_START_DATE IS NOT NULL OR P_END_DATE IS NOT NULL) THEN
570 
571       /*   -- SUB QUERY START
572          :P_JOURNAL_DATE_WHERE := ' AND GLH.PERIOD_NAME IN (SELECT + CARDINALITY(PS,2 )  PERIOD_NAME
573                FROM GL_PERIOD_STATUSES PS
574               WHERE PS.APPLICATION_ID = 101 AND PS.LEDGER_ID = LGR.LEDGER_ID  ';
575       */
576        -- BUGFIX - 3804059 AND 4043565 CHANGES VARIABLES TO BIND
577          IF P_START_DATE IS NULL THEN
578             P_JOURNAL_DATE_WHERE_3 := ' AND ( PS.START_DATE <= ''' || H_END_DATE ||''' )';
579          ELSIF P_END_DATE IS NULL THEN
580             P_JOURNAL_DATE_WHERE_3 := ' AND (PS.END_DATE >= ''' || H_START_DATE || '''  )';
581          ELSE
582             P_JOURNAL_DATE_WHERE_3 := ' AND (PS.END_DATE >= ''' || H_START_DATE || ''' AND PS.START_DATE <= ''' || H_END_DATE || ''' )';
583          END IF;
584         -- :P_JOURNAL_DATE_WHERE := P_JOURNAL_DATE_WHERE ||')';
585         -- SUB QUERY END
586 
587       ELSIF NVL(P_USE_DATE_COL,'NULL') = 'GLL.EFFECTIVE_DATE' AND
588            (P_START_DATE IS NOT NULL OR P_END_DATE IS NOT NULL) THEN
589 
590          -- SUB QUERY START
591          P_JOURNAL_DATE_WHERE := ' AND GLL.PERIOD_NAME IN (SELECT /*+ CARDINAILTY(PS,2 ) */ PERIOD_NAME
592                FROM GL_PERIOD_STATUSES PS
593                 WHERE PS.APPLICATION_ID = 101 AND PS.LEDGER_ID = LGR.LEDGER_ID  ';
594 
595        -- BUGFIX - 3804059 AND 4043565 CHANGES VARIABLES TO BIND
596          IF P_START_DATE IS NULL THEN
597             P_JOURNAL_DATE_WHERE := P_JOURNAL_DATE_WHERE ||' AND ( PS.START_DATE <= ''' || H_END_DATE || ''' )';
598          ELSIF P_END_DATE IS NULL THEN
599             P_JOURNAL_DATE_WHERE := P_JOURNAL_DATE_WHERE ||' AND (PS.END_DATE >= ''' || H_START_DATE || ''' )';
600 
601          ELSE
602             P_JOURNAL_DATE_WHERE := P_JOURNAL_DATE_WHERE ||' AND (PS.END_DATE >= ''' || H_START_DATE ||
603                                                                 ''' AND PS.START_DATE <= ''' || H_END_DATE || ''' )';
604 
605          END IF;
606          P_JOURNAL_DATE_WHERE := P_JOURNAL_DATE_WHERE ||')';
607           -- SUB QUERY END
608 
609      /* ELSIF ((P_START_DATE IS NOT NULL) AND (P_END_DATE IS NOT NULL)) THEN
610          P_JOURNAL_DATE_WHERE := ' ( AND (''' || P_START_DATE || ''' IS NOT NULL OR '''|| P_END_DATE || ''' IS NOT NULL)) '; */
611 
612       END IF;
613 
614      /* BUGFIX - 3804059 AND 4043565 CHANGES VARIABLES TO BIND */
615    IF (P_START_DATE IS NOT NULL OR P_END_DATE IS NOT NULL)  THEN
616       IF P_START_DATE IS NULL THEN
617          P_JOURNAL_DATE_WHERE := P_JOURNAL_DATE_WHERE ||' AND TRUNC('|| P_USE_DATE_COL ||') <= ''' || H_END_DATE || '''';
618       ELSIF P_END_DATE IS NULL THEN
619          P_JOURNAL_DATE_WHERE := P_JOURNAL_DATE_WHERE ||' AND TRUNC('|| P_USE_DATE_COL ||') >= ''' || H_START_DATE || '''';
620       ELSIF  ((P_START_DATE IS NOT NULL) AND (P_END_DATE IS NOT NULL)) THEN
621          P_JOURNAL_DATE_WHERE := P_JOURNAL_DATE_WHERE ||' AND TRUNC('|| P_USE_DATE_COL ||') BETWEEN ''' || H_START_DATE || ''' AND ''' || H_END_DATE || '''';
622       END IF;
623    ELSE
624      P_JOURNAL_DATE_WHERE := ' ';
625   END IF;
626 
627 
628    END IF;
629 
630 
631 END IF;
632 
633 ---*******************************************---------
634 
635 
636 IF NVL(P_JOURNALS_LINE_FLAG,'L') = 'J' THEN   -- SELECTION BY JOURNAL BASE
637    AMOUNT_WHERE:= NULL;
638    AFF_WHERE:= NULL;
639 
640 
641    IF P_USE_DATE_COL = 'GLB2.POSTED_DATE' OR P_USE_DATE_COL = 'GLH2.DEFAULT_EFFECTIVE_DATE' THEN
642       JOURNAL_FROM:=' GL_JE_BATCHES GLB2,  ';
643 
644       JOURNAL_WHERE:= ' AND GLB2.JE_BATCH_ID = GLH2.JE_BATCH_ID  ';
645    ELSE
646       JOURNAL_FROM:= NULL;
647       JOURNAL_WHERE:= NULL;
648    END IF;
649 
650    IF P_AMOUNT_FROM IS NOT NULL OR P_AMOUNT_TO IS NOT NULL THEN
651 
652       IF P_AMT_FLAG = 'DR' THEN
653          AMOUNT_WHERE2:= ' AND GLL2.ACCOUNTED_DR <> 0 AND GLL2.ACCOUNTED_DR ';
654       ELSIF P_AMT_FLAG = 'CR' THEN
655          AMOUNT_WHERE2:= ' AND GLL2.ACCOUNTED_CR <> 0 AND GLL2.ACCOUNTED_CR ';
656       ELSE
657          AMOUNT_WHERE2:= ' AND ((GLL2.ACCOUNTED_DR <> 0 AND GLL2.ACCOUNTED_DR ';
658       END IF;
659 
660     -- BUGFIX - 3804059 AND 4043565
661       IF P_AMOUNT_FROM IS NOT NULL AND P_AMOUNT_TO IS NULL THEN
662          AMOUNT_WHERE2:= AMOUNT_WHERE2 || ' >= '|| P_AMOUNT_FROM ||' ';
663       ELSIF P_AMOUNT_FROM IS NULL AND P_AMOUNT_TO IS NOT NULL THEN
664          AMOUNT_WHERE2:=  AMOUNT_WHERE2 || ' <= '|| P_AMOUNT_TO||'  ';
665       ELSIF (P_AMOUNT_FROM IS NOT NULL) AND (P_AMOUNT_TO IS NOT NULL) THEN
666          AMOUNT_WHERE2:= AMOUNT_WHERE2 || ' BETWEEN '||P_AMOUNT_FROM ||' AND '|| P_AMOUNT_TO||' ';
667       END IF;
668 
669     -- BUGFIX - 3804059 AND 4043565 CHANGES VARIABLES TO BIND
670       IF P_AMT_FLAG IS NULL THEN
671          IF P_AMOUNT_FROM IS NOT NULL AND P_AMOUNT_TO IS NULL THEN
672             AMOUNT_WHERE2:= AMOUNT_WHERE2 || ') OR (GLL2.ACCOUNTED_CR <> 0 AND GLL2.ACCOUNTED_CR ';
673             AMOUNT_WHERE2:= AMOUNT_WHERE2 || ' >= '||P_AMOUNT_FROM || '))';
674          ELSIF P_AMOUNT_FROM IS NULL AND P_AMOUNT_TO IS NOT NULL THEN
675             AMOUNT_WHERE2:= AMOUNT_WHERE2 || ') OR (GLL2.ACCOUNTED_CR <> 0 AND GLL2.ACCOUNTED_CR ';
676             AMOUNT_WHERE2:= AMOUNT_WHERE2 || ' <= '||P_AMOUNT_TO|| ' ))';
677          ELSIF ((P_AMOUNT_FROM IS  NOT NULL) AND (P_AMOUNT_TO IS NOT NULL)) THEN
678             AMOUNT_WHERE2:= AMOUNT_WHERE2 || ') OR (GLL2.ACCOUNTED_CR <> 0 AND GLL2.ACCOUNTED_CR ';
679             AMOUNT_WHERE2:= AMOUNT_WHERE2 || ' BETWEEN '|| P_AMOUNT_FROM ||' AND '|| P_AMOUNT_TO ||' ))';
680          END IF;
681      /*  ELSIF (:P_AMOUNT_FROM IS NOT NULL AND
682             AMOUNT_WHERE2:= AMOUNT_WHERE2 || ' AND ('||:P_AMOUNT_FROM ||' IS NOT NULL OR '||:P_AMOUNT_TO ||' IS NOT NULL) ';*/
683       END IF;
684 
685    END IF;
686 
687  -- BUGFIX - 3804059 AND 4043565 CHANGES VARIABLES TO BIND
688    IF P_AFF_FROM IS NOT NULL AND P_AFF_TO IS NOT NULL THEN
689 
690 
691     /*  SRW.REFERENCE(:CHART_OF_ACCOUNTS_ID);
692       SRW.USER_EXIT('FND FLEXSQL CODE="GL#"
693                NUM=":CHART_OF_ACCOUNTS_ID"
694                APPL_SHORT_NAME="SQLGL"
695                OUTPUT=":P_AFF_WHERE_JRL"
696                MODE="WHERE"
697                DISPLAY="ALL"
698 	       OPERATOR="BETWEEN"
699 	       OPERAND1=:P_AFF_FROM
700 	       OPERAND2=:P_AFF_TO
701                TABLEALIAS="GCC3"'); */
702 
703 
704 	IF (P_AFF_WHERE_JRL IS NOT NULL) THEN
705 	 P_AFF_WHERE_JRL := ' AND '||P_AFF_WHERE_JRL;
706 	END IF;
707 
708 
709 
710         END IF;
711 
712    P_JOURNAL_FROM_CLAUSE:= ', (SELECT DISTINCT GLL2.JE_HEADER_ID JE_HEADER_ID,
713         GLL2.SUBLEDGER_DOC_SEQUENCE_ID SUB_DOC_SEQ_ID,
714         GLL2.SUBLEDGER_DOC_SEQUENCE_VALUE SUB_DOC_SEQ_VALUE
715    FROM ' || JOURNAL_FROM ||
716 '         GL_LEDGERS   LGR1,
717 	  GL_JE_LINES GLL2,
718           GL_JE_HEADERS GLH2,
719           GL_CODE_COMBINATIONS GCC3 '||L_LEDGER_FROM||'
720   WHERE   LGR1.LEDGER_ID = GLH2.LEDGER_ID
721         '|| JOURNAL_WHERE ||'
722         '||L_LEDGER_WHERE||'
723         '|| P_JOURNAL_DATE_WHERE_2 || '
724         '|| AMOUNT_WHERE2 || '
725         '|| P_AFF_WHERE_JRL ||'
726         '|| L_DAS_WHERE||
727 '   AND GLL2.JE_HEADER_ID = GLH2.JE_HEADER_ID
728     AND GLH2.LEDGER_ID = GLL2.LEDGER_ID
729     AND GLL2.CODE_COMBINATION_ID = GCC3.CODE_COMBINATION_ID
730     AND (NVL(GLL2.ACCOUNTED_DR, 0) <> 0 OR NVL(GLL2.ACCOUNTED_CR, 0) <> 0 ))  SUB_TABLE
731 ';
732 
733    P_JOURNAL_WHERE_CLAUSE:=' AND SUB_TABLE.JE_HEADER_ID = GLL.JE_HEADER_ID
734       AND (SUB_TABLE.SUB_DOC_SEQ_ID IS NULL OR
735            SUB_TABLE.SUB_DOC_SEQ_ID = GLL.SUBLEDGER_DOC_SEQUENCE_ID)
736       AND (SUB_TABLE.SUB_DOC_SEQ_VALUE IS NULL OR
737            SUB_TABLE.SUB_DOC_SEQ_VALUE = GLL.SUBLEDGER_DOC_SEQUENCE_VALUE)';
738 
739 
740 
741 ELSE   -- SELECTION BY LINE BASE
742 
743    P_JOURNAL_FROM_CLAUSE:= ' ';
744 
745   --  BUGFIX - 3804059 AND 4043565 CHANGES VARIABLE TO BIND
746 
747    IF P_AFF_FROM IS NOT NULL AND P_AFF_TO IS NOT NULL THEN
748 
749     /*   SRW.REFERENCE(:CHART_OF_ACCOUNTS_ID);
750        SRW.USER_EXIT('FND FLEXSQL CODE="GL#"
751                  NUM=":CHART_OF_ACCOUNTS_ID"
752                  APPL_SHORT_NAME="SQLGL"
753                  OUTPUT=":P_AFF_WHERE"
754                  MODE="WHERE"
755                  DISPLAY="ALL"
756 	         OPERATOR="BETWEEN"
757 	         OPERAND1=:P_AFF_FROM
758 	         OPERAND2=:P_AFF_TO
759                  TABLEALIAS="CC"');*/
760 
761   IF (P_AFF_WHERE IS NOT NULL) THEN
762          P_AFF_WHERE := ' AND '||P_AFF_WHERE;
763    END IF;
764 
765    END IF;
766 
767 
768    IF (P_AMOUNT_FROM IS NOT NULL OR P_AMOUNT_TO IS NOT NULL) THEN
769 
770       IF P_AMT_FLAG = 'DR' THEN
771          AMOUNT_WHERE:= ' AND GLL.ACCOUNTED_DR <> 0 AND GLL.ACCOUNTED_DR ';
772       ELSIF P_AMT_FLAG = 'CR' THEN
773          AMOUNT_WHERE:= ' AND GLL.ACCOUNTED_CR <> 0 AND GLL.ACCOUNTED_CR ';
774       ELSE
775          AMOUNT_WHERE:= ' AND ((GLL.ACCOUNTED_DR <> 0 AND GLL.ACCOUNTED_DR ';
776       END IF;
777 
778       IF P_AMOUNT_FROM IS NOT NULL AND P_AMOUNT_TO IS NULL THEN
779          AMOUNT_WHERE:= AMOUNT_WHERE || ' >= '|| P_AMOUNT_FROM;
780       ELSIF P_AMOUNT_FROM IS NULL AND P_AMOUNT_TO IS NOT NULL THEN
781          AMOUNT_WHERE:= AMOUNT_WHERE || ' <= '||P_AMOUNT_TO;
782       ELSE
783          AMOUNT_WHERE:= AMOUNT_WHERE || ' BETWEEN ' || P_AMOUNT_FROM ||' AND '|| P_AMOUNT_TO ||' ';
784       END IF;
785 
786     -- BUGFIX - 3804059 AND 4043565 CHANGES VARIABLES TO BIND
787       IF P_AMT_FLAG IS NULL THEN
788          IF P_AMOUNT_FROM IS NOT NULL AND P_AMOUNT_TO IS NULL THEN
789             AMOUNT_WHERE:= AMOUNT_WHERE || ') OR (GLL.ACCOUNTED_CR <> 0 AND GLL.ACCOUNTED_CR ';
790             AMOUNT_WHERE:= AMOUNT_WHERE || ' >= '||P_AMOUNT_FROM||' ))';
791          ELSIF P_AMOUNT_FROM IS NULL AND P_AMOUNT_TO IS NOT NULL THEN
792             AMOUNT_WHERE:= AMOUNT_WHERE || ') OR (GLL.ACCOUNTED_CR <> 0 AND GLL.ACCOUNTED_CR ';
793             AMOUNT_WHERE:= AMOUNT_WHERE || ' <= '||P_AMOUNT_TO||' ))';
794          ELSE
795             AMOUNT_WHERE:= AMOUNT_WHERE || ') OR (GLL.ACCOUNTED_CR <> 0 AND GLL.ACCOUNTED_CR ';
796             AMOUNT_WHERE:= AMOUNT_WHERE || ' BETWEEN '||P_AMOUNT_FROM ||' AND  '|| P_AMOUNT_TO || ' ))';
797          END IF;
798     /*  -- BUGFIX - 3804059 AND 4043565 CHANGES VARIABLES TO BIND
799       ELSE
800          AMOUNT_WHERE := AMOUNT_WHERE || ' AND (P_AMOUNT_FROM IS NOT NULL OR P_AMOUNT_TO IS NOT NULL) '; */
801 
802       END IF;
803 
804     P_AMOUNT_WHERE := AMOUNT_WHERE;
805    ELSE
806       P_AMOUNT_WHERE := ' ';
807    END IF;
808 
809 
810 
811 END IF;
812 
813 --%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%---
814 /* EXCEPTION
815   WHEN SRW.UNKNOWN_USER_EXIT THEN
816    -- SRW.MESSAGE(07,'FND FLEXSQL USER EXIT IS UNKNOWN.');
817     RAISE;
818   WHEN SRW.USER_EXIT_FAILURE THEN
819   --  SRW.MESSAGE(08,'FND FLEXSQL USER EXIT FAILED.');
820     RAISE;*/
821 
822 END;
823 
824 
825 
826 /***** COPY/RESOLVE PARAMETERS *****/
827 
828 IF P_LEDGER_ID IS NOT NULL THEN
829   SELECT NAME
830   INTO   PARAM_LEDGER_NAME
831   FROM   GL_LEDGERS
832   WHERE  LEDGER_ID = P_LEDGER_ID;
833 END IF;
834 
835 IF P_STATUS IS NOT NULL THEN
836   GL_INFO.GL_GET_LOOKUP_VALUE('M', P_STATUS, 'JOURNAL_REPORT_TYPE',
837                               PARAM_POSTING_STATUS, T_ERRORBUFFER);
838 /*  IF (T_ERRORBUFFER IS NOT NULL) THEN
839      SRW.MESSAGE('00', T_ERRORBUFFER);
840   END IF;*/
841 END IF;
842 
843 PARAM_CURRENCY_CODE := P_CURRENCY;
844 
845 
846  IF (P_REPORT_NAME = 'CHECK') THEN
847    PARAM_START_DATE := H_START_UPDATE_DATE;
848    PARAM_END_DATE := H_END_UPDATE_DATE;
849  ELSE
850    PARAM_START_DATE := H_START_DATE;
851   PARAM_END_DATE := H_END_DATE;
852  END IF;
853  C_DATE_FORMAT := 'DD-MON-YY';
854   C_PARAM_START_DATE :=  to_char(PARAM_START_DATE,C_DATE_FORMAT);
855   C_PARAM_END_DATE := to_char(PARAM_END_DATE,C_DATE_FORMAT);
856 IF P_SOURCE IS NOT NULL THEN
857   SELECT USER_JE_SOURCE_NAME
858   INTO   PARAM_SOURCE
859   FROM   GL_JE_SOURCES
860   WHERE  JE_SOURCE_NAME = P_SOURCE;
861 END IF;
862 
863 IF P_CATEGORY IS NOT NULL THEN
864   SELECT USER_JE_CATEGORY_NAME
865   INTO   PARAM_CATEGORY
866   FROM   GL_JE_CATEGORIES
867   WHERE  JE_CATEGORY_NAME = P_CATEGORY;
868 END IF;
869 
870 PARAM_BATCH_NAME := P_BATCH_NAME;
871 
872 IF P_LAST_UPDATED_BY IS NOT NULL THEN
873   SELECT USER_NAME
874   INTO   PARAM_LAST_UPDATED_BY
875   FROM   FND_USER
876   WHERE  USER_ID = P_LAST_UPDATED_BY;
877 END IF;
878 
879 PARAM_BALANCING_SEGMENT := P_BAL_SEG_VAL;
880 PARAM_PERIOD_NAME := P_PERIOD_NAME;
881 
882 IF P_JOURNALS_LINE_FLAG IS NOT NULL THEN
883   GL_INFO.GL_GET_LOOKUP_VALUE('M', P_JOURNALS_LINE_FLAG, 'SELECTION_BASE',
884                               PARAM_BASIS, T_ERRORBUFFER);
885  /* IF (T_ERRORBUFFER IS NOT NULL) THEN
886     SRW.MESSAGE('00', T_ERRORBUFFER);
887   END IF;*/
888 END IF;
889 
890 IF P_DOC_ID IS NOT NULL THEN
891   SELECT NAME
892   INTO   PARAM_DOC_SEQ_NAME
893   FROM   FND_DOCUMENT_SEQUENCES
894   WHERE  DOC_SEQUENCE_ID = P_DOC_ID;
895 END IF;
896 PARAM_DOC_SEQ_VALUE := P_DOC_VALUE;
897 PARAM_START_DOC_SEQ_VALUE := P_START_DOC_VALUE;
898 PARAM_END_DOC_SEQ_VALUE := P_END_DOC_VALUE;
899 
900 IF P_SUB_DOC_ID IS NOT NULL THEN
901   SELECT NAME
902   INTO   PARAM_SUB_DOC_SEQ_NAME
903   FROM   FND_DOCUMENT_SEQUENCES
904   WHERE  DOC_SEQUENCE_ID = P_SUB_DOC_ID;
905 END IF;
906 PARAM_SUB_DOC_SEQ_VALUE := P_SUB_DOC_VALUE;
907 
908 PARAM_ACCT_FROM := P_AFF_FROM;
909 PARAM_ACCT_TO := P_AFF_TO;
910 
911 IF P_AMT_FLAG IS NOT NULL THEN
912   GL_INFO.GL_GET_LOOKUP_VALUE('M', P_AMT_FLAG, 'GL_DR_CR',
913                               PARAM_AMT_FLAG, T_ERRORBUFFER);
914  /* IF (T_ERRORBUFFER IS NOT NULL) THEN
915      SRW.MESSAGE('00', T_ERRORBUFFER);
916   END IF;*/
917 END IF;
918 
919 PARAM_AMOUNT_LOW := P_AMOUNT_FROM;
920 PARAM_AMOUNT_HIGH := P_AMOUNT_TO;
921 PARAM_CONTRA_ACCT := P_CONTRA_ACCT;
922 
923 /* THE SEGMENT PROMPTS*/
924 --SRW.REFERENCE(:CHART_OF_ACCOUNTS_ID);
925 
926 /*SRW.USER_EXIT('FND FLEXIDVAL CODE="GL#"
927               APPL_SHORT_NAME="SQLGL"
928               NUM=":CHART_OF_ACCOUNTS_ID"
929               DATA=":P_AFF_FROM"
930               LPROMPT=":BAL_SEG_NAME_DSP"
931               DISPLAY="GL_BALANCING"
932               IDISPLAY="GL_BALANCING"');*/
933 
934 /*SRW.USER_EXIT('FND FLEXIDVAL CODE="GL#"
935               APPL_SHORT_NAME="SQLGL"
936               NUM=":CHART_OF_ACCOUNTS_ID"
937               DATA=":P_AFF_FROM"
938               LPROMPT=":ACCT_SEG_NAME_DSP"
939               DISPLAY="GL_ACCOUNT"
940               IDISPLAY="GL_ACCOUNT"');*/
941 /*IF ( P_SEC_SEG_NUM IS NOT NULL AND PARAM_SEC_SEG_NAME IS NULL) THEN
942 
943   SRW.REFERENCE(:P_SEC_SEG_NUM);
944   SRW.USER_EXIT('FND FLEXIDVAL CODE="GL#"
945               APPL_SHORT_NAME="SQLGL"
946               NUM=":CHART_OF_ACCOUNTS_ID"
947               DATA=":P_AFF_FROM"
948               LPROMPT=":PARAM_SEC_SEG_NAME"
949               DISPLAY=":P_SEC_SEG_NUM"
950               IDISPLAY=":P_SEC_SEG_NUM"');
951 END IF*/
952 
953 /***** END PARAMETER COPYING *****/
954 
955 
956 /******* START PERFORMANCE  HINTS *******/
957 
958 IF P_REPORT_NAME = 'CHECK' THEN
959 
960   P_HINT_CLAUSE := '/*+ ORDERED */';
961 
962   IF ((P_STATUS = 'E') OR (P_STATUS = 'U') OR (P_BATCH_NAME IS NOT NULL)) THEN
963 
964    P_PERF_FROM :=
965     ' GL_JE_BATCHES GLB,  GL_JE_HEADERS GLH '||P_LEDGER_FROM||
966     ' , GL_JE_LINES GLL, GL_CODE_COMBINATIONS CC, GL_LEDGERS LGR, GL_JE_SOURCES GJS, GL_JE_CATEGORIES GJC, '||
967     ' GL_DAILY_CONVERSION_TYPES DCT, FND_DOCUMENT_SEQUENCES DOCSEQ, '||
968     ' FND_DOCUMENT_SEQUENCES SUBDOCSEQ, FND_USER FU ' ;
969 
970    -- SINCE THE FOLLOWING VARIABLE IS IN THE MAIN QUERY TO HANDLE THE REGULAR CASE
971     -- AND IN THIS CASE IT IS INCLUDED INTO THE P_PERF_FROM
972 
973    P_LEDGER_FROM :=' ';
974 
975 
976      ELSIF  ((P_STATUS <> 'E')  OR (P_STATUS <> 'U')) THEN
977 
978 
979      IF P_LEDGER_FROM IS NOT NULL THEN
980 
981      P_HINT_CLAUSE := '/*+ ORDERED USE_NL(LS) INDEX(LS GL_LEDGER_SET_ASSIGNMENTS_N1)
982  			    USE_NL(GLL) INDEX (GLL GL_JE_LINES_U1)
983                             USE_NL(GLL)INDEX(CC GL_CODE_COMBINATIONS_U1)
984                             USE_NL(GLB) INDEX(GLB GL_JE_BATCHES_U1)
985                             USE_NL(GJC) INDEX (GJC GL_JE_CATEGORIES_TL_U1)
986                             USE_NL(GJS) INDEX (GJS GL_JE_SOURCES_TL_U1)
987                             USE_NL(DCT) INDEX (DCT GL_DAILY_CONVERSION_TYPES_U1)
988                             USE_NL(DOCSEQ) INDEX(DOCSEQ FND_DOCUMENT_SEQUENCES_U1)
989                             USE_NL(SUBDOCSEQ) INDEX(SUBDOCSEQ FND_DOCUMENT_SEQUENCES_U1)
990                             USE_NL(FU) INDEX(FU FND_USER_U1)  */';
991     ELSE
992         P_HINT_CLAUSE := '/*+ ORDERED
993   			    USE_NL(GLL) INDEX (GLL GL_JE_LINES_U1)
994                             USE_NL(GLL)INDEX(CC GL_CODE_COMBINATIONS_U1)
995                             USE_NL(GLB) INDEX(GLB GL_JE_BATCHES_U1)
996                             USE_NL(GJC) INDEX (GJC GL_JE_CATEGORIES_TL_U1)
997                             USE_NL(GJS) INDEX (GJS GL_JE_SOURCES_TL_U1)
998                             USE_NL(DCT) INDEX (DCT GL_DAILY_CONVERSION_TYPES_U1)
999                             USE_NL(DOCSEQ) INDEX(DOCSEQ FND_DOCUMENT_SEQUENCES_U1)
1000                             USE_NL(SUBDOCSEQ) INDEX(SUBDOCSEQ FND_DOCUMENT_SEQUENCES_U1)
1001                             USE_NL(FU) INDEX(FU FND_USER_U1)  */';
1002    END IF;
1003 
1004    P_PERF_FROM :=
1005     ' GL_JE_HEADERS GLH '||P_LEDGER_FROM||
1006     ' , GL_JE_BATCHES GLB, GL_JE_LINES GLL, GL_CODE_COMBINATIONS CC, GL_JE_SOURCES GJS,  GL_LEDGERS LGR,'||
1007     ' GL_JE_CATEGORIES GJC,  GL_DAILY_CONVERSION_TYPES DCT, FND_DOCUMENT_SEQUENCES DOCSEQ, '||
1008     ' FND_DOCUMENT_SEQUENCES SUBDOCSEQ, FND_USER FU ';
1009 
1010     -- SINCE THE FOLLOWING VARIABLE IS IN THE MAIN QUERY TO HANDLE THE REGULAR CASE
1011     -- AND IN THIS CASE IT IS INCLUDED INTO THE P_PERF_FROM
1012 
1013     P_LEDGER_FROM :=' ';
1014 
1015   END IF;
1016 
1017   IF P_PERF_FROM IS NULL THEN
1018       P_HINT_CLAUSE :=' ';
1019   END IF;
1020 
1021 ELSE
1022 
1023   P_HINT_CLAUSE := ' ';
1024  /*  :P_PERF_FROM :=
1025     ' GL_JE_HEADERS GLH, GL_LEDGERS LGR,'||P_LEDGER_FROM||
1026     ' GL_JE_LINES GLL, GL_CODE_COMBINATIONS CC,  GL_JE_BATCHES GLB, GL_JE_SOURCES GJS, '||
1027     ' GL_JE_CATEGORIES GJC,  GL_DAILY_CONVERSION_TYPES DCT, FND_DOCUMENT_SEQUNCES DOCSEQ, '||
1028     ' FND_DOCUMENT_SEQUNCES SUBDOCSEQ, FND_USER FU'; */
1029 END IF;
1030 
1031 
1032 /******** END PERFORMANCE HINTS ********/
1033 
1034 
1035 
1036   RETURN (TRUE);
1037 END BEFOREREPORT;
1038 
1039 function AfterReport return boolean is
1040 begin
1041 
1042 /*srw.user_exit('FND SRWEXIT');*/null;
1043   return (TRUE);
1044 end;
1045 
1046 PROCEDURE SET_DATE_FORMAT IS
1047 BEGIN
1048 
1049 /*SRW.ATTR.MASK       := SRW.FORMATMASK_ATTR;*/null;
1050 
1051 /*SRW.ATTR.FORMATMASK := H_DATEFORMAT;*/null;
1052 
1053 /*SRW.SET_ATTR(0,SRW.ATTR);*/null;
1054 
1055 
1056 
1057 END;
1058 
1059 function CF_1Formula return Char is
1060   MULTIPLE_NAME varchar2(20);
1061 begin
1062 
1063 
1064  multiple_name := 'MULTIPLE';
1065 
1066   RETURN(multiple_name);
1067 end;
1068 
1069 function H_START_PERIOD_DATEFormula return DATE is
1070 
1071   START_PERIOD_DATE date := SYSDATE;
1072 
1073 begin
1074 
1075 
1076 
1077   RETURN(START_PERIOD_DATE);
1078 
1079 
1080 
1081 EXCEPTION
1082   WHEN NO_DATA_FOUND THEN
1083     SELECT MIN(start_date)
1084       INTO start_period_date
1085       FROM gl_period_statuses
1086      WHERE application_id = 101
1087        AND set_of_books_id = H_SET_OF_BOOKS_ID
1088        AND adjustment_period_flag <> 'Y';
1089 
1090     RETURN(START_PERIOD_DATE);
1091 
1092   WHEN OTHERS THEN
1093     RETURN NULL;
1094 end;
1095 
1096 function H_START_PERIOD_NAMEFormula return Char is
1097 
1098 
1099   START_PERIOD_NAME varchar2(30) := SYSDATE;
1100 
1101 begin
1102 
1103 
1104 
1105   RETURN(START_PERIOD_NAME);
1106 
1107 
1108 EXCEPTION
1109   WHEN NO_DATA_FOUND THEN
1110     SELECT p1.period_name
1111       INTO start_period_name
1112       FROM gl_period_statuses p1
1113      WHERE p1.application_id = 101
1114        AND p1.set_of_books_id = H_SET_OF_BOOKS_ID
1115        AND p1.adjustment_period_flag <> 'Y'
1116        AND p1.start_date =
1117        (SELECT MIN(p2.start_date)
1118           FROM gl_period_statuses p2
1119          WHERE p2.application_id = p1.application_id
1120            AND p2.set_of_books_id = p1.set_of_books_id
1121            AND p2.adjustment_period_flag <> 'Y');
1122 
1123     RETURN(START_PERIOD_NAME);
1124 
1125   WHEN OTHERS THEN
1126     RETURN NULL;
1127 end;
1128 
1129 function NO_CONTRA_ACCOUNTFormula return Char is
1130 
1131     NO_CONTRA_NAME varchar2(20);
1132 begin
1133 
1134 
1135  NO_CONTRA_NAME := 'NO CONTRA ACCOUNT';
1136 
1137   RETURN(NO_CONTRA_NAME);
1138 end;
1139 
1140 function tax_typeformula(TAX_TYPE_CODE in varchar2) return char is
1141   l_tax_type  VARCHAR2(80);
1142   errorbuffer VARCHAR2(132);
1143 begin
1144   /*srw.reference(TAX_TYPE_CODE);*/null;
1145 
1146   if (TAX_TYPE_CODE is not null) then
1147     gl_info.gl_get_lookup_value('M', TAX_TYPE_CODE, 'TAX_TYPE',
1148                                 l_tax_type, errorbuffer);
1149   end if;
1150   return (l_tax_type);
1151 end;
1152 
1153 function approval_statusformula(APPROVAL_STATUS_CODE in varchar2) return char is
1154   l_appr_status VARCHAR2(80);
1155   errorbuffer VARCHAR2(132);
1156 begin
1157   /*srw.reference(APPROVAL_STATUS_CODE);*/null;
1158 
1159   gl_info.gl_get_lookup_value('M', APPROVAL_STATUS_CODE, 'JE_BATCH_APPROVAL_STATUS',
1160                               l_appr_status, errorbuffer);
1161   return (l_appr_status);
1162 end;
1163 
1164 function batch_statusformula(BATCH_STATUS_CODE in varchar2) return char is
1165   l_batch_status VARCHAR2(80);
1166   errorbuffer VARCHAR2(132);
1167 begin
1168   /*srw.reference(BATCH_STATUS_CODE);*/null;
1169 
1170   gl_info.gl_get_lookup_value('M', BATCH_STATUS_CODE, 'MJE_BATCH_STATUS',
1171                               l_batch_status, errorbuffer);
1172   return (l_batch_status);
1173 end;
1174 
1175 function batch_typeformula(ACTUAL_FLAG in varchar2) return char is
1176   l_batch_type VARCHAR2(80);
1177   errorbuffer VARCHAR2(132);
1178 begin
1179   /*srw.reference(ACTUAL_FLAG);*/null;
1180 
1181   gl_info.gl_get_lookup_value('D', ACTUAL_FLAG, 'BATCH_TYPE',
1182                               l_batch_type, errorbuffer);
1183   return (l_batch_type);
1184 end;
1185 
1186 function budget_ctrl_statusformula(BUD_CONTROL_STATUS in varchar2) return char is
1187   l_bc_status VARCHAR2(80);
1188   errorbuffer VARCHAR2(132);
1189 begin
1190   /*srw.reference(BUD_CONTROL_STATUS);*/null;
1191 
1192   gl_info.gl_get_lookup_value('M', BUD_CONTROL_STATUS, 'JE_BATCH_BC_STATUS',
1193                               l_bc_status, errorbuffer);
1194   return (l_bc_status);
1195 end;
1196 
1197 function jrnl_typeformula(AVERAGE_JOURNAL_FLAG in varchar2) return char is
1198   l_journal_type VARCHAR2(80);
1199   errorbuffer VARCHAR2(132);
1200 begin
1201   /*srw.reference(AVERAGE_JOURNAL_FLAG);*/null;
1202 
1203   gl_info.gl_get_lookup_value('M', AVERAGE_JOURNAL_FLAG, 'AB_JOURNAL_TYPE',
1204                               l_journal_type, errorbuffer);
1205   return (l_journal_type);
1206 end;
1207 
1208 function tax_statusformula(TAX_STATUS_CODE in varchar2) return char is
1209   l_tax_status VARCHAR2(80);
1210   errorbuffer VARCHAR2(132);
1211 begin
1212   /*srw.reference(TAX_STATUS_CODE);*/null;
1213 
1214   gl_info.gl_get_lookup_value('M', TAX_STATUS_CODE, 'TAX_STATUS',
1215                               l_tax_status, errorbuffer);
1216   return (l_tax_status);
1217 end;
1218 
1219 function budget_nameformula(BUDGET_VERSION_ID in number) return char is
1220   l_budget_name VARCHAR2(15);
1221 begin
1222   /*srw.reference(BUDGET_VERSION_ID);*/null;
1223 
1224   IF (BUDGET_VERSION_ID IS NOT NULL) THEN
1225     SELECT budget_name
1226     INTO   l_budget_name
1227     FROM   GL_BUDGET_VERSIONS
1228     WHERE  budget_version_id = BUDGET_VERSION_ID;
1229   END IF;
1230   return l_budget_name;
1231 exception
1232   WHEN NO_DATA_FOUND THEN
1233     return null;
1234 end;
1235 
1236 function encumbrance_typeformula(ENCUMBRANCE_TYPE_ID in number) return char is
1237   l_enc_type VARCHAR2(30);
1238 begin
1239   /*srw.reference(ENCUMBRANCE_TYPE_ID);*/null;
1240 
1241   IF (ENCUMBRANCE_TYPE_ID IS NOT NULL) THEN
1242     SELECT encumbrance_type
1243     INTO   l_enc_type
1244     FROM   GL_ENCUMBRANCE_TYPES
1245     WHERE  encumbrance_type_id = ENCUMBRANCE_TYPE_ID;
1246   END IF;
1247   return l_enc_type;
1248 exception
1249   WHEN NO_DATA_FOUND THEN
1250     return null;
1251 end;
1252 
1253 function tax_codeformula(TAX_CODE_ID in number, TAX_TYPE_CODE in varchar2) return char is
1254   l_tax_code VARCHAR2(50);
1255 begin
1256   /*srw.reference(TAX_CODE_ID);*/null;
1257 
1258   /*srw.reference(TAX_TYPE_CODE);*/null;
1259 
1260   IF (TAX_CODE_ID IS NOT NULL) THEN
1261     SELECT GLT.TAX_CODE
1262     INTO l_tax_code
1263     FROM GL_TAX_CODES_V GLT
1264     WHERE to_char(GLT.TAX_CODE_ID) = TAX_CODE_ID
1265     AND GLT.TAX_TYPE_CODE = TAX_TYPE_CODE;
1266   END IF;
1267 
1268   return (l_tax_code);
1269 exception
1270   WHEN NO_DATA_FOUND THEN
1271     return null;
1272 end;
1273 
1274 function contra_acct_valueformula(HDR_ID in number, SUB_DOC_SEQ_ID in number, SUB_DOC_SEQ_VAL in number, ACCOUNTED_DR in number, ACCOUNTED_CR in number) return char is
1275 
1276     CONTRA_ACCT_SEGMENT       VARCHAR2(2000);
1277     l_CONTRA_ACCOUNT_NAME        VARCHAR2(2000);
1278     v_sql_stmt                 VARCHAr2(2000);
1279 
1280 
1281 
1282 BEGIN
1283 
1284 If (P_REPORT_NAME = 'CONTRA' ) THEN
1285 
1286 
1287  l_CONTRA_ACCOUNT_NAME := GL_XML_JOURNAL_RPT_PKG.Get_Contra_Account(SELECT_ACCT_SEGMENT,
1288      					  HDR_ID,
1289                                           SUB_DOC_SEQ_ID,
1290 					  SUB_DOC_SEQ_VAL,
1291                            		  ACCOUNTED_DR,
1292                                           ACCOUNTED_CR);
1293 RETURN (l_contra_account_name);
1294 
1295 ELSE
1296 
1297  RETURN NULL;
1298 
1299 END IF;
1300 
1301 
1302 
1303 END;
1304 
1305 FUNCTION CF_LINE_BALANCEFORMULA(BAL_SEG_VAL IN VARCHAR2, ACCT_SEG_VAL IN VARCHAR2, ADDITIONAL_SEGMENT_VALUE IN VARCHAR2, LEDGER_ID IN NUMBER, BATCH_STATUS_CODE IN VARCHAR2) RETURN NUMBER IS
1306  L_LINE_BALANCE NUMBER;
1307 
1308 BEGIN
1309 
1310  IF (P_REPORT_NAME = 'CONTRA' ) THEN
1311 
1312 
1313 
1314    IF ( (BAL_SEG_VAL <> PREV_BAL_SEG_VAL)   OR
1315          ( ACCT_SEG_VAL <> PREV_ACCT_SEG_VAL) OR
1316           (NVL(ADDITIONAL_SEGMENT_VALUE, 'NULL') <>  PREV_SEC_SEG_VAL) OR
1317            (LEDGER_ID <> PREV_LED_ID) )         THEN
1318 
1319 
1320     L_LINE_BALANCE :=
1321      GL_XML_JOURNAL_RPT_PKG.NET_LINE_BALANCE
1322         (P_ACCT_SEG_WHERE => NVL(P_AFF_WHERE, P_ACC_SEGMENT_WHERE),
1323          P_STATUS         => BATCH_STATUS_CODE,
1324          P_START_DATE     => H_START_DATE,
1325          P_CURRENCY       => PARAM_CURRENCY_CODE,
1326          P_LED_ID         => LEDGER_ID,
1327          P_BAL_SEG_NAME   => SELECT_BAL_SEGMENT,
1328          P_BAL_SEG_VAL    => BAL_SEG_VAL,
1329          P_ACCT_SEG_NAME  => SELECT_ACCT_SEGMENT,
1330          P_ACCT_SEG_VAL   => ACCT_SEG_VAL,
1331          P_SEC_SEG_NAME   => SELECT_SECONDARY_SEGMENT,
1332          P_SEC_SEG_VAL    => ADDITIONAL_SEGMENT_VALUE);
1333 
1334        PREV_BAL_SEG_VAL   := BAL_SEG_VAL;
1335        PREV_ACCT_SEG_VAL  := ACCT_SEG_VAL;
1336        PREV_SEC_SEG_VAL   := NVL(ADDITIONAL_SEGMENT_VALUE,'NULL1');
1337        PREV_LED_ID        := LEDGER_ID;
1338        PREV_LINE_BAL      :=  L_LINE_BALANCE;
1339 
1340 
1341      RETURN L_LINE_BALANCE;
1342 
1343     ELSE
1344 
1345      RETURN PREV_LINE_BAL;
1346 
1347     END IF;
1348 
1349   ELSE
1350 
1351    RETURN  0;
1352 
1353   END IF;
1354 
1355  END CF_LINE_BALANCEFORMULA;
1356 
1357 function cf_gl_balanceformula(BAL_SEG_VAL in varchar2, ACCT_SEG_VAL in varchar2, ADDITIONAL_SEGMENT_VALUE in varchar2, LEDGER_ID in number, BATCH_STATUS_CODE in varchar2) return number is
1358  l_beg_balance   NUMBER;
1359 
1360 BEGIN
1361 
1362  If (P_REPORT_NAME = 'CONTRA' ) THEN
1363 
1364 
1365   IF ( (BAL_SEG_VAL <> NVL(PREV_BAL_SEG_VAL,NULL))  OR
1366          ( ACCT_SEG_VAL <> NVL(PREV_ACCT_SEG_VAL,'NULL')) OR
1367           (NVL(ADDITIONAL_SEGMENT_VALUE,'NULL') <>  NVL(PREV_SEC_SEG_VAL,'NULL1')) OR
1368            (LEDGER_ID <> NVL(PREV_LED_ID,0)) )         THEN
1369 
1370     l_beg_Balance :=
1371      GL_XML_JOURNAL_RPT_PKG.Net_Begin_Balance
1372         (P_ACCT_SEG_WHERE => NVL(P_AFF_WHERE, P_ACC_SEGMENT_WHERE),
1373          P_STATUS         => BATCH_STATUS_CODE,
1374          P_START_DATE     => H_START_DATE,
1375          P_CURRENCY       => PARAM_CURRENCY_CODE,
1376          P_LED_ID         => LEDGER_ID,
1377          P_BAL_SEG_NAME   => SELECT_BAL_SEGMENT,
1378          P_BAL_SEG_VAL    => BAL_SEG_VAL,
1379          P_ACCT_SEG_NAME  => SELECT_ACCT_SEGMENT,
1380          P_ACCT_SEG_VAL   => ACCT_SEG_VAL,
1381          P_SEC_SEG_NAME   => SELECT_SECONDARY_SEGMENT,
1382          P_SEC_SEG_VAL    => ADDITIONAL_SEGMENT_VALUE);
1383 
1384        PREV_BAL_SEG_VAL   := BAL_SEG_VAL;
1385        PREV_ACCT_SEG_VAL  := ACCT_SEG_VAL;
1386        PREV_SEC_SEG_VAL   := NVL(ADDITIONAL_SEGMENT_VALUE,'NULL1');
1387        PREV_LED_ID        := LEDGER_ID;
1388        PREV_GL_BAL      :=  l_Beg_balance;
1389 
1390      RETURN l_Beg_Balance;
1391 
1392     ELSE
1393 
1394      RETURN PREV_GL_BAL;
1395 
1396     END IF;
1397 
1398   ELSE
1399      RETURN 0;
1400   END IF;
1401 
1402 END;
1403 
1404 function begin_balanceformula(CF_LINE_BALANCE in number, CF_GL_BALANCE in number) return number is
1405 begin
1406     If (P_REPORT_NAME = 'CONTRA' ) THEN
1407 
1408       IF ((CF_LINE_BALANCE IS NOT NULL)
1409               OR (CF_GL_BALANCE IS NOT NULL)) THEN
1410           Return (NVL(CF_LINE_BALANCE,0)) + (NVL(CF_GL_BALANCE,0));
1411        ELSE
1412           Return (CF_LINE_BALANCE) + (CF_GL_BALANCE);
1413       END IF;
1414     ELSE
1415        Return 0;
1416     End If;
1417 end;
1418 
1419 --Functions to refer Oracle report placeholders--
1420 
1421  Function ACCESS_SET_NAME_p return varchar2 is
1422 	Begin
1423 	 return ACCESS_SET_NAME;
1424 	 END;
1425  Function PARAM_CURRENCY_CODE_p return varchar2 is
1426 	Begin
1427 	 return PARAM_CURRENCY_CODE;
1428 	 END;
1429  Function CHART_OF_ACCOUNTS_ID_p return number is
1430 	Begin
1431 	 return CHART_OF_ACCOUNTS_ID;
1432 	 END;
1433  Function PARAM_START_DATE_p return date is
1434 	Begin
1435 	 return PARAM_START_DATE;
1436 	 END;
1437  Function PARAM_END_DATE_p return date is
1438 	Begin
1439 	 return PARAM_END_DATE;
1440 	 END;
1441  Function PARAM_DOC_SEQ_VALUE_p return number is
1442 	Begin
1443 	 return PARAM_DOC_SEQ_VALUE;
1444 	 END;
1445  Function PARAM_AMOUNT_LOW_p return number is
1446 	Begin
1447 	 return PARAM_AMOUNT_LOW;
1448 	 END;
1449  Function PARAM_AMOUNT_HIGH_p return number is
1450 	Begin
1451 	 return PARAM_AMOUNT_HIGH;
1452 	 END;
1453  Function PARAM_SUB_DOC_SEQ_VALUE_p return number is
1454 	Begin
1455 	 return PARAM_SUB_DOC_SEQ_VALUE;
1456 	 END;
1457  Function SELECT_ACCT_SEGMENT_p return varchar2 is
1458 	Begin
1459 	 return SELECT_ACCT_SEGMENT;
1460 	 END;
1461  Function SELECT_BAL_SEGMENT_p return varchar2 is
1462 	Begin
1463 	 return SELECT_BAL_SEGMENT;
1464 	 END;
1465  Function PARAM_SEC_SEG_NAME_p return varchar2 is
1466 	Begin
1467 	 return PARAM_SEC_SEG_NAME;
1468 	 END;
1469  Function PARAM_POSTING_STATUS_p return varchar2 is
1470 	Begin
1471 	 return PARAM_POSTING_STATUS;
1472 	 END;
1473  Function NO_CONTRA_ACCOUNT_p return varchar2 is
1474 	Begin
1475 	 return NO_CONTRA_ACCOUNT;
1476 	 END;
1477  Function P_ACC_SEGMENT_WHERE_p return varchar2 is
1478 	Begin
1479 	 return P_ACC_SEGMENT_WHERE;
1480 	 END;
1481  Function P_CURRENCY_WHERE_p return varchar2 is
1482 	Begin
1483 	 return P_CURRENCY_WHERE;
1484 	 END;
1485  Function P_SEC_SEGMENT_WHERE_p return varchar2 is
1486 	Begin
1487 	 return P_SEC_SEGMENT_WHERE;
1488 	 END;
1489  Function P_DAS_WHERE_p return varchar2 is
1490 	Begin
1491 	 return P_DAS_WHERE;
1492 	 END;
1493  Function SELECT_ACCOUNT_p return varchar2 is
1494 	Begin
1495 	 return SELECT_ACCOUNT;
1496 	 END;
1497  Function SELECT_SECONDARY_SEGMENT_p return varchar2 is
1498 	Begin
1499 	 return SELECT_SECONDARY_SEGMENT;
1500 	 END;
1501  Function P_POSTING_STATUS_p return varchar2 is
1502 	Begin
1503 	 return P_POSTING_STATUS;
1504 	 END;
1505  Function P_HEADER_POSTING_STATUS_p return varchar2 is
1506 	Begin
1507 	 return P_HEADER_POSTING_STATUS;
1508 	 END;
1509  Function P_SOURCE_WHERE_p return varchar2 is
1510 	Begin
1511 	 return P_SOURCE_WHERE;
1512 	 END;
1513  Function P_BATCH_WHERE_p return varchar2 is
1514 	Begin
1515 	 return P_BATCH_WHERE;
1516 	 END;
1517  Function P_CATEGORY_WHERE_p return varchar2 is
1518 	Begin
1519 	 return P_CATEGORY_WHERE;
1520 	 END;
1521  Function P_BAL_WHERE_p return varchar2 is
1522 	Begin
1523 	 return P_BAL_WHERE;
1524 	 END;
1525  Function P_DOC_ID_WHERE_p return varchar2 is
1526 	Begin
1527 	 return P_DOC_ID_WHERE;
1528 	 END;
1529  Function P_DOC_VAL_WHERE_p return varchar2 is
1530 	Begin
1531 	 return P_DOC_VAL_WHERE;
1532 	 END;
1533  Function P_SUB_DOC_ID_WHERE_p return varchar2 is
1534 	Begin
1535 	 return P_SUB_DOC_ID_WHERE;
1536 	 END;
1537  Function P_SUB_DOC_VAL_WHERE_p return varchar2 is
1538 	Begin
1539 	 return P_SUB_DOC_VAL_WHERE;
1540 	 END;
1541  Function P_NOT_ZERO_LINE_WHERE_p return varchar2 is
1542 	Begin
1543 	 return P_NOT_ZERO_LINE_WHERE;
1544 	 END;
1545  Function P_CONTRA_ACCOUNT_WHERE_p return varchar2 is
1546 	Begin
1547 	 return P_CONTRA_ACCOUNT_WHERE;
1548 	 END;
1549  Function P_CONTRA_ACCOUNT_p return varchar2 is
1550 	Begin
1551 	 return P_CONTRA_ACCOUNT;
1552 	 END;
1553  Function P_PERIOD_WHERE_p return varchar2 is
1554 	Begin
1555 	 return P_PERIOD_WHERE;
1556 	 END;
1557  Function P_JOURNAL_DATE_WHERE_p return varchar2 is
1558 	Begin
1559 	 return P_JOURNAL_DATE_WHERE;
1560 	 END;
1561  Function P_JOURNAL_DATE_WHERE_2_p return varchar2 is
1562 	Begin
1563 	 return P_JOURNAL_DATE_WHERE_2;
1564 	 END;
1565  Function P_USE_DATE_COL_p return varchar2 is
1566 	Begin
1567 	 return P_USE_DATE_COL;
1568 	 END;
1569  Function P_JOURNAL_FROM_CLAUSE_p return varchar2 is
1570 	Begin
1571 	 return P_JOURNAL_FROM_CLAUSE;
1572 	 END;
1573  Function P_JOURNAL_WHERE_CLAUSE_p return varchar2 is
1574 	Begin
1575 	 return P_JOURNAL_WHERE_CLAUSE;
1576 	 END;
1577  Function PARAM_SOURCE_p return varchar2 is
1578 	Begin
1579 	 return PARAM_SOURCE;
1580 	 END;
1581  Function PARAM_CATEGORY_p return varchar2 is
1582 	Begin
1583 	 return PARAM_CATEGORY;
1584 	 END;
1585  Function PARAM_BATCH_NAME_p return varchar2 is
1586 	Begin
1587 	 return PARAM_BATCH_NAME;
1588 	 END;
1589  Function PARAM_LAST_UPDATED_BY_p return varchar2 is
1590 	Begin
1591 	 return PARAM_LAST_UPDATED_BY;
1592 	 END;
1593  Function PARAM_BALANCING_SEGMENT_p return varchar2 is
1594 	Begin
1595 	 return PARAM_BALANCING_SEGMENT;
1596 	 END;
1597  Function PARAM_PERIOD_NAME_p return varchar2 is
1598 	Begin
1599 	 return PARAM_PERIOD_NAME;
1600 	 END;
1601  Function PARAM_BASIS_p return varchar2 is
1602 	Begin
1603 	 return PARAM_BASIS;
1604 	 END;
1605  Function PARAM_DOC_SEQ_NAME_p return varchar2 is
1606 	Begin
1607 	 return PARAM_DOC_SEQ_NAME;
1608 	 END;
1609  Function PARAM_ACCT_FROM_p return varchar2 is
1610 	Begin
1611 	 return PARAM_ACCT_FROM;
1612 	 END;
1613  Function PARAM_ACCT_TO_p return varchar2 is
1614 	Begin
1615 	 return PARAM_ACCT_TO;
1616 	 END;
1617  Function PARAM_AMT_FLAG_p return varchar2 is
1618 	Begin
1619 	 return PARAM_AMT_FLAG;
1620 	 END;
1621  Function PARAM_SUB_DOC_SEQ_NAME_p return varchar2 is
1622 	Begin
1623 	 return PARAM_SUB_DOC_SEQ_NAME;
1624 	 END;
1625  Function PARAM_CONTRA_ACCT_p return varchar2 is
1626 	Begin
1627 	 return PARAM_CONTRA_ACCT;
1628 	 END;
1629  Function PARAM_LEDGER_NAME_p return varchar2 is
1630 	Begin
1631 	 return PARAM_LEDGER_NAME;
1632 	 END;
1633  Function PARAM_START_DOC_SEQ_VALUE_p return number is
1634 	Begin
1635 	 return PARAM_START_DOC_SEQ_VALUE;
1636 	 END;
1637  Function PARAM_END_DOC_SEQ_VALUE_p return number is
1638 	Begin
1639 	 return PARAM_END_DOC_SEQ_VALUE;
1640 	 END;
1641  Function H_SET_OF_BOOKS_ID_p return number is
1642 	Begin
1643 	 return H_SET_OF_BOOKS_ID;
1644 	 END;
1645  Function BAL_SEG_NAME_DSP_p return varchar2 is
1646 	Begin
1647 	 return BAL_SEG_NAME_DSP;
1648 	 END;
1649  Function ACCT_SEG_NAME_DSP_p return varchar2 is
1650 	Begin
1651 	 return ACCT_SEG_NAME_DSP;
1652 	 END;
1653  Function SELECT_COST_CTR_SEGMENT_p return varchar2 is
1654 	Begin
1655 	 return SELECT_COST_CTR_SEGMENT;
1656 	 END;
1657  Function H_START_DATE_p return date is
1658 	Begin
1659 	 return H_START_DATE;
1660 	 END;
1661  Function H_END_DATE_p return date is
1662 	Begin
1663 	 return H_END_DATE;
1664 	 END;
1665  Function PREV_BAL_SEG_VAL_p return varchar2 is
1666 	Begin
1667 	 return PREV_BAL_SEG_VAL;
1668 	 END;
1669  Function P_LEDGER_WHERE_p return varchar2 is
1670 	Begin
1671 	 return P_LEDGER_WHERE;
1672 	 END;
1673  Function P_LEDGER_FROM_p return varchar2 is
1674 	Begin
1675 	 return P_LEDGER_FROM;
1676 	 END;
1677  Function PREV_ACCT_SEG_VAL_p return varchar2 is
1678 	Begin
1679 	 return PREV_ACCT_SEG_VAL;
1680 	 END;
1681  Function PREV_SEC_SEG_VAL_p return varchar2 is
1682 	Begin
1683 	 return PREV_SEC_SEG_VAL;
1684 	 END;
1685  Function PREV_LED_ID_p return number is
1686 	Begin
1687 	 return PREV_LED_ID;
1688 	 END;
1689  Function PREV_LINE_BAL_p return number is
1690 	Begin
1691 	 return PREV_LINE_BAL;
1692 	 END;
1693  Function PREV_GL_BAL_p return number is
1694 	Begin
1695 	 return PREV_GL_BAL;
1696 	 END;
1697  Function P_AFF_WHERE_p return varchar2 is
1698 	Begin
1699 	 return P_AFF_WHERE;
1700 	 END;
1701  Function P_AMOUNT_WHERE_p return varchar2 is
1702 	Begin
1703 	 return P_AMOUNT_WHERE;
1704 	 END;
1705  Function P_AFF_WHERE_JRL_p return varchar2 is
1706 	Begin
1707 	 return P_AFF_WHERE_JRL;
1708 	 END;
1709  Function P_ACC_SEGMENT_SELECT_p return varchar2 is
1710 	Begin
1711 	 return P_ACC_SEGMENT_SELECT;
1712 	 END;
1713  Function P_JOURNAL_UPD_DATE_WHERE_p return varchar2 is
1714 	Begin
1715 	 return P_JOURNAL_UPD_DATE_WHERE;
1716 	 END;
1717  Function H_START_UPDATE_DATE_p return date is
1718 	Begin
1719 	 return H_START_UPDATE_DATE;
1720 	 END;
1721  Function H_END_UPDATE_DATE_p return date is
1722 	Begin
1723 	 return H_END_UPDATE_DATE;
1724 	 END;
1725  Function P_JOURNAL_LAST_UPD_WHERE_p return varchar2 is
1726 	Begin
1727 	 return P_JOURNAL_LAST_UPD_WHERE;
1728 	 END;
1729  Function P_JOURNAL_DATE_WHERE_3_p return varchar2 is
1730 	Begin
1731 	 return P_JOURNAL_DATE_WHERE_3;
1732 	 END;
1733  Function P_HINT_CLAUSE_p return varchar2 is
1734 	Begin
1735 	 return P_HINT_CLAUSE;
1736 	 END;
1737  Function P_PERF_FROM_p return varchar2 is
1738 	Begin
1739 	 return P_PERF_FROM;
1740 	 END;
1741  Function P_ACTUAL_TYPE_WHERE_p return varchar2 is
1742 	Begin
1743 	 return P_ACTUAL_TYPE_WHERE;
1744 	 END;
1745 END GL_GLWACCTR_XMLP_PKG ;
1746