DBA Data[Home] [Help]

PACKAGE BODY: APPS.GL_FORMSINFO

Source


1 PACKAGE BODY GL_FORMSINFO AS
2 /* $Header: gligcfib.pls 120.19 2005/07/29 16:58:51 djogg ship $ */
3 
4   PROCEDURE get_coa_info (x_chart_of_accounts_id    IN     NUMBER,
5                           x_segment_delimiter       IN OUT NOCOPY VARCHAR2,
6                           x_enabled_segment_count   IN OUT NOCOPY NUMBER,
7                           x_segment_order_by        IN OUT NOCOPY VARCHAR2,
8                           x_accseg_segment_num      IN OUT NOCOPY NUMBER,
9                           x_accseg_app_col_name     IN OUT NOCOPY VARCHAR2,
10                           x_accseg_left_prompt      IN OUT NOCOPY VARCHAR2,
11                           x_balseg_segment_num      IN OUT NOCOPY NUMBER,
12                           x_balseg_app_col_name     IN OUT NOCOPY VARCHAR2,
13                           x_balseg_left_prompt     IN OUT NOCOPY VARCHAR2,
14                           x_mgtseg_segment_num      IN OUT NOCOPY NUMBER,
15                           x_mgtseg_app_col_name     IN OUT NOCOPY VARCHAR2,
16                           x_mgtseg_left_prompt      IN OUT NOCOPY VARCHAR2,
17                           x_ieaseg_segment_num      IN OUT NOCOPY NUMBER,
18                           x_ieaseg_app_col_name     IN OUT NOCOPY VARCHAR2,
19                           x_ieaseg_left_prompt      IN OUT NOCOPY VARCHAR2) IS
20 
21     CURSOR seg_count IS
22       SELECT segment_num, application_column_name
23       FROM fnd_id_flex_segments
24       WHERE application_id = 101
25       AND   id_flex_code   = 'GL#'
26       AND   enabled_flag   = 'Y'
27       AND   id_flex_num    = x_chart_of_accounts_id
28       ORDER BY segment_num;
29     dumdum BOOLEAN := FALSE;
30 
31     x_seg_name VARCHAR2(30);
32     x_value_set VARCHAR2(60);
33   BEGIN
34 
35     -- Identify the natural account and balancing segments
36     dumdum := FND_FLEX_APIS.get_qualifier_segnum(
37                 101, 'GL#', x_chart_of_accounts_id,
38                 'GL_ACCOUNT', x_accseg_segment_num);
39     dumdum := FND_FLEX_APIS.get_qualifier_segnum(
40                 101, 'GL#', x_chart_of_accounts_id,
41                 'GL_BALANCING', x_balseg_segment_num);
42     dumdum := FND_FLEX_APIS.get_qualifier_segnum(
43                 101, 'GL#', x_chart_of_accounts_id,
44                 'GL_MANAGEMENT', x_mgtseg_segment_num);
45     dumdum := FND_FLEX_APIS.get_qualifier_segnum(
46                 101, 'GL#', x_chart_of_accounts_id,
47                 'GL_INTERCOMPANY', x_ieaseg_segment_num);
48 
49     -- Get the segment delimiter
50     x_segment_delimiter := FND_FLEX_APIS.get_segment_delimiter(
51                              101, 'GL#', x_chart_of_accounts_id);
52 
53     -- Count 'em up and string 'em together
54     x_enabled_segment_count := 0;
55     FOR r IN seg_count LOOP
56       -- How many enabled segs are there?
57       x_enabled_segment_count := seg_count%ROWCOUNT;
58       -- Record the order by string
59       IF seg_count%ROWCOUNT = 1 THEN
60         x_segment_order_by      := r.application_column_name;
61       ELSE
62         x_segment_order_by      := x_segment_order_by||
63                                    ','||
64                                    r.application_column_name;
65       END IF;
66       -- If this is either the accseg or balseg, get more info
67       IF    r.segment_num = x_accseg_segment_num THEN
68         IF (FND_FLEX_APIS.get_segment_info(
69               101, 'GL#', x_chart_of_accounts_id,
70               r.segment_num, x_accseg_app_col_name,
71               x_seg_name, x_accseg_left_prompt, x_value_set)) THEN
72           null;
73         END IF;
74       ELSIF r.segment_num = x_balseg_segment_num THEN
75         IF (FND_FLEX_APIS.get_segment_info(
76               101, 'GL#', x_chart_of_accounts_id,
77               r.segment_num, x_balseg_app_col_name,
78               x_seg_name, x_balseg_left_prompt, x_value_set)) THEN
79           null;
80         END IF;
81       ELSIF r.segment_num = x_mgtseg_segment_num THEN
82         IF (FND_FLEX_APIS.get_segment_info(
83               101, 'GL#', x_chart_of_accounts_id,
84               r.segment_num, x_mgtseg_app_col_name,
85               x_seg_name, x_mgtseg_left_prompt, x_value_set)) THEN
86           null;
87         END IF;
88       ELSIF r.segment_num = x_ieaseg_segment_num THEN
89         IF (FND_FLEX_APIS.get_segment_info(
90               101, 'GL#', x_chart_of_accounts_id,
91               r.segment_num, x_ieaseg_app_col_name,
92               x_seg_name, x_ieaseg_left_prompt, x_value_set)) THEN
93           null;
94         END IF;
95       END IF;
96     END LOOP;
97 
98   EXCEPTION
99    WHEN OTHERS THEN
100      app_exception.raise_exception;
101   END get_coa_info;
102 
103 
104   PROCEDURE get_access_info (x_access_set_id              IN     NUMBER,
105                              x_name                       IN OUT NOCOPY VARCHAR2,
106 			     x_enabled_flag               IN OUT NOCOPY VARCHAR2,
107                              x_security_segment_code      IN OUT NOCOPY VARCHAR2,
108 			     x_chart_of_accounts_id       IN OUT NOCOPY NUMBER,
109 			     x_period_set_name            IN OUT NOCOPY VARCHAR2,
110                              x_accounted_period_type      IN OUT NOCOPY VARCHAR2,
111 	                     x_automatically_created_flag IN OUT NOCOPY VARCHAR2 ) IS
112     CURSOR access_info_curr IS
113       SELECT
114 	     name,
115   	     enabled_flag,
116              security_segment_code,
117              chart_of_accounts_id,
118              period_set_name,
119              accounted_period_type,
120              automatically_created_flag
121       FROM
122 	     GL_ACCESS_SETS
123       WHERE
124 	     access_set_id = X_access_set_id;
125   BEGIN
126     OPEN access_info_curr;
127     FETCH access_info_curr INTO
128 	X_name,
129 	X_enabled_flag,
130         X_security_segment_code,
131 	X_chart_of_accounts_id,
132 	X_period_set_name,
133 	X_accounted_period_type,
134 	X_automatically_created_flag;
135     CLOSE access_info_curr;
136 
137   EXCEPTION
138     WHEN NO_DATA_FOUND THEN
139       fnd_message.set_name('SQLGL', 'GL_SHRD_INVALID_ACCESSID');
140       fnd_message.set_token('ACCESSID', to_char(X_access_set_id), FALSE);
141       app_exception.raise_exception;
142     WHEN OTHERS THEN
143       app_exception.raise_exception;
144 
145   END;
146 
147   FUNCTION check_access ( X_access_set_id IN NUMBER,
148                           X_ledger_id     IN NUMBER,
149                           X_segment_value IN VARCHAR2,
150                           X_edate         IN DATE) RETURN VARCHAR2 IS
151 
152     CURSOR check_access_ledger IS
153       SELECT access_privilege_code
154       FROM   gl_access_set_ledgers
155       WHERE  access_set_id = X_access_set_id
156       AND    ledger_id = X_ledger_id
157       AND    (   (X_edate IS NULL)
158               OR (trunc(X_edate) BETWEEN nvl(trunc(start_date), trunc(X_edate)-1)
159                                  AND nvl(trunc(end_date), trunc(X_edate)+1)));
160 
161     CURSOR check_access_segment IS
162       SELECT decode(max(decode(access_privilege_code, 'B', 2, 1)), 1, 'R', 2, 'B', 'N')
163       FROM   gl_access_set_assignments
164       WHERE  access_set_id = X_access_set_id
165       AND    segment_value = X_segment_value
166       AND    (   (X_edate IS NULL)
167               OR (trunc(X_edate) BETWEEN nvl(trunc(start_date), trunc(X_edate)-1)
168                                  AND nvl(trunc(end_date), trunc(X_edate)+1)));
169 
170     CURSOR check_access_ls IS
171       SELECT access_privilege_code
172       FROM   gl_access_set_assignments
173       WHERE  access_set_id = X_access_set_id
174       AND    ledger_id = X_ledger_id
175       AND    segment_value = X_segment_value
176       AND    (   (X_edate IS NULL)
177               OR (trunc(X_edate) BETWEEN nvl(trunc(start_date), trunc(X_edate)-1)
178                                  AND nvl(trunc(end_date), trunc(X_edate)+1)));
179 
180     X_access_privilege_code    VARCHAR2(1);
181 
182   BEGIN
183     IF (X_ledger_id IS NULL) THEN
184       IF (X_segment_value IS NULL) THEN
185         RETURN('B');
186       ELSE
187         OPEN check_access_segment;
188         FETCH check_access_segment INTO X_access_privilege_code;
189         IF NOT check_access_segment%FOUND THEN
190           X_access_privilege_code := gl_formsinfo.NO_ACCESS;
191         END IF;
192         CLOSE check_access_segment;
193       END IF;
194     ELSIF (X_segment_value IS NULL) THEN
195       OPEN check_access_ledger;
196       FETCH check_access_ledger INTO X_access_privilege_code;
197       IF NOT check_access_ledger%FOUND THEN
198         X_access_privilege_code := gl_formsinfo.NO_ACCESS;
199       END IF;
200       CLOSE check_access_ledger;
201     ELSE
202       OPEN check_access_ls;
203       FETCH check_access_ls INTO X_access_privilege_code;
204       IF NOT check_access_ls%FOUND THEN
205         X_access_privilege_code := gl_formsinfo.NO_ACCESS;
206       END IF;
207       CLOSE check_access_ls;
208     END IF;
209 
210     return( X_access_privilege_code);
211 
212   EXCEPTION
213     WHEN OTHERS THEN
214       app_exception.raise_exception;
215   END check_access;
216 
217 
218   FUNCTION get_ledger_type ( X_ledger_id IN NUMBER ) RETURN VARCHAR2 IS
219 
220     CURSOR gsi IS
221       SELECT object_type_code
222       FROM   gl_ledgers
223       WHERE  ledger_id = X_ledger_id;
224 
225     X_ledger_type  VARCHAR2(1);
226 
227   BEGIN
228     OPEN gsi;
229     FETCH gsi INTO X_ledger_type;
230     CLOSE gsi;
231 
232     return( X_ledger_type );
233 
234   EXCEPTION
235     WHEN NO_DATA_FOUND THEN
236       fnd_message.set_name('SQLGL', 'GL_SHRD_INVALID_LEDGERID');
237       fnd_message.set_token('LEDGERID', to_char(X_ledger_id), FALSE);
238       app_exception.raise_exception;
239     WHEN OTHERS THEN
240       app_exception.raise_exception;
241   END;
242 
243 
244   FUNCTION get_default_ledger ( X_access_set_id         IN NUMBER,
245                                 X_access_privilege_code IN VARCHAR2,
246                                 X_edate                 IN DATE) RETURN NUMBER IS
247 
248      -- This cursor is used to find out if the default ledger specified in the
249      -- access set satisfies the access privilege and date requested.
250      CURSOR sdl IS
251       SELECT asl.ledger_id
252       FROM   gl_access_set_ledgers asl
253       WHERE  asl.access_set_id = X_access_set_id
254       AND    asl.ledger_id = (select gas.default_ledger_id
255                               from   gl_access_sets gas
256 	                      where  gas.access_set_id = asl.access_set_id)
257       AND    (   (    (X_access_privilege_code = 'F')
258                   AND (asl.access_privilege_code = 'F'))
259               OR (    (X_access_privilege_code = 'B')
260                   AND (asl.access_privilege_code IN ('F', 'B')))
261               OR ( X_access_privilege_code = 'R'))
262       AND    (   (X_edate IS NULL)
263               OR (trunc(X_edate) BETWEEN nvl(trunc(asl.start_date),trunc(X_edate)-1)
264                                  AND nvl(trunc(asl.end_date), trunc(X_edate)+1)));
265 
266     CURSOR gdl IS
267       SELECT distinct ledger_id
268       FROM   gl_access_set_ledgers
269       WHERE  access_set_id = X_access_set_id
270       AND    (   (    (X_access_privilege_code = 'F')
271                   AND (access_privilege_code = 'F'))
272               OR (    (X_access_privilege_code = 'B')
273                   AND (access_privilege_code IN ('F', 'B')))
274               OR ( X_access_privilege_code = 'R'))
275       AND    (   (X_edate IS NULL)
276               OR (trunc(X_edate) BETWEEN nvl(trunc(start_date), trunc(X_edate)-1)
277                                  AND nvl(trunc(end_date), trunc(X_edate)+1)));
278 
279     X_ledger_id    NUMBER;
280     X_ledger_id2   NUMBER;
281 
282   BEGIN
283     IF (X_access_privilege_code NOT IN
284           (gl_formsinfo.FULL_ACCESS,
285            gl_formsinfo.WRITE_ACCESS,
286            gl_formsinfo.READ_ACCESS)) THEN
287       RETURN(-1);
288     END IF;
289 
290     -- First check if there is a default ledger assigned to the access set
291     -- that satisfies the given access privilege level.  If a default ledger
292     -- is found here, we can return the default ledger ID.
293     OPEN sdl;
294     FETCH sdl INTO X_ledger_id;
295     IF sdl%FOUND THEN
296       CLOSE sdl;
297       return( X_ledger_id );
298     END IF;
299 
300     CLOSE sdl;
301 
302     -- Since there is no default ledger set up for this access set
303     -- or the default ledger specified does not satisfy the access privilege
304     --    or date requested,
305     -- now check if there is one and only one ledger assigned to this access
306     -- set that satisfies the access prilege level and date requested
307     OPEN gdl;
308     FETCH gdl INTO X_ledger_id;
309     IF gdl%FOUND THEN
310       FETCH gdl INTO X_ledger_id2;
311       IF gdl%FOUND THEN
312         X_ledger_id := -1;
313       END IF;
314     ELSE
315       X_ledger_id := -1;
316     END IF;
317 
318     CLOSE gdl;
319 
320     return( X_ledger_id );
321 
322   EXCEPTION
323     WHEN OTHERS THEN
324       app_exception.raise_exception;
325   END get_default_ledger;
326 
327   FUNCTION has_single_ledger ( X_access_set_id IN NUMBER ) RETURN BOOLEAN IS
328     CURSOR ledger_curr IS
329       SELECT count(*)
330       FROM   gl_access_set_ledgers
331       WHERE  access_set_id = X_access_set_id
332       AND    rownum < 3;
333 
334     ledger_count   NUMBER;
335   BEGIN
336     OPEN ledger_curr;
337     FETCH ledger_curr INTO ledger_count;
338     IF (ledger_count = 1) THEN
339       return(TRUE);
340     ELSE
341       return(FALSE);
342     END IF;
343   END has_single_ledger;
344 
345   FUNCTION write_any_ledger ( X_access_set_id IN NUMBER ) RETURN BOOLEAN IS
346     CURSOR ledger_access_curr IS
347       SELECT nvl(max(1),0)
348       FROM   gl_access_set_ledgers
349       WHERE  access_set_id = X_access_set_id
350       AND    access_privilege_code in ('W', 'F')
351       AND    rownum < 2;
352 
353       ledger_access NUMBER;
354   BEGIN
355     OPEN ledger_access_curr;
356     FETCH ledger_access_curr INTO ledger_access;
357     IF (ledger_access = 1) THEN
358       return(TRUE);
359     ELSE
360       return(FALSE);
361     END IF;
362   END write_any_ledger;
363 
364   PROCEDURE get_ledger_info (
365                     X_ledger_id			        IN     NUMBER,
366   	            X_name				IN OUT NOCOPY VARCHAR2,
367 	            X_short_name			IN OUT NOCOPY VARCHAR2,
368                     X_chart_of_accounts_id   		IN OUT NOCOPY NUMBER,
369                     X_currency_code	 		IN OUT NOCOPY VARCHAR2,
370                     X_period_set_name	 		IN OUT NOCOPY VARCHAR2,
371                     X_accounted_period_type 		IN OUT NOCOPY VARCHAR2,
372  		    X_ret_earn_ccid			IN OUT NOCOPY NUMBER,
373                     X_suspense_allowed_flag		IN OUT NOCOPY VARCHAR2,
374                     X_allow_intercompany_post_flag	IN OUT NOCOPY VARCHAR2,
375 		    X_enable_average_balances_flag      IN OUT NOCOPY VARCHAR2,
376 		    X_enable_bc_flag			IN OUT NOCOPY VARCHAR2,
377                     X_require_budget_journals_flag	IN OUT NOCOPY VARCHAR2,
378                     X_enable_je_approval_flag           IN OUT NOCOPY VARCHAR2,
379 		    X_enable_automatic_tax_flag		IN OUT NOCOPY VARCHAR2,
380                     X_consolidation_ledger_flag         IN OUT NOCOPY VARCHAR2,
381 		    X_translate_eod_flag                IN OUT NOCOPY VARCHAR2,
382  		    X_translate_qatd_flag               IN OUT NOCOPY VARCHAR2,
383 		    X_translate_yatd_flag               IN OUT NOCOPY VARCHAR2,
384                     X_automatically_created_flag        IN OUT NOCOPY VARCHAR2,
385 		    X_track_rnd_imbalance_flag          IN OUT NOCOPY VARCHAR2,
386 	 	    X_alc_ledger_type_code		IN OUT NOCOPY VARCHAR2,
387 	 	    X_reconciliation_flag		IN OUT NOCOPY VARCHAR2,
388 		    X_object_type_code                  IN OUT NOCOPY VARCHAR2,
389 		    X_le_ledger_type_code               IN OUT NOCOPY VARCHAR2,
390 		    X_bal_seg_value_option_code         IN OUT NOCOPY VARCHAR2,
391 		    X_bal_seg_column_name               IN OUT NOCOPY VARCHAR2,
392 		    X_mgt_seg_value_option_code         IN OUT NOCOPY VARCHAR2,
393 		    X_mgt_seg_column_name		IN OUT NOCOPY VARCHAR2,
394 		    X_description                       IN OUT NOCOPY VARCHAR2,
395                     X_latest_opened_period_name 	IN OUT NOCOPY VARCHAR2,
396                     X_latest_encumbrance_year 		IN OUT NOCOPY NUMBER,
397 		    X_future_enterable_periods  	IN OUT NOCOPY NUMBER,
398  		    X_cum_trans_ccid			IN OUT NOCOPY NUMBER,
399  		    X_res_encumb_ccid 			IN OUT NOCOPY NUMBER,
400  		    X_net_income_ccid			IN OUT NOCOPY NUMBER,
401                     X_rounding_ccid                     IN OUT NOCOPY NUMBER,
402 		    X_transaction_calendar_id		IN OUT NOCOPY NUMBER,
403                     X_daily_translation_rate_type       IN OUT NOCOPY VARCHAR2,
404 		    X_legal_entity_id                   IN OUT NOCOPY NUMBER,
405                     X_period_average_rate_type          IN OUT NOCOPY VARCHAR2,
406                     X_period_end_rate_type              IN OUT NOCOPY VARCHAR2,
407                     X_ledger_Category_code              IN OUT NOCOPY VARCHAR2) IS
408 
409     CURSOR gsi IS
410       SELECT
411 	     name,
412 	     short_name,
413 	     chart_of_accounts_id,
414 	     currency_code,
415 	     period_set_name,
416 	     accounted_period_type,
417 	     ret_earn_code_combination_id,
418 	     suspense_allowed_flag,
419 	     allow_intercompany_post_flag,
420              enable_average_balances_flag,
421 	     enable_budgetary_control_flag,
422 	     require_budget_journals_flag,
423              enable_je_approval_flag,
424 	     enable_automatic_tax_flag,
425              consolidation_ledger_flag,
426              translate_eod_flag,
427              translate_qatd_flag,
428              translate_yatd_flag,
429              automatically_created_flag,
430 	     track_rounding_imbalance_flag,
431              enable_reconciliation_flag,
432 	     alc_ledger_type_code,
433              object_type_code,
434              le_ledger_type_code,
435              bal_seg_value_option_code,
436              bal_seg_column_name,
437              mgt_seg_value_option_code,
438              mgt_seg_column_name,
439 	     description,
440 	     latest_opened_period_name,
441 	     latest_encumbrance_year,
442 	     future_enterable_periods_limit,
443 	     cum_trans_code_combination_id,
444 	     res_encumb_code_combination_id,
445              net_income_code_combination_id,
446              rounding_code_combination_id,
447              transaction_calendar_id,
448              daily_translation_rate_type,
449              period_average_rate_type,
450              period_end_rate_type,
451              ledger_category_code
452       FROM
453 	     GL_LEDGERS
454       WHERE
455 	     ledger_id = X_ledger_id;
456 
457   BEGIN
458     OPEN gsi;
459     FETCH gsi INTO
460   	            X_name,
461 	            X_short_name,
462                     X_chart_of_accounts_id,
463                     X_currency_code,
464                     X_period_set_name,
465                     X_accounted_period_type,
466  		    X_ret_earn_ccid,
467                     X_suspense_allowed_flag,
468                     X_allow_intercompany_post_flag,
469 		    X_enable_average_balances_flag,
470 		    X_enable_bc_flag,
471                     X_require_budget_journals_flag,
472                     X_enable_je_approval_flag,
473 		    X_enable_automatic_tax_flag,
474                     X_consolidation_ledger_flag,
475 		    X_translate_eod_flag,
476  		    X_translate_qatd_flag,
477 		    X_translate_yatd_flag,
478                     X_automatically_created_flag,
479 		    X_track_rnd_imbalance_flag,
480                     X_reconciliation_flag,
481 		    X_alc_ledger_type_code,
482 		    X_object_type_code,
483 		    X_le_ledger_type_code,
484 		    X_bal_seg_value_option_code,
485 		    X_bal_seg_column_name,
486 		    X_mgt_seg_value_option_code,
487 		    X_mgt_seg_column_name,
488 		    X_description,
489                     X_latest_opened_period_name,
490                     X_latest_encumbrance_year,
491 		    X_future_enterable_periods,
492  		    X_cum_trans_ccid,
493  		    X_res_encumb_ccid,
494  		    X_net_income_ccid,
495                     X_rounding_ccid,
496 		    X_transaction_calendar_id,
497                     X_daily_translation_rate_type,
498                     X_period_average_rate_type,
499                     X_period_end_rate_type,
500                     X_ledger_category_code;
501     CLOSE gsi;
502 
503   EXCEPTION
504     WHEN NO_DATA_FOUND THEN
505       fnd_message.set_name('SQLGL', 'GL_SHRD_INVALID_LEDGERID');
506       fnd_message.set_token('LEDGERID', to_char(X_ledger_id), FALSE);
507       app_exception.raise_exception;
508     WHEN OTHERS THEN
509       app_exception.raise_exception;
510 
511   END get_ledger_info;
512 
513 
514 
515   FUNCTION valid_bsv ( X_ledger_id IN NUMBER,
516                        X_bsv       IN VARCHAR2,
517                        X_edate     IN DATE) RETURN VARCHAR2 IS
518 
519     CURSOR has_all IS
520       SELECT bal_seg_value_option_code
521       FROM gl_ledgers
522       WHERE ledger_id = X_ledger_id;
523 
524     CURSOR is_valid IS
525       SELECT 'Valid'
526       FROM   gl_ledger_segment_values
527       WHERE  ledger_id = X_ledger_id
528       AND    segment_type_code = 'B'
529       AND    segment_value = X_bsv
530       AND    (   (X_edate IS NULL)
531               OR (trunc(X_edate) BETWEEN nvl(trunc(start_date), trunc(X_edate)-1)
532                                  AND nvl(trunc(end_date), trunc(X_edate)+1)));
533 
534     Dummy          VARCHAR2(30);
535     bsv_option     VARCHAR2(1);
536   BEGIN
537     OPEN has_all;
538     FETCH has_all INTO bsv_option;
539     CLOSE has_all;
540 
541     -- If all bsvs are allowed, then return Yes
542     IF (nvl(bsv_option,'I') = 'A') THEN
543       RETURN('Y');
544     ELSE
545       OPEN is_valid;
546       FETCH is_valid INTO Dummy;
547       IF is_valid%FOUND THEN
548         CLOSE is_valid;
549         RETURN('Y');
550       ELSE
551         CLOSE is_valid;
552         RETURN('N');
553       END IF;
554     END IF;
555   EXCEPTION
556     WHEN OTHERS THEN
557       app_exception.raise_exception;
558   END valid_bsv;
559 
560 
561   FUNCTION valid_msv ( X_ledger_id IN NUMBER,
562                        X_msv       IN VARCHAR2,
563                        X_edate     IN DATE) RETURN VARCHAR2 IS
564 
565     CURSOR has_all IS
566       SELECT mgt_seg_value_option_code
567       FROM gl_ledgers
568       WHERE ledger_id = X_ledger_id;
569 
570     CURSOR is_valid IS
571       SELECT 'Valid'
572       FROM   gl_ledger_segment_values
573       WHERE  ledger_id = X_ledger_id
574       AND    segment_type_code = 'M'
575       AND    segment_value = X_msv
576       AND    (   (X_edate IS NULL)
577               OR (trunc(X_edate) BETWEEN nvl(trunc(start_date), trunc(X_edate)-1)
578                                  AND nvl(trunc(end_date), trunc(X_edate)+1)));
579 
580     Dummy          VARCHAR2(30);
581     msv_option     VARCHAR2(1);
582   BEGIN
583     OPEN has_all;
584     FETCH has_all INTO msv_option;
585     CLOSE has_all;
586 
587     -- If all bsvs are allowed, then return Yes
588     IF (nvl(msv_option,'I') = 'A') THEN
589       RETURN('Y');
590     ELSE
591       OPEN is_valid;
592       FETCH is_valid INTO Dummy;
593       IF is_valid%FOUND THEN
594         CLOSE is_valid;
595         RETURN('Y');
596       ELSE
597         CLOSE is_valid;
598         RETURN('N');
599       END IF;
600     END IF;
601   EXCEPTION
602     WHEN OTHERS THEN
603       app_exception.raise_exception;
604   END valid_msv;
605 
606   FUNCTION multi_org RETURN BOOLEAN IS
607     CURSOR is_multi IS
608       SELECT nvl(multi_org_flag, 'N')
609       FROM fnd_product_groups;
610     dummy VARCHAR2(1);
611   BEGIN
612     OPEN is_multi;
613     FETCH is_multi INTO dummy;
614 
615     IF is_multi%FOUND THEN
616       CLOSE is_multi;
617 
618       IF (dummy = 'N') THEN
619         RETURN (FALSE);
620       ELSE
621         RETURN (TRUE);
622       END IF;
623 
624     ELSE
625       CLOSE is_multi;
626       RETURN(FALSE);
627     END IF;
628   END multi_org;
629 
630   FUNCTION install_info(appl_id		IN NUMBER,
631 			dep_appl_id	IN NUMBER,
632 			status		OUT NOCOPY VARCHAR2) RETURN BOOLEAN IS
633     industry VARCHAR2(1);
634   BEGIN
635     RETURN(fnd_installation.get(appl_id, dep_appl_id, status, industry));
636   END install_info;
637 
638   PROCEDURE get_iea_info(x_subsidiary_id		   NUMBER,
639 			 x_name		    	    IN OUT NOCOPY VARCHAR2,
640 			 x_chart_of_accounts_id     IN OUT NOCOPY NUMBER,
641 			 x_ledger_id		    IN OUT NOCOPY NUMBER,
642  			 x_enabled_flag	    	    IN OUT NOCOPY VARCHAR2,
643 			 x_subsidiary_type_code     IN OUT NOCOPY VARCHAR2,
644                          x_company_value	    IN OUT NOCOPY VARCHAR2,
645                          x_currency_code	    IN OUT NOCOPY VARCHAR2,
646 		         x_autoapprove_flag	    IN OUT NOCOPY VARCHAR2,
647 			 x_view_partner_lines_flag  IN OUT NOCOPY VARCHAR2,
648 			 x_conversion_type_code	    IN OUT NOCOPY VARCHAR2,
649 			 x_conversion_type	    IN OUT NOCOPY VARCHAR2,
650 			 x_remote_instance_flag	    IN OUT NOCOPY VARCHAR2,
651 			 x_transfer_ledger_id IN OUT NOCOPY NUMBER,
652 			 x_transfer_currency_code   IN OUT NOCOPY VARCHAR2,
653 			 x_contact		    IN OUT NOCOPY VARCHAR2,
654 			 x_notification_threshold   IN OUT NOCOPY NUMBER) IS
655   BEGIN
656 
657 
658   /* GL_IEA_SUBSIDIARY_PKG dropped in Ledger Architecture.
659     gl_iea_subsidiary_pkg.select_columns(
660       x_subsidiary_id,
661       x_name,
662       x_chart_of_accounts_id,
663       x_ledger_id,
664       x_enabled_flag,
665       x_subsidiary_type_code,
666       x_company_value,
667       x_currency_code,
668       x_autoapprove_flag,
669       x_view_partner_lines_flag,
670       x_conversion_type_code,
671       x_conversion_type,
672       x_remote_instance_flag,
673       x_transfer_ledger_id,
674       x_transfer_currency_code,
675       x_contact,
676       x_notification_threshold);
677   */
678 
679   x_chart_of_accounts_id := NULL;
680 
681   END get_iea_info;
682 
683   PROCEDURE get_usage_info(
684               x_average_balances_flag		IN OUT NOCOPY  VARCHAR2,
685               x_consolidation_ledger_flag       IN OUT NOCOPY  VARCHAR2) IS
686   BEGIN
687     gl_system_usages_pkg.select_columns(x_average_balances_flag,
688                                         x_consolidation_ledger_flag);
689   END get_usage_info;
690 
691   PROCEDURE get_business_days_pattern(X_transaction_cal_id     IN NUMBER,
692 	 		              X_start_date             IN DATE,
693                                       X_end_date               IN DATE,
694 			              X_bus_days_pattern       IN OUT NOCOPY VARCHAR2
695                                      ) IS
696   BEGIN
697     gl_trans_dates_pkg.get_business_days_pattern(
698       X_transaction_cal_id,
699       X_start_date,
700       X_end_date,
701       X_bus_days_pattern);
702   END get_business_days_pattern;
703 
704   FUNCTION iea_disabled_subsidiary(X_Subsidiary_Id IN NUMBER) RETURN BOOLEAN IS
705      dummy VARCHAR2(1);
706   BEGIN
707 /*
708      IF X_Subsidiary_Id IS NOT NULL THEN
709            SELECT 'x' INTO dummy
710            FROM gl_iea_subsidiaries
711            WHERE  subsidiary_id = X_Subsidiary_Id
712            AND    enabled_flag = 'Y';
713      END IF;
714 */
715 
716      return(FALSE);
717   EXCEPTION
718      WHEN NO_DATA_FOUND THEN
719           return(TRUE);
720      WHEN OTHERS THEN
721          fnd_message.set_name('SQLGL', 'GL_UNHANDLED_EXCEPTION');
722          fnd_message.set_token('PROCEDURE',
723              'GL_FORMSINFO.iea_disabled_subsidiary');
724          APP_EXCEPTION.Raise_Exception;
725   END iea_disabled_subsidiary;
726 
727   FUNCTION get_industry_message(Message_Name           IN VARCHAR2,
728                                 Application_Shortname  IN VARCHAR2)
729     RETURN VARCHAR2 IS
730   BEGIN
731     RETURN(gl_public_sector.get_message_name(Message_Name,
732                                              Application_Shortname));
733   END get_industry_message;
734 
735   FUNCTION session_id RETURN NUMBER IS
736     sid NUMBER;
737   BEGIN
738     SELECT s.sid
739     INTO sid
740     FROM v$session s, v$process p
741     WHERE s.paddr = p.addr
742     AND   audsid = USERENV('SESSIONID');
743 
744     RETURN sid;
745   END session_id;
746 
747   FUNCTION serial_id RETURN NUMBER IS
748     sid NUMBER;
749   BEGIN
750     SELECT s.serial#
751     INTO sid
752     FROM v$session s, v$process p
753     WHERE s.paddr = p.addr
754     AND   audsid = USERENV('SESSIONID');
755 
756     RETURN sid;
757   END serial_id;
758 
759 END GL_FORMSINFO;