[Home] [Help]
PACKAGE BODY: APPS.XLA_EVENT_CLASSES_PKG
Source
1 PACKAGE BODY xla_event_classes_pkg AS
2 /* $Header: xlaamdec.pkb 120.9 2005/05/24 12:19:21 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_event_classes_pkg |
10 | |
11 | DESCRIPTION |
12 | XLA Event Classes Package |
13 | |
14 | HISTORY |
15 | 01-May-01 Dimple Shah Created |
16 | |
17 +======================================================================*/
18
19 /*======================================================================+
20 | |
21 | Public Function |
22 | |
23 | class_details_exist |
24 | |
25 | Returns true if details of the class exist |
26 | |
27 +======================================================================*/
28 FUNCTION class_details_exist
29 (p_event IN VARCHAR2
30 ,p_application_id IN NUMBER
31 ,p_entity_code IN VARCHAR2
32 ,p_event_class_code IN VARCHAR2)
33 RETURN BOOLEAN
34 IS
35
36 --
37 -- Private variables
38 --
39 l_exist varchar2(1);
40 l_return BOOLEAN;
41
42 --
43 -- Cursor declarations
44 --
45 CURSOR check_event_types
46 IS
47 SELECT 'x'
48 FROM xla_event_types_vl
49 WHERE application_id = p_application_id
50 AND entity_code = p_entity_code
51 AND event_class_code = p_event_class_code
52 AND event_type_code <> p_event_class_code||'_ALL';
53
54 CURSOR check_enabled_event_types
55 IS
56 SELECT 'x'
57 FROM xla_event_types_vl
58 WHERE application_id = p_application_id
59 AND entity_code = p_entity_code
60 AND event_class_code = p_event_class_code
61 AND event_type_code <> p_event_class_code||'_ALL'
62 AND enabled_flag = 'Y';
63
64 CURSOR check_line_types
65 IS
66 SELECT 'x'
67 FROM xla_acct_line_types_vl
68 WHERE application_id = p_application_id
69 AND entity_code = p_entity_code
70 AND event_class_code = p_event_class_code;
71
72 CURSOR check_enabled_line_types
73 IS
74 SELECT 'x'
75 FROM xla_acct_line_types_vl
76 WHERE application_id = p_application_id
77 AND entity_code = p_entity_code
78 AND event_class_code = p_event_class_code
79 AND enabled_flag = 'Y';
80
81 CURSOR check_analytical
82 IS
83 SELECT 'x'
84 FROM xla_analytical_sources
85 WHERE application_id = p_application_id
86 AND entity_code = p_entity_code
87 AND event_class_code = p_event_class_code;
88
89 CURSOR check_prod_rules
90 IS
91 SELECT 'x'
92 FROM xla_prod_acct_headers
93 WHERE application_id = p_application_id
94 AND entity_code = p_entity_code
95 AND event_class_code = p_event_class_code;
96
97 BEGIN
98 xla_utility_pkg.trace('> xla_event_classes_pkg.class_details_exist' , 10);
99
100 xla_utility_pkg.trace('event = '||p_event, 20);
101 xla_utility_pkg.trace('application_id = '||p_application_id , 20);
102 xla_utility_pkg.trace('entity_code = '||p_entity_code , 20);
103 xla_utility_pkg.trace('entity_code = '||p_event_class_code , 20);
104
105 IF p_event = 'DELETE' THEN
106
107 OPEN check_event_types;
108 FETCH check_event_types
109 INTO l_exist;
110 IF check_event_types%found THEN
111 l_return := TRUE;
112 ELSE
113 l_return := FALSE;
114 END IF;
115 CLOSE check_event_types;
116
117 IF l_return = FALSE THEN
118 OPEN check_line_types;
119 FETCH check_line_types
120 INTO l_exist;
121 IF check_line_types%found THEN
122 l_return := TRUE;
123 ELSE
124 l_return := FALSE;
125 END IF;
126 CLOSE check_line_types;
127 END IF;
128
129 IF l_return = FALSE THEN
130 OPEN check_prod_rules;
131 FETCH check_prod_rules
132 INTO l_exist;
133 IF check_prod_rules%found THEN
134 l_return := TRUE;
135 ELSE
136 l_return := FALSE;
137 END IF;
138 CLOSE check_prod_rules;
139 END IF;
140
141 IF l_return = FALSE THEN
142 OPEN check_analytical;
143 FETCH check_analytical
144 INTO l_exist;
145 IF check_analytical%found THEN
146 l_return := TRUE;
147 ELSE
148 l_return := FALSE;
149 END IF;
150 CLOSE check_analytical;
151 END IF;
152
153 ELSIF p_event = 'DISABLE' THEN
154
155 OPEN check_enabled_event_types;
156 FETCH check_enabled_event_types
157 INTO l_exist;
158 IF check_enabled_event_types%found THEN
159 l_return := TRUE;
160 ELSE
161 l_return := FALSE;
162 END IF;
163 CLOSE check_enabled_event_types;
164
165 IF l_return = FALSE THEN
166 OPEN check_enabled_line_types;
167 FETCH check_enabled_line_types
168 INTO l_exist;
169 IF check_enabled_line_types%found THEN
170 l_return := TRUE;
171 ELSE
172 l_return := FALSE;
173 END IF;
174 CLOSE check_enabled_line_types;
175 END IF;
176
177 IF l_return = FALSE THEN
178 OPEN check_prod_rules;
179 FETCH check_prod_rules
180 INTO l_exist;
181 IF check_prod_rules%found THEN
182 l_return := TRUE;
183 ELSE
184 l_return := FALSE;
185 END IF;
186 CLOSE check_prod_rules;
187 END IF;
188
189 IF l_return = FALSE THEN
190 OPEN check_analytical;
191 FETCH check_analytical
192 INTO l_exist;
193 IF check_analytical%found THEN
194 l_return := TRUE;
195 ELSE
196 l_return := FALSE;
197 END IF;
198 CLOSE check_analytical;
199 END IF;
200
201 END IF;
202
203 xla_utility_pkg.trace('< xla_event_classes_pkg.class_details_exist' , 10);
204 RETURN l_return;
205
206 EXCEPTION
207 WHEN xla_exceptions_pkg.application_exception THEN
208 RAISE;
209 WHEN OTHERS THEN
210 xla_exceptions_pkg.raise_message
211 (p_location => 'xla_event_classes_pkg.class_details_exist');
212
213 END class_details_exist;
214
215 /*======================================================================+
216 | |
217 | Public Procedure |
218 | |
219 | delete_class_details |
220 | |
221 | Deletes all details of the class |
222 | |
223 +======================================================================*/
224
225 PROCEDURE delete_class_details
226 (p_application_id IN NUMBER
227 ,p_entity_code IN VARCHAR2
228 ,p_event_class_code IN VARCHAR2)
229 IS
230
231 l_event_mapping_id integer;
232 l_application_id integer;
233 l_event_class_code varchar2(30);
234
235 CURSOR c_event_mappings
236 IS
237 SELECT event_mapping_id
238 FROM xla_event_mappings_vl
239 WHERE application_id = p_application_id
240 AND entity_code = p_entity_code
241 AND event_class_code = p_event_class_code;
242 BEGIN
243
244 xla_utility_pkg.trace('> xla_event_classes_pkg.delete_class_details' , 10);
245
246 xla_utility_pkg.trace('application_id = '||p_application_id , 20);
247 xla_utility_pkg.trace('entity_code = '||p_entity_code , 20);
248 xla_utility_pkg.trace('event_class_code = '||p_event_class_code , 20);
249
250 l_application_id := p_application_id;
251 l_event_class_code := p_event_class_code;
252
253 DELETE
254 FROM xla_event_sources
255 WHERE application_id = p_application_id
256 AND entity_code = p_entity_code
257 AND event_class_code = p_event_class_code;
258
259 DELETE
260 FROM xla_extract_objects
261 WHERE application_id = p_application_id
262 AND entity_code = p_entity_code
263 AND event_class_code = p_event_class_code;
264
265 DELETE
266 FROM xla_event_class_predecs
267 WHERE application_id = p_application_id
268 AND event_class_code = p_event_class_code;
269
270 OPEN c_event_mappings;
271 LOOP
272 FETCH c_event_mappings
273 INTO l_event_mapping_id;
274 EXIT WHEN c_event_mappings%notfound;
275
276 xla_event_mappings_f_pkg.delete_row
277 (x_event_mapping_id => l_event_mapping_id);
278
279 END LOOP;
280 CLOSE c_event_mappings;
281
282 xla_acct_setup_pkg.delete_event_class_setup
283 (p_application_id => l_application_id
284 ,p_event_class_code => l_event_class_code);
285
286 DELETE
287 FROM xla_event_class_attrs
288 WHERE application_id = p_application_id
289 AND entity_code = p_entity_code
290 AND event_class_code = p_event_class_code;
291
292 xla_event_types_f_pkg.delete_row
293 (x_application_id => p_application_id
294 ,x_entity_code => p_entity_code
295 ,x_event_class_code => p_event_class_code
296 ,x_event_type_code => p_event_class_code||'_ALL');
297
298 xla_utility_pkg.trace('< xla_event_classes_pkg.delete_class_details' , 10);
299
300 EXCEPTION
301 WHEN xla_exceptions_pkg.application_exception THEN
302 RAISE;
303 WHEN OTHERS THEN
304 xla_exceptions_pkg.raise_message
305 (p_location => 'xla_event_classes_pkg.delete_class_details');
306
307 END delete_class_details;
308
309 /*======================================================================+
310 | |
311 | Public Procedure |
312 | |
313 | create_default_event_type |
314 | |
315 | Creates a default event type for the class |
316 | |
317 +======================================================================*/
318
319 PROCEDURE create_default_event_type
320 (p_application_id IN NUMBER
321 ,p_entity_code IN VARCHAR2
322 ,p_event_class_code IN VARCHAR2)
323 IS
324
325 BEGIN
326
327 xla_utility_pkg.trace('> xla_event_classes_pkg.create_default_event_type' , 10);
328
329 xla_utility_pkg.trace('application_id = '||p_application_id , 20);
330 xla_utility_pkg.trace('entity_code = '||p_entity_code , 20);
331
332 xla_utility_pkg.trace('< xla_event_classes_pkg.create_default_event_type' , 10);
333
334 EXCEPTION
335 WHEN xla_exceptions_pkg.application_exception THEN
336 RAISE;
337 WHEN OTHERS THEN
338 xla_exceptions_pkg.raise_message
339 (p_location => 'xla_event_classes_pkg.create_default_event_type');
340
341 END create_default_event_type;
342
343 /*======================================================================+
344 | |
345 | Public Function |
346 | |
347 | uncompile_definitions |
348 | |
349 | Returns true if all the application accounting definitions and |
350 | journal line definitions using this segment rule are uncompiled |
351 | |
352 +======================================================================*/
353
354 FUNCTION uncompile_definitions
355 (p_application_id IN NUMBER
356 ,p_event_class_code IN VARCHAR2
357 ,x_product_rule_name IN OUT NOCOPY VARCHAR2
358 ,x_product_rule_type IN OUT NOCOPY VARCHAR2
359 ,x_event_class_name IN OUT NOCOPY VARCHAR2
360 ,x_event_type_name IN OUT NOCOPY VARCHAR2
361 ,x_locking_status_flag IN OUT NOCOPY VARCHAR2)
362 RETURN BOOLEAN
363 IS
364
365 l_return BOOLEAN := TRUE;
366 l_exist VARCHAR2(1);
367
368 l_application_name varchar2(240) := null;
369 l_product_rule_name varchar2(80) := null;
370 l_product_rule_type varchar2(80) := null;
371 l_event_class_name varchar2(80) := null;
372 l_event_type_name varchar2(80) := null;
373 l_locking_status_flag varchar2(1) := null;
374
375 -- Retrive any event class/type assignment of an AAD that is either
376 -- being locked or validating
377 CURSOR c_locked_aads IS
378 SELECT xpa.entity_code, xpa.event_class_code, xpa.event_type_code,
379 xpa.product_rule_type_code, xpa.product_rule_code,
380 xpa.amb_context_code, xpa.locking_status_flag
381 FROM xla_prod_acct_headers xpa
382 WHERE xpa.application_id = p_application_id
383 AND xpa.event_class_code = p_event_class_code
384 AND (xpa.validation_status_code NOT IN ('E', 'Y', 'N') OR
385 xpa.locking_status_flag = 'Y');
386
387 l_locked_aad c_locked_aads%rowtype;
388
389 BEGIN
390
391 xla_utility_pkg.trace('> xla_event_classes_pkg.uncompile_definitions' , 10);
392
393 xla_utility_pkg.trace('application_id = '||p_application_id , 20);
394 xla_utility_pkg.trace('event_class_code = '||p_event_class_code , 20);
395
396 OPEN c_locked_aads;
397 FETCH c_locked_aads INTO l_locked_aad;
398 IF (c_locked_aads%FOUND) THEN
399
400 xla_validations_pkg.get_product_rule_info
401 (p_application_id => p_application_id
402 ,p_amb_context_code => l_locked_aad.amb_context_code
403 ,p_product_rule_type_code => l_locked_aad.product_rule_type_code
404 ,p_product_rule_code => l_locked_aad.product_rule_code
405 ,p_application_name => l_application_name
406 ,p_product_rule_name => l_product_rule_name
407 ,p_product_rule_type => l_product_rule_type);
408
409 xla_validations_pkg.get_event_class_info
410 (p_application_id => p_application_id
411 ,p_entity_code => l_locked_aad.entity_code
412 ,p_event_class_code => l_locked_aad.event_class_code
413 ,p_event_class_name => l_event_class_name);
414
415 xla_validations_pkg.get_event_type_info
416 (p_application_id => p_application_id
417 ,p_entity_code => l_locked_aad.entity_code
418 ,p_event_class_code => l_locked_aad.event_class_code
419 ,p_event_type_code => l_locked_aad.event_type_code
420 ,p_event_type_name => l_event_type_name);
421
422 l_locking_status_flag := l_locked_aad.locking_status_flag;
423
424 l_return := FALSE;
425 ELSE
426
427 UPDATE xla_line_definitions_b xld
428 SET validation_status_code = 'N'
429 WHERE xld.application_id = p_application_id
430 AND xld.event_class_code = p_event_class_code
431 AND xld.validation_status_code <> 'N';
432
433 UPDATE xla_prod_acct_headers xpa
434 SET validation_status_code = 'N'
435 WHERE xpa.application_id = p_application_id
436 AND xpa.event_class_code = p_event_class_code
437 AND xpa.validation_status_code <> 'N';
438
439 UPDATE xla_product_rules_b xpr
440 SET compile_status_code = 'N'
441 WHERE xpr.application_id = p_application_id
442 AND xpr.compile_status_code <> 'N'
443 AND (xpr.amb_context_code
444 ,xpr.product_rule_type_code
445 ,xpr.product_rule_code) IN
446 (SELECT xpa.amb_context_code
447 ,xpa.product_rule_type_code
448 ,xpa.product_rule_code
449 FROM xla_prod_acct_headers xpa
450 WHERE xpa.application_id = p_application_id
451 AND xpa.event_class_code = p_event_class_code);
452
453 l_return := TRUE;
454 END IF;
455 CLOSE c_locked_aads;
456
457 x_product_rule_name := l_product_rule_name;
458 x_product_rule_type := l_product_rule_type;
459 x_event_class_name := l_event_class_name;
460 x_event_type_name := l_event_type_name;
461 x_locking_status_flag := l_locking_status_flag;
462
463 xla_utility_pkg.trace('< xla_event_classes_pkg.uncompile_definitions' , 10);
464
465 return l_return;
466
467 EXCEPTION
468 WHEN xla_exceptions_pkg.application_exception THEN
469 IF c_locked_aads%ISOPEN THEN
470 CLOSE c_locked_aads;
471 END IF;
472
473 RAISE;
474 WHEN OTHERS THEN
475 IF c_locked_aads%ISOPEN THEN
476 CLOSE c_locked_aads;
477 END IF;
478
479 xla_exceptions_pkg.raise_message
480 (p_location => 'xla_event_classes_pkg.uncompile_definitions');
481
482 END uncompile_definitions;
483
484 /*======================================================================+
485 | |
486 | Public Function |
487 | |
488 | event_class_is_locked |
489 | |
490 | Returns true if the line type is used by a frozen line definition |
491 | |
492 +======================================================================*/
493
494 FUNCTION event_class_is_locked
495 (p_application_id IN NUMBER
496 ,p_event_class_code IN VARCHAR2)
497 RETURN BOOLEAN
498 IS
499
500 l_return BOOLEAN;
501 l_exist VARCHAR2(1);
502
503 CURSOR c_frozen_assignment_exist
504 IS
505 SELECT 'x'
506 FROM xla_prod_acct_headers s
507 WHERE application_id = p_application_id
508 AND event_class_code = p_event_class_code
509 AND locking_status_flag = 'Y';
510 BEGIN
511
512 xla_utility_pkg.trace('> xla_event_classes_pkg.event_class_is_locked' , 10);
513
514 xla_utility_pkg.trace('application_id = '||p_application_id , 20);
515 xla_utility_pkg.trace('event_class_code = '||p_event_class_code , 20);
516
517 OPEN c_frozen_assignment_exist;
518 FETCH c_frozen_assignment_exist
519 INTO l_exist;
520 IF c_frozen_assignment_exist%found then
521 l_return := TRUE;
522 ELSE
523 l_return := FALSE;
524 END IF;
525 CLOSE c_frozen_assignment_exist;
526
527 xla_utility_pkg.trace('< xla_event_classes_pkg.event_class_is_locked' , 10);
528
529 return l_return;
530
531 EXCEPTION
532 WHEN xla_exceptions_pkg.application_exception THEN
533 IF c_frozen_assignment_exist%ISOPEN THEN
534 CLOSE c_frozen_assignment_exist;
535 END IF;
536
537 RAISE;
538 WHEN OTHERS THEN
539 IF c_frozen_assignment_exist%ISOPEN THEN
540 CLOSE c_frozen_assignment_exist;
541 END IF;
542
543 xla_exceptions_pkg.raise_message
544 (p_location => 'xla_event_classes_pkg.event_class_is_locked');
545
546 END event_class_is_locked;
547
548
549 END xla_event_classes_pkg;