[Home] [Help]
PACKAGE BODY: APPS.XLA_ACCTG_METHODS_PKG
Source
1 PACKAGE BODY xla_acctg_methods_pkg AS
2 /* $Header: xlaamsam.pkb 120.8 2005/05/24 13:58:50 ksvenkat ship $ */
3 /*======================================================================+
4 | Copyright (c) 1995-2002 Oracle Corporation |
5 | Redwood Shores, CA, USA |
6 | All rights reserved. |
7 +=======================================================================+
8 | PACKAGE NAME |
9 | xla_acctg_methods_pkg |
10 | |
11 | DESCRIPTION |
12 | XLA Subledger Accounting Methods |
13 | |
14 | HISTORY |
15 | 01-May-01 Dimple Shah Created |
16 | |
17 +======================================================================*/
18
19 /*======================================================================+
20 | |
21 | Public Procedure |
22 | |
23 | delete_method_details |
24 | |
25 | Deletes all details of the accounting method |
26 | |
27 +======================================================================*/
28
29 PROCEDURE delete_method_details
30 (p_accounting_method_type_code IN VARCHAR2
31 ,p_accounting_method_code IN VARCHAR2)
32 IS
33
34 BEGIN
35
36 xla_utility_pkg.trace('> xla_acctg_methods_pkg.delete_method_details' , 10);
37
38 xla_utility_pkg.trace('accounting_method_type_code = '||p_accounting_method_type_code , 20);
39 xla_utility_pkg.trace('accounting_method_code = '||p_accounting_method_code , 20);
40
41 DELETE
42 FROM xla_acctg_method_rules
43 WHERE accounting_method_type_code = p_accounting_method_type_code
44 AND accounting_method_code = p_accounting_method_code;
45
46 xla_utility_pkg.trace('< xla_acctg_methods_pkg.delete_method_details' , 10);
47
48 EXCEPTION
49 WHEN xla_exceptions_pkg.application_exception THEN
50 RAISE;
51 WHEN OTHERS THEN
52 xla_exceptions_pkg.raise_message
53 (p_location => 'xla_acctg_methods_pkg.delete_method_details');
54
55 END delete_method_details;
56
57 /*======================================================================+
58 | |
59 | Public Procedure |
60 | |
61 | copy_method_details |
62 | |
63 | Copies details of a accounting method into a new accounting method |
64 | |
65 +======================================================================*/
66
67 PROCEDURE copy_method_details
68 (p_old_accting_meth_type_code IN VARCHAR2
69 ,p_old_accting_meth_code IN VARCHAR2
70 ,p_new_accting_meth_type_code IN VARCHAR2
71 ,p_new_accting_meth_code IN VARCHAR2)
72 IS
73
74 l_creation_date DATE;
75 l_last_update_date DATE;
76 l_created_by INTEGER;
77 l_last_update_login INTEGER;
78 l_last_updated_by INTEGER;
79
80 l_acctg_method_rule_id NUMBER(38) ;
81
82 CURSOR c_meth_rules
83 IS
84 SELECT application_id, amb_context_code, product_rule_type_code, product_rule_code,
85 start_date_active, end_date_active
86 FROM xla_acctg_method_rules
87 WHERE accounting_method_type_code = p_old_accting_meth_type_code
88 AND accounting_method_code = p_old_accting_meth_code;
89
90 l_meth_rule c_meth_rules%rowtype;
91
92 BEGIN
93
94 xla_utility_pkg.trace('> xla_acctg_methods_pkg.copy_method_details' , 10);
95
96 xla_utility_pkg.trace('old_accting_meth_type_code = '||p_old_accting_meth_type_code , 20);
97 xla_utility_pkg.trace('old_accting_meth_code = '||p_old_accting_meth_code , 20);
98 xla_utility_pkg.trace('new_accting_meth_type_code = '||p_new_accting_meth_type_code , 20);
99 xla_utility_pkg.trace('new_accting_meth_code = '||p_new_accting_meth_code , 20);
100
101 l_creation_date := sysdate;
102 l_last_update_date := sysdate;
103 l_created_by := xla_environment_pkg.g_usr_id;
104 l_last_update_login := xla_environment_pkg.g_login_id;
105 l_last_updated_by := xla_environment_pkg.g_usr_id;
106 OPEN c_meth_rules;
107 LOOP
108 FETCH c_meth_rules
109 INTO l_meth_rule;
110 EXIT WHEN c_meth_rules%notfound;
111
112 SELECT xla_acctg_method_rules_s.nextval
113 INTO l_acctg_method_rule_id
114 FROM DUAL;
115
116 INSERT INTO xla_acctg_method_rules
117 (acctg_method_rule_id
118 ,accounting_method_type_code
119 ,accounting_method_code
120 ,application_id
121 ,amb_context_code
122 ,product_rule_type_code
123 ,product_rule_code
124 ,start_date_active
125 ,end_date_active
126 ,creation_date
127 ,created_by
128 ,last_update_date
129 ,last_updated_by
130 ,last_update_login)
131 VALUES
132 (l_acctg_method_rule_id
133 ,p_new_accting_meth_type_code
134 ,p_new_accting_meth_code
135 ,l_meth_rule.application_id
136 ,l_meth_rule.amb_context_code
137 ,l_meth_rule.product_rule_type_code
138 ,l_meth_rule.product_rule_code
139 ,l_meth_rule.start_date_active
140 ,l_meth_rule.end_date_active
141 ,l_creation_date
142 ,l_created_by
143 ,l_last_update_date
144 ,l_last_updated_by
145 ,l_last_update_login);
146
147 END LOOP;
148 CLOSE c_meth_rules;
149
150 xla_utility_pkg.trace('< xla_acctg_methods_pkg.copy_method_details' , 10);
151
152 EXCEPTION
153 WHEN xla_exceptions_pkg.application_exception THEN
154 IF c_meth_rules%ISOPEN THEN
155 CLOSE c_meth_rules;
156 END IF;
157 RAISE;
158 WHEN OTHERS THEN
159 IF c_meth_rules%ISOPEN THEN
160 CLOSE c_meth_rules;
161 END IF;
162 xla_exceptions_pkg.raise_message
163 (p_location => 'xla_acctg_methods_pkg.copy_method_details');
164
165 END copy_method_details;
166
167 /*======================================================================+
168 | |
169 | Public Function |
170 | |
171 | method_in_use |
172 | |
173 | Returns true if the accounting method is assigned to a ledger |
174 | |
175 +======================================================================*/
176
177 FUNCTION method_in_use
178 (p_event IN VARCHAR2
179 ,p_accounting_method_type_code IN VARCHAR2
180 ,p_accounting_method_code IN VARCHAR2
181 ,p_ledger_name IN OUT NOCOPY VARCHAR2)
182 RETURN BOOLEAN
183 IS
184
185 l_return BOOLEAN;
186 l_exist VARCHAR2(1);
187 l_ledger_name VARCHAR2(30) := null;
188
189 CURSOR c_assignment_exist
190 IS
191 SELECT name ledger_name
192 FROM xla_gl_ledgers_v
193 WHERE sla_accounting_method_type = p_accounting_method_type_code
194 AND sla_accounting_method_code = p_accounting_method_code;
195
196 BEGIN
197
198 xla_utility_pkg.trace('> xla_acctg_methods_pkg.method_in_use' , 10);
199
200 xla_utility_pkg.trace('event = '||p_event , 20);
201 xla_utility_pkg.trace('accounting_method_type_code = '||p_accounting_method_type_code , 20);
202 xla_utility_pkg.trace('accounting_method_code = '||p_accounting_method_code , 20);
203
204 IF p_event in ('DELETE','UPDATE','DISABLE') THEN
205 OPEN c_assignment_exist;
206 FETCH c_assignment_exist
207 INTO l_ledger_name;
208 IF c_assignment_exist%found then
209 p_ledger_name := l_ledger_name;
210 l_return := TRUE;
211 ELSE
212 l_return := FALSE;
213 END IF;
214 CLOSE c_assignment_exist;
215
216 ELSE
217 xla_exceptions_pkg.raise_message
218 ('XLA' ,'XLA_COMMON_ERROR'
219 ,'ERROR' ,'Invalid event passed'
220 ,'LOCATION' ,'xla_acctg_methods_pkg.method_in_use');
221
222 END IF;
223
224 xla_utility_pkg.trace('< xla_acctg_methods_pkg.method_in_use' , 10);
225
226 return l_return;
227
228 EXCEPTION
229 WHEN xla_exceptions_pkg.application_exception THEN
230 RAISE;
231 WHEN OTHERS THEN
232
233 xla_exceptions_pkg.raise_message
234 (p_location => 'xla_acctg_methods_pkg.method_in_use');
235
236 END method_in_use;
237
238 /*======================================================================+
239 | |
240 | Public Function |
241 | |
242 | method_is_invalid |
243 | |
244 | Returns true if the accounting method is invalid |
245 | |
246 +======================================================================*/
247
248 FUNCTION method_is_invalid
249 (p_accounting_method_type_code IN VARCHAR2
250 ,p_accounting_method_code IN VARCHAR2
251 ,p_message_name OUT NOCOPY VARCHAR2)
252 RETURN BOOLEAN
253 IS
254
255 l_return BOOLEAN;
256 l_exist VARCHAR2(1);
257 l_message_name VARCHAR2(30);
258 l_count NUMBER(10);
259
260 BEGIN
261
262 xla_utility_pkg.trace('> xla_acctg_methods_pkg.method_is_invalid' , 10);
263
264 xla_utility_pkg.trace('accounting_method_type_code = '||p_accounting_method_type_code , 20);
265 xla_utility_pkg.trace('accounting_method_code = '||p_accounting_method_code , 20);
266
267 xla_utility_pkg.trace('< xla_acctg_methods_pkg.method_is_invalid' , 10);
268
269 l_return := FALSE;
270
271 return l_return;
272
273 EXCEPTION
274 WHEN xla_exceptions_pkg.application_exception THEN
275 RAISE;
276
277 WHEN OTHERS THEN
278 xla_exceptions_pkg.raise_message
279 (p_location => 'xla_acctg_methods_pkg.method_is_invalid');
280
281 END method_is_invalid;
282
283 END xla_acctg_methods_pkg;