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