[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;