DBA Data[Home] [Help]

PACKAGE BODY: APPS.GL_CA_UTILITY_PKG

Source


1 PACKAGE BODY gl_ca_utility_pkg AS
2 /* $Header: glcautb.pls 120.1 2003/03/11 03:44:55 lpoon noship $ */
3 
4 -- Procedure
5 --   get_sob_type
6 --   *Should call gl_mc_info.get_alc_ledger_type() instead and this is for
7 --    backward
8 -- Purpose
9 --   Gets the type of set of books
10 -- History
11 --   25-FEB-03       LPOON                 R11i.X changes
12 PROCEDURE get_sob_type ( p_sob_id   IN  NUMBER,
13                          p_sob_type OUT NOCOPY VARCHAR2) IS
14   n_alc_ledger_type VARCHAR2(30);
15 BEGIN
16 
17   gl_mc_info.get_alc_ledger_type(p_sob_id, n_alc_ledger_type);
18 
19   IF n_alc_ledger_type = 'SOURCE'
20   THEN
21     p_sob_type := 'P';
22   ELSIF n_alc_ledger_type = 'TARGET'
23   THEN
24     p_sob_type := 'R';
25   ELSIF n_alc_ledger_type = 'NONE'
26   THEN
27     p_sob_type := 'N';
28   ELSE
29     p_sob_type := NULL;
30   END IF;
31 END;
32 
33 -- Procedure
34 --   mrc_enabled
35 --   *May use gl_mc_info.alc_enabled() but it is a procedure rather than
36 --    a function returning BOOLEAN
37 -- Purpose
38 --   Determines whether MRC is enabled
39 FUNCTION mrc_enabled ( p_sob_id         IN  NUMBER,
40                        p_appl_id        IN  NUMBER,
41                        p_org_id         IN  NUMBER,
42                        p_fa_book_code   IN  VARCHAR2) RETURN BOOLEAN IS
43 BEGIN
44    RETURN gl_mc_info.alc_enabled(p_sob_id, p_appl_id, p_org_id, p_fa_book_code);
45 END;
46 
47 -- Procedure
48 --   get_associated_sobs
49 -- Purpose
50 --   Gets the Primary and Reporting set of books info
51 -- History
52 --
53 PROCEDURE get_associated_sobs ( p_sob_id         IN     NUMBER,
54                                 p_appl_id        IN     NUMBER,
55                                 p_org_id         IN     NUMBER,
56                                 p_fa_book_code   IN     VARCHAR2,
57                                 p_sob_list       IN OUT NOCOPY r_sob_list) IS
58  n_sob_list gl_mc_info.r_sob_list := gl_mc_info.r_sob_list();
59 BEGIN
60   -- This procedure used to exclude primary SOB, so we put 'N' to exclude
61   -- ALC source ledger
62   gl_mc_info.get_alc_associated_ledgers(  p_sob_id
63                                         , p_appl_id
64                                         , p_org_id
65                                         , p_fa_book_code
66                                         , 'N'
67                                         , n_sob_list);
68 
69   p_sob_list.extend(n_sob_list.count);
70 
71   -- Copy the SOB ID, name, and currency from n_sob_list to p_sob_list
72   FOR i IN 1..n_sob_list.count LOOP
73     SELECT n_sob_list(i).r_sob_id,
74            n_sob_list(i).r_sob_name,
75            n_sob_list(i).r_sob_curr
76     INTO p_sob_list(i).r_sob_id,
77          p_sob_list(i).r_sob_name,
78          p_sob_list(i).r_sob_curr
79     FROM dual;
80   END LOOP;
81 
82 END;
83 
84 -- Procedure
85 --   get_rate
86 -- Purpose
87 --   Gets the reporting SOBs rate info for a particular transaction
88 -- History
89 --
90 PROCEDURE get_rate( p_primary_set_of_books_id  IN NUMBER,
91                     p_trans_date               IN DATE,
92                     p_trans_currency_code      IN VARCHAR2,
93                     p_application_id           IN NUMBER,
94                     p_org_id                   IN NUMBER,
95                     p_exchange_rate_date       IN DATE,
96                     p_exchange_rate	           IN NUMBER,
97                     p_exchange_rate_type       IN VARCHAR2,
98                     p_fa_book_type_code        IN VARCHAR2 DEFAULT NULL,
99                     p_je_source_name           IN VARCHAR2 DEFAULT NULL,
100                     p_je_category_name         IN VARCHAR2 DEFAULT NULL,
101                     p_sob_list                 IN OUT NOCOPY r_sob_list ) IS
102   l_counter          NUMBER := 1;
103   l_conversion_type  VARCHAR2(30);
104   l_conversion_date DATE;
105   l_conversion_rate  NUMBER;
106   l_result_code      VARCHAR2(25);
107   l_numerator_rate   NUMBER;
108   l_denominator_rate NUMBER;
109   l_rep_curr         VARCHAR2(15);
110 
111 BEGIN
112   WHILE (l_counter <= p_sob_list.count) LOOP
113 
114     -- Initialize the passed parameters before calling API
115     l_conversion_date  := p_exchange_rate_date;
116     l_conversion_type  := p_exchange_rate_type;
117     l_conversion_rate  := p_exchange_rate;
118     l_result_code      := NULL;
119     l_numerator_rate   := NULL;
120     l_denominator_rate := NULL;
121 
122     gl_mc_info.get_ledger_currency(p_sob_list(l_counter).r_sob_id, l_rep_curr);
123 
124     IF (l_rep_curr = p_trans_currency_code) THEN
125       -- Reporting Currency same as transaction currency so put all
126       -- conversion info to NULL and set correct result code
127       l_conversion_date := NULL;
128       l_conversion_type := NULL;
129       l_conversion_rate := NULL;
130       l_result_code     := 'HEADER VALID ';
131     ELSE
132       -- Call API to get the rate for this reporting SOB whose currency is
133       -- different with transaction currency
134       GL_MC_CURRENCY_PKG.get_rate(
135                         p_primary_set_of_books_id,
136                         p_sob_list(l_counter).r_sob_id,
137                         p_trans_date,
138                         p_trans_currency_code,
139                         l_conversion_type,
140                         l_conversion_date,
141                         l_conversion_rate,
142                         p_application_id,
143                         p_org_id,
144                         p_fa_book_type_code,
145                         p_je_source_name,
146                         p_je_category_name,
147                         l_result_code,
148                         l_numerator_rate,
149                         l_denominator_rate);
150     END IF;
151 
152     -- Store the returned values back to p_sob_list
153     SELECT l_conversion_date,
154            l_conversion_type,
155            l_conversion_rate,
156            l_numerator_rate,
157            l_denominator_rate,
158            l_result_code
159       INTO p_sob_list(l_counter).conversion_date,
160            p_sob_list(l_counter).conversion_type,
161            p_sob_list(l_counter).conversion_rate,
162            p_sob_list(l_counter).numerator_rate,
163            p_sob_list(l_counter).denominator_rate,
164            p_sob_list(l_counter).result_code
165       FROM DUAL;
166 
167     l_counter := l_counter + 1;
168   END LOOP;
169 END get_rate;
170 
171 END gl_ca_utility_pkg;