DBA Data[Home] [Help]

PACKAGE BODY: APPS.JA_CN_VOUCHER_NUM_PKG

Source


1 PACKAGE BODY JA_CN_VOUCHER_NUM_PKG AS
2   --$Header: JACNVNGB.pls 120.9 2011/05/13 03:34:41 choli noship $
3   --+=======================================================================+
4   --|               Copyright (c) 1998 Oracle Corporation                   |
5   --|                       Redwood Shores, CA, USA                         |
6   --|                         All rights reserved.                          |
7   --+=======================================================================+
8   --| FILENAME                                                              |
9   --|     JACNVNGB.pls                                                      |
10   --|                                                                       |
11   --| DESCRIPTION                                                           |
12   --|     Use this package to generate the voucher numbers                  |
13   --|                                                                       |
14   --| PROCEDURE LIST                                                        |
15   --|      Procedure beforeReport                                           |
16   --|      Procedure Generate_voucher_number                                |
17   --|      Procedure Generate_voucher_num_periods                           |
18   --|                                                                       |
19   --| HISTORY                                                               |
20   --|     29-Jul-2010       Chongwu Li       Created                        |
21   --|     29-Sep-2010       Jianchao Chi     Updated                        |
22   --|     12-May-2011       Chongwu Li       Updated, add method            |
23   --|                       get_balancing_segment for CFS seperated patch   |
24   --|                       replace ja_cn_utility invoke for this method    |
25   --|                       tracked by bug 12541220                         |
26   --+======================================================================*/
27   GV_MODULE_PREFIX VARCHAR2(100) := 'JA_CN_VOUCHER_NUM_PKG';
28 
29   --==========================================================================
30   --  PROCEDURE NAME:
31   --
32   --    Generate_voucher_number               Public
33   --
34   --  DESCRIPTION:
35   --
36   --      This function is to generate the voucher number
37   --
38   --  PARAMETERS:
39   --      In:  pn_ledger_id        Ledger ID
40   --           pn_legal_entity_id  Legal Entity ID
41   --           pv_period_name      Period Name
42   --           pn_regenerate_flag  Regeneration Flag
43   --     Out:
44   --
45   --  DESIGN REFERENCES:
46   --
47   --
48   --  CHANGE HISTORY:
49   --     27-Sep-2010     Chongwu Li Created
50   --
51   --===========================================================================
52   PROCEDURE Generate_voucher_number(pn_ledger_id       IN NUMBER,
53                                     pn_legal_entity_id IN NUMBER,
54                                     pv_period_name     IN VARCHAR2,
55                                     pv_regenerate_flag IN VARCHAR2) IS
56 
57     lv_procedure_name   VARCHAR2(40) := 'Generate_voucher_number';
58     ln_dbg_level        NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
59     ln_proc_level       NUMBER := FND_LOG.LEVEL_PROCEDURE;
60     ln_voucher_number   NUMBER;
61     ln_last_header_id   NUMBER;
62     ln_je_header_id     NUMBER;
63     ln_bsv_assigned_num NUMBER;
64     CURSOR bsv_legal_entity_cur IS
65       SELECT DISTINCT legal_entity_id
66         FROM gl_ledger_norm_seg_vals
67        WHERE ledger_id = pn_ledger_id;
68     --Cursor for Journals which has BSV assignment
69     CURSOR voucher_cur IS
70       SELECT gjh.je_header_id,
71              gjh.default_effective_date,
72              gjh.period_name,
73              gjh.POSTING_ACCT_SEQ_VALUE,
74              gjl.je_line_num
75         FROM gl_je_headers            gjh,
76              gl_je_lines              gjl,
77              gl_code_combinations_kfv gcck,
78              gl_ledgers               glg
79        WHERE gjh.je_header_id = gjl.je_header_id
80          AND gcck.code_combination_id = gjl.code_combination_id
81          AND glg.ledger_id = gjh.ledger_id
82          AND gjh.ledger_id = pn_ledger_id
83          AND gjh.status = 'P'
84          AND gjh.period_name = pv_period_name
85          AND EXISTS
86        (SELECT jclllbg.bal_seg_value
87                 FROM ja_cn_ledger_le_bsv_gt jclllbg
88                WHERE get_balancing_segment(gjl.code_combination_id) =
89                      jclllbg.bal_seg_value
90                  AND jclllbg.Ledger_Id = pn_ledger_id
91                  AND jclllbg.Legal_Entity_Id = pn_legal_entity_id)
92          AND NOT EXISTS
93        (SELECT je_header_id, je_line_number
94                 FROM ja_cn_voucher_number jcvn
95                WHERE gjh.je_header_id = jcvn.je_header_id
96                  AND gjl.je_line_num = jcvn.je_line_number
97                  AND jcvn.ledger_id = pn_ledger_id
98                  AND jcvn.legal_entity_id = pn_legal_entity_id
99                  AND jcvn.period_name = pv_period_name)
100        ORDER BY NVL(gjh.POSTING_ACCT_SEQ_VALUE, -1) ASC,
101                 gjh.default_effective_date ASC,
102                 gjh.posted_date ASC,
103                 gjh.je_header_id ASC;
104     --Cursor for Journals without BSV assignment
105     CURSOR voucher_no_bsv_cur IS
106       SELECT gjh.je_header_id,
107              gjh.default_effective_date,
108              gjh.period_name,
109              gjh.POSTING_ACCT_SEQ_VALUE,
110              gjl.je_line_num
111         FROM gl_je_headers            gjh,
112              gl_je_lines              gjl,
113              gl_code_combinations_kfv gcck,
114              gl_ledgers               glg
115        WHERE gjh.je_header_id = gjl.je_header_id
116          AND gcck.code_combination_id = gjl.code_combination_id
117          AND glg.ledger_id = gjh.ledger_id
118          AND gjh.ledger_id = pn_ledger_id
119          AND gjh.status = 'P'
120          AND gjh.period_name = pv_period_name
121          AND NOT EXISTS
122        (SELECT je_header_id, je_line_number
123                 FROM ja_cn_voucher_number jcvn
124                WHERE gjh.je_header_id = jcvn.je_header_id
125                  AND gjl.je_line_num = jcvn.je_line_number
126                  AND jcvn.ledger_id = pn_ledger_id
127                  AND jcvn.legal_entity_id = pn_legal_entity_id
128                  AND jcvn.period_name = pv_period_name)
129        ORDER BY NVL(gjh.POSTING_ACCT_SEQ_VALUE, -1) ASC,
130                 gjh.default_effective_date ASC,
131                 gjh.posted_date ASC,
132                 gjh.je_header_id ASC;
133   BEGIN
134     --logging for debug
135     IF (ln_proc_level >= ln_dbg_level) THEN
136       FND_LOG.STRING(ln_proc_level,
137                      GV_MODULE_PREFIX || '.' || lv_procedure_name ||
138                      '.begin',
139                      'Enter procedure');
140     END IF; --ln_proc_level>=ln_dbg_level
141     FND_FILE.PUT_LINE(FND_FILE.log, 'Enter: ' || lv_procedure_name);
142     FND_FILE.put_line(FND_FILE.log,
143                       lv_procedure_name || '.parameters:' ||
144                       'pn_ledger_id=' || pn_ledger_id || ',' ||
145                       'pn_legal_entity_id=' || pn_legal_entity_id || ',' ||
146                       'pv_regenerate_flag=' || pv_regenerate_flag || ',' ||
147                       'pv_period_name=' || pv_period_name);
148     BEGIN
149 
150       SELECT count(*)
151         INTO ln_bsv_assigned_num
152         FROM ja_cn_ledger_le_bsv_gt
153        WHERE ledger_id = pn_ledger_id;
154       -- BSV is assigned, only the parameter legal entity will be handled.
155       IF (ln_bsv_assigned_num > 0) THEN
156         IF (pv_regenerate_flag = 'Y') THEN
157           DELETE FROM ja_cn_voucher_number
158            WHERE ledger_id = pn_ledger_id
159              AND (data_source_tag <> 'M' or data_source_tag is null)
160              AND legal_entity_id = pn_legal_entity_id
161              AND period_name = pv_period_name;
162         END IF; --IF(pv_regenerate_flag = 'Y')
163         SELECT NVL(MAX(jcvn.voucher_number), 0)
164           INTO ln_voucher_number
165           FROM ja_cn_voucher_number jcvn
166          WHERE jcvn.ledger_id = pn_ledger_id
167            AND jcvn.legal_entity_id = pn_legal_entity_id
168            AND jcvn.period_name = pv_period_name;
169         ln_last_header_id := -1;
170         FOR v_row IN voucher_cur LOOP
171           ln_je_header_id := v_row.je_header_id;
172           IF (ln_je_header_id <> ln_last_header_id) THEN
173             ln_voucher_number := ln_voucher_number + 1;
174           END IF; --IF(ln_je_header_id <> ln_last_header_id)
175 
176           INSERT INTO ja_cn_voucher_number
177             (ledger_id,
178              legal_entity_id,
179              period_name,
180              je_header_id,
181              je_line_number,
182              voucher_number,
183              REQUEST_ID,
184              created_by,
185              creation_date,
186              last_updated_by,
187              last_update_date,
188              last_update_login)
189           VALUES
190             (pn_ledger_id,
191              pn_legal_entity_id,
192              pv_period_name,
193              v_row.je_header_id,
194              v_row.je_line_num,
195              ln_voucher_number,
196              fnd_global.CONC_REQUEST_ID,
197              fnd_global.user_id,
198              SYSDATE(),
199              fnd_global.user_id,
200              SYSDATE(),
201              fnd_global.login_id);
202           ln_last_header_id := v_row.je_header_id;
203         END LOOP; -- FOR v_row IN voucher_cur
204       ELSE
205         IF (pv_regenerate_flag = 'Y') THEN
206           DELETE FROM ja_cn_voucher_number
207            WHERE ledger_id = pn_ledger_id
208              AND (data_source_tag <> 'M' or data_source_tag is null)
209              AND period_name = pv_period_name;
210         END IF; --IF(pv_regenerate_flag = 'Y')
211         SELECT NVL(MAX(jcvn.voucher_number), 0)
212           INTO ln_voucher_number
213           FROM ja_cn_voucher_number jcvn
214          WHERE jcvn.ledger_id = pn_ledger_id
215            AND jcvn.period_name = pv_period_name;
216         ln_last_header_id := -1;
217         FOR v_row IN voucher_no_bsv_cur LOOP
218           ln_je_header_id := v_row.je_header_id;
219           IF (ln_je_header_id <> ln_last_header_id) THEN
220             ln_voucher_number := ln_voucher_number + 1;
221           END IF; --IF(ln_je_header_id <> ln_last_header_id)
222 
223           FOR v_row1 IN bsv_legal_entity_cur LOOP
224             INSERT INTO ja_cn_voucher_number
225               (ledger_id,
226                legal_entity_id,
227                period_name,
228                je_header_id,
229                je_line_number,
230                voucher_number,
231                REQUEST_ID,
232                created_by,
233                creation_date,
234                last_updated_by,
235                last_update_date,
236                last_update_login)
237             VALUES
238               (pn_ledger_id,
239                v_row1.legal_entity_id,
240                pv_period_name,
241                v_row.je_header_id,
242                v_row.je_line_num,
243                ln_voucher_number,
244                fnd_global.CONC_REQUEST_ID,
245                fnd_global.user_id,
246                SYSDATE(),
247                fnd_global.user_id,
248                SYSDATE(),
249                fnd_global.login_id);
250           END LOOP; --   FOR v_row1 IN bsv_legal_entity_cur
251           ln_last_header_id := v_row.je_header_id;
252         END LOOP; -- FOR v_row IN voucher_cur
253       END IF;
254     EXCEPTION
255       WHEN OTHERS THEN
256         FND_FILE.put_line(FND_FILE.log,
257                           lv_procedure_name || SQLCODE || SQLERRM);
258         RAISE;
259     END;
260     --logging for debug
261     IF (ln_proc_level >= ln_dbg_level) THEN
262       FND_LOG.STRING(ln_proc_level,
263                      GV_MODULE_PREFIX || '.' || lv_procedure_name || '.end',
264                      'Exit procedure');
265     END IF; -- (ln_proc_level>=ln_dbg_level)
266 
267   END Generate_voucher_number;
268 
269   --==========================================================================
270   --  PROCEDURE NAME:
271   --
272   --    Generate_voucher_num_periods               Public
273   --
274   --  DESCRIPTION:
275   --
276   --      This function is to generate the voucher number for the period range
277   --
278   --  PARAMETERS:
279   --      In:  pn_ledger_id        Ledger ID
280   --           pn_legal_entity_id  Legal Entity ID
281   --           pv_period_from      Period From
282   --           pv_period_to        Period To
283   --           pv_regenerate_flag  Regeneration Flag
284   --     Out:
285   --
286   --  DESIGN REFERENCES:
287   --
288   --
289   --  CHANGE HISTORY:
290   --     27-Sep-2010     Chongwu Li Created
291   --
292   --===========================================================================
293   PROCEDURE Generate_voucher_num_periods(pn_ledger_id       IN NUMBER,
294                                          pn_legal_entity_id IN NUMBER,
295                                          pv_period_from     IN VARCHAR2,
296                                          pv_period_to       IN VARCHAR2,
297                                          pv_regenerate_flag IN VARCHAR2) IS
298     ln_flag           VARCHAR2(10);
299     lv_procedure_name VARCHAR2(40) := 'Generate_voucher_num_periods';
300     ln_dbg_level      NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
301     ln_proc_level     NUMBER := FND_LOG.LEVEL_PROCEDURE;
302     CURSOR periods_cur IS
303       SELECT period_name
304         FROM gl_period_statuses
305        WHERE application_id = 101
306          AND ledger_id = pn_ledger_id
307          AND start_date >=
308              (select start_date
309                 from gl_period_statuses
310                where application_id = 101
311                  and ledger_id = pn_ledger_id
312                  and period_name = pv_period_from)
313          AND end_date <= (select end_date
314                             from gl_period_statuses
315                            where application_id = 101
316                              and ledger_id = pn_ledger_id
317                              and period_name = pv_period_to)
318          AND adjustment_period_flag = 'N'
319          AND closing_status <> 'N'
320          AND closing_status <> 'F'
321        ORDER BY start_date;
322   BEGIN
323     --logging for debug
324     IF (ln_proc_level >= ln_dbg_level) THEN
325       FND_LOG.STRING(ln_proc_level,
326                      GV_MODULE_PREFIX || '.' || lv_procedure_name ||
327                      '.begin',
328                      'Enter procedure');
329     END IF; --ln_proc_level>=ln_dbg_level
330     FND_FILE.PUT_LINE(FND_FILE.log, 'Enter: ' || lv_procedure_name);
331     FND_FILE.put_line(FND_FILE.log,
332                       lv_procedure_name || '.parameters:' ||
333                       'pn_ledger_id=' || pn_ledger_id || ',' ||
334                       'pn_legal_entity_id=' || pn_legal_entity_id || ',' ||
335                       'pv_regenerate_flag=' || pv_regenerate_flag || ',' ||
336                       'pv_period_from=' || pv_period_from || ',' ||
337                       'pv_period_to=' || pv_period_to);
338     BEGIN
339       ln_flag := JA_CN_UTILITY.Populate_Ledger_Le_Bsv_Gt(p_Ledger_Id       => pn_ledger_id,
340                                                          p_Legal_Entity_Id => pn_legal_entity_id);
341       FND_FILE.put_line(FND_FILE.log,
342                         lv_procedure_name || 'ln_flag = ' || ln_flag);
343       FOR v_row IN periods_cur LOOP
344         Generate_voucher_number(pn_ledger_id       => pn_ledger_id,
345                                 pn_legal_entity_id => pn_legal_entity_id,
346                                 pv_period_name     => v_row.period_name,
347                                 pv_regenerate_flag => pv_regenerate_flag);
348       END LOOP; -- FOR v_row IN periods_cur
349     EXCEPTION
350       WHEN OTHERS THEN
351         FND_FILE.put_line(FND_FILE.log,
352                           lv_procedure_name || SQLCODE || SQLERRM);
353         RAISE;
354     END;
355     --logging for debug
356     IF (ln_proc_level >= ln_dbg_level) THEN
357       FND_LOG.STRING(ln_proc_level,
358                      GV_MODULE_PREFIX || '.' || lv_procedure_name || '.end',
359                      'Exit procedure');
360     END IF; -- (ln_proc_level>=ln_dbg_level)
361   END Generate_voucher_num_periods;
362 
363   --==========================================================================
364   --  PROCEDURE NAME:
365   --
366   --    beforeReport               Public
367   --
368   --  DESCRIPTION:
369   --
370   --      This procedure is used to deal with the parameters and invoke the
371   --      "Generate_voucher_num_periods" function to process the data.
372   --
373   --  PARAMETERS:
374   --      In:  N/A
375   --     Out:  TRUE/FALSE
376   --
377   --  DESIGN REFERENCES:
378   --
379   --
380   --  CHANGE HISTORY:
381   --     29-Sep-2010     Jianchao Chi Created
382   --
383   --===========================================================================
384   PROCEDURE beforeReport(Errbuf                 OUT NOCOPY VARCHAR2,
385                          Retcode                OUT NOCOPY VARCHAR2,
386                          P_RESP_APPLICATION_ID  IN NUMBER,
387                          P_LEGAL_ENTITY_TEMP    IN NUMBER,
388                          P_PROFILE_OPTION_VALUE IN NUMBER,
389                          P_LEDGER_ID            IN NUMBER,
390                          P_LEDGER_NAME          IN VARCHAR2,
391                          P_LEGAL_ENTITY_ID      IN NUMBER,
392                          P_LEGAL_ENTITY         IN VARCHAR2,
393                          P_PERIOD_FROM          IN VARCHAR2,
394                          P_PERIOD_TO            IN VARCHAR2,
395                          P_REGENERATE_FLAG      IN VARCHAR2) IS
396 
397     lv_procedure_name   VARCHAR2(40) := 'beforeReport';
398     ln_dbg_level        NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
399     ln_proc_level       NUMBER := FND_LOG.LEVEL_PROCEDURE;
400     VOUCHER_NUMBER_FROM NUMBER;
401     VOUCHER_NUMBER_TO   NUMBER;
402     JOURNAL_AMOUNT      NUMBER;
403     l_Error_Msg         VARCHAR2(300);
404     CURSOR periods_cur IS
405       SELECT period_name
406         FROM gl_period_statuses
407        WHERE application_id = 101
408          AND ledger_id = P_LEDGER_ID
409          AND start_date >=
410              (select start_date
411                 from gl_period_statuses
412                where application_id = 101
413                  and ledger_id = P_LEDGER_ID
414                  and period_name = P_PERIOD_FROM)
415          AND end_date <= (select end_date
416                             from gl_period_statuses
417                            where application_id = 101
418                              and ledger_id = P_LEDGER_ID
419                              and period_name = P_PERIOD_TO)
420          AND closing_status <> 'N'
421          AND closing_status <> 'F'
422        ORDER BY start_date;
423   BEGIN
424     --logging for debug
425     IF (ln_proc_level >= ln_dbg_level) THEN
426       FND_LOG.STRING(ln_proc_level,
427                      GV_MODULE_PREFIX || '.' || lv_procedure_name ||
428                      '.begin',
429                      'Enter procedure');
430     END IF; --ln_proc_level>=ln_dbg_level
431     FND_FILE.PUT_LINE(FND_FILE.log, 'Enter: ' || lv_procedure_name);
432     FND_FILE.put_line(FND_FILE.log, lv_procedure_name || '.parameters:');
433 
434 
435     Generate_voucher_num_periods(pn_ledger_id       => P_LEDGER_ID,
436                                  pn_legal_entity_id => P_LEGAL_ENTITY_ID,
437                                  pv_period_from     => P_PERIOD_FROM,
438                                  pv_period_to       => P_PERIOD_TO,
439                                  pv_regenerate_flag => P_REGENERATE_FLAG);
440 
441     FOR v_row IN periods_cur LOOP
442       SELECT COUNT(VOUCHER_NUMBER),
443              MAX(VOUCHER_NUMBER),
444              MIN(VOUCHER_NUMBER)
445         INTO JOURNAL_AMOUNT, VOUCHER_NUMBER_TO, VOUCHER_NUMBER_FROM
446         FROM (SELECT DISTINCT VOUCHER_NUMBER
447                 FROM JA_CN_VOUCHER_NUMBER
448                WHERE PERIOD_NAME = v_row.period_name
449                  AND (data_source_tag <> 'M' or data_source_tag is null)
450                  AND REQUEST_ID = fnd_global.CONC_REQUEST_ID);
451       IF (JOURNAL_AMOUNT <> 0) THEN
452         Fnd_Message.Set_Name(Application => 'JA',
453                              NAME        => 'JA_CN_VOUCHER_NUMBER_HAS_DATA');
454         Fnd_Message.SET_TOKEN(TOKEN => 'PERIOD_NAME',
455                               VALUE => v_row.period_name);
456         Fnd_Message.SET_TOKEN(TOKEN => 'VOUCHER_NUMBER_FROM',
457                               VALUE => VOUCHER_NUMBER_FROM);
458         Fnd_Message.SET_TOKEN(TOKEN => 'VOUCHER_NUMBER_TO',
459                               VALUE => VOUCHER_NUMBER_TO);
460         Fnd_Message.SET_TOKEN(TOKEN => 'JOURNAL_AMOUNT',
461                               VALUE => JOURNAL_AMOUNT);
462         l_Error_Msg := Fnd_Message.Get;
463 
464         --Output error message
465         Fnd_File.Put_Line(Fnd_File.Output, l_Error_Msg);
466       ELSE
467         Fnd_Message.Set_Name(Application => 'JA',
468                              NAME        => 'JA_CN_VOUCHER_NUMBER_NO_DATA');
469         Fnd_Message.SET_TOKEN(TOKEN => 'PERIOD_NAME', VALUE => v_row.period_name);
470         l_Error_Msg := Fnd_Message.Get;
471 
472         --Output error message
473         Fnd_File.Put_Line(Fnd_File.Output, l_Error_Msg);
474       END IF;
475     END LOOP; -- FOR v_row IN periods_cur
476 
477   EXCEPTION
478     WHEN OTHERS THEN
479       IF (ln_Proc_Level >= ln_dbg_level) THEN
480         Fnd_Log.STRING(ln_Proc_Level,
481                        GV_MODULE_PREFIX || '.' || lv_procedure_name ||
482                        '. Other_Exception ',
483                        SQLCODE || ':' || SQLERRM);
484       END IF; --(l_proc_level >= l_dbg_level)
485   END beforeReport;
486 
487 --==========================================================================
488 --  PROCEDURE NAME:
489 --    get_balancing_segment                     public
490 --
491 --  DESCRIPTION:
492 --      This procedure returns the balancing segment value of a CCID.
493 --
494 --  PARAMETERS:
495 --      In: P_CC_ID         NUMBER
496 --
497 --  DESIGN REFERENCES:
498 --      None
499 --
500 --  CHANGE HISTORY:
501 --     11-Aug-2010   Chaoqun Wu  created
502 --===========================================================================
503 FUNCTION get_balancing_segment
504 (P_CC_ID          IN   NUMBER
505 )
506 RETURN VARCHAR2
507 IS
508 L_BALANCING_SEGMENT GL_CODE_COMBINATIONS.SEGMENT1%TYPE;
509 BEGIN
510   SELECT
511     DECODE(FSAV.APPLICATION_COLUMN_NAME, --segment FSAV.APPLICATION_COLUMN_NAME of gcc
512                       'SEGMENT1',GCC.SEGMENT1, 'SEGMENT2',GCC.SEGMENT2, 'SEGMENT3',GCC.SEGMENT3,
513                       'SEGMENT4',GCC.SEGMENT4, 'SEGMENT5',GCC.SEGMENT5, 'SEGMENT6',GCC.SEGMENT6,
514                       'SEGMENT7',GCC.SEGMENT7, 'SEGMENT8',GCC.SEGMENT8, 'SEGMENT9',GCC.SEGMENT9,
515                       'SEGMENT10',GCC.SEGMENT10, 'SEGMENT11',GCC.SEGMENT11, 'SEGMENT12',GCC.SEGMENT12,
516                       'SEGMENT13',GCC.SEGMENT13, 'SEGMENT14',GCC.SEGMENT14, 'SEGMENT15',GCC.SEGMENT15,
517                       'SEGMENT16',GCC.SEGMENT16, 'SEGMENT17',GCC.SEGMENT17, 'SEGMENT18',GCC.SEGMENT18,
518                       'SEGMENT19',GCC.SEGMENT19, 'SEGMENT20',GCC.SEGMENT20, 'SEGMENT21',GCC.SEGMENT21,
519                       'SEGMENT22',GCC.SEGMENT22, 'SEGMENT23',GCC.SEGMENT23, 'SEGMENT24',GCC.SEGMENT24,
520                       'SEGMENT25',GCC.SEGMENT25, 'SEGMENT26',GCC.SEGMENT26, 'SEGMENT27',GCC.SEGMENT27,
521                       'SEGMENT28',GCC.SEGMENT28, 'SEGMENT29',GCC.SEGMENT29, 'SEGMENT30',GCC.SEGMENT30)
522       INTO L_BALANCING_SEGMENT
523     FROM GL_CODE_COMBINATIONS GCC,
524          FND_SEGMENT_ATTRIBUTE_VALUES FSAV
525    WHERE GCC.CODE_COMBINATION_ID = P_CC_ID
526      AND FSAV.ATTRIBUTE_VALUE = 'Y'
527      AND FSAV.APPLICATION_ID = 101
528      AND FSAV.SEGMENT_ATTRIBUTE_TYPE = 'GL_BALANCING'
529      AND FSAV.ID_FLEX_NUM = GCC.CHART_OF_ACCOUNTS_ID
530      AND FSAV.ID_FLEX_CODE = 'GL#';
531 
532    RETURN L_BALANCING_SEGMENT;
533 END get_balancing_segment;
534 
535 END JA_CN_VOUCHER_NUM_PKG;
536