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